论文链接:arxiv.org/abs/2608.23953 代码仓库:研究对象 langchain-ai/deepagents、earendil-works/pi、deepseek-ai/deepseek-harness 发表时间:2026年8月 机构:南洋理工大学(新加坡,单人作者研究) 领域标签:cs.SE / 软件架构 / LLM Agent 基础设施


一、论文背景

1.1 什么是 Harness:把模型变成 Agent 的那层代码

大语言模型(LLM)本身只是一个"文本进、文本出"的大脑。要让它成为能自主完成长程任务的 Agent(智能体),需要一层外围代码来包装它:构建模型的上下文、中介它对工具的调用、驱动"思考-行动-观察"的运行循环、并在长程运行中持久化状态。这层代码就是 Harness(执行线束)——可以类比为"给大脑配上的身体与操作系统":模型负责思考,harness 负责让思考落地为行动。

Claude Code、Codex CLI、OpenHands 这些我们熟悉的编程 Agent 产品,本质都是"某个前沿模型 + 一套 harness"。模型相同、harness 不同,表现可能天差地别。

1.2 为什么要研究 harness 架构:约束瓶颈的转移

论文的出发点是一个越来越被业界承认的事实:在能力相当的前沿模型之间,harness 而非模型本身,往往主宰长程任务表现差异的大头。论文引用了 2026 年的一项量化研究:固定模型不变,仅更换 harness 就能让 Terminal-Bench 2 的 pass@1 移动数个百分点、让 SWE-bench Verified 移动最多 15 个点。这在软件工程里有个经典术语——约束瓶颈(binding constraint):木桶能装多少水取决于最短的板,如今最短的板已经是 harness。

如果 harness 是瓶颈,那么"harness 的架构正在走向何方"就不再是一个实现细节问题,而是一阶重要的研究问题。但此前没有人系统回答过:

  • 已有的源码级研究读的是编码 Agent 应用(13 个脚手架的静态分类),没有读 harness 层本身;
  • 已有的纵向研究量化的是发布速度与质量的关系,没有刻画演化产生的架构形态;
  • 收敛现象只被顺带提及,从未被当作中心论点检验。

1.3 本文的独特方法:把软件工程实证方法带进 harness 研究

作者(南洋理工单人作者)采用软件工程领域的解释性、理论构建型多案例研究方法:选定三个哲学立场刻意对立的开源 harness,钉死 commit 逐行阅读源码、做 commit 考古学追踪演化轨迹、在沙箱中复现缺陷并向上游提交 issue/PR 验证论断。这不是一篇提出新方法的论文,而是一篇给快速膨胀的 harness 生态画地图、找规律的实证研究——类似当年《The Architecture of Open Source Applications》系列对开源软件做的事。

二、论文定位和关联工作

2.1 研究谱系一:harness 作为研究对象

工作核心思想与本文的关键区别
Harness 综述(Meng et al. 2026)把 harness 形式化为六元组(执行循环/工具注册/上下文管理/状态存储/生命周期钩子/评估接口)建立了词汇表但不读实现,无比较性源码分析
Harness 工程阅读清单(RUCAIBox)策展该领域文献地图同上,不读代码
约束瓶颈研究(Zhang et al. 2026)量化证明 harness 是性能差异的主宰说明"为什么值得研究",不回答"架构走向何方"

2.2 研究谱系二:源码级分类学(最近邻)

Rombaut 2026 的《Inside the Scaffold》是最近邻:它钉死 commit 阅读 13 个编码 Agent 脚手架、按 12 个维度分类、证据锚定到文件行号。本文继承了它的方法论纪律(pinned commit、行级证据),但有三点本质差异:

  1. 对象不同:该研究显式排除了 deepagents(认为它"通用而非编码专用"),pi 和 dsh 更是从未出现在任何架构研究里——本文研究的恰是应用层之下的通用 harness 层;
  2. 时间维度不同:它只分析静态快照并明确放弃演化追踪,本文的中心证据恰是每个 harness 走过的轨迹;
  3. 框架不同:它把收敛当作偶然观察顺带报告,本文把收敛做成中心论点并检验其机制。

2.3 研究谱系三:自上而下的协议层

MCP 标准化工具调用、A2A 标准化智能体间消息、Autogenesis 协议更进一步规定提示/工具/环境/记忆都作为带版本、可追溯、可回滚的资源注册。这条路线自上而下地规定 harness 应该长什么样。本文反其道而行:自下而上地记录三个生产级 harness 实际长成了什么样。两者对照出一个惊人的不对称——协议层 prescriptions 的核心(可审计血缘),恰是三个 harness 全部缺失的维度。

2.4 本文定位结论

本文是首个以架构收敛为中心论点、以源码级证据为基础的 harness 层研究:填补"harness 层未被读过"(G1)、“架构轨迹未被刻画”(G2)、“收敛未被检验”(G3)三个空白。

三、问题定义

3.1 从具体现象到抽象问题

具体问题是模糊的:“三个 harness 的代码各是什么样?"——这只能得到三份产品说明书。作者把它抽象成一个可检验的社会学式问题:

在共享且不断增强的选择压力(长程自主运行)下,从对立设计哲学出发的 harness,是否会收敛到同一个架构形态?如果是,收敛的机制是什么?未收敛的维度在哪里?

这就像生物学中趋同演化(convergent evolution)的研究设计:鲨鱼(鱼类)、鱼龙(爬行动物)、海豚(哺乳动物)谱系完全不同,却在海洋这个选择压力下都演化出了流线型身体和鳍。如果三个对立哲学的 harness 也长出了相同"器官”,那说明这些器官是问题形状的属性,而非某个团队的偏好。

3.2 形式化

  • 给定:三个最大差异选取的开源 harness(deepagents/pi/dsh,钉死 commit)、预设的比较维度表(先于细读固定,防止事后拟合)、commit 历史、可复现的缺陷标本;
  • 求:RQ1 起点与轨迹(分歧)、RQ2 收敛形态与机制、RQ3 未收敛维度及解释;
  • 约束:证据必须锚定 file:line、可复现、可重查;不宣称三例独立收敛(dsh 复用 pi 需披露并分析处理)。

3.3 这个抽象的精妙之处

“literal replication”(逐字复制逻辑):前两案归纳出候选模型 → 第三案作为 held-out 检验——这正是机器学习里"训练集建模、测试集验证"的思路移植到质性研究。而"不宣称独立发明、把收敛分解为三种机制"的克制,让结论免于最常见的质性研究陷阱(把相关性夸大为独立发现)。

四、问题解法:三案例、五要素、三机制

4.1 三个对立的起点(RQ1)

deepagents(LangChain)pi(Earendil Works)dsh(DeepSeek)
哲学大而全:中间件全家桶极简主义:“最小可用 harness”一切皆插件
形态规划/文件系统/子agent/摘要/记忆/权限全是中间件,三阶段组装4 个工具、约300 token 基础提示、agent 包仅 2,368 行~230 个插件跑在服务定位器运行时上,连 agent 循环都是一行可替换配置
演化方向做减法:废弃自研基础提示、删除内置工具说明散文、把 todo 规划中间件降级为按模型选配做加法:循环外围长到 146,170 行十包,曾经拒绝的子agent/压缩/模型适配全部以数据形式回归复用:入场即接近中间态,provider 适配层直接依赖 pi 的包

一个漂亮的细节:pi 的循环文件仅 796 行、全程没有一个 try/catch——极简到"循环不会失败"的信仰;而 deepagents 的 commit 历史记录了它一步步减掉自研脚手架(“不再提供自研基础提示”),每一步都在向 pi 的立场移动。减法的与加法的相向而行。

4.2 收敛的中间形态:五要素(RQ2)

要素deepagentspidsh通俗类比
商品化循环不持有循环(委托 LangGraph)796 行循环文件515 行驱动器,本身是可换配置行发动机不再是大卖点,三家家家都有
仅追加可重放会话记录压缩保持为视图(弱)仅追加条目+寄存器(中)事件溯源+运行时断言"可见⇒已记录"(强)账本只能添账不能撕页
模型怪癖数据化profile 类层级compat 数据目录(约15个兼容 flag 服务单一格式)适配器配置+运行时能力解析把"各家模型脾气"写成资料卡而非 if 分支
上下文渐进披露技能索引(名/描述/路径)CLI 工具+README 按需读投影+每能力 token/KV 成本契约图书馆目录卡而非把整馆书塞进书包
显式扩展缝隙中间件/后端/profile 三轴事件总线+注册表服务定义三元组预留插座而非焊死

三个发现值得逐条咀嚼:

  1. 五要素在全部三列复现——尽管哲学对立,说明中间形态是问题的属性而非谱系的属性;
  2. 没有要素以相同代码复现——类层级、数据目录、运行时解析器是同一思想的三种序列化,说明收敛的是想法而非实现;
  3. 只有会话记录形成强度阶梯(视图 < 仅追加 < 事件溯源)而非并列簇,而这个阶梯恰好直指第 7 节的未收敛维度。

4.3 收敛机制的三分解

作者拒绝"独立发明"的廉价叙事,把收敛分解为:

  • 平行发现:append-only 记录,pi 源于崩溃恢复压力、deepagents 源于检查点成本压力——起点和压力都不同,殊途同归;
  • 扩散:AGENTS.md 约定靠模仿传播,两个项目彼此公开互知;
  • 字面复用:dsh 的通用 provider 适配器 llm-pi-ai 直接依赖 pi 的 @earendil-works/pi-ai 包,在树内自称"设计验证孪生"——一个团队直接采用另一个团队的已解决问题。

4.4 汇聚断层线:缺陷也收敛

作者在沙箱中独立复现了两个缺陷(deepagents 的路径归一化绕过、pi 的节流误判),并向两个上游提交了 issue/PR(一个文档修复被合并)。全部缺陷落在四条断层线上:

断层线机制 → 后果损失
S1 同步/异步漂移手写 async 孪生体的 guard 在 try 内外不一致 → 恢复时 KeyError 崩溃可恢复
S2 归一化信任间隙//secrets 与 /secrets 路径分量不相等而文件系统相等 → 删除拒绝/审批/路由检查全部 fail-open不可逆
S3 字符串匹配语义约25个正则决定错误含义 → 措辞一变,瞬时限流被误判为上下文溢出而触发破坏性压缩不可逆
S4 静默 vs 响亮失败未识别形状默认放行继续跑,而非停下跨切性质

关键洞察:四例中三例的损失不可逆(递归删除穿透拒绝规则、对话历史被压缩覆盖)。教训直白——昂贵的东西恰好是自主系统无法走回头路的操作,所以每个自动化破坏性动作都应被记录、且尽量可逆。

4.5 唯一零收敛维度:外部可验证性(RQ3)

论文给出一个"可验证性阶梯":无持久记录 → 检查点(deepagents:为恢复而非证据存在,恢复时还会改写历史)→ 仅追加会话文件(pi:仍是进程私有的可变文件)→ 运行时可重构(dsh:最高,但文档自己承认 ctx.tools.restrict() 是"可见性组合而非权限边界")→ 外部可验证的防篡改记录(空缺)→ 域溯源(空缺)。

三家全部止步于"外部可验证线"之下。作者解读:这不是疏忽而是预测性缺口——三家的受众都是"终端前的开发者",这个受众不需要第三方可验证性,所以收敛在此停止;而协议层(Autogenesis 等)自上而下规定的恰是这个。下一个 harness 的差异化轴,就在这里。

五、评估指标与实验证据

作为定性研究,本文没有 benchmark 分数,其"实验设计"是围绕可信度构建的证据体系。理解这套设计才能理解结论为什么站得住。

5.1 量化锚点(可复核的硬数字)

证据数值支撑的论点
pi agent 包 / 循环文件行数2,368 / 796 行极简哲学的可验证性;循环无 try/catch
pi 外围代码146,170 行、十包“加法"轨迹的体量
pi compat 目录2,998 行生成器、约15个兼容 flag/单一格式模型怪癖数据化的深度
dsh 驱动器515 行循环本身是配置行的字面证据
dsh 插件数~230 个插件绝对主义
deepagents PR #4859/#4929删除内置工具散文、移除 todo 中间件减法轨迹的 commit 证据
dsh 的 llm-pi-ai直接依赖 pi 的包字面复用的字面证据
复现缺陷2 个沙箱复现 + 1 个上游合并修复 + 1 个 filed issue论断获上游确认

5.2 为什么这套设计能证明论点

  1. 先验维度防拟合:比较维度表在细读之前固定(并尽量对齐最近邻研究的 12 维),防止"先看数据再造框架”;
  2. pinned commit + file:line:所有论断可在钉死的修订版上一致重查;
  3. literal replication:deepagents+pi 归纳模型 → dsh 作 held-out 检验,模拟"训练/测试分离";
  4. 复现与上游确认:缺陷不是纸面推断而是沙箱跑出来的,其中一个还被上游确认合并——外部校验;
  5. 诚实的局限性披露:明确说明 N=3、dsh 读得较浅(文档级论断已标注)、五要素是从两个奠基案例中归纳的(构造效度风险已声明)、作者自披露可验证性维度与本人研究兴趣相关。

这不是"跑分式"证明,而是让每个断言都可被任何人复核的证明方式——与论文本身主张的可验证性形成微妙互文。

六、效果优势的根源解释

本文的"效果"是论证质量而非跑分:为什么这套三案例研究能得出可信的收敛结论?根源在三条机制设计。

因果链一:最大差异选取 → 收敛信号的纯度。 如果选三个互相模仿的 harness,发现相同要素毫无信息量。选三个哲学、组织形态(风投支持的框架公司/两位独立工程师/前沿实验室)、语言(Python/TypeScript)都对立的案例,相同要素的出现才可归因于共享选择压力而非同源。这是实验设计里"控制混淆变量"的质性版本。

因果链二:轨迹证据 → 因果方向。 静态快照只能说"它们现在像",commit 考古学才能说"它们从不像变得像"——deepagents 的减法(废弃自研提示/删中间件)与 pi 的加法(拒绝的东西以数据回归)方向相反、终点相同,“相向而行"的图景只有轨迹证据能画出。这把相关性升级成了有方向性的演化证据。

因果链三:机制分解 → 结论免疫"抄袭"质疑。 收敛研究最容易被质疑"它们只是互相抄”。作者不回避反而主动分解:平行发现(不同压力源头)、扩散(公开约定模仿)、字面复用(依赖包)三种机制各自成立、互不削弱论点——因为论点不是"独立发明",而是"相同形状在共享压力下反复出现"。无论哪种机制,都支持"这些形状是已解决的"这一结论。dsh 复用 pi 恰是论文自己推荐的工程动作(“采用它,别维护你自己的版本”)在项目之间的现场演示。

反事实推理:如果去掉"先验维度"设计,研究者可以在细读后挑五个"恰好都存在"的要素拼成模型——结论会退化为不可证伪的叙事。如果去掉 held-out 检验(第三案例),五要素模型只是两案归纳的假设。两者共同把"讲得通的故事"变成"可被否证又未被否证的模型"。

七、必要知识反推

假设一个完全没有背景的人要完成这项研究,他最少需要知道什么?

7.1 领域知识层

  • Harness 的构成与运作:执行循环、工具中介、上下文管理、状态持久化各是什么、在代码里长什么样——不能读懂这几个部件就无法做任何行级判断;
  • 三大产品的设计哲学谱系:LangChain 式中间件栈、极简主义、插件化运行时各自的拥趸与理由——否则"最大差异选取"无从下手;
  • 生产级 Agent 的真实痛点:崩溃恢复、上下文溢出、模型间的怪异差异——不知道这些压力,就无法识别哪些架构要素是对压力的回应。

7.2 方法论知识层

  • 多案例研究设计(Yin 的 Case Study Research、Runeson & Höst 的 SE 案例研究指南):literal replication、最大差异选取、构念效度/内部效度/外部效度威胁分析——这是整个研究骨架;
  • 开源软件架构研究传统(《The Architecture of Open Source Applications》):如何用叙事+行级证据写架构分析;
  • 语法推断/趋同演化式的类比框架:识别"形状反复出现意味着什么"的推理模式。

7.3 工程知识层

  • 读大型代码库的能力:在十数万行的 monorepo 里定位关键文件、读懂 LangGraph 中间件与 TypeScript 服务定位器;
  • commit 考古学:从 PR 标题、废弃说明、代码注释里重建演化叙事(如"harness 不再提供自研基础提示"这句话就是减法轨迹的直接物证);
  • 沙箱缺陷复现:构造 //secrets 绕过与节流误判的最小复现,并向上游提交合格的 issue/PR。

7.4 知识融合的关键节点

真正的化学反应发生在三个节点:(1)把 ML 的 held-out 验证逻辑嫁接到质性多案例研究(第三案例作检验集);(2)把生物学趋同演化的"问题形状决定形态"视角嫁接到软件架构比较(收敛 ⇒ 形状已解决);(3)把缺陷分析反转为架构证据(断层线聚集在不可逆操作上 ⇒ 指向可验证性缺口)。三个融合点分别支撑了 RQ2 的可信度、收敛的解读、以及 RQ3 的预测。

八、论文中可以提取的通用性灵感

灵感一:形状反复出现 = 问题已被解决,采用它而不是捍卫自己的版本。 论文证据:五要素在三个对立哲学下复现;dsh 直接依赖 pi 的包作为 provider 层。 推广场景:前端状态管理(各家库收敛到相似 API)、数据库(LSM 树成为写密集存储的标配)、微服务框架(sidecar 模式普及)、CI/CD 流水线设计、任何有多个独立实现竞争的技术领域——当对手和你在同一压力下长出相同器官,该器官就是"已付过三次学费的答案"。

灵感二:把"模型/环境的怪癖"存为数据,而非写成代码分支。 论文证据:pi 用 2,998 行生成器维护约 15 个兼容 flag 的怪癖目录,deepagents 用 profile 类、dsh 用运行时解析器——同一思想三种序列化;deepagents 的减法轨迹正是把" coached in code"的怪癖外置为数据。 推广场景:多供应商 API 对接(把各家接口差异做成配置表)、跨浏览器兼容(feature table 替代 UA 嗅探 if)、多租户系统定制、游戏引擎的平台适配层、任何"宿主差异多而稳定"的集成场景。

灵感三:历史只能追加,不能改写——可审计性来自不可变性。 论文证据:三家都学到"改写历史是陷阱",形成 view < append-only < event-sourced 的强度阶梯;三例缺陷中三例不可逆损失都涉及"覆写了不可恢复的东西"。 推广场景:数据库 WAL 与事件溯源、金融交易流水、协作文档的 operation log、实验记录管理(ML 实验追踪系统)、甚至个人知识管理——所有需要"事后说清楚当时发生了什么"的系统,append-only 都是底线设计。

灵感四:贵的东西恰好是不可逆的操作——把工程预算花在"不能走回头路"的地方。 论文证据:四条断层线中三条的损失是不可逆的(递归删除、历史覆盖),唯一可恢复的只是崩溃。 推广场景:安全工程(不可逆操作的二次确认与审计优先级最高)、数据库运维(DROP TABLE 类操作的事前备份纪律)、产品发布(不可撤回动作的灰度机制)、自动化交易(熔断器放在清算前而非清算后)。

灵感五:预测一个领域的下一步,看"全体参与者都缺什么、而局外人正在呼吁什么"。 论文证据:外部可验证性在三家全部缺位,但协议层提案(Autogenesis)把它放在中心——自上而下的需求与自下而上的空缺之间的不对称,是预测性缺口。 推广场景:前端框架演进(类型安全曾是缺口+TC39 在推进)、AI 安全(对齐研究的呼声与产品现状)、隐私计算法规与工程实践的落差、电动车充电协议——凡是"论文在规定、产业没实现"的维度,就是下一个竞争轴。

灵感六:诚实地分解"收敛"这类强结论,比宣称独立发现更有说服力。 论文证据:作者主动披露 dsh 复用 pi、主动分解三种收敛机制、主动标注自己研究兴趣与结论维度的相关性。 推广场景:任何实证研究写作(竞争性解释的预先排除)、投资尽调(把"巧合"与"抄袭"与"必然"分开评估)、技术选型报告(相似方案的出现是独立演化还是同一来源辐射)。

附录:一句话总结

三个从对立哲学出发的 harness 相向而行,汇聚成"商品化循环 + append-only 账本 + 怪癖数据化 + 渐进披露 + 显式缝隙"的中间形态——这些形状是问题付了三次学费买来的答案,直接采用;而它们全部缺失的外部可验证性,就是下一个 harness 将与之不同的地方。正如论文标题借《三国演义》开篇所言:分久必合,合久必分——收敛的尽头,新的分歧已在酝酿。