跳转至

9.3 可恢复:长任务、跑偏和中断后的回收

可恢复系统的目标是:任务中断、上下文爆掉、Agent 跑偏、多人接手时,不需要从零解释。

为什么会失控

常见原因:

  • 任务目标只在聊天里。
  • 上下文越来越长,噪音越来越多。
  • Agent 修改范围扩大。
  • 没有阶段检查点。
  • 多 Agent 改同一批文件。
  • 测试失败后连续猜修。
  • 人类没有及时看 diff。

可恢复不是事后补救,而是从任务开始就预留回收点。

恢复点设计

flowchart LR
  A[任务开始] --> B[只读探索检查点]
  B --> C[计划确认检查点]
  C --> D[小步实现检查点]
  D --> E[验证检查点]
  E --> F[review 检查点]
  F --> G[归档检查点]

每个检查点都要能回答:

  • 当前目标是什么。
  • 已经做了什么。
  • 改了哪些文件。
  • 验证到哪里。
  • 下步是什么。
  • 有什么风险。

Git 是第一恢复机制

最低要求:

  • 任务前看 git status
  • 大改前确保工作区可解释。
  • 小步提交或至少保留清晰 diff。
  • 多 Agent 使用 branch 或 worktree 隔离。
  • 不让 Agent 执行破坏性 Git 命令,除非你明确要求。

推荐工作方式:

main workspace: 人类整合和 review。
worktree-a: Agent A 实现后端。
worktree-b: Agent B 补测试。
worktree-review: 只读 review 或实验。

任务日志是第二恢复机制

journal.md 不需要长,但要记录状态变化。

推荐格式:

## 2026-04-29 10:30

State: planning
Decision: 采用方案 B,因为不需要改公共 API。
Files likely impacted: `src/auth/*`, `tests/auth/*`
Risks: token 过期路径需要回归。
Next: 让 Agent 实现最小改动并补测试。

## 2026-04-29 11:20

State: implementation
Changed: auth middleware, session helper, auth tests.
Verification: unit tests passed; e2e not run.
Next: run build and ask reviewer to inspect redirect logic.

它的作用是让新会话可以接上,而不是写项目日记。

Handoff 是第三恢复机制

当你准备开新会话或换 Agent 时,先生成交接卡。

模板:

请基于当前任务文件和 git diff 生成 handoff:
1. 任务目标。
2. 当前完成状态。
3. 已修改文件。
4. 关键决策。
5. 已运行验证。
6. 未运行验证。
7. 剩余风险。
8. 下一步建议。
9. 不要重复做什么。

交接卡应该写入 handoff.md,不要只留在聊天里。

Agent 跑偏时怎么处理

不要继续追加解释。按顺序做:

  1. 停止 Agent。
  2. git diff --stat
  3. 找到无关改动。
  4. 让 Agent 解释每个改动和任务目标的关系。
  5. 决定保留、局部回退、重新实现。
  6. 更新任务边界。

可用 prompt:

停止继续修改。请只读分析当前 diff:
1. 哪些改动直接服务于任务目标。
2. 哪些改动是无关或过度实现。
3. 哪些改动有风险。
4. 如果要最小化回到目标,需要保留哪些文件、撤销哪些文件。
不要执行任何撤销操作,先给计划。

长任务防腐烂规则

  • 每 30-60 分钟写一次状态摘要。
  • 每完成一个子目标就运行相关检查。
  • 每次上下文变长后,把当前事实落盘。
  • 不在同一会话里混做多个目标。
  • 如果连续两轮修复失败,切换到诊断模式。
  • 如果出现需求变化,先改 PRD,再改实现。

多 Agent 恢复规则

多 Agent 必须有:

  • 唯一 owner。
  • 明确写入范围。
  • 独立 worktree 或分支。
  • 统一验收标准。
  • 合并前只读 review。
  • 冲突处理人。

禁止:

  • 多个 Agent 同时改同一核心文件。
  • 没有合并计划就并行。
  • 让 review Agent 自动修复它发现的问题。
  • 把外部系统写权限分给多个 Agent。

什么时候新开会话

建议新开:

  • 任务阶段已经切换,例如从探索到实现。
  • 上下文里出现大量无关讨论。
  • Agent 已经反复失败。
  • 需求发生重大变化。
  • 你需要一个独立 reviewer。

新开前必须有:

  • 最新 PRD 或 plan。
  • 最新 diff 状态。
  • 最新 verification。
  • handoff。

否则新会话只是重新抽卡。

可恢复系统的检查清单

  • [ ] 任务目标落盘。
  • [ ] 当前计划落盘。
  • [ ] 关键决策落盘。
  • [ ] 验证结果落盘。
  • [ ] Git 状态可解释。
  • [ ] 多 Agent 写入范围明确。
  • [ ] 有 handoff。
  • [ ] 有停止条件。
  • [ ] 有人工最终合并点。