项目存档(Save Game)。审视→反思→调整→写交接,不只是抄状态。 适用于:工作段结束需要保存进展、compaction 即将发生、移交给其他 agent、需要设定未来检查点、或任何"下次回来时需要知道现在做到哪了"的场景。 当用户表达类似意图时触发——不限于特定措辞。常见表达举例:"存档"、"save game"、"写交接"、"记一下进度"、"今天先到这"、"我要去忙了"、"先放一放"、"把进展存下来"、"下次继续"、"记录一下当前状态"、"别忘了我们聊到哪了"。 Agent 也应在以下情况主动建议存档:上下文即将溢出、长时间项目讨论即将中断、用户明显要离开。
存档不是"把当前状态抄到文件里"——是一轮完整的 review + 调整 + 交接。
写出来的 HANDOFF.md 是给下次启动项目的 agent 看的。它读完这一个文件就能理解目标、知道进度、知道下一步。
ls memory/projects/ + memory_search 搜项目关键词memory/projects/<name>/两个禁忌:
回顾这个工作段:
找到原始计划(HANDOFF.md 的"下一步"、product-plan.md 等),逐项对比:
| 检查项 | 回答 |
|---|
| 计划完成的完成了吗? |
| 出现了计划外的工作吗? |
| 有什么计划了但没做的?为什么? |
关键问题:这些经验是否影响后续计划?
回顾产出清单,逐项判断:
为什么不当场封装:save-game 通常发生在 context 快满时,skill 设计需要讨论确认,多轮对话会让 context 爆掉。
原有计划还成立吗?
存放位置:memory/projects/<project>/HANDOFF.md
# <项目名> 交接文档
> 最后更新:YYYY-MM-DD HH:MM | v<N>
> 下次 agent 读这一个文件就够了
## 🎯 项目目标
## 📍 当前进展
## ➡️ 下一步
## 关键经验 & 铁律
## 架构
| 字段 | 为什么 |
|---|---|
| 项目目标 | 新 agent 要先理解"为什么" |
| ⚠️ 用真实名字 | HANDOFF 里用 USER.md/IDENTITY.md 的真实名字,不用通用的"用户"/"agent" |
| 当前进展 | 不查 git log 就知道做到哪了 |
| 下一步 | 不猜就知道接下来做什么 |
| 关键数字/ID | compaction 后会丢(cron ID、端口号、群 ID) |
| 铁律 | 踩过的坑不能重蹈 |
写完后检查:本次工作中新建了 skill 吗?如果与当前项目直接关联 → symlink 到项目。
当某个任务需要未来跟进时,存档后设 cron:
openclaw cron add --at "<时间>" --name "<项目>-check" \
--session isolated --wake now --no-deliver \
--message "读 memory/projects/<project>/HANDOFF.md,执行 load-game 恢复上下文,检查状态,汇报给用户。" \
--delete-after-run
project-skill-pairing(项目结构和 Tier 分级)load-game(存档的消费者)