客座 CEO:Agent 公司之间如何不靠人肉中转就能协作

客座 CEO:Agent 公司之间如何不靠人肉中转就能协作
英文版:The Visiting CEO: How Agent Companies Cooperate Without a Human Router

这个系列前三篇,讲的都是同一家公司。怎么给它写宪法,怎么用角色给它配岗位,怎么让它开机、收工、在每次会话里学到东西而不是白跑一趟。

但到了某个节点,我手里就不止一家 Agent 公司了。是好几家。

一个内容频道。一家电子书出版社。一个小工具站。一个游戏工作室。每一个都是独立成型的“工作流公司”,各有各的宪法、各有各的红线、各有各关于“Agent 能自己拍板什么、必须带回来问我什么”的授权规矩。每一个都从自己的文档开机,跑自己的 CEO。

而一旦你手上不止一家,一个再精巧的内部组织设计也解决不了的新问题就冒出来了:几家独立的 Agent 公司,彼此之间怎么协作?

董事长沦为人肉消息总线

有那么一阵子,这个问题的答案就是我。

比方说工具站需要电子书出版社配合点什么——对齐一个数据格式、核对一条共享约定、在对面改一个小 bug。实际发生的是这样:需求先在第一个项目里冒出来,我把它翻译成一段 prompt,然后亲手搬过去——打开另一个项目的目录,在那边起一个全新的 Agent 会话,把请求贴进去,盯着它干完,再把结果搬回来。

我这几家公司之间的每一次协作,都得穿过我这个人。我是路由器,我是消息总线,我是那个在两个不能直接对话的大使馆之间拎着密封信封来回跑的外交信使。

两个项目时这么干还行,十个项目就玩不转了。董事长本人不具备可扩展性,而一个整天在自家子公司之间复制粘贴请求的董事长,根本不是在经营一个公司群——他是它们的电话总机。

我需要的是让这些公司自己协作,不用我拎着信件来回跑。

一个共享函数为什么不够

工程师的第一直觉,是干脆绕过人、把项目直接接起来。给它们一个共享库,开一个接口,让 A 项目像调用远程过程一样调用 B 项目。

纯机械的交换,这么做没问题,能用的地方我也这么用。但它悄悄漏掉了一件事:让这些项目成其为“公司”、而不只是几个装着代码的文件夹的,恰恰是那件被漏掉的事。

每个项目都是主权独立的。它有一部宪法,写明什么事它绝不做;有红线,越过就能让整个项目作废;有一份授权,把某些决定——定价、品牌、发布,任何不可逆或对外可见的动作——单独留给我一个人;还有一套家法,规定改动怎么提交、changelog 怎么写、交接文档怎么留给下一班。

一个哑接口,这些一样都不认。函数调用不会在动手前先读一遍对面项目的宪法。它不知道在这家公司你永远不许手动补输出,不知道在那家公司凭据绝不能回显,不知道某类改动永远得等老板签字。它只管执行——像一个溜进别国议会、看门没锁就开始立法的外来分子。

我真正需要的,不是两栋楼之间拉一根线。我需要的是一位大使——一个我能派进另一家公司的人:他会先读那家公司的法律,然后作为一个守法的当地人把活干了,最后回家汇报。

客座 CEO

于是我造了一个。用这个系列的话说,它叫客座 CEO

客座 CEO 是种很怪的员工:它没有自己的公司。不带宪法,没有固定项目,没有主场。它存在的唯一意义,就是被空降进别人的公司,在一趟界定清晰的差事期间,临时充当那家公司的代理 CEO。

整个设计押在一个动作上,我把它叫作空降协议。当客座 CEO 落地目标项目,它不会一上来就发表意见。它做的恰恰跟大语言模型的本能相反。在碰任何东西之前,它会:

  • 先读那个项目自己的根指令文件——认当地的法,而不是认它自己带来的任何预设;
  • 走那个项目自己的开机流程,把那家公司驻场 CEO 平常早上会加载的宪法、工作流、角色、交接文档,一份不少地加载进来;
  • 扫一眼工作区状态,看有没有“有人正在当班”的迹象,一旦看到就停手;
  • 然后,也只有在这之后,才开始干活——作为那家公司的临时公民,受那家公司的法律约束。

空降协议里有一条规矩,比其它所有加起来都重要:

当客座公司的当地规矩和访客自己的习惯冲突时,当地规矩优先。

大使和入侵者的全部区别,就在这一条上。客座 CEO 不把自己主场的那套约定带进来,不靠强加外来的品味去“改进”目标项目。它读当地宪法,然后照办——哪怕换作自己会有别的做法。主权,是默认被尊重的。

外交纪律:四条铁律

一个握有实权的大使,没有行为准则就是个危险品。外交这门手艺,大半是一张“在别人家里不许做什么”的清单。客座 CEO 随身带四条。

第一:代理 CEO 不是真 CEO。 访客把差事办了,但它不替驻场公司做战略、定价、品牌、发布这类决定。凡是当地宪法留给老板的事,访客也一律不碰——它把这个决定装进报告带回家,而不是在别人的国土上擅自拍板。看门人负责让灯亮着,看门人不负责把楼卖了。

第二:干完必须留痕。 只要访客改了东西,就得用当地公司自己的方式记下来——changelog、交接记录、commit——白纸黑字写清“一位客座 CEO 来过,做了什么,为什么”。明天开机的驻场 CEO,必须能看见有客人来过、动过哪些地方。没有痕迹的活不算干完,那是留给别人去 debug 的一桩悬案。

第三:不并发打架。 如果访客发现目标项目里明显已经有一个活跃会话在跑——工作区里塞满了别人未提交的改动,还跟自己的任务撞在一起——它立刻停手回报,绝不为了同一批文件去跟另一个 Agent 抢。两个 CEO 同时改一家公司,那不叫协作,那叫追尾。

第四:禁止套娃。 客座 CEO 不许再派下一个客座 CEO,也不许自己另起一堆子 Agent。要是这活确实需要更多人手,它在报告里说明,把决定权交回给派它来的人。无限递归的委派,正是一趟干净差事变成一片查无可查的烂摊子的原因。

这四条不是官僚主义。正是它们,让我敢放心把一个自主 Agent 放进我在意的项目、让它握有实权——因为这份权力的边界是写下来的,而且这些边界,说的都是“克制”。

三级信任

大使并非人人都揣着同一份授权。有的只派去观察,有的可以签协议。所以客座 CEO 被派出时,都带着一个明确的权限级别,派它的人一上来就说清楚。

级别 访客能做什么
A —— 只读 只诊断、只汇报。看、理解、什么都不写。
B —— 可改可提交 默认级。按当地风格改文档或代码并提交——但绝不 push,除非那个项目自己的文档明确要求。
C —— 显式授予 更大的动作,但只限派它的人逐项点名列出的那几个。没点到的,一概不算数。

这个设计偏向刻意地保守。没特别交代,访客就假定自己可以修、可以留痕,但不能发布、不能部署、不能做任何外部世界看得见的事。爆炸半径越大,授权就得越显式。一个默认自己手握大权的大使,正是无声事故的起点。

干净的 context 才是真正的战利品

客座 CEO 还有第二个、更安静的理由,说的不是权力,而是注意力。

回到人肉路由的那段日子。当我亲自在两个项目之间搬请求时,两件坏事必有其一:要么我为了把这单交换对接妥当,把两家公司的整套文档都塞进自己脑子——然后同时被两部宪法淹没;要么我让自己的主会话直接伸手去够对面项目,于是一个干净的 context 被另一家公司的整个世界污染了。

客座 CEO 让这个两难消失,因为它在自己独立的 context 里干活。它在自己私有的脑子里读完对面项目的整套资料——宪法、角色、工作流、交接——在那里把活干了,只带回一份压缩过的结论。派它出去的那个会话,压根不需要加载对面公司的任何文档。

而这份结论的形状是固定的,因为好报告不是游记:

  • 结论先行——完成、部分完成、还是被阻塞,一句话;
  • 改了什么——哪些文件、哪个 commit、痕迹留在哪;
  • 发现了什么——只写派它的人还不知道的事实和当地规矩;
  • 没做什么、为什么——留给老板的那些事,以及原因。

派它的人拿到的,不是它读过的每份文档的摘要,而是一个结果加一组指针。这正是整个系列反复回到的那条原则——传句柄,别传载荷——只不过这一次,用在了两家公司的边界上,而不是一家公司内部两个步骤之间。

什么时候该派大使

一个这么重的能力,很容易被滥用,所以它自带一份克制。

如果你只是想从另一个项目里问出一个事实——这个文件在不在、那个值是多少——别派客座 CEO。为了读一行字就启动一整套代理 CEO 协议,是外交上的杀鸡用牛刀;一次普通的只读查询更快也更省。大使是用来在别家公司守法地干活的,不是用来趴窗户往里看的。

还有,如果目标项目当下已经有一个活跃会话在跑——驻场 CEO 正握着操纵杆——你就不该往上再空降第二个。你该走寻常路,把请求交给那位驻场 CEO。往一个政府正在开会的国家里派大使,那不是外交,那是政变。客座 CEO 是给当下没人值守的公司准备的,不是用来把一个正在干活的 Agent 挤到一边去的。

知道什么时候派它,也是设计的一部分。一个尊重主权的工具,必须包含“该待在家里就待在家里”的那份谦逊。

从一家公司到一个联邦

这个系列的前三篇,讲的是怎么把一家自运转的公司建好。这一篇,讲的是你不止一次成功之后会发生什么。

因为建好一家 Agent 公司的奖赏,就是你会再建一家。然后又一家。很快你管的就不是一家公司了——你管的是它们组成的一个联邦:每一家都主权独立,各有各的法律,时不时需要彼此协作,却又不能塌回成一坨、也不能把每一次交换都塞回你自己手里。

客座 CEO 就是我给这个问题的答案。不是共享函数——那无视主权;不是人肉信使——那没法扩展;而是一个带协议的外交官:读当地的法,哪怕不认同也照办,把界定好的活干完,留下痕迹,带一份压缩报告回家——与此同时,派它出去的那家公司,永远不必去搞懂它拜访过的那家公司的内部构造。

一家能自运转的公司,是一项成就。一群能协作、而中间不必杵着一个人肉消息总线的公司,才是一个组织。


本文是 Workflow Design Bible 的延伸。这部 Bible 负责搭起一家自运转的公司;而本文讲的是当你同时经营好几家、它们又需要彼此配合时会发生什么。项目以 MIT 协议开源:github.com/preangelleo/workflow-design-bible