~/yomxxx/posts/2026-09-30-agent-adaptation-shifts-from-weights-to-code-long-form.mdx
Long-form

$ cat 当智能体学会自己改脚手架:从 Dots 与 Harness Learning 看智能的第二次外包

-- 8 min read ·

两个不相干的新闻,一个共同的方向

2026 年 9 月 29 日,OpenAI 在 DevDay 上发布 Dots:基于 GPT-6 Astra 的常驻智能体,拥有自己的云端计算机与浏览器,连接四千余个应用,在你睡觉时替你工作。同一天在 arXiv 上,一篇题为《Harness Learning Enables Generalizable Test-Time Adaptation》的论文(2609.35738)展示了另一件事:一个 4B 的提案者模型,学会根据执行反馈改写求解器外层的 Python 脚手架程序,在从未见过的任务上持续适应,全程不更新任何模型参数——而且这个 4B 模型的修订质量反超了生成它训练数据的 35B 教师模型。

一个是产品,一个是论文,表面上不相干。但把它们并排放着看,会浮现同一个结构性变化:智能的载体正在从参数空间迁移到程序空间,适应的单位正在从训练循环变成执行反馈。

这篇长文想讲清楚这个迁移的三个层面:它为什么在经济上成立,它在控制结构上意味着什么,以及它真实的边界在哪里。

第一层:算力经济学的根本转向

过去两年,模型能力的提升路径高度单一:更多数据、更多算力、更大的参数量。适应一个新任务的标准答案是微调——收集数据、训练、评估、部署,周期以天计,成本以 GPU 小时计。这条路的天花板不在算法,在经济学:训练成本随参数量线性以上增长,而每个新任务的边际收益递减。

Hugging Face 每天的论文清单可以佐证这种疲劳:大量的精力花在「如何用更少的算力得到接近的效果」——量化、蒸馏、稀疏化、提前退出。这些工作的共同假设是:适应必须发生在参数空间,我们只能在成本上做优化。

Harness learning 提供了另一条轴。它的实验设置值得细看:求解器(solver)是一个冻结的 4B 模型,提案者(proposer)是另一个经过 RL 训练的 4B 模型。面对新任务时,提案者读取任务描述、当前的脚手架程序、以及脚手架在反馈题集上的执行报告,然后产出「结构化编辑」——定位已有代码片段并提供替换。修订后的脚手架在评分题上重新执行,得分作为奖励信号。

关键结果:在 21 个从未见过的 Reasoning Gym 任务家族上,base 提案者平均 0.32 分,经过 GRPO 强化学习训练后达到 0.62 分——超过了 35B 教师模型手写修订的 0.56 分。在多跳问答上,十轮连续修订把 MuSiQue 的精确匹配从 0.15 提升到 0.27,RL 训练的提案者的最终成绩超过了八十个独立提案中选最优的 oracle 基线。

经济学含义很直接:适应的边际成本从「一次训练运行」降到「几次模型调用」。当任务分布长尾化(每个团队、每条业务线都有自己的场景),参数空间的适应在成本上无法覆盖长尾,程序空间的适应可以。

Dots 是这个逻辑的产品化。它的四个官方场景——监控反馈自动修 bug、范围变更自动修订发布材料、新数据自动重跑分析、访谈转录自动提炼——全部是「高频、低单次价值、结构化反馈」的任务,恰好是程序空间适应的成本甜区。

第二层:控制论的视角——脚手架是被重新发明的「控制器」

如果只看表面,harness learning 像是「让 AI 改提示词」的高级版。更准确的定位来自控制论。

一个智能体系统可以拆成两部分:被控对象(模型,给定输入产生输出)与控制器(脚手架:如何组织模型调用、何时调用什么工具、信息如何流动)。过去两年业界的实践——ReAct 循环、反思模式、规划-执行分离、多智能体编排——本质上都是在手工设计控制器。

手工设计控制器的瓶颈很明显:控制器的最优形态依赖于任务分布,而任务分布在变。于是出现了「控制器自动化」的整条产品线:从早期的提示词优化,到 DSPy 这样的程序化提示框架,再到用 LLM 自动编排工作流的各类 agent 框架。

Harness learning 与这条线的区别在于两点。第一,它把控制器修订形式化为元学习:harness 修订在数学结构上扮演权重更新在梯度适应中的角色,提案者是「学习如何学习」的那个外层循环。第二,它用 RL 训练提案者,奖励直接取自修订后脚手架的真实任务表现——不是「编辑看起来合理」,而是「执行得分真的提高」。

这个结构的妙处在于风险隔离。参数空间的适应(微调)修改的是黑盒权重:可能灾难性遗忘、可能引入不可解释的行为,回滚需要保存检查点。程序空间的适应修改的是可读代码:每次变更有清晰的 diff、有触发它的执行反馈作依据、可以单次回滚。适应性与可控性不再是跷跷板的两端。

Dots 的产品设计显然理解了这一点。它的权限体系——感知层(主动研究)只用只读工具自由活动,行动层(写操作)必须走 Custom Rules 的「允许/审批/阻止」三档——正是控制系统的经典做法:传感器带宽放大,执行器权限收紧。你可以在反馈频道里读到任何东西,但你改不了任何东西,除非经过审批。恶意指令注入即便混进感知层,也无法直接触达执行层。

第三层:组织形态——从「工具」到「同事」的语义跃迁

DevDay 发布清单里藏着一个容易被忽略的细节:Dots 的配套不是模型升级,而是一整套协作基础设施——ChatGPT Space(队友与 dot 共享知识)、团队任务(周期性工作委派给智能体执行)、@ChatGPT(在 Slack/Teams 频道直接协作,无需单独许可证)、Pages(人类与智能体共同编辑的文档)。

这套东西拼出来的形态是:智能体作为组织成员参与分工,而不是作为工具被调用。 当你可以把「每周项目更新」这种周期性任务委派给一个智能体团队任务,当队友可以在同一频道给它的产出补充上下文,当它有自己的身份、凭证与记忆——它与人类协作者的边界就只剩下了权限与责任。

这正是「第二次外包」的含义。第一次外包(过去两年)是把生成外包给模型:写代码、写文案、总结文档,人类逐条审批。第二次外包是把适应也外包出去:不再由人类工程师为每个新场景手工调整脚手架,而是让模型基于执行反馈自己调。第一次外包节省的是执行成本,第二次外包节省的是维护成本——而后者的规模效应更陡峭,因为场景数量远多于工程师数量。

边界:论文自己划的那条线

热捧之前,必须诚实对待这条技术路线的局限。Harness learning 论文的自我披露相当克制,值得逐条看。

任务边界:26 个 Reasoning Gym 任务家族中有 5 个被排除在主结果之外——华容道、字母重组、模运算网格这类算法密集型任务,脚手架式修订使不上力。适应机制救不了算法问题。

收益递减:Reasoning Gym 上的五轮修订,增益大部分来自第一轮。问答场景好一些(因为种子脚手架是可逐轮精化的检索工作流),但「持续改进」的斜率因任务而异,不是普适承诺。

组合脆弱性:这是最有工程含金量的观察。失败案例的分析显示,多数失败不是「算法想错了」,而是「算法正确但某个接口环节出错」——问题解析失败、工具通信失败、答案提取失败。生成的辅助组件只有在周边接口全部正常时才有用。程序空间越复杂,接口数量越多,单点失败概率乘积越大。这为「自修订脚手架」的规模设了一个真实的顶:修订可以做深(增加循环、增加跳数),但做宽(集成更多组件)时可靠性快速衰减。

Dots 侧的对应边界是复核成本。OpenAI 公告自己写明「Dots 仍可能出错,重要工作务必人工复核」。常驻智能体的失败模式与人类新手不同:它不累、不抱怨、产出速度恒定——意味着审批队列的膨胀速度也是恒定的。第一周每天三个 PR 很可爱,第三个月每天五十个 PR 时,复核就成了全职工作。自适应智能体的产能上限,最终由人类审批带宽决定。 这也许解释了为什么 DevDay 同时发布了那么多「团队共享权限」「自动化需审批」的治理设施——OpenAI 知道瓶颈在哪。

长期变量:程序空间的复利

把视线拉长,程序空间适应有一个参数空间没有的性质:可积累。

权重每次微调都是一次覆盖式更新,旧任务的适应痕迹会被新任务冲刷(灾难性遗忘)。程序库则可以按任务、按场景分支保存,git 历史天然记录每次修订的动机与效果。一个团队跑两年积累下来的脚手架仓库,是新团队无法用一次大额训练换到的资产——它编码的不是通用智能,而是这个团队特定工作流的适应历史。

论文作者把这个方向称为「continually learning agents」——把累积经验转化为可泛化改进的智能体。结合 Dots 式的常驻形态(持续产生执行反馈)与 harness 式的程序修订(持续把反馈转化为代码变更),一个自我强化的闭环在理论上是成立的:智能体工作得越多,脚手架库越厚;脚手架库越厚,同类任务的起点越高。

结语:把「智能」当成动词

1970 年代的软件危机把「程序」从手工艺品变成了工程对象;今天的智能体潮正在把「适应」从手工调参变成工程对象。Dots 与 harness learning 是同一场迁移的两端:一端把常驻智能体铺成基础设施,另一端把「学会修订程序」训练成可迁移的能力。

对从业者,务实的行动不是预测拐点,而是把底座换成可被修订的形态:脚手架用代码而非配置文件管理、执行反馈结构化落盘、权限按读写分离设计。程序空间的外包已经开始,你唯一的选择是自己的工作流以什么姿势进入这个空间——是带着版本历史与反馈信号的可修订资产,还是一堆谁也不敢动的提示词。

Frequently asked questions

harness learning 和微调模型有什么本质区别?
微调改变模型参数,适应凝结在权重里,难以解释与回滚;harness learning 冻结模型参数,只改写模型外层的可执行程序(组织模型调用、工具使用与信息流的脚手架)。修订过程是可读的代码变更,有清晰的执行反馈作为依据,可版本管理可回滚。论文将其形式化为对可执行程序的元学习——harness 修订扮演梯度更新在参数适应中的角色。
常驻智能体的主要风险是什么?
三类:一是权限面扩大,连接的应用越多攻击面越大,恶意指令注入可以借反馈渠道进入;二是复核成本转嫁,产出越多人工审批队列越长,常驻等于闲时也在消耗与犯错;三是行为漂移,规则与记忆随时间累积,早期可靠的 dot 可能因上下文污染逐渐偏离意图。对应手段是读写分离、审批分级与规则变更日志。
测试时适应为什么比训练更适合线上场景?
训练是离线批处理:收集数据、训练、评估、部署,周期以天计,成本以 GPU 小时计,且新任务必须等下一轮。测试时适应以执行反馈为信号,分钟级见效,不需要碰权重与训练基础设施。harness learning 实验显示训练出的 4B 提案者在未见任务上的修订质量反超 35B 教师模型,说明「学会适应」这件事本身可以规模化迁移。
这项技术什么时候不可靠?
论文自己列了边界:算法密集型任务(华容道、汉诺塔变体等五个家族)被排除在主结果外;Reasoning Gym 上五轮修订的增益大部分来自第一轮;生成的辅助组件只有在周边接口全部正常时才有效,多数失败是算法正确但解析、通信或提取环节出错。简单说:有清晰反馈信号的任务可靠,无信号或长链条组合任务仍不可靠。
普通团队现在应该做什么?
三件事:把智能体脚手架(提示词编排、工具调用逻辑)从配置文件升级为受版本管理的代码资产,这是未来自动修订的对象;把线上任务的执行反馈结构化落盘(成功、失败、成本),它们是测试时适应的训练信号;权限体系按读写分离设计,写操作一律审批。不需要急着训练自己的 proposer,先把可修订的底座准备好。
// next.txt ›

Some outbound links in this post are affiliate links — see disclosure.