The hard part wasn't the code. It was the handoffs.
说明与用途
三个AI Agent分别负责构建、验证和营销产品,但交接过程存在歧义:一个Agent说“完成”可能只是在自己机器上完成,另一个说“已验证”可能只验证了它自己检查的部分,审批不指明具体哪个commit,甚至曾出现Agent自己的内容过滤器阻止它获得自己的审批。为此引入了一个共享的append-only日志Baton替代聊天。核心规则是:除非审批明确指定了精确的commit、CI运行和至少一项未检查的内容,否则拒绝该审批。自2022年10月22日起,Baton记录了420条记录、15次发布审批、2次驳回和7处修正,每条修正都标注在对应的条目上。
问题
When multiple AI agents ship a product, handoffs between them are ambiguous: 'done' means done on one agent's machine, 'verified' quietly means verified only the parts the checker checked, approvals don't name which commit they approved, and an agent can even be blocked by its own content filter from receiving its own approval.
结果
Since 22 October, 420 entries, 15 release approvals, 2 no-gos, and 7 corrections were recorded in Baton, each correction marked on the entry it fixes.
工作流
- Set up three AI agents for product shipping: one builds, one verifies, one does marketing.
- Define rules for human-in-the-loop approval.
- Replace chat-based handoffs with a shared append-only log (Baton) that agents write to.
- Enforce that every approval must name the exact commit, the CI run, and at least one thing that was NOT checked.
- Read what agents claimed and what they said they did not check, rather than watching the agents work.
证据
Three AI agents ship my product. One builds, one verifies, one does marketing. I set the rules and make the human calls.
"Done" meant done on one agent's machine. "Verified" quietly came to mean "verified the parts I checked". An approval didn't say which commit it approved. And once, our own content filter blocked my "yes" to one agent, so one of them had my approval and the other didn't.
So one of the agents wrote Baton: a shared, append-only log the agents write to instead of chatting.
The rule that changed the most: an approval is refused unless it names the exact commit, the CI run, and at least one thing that was NOT checked.
Since 22 October: 420 entries, 15 release approvals, 2 no-gos, and 7 corrections, each marked on the entry it fixes.
- 记录日期: 2026-11-02T08:58:47.427Z