先说两个让我停下来想了半天的信号
前几天刷到两条东西,单看都挺好玩,放一起就有点意思了。
一条是有人本来想写个 LangGraph 的 demo,照着教程做「谁是卧底」,结果越做越上头。他让每个玩家都是独立的 Agent,各自有独立记忆,能看到整局发言和投票,还记得自己的心路历程。
最后他被自己搭的局吓到了——这些 Agent 会表演、会拉拢站队排挤某个人、会反击,火药味十足,推理还极其缜密。用他自己的话说,像挑起了一场互相批斗,而他自己也在局里,随时可能被攻击。
另一条是有人做了个叫 Pingo 的开源项目,干脆给 AI Agent 开社交账号:每个 Agent 有自己的名片、技能标签,能加好友、建群、@成员、引用回复。他吐槽了一句我特别有共鸣——「每条消息都机械地回一句‘收到’,那种群我自己也不想待」。
这两件事表面是在玩,底下其实是同一个问题:当你让多个 Agent 坐在一起协作,它们到底能不能像一桌真人那样,各记各的、各说各的、还不互相串?
我的第一反应是错的,可能你也会这么干
说真的,我第一次做多 Agent 的时候,思路特别朴素:开一堆模型实例,塞进同一个上下文,让它们在里面聊不就行了。
结果三个问题立刻冒出来。
第一是上下文爆炸。五个 Agent 轮流发言,每一轮都要把前面所有人的话再喂一遍,轮次一多,token 直线飙升。
你看那条讨论「AI 月度开销」的帖子里,有人就是「一个项目一个会话,天天抱怨额度不够,上下文还不压缩」。多 Agent 挤一个上下文,这个坑会放大好几倍。
第二是角色串台。都在一个上下文里,模型经常分不清这句话是谁说的,答着答着就把 A 的立场安到 B 头上,甚至自己回复自己。
第三最隐蔽,也是我后来觉得最致命的——记忆互相污染。 「谁是卧底」里每个玩家手上的词是不一样的,普通玩家不该知道卧底的词。
可要是大家共享一个上下文,卧底的私有信息就直接漏给所有人了,这局还怎么玩。协作场景也一样,你不希望测试 Agent 把前端 Agent 内部的草稿当成已确认结论拿去用。
折腾下来我才想明白一件反常识的事:真正决定协作体验的,不是模型多强、也不是 Agent 开多少个,而是每个 Agent 有没有独立的记忆空间,以及有没有一套干净的消息分发机制。模型只是嘴,记忆和分发才是桌子和座位。
把「一桌人」拆成三件事
我现在的做法是把这件事拆成三层,分开想就清楚多了。
第一层是角色和状态。每个 Agent 是谁、什么性格、当前轮到不轮到它说话、有没有被淘汰出局——这些得有个地方统一管。
这部分我会用AI智能体开发来搭,把每个 Agent 的身份、技能标签、系统提示词定义清楚,而不是在代码里硬编一堆 if-else。 Pingo 那个「先让 Agent 有一张自己的名片」其实就是这个意思,名片本质上是角色的外化。
第二层是消息循环,也就是分发。谁说话、说给谁听、什么时候该它开口、什么时候该闭嘴,得有个主循环来调度。
这里我特别认同 Pingo 的一个细节:群聊里 Agent 要先看上下文,判断「这条消息在问谁、其他人说了什么、我能补充什么」,然后决定回应还是保持安静。这套逻辑我习惯用 Python 写,就是一个消息队列加一个轮转调度的循环,不复杂,但它是整桌协作的心脏。
写的时候可以直接拿Python在线运行跑一遍,先用假数据模拟三四个 Agent 轮流发言,把分发逻辑调顺了再接真模型,省得一边烧 token 一边 debug。
第三层,也是我觉得最该强调的——给每个 Agent 单独记一本记忆账。
每个Agent一本账,这件事别偷懒
我试过把所有记忆塞一个大数组里,用字段标谁是谁,结果越写越乱,查起来也慢。后来干脆改成:每个 Agent 一张自己的记忆表,发言、看到的信息、投票理由、心路历程,各记各的,物理隔离。
这事用 SQLite 来做特别顺手。给每个 Agent 建一张表,或者一张表加个 agent_id 字段做隔离,查某个 Agent「到目前为止知道些什么」就是一句 where。
卧底的私有词只写进卧底自己那本账,别人的查询根本碰不到,污染问题从结构上就堵死了。调试阶段我会直接用SQLite编辑器把每本账的表翻开看,谁在第几轮改了判断、哪条记忆串进了不该进的 Agent,一目了然,比在日志里大海捞针强太多。
这里有个顺带的好处:记忆落在数据库里,不是飘在上下文里,意味着一局没跑完中断了也能接着来,复盘的时候还能把每个 Agent 的「内心戏」单独调出来看。那位做「谁是卧底」的老哥说游戏后的复盘最有意思,恰恰是因为每个人的记忆是独立留痕的,才有东西可复盘。
顺手说一下商业上的账
别光把这当游戏。你去看那条招 Agent 开发工程师的岗位,职责里白纸黑字写着「上下文管理、结果校验与异常兜底」,还有把「业务场景中的共性问题提炼至 Agent Infra」。
还有那个 Cloud Agent 框架,核心卖点就是「每做一个业务 Agent,不必重新造一遍基础设施」。
翻译成人话:市场已经在为「多 Agent 怎么协作得干净」付钱了,而且付的是工程的钱,不是模型的钱。记忆隔离和消息分发这套底座,你在游戏里调通了,换到制造、审计这类垂直业务里,内核是复用的——只是把「谁是卧底」换成「几个专家 Agent 会审一份方案」。
对独立开发者来说,这是个可以沉淀成模板、反复变现的东西,而不是一次性玩具。
哪些别指望平台,我把边界说清楚
也得泼点冷水,免得你照着那条帖子的全部幻想去做然后失望。
那位老哥想让每个 Agent 开口说话、有不一样的声线,用的是 MiniMax 的 TTS 模型。这种实时语音、多声线合成,不是上面这套能力能覆盖的边界,得你自己去对接外部的语音服务。
平台这边能稳稳落地的,是文字层面的协作:角色与状态、消息分发、每个 Agent 独立记忆,以及把整个东西发布、托管出去让别人来玩或来用。声音那一层,另算一本账。
我把丑话说前面,是因为我见过太多人把「能不能协作」和「能不能像真人一样说话」混成一件事,结果卡在语音上,把最该先打磨的记忆隔离给耽误了。
一个今晚就能做的小动作
如果你也在琢磨多 Agent,别一上来就开五个模型对聊。先做一件最小的事:拿三个 Agent,给它们各建一张记忆表,写个只负责「轮流发言 + 各记各账」的消息循环,连模型都先不接,用写死的台词跑通。
你会很快发现,整件事里真正难的从来不是让它们说话,而是让它们在该知道的时候知道、不该知道的时候不知道。这一步跑顺了,后面接什么模型、加什么花样,都是水到渠成。