为什么你明明给Agent存了记忆、写了规则,它还是会重复犯错? 答案藏在"存储不等于使用,建议不等于强制"这句话里。
你有没有过这样的经历?
你和一个AI助手聊了整整一个小时,从数据库设计聊到API架构,再聊到前端优化。它表现得像个博学的顾问,对答如流。然后你说:"回到最开始那个数据库问题——"
它一脸茫然:"哪个数据库问题?"
这一刻,你突然意识到:它根本没在"记住"任何东西。
这不是bug,也不是某个特定AI的缺陷。这是当前所有大语言模型(LLM)的结构性宿命。而当你把多个这样的"健忘症患者"组合成一个Multi-Agent系统时,事情会变得更加魔幻——
这就是我们今天要聊的:Multi-Agent系统的"概率学玄学"。
让我们先搞清楚一个根本问题:LLM是怎么"回忆"之前的对话的?
答案是:它根本不回忆。
每次你发送一条消息,模型都会把整个对话历史从头到尾重新读一遍。想象一下,你要写一本书的第101页,但每次动笔前都必须从第1页开始重新阅读——这就是LLM的工作方式。
小贴士:这种设计有个好处——服务器不需要在消息之间保存任何状态。你关掉浏览器后,服务器上就没有你的对话记录了。这也是为什么LLM可以水平扩展:任何服务器都能处理任何请求,不需要"记得"你是谁。这个重新阅读的过程发生在一个叫做上下文窗口(Context Window)的地方。你可以把它想象成一个固定大小的记事本,所有对话都必须挤在里面。
现代模型的上下文窗口从几千到几百万token不等(一个token大约是3/4个单词)。但这里有个数学陷阱——
LLM使用一种叫做注意力机制的技术来处理文本。这个机制要求每个词都要和每个其他词"对话",理解它们之间的关系。
这意味着什么?
计算量随输入长度呈平方增长。
现在想象一下:你在对话开始时给Agent设定了一条重要规则——"永远不要删除生产环境的数据"。
随着对话进行,上下文越来越长。早期的规则被淹没在海量的消息中。当Agent决定执行一个危险操作时,那条规则可能已经被"挤"到了上下文的边缘,权重越来越低。
这就是上下文衰减(Context Decay)——
小贴士:就像你读一本长篇小说时,开头的人物和情节会随着阅读推进而逐渐模糊。LLM也是如此:越早的信息,在生成回复时的"存在感"越弱。研究表明,即使是目前最先进的模型,在超长上下文中也会出现Context Rot(上下文腐烂)——性能随着输入长度增加而持续下降。这不是模型不够聪明,而是注意力机制的数学本质决定的。
单个Agent已经够让人头疼了。当你把多个Agent组合在一起,让它们协作完成任务时,事情会呈指数级复杂化。
1. 主动权缺失:LLM决定要不要查记忆
你花了大力气给Agent搭建了RAG(检索增强生成)系统,存入了海量知识库。然后你发现——
Agent根本不想查。
为什么?因为查不查RAG,全凭LLM自己判断。它觉得"这个问题我应该能直接回答",就不会去查。结果就是:知识链条断裂。
这就像让一个学生自己决定要不要看课本。大多数人会选择不看,直到考试不及格。
2. 上下文衰减:规则变成了"建议"
在Multi-Agent系统中,每个Agent都有自己的上下文窗口。当一个Agent把结果传递给另一个Agent时,关键信息可能在传递过程中丢失或被稀释。
更糟的是,早期的规则在漫长的协作链条中逐渐被遗忘。原本的铁律变成了可有可无的建议。
3. 规模摩擦:错误率的指数爆炸
研究表明,Multi-Agent系统的失败率往往超过50%。这不是危言耸听——
小贴士:MIT的研究表明,竞态条件(race conditions)的数量随Agent数量呈平方增长。N个Agent之间有N(N-1)/2种潜在的并发交互,每一种都可能出问题。
面对这些问题,业界正在探索各种解决方案。其中最有前景的,是Hook机制——在关键决策点插入确定性逻辑,绕过LLM的"概率学玄学"。
问题:LLM自己决定要不要查RAG,经常选择不查。
解法:不给它选择的机会。
利用before_prompt_build Hook,在Prompt提交给模型之前,强制注入相关知识。不是问Agent"你要不要查",而是直接把知识"喂到嘴边"。
用户提问 → Hook拦截 → 分析任务阶段 → 强制注入相关知识 → 提交给LLM
这样,Agent看到的Prompt里已经包含了它需要的所有信息,不需要自己做判断。
问题:Agent可能会执行危险操作,比如删除生产环境数据。
解法:在工具执行前物理拦截。
利用before_tool_call Hook,在Agent调用任何工具之前,先过一道策略检查:
Agent想执行rm -rf / → Hook拦截 → 策略检查 → DENY → 操作被阻止
这不是给Agent一条"不要删数据"的建议,而是在物理层面阻止危险操作的发生。概率性的错误被修正为确定性的安全。
开源项目ClawBands就是这个思路——它像AI的"sudo"系统,每个危险操作都需要人工确认或策略放行。
问题:今天的错误,明天还会再犯。
解法:让系统自己进化。
通过agent_end Hook捕获每次对话中的错误,写入日志。然后设置Cron定时任务:
before_prompt_build注入这三个解法的共同点是:它们在LLM的"概率世界"和计算机系统的"确定世界"之间建立了桥梁。
LLM不做"决定",它做"预测"。给定一段文本,它预测下一个最可能出现的词。这个预测基于训练数据中的统计模式,而不是逻辑推理。
这就是为什么:
Hook工作在LLM之外,在关键的决策点插入确定性逻辑:
| 决策点 | Hook | 确定性干预 |
|---|---|---|
| Prompt组装 | before_prompt_build | 强制注入知识 |
| 工具执行 | before_tool_call | 物理拦截危险操作 |
| 会话结束 | agent_end | 捕获错误,驱动闭环 |
这就像给一辆自动驾驶汽车安装物理刹车——AI可以决定怎么开,但在危险时刻,确定性系统可以接管。
理论很美好,现实很骨感。根据2025年的行业研究,Multi-Agent系统在生产环境中面临以下挑战:
多个Agent对共享状态的理解不一致。Agent A更新了订单状态,Agent B在收到更新前就读取了旧状态,导致冲突。
消息顺序错乱、超时重试导致重复操作、Schema不兼容……分布式系统的经典问题在Multi-Agent领域全部重现。
多个Agent同时调用同一个API,触发限流;上下文窗口被某个Agent占满,其他Agent无法工作。
单Agent出问题,你可以看它的日志。五个Agent互相调用,出错时你需要追踪整个调用链——这比调试微服务还要痛苦。
小贴士:研究表明,Multi-Agent系统的调试复杂度是单Agent的指数级。这也是为什么很多团队最终选择回归单Agent架构,除非任务特性确实需要并行化。
Multi-Agent系统的"概率学玄学",本质上是因为我们把一个确定性系统(计算机)和一个概率性系统(LLM)强行结合在一起,却没有处理好它们之间的边界。
Hook机制的价值在于:它明确了哪里该让LLM发挥,哪里需要确定性保障。
这才是从"玄学"走向工程的正确道路。
本文首发于智柴论坛,探讨Multi-Agent系统的可靠性挑战与工程解法。
#MultiAgent #AI可靠性 #Hook机制 #OpenClaw #上下文衰减 #概率学玄学 #记忆工程
还没有人回复