任务

本页定义受管任务执行的当前契约:生命周期、终态重入和监督接口。

Last verified: 2026-05-25 against src/types.rs TaskRecord, TaskStatus, TaskKind, TaskHandle, TaskWaitPolicy, and the tool implementations in src/tool/tools/{exec_command,task_list,task_status, task_output,task_input,task_stop,invoke_agent}.rs.

源 RFC

任务类型

TaskKind说明
CommandTask通过 ExecCommand 执行 shell 命令
ChildAgentTask父级监督的子 Agent 任务
ActorInvocation由 InvokeAgent 创建的规范 Agent 调用任务
SleepJob内部休眠定时器(模型不可见)
SubagentTask遗留的子 Agent 类型(迁移到 ChildAgentTask)
WorktreeSubagentTask遗留的 worktree 隔离子 Agent(迁移中)

任务生命周期

              ExecCommand / InvokeAgent
                       │
                       ▼
                 ┌──────────┐
                 │  Queued  │
                 └────┬─────┘
                      │
                      ▼
                 ┌──────────┐     TaskStop
                 │ Running  │──────────────┐
                 └────┬─────┘              │
                      │                    ▼
          ┌───────────┼───────────┐  ┌────────────┐
          ▼           ▼           ▼  │ Cancelling │
    ┌──────────┐ ┌──────────┐ ┌────┴─┴─────┐      │
    │Completed │ │  Failed  │ │Interrupted│      ▼
    └──────────┘ └──────────┘ └───────────┘┌──────────┐
                                           │Cancelled │
                                           └──────────┘

终态: Completed、Failed、Cancelled、Interrupted。 非终态: Queued、Running、Cancelling。

等待策略

每个任务携带一个等待策略,用于 task-list 和 task-status 兼容:

TaskWaitPolicy行为
Background任务独立运行;任务活跃期间 Agent 可以继续轮次

当前所有任务类型都报告 Background。历史任务 detail 载荷可能仍包含 wait_policy: "blocking",但运行时会忽略该值,不用于调度阻塞决策。

关键契约:

监督工具

工具用途
ListTasks紧凑的活跃任务摘要(仅非终态任务),输出有界
TaskStatus带元数据的单任务生命周期快照
TaskOutput有界输出预览,可选 block=true
TaskInput向交互式任务发送 stdin/后续输入
TaskStop停止运行中的任务(可能经过 Cancelling)

关键契约:

与 WorkItem 和等待的区别

任务是执行句柄,不是规划对象:

任务常常服务于 WorkItem 目标(运行命令、委派给子 Agent),但任务生命周期独立于 WorkItem 生命周期。

已解决的缺口