三个Agent把同一家公司记成三个名字
上周的事儿,我们团队拿 GPT-5.6 Ultra Mode 跑金融合规审查,三个 Agent 在第三轮对话里把客户公司名搞串了。Agent A 咬死叫“字节跳动”,Agent B 非说是“字节控股”,Agent C 更离谱,直接编了个“ByteDance金融科技集团”。我当时盯着屏幕愣了得有十秒。多智能体系统的记忆共享问题,比我想的严重一百倍。
这玩意儿表面上是技术问题,实际上是个哲学问题:当多个 AI 同时处理一个任务时,它们到底该记住什么,又该忘掉什么?
官方文档不会告诉你的那些坑
GPT-5.6 的 Ultra Mode 号称支持最多 8 个 Agent 协同,每个 Agent 有独立内存空间,然后通过一个叫“Shared Context Bus”的东西做记忆交换。听起来挺美。
实际跑起来呢?
我上周压测了个客服场景。三个 Agent 分别负责售前咨询、订单查询、售后投诉。用户先问“我上周买的那个蓝色的包”,Agent A(售前)查了产品库,返回了正确的 SKU。然后用户说“我要退货”,Agent C(售后)接手——它不知道“那个蓝色的包”是什么。
为什么?因为 Shared Context Bus 默认只传“任务上下文”,不传“对话历史”。Agent C 收到的信息就一句:“用户要退货,情绪愤怒”。那个蓝色的包?丢了。
我翻了三个小时文档,在第 47 页脚注里找到一行小字:“Ultra Mode 默认不启用跨 Agent 对话记忆持久化,需手动配置 Memory Scope 参数。”
这就好比你买了辆号称自动驾驶的车,然后发现“自动驾驶”得你自己写代码开启。服不服?
记忆共享的三种模式,只有一种能用
踩了两周坑,我总结出 GPT-5.6 Ultra Mode 实际可用的三种策略:
模式一:全量广播
别用。
把所有 Agent 的对话历史实时广播给所有其他 Agent。理论上信息最完整,实际上是个灾难。我试过 4 个 Agent 跑 50 轮对话,Shared Context Bus 的 token 消耗是正常对话的 6 倍,延迟从 200ms 飙到 3 秒。更致命的是,Agent 开始“过度联想”——Agent B 看到了 Agent A 跟用户聊的产品细节,然后在自己完全无关的回复里强行来一句“顺便说一下,您之前看的那个产品...”,用户一脸懵。
模式二:关键节点同步
官方推荐,但有坑。
只在“任务交接点”同步压缩后的上下文。这是唯一能在生产环境跑的模式。但问题在于,“关键节点”的定义权在你手里。你得在代码里手动标记哪些对话轮次算“关键节点”,然后调 context.sync(memory_snapshot)。
我踩的坑:最开始我把所有“用户意图切换”设为关键节点,结果发现 GPT-5.6 对意图切换的判断延迟是 1-2 轮对话。等它意识到用户从“咨询”切到“投诉”时,前两轮的关键信息已经丢了。后来改成每 3 轮强制同步一次,虽然浪费点 token,但至少不会丢上下文。
等等,这里我要更正一下——不是每 3 轮,我后来改成了“每 3 轮或检测到意图切换时立即同步”,两个条件满足任一就触发。光靠轮次计数还是不够,有一次用户连续 5 轮都在聊同一个订单,第 3 轮强制同步纯属浪费。
模式三:中心化记忆池
这是我自己搞的野路子。
所有 Agent 不直接共享记忆,而是把“需要记住的信息”写入一个独立的 Memory Agent。其他 Agent 需要信息时,向 Memory Agent 查询。
听起来多此一举?实际上解决了两个致命问题:一是记忆冲突,当 Agent A 和 Agent B 对同一事实有不同记忆时,Memory Agent 作为“仲裁者”保留最新版本;二是记忆污染,Agent 不会因为看到无关信息而产生幻觉。
但这个方案也有代价——多了一次 Agent 间通信,延迟增加 150-200ms。对实时性要求高的场景,得掂量掂量。
…这个方案其实还有个隐藏问题我没想清楚。当 Memory Agent 自己挂了怎么办?我现在是做了个简单的降级——Memory Agent 不可用时各 Agent 退回本地缓存,但数据一致性就没法保证了。这块我还在琢磨,有思路的朋友可以聊聊。
上下文一致性:你以为解决了,其实没有
记忆共享只是第一步,更难的是上下文一致性——确保所有 Agent 对同一件事的理解是一致的。
讲个真事儿。我做了个法律合同审查系统,三个 Agent 分别审合规性、财务条款、知识产权。用户上传了一份 50 页的合同,三个 Agent 开始干活。
合规 Agent 说:“第 12 页的违约金条款有问题。”
财务 Agent 说:“第 15 页的付款周期需要调整。”
知识产权 Agent 说:“第 8 页的授权范围太宽泛。”
看起来没毛病?实际上它们引用的是同一份合同的不同版本。因为合同里有修订标记,合规 Agent 读的是“原始版本”,财务 Agent 读的是“修订版本”,知识产权 Agent 读的是“最终版本”——三个版本的第 12 页内容根本不一样。
GPT-5.6 的 Ultra Mode 没有内置“文档版本一致性检查”。你得自己实现一个 Document Version Lock 机制,确保所有 Agent 读的是同一个文件快照。
我现在做法是:任务开始时把文件 hash 值写进 Shared Context Bus,每个 Agent 读文件前先校验 hash。hash 不一致就强制重新加载。虽然多了 1-2 秒初始化时间,但至少不会出现“三个 Agent 审三份不同合同”的荒唐事。
一个让我失眠的发现
上周五晚上 11 点,我在压测环境发现了个诡异现象。
5 个 Agent 同时向 Shared Context Bus 写记忆时,有概率出现“写入覆盖”——Agent A 写的记忆被 Agent B 的写操作直接盖了,没有任何报错,没有任何日志。我是翻了半天 trace 才确认的。
我在 GitHub 上提了 issue,目前官方还没回复。临时方案是加了个分布式锁,但这也意味着 Shared Context Bus 变成串行写入,吞吐量直接腰斩。
这件事让我认清了一个现实:GPT-5.6 的 Ultra Mode 本质上还是个 beta 功能,挂着正式版的名头在卖。多智能体系统的记忆共享和上下文一致性,远没到“开箱即用”的程度。圈子里有人说 Ultra Mode 其实就是去年那个被砍掉的“Project Hermes”改了个名,据我了解这个说法还没被证实,但用起来的感觉确实像半成品。
我的生产环境配置
踩了这么多坑,我现在配置是这样的:
- Agent 数量:不超过 4 个。超过 4 个,记忆同步复杂度指数级上升,我试过 6 个 Agent 跑 30 轮,记忆冲突率直接飙到 18%
- 记忆同步模式:关键节点同步 + 每 5 轮强制全量同步
- 上下文一致性:Document Version Lock + Memory Agent 仲裁
- 监控指标:记忆冲突率超 5% 就告警,上下文丢失率超 1% 就回滚
- Token 预算:记忆共享的 token 消耗控制在总消耗的 15% 以内,超了就切降级模式
这套配置跑了三周,上下文丢失率从最初的 12% 降到 0.3%,记忆冲突率控制在 2% 左右。不算完美。
但至少能用了。
说到底
多智能体系统的记忆共享,本质上是在三个维度之间做权衡:信息完整性、响应速度、成本。你不可能三个都要。
做医疗诊断、法律审查这类场景,信息完整性是第一优先级,那就接受更高的延迟和成本。做实时客服,响应速度优先,那就接受偶尔的上下文丢失。GPT-5.6 的 Ultra Mode 给了你足够的灵活性,但没给你足够的“默认正确”。你得自己理解业务场景,然后做取舍。
我猜这可能是 OpenAI 故意的——毕竟真正的生产级系统,从来不是靠默认配置跑出来的。今年 5 月那场 devday 上他们自己也说了,Ultra Mode 的目标是“给开发者最大的控制权”,翻译一下就是“我们不想替你背锅”。
你现在在用 GPT-5.6 的 Ultra Mode 吗?有没有遇到过什么诡异的记忆丢失问题?评论区聊聊,我看看是不是只有我这么倒霉。
#GPT-5.6 #多智能体系统 #记忆共享 #上下文一致性 #AI工程化 #踩坑记录
读者评论 2