现在有一种深深的感觉,觉大多数情况下,多 Agent 不如单 Agent 好

null

最近真是有点受不了了。

我刷技术社区,到处都是各种花里胡哨的"多智能体协作框架",动不动就给你展示一堆Agent小人儿在那儿开会、分工、并行处理,看起来特别高大上,好像未来已来。

null

但每当我看到这些,我脑子里就一个念头:哥们儿,你这东西跑过超过五分钟的真实任务吗?能稳定交付吗?

感觉整个行业都魔怔了。这场景让我想起二十多年前,大家刚开始用HTML和CSS搭网页的时候,什么东西都敢往上堆,最后搞出来的东西丑得千奇百怪。现在我们搞AI Agent,就像回到了那个莽荒时代,手里攥着几个强大的LLM,却不知道怎么把它们靠谱地"粘"在一起。React的出现,给前端开发带来了一套哲学,一套心法,才让事情变得井井有条。而在Agent领域,我们现在缺的就是这个。

更要命的是,像OpenAI和微软这样的大厂,推出的Swarm、Autogen之类的框架,还在拼命鼓吹"多智能体"这个概念。恕我直言,根据我们团队在坑里摸爬滚滚的经验,这在现阶段,简直就是通往项目失败的最佳捷径。

如果你只是想搭个玩具玩玩,那无所谓。但如果你想做的是一个能在生产环境里稳定运行、能处理复杂、长周期任务的严肃应用,那咱得好好聊聊了。

问题的核心,其实就俩字:上下文(Context)

你可能会说,这不就是"提示词工程 "嘛。不,那是入门级的。我们现在要谈的是"上下文工程"------怎么在一个动态、长期的任务里,自动、智能地管理信息流。这才是构建AI Agent工程师的头号天职。

来,我给你讲个我们都掉进去过的坑。

最常见的一种诱人架构就是:一个主管Agent,接到任务后,把它拆成几个子任务,然后派给几个小弟Agent去并行处理,最后主管再把结果汇总起来。听起来很美好,对吧?效率高,模块化。

现实是:假设你给它的任务是"给我复刻一个Flappy Bird"。

主管Agent想了想,挺聪明地把任务拆了:"小弟A,你去画游戏背景,要有绿色的管子和碰撞区。" "小弟B,你去画那只鸟,要能上下飞。"

然后灾难就开始了。小弟A可能对你的要求有什么误解,吭哧吭哧搞了半天,给你弄了个《超级马里奥》风格的背景。而小弟B,虽然画了只鸟,但那画风跟背景完全不搭,而且飞起来的动作僵硬得像块砖头。

最后,烂摊子甩回给主管Agent。它看着这两坨风格迥异、八竿子打不着的东西,陷入了沉思。它能怎么办?它也很绝望啊。把这两坨屎山代码强行捏在一起?结果可想而知。

你可能会说,这好办啊,把原始任务"复刻Flappy Bird"也告诉每个小弟不就行了?天真了。在一个真实的应用里,任务的上下文是动态变化的。可能在分配任务之前,主管Agent已经跟用户聊了十几个回合,做了一些工具调用,确认了无数细节,比如"我想要像素风格的"、"难度要低一点"。这些琐碎但至关重要的信息,如果不能完整地传递下去,小弟们的工作就是灾难的开始。

所以,我们踩坑得出的第一个血泪教训就是:别只传递消息,要共享完整的上下文,最好是整个任务的"记忆"

好,我们改进一下。我们让小弟A和小弟B都能看到彼此的完整工作记录。这下总行了吧?

还是不行!

这次,你可能得到了一个风格统一的像素鸟和像素管道。但小弟A在实现管道滚动时,做了一个隐性决定:游戏画布是1080p的。而小弟B在实现小鸟飞行时,也做了一个隐性决定:画布是800x600的。它们俩谁也不知道对方心里的这点"小九九"。结果呢?鸟飞着飞着,就撞到看不见的墙了。

这就是第二个,也是更隐蔽的坑:每一个动作背后,都藏着无数微小的、隐性的决策。并行工作的Agent之间,这些隐性决策大概率会互相冲突。

这两个原则实在是太重要了,以至于我现在看到任何违背它们的设计,都会下意识地觉得"这玩意儿肯定要出事"。

那到底该怎么办?最简单、最可靠,甚至有点"笨"的方法,就是------只用一个Agent

null

是的,你没听错。就一个单线程的线性Agent。让它一步一步地来,先搞定背景,再搞定小鸟。因为所有工作都是它自己一个人干的,所以上下文是连续的,它自己做的所有隐性决策,它自己都一清二楚,绝不会精神分裂。

这种方法虽然不酷,但它能跑起来,能解决问题。对于绝大多数任务来说,这已经足够了。

当然,如果你真的要处理那种巨复杂、巨长期的任务,单线程跑下来上下文窗口都爆了,那确实需要更高级的玩法。我们内部也折腾过一种方案:引入一个专门负责"压缩记忆"的LLM。它的工作不是执行任务,而是像个史官,把前面长篇大论的对话、操作记录、中间产物,压缩成几个关键的决策点和事件摘要,再喂给主Agent。

但这玩意儿搞起来可就费劲了,你需要投入大量精力去调教这个"史官",甚至为它专门微调一个模型。这是一个深不见底的兔子洞(狡兔三窟,🕳️🕳️🕳️🐇)。

说这么多,其实就是想吐槽一下。你看,现在很多产品里都能看到这些原则的影子。比如Claude的代码助手,它有时候也会生成"子任务",

null

但你会发现,这些子任务通常是去查个资料、回答个问题,说白了,他就是去补充必须的上下文,它绝不会让子任务和主任务并行写代码。为什么?因为它知道,子任务没有主任务那海量的编程上下文,让它写代码只会添乱。

再回想一下2024年那会儿,很多模型编辑代码的能力很差。当时流行一种叫"Edit-Apply"的模式:让一个大模型用自然语言描述要修改什么,再让一个小模型去读懂这段话,然后重写整个文件。结果呢?小模型经常会错意,因为自然语言里的一点点歧义就可能导致错误。现在呢?大家更倾向于让一个模型一步到位,直接输出diff或者重写,因为决策和执行不分离,才最不容易出错。

至于那个终极梦想------让一群Agent像人类团队一样开会、讨论、解决分歧。如果工程师A和工程师B的代码冲突了,他们会坐下来聊,找到一个共识。但现在的Agent呢?你让它们聊,它们大概率会陷入一些毫无意义的细节争论中,直到把天聊死,把上下文窗口耗尽,这就是为什么有人说用 qwen3,一个问题给他干几 M token,吗的,这你受得了。是的它们的沟通效率,比人类差太远了。

所以,我的观点很简单:在2025年的今天,搞多智能体协作,就是一种行为艺术。它的脆弱性,源于决策权的分散和上下文传递的巨大鸿沟。

我们内部开发工具和框架时,会反复强调这些踩过坑换来的原则。但这也不是什么金科玉律,这个领域发展太快了,也许明年我的这些想法就过时了,被新一代更强大的模型给轻松解决了。

但至少在此时此刻,如果你想构建一个真正能用的AI Agent产品,我的建议是:忘掉那些酷炫的"群体智能"吧,先老老实实地,把你的单线程Agent打磨好,让它别在半路掉链子。这比什么都强。

相关推荐
长栎4 分钟前
写 for 循环写了十年,你却从没用过迭代器模式最狠的那一面
后端
user20585561518137 分钟前
Windows 项目安装时报 `node-sass` 错误,如何快速处理
前端
LiaCode8 分钟前
Redis 在生产项目的使用
前端·后端
用户5598224812212 分钟前
Docker Compose Down 导致容器数据误删——ext4 日志恢复全记录
后端
LiaCode13 分钟前
一天学完 redis 的爽翻版核心知识总结
前端·后端
大刚测试开发实战14 分钟前
如何内网穿透访问本地私有化部署的TestHub
前端·后端·github
Jack2022 分钟前
HarmonyOS APP事件驱动大揭秘
架构
风骏时光牛马26 分钟前
# Ruby基于Rails框架实现多角色权限管理与数据分页查询完整实战代码案例
前端
weedsfly28 分钟前
迭代器、生成器与异步迭代——让数据“按需流动”的艺术
前端·javascript
xiaodaoluanzha33 分钟前
迄今為止,最簡單的編程語言 Nolang
前端·后端