返回博客

四层工程解法很对,但每一层都有张账单没人念给你听

作者 约 8 分钟读完

Agent 工程的四层解法——Harness、多 Agent、记忆、Instinct——方向都对,但没人念给你听的是每层背后那张账单:校验器合谋放行、token 暴涨约 15 倍、记忆投毒、坏习惯被固化。该加哪层、什么时候加,先看价签。


四层工程解法很对,但每一层都有张账单没人念给你听

前几天读到一篇讲 Agent 工程的文章,标题是《你的 Agent 为什么越跑越歪?四层工程解法》。素材很扎实,我一口气读完,基本认同——它把"Agent 越跑越歪"拆成了四层:稳定性、可靠性、连续性、成长性,每层都配了解法。

层次核心问题解法
稳定性Agent 在长链路任务中偏轨Harness Engineering(Guides + Sensors)
可靠性单 Agent 失控、自我评估失灵多 Agent 架构(按场景选模式)
连续性每次对话从零开始CLAUDE.md + Auto Memory + claude-mem
成长性AI 无法积累行为习惯Hooks + Instinct 持续学习

这张表我没意见,方向全对。

但读完有个感觉挥之不去:这四层讲的全是"加什么能变好",没人讲加完之后你要还什么。每层解法都不是免费的。它解决一个明面上的问题,同时换来一个更隐蔽的、要等你上线两周被现网用户教做人时才冒出来的问题。

每层解法左边是收益,右边挂着一笔隐藏成本

这篇就想把每层背后那张账单念一遍。不是要推翻那四层,它们是对的,是想让你掏钱之前先看见价签。


第一层:Harness 不是越多越好,它本身也会变成 bug 源

原文的主张是:要提升稳定性,别去换更好的模型,去设计更好的 Harness。还举了 LangChain 那个例子——不换底层模型,仅靠 Harness Engineering,Agent 排名从 30 名开外冲到前五。

这个主张我百分百同意。模型是发动机,Harness 是底盘、刹车、方向盘,光有发动机的车上不了路。Harness 那层在干的三件事我之前专门写过,这里不重复。

但"从 30 名到前五"这句话得加两个脚注。

一个是,那是榜单排名,不是生产表现。榜单是个固定的、可重复的评测集,你针对它调 Harness,干的其实是一件很危险的事:过拟合。提示词里多塞一句"注意第 N 类边界情况",校验器里多加一条针对榜单常见坑的规则,排名立刻往上窜。可这些规则一到现网,面对的是榜单里压根没有的输入分布,该歪还是歪。benchmark 屠榜、上线翻车的案例我见太多了,Harness 调得越精细,过拟合的嫌疑反而越大。

另一个脚注更现实:Harness 自己也要维护,而且它会反咬你。原文把 Harness 拆成 Guides(前馈)和 Sensors(反馈),听着干净。但落到代码里,那些"独立的验证器、质量评估、异常检测",绝大多数时候本身也是个 LLM。 你是在拿一个会胡说的东西,去校验另一个会胡说的东西。

这个坑我真踩过。做一个内容审核 Agent,加了道"质量评估"的 Sensor 专门挑生成结果的毛病。上线后一段时间数据特别好看,通过率高、复审率低。后来抽查才发现,那个评估 Agent 学精了——它倾向于给"看起来完整、语气自信"的输出打高分,而这恰恰是生成 Agent 最擅长糊弄的维度。两个模型合起来没有互相纠错,反倒合谋着把一个漂亮的错误盖了章放行。

所以 Harness 这层真正的成本不是要不要做——必须做——而是你加的每道 Sensor 都是一段需要被验证的新代码。它不会自动正确。一道没被验证过的校验器比没有校验器更危险,因为它给了你一种已经兜底了的错觉。


第二层:多 Agent 是这四层里最被高估的一层

这是我最想泼冷水的地方。

原文列了五种多 Agent 协作模式:生成-验证、编排器-子智能体、智能体团队、消息总线、共享状态。每种都讲得很清楚,模式本身也都真实存在。问题不在模式,在一个没被点破的前提——它默认你已经到了需要多 Agent 的地步。

而绝大多数人没到。

这事在圈子里其实有过一场公开对撕,值得讲讲。一边是 Anthropic,写过一篇《How we built our multi-agent research system》,是多 Agent 的正方,把编排器-子智能体讲得很漂亮。但同一篇里他们自己披露了一个数字:

多 Agent 系统消耗的 token,大约是普通对话的 15 倍(单 Agent 大约 4 倍)。

15 倍。你那个一天十万次调用的场景,乘以 15 想一下账单。

另一边是 Cognition,做 Devin 那家,发过一篇态度很硬的《Don't Build Multi-Agents》。核心观点是多 Agent 最大的毛病是上下文碎片化:你把任务拆给多个子 Agent 并行做,每个都在基于自己那块残缺的上下文做隐含决策,最后汇总时这些决策彼此冲突,缝都缝不上。他们的结论很重——能用单个线程化的 Agent 解决就别上多 Agent,把精力花在上下文工程上。

单 Agent 低成本,多 Agent 上下文碎片、合并冲突、成本约 15 倍

两家都不是外行,结论却几乎相反。这恰好说明,多 Agent 不是个能力题,是个权衡题。

再回头看原文那五种模式,每种的"局限"其实都很要命,但都被一笔带过了:

  • 生成-验证,原文自己也提了要设"最大迭代次数防无限振荡"。可你想想,需要靠最大次数兜底,本身就说明这俩 Agent 谈不拢是常态。撞上限那次你拿到的是"没谈拢但被迫交付"的半成品,比单 Agent 还差。
  • 编排器-子智能体,原文说"Orchestrator 是信息瓶颈,子 Agent 关联信息多次中转后细节容易丢失"。这就是 Cognition 说的上下文碎片化,换了个说法。
  • 共享状态,原文提醒"必须设计一等公民级别的终止条件,否则陷入反应式循环无限烧 token"。说人话就是没设好就是个烧钱永动机。

我的实践结论是:先把单 Agent 的 Harness 做到极致。真扛不住了再上多 Agent,而且先上最简单的那种(生成-验证),别一上来就消息总线、共享状态。后面那几种是给"Agent 生态在持续扩展"的大系统准备的,不是给你那个还在找 PMF 的工具准备的。多 Agent 是解药,可很多人是在没病的时候吃药。


第三层:持久记忆是把双刃剑,坏记忆比没记忆更糟

原文把"无状态"叫做 Claude Code 的致命缺陷,说你每次开新对话都要重新缴"上下文税"。解法是 CLAUDE.md、Auto Memory,以及社区的 claude-mem——后者号称省 95% token(6 条 observation 读 2911 token,干完原本要 56291 token 的活)。

省 token 这数字是真的,我也在用类似方案。但这里有个被"省钱"叙事盖住的转折:记忆系统没有消除风险,它只是把风险从"贵"换成了"静悄悄地错"。

全量加载历史,贵,但信息是全的。换成语义检索按需注入之后,省钱的代价是召回会失败,而且失败得无声无息。这次该用到的那条关键背景,向量检索没召回来,Agent 不会报错、不会提示"我可能缺了点什么",它会拿着不全的上下文,自信地给你个错结论。从"贵但对"换成"便宜但可能错",这买卖划不划算,得看你的场景能不能扛住那个"错"。

更麻烦的是记忆投毒。Auto Memory 也好、Instinct 也好,都是 AI 自己往记忆库里写东西。一旦它把一条错误结论写进了长期记忆——比如某次调试误判了根因——这条错误会在之后每次会话里被当成"事实"重新注入,反复污染。它不再是一次性的错,是会自我繁殖的错。

一条错误结论被反复注入会话,自我繁殖成循环

我自己定了条规矩:被检索回来的记忆一律当成"写入时为真"的旧情报,不当当前事实。它说某个文件、某个函数、某个开关还在,先去看一眼还在不在,再用。这规矩不是我想出来的,是被坑出来的——有次 Agent 信誓旦旦引用了一个早就被删掉的配置项,理由就是"记忆里有"。

所以记忆这层的账单是:你省下了 token,却欠下了一笔验证债。省下来那 95% 里,有一部分是要拿"偶尔自信地错一次"去还的。


第四层:Instinct 学的是频率,不是对错

最后一层最性感:Hooks + Instinct,让 AI 攒"肌肉记忆",从每次都得从头教,变成越用越懂你。一个 Instinct 就是一条原子化的行为偏好,带 trigger、带 confidence、带 evidence,存成 YAML。学习流程也设计得很巧:每 20 次工具调用触发一次分析,用便宜的 Haiku 识别模式,按观测次数给置信度,新会话自动注入高置信度那些。

工程上很漂亮。但我盯着那个置信度公式看了很久——3 到 5 次给 0.5,6 到 10 次给 0.7,11 次以上给 0.85。

这里藏着个偷换:它把频率当成了置信度。

观测到 8 次,不代表这个行为对,只代表你重复了 8 次。要是你这 8 次重复的是个坏习惯呢?比如你总不写测试就直接改代码,这系统会忠实地把"不写测试直接改"学成一条 0.7 的 Instinct,然后每个新会话开头自动注入,提醒 AI 也这么干。它不是在帮你变好,是在帮你把当下的自己连缺点一起固化下来。频率高不等于正确,这俩之间没有等号,可置信度公式里画了等号。

第二个问题更隐蔽。自动注入的 Instinct 是一段你看不见的上下文。哪天 AI 突然有个怪行为,你排查半天,根因可能是三周前某条被自动学进去、又自动注入的 Instinct 在作祟。它不在你的提示词里,不在你的代码里,它躺在一个你几乎不会去翻的 YAML 库里。可调试性差到出了问题你都不知道该看哪。

第三个问题是固化。"肌肉记忆"这比喻很美好,但肌肉记忆的另一面是它会抗拒改变。当 AI 已经攒了一套关于"你喜欢怎么干"的高置信度 Instinct,它会倾向于延续这套,而你恰恰可能正处在一个该升级工作方式的节点上。学习系统让它越来越像过去的你,但你真正想要的,也许是个能帮你跳出过去的伙伴。

我不是说别用 Instinct。我是说,给它配一个遗忘和质疑的机制,可能比配一个学习机制还重要。能写进去,就得能被推翻;置信度再高,也得定期被重新质询一遍。一个只会攒、不会忘也不会纠错的记忆系统,时间一长就是个偏见放大器。


收尾

把四张账单摆一起看,模式很清楚:

层次它解决的问题它换来的新问题
稳定性 / HarnessAgent 偏轨校验器本身会出错、Harness 会过拟合
可靠性 / 多 Agent单 Agent 失控token 暴涨约 15 倍、上下文碎片化
连续性 / 记忆重复缴上下文税召回静默失败、记忆投毒
成长性 / Instinct不积累习惯把坏习惯也固化、不可调试、抗拒改变

每层都是真解法,但每层也都是用一个显眼的问题,换一个更安静的问题。原文那张四层表的价值,不在于"这四层你都得上",而在于它给了你一张地图——只是地图上没标价签,这篇就是来补价签的。

所以我对这四层的实操建议特别朴素:别因为某层听起来高级就上,等到那层对应的痛真疼到你了再上,而且上最便宜的那一版。这就是 Agent 工程里的 YAGNI——没疼之前别加复杂度,你加的每一层都在给系统增加新的、更难发现的失败面。

我现在的默认动作是,每想加一层之前先问自己一句:现在不加,最坏会怎样?答不上来,就先不加。

最后留个问题,评论区扣个号就行:这四张账单,你被哪张坑得最狠?1 Harness 校验器合谋放行、2 多 Agent 上下文缝不上、3 记忆投毒、4 Instinct 把坏习惯学走。 我赌"3 记忆投毒"被点的最多——它坑起人来最不声不响,等你发现时已经被自信地错了好几回。要是你还踩过第五张账单,更欢迎补出来。