Skip to main content

任务生命周期与状态

文档状态
draft
文档 Owner
DOC
事实源
canonical-docs
更新
2026/10/16

一个任务同时具有来源业务状态、Symphony 编排状态和交付结果。排查时先确定自己在看哪一层,再决定下一步;不要通过修改来源状态来掩盖运行错误。

本页以官方参考实现 be10a1b79df723d6d7612b5651c8522704dafb2e 为依据,见 SPEC §7–8与 Orchestrator。目标部署的版本、有效配置和运行快照仍需另行核对。

三种状态各自回答什么​

层次例子能证明什么
来源业务状态Linear 或 Plane 原生状态、依赖、负责人来源当前记录的业务进度与准入信息;不证明 Agent 正在运行
Symphony 编排状态running、retrying、blocked、认领及会话事件该执行服务实例正在处理什么;不证明变更已合并或发布
交付结果commit、PR / MR、CI、部署回执、验收对应交付环节的事实;不能仅以评论或 Done 字样替代

同名 In Progress 在来源里是业务字段;运行列表里出现该名称,通常是服务保存的来源快照。它不是第二套业务状态机。

从候选到派发​

参考实现只把满足以下条件的任务作为派发候选:

  • 身份、标识、标题和状态完整;状态处于配置的活跃集合,且不处于终态集合。
  • 适配器给出可派发标记,并满足所有 tracker.required_labels。
  • 当前实例没有该任务的 running 或 claimed 记录;全局与相应状态的并发槽位可用。
  • 派发前按 ID 刷新的任务仍符合准入要求。

来源适配器负责其专属规则。例如该版本 Linear 适配器会考虑 assignee 路由及 Todo 任务的非终态 blocker;不能据此推导 Plane 或其他来源具有同样的准入算法。任务模型与通用路由判断见 Tracker.Issue,来源差异见任务来源。

认领与执行阶段​

编排阶段含义后续可能发生什么
未认领没有运行或已安排的重试下轮读取后按条件选入
已认领并运行当前实例已为任务启动 worker准备目录、渲染提示、启动会话、流式执行
已认领并等待重试当前没有 worker,存在延迟重试记录到期刷新任务,再派发、重排或释放
等待输入或审批该参考实现将任务留在 blocked 集合并保持认领需要处理阻塞原因,并按实际实现支持的恢复路径操作
已释放不再占有认领若来源以后重新符合条件,可能再次成为候选

blocked 是这个参考实现的运行行为,不能当作所有按 SPEC 实现的版本都具有相同界面或恢复操作。其记录只在内存中,详见失败与恢复。

认领防止的是当前调度器重复派发同一任务。不要对同一范围同时启动多个独立实例,并据此假设获得跨实例的 exactly-once 保证;原生工具写入、Git 操作与业务动作还需要各自的幂等或并发合同。

活跃、终态与停止​

运行期间会刷新来源状态:

  • 仍活跃且可路由: 更新运行快照,允许继续。
  • 进入终态: 停止对应执行并清理任务工作空间。
  • 离开活跃范围或不再可路由: 停止执行,保留工作空间。
  • 刷新失败: 本次核对不因网络错误强行停止现有 worker,之后再次核对。

任务在刷新结果中缺失时还需结合来源的权限、可见性及删除语义判断,不能把“查询不到”统一解释为“业务完成”。切换来源、项目范围或凭据前,应先确认正在运行的任务及待保留的工作成果。

什么时候可以说完成​

正常 turn 完成、worker 成功退出和任务终态是不同事件。活跃任务可能继续跑;终态可以触发目录清理,但不反向证明交付证据齐全。

首次任务应分别确认:原生任务唯一且保存成功、Symphony 确实启动过对应会话、预期修改及验证证据存在、项目要求的 review / merge / deploy / acceptance 分别满足。业务状态由授权工作流处理,不能用一个 Done 代替这些事实。

继续阅读:首次运行 · 首次任务 · 任务跟进。