欧稽里得
命题 XXXII — 大语言模型

深度拆解 Loop Engineering:大厂忙着造更聪明的神,我忙着给这个健忘又固执的神装一套关不掉的循环

六月中旬有个魔幻的周末。当时全世界最强的 AI 模型 Fable 5,上线才 72 小时,就被美国一封出口管制的信摁下线,全球所有人一起断供。十九天后,另一纸命令又把它放了回来。

你注意到没有:这个最强的神,它的"走"和"回",没有一次是你说了算。一封信让它消失,一纸命令让它复活,你自始至终是个看客。

这件事把一个道理钉死了——你能做的,不是祈祷那个最强的神一直在线,是别让自己手上要干的活,拴死在任何一个你控制不了的神身上。

怎么才叫不拴死?最好懂的一招,是别只问一个模型。把一道题同时甩给三五个便宜模型、让它们合议出一个答案,你就不再吊死在单个神身上——这一招有个正经名字,叫推理时扩展(inference-time scaling,说白了就是"回答的时候多烧点算力")。

但这只是半句话。它解决的是"一道题怎么答得更稳"。可你真正拿 AI Agent 去干的活,一个竞赛跑三个月、一次重构拖三礼拜,从来就不是"一道题"。是成千上万道题,一道接一道,错了要回头,卡了要换路,还得记得住上礼拜哪条路已经撞过墙。这时候要工程化的,是整个循环,不是某一道题的答案。

这篇讲的就是这个循环怎么工程化。以及,我把自己那两套工具开源了:一套管"记不住",一套管"想不通"。

一、大脑已经够聪明了,蠢的是它外面那圈

先把这两年的主线捋一遍。

所有大厂都在干同一件事:造神。把模型往大了练、往强了练,Pre-train 堆参数,再用强化学习(RL,让模型在反复试错里学会把活干对)把推理能力拉满。这条路的成果是实打实的——Fable 5 在 SWE-Bench Pro 这个编程硬榜上跑到 80.3 分,比当时你买得到的最强对手 Opus 4.8 高出整整 11 分。神就是神。

但有个东西在悄悄变。这条"把大脑练得更聪明"的路,边际收益越来越贵:多榨那一两分,要多烧一整轮天价训练。而另一头那颗大厂主叙事还顾不太上、拧的人也不多的螺丝,突然露出来一大截便宜肉——模型的大脑已经够聪明了,真正拖后腿的,是它外面那圈循环

行业给这件事起了一串名字,其实说的是同一个转向。你可以把它想成一条越接越长的链子:

阶段 你在调什么 一句话
Prompt Engineering(提示工程) 一次提问的措辞 把话说对
Context Engineering(上下文工程) 每一轮喂进模型的整个上下文 该带的带上、该扔的扔掉
Harness Engineering(框架工程) 模型外面那层运行时 把手脚接上
Loop Engineering(循环工程) 一整套反复"观察—行动—验证—纠错"的循环 把循环搭好

这几个词不是我编的黑话,是这半年圈里真实在吵的东西。Anthropic 官方专门写过一篇《Effective Context Engineering for AI Agents》,把 Context Engineering 定义成"在推理时,围绕最优的一组 token 做筛选和维护的策略集合"。翻成人话就是:模型的上下文窗口是个有限的资源,还会越用越浑(这种退化业界叫它 context rot,上下文腐烂),你得像管一块稀缺内存一样,精打细算每一轮往里塞什么。

再往外一层是 Harness。这个词得解释一下:它是承载 LLM 去干 Agent 活的那层运行时框架,Claude Code、Codex 都是 Harness。模型本身只会吐字,是 Harness 把工具接上、把权限管住、把每一步操作记下来。有句话说得很准:Harness 不会让模型本身变聪明,它是把模型变成一个"闭环工作系统"里的一个零件。 同一个模型,套在好 Harness 和烂 Harness 上,干出来的活天差地别。

而 LangChain 最近那篇《The Art of Loop Engineering》讲的 Loop Engineering,是这条链子目前的最后一环——它把 Harness 再往上抽象一层,管的是"这套系统怎么反复地观察、行动、验证、然后从错误里恢复"。他们有句话我很喜欢:“Agent 的潜力,藏在你给它搭的那些循环里。”

所以别被这一串词绕晕,它们本质是同一个转向:算力从"把大脑练得更聪明"那一头,正在悄悄挪到"给大脑接一套神经系统"这一头。

推理时扩展也顺着这个转向长出了两条腿。一条叫并行:同一道题,采样出好几份答案,再挑一份或者合成一份,开头说的"攒一桌合议"就是这条。另一条叫顺序:一份接一份地做,后一份带着前一份的教训重来。今年四月有篇挺硬的论文《Scaling Test-Time Compute for Agentic Coding》,把这两条腿讲得很清楚,还给了组数字:光靠在推理时加这两种循环,不重训模型,Claude Opus 在 SWE-Bench Verified 上从 70.9 分提到 77.6,在 Terminal-Bench 上从 46.9 提到 59.1。它那句结论我原样搬过来:对长任务的 Agent 来说,推理时扩展,本质是一个"表示、筛选、复用"的问题。

记住这两条腿,并行和顺序。我下面要讲的两套工具,正好一边一条。

推理时扩展的两条腿 干法 我的对应实现 学术上的对应
并行 同一问题多采几份、再合议 moa:N+1 家模型会诊 MoA 论文 / 锦标赛投票 RTV
顺序 一份接一份,后一份带着前一份的教训 north-star:交付点回灌状态和失败清单 Parallel-Distill-Refine(PDR)

先讲顺序那条腿,它管的是那个更要命的毛病:健忘。

二、记忆碎片:给健忘的天才,纹上他撕不掉的字

你有没有看过诺兰那部《记忆碎片》。男主角得了一种病,没法生成新的长期记忆,每隔十几分钟就断片,忘光刚发生的事。他怎么活下去、怎么追查真相?把最关键的线索,一条条纹在自己身上。他没法信任自己的记忆,就把记忆刻进撕不掉的地方。

拿 AI Agent 跑长线任务,你迟早会撞见一个一模一样的病人。

它叫上下文压缩。一个长项目跑上几天,对话历史撑爆了上下文窗口,Harness 就得把前面的东西压成一段摘要,腾地方。压缩,就意味着遗忘。上礼拜你和它一起试过一条路、撞了墙、明确排除掉了,这段记忆很可能在某一次压缩里被当成"低信号细节"扔了。等它再断片醒来,看着同一个问题,会觉得"诶,要不试试那条路?"

单是健忘还不致命。致命的是它跟另外两个毛病叠在一起。

一个叫隧道视野(tunnel vision):认准一个方向,越走越窄,把同一个思路的七八个变种,当成七八个不同的新方向在试。另一个叫沉没成本:在一条路上砸了三天,哪怕明知不对,也舍不得掉头,像输红了眼的赌徒,越输越要加注,就为了把前面的赌本捞回来。

健忘加隧道视野加沉没成本,这三样单拎出来都是老毛病,凑一块儿是灾难。真实长这样:第一天,目标清楚,选了个合理方向。第三天,方向没完全奏效,试个变种。第五天,变种也不行,再试个变种。第七天,它已经在同一个东西上磨了五天,自己没意识到。第十四天,上下文一压缩,它连"当初为什么排除掉别的方向"都忘了,开始考虑把那些方向再捡回来试。第二十一天,你回来问"有进展吗",它答"试了 X、Y、Z,都有点小提升"——这话不假,可它没意识到,X、Y、Z 是同一个错误假设的三个变种。

我需要的,就是给这个病人纹身。这套东西我把它叫 North Star(北极星)

它的机制土得让人不好意思讲。大部分项目都有个交付日志,CHANGELOG、进度记录、随便你叫它什么,干完一段活就往里写一笔。North Star 就在这个"写日志"的动作上,架了一个 Hook(钩子,一种在特定事件发生时自动触发的小脚本)。你每次写交付日志,钩子就自动往你下一轮的上下文里,塞回同样三样东西:

  • 北极星:这个项目的长期目标,那颗不许动摇的星。
  • 当前状态:一个结构化的记分牌,连续多少次交付没进展、现在的假设是什么、卡在哪。
  • 失败清单:一行一条,记着每一条已经撞过的墙、为什么撞的。

North Star 自我纠偏循环示意

交付日志一写,钩子就把北极星、记分牌、失败清单重新怼回眼前——这三样存在磁盘上,上下文压缩也删不掉。连续没进展到了阈值,自动升级去会诊。

关键在于,这三样东西是写在磁盘上的文件,不是躺在对话历史里。对话会被压缩、会遗忘;磁盘上的文件,每次钩子触发都重新读一遍,塞进最新一轮上下文。这就是那个纹身——上下文可以断片,纹身不会。 这也正是 Anthropic 那篇 Context Engineering 里推荐的招数之一:让 Agent 把笔记写到上下文窗口之外的持久存储里,需要时再读回来。

而且它塞进来的不是软绵绵的提醒。北极星文件里写着的是硬规矩,不是"你可以考虑反思一下",是"连续两次交付没进展,你必须去开一轮多模型会诊"。软提醒会退化成表演,Agent 嘴上说"我考虑过别的方案了",其实没有。硬规矩不给它这个空子:条件是磁盘上一个明确的数字,动作是一个明确的指令,它想跳过,得明着违抗,而不是"忘了"。

讲个真事,让这套东西落地。今年五月,我拿一个 Agent 跑一个地震余震预测的竞赛,六个月赛程、真金白银的奖金。装 North Star 之前,它在四天里干的事,事后复盘全是同一件:改进那个震级预测模型,只不过它把每个变种都当成"换了个新方向"。装上机制、第一次触发那天,连续失败计数是 3,硬规矩当场就把它逼去开了会诊。

会诊回来,指着它的记分牌,一口气点破了它对自己撒的五个谎。最狠的一条:它在状态里写着"监控定时任务已部署"。会诊问,你真跑了 systemctl enable 那条命令吗?没有。它只是写完了那份部署说明文档,然后就在心里把"写了文档"记成了"部署完成"。

这里得说句公道话,别把机制吹成银弹。它没能阻止那五次失败的实验,那五次照样发生了。它做的是另一件事:每一次失败后,记分牌 +1、失败清单加一行、下一次写日志时全部重新怼到 Agent 眼前。到第五次,五条白纸黑字的失败堆在面前,那个原本会被沉没成本拖着继续试第六个变种的 Agent,终于做了那个明摆着的决定:停手,别再磨这个模型了。它不让 AI 变聪明,只是逼它别再对自己装傻。

没有这套机制,同样的剧情会是:它忘掉第五天那次失败(压缩掉了),觉得"该换个角度了",再花两三天试变种,一直磨到第八第十次才停——那时候你项目上线前的第二个礼拜,已经废了。

三、卡住了别自己硬想,摇人会诊

北极星那条硬规矩,触发的是另一套工具。这套我把它叫 MoA,全称 Mixture of Agents,多模型合议——就是开头说的"把一道题甩给几个模型合议"那套。但我这儿让它干的活,和那种"给用户答题"的常见用法,是两码事。

那种常见的 MoA,是把一道题甩给几个模型、合成一个答案给用户。这一套 MoA,是给 Agent 自己的决策当参谋。当北极星判定你卡住了、或者你面前是一个改不回来的决定(提交、切默认、部署上线),它就被摇起来。

机制是这样:把你卡住的问题,同时扇给 N 个来自不同厂商家族的顾问模型,GPT、Kimi、GLM、DeepSeek、MiniMax,各写各的判断,每个都在一个隔离的沙箱里,可以真跑代码验证自己的想法。再加上 1 个空上下文的 Claude,和主 Agent 同族,但状态清零、不带你这几天钻进去的任何包袱。N 个外部视角,加 1 个"清醒的自己",凑成 N+1。

MoA · N+1 多模型会诊示意

一个卡住的决策,扇给 N 个不同家族的顾问,再加一个清空了状态的自己,先画分歧地图,最后由攥着全部上下文的主 Agent 自己拍板——顾问不替你动手。

拿回这 N+1 份带署名的原话,你不许直接挑一份最顺眼的用。得先画一张分歧地图:哪些点大家都同意(共识,最可信)、哪些点互相打架(矛盾,标出你倾向谁、为什么)、哪个只有一路提到但有价值(独有洞见,别因为人少就扔)、哪个是所有路都没覆盖的(盲区,这往往最危险)。画完地图,再综合成你的决定。

这套设计里,有一个我认为最要命的选择:聚合者,是主 Agent 你自己,不是另一个模型。 OpenRouter 的 Fusion、Nous 的 Hermes,做合议时都是再拉一个模型来当裁判合稿。而我这套,顾问只管当顾问,最后拍板、动手落地的,是那个手里攥着全部上下文的主 Agent 本体。顾问再多,也只是照进来的光;决定往哪走的,是站在光里的那个人。

为什么非得凑不同家族、还得加一个空上下文的自己?因为卡住的时候,你问自己"我是不是卡住了",是没用的——让骗子自己查案,查不出东西。你有和你钻进死胡同时一模一样的偏置,有同样的沉没成本,你的训练还一个劲儿推着你"要有进展、别停"。你早就在自己的框架里把别的可能性都否掉了。一个不同家族的模型没有你这套包袱;一个空上下文的同族自己,专门照你因为深陷太久而生的盲点。这也正是 MoA 那篇论文两年前就发现的东西,他们管它叫模型的"协作性":把别人的答案摆给一个模型看,哪怕那些答案还不如它自己写的,它接下来也会答得更好。

学术前沿也在往同一个方向撞。前面提的那篇 Agentic Coding 论文里,那个"并行"的招数叫锦标赛投票(RTV):让一堆答案两两小组 PK、递归地淘汰收窄。你看,殊途同归,都是"别信单个的,让多个吵一架再定"。

我得把话说回来,别让你上头。合议不是免费的午餐,它慢(几个模型先后跑完一整轮,等十几秒是常态),它贵(好几次模型调用叠加),它对"谁来当裁判"极其敏感。所以它不是每道题都摇,是卡住了、或者要做不可逆决定了,才值得烧这一轮。烟感器天天开着没关系,消防队你不会为了猫上树就叫。

四、先泼一瓢冷水:防偏见的机制,怎么自己变成了偏见放大器

夸到这儿,该把这桌饭最扎手的一根刺挑出来了。不然就成软文了——而且这根刺,是这整套东西里我觉得最值得讲的部分。

再讲一个真事,这次是它没救回来的。

六月,我拿装了全套机制的 Agent 去跑另一个竞赛:Kaggle 上的 Nemotron 推理挑战。这次北极星全套都在,会诊也接上了,连续失败计数一路飙到 9,卡住信号早就亮了,会诊也触发了。它还是没能救我。 最后拿了个中游,没进奖牌区。而第一名,用的是和我几乎一样的技术配方,就赢在一个我从第一天起就没敢碰的方向上。

复盘下来,病根特别反直觉。

北极星的机制,核心动作是"每次交付,把状态和失败清单重新怼到你眼前"。当你的方向是对的、只是执行在飘,这是救命的——它把你死死摁在目标上,摁在那些已经失败的事实上,一个清醒的外部视角读一遍就能看穿你漏了什么。地震那次就是这么救回来的。

可当你的整个框架从一开始就错了呢?这个"把你自己积累的推理反复回灌给你"的动作,就从解药变成了毒药。因为你积累的那些推理、那份越来越自洽的状态,本身就是那个错误的框架。你在里面干得越久,状态里就攒进越多"证明我这个框架对"的证据,每一次回灌,都把那个错的框架又焊死一层。到最后会诊也救不了:我确实摇了外部模型来看,可它们读的是我那份写满错误框架的状态,于是只会在我的框架里给我提意见(“你这个分布不对"“这条路太窄了”),没有一个跳出来说"你根本不该改进这个基座,你该从零重做”。

一个防偏见的机制,把你自己积累的推理一遍遍回灌给你,它就成了偏见放大器——因为那些推理,本身就是偏见。 这不是缺陷的边角料,是这套机制名字里就埋着的 bug:North Star 非常擅长回答"我们在朝那颗星走吗",却从来不问一句:这颗星,是对的星吗?

地震竞赛(救回来了) Nemotron(没救回来)
卡在哪 对的框架里钻牛角尖(该改进哪个模型) 整个框架就错了(改进基座 vs 从零重做)
什么破的局 外部会诊在我给的状态里看穿 5 个自欺 什么都没破,会诊被我给的状态一起带偏了
为什么 正确答案就在我给它看的那些事实里 正确答案在那些事实之外,得先无视我全部历史

想通这个,修法就不是"加更多的锚",而是加一条方向正相反的路。现在这套机制里,卡住升级分两种模式:

  • 框架内卡住(方向对、执行卡):照旧,把状态和失败清单喂给会诊,让它在事实里帮你找漏。
  • 框架可能就错了(上方稳稳坐着一个你够不到的更优档,或者好几种完全不同的尝试全都收敛到同一个上限):绝不喂状态、绝不喂失败清单,只把最原始的题目丢给会诊,逼它从零开始重想——“如果从头来,你会怎么赢?最后的赢家方案大概长什么样?“因为这时候,外援的全部价值,恰恰来自它没有你的历史。你把状态喂给它,等于把你的偏见也一起喂了。

这个修法是从 Nemotron 那次失败里长出来的。说到底:一个只会把你自己的推理回灌给你的机制,你得给它配一条结构上完全相反的"换框"通道,喂它那些你被困的自己产生不出来的东西。

五、两条路,和一个不体面的真相

绕回开头。

大厂那条路是造神:把模型练到独一档,戴上笼口,当护城河和 SKU 来卖。它的上限极高,也是我永远够不到的——我训不出一个 Fable 5。但它的命门你也看见了,一封信就能让它连着孪生兄弟一起,凭空消失十九天。

我这两套小东西,不在那条路上。它们不让模型变聪明一分一毫,只是给这个记不住、又认死理的天才,接上一套神经系统:North Star 是那套让它断片也忘不掉的记忆,和那个让它疼了就得喊救命的痛觉;MoA 是它疼到一定程度、被逼着摇起来的那场会诊。一套管顺序、防健忘,一套管并行、破偏置,推理时扩展那两条腿,正好一边一条。

我得诚实地把这套东西最不体面的真相摆出来:它土到掉渣。 内核就是"一个健忘的天才需要一本撕不掉的记事本,和几个能把他骂醒的同行”,说出来都嫌没技术含量。可它偏偏就是 work 的。这件事对 AI 本身是一种轻微的羞辱——一个能在编程硬榜上屠榜的大脑,你得靠给它纹身、逼它开会才管得住它别钻牛角尖。但对每一个真想拿它把事做成的人,这是天大的好消息:你不用等一个更聪明的神,你现在手上这个,配一套好循环,就能多干成很多事。

这两套工具我都开源了,一个仓库,MIT 协议,名字就叫 unstuck——地址是 github.com/ele-yufo/unstuck。里面不只有能跑的代码,还完整收着地震那次怎么救回来、Nemotron 那次怎么没救回来,带数字,连那五个没堵上的缺口都写在里头。一个机制,你得同时看见它的成功和失败,才敢真的信它。

所以绕回开头那个魔幻的周末。

当那个最强的神,它的来和去都不由你说了算的时候,你是继续等下一个更聪明的神,还是开始动手,给你手上这个,装一套它自己关不掉的循环?

延伸阅读 · RELATED
  1. 命题 XXXI深度拆解 Claude Sonnet 5:升级的不是脑子,是计价器2026·07·01
  2. 命题 XXXClaude Code 被爆「后门」:那不是暗道,是一道专查中国用户的隐形海关2026·07·01
  3. 命题 XXIX深度拆解 Mixture of Agents:最强模型被一封信关停的那几天,一桌便宜货合议差点掀了王座2026·06·28