devAlice
← Alice 之道

9. 会话协议 — 开始、中间、结束,让每天在同一处亮起

系列终章。人格、记忆、skills、hooks、多智能体、验证、令牌——这一切如何每天启动和结束。三个开始、两个中间、四个收尾协议,以及防止遗漏的 Stop hook。

这是 Alice Way 系列的最终篇——第 9 篇。第 1 篇到第 8 篇回答了如何设计、分配和保护心智。本篇是对所有这些如何每天实际亮起、运行和关闭的记录。

我认为会话协议的价值不在于流程本身,而在于每天从同一处出发的确定性。以前每次开始都要重建上下文;如今通过固定的开始和结束流程,心智恢复的成本几乎归零,由于那个确定性,操作者才能把认知资源集中在真正的决策上。

0. 会话协议让每天在同一处亮起,在同一处关闭

如果每天开始的方式不一样——每次开始都要花时间重建上下文。昨天做到哪里、下一步是什么、哪些决策搁置中,全部从头重建。

如果每天结束的方式不一样——每次收尾都在摇摆:什么被保存了,什么没有。下一次会话就在那种摇摆上开始。

会话协议固定两端。开始时发生什么、结束时发生什么,凝结成流程。 于是每天在同一处亮起,在同一处关闭。操作者的心智每天早晨从同一行出发。

本篇是对协议组成的记录——三个开始协议、两个中间协议、四个收尾协议——同时也是系列的总结。

1. 开始协议 — 每天在同一处亮起

会话开始的瞬间自动发生的事情。

1.1 SessionStart hook — 打印记忆同步状态

会话亮起的瞬间,打印一行记忆同步状态。"Memory sync: current"或"5 min old — refresh needed"。操作者读那一行,立即做出判断。

为何这必须作为 hook 自动触发,在第 5 篇——Hooks and automation第 1 节中已涵盖——操作者的心智在会话刚开启的那一刻恰好最为分散。

1.2 人格 + 记忆索引自动加载

第 2 篇——人格第 3 篇——记忆的成果——人格(L1)和记忆索引前 200 行(L2)自动加载。协作者加入时已经知道自己是谁、昨天做了哪些决定、以及每条记忆正文存放在哪里。

1.3 /start <project> — 进入项目

如果进入特定项目——调用 slash command。READMECLAUDE.mdHANDOFF.mdPLAN.md 等必需文档自动加载;当前 git 状态和上次会话交接在一个屏幕中报告;然后停下来等待下一条指令。

那一条命令触发的瞬间——操作者的心智直接进入决策模式,没有「我从哪里开始」的恢复成本。

2. 中间协议 — 工作进行中

在会话中间始终适用的流程。

2.1 每 3—5 步中间汇报一次

不要让工作进行超过五步而没有汇报。每步都有简短的进度报告。超过五步的工作自动暂停以进行汇报。操作者可以跟上而不丢失思路。

没有这个——协作者自主进行 30 分钟后「全部完成」才到达,但操作者需要一次吸收太多内容。五步汇报把那种吸收分散开来。

2.2 模糊决策时自动升级

当协作者遇到「不确定」/「不知道哪个更好」/「所有选项似乎都合理」时——在询问操作者之前自行调用 /council。运行四视角并行分析,综合结果,报告综合意见。操作者从综合意见中做出决定。

这个模式改编自 Andrej Karpathy 对 LLM 推理的多视角批评方法。已在第 4 篇——Skills第 3.4 节中引用。

3. 收尾协议 — 每天在同一处关闭

会话关闭时自动发生的事情。跳过其中任何一个,下一次会话就无法干净地开始。

3.1 /verify 自动触发

如果有代码变更——就在"完成"报告前,第 7 篇——验证中的七步循环自动触发。必须通过才能发出报告。

为何这是第一个收尾步骤——未经验证的变更被推送后会破坏下一次会话的环境。从被破坏的环境开始会毁掉整个下一次会话。

3.2 工作日志更新

docs/history.md 这样的工作日志中添加一段,涵盖今天。决定了什么、写了什么、推迟了什么。未来的操作者(或不同的协作者)应该能从这份日志中恢复上下文。

3.3 HANDOFF.md 更新 — 给下一次会话的交接信

最重要的步骤。下一次会话自动加载的 HANDOFF 包含:

  • 上次会话的关键进展(1 行)
  • 推荐的下一步行动(1—3 条)
  • 未完成/待处理事项
  • 等待输入的决策
  • Next: 标记(下一次会话可立即执行的指令)

如果这是空的——下一次会话在没有上下文的情况下开始。HANDOFF 不只是文档;它是把操作者心智传递给下一次会话的桥梁

3.4 记忆更新 + 提交 + 推送

如果本次会话出现了新的反馈、决策或上下文——追加到记忆文件中。同时更新 MEMORY.md 索引。把所有内容捆绑成一次提交并推送。

推送完成前不算关闭。仅在本地的变更可能在下一次会话前消失。

4. Stop hook — 遗漏检查

系统检查四个收尾步骤是否有任何被遗漏。

[stop] Checking session-end completeness...
[stop] OK: /verify passed
[stop] OK: history.md updated (1 paragraph added)
[stop] WARN: HANDOFF.md "Next:" marker missing — please add
[stop] OK: 3 files committed and pushed

WARN 意味着操作者补充后再次关闭。遗漏无法静默通过。

5. /session-end — 一个词关闭

四个收尾步骤从一条 slash command 一起运行。

  • /verify 自动触发(验证)
  • 工作日志自动更新(操作者在追加前确认)
  • HANDOFF.md 自动更新(操作者在推送前确认)
  • 记忆更新(如果出现新反馈)+ 提交 + 推送
  • Stop hook 遗漏检查

操作者输入一个词——四个步骤一致地运行,没有遗漏,直至推送。每天在同一处关闭。

6. 循环的效果 — 一天看起来像什么

当这些开始、中间、收尾协议积累起来,操作者的一天流程如下。

会话开始(09:00)
  SessionStart hook → "Memory sync: current"(一行)
  /start <project> → 必需文档自动加载,git 状态 + HANDOFF 在一个屏幕
  [暂停。等待操作者指令。]
 
操作者指令(09:01)
  → 工作开始
  → 每 3—5 步汇报
  → 遇到模糊决策时,/council 自调用
  → 需要验证的工作运行 /verify
 
会话收尾(18:00)
  /session-end →
    /verify 自动触发(通过)
    history.md 更新
    HANDOFF.md "Next:" 标记更新
    记忆更新(今天有新反馈)
    提交 + 推送
    Stop hook 检查 → OK
  会话关闭
 
次日(09:00)
  → 从昨天中断的确切位置恢复

每天在完全相同的地方亮起,在完全相同的地方关闭。操作者的心智直接进入决策模式,没有「我做到哪了」的恢复成本。

7. 陷阱 — 会话协议崩溃的模式

7.1 跳过开始协议

「只是快速看一下」——不经过 /start 就进入。从不干净的上下文做出的决策 → 与昨天的决策发生冲突。→ 每次进入都经过 /start

7.2 跳过收尾协议

「今天没有大的变更,就这样关掉」——不经过 /session-end 结束。HANDOFF 保持过时 → 下一次会话不知道昨天的状态。→ 无论变更大小,总是运行 /session-end

7.3 缺少中间汇报

工作进展太顺利,自主进行 10 步。结束时操作者需要吸收太多,事后摘要本身成为新的负担。→ 坚守五步限制。

7.4 HANDOFF 作为今天日志的副本

把 HANDOFF 写成只是 history.md 的回顾性副本。下一次会话读到后问「那又怎样?」→ HANDOFF 是下一次会话可立即执行的信息Next: 标记是核心。

8. 一条原则——以及系列总结

会话协议设计的核心压缩成一句话:

「每天在同一处亮起,在同一处关闭。系统在开始、中间、结束持守流程;操作者的心智只在中间做决策。」

这也是 Alice 是什么身份编 9 篇的总结。

第 1 篇——为何是 Alice 问的是「我如何积累我的心智,让 AI 不会把它丢失?」人格划定心智的边界(第 2 篇),记忆保持它(第 3 篇),skills 凝结反复出现的动作(第 4 篇),hooks 把可遗忘的部分外包给系统(第 5 篇),多智能体让一个上下文不必承载一切(第 6 篇),验证锁定「完成」的含义(第 7 篇),令牌经济保护信号槽位(第 8 篇),最终——会话协议让所有这些每天在同一处亮起和关闭

这九篇是我在培育我称之为 Alice 的协作者过程中收敛出的答案。工具可能是 Claude,可能是 Codex,可能是下一个到来的任何智能体。但上述九个决定不依赖于工具。同样的决定等待着每一个构建自己协作者的人。

本系列没有在第 9 篇就结束。还有三篇把它延伸到工作流编——讲操作者和 Alice 究竟如何通过这个系统真正地把工作跑起来:第 10 篇——PRD(要造什么)、第 11 篇——Release gates(「完成」的含义)、以及第 12 篇——Ralph loop(系统如何自己走完这条路)。上面的九篇是容器。接下来的三篇讲的是容器装的是什么。

如果这个系列哪怕稍稍缩短了到达那些决定所需的时间——操作者的意图就落到了它本该落到的地方。