Skip to content

Latest commit

 

History

History
65 lines (46 loc) · 5.93 KB

task-workflow.md

File metadata and controls

65 lines (46 loc) · 5.93 KB

任务流程

完整流程

  1. 用户从网页或飞书选择已登记仓库,填写目标、限制、工作子目录和并发数。
  2. 当前 Planner 只读检查仓库,根据固定的 orchestration Skill 输出任务摘要、子任务依赖、执行器和验收标准。
  3. 用户检查计划,可以直接修改每个子任务的简介、具体要求、Codex/Claude 执行器和模型,并选择最终验收执行器、模型。依赖关系、权重和整体验收标准仍通过“调整计划”让 Planner 重新生成。
  4. 用户确认后,FastLab 才创建任务集成 Worktree 和每个子任务的独立 Worktree。
  5. 无依赖子任务并行运行;有依赖的子任务等待前置任务成功合并。
  6. 每个子任务完成后提交到自己的分支,再顺序合入任务集成分支。
  7. 全部子任务成功后,最终验收 Agent 在临时、可丢弃的验证 Worktree 中检查集成结果并记录证据;Codex 验收只允许访问 localhost,不开放公网。
  8. 验收通过后,FastLab 安全快进目标目录的原始分支;若目标分支期间有新提交,则先在集成 Worktree 同步并重新验收。交付成功后再清理临时 Worktree 和任务分支。

Planner 只负责生成计划。依赖检查、并发、进程、取消、Git、合并和验收都由 FastLab 调度器负责。

并发规则

  • 创建任务时可以设置该任务的并发上限。
  • 所有任务还共享一个全局 Agent 上限,默认是 4,可在网页“设置”修改,范围是 1–32。
  • 规划、执行、追加说明、重试和验收都占用同一个全局运行名额。
  • 依赖未完成时,即使还有空闲并发名额,也不会提前启动下游子任务。

常用操作

  • 调整计划:仅在执行前重新拆分任务。
  • 确认并执行:创建 Worktree 并启动调度。
  • 停止任务:停止正在规划、执行或验收的 Agent。
  • 重试:为失败、阻塞或取消的子任务填写可选的本轮新增要求,同时选择执行器和模型,再点击“确认并重试”;这是新会话,不复用旧 session_id。
  • 继续原会话:在对应子任务卡片内填写追加说明,界面明确显示发送目标;执行器、模型、推理等级和 Worktree 不变,只有点击“发送并继续”后才运行。
  • 修改并重跑:任务已经暂停、子任务已经成功且 Worktree 仍保留时,填写新增要求并选择执行器、模型。系统保留已有实现和 Worktree,但启动全新 Agent 会话,生成新 Dispatch,重新合并并验收。
  • 继续修改:从已成功交付的目标分支当前 HEAD 创建新任务,保留仓库、工作目录、限制和并发设置,并重新规划。
  • 重新验收:全部子任务成功后再次运行验收 Agent。
  • 人工确认并应用:自动验收没有明确失败、但真实浏览器等运行时检查为 unclear 时,用户在目标目录完成检查并填写实际证据。明确的 failed 不能人工覆盖。
  • 应用结果:验收已经通过但自动交付失败时,再次尝试安全交付。目标分支有新提交时会先隔离同步并自动重新验收。
  • 重新运行:复制原目标创建全新任务,不携带追加要求;飞书来源和通知关系会保留。
  • 清理临时数据:主动删除已停止或失败任务的 Worktree 和任务分支;清理后不能恢复原 Agent 会话。
  • 删除任务:永久删除任务记录、日志、文档、临时 Worktree 和任务分支。

继续修改的边界

“追加说明”和“继续修改”不是同一件事:

  • Worktree 和 session_id 都还存在时,可以对单个子任务使用“追加说明”。系统生成新的 Dispatch,续跑原会话,随后重新合并并验收。
  • 已完成子任务的 Worktree 还存在、但希望更换模型时,使用“修改并重跑”。它不会恢复旧 CLI 会话,也不会重新执行其他已经成功的子任务;如果与后来合入的改动冲突,仍按普通合并冲突处理。
  • 任务已成功交付时,可以使用“继续修改”。系统记录父任务,从目标分支当前 HEAD 建立全新的计划、分支、Worktree 和 Agent 运行,不承诺恢复旧 CLI 会话。
  • “重新运行”始终重新执行原始目标,不接收新的追加要求。

任务成功交付后通常会自动清理临时现场,此时“追加说明”不可用,应使用“继续修改”。原任务保持只读,新任务通过 parent_task_id 记录来源。

“修改并重跑”同样依赖尚未清理的 Worktree。已经交付并清理的历史任务不能原地修改,也不能通过选择模型恢复旧现场,应使用任务级“继续修改”。

Dispatch 与超时

每次子任务启动、重试或续跑都会生成唯一 dispatch_id。晚到的旧进程结果不能覆盖当前 Dispatch。Planner、Worker 和 Verifier 默认最多运行 3600 秒;在 .fastlab/fastlab.env 中设置 FASTLAB_AGENT_TIMEOUT=0 可取消总超时。

状态与恢复

任务主要状态包括 planning、awaiting_approval、running、verifying、completed、needs_attention、failed 和 cancelled。

SQLite 保存任务、子任务、事件和 CLI 会话 ID。FastLab 同步维护 task.md、progress.md 和 acceptance.md;服务重启时会重建文档,并把遗留的运行中状态标记为需要处理,不会自动重复执行 Agent。

网页轮询只更新状态;编辑中的表单、展开面板、页面位置及日志和文档的内部滚动位置会保留。日志可以单独清空。

子任务默认折叠,只显示短标题和状态;展开后才显示详细要求、依赖、执行器、模型和操作。 规划等待确认时,展开子任务会显示“执行前编辑”,保存内容和运行设置不会启动任务。失败重试或成功子任务修改时,新增要求、执行器和模型位于同一个操作区,只有点击明确的确认按钮才会创建 Dispatch。