夜雨聆风学习资料网

ARTICLE · 1058601

两个 AI 搭档,一句话就能交接

两个 AI 搭档,一句话就能交接

不靠聊天,不靠传话,状态活在文件里,不活在对话里。

—— 李林

一个干活的,一个查错的,中间只靠一本共享笔记。新会话开起来,说一声“去执行”,它就知道该干什么。不靠聊天,不靠传话。

你有没有遇到过这种情况:跟一个 AI 聊了两小时,把需求、踩的坑、做到哪一步全交代清楚了。然后换了一个新会话,它又从头问你一遍。你气得想摔键盘。

问题不是 AI 笨,是状态活在对话里。对话一断,什么都没了。

我跑了 41 张任务卡、56 份裁决,两个 AI 角色换了 3 次模型和供应商,全程零重复交代。核心就一句话:

状态活在文件里,不活在对话里。

状态写在笔记本里,不写在聊天里——换人、换班,翻开这一页就能接着干。

本文看点

球权只有一个变量、两个值:谁拿到棒谁干,没拿到的等

四层读取预算:每个会话最多读几 KB,省 token 全看这一节

骨架不动,新项目五步、约十分钟搬过去

01人只说三句话

两个 AI 角色一个叫“执行”,一个叫“评审”。人不用当传话筒,只说三句口令

这三句永远不变——不含卡号、不含路径、不含阶段。

去执行

去检查

只看,别发卡

“去执行”(对干活的 AI):翻开共享笔记里写着的那一步,照做就行,不用从头讲背景。

“去检查”(对查错的 AI):把上轮交回来的东西重新核一遍,签字,把棒交回去。

“只看,别发卡”(对查错的 AI):就回一段话告诉我现状,别写文档、别做交接动作。这里的“卡”就是任务卡——发卡,是写一张新任务卡把活交出去,看一眼用不着这个动作。

口令一旦需要改,说明方案出了问题。三句永远不变,这是铁律。

顺带说清标题里那个“一句话”:每一次交球,人说的其实只是这三句里的一句。

02球权:谁拿到棒谁才干

两个 AI 之间只有一个状态变量叫 turn,只有两个值:执行方 / 评审方。

规则极其简单:不是自己的球就停,不做任何事,也不问用户。

拿到棒才干,没拿到就等——不打架,不抢活。

评审方 ──签裁决、发卡、turn=执行方──▶ 执行方

执行方 ──交汇报、turn=评审方────────▶ 评审方

三种异常情况,一律停下报对面,不许自行推断:卡文件不存在 / 汇报已交但 turn 没翻 / 状态与现实矛盾。

03读取预算:省 token 全看这一节

把所有内容分成四层,每层定一个“最多读多少”的限额,超了就该拆,别硬塞:

第一层(L0,开机自动塞的):客户端一开就自动加载的那几条铁律,每个会话只加载一次,控制在 2KB 以内。正文都挪到别的层,这里只留指针和最要紧的规矩。

第二层(L1,开工必读):现在轮到谁、干哪张卡、这轮要做什么,每个会话读一次,控制在 1KB 以内——读这一段就该知道“这轮干什么”。

第三层(L2,用到才读):当前这张任务卡、上一轮的汇报、最近一份裁决,用到哪份才读哪份,只读当前那一份,单份控制在 10KB 以内。太长的卡就该拆,别写巨卡。

第四层(L3,平时别碰):历史归档、需求设计文档、旧汇报,只在你要追溯“当初为什么这么定”时按编号去查,没有上限,但绝不在开工时默认读。

一条纪律:不许 cat 状态文件。用一行命令只打出需要的字段。一个会话只读一次,不重读。比如这样一行:

一行命令

jq -r '.turn, .awaiting' STATE.json

04活文件 vs 归档:笔记本不会长胖的唯一办法

任何随时间单调增长的字段,都不许留在“开工必读”的文件里。

典型的增长型字段:history(每轮追加)、logchangelog、已完成清单。它们不删——只是搬到归档文件,状态文件里只留最近 2~3 条 + 一个指针。

警戒线:状态文件 > 8KB 就该拆。拆之前先量一下各字段占比,占比最大的那个基本就是该搬走的那个

05换会话检查单

交球前(离场方,5 条)

1 状态文件与磁盘现实一致(卡在、汇报在、turn 翻了)

2 该提交的都提交了,工作树干净

3 本轮结论写进 history(append 到归档,状态文件只留最近 3 条)

4 若这轮有“下一任接不住就会出事”的东西,单独写一份交接手册,在 awaiting 第一句点名它

5 手册里每条复核命令自己真跑过,文中数字与产物里的数字相等

接手后(进场方,3 条)

1 先读 L0,再用一行命令读 L1(不许 cat)

2 turn 不是自己 → 停,回一句“球不在我这儿”

3 背景只读两份:自己那份入口须知 + 最近一份裁决。不要通读全仓

06已知失效模式与兜底

这套方案也会坏,但坏的方式是固定的,所以每种都有兜底

1 开机注入没被加载(工作目录不对、客户端不支持)——新会话不知道该读什么。兜底:准备一句固定开场白“读入口文件,然后去执行”,不含任务号,永远不用改。

2 读了却不照做(小模型更容易跳过读状态直接动手)。兜底:对面每轮独立复核,所有改动都在 git 里,出了问题能回滚。

3 状态文件长胖(每轮读它比读代码还贵)。兜底:用第四节说的警戒线,超过就拆,把增长型字段搬进归档。

4 两边对“事实”说法不一(各说各的)。兜底:判断“在不在库”只认 git 命令的结果;判断“在不在盘上”必须写清楚哪台机器哪个目录、贴上绝对路径。

5 标签和现实对不上(写着已完成,其实没做)。兜底:按实际产物核对,不按标签信;关掉一项就同步改状态。

07搬到新项目:五步,约十分钟

1 建目录骨架(STATE.json + 指令/ + 汇报/ + 裁决链)

2 建状态文件,turn 先给评审方

3 两端 L0:执行侧写 AGENTS.md,评审侧填进客户端自定义指令(记得写绝对路径)

4 各写一份入口须知:规矩、红线、踩过的坑

5 空会话验一次:只说口令,看它第一个动作是不是去读状态文件

不要改的是骨架:三句口令、四层读取预算、球权二态机、活文件/归档分离。要改的只有:角色叫法、目录名、红线清单、绝对路径。

相关学习资料