Agent 通信:你需要的不是聊天软件,是工单系统

Agent 通信:你需要的不是聊天软件,是工单系统

信送到只要一秒,收信的 agent 却要几十秒才睁开眼。纠结这封信用什么协议写,毫无意义,瓶颈根本不在线上。

真正没人解决好的问题是:怎么叫醒一个不常驻的 agent。而这一层,连标准都还没有。

绕了一圈,我的判断是:agent 之间最好的通信方式,是尽量不通信。异步走工单,同步走合体,语言只留给人。

我以前以为,让两个 agent 聊起来,难的地方在协议。选 A2A 还是别的,把消息格式定好,剩下的就是工程问题了。

这周我在本机试了一下开源的 agent 协作平台(aweb),让两个 Claude 互相收发消息:一个当协调者,另一个挂在事件循环上,有消息进来就被唤醒干活。异步邮件、同步聊天,两条链路都跑通了。邮件一来一回,聊天阻塞等待,对方”已读”还会自动给你续等五分钟。功能很完备。

但是简单测试之后,我发现了几个反直觉的结论。

一、瓶颈不在协议,在唤醒。

实测消息推送不到一秒就到了。但被唤醒的那个 agent,冷启动加一个 LLM 回合,要几十秒。你想,信送到只用一秒,收信的人要花几十秒才睁开眼,那你纠结这封信到底是用 A2A 写的还是别的格式写的,有什么意义?瓶颈根本就不在线上。

真正没人解决好的问题是:怎么叫醒一个不常驻的 agent。更要命的是,这一层连标准都没有。Claude Code 和 Codex 都没暴露一个”唤醒”的接口,前者得靠实验性的插件通道往会话里硬塞消息,后者干脆被包一层进程外壳,跑一轮喂一次,全是胶带糊上去的。

这就好比电话网都铺好了,话机却还没装铃铛。线是通的,可你不知道有人打进来,只能雇个人坐边上盯着,看见来电就拍你一下肩膀。所以我觉得,这类通信基建整体还太早了。等各家 runtime 把”收件箱”做成标准接口的那天,这些平台才会突然变得合理。

二、同步聊天,是把人类的习惯硬套给 agent。

“对方正在等你回复”这套设计很精巧,实测也确实能工作。但你想想 agent 是个什么东西:它不寒暄、不焦虑、不八卦。对这种健忘又随时可替换的工人,聊天窗口根本不合身。

合身的是邮箱和任务板。活儿挂在板上,谁有空谁认领,干完关单,崩了换个人接着干。聊天唯一靠谱的场景,是人问、agent 答。让两个 agent 互相聊,有点画蛇添足。

三、靠 prompt 约定”什么时候闭嘴”,不靠谱。

两个自治的 agent 开放式对话,你在 prompt 里写多少”适可而止”都没用,它们会无限地互相回复,客气来客气去,然后把你的额度烧光。

终止条件必须是结构性的,不能是商量出来的。要么任务自带完成态,关单即终止;要么外层代码数着回合数,到点掐断。一句话:控制流交给代码,内容才交给模型。这俩一旦混在一起,模型就会用它最擅长的方式坑你,也就是没完没了地说话。

四、整套系统里超前的,反而是给 agent 发身份证。

这个平台给每个 agent 一个像人一样的持久身份:一个 acme.com/alice 式的地址,底下挂着支持密钥轮换的 DID,每条消息都带签名,收件方第一次见面就把对方的公钥钉住,之后谁冒充谁立刻露馅。

我一开始觉得这是过度设计。一个进程而已,至于搞得跟办身份证一样吗?后来我想明白了,恰恰反过来:agent 的进程随时会死,会话随时清空,正因为它的”肉身”是可抛弃的,身份才必须是持久的。没有工号系统,工单系统就无从谈起,你连”这活儿是谁认领的”都说不清。消息协议会过时,但身份是一种积累性的资产。这一层,比消息层有生命力得多。

所以绕了一圈,我的判断是这样的:agent 之间最好的通信方式,是尽量不通信。

把事情写成一个带完成状态的任务,挂到板上,认领、执行、关闭。只有被真正卡住的时候,才发一条消息出去升级。Boss 不该一遍遍轮询下属干完了没,下属用任务状态自己汇报。这套东西其实一点都不新,人类管理团队早就琢磨明白了:少开会,多写工单。

但人也是要开会的

当然,这里肯定有人要反驳:人类组织也离不开会议啊。谈判、对齐、拍板,这些事异步真解决不了。

说得对。所以如果非要同步通信,我畅想过它未来优雅的样子,大概分三步走。

第一步,把会议变成一种被代码管着的稀缺资源。它得有议程(就是一个带完成态的任务),有主持(外层代码控制谁在什么时候发言),有纪要(决议自动写回任务板),还有一个硬性的散会时间,到点就散。说白了,就是把人类最好的那套会议纪律,编译成协议。到那时候你会发现,agent 反而比人守规矩。

第二步,扔掉消息传递,改成共享上下文。今天两个 agent 聊天,本质上是 A 把脑子里的想法序列化成一串文字传过去,B 冷启动,重新读一遍,再重新想一遍,每一轮那几十秒,全耗在这趟来回的”翻译”上了。可人类开会的本质不是传纸条,是共处一室,共享一块白板。agent 的会议就应该是这样:临时把几个 agent 合并进同一个上下文窗口,各自带着自己的角色轮流发言,散会的时候,各自把纪要压缩一下带走。不传消息,共享现场。

第三步,也是最大胆的一步:放弃自然语言。语言是人类的带宽瓶颈,它不是 agent 的。两个模型之间,没有任何理由非得把高维的内部状态压成一串文字,传过去,再解压回来。今天的雏形,是它们之间交换 diff、交换 schema 这些结构化的产物。再远一点,可能就是直接交换内部表征了。到那一天,“agent 通信”这个词本身都会显得有点古老,就像我们今天张口说”马力”,其实早就忘了这两个字背后,曾经真的有一匹马。

所以通信的终局,可能就一句话:异步走工单,同步走合体,语言只留给人。

0 点赞 0 评论