工作项

本页定义 WorkItem 运行时行为的当前契约:生命周期、焦点、就绪状态、规划、 阻塞和完成语义。

Last verified: 2026-05-26 against src/types.rs WorkItemRecord, WorkItemState, WorkItemPlanStatus, WorkItemReadiness, WorkItemSchedulingState, and the tool implementations in src/tool/tools/{create,update,pick,list,get,complete}_work_item.rs and src/tool/tools/wait_for.rs.

源 RFC

核心模型

工作项是 Agent 拥有的持久目标记录,跟踪以下内容:

字段用途
objective简短的人类可读目标(必填)
stateOpen、遗留的 Completing 或 Completed
plan_statusdraft、ready 或 needs_input
plan_artifactagent home 中持久 plan.md 工件的路径
todo_list进度清单快照
blocked_by供展示的人类可读等待/阻塞描述
recheck_at阻塞项重新评估的遗留回退截止时间
recheck_consumed_at标记当前 recheck 提醒已投递
result_brief_id已完成工作项报告的规范结果 BriefRecord id
result_summary遗留的完成摘要回退;新的完成提升不应把重复的报告文本写到这里

Rust 枚举 WorkItemPlanStatus 使用 PascalCase 变体(Draft、Ready、 NeedsInput),但所有工具输入/输出都使用 snake_case(draft、ready、 needs_input)。

生命周期状态

                    CreateWorkItem
                          │
                          ▼
                    ┌──────────┐
                    │   Open   │
                    └────┬─────┘
                         │
            ┌────────────┼────────────┐
            ▼            ▼            ▼
       plan_status    plan_status   plan_status
        = Draft       = Ready       = NeedsInput
            │            │               │
            └────────────┼───────────────┘
                         │
                    CompleteWorkItem
                         │
                         ▼
                    ┌───────────┐
                    │ Completed │
                    └───────────┘

关键契约:

就绪状态与调度

工作项就绪状态由 state、plan_status、blocked_by、活跃等待状态以及 延续挂起状态派生:

WorkItemSchedulingState条件
Runnableopen,计划不是 NeedsInput,无阻塞项,无活跃等待
YieldedToWorkItem延续挂起:该工作项被暂停,让位给另一个工作项
WaitingOperator活跃的操作者等待,或无阻塞项、无等待时 plan_status=NeedsInput
WaitingTask活跃等待任务结果
WaitingExternal活跃等待外部事件
WaitingTimer活跃等待定时器
WaitingSystem活跃等待系统 tick
Blocked设置了 blocked_by,且没有活跃等待
Completingstate=Completing
Completedstate=Completed

WorkItemReadiness 是调度器和用户展示使用的简化视图:

WorkItemReadiness映射来源
RunnableWorkItemSchedulingState::Runnable
YieldedWorkItemSchedulingState::YieldedToWorkItem
WaitingForOperatorWorkItemSchedulingState::WaitingOperator
BlockedWaitingTask、WaitingExternal、WaitingTimer、WaitingSystem、Blocked
CompletingWorkItemSchedulingState::Completing
CompletedWorkItemSchedulingState::Completed

关键契约:

焦点与当前工作

一个 Agent 最多有一个当前工作项(current_work_item_id)。当前工作项是 当前轮次的焦点:

工具接口

工具用途
CreateWorkItem创建一个新的 open 工作项,可带计划种子和 todo_list
UpdateWorkItem修改 objective、plan_status、todo_list
PickWorkItem把当前焦点设为已有的 open 工作项;可选清除已解决的阻塞项
GetWorkItem读取单个工作项,带计划预览
ListWorkItems按过滤器查询:all、open、completing、completed、current、queued、yielded、blocked、waiting_for_operator、runnable
CompleteWorkItem按 ID 完成一个自己拥有的目标;同轮次的 assistant 文本会被提升为其完成报告
WaitFor给当前工作项附加任务、外部、操作者、定时器或系统等待并让出

关键契约:

计划工件

每个工作项有一个可选的 plan_artifact,指向 Agent home 目录中的 plan.md 文件(work-items/<id>/plan.md)。计划工件:

已知缺口