你只做三件事。其余它来。
凡不是"带证据的决定"的步骤都被委托出去。阻塞会到你面前,噪音不会。
- 你说一句话
- 它读代码、拆片、出方案
- 你批——不对就打回,它重出一版
- 它开一个组:写码、自查、跑你的测试、交给 QA 复核
- 组外的 Auditor 读完整个分支,然后开 PR
- 你合并
你 · 1 句话: 做一个计费页:Stripe 结账、 发票、用量图表。沿用现有设计系统。 → PR #128 · 你合并: 计费页:结账、发票、用量 (3 片 · 3/3 闸门 · 组外审计)
十个角色,边界真实。
只有一个写代码。两个审,都不是作者。加一个角色是写一个 YAML,不是改代码。
- Chief of Staff — 为你工作 · 在所有项目之上
- 给你干活,不给项目干活。所有悬着的问题攒成一条消息,blocker 直接放行。 对话对象: 你 · PM. 可以: 打断你. 不可以: 碰代码.
- Dispatcher — 常驻 · 在所有组之上
- 一句话进去,方案出来。先数你到底提了几件事,再拆成一片一片能单独验收的小改动。 对话对象: 你 · Architect. 可以: 出方案. 不可以: 批方案.
- Architect — 常驻 · 在所有组之上
- 常驻,在所有组之上。给每个组分定路径,两个组撞不上;再用两行写清方案哪里不对,你批之前就看到。 对话对象: Dispatcher · PM. 可以: 分配文件路径. 不可以: 写代码.
- PM — 组内 · 一个容器
- 一个组唯一的对话入口。你说一句,一个 agent 回你。 对话对象: 你 · Engineer · QA · Chief of Staff. 可以: 和你对话. 不可以: 改文件.
- Engineer — 组内 · 一个容器
- 组里唯一写代码的。被串行化,写冲突不存在。 对话对象: PM · QA. 可以: 改分配到的路径. 不可以: 推送 · 看到真 token.
- QA — 组内 · 一个容器
- 拿 diff 和测试结果,对着验收标准验其中一片——刻意读不到整个仓库。 对话对象: Engineer · PM. 可以: 打回一片. 不可以: 读整个仓库.
- Auditor — 组外
- 从组外审完成的分支,换一个模型。卡上承诺的做没做?有没有另起炉灶造仓库里已有的东西? 对话对象: Scribe. 可以: 拦下 PR. 不可以: 共享组内上下文.
- Scribe — 组外
- 照着做完的 diff 写 commit 和 PR——写真的改了什么,不是当初打算改什么。 对话对象: Auditor. 可以: 开 PR. 不可以: 改 diff.
- Librarian — 组内 · 一个容器
- 维护一份项目入门说明和一份有上限的经验清单,新 agent 一上来就懂这个项目。 对话对象: PM · Engineer. 可以: 写笔记. 不可以: 改代码.
- Bootstrap — 组内 · 一个容器
- 把干净检出弄到能构建,从 lockfile 和 CI 配置里推出安装步骤。 对话对象: Engineer. 可以: 装依赖. 不可以: 改源码.
怎么知道它没在糊弄你。
用过 AI 写代码的都遇过这五件事——以及哪些由代码而非提示词强制执行。
- 01
「做完了!」——其实没有。
每一片必须先跑通你项目自己的命令(测试、typecheck、lint)才算数。看退出码,不看它怎么说。不给百分比,只显示哪几项过了。
- 02
它自己审自己的活。
审两遍,审的都不是写的那个:QA 只看这一片的 diff,Auditor 在组外、换一个模型、读整个分支。
- 03
它说改了 A,其实动了 B。
每片结束时,把「它声称改了什么」与 git 里真实的 diff 对一遍。对不上当场暴露,不用等你读 PR。
- 04
第 1 轮记得规矩,第 20 轮就忘了。
凡是能用代码卡住的都不写进提示词:哪个组能碰哪些文件、笔记多长、谁去推卡住的状态。提示词会被忘,if 不会。
- 05
它让你批的东西,长到你根本不会看。
要你点头的那张卡硬上限 12 行,超了直接退回重写。你批的是方向和验收标准,不是实现方案。
沙箱挡什么,不挡什么。
每个组在自己的容器里干活,用自己的克隆。agent 真跑了 rm -rf,炸的是一个容器。
挡住
动你的电脑。
容器里只有这个项目的一份克隆。你别的项目、家目录、工作副本,它够不到。
拿到你的真 token。
容器里放的是格式对但用不了的假值。真 token 在出网那一刻由容器外替换进去。
往你仓库里推东西。
组里的凭据只够拉代码。推是另一个没有 agent 的容器干的。
挡不住
数据出去。
网络默认放行,因为 agent 要查文档、装依赖。介意就先配好 sandbox.denyDomains。
组内角色互相隔离。
一个组共用一个容器。隔离是组与组之间的。
沙箱 · 一个容器 · 一份克隆