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 跑偏时怎么处理¶
不要继续追加解释。按顺序做:
- 停止 Agent。
- 看
git diff --stat。 - 找到无关改动。
- 让 Agent 解释每个改动和任务目标的关系。
- 决定保留、局部回退、重新实现。
- 更新任务边界。
可用 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。
- [ ] 有停止条件。
- [ ] 有人工最终合并点。