论文链接:Same Model, Different Harness: Different Coding-Agent Results (arXiv:2608.26218) 发表时间:2026年8月26日 机构:Sydney Lewis(独立作者,论文未标注机构;Yuj 为作者自建的编码 Agent harness)——独立研究 领域标签:cs.AI,Agent 基础设施 / 评测方法学

一、论文背景

1.1 什么是 Harness,为什么它重要

编码 Agent(coding agent) 从一个 issue 和一个代码仓库出发:搜索相关代码、打开文件、跑测试、做修改、再测试。每一步都留下更多文本——命令、输出、错误、模型自己的回复。Harness(挽具/运行架) 是包裹模型的外层系统:它决定模型每一步看到什么(上下文视图管理)、能用哪些工具、工作如何继续(停滞检测、命令防护、预算控制)。

一个类比:模型是马,harness 是挽具加马车——同样的马,挽具松紧、车厢布局、路线规划不同,跑出来的成绩完全不同。但业界习惯只报马的名字。

1.2 被忽视的问题:上下文窗口是工作空间,不是档案室

在大代码库上,一次调查就可能产生完整文件、大段搜索结果、失败命令、冗长测试日志,全部争夺同一个有限的上下文窗口。当前默认做法(控制组):把历史按时间顺序组成一个不断增长的 transcript,塞满窗口就停——即使补丁还没写完。论文点出关键概念错位:窗口是模型下一步决策的工作空间,不是所有已发生事情的永久档案。一个大文件的早期读取可能占掉后面急需的空间。

1.3 研究问题

固定模型与任务,只改 harness 配置,编码成果会变吗?这不是猎奇问题——如果会变,那么所有「只报模型名」的编码评测都在测一个未定义的混合物。

二、论文定位和关联工作

这篇论文在文献姿态上很特别:作者明确声明「参考文献只标识所用模型、基准、软件与报告,不构成智识谱系;不对单项 treatment 机制主张任何新颖性」。贡献是作为整体的 treatment 包 + 配对证据。

与之相邻的研究线:① 上下文压缩/摘要工作(模型写摘要、检索式视图)——论文明确不与之对比,机械规则是保守下界;② 编码 Agent 评测方法学(SWE-bench 系列的 harness 敏感性讨论)——本文提供了第一个系统的单变量配对证据;③ 智能体记忆管理——本文的「保留完整记录、只缩工作视图」是其中最简单的一档。

定位结论:这是一篇方法学论文而非机制创新论文。它把「harness 是求解器的一部分」这个直觉变成了可复现、可检验的实验事实。

三、问题定义

给定:同一模型权重、同一任务集、同一上下文容量、同一运行协议。

对比两种 harness 配置:

  • 控制组(control):完整时间序 transcript,每次调用都全量呈现,塞满窗口即停。
  • 处理组(treatment):保留完整记录,但模型视图按固定规则机械缩短旧工具结果;检测器发现重复/停滞模式时注入固定干预;外加少量命令防护。

测量:完全解决数与平均任务 F2PF(fail-to-pass 分数——补丁让多少「补丁前失败、补丁后应通过」的测试通过,例如 10 个目标测试修好 7 个则 F2PF=0.70,它记录全对/全错二值线之下的部分修复)。

统计推断:解决数用精确双侧 McNemar 检验;F2PF 差值用精确符号检验;仓库级敏感性分析用仓库自助法 95% 区间(20,000 次重采样)。配对内唯一差异是一个签入的配置包——这估计的是 treatment 包的总效应,不拆分单条规则的贡献。

四、问题解法

treatment 包由三个机械组件构成,全部无需额外模型调用:

4.1 半衰期工作视图规则

激活条件:估算的完整 prompt 达到窗口 50% 后。激活后按工具结果「年龄」(其后新到的工具结果数)分档截断:最新 4 条全保;年龄 4-7 保至多 4,096 字符;8-15 保 2,048;16-31 保 1,024;32-63 保 512;更老保 256。截断保留开头 + 省略标记 + 结尾;内存中的完整记录不动。名字来源:年龄每翻一档,字符上限减半——半衰期。

实测激活率(Qwen3.6 各压力组):Verified 20,480 窗口下 82.8% 的运行发生截断,首个截断轮次中位数第 10 轮,典型削减 45.2% 字符;Pro 49,152 窗口下 77.8% 激活、削减 64.4%。

4.2 记录式检测器与干预

检测器不读不重排 transcript,只看执行记录里的固定事实:同一命令重复且得到同样失败、同一错误连收多次、无编辑地反复重读同一材料。命中即注入固定干预(如「循环已检测……停止重复……换个方法」),模型继续工作,检测器继续观察——观察、响应、再观察的闭环。

4.3 命令防护

把测试命令放回预期形式、拦截禁止命令、防止超大 setup 输出霸占上下文。

4.4 实验基础设施

自建 Yuj harness;主模型 Qwen3.6-35B-A3B(llama.cpp 四比特 Q4_K_XL 权重、贪婪解码);三个基准:SWE-bench Verified(169 任务冻结队列)、SWE-bench Pro(316 任务阅读需求筛选队列)、FeatureBench(183 全部可运行任务)。先做了可信度检验:未治疗 Yuj 与 mini-SWE-agent v2.2.8 在 500 个 Verified 任务上结果一致率 87.6%(Cohen’s κ=0.66),支持以未治疗 Yuj 为控制组。

五、评估指标与实验证据

5.1 主结果:三个压力组全部大幅正向

Qwen3.6 紧/压窗口下的配对结果:

基准(窗口)F2PF C→T完全解决 C→T
Verified(20,480)28%→49%(+21.1pp,区间 [+14.1,+28.3])43→72(McNemar p<0.0001)
Pro(49,152)15%→33%31→72(p<0.0001)
FeatureBench(47,104)11%→20%2→3

三组 F2PF 配对符号检验均 p<0.0001。

5.2 压力消失时收益也消失(这是诚实而非弱点)

262,144-token 无约束窗口下,Verified 两臂几乎重合:F2PF 差 -0.3pp(区间 [-4.5,+3.9]),解决数 102 vs 101。Pro 也接近;FeatureBench 保留 F2PF 增益(23.9%→30.7%,任务级 p=0.00022,仓库级 p=0.0963)。且宽窗口下 treatment 每 turn 少服务 7.2% 的 prompt token——无害且略省。

5.3 跨模型迁移:冻结 treatment 包,四个模型全部正增益

同 169 任务、20,480 窗口、480 秒预算,不重调任何规则:

模型(架构)F2PF C→T解决数 C→T
Qwen3.6(DeltaNet/注意力 MoE)28%→49%(1.8×)43→72
Devstral(稠密 Transformer)17%→37%(2.1×)22→53(2.4×)
Nemotron(Mamba-2/注意力 MoE)12%→18%(1.5×)16→25
Qwen3.8(稠密 DeltaNet/注意力)20%→35%(1.7×)32→54

5.4 机制证据:阅读边界翻倍以上

阅读需求定义为首次源码修改前所需的 prompt token 数(由早先宽窗口控制运行测得),除以受压窗口表达为空间占比。阅读边界是一半运行会在读完前撞墙的需求点。三基准上 treatment 把边界从 0.71-0.97 推到 1.81-2.15——2.2 到 2.5 倍伸展,全部仓库级自助区间排除 1。

机制上还有一条硬证据:紧窗口下控制组大量任务「读着读着」耗尽上下文,而 treatment 在控制组撞限后继续工作(模型轮数 3,280→6,517)。F2PF 状态分布显示 treatment 显著降低「操作性零」占比,Verified 主要移向完全修复、FeatureBench 主要移向中间态。

5.5 需要记住的边界

论文自报四条:① 结果属于配置包整体,无组件消融(检测器响应的单独贡献是明确的后续实验);② 压力下 treatment 消耗更多算力(prompt token 37.8M→80.7M),非等算力比较——控制组提前撞墙少干活本身就是 treatment 效应的一部分;③ 每任务每臂一条贪婪轨迹,不测运行间方差;④ 未与模型摘要/检索式视图对比,机械规则只是保守下界。另有一个反直觉的鲁棒性证据:探索性调参(改激活点/保护条数)全部劣于冻结设置。

六、效果优势的根源解释

建立因果链:

链条一:视图与记录分离 → 新证据获得空间 → 工作不因撞墙而夭折。控制组的 transcript 是只增不减的档案,早年的大文件读取永久占据工作空间;treatment 把「模型看什么」与「记录存什么」解耦,旧工具结果按年龄指数衰减截断,新结果全量进入。机制变化:任务后期的新证据(错误日志、测试输出)不再被早期垃圾挤掉。直接体现在阅读边界 2.2-2.5 倍伸展与「控制组撞限后 treatment 仍在干活」(轮数翻倍)。

链条二:截断的代价被结构化摊薄 → 信息损失小于空间收益。截断保留头尾 + 省略标记,且按年龄指数衰减——越老的结果(越可能已被模型消化或已无关)削得越狠,越新的全保。单次截断只损失旧信息的一小部分,而换来的空间让模型能继续搜索/编辑/测试。F2PF 状态分布的移动(操作性零减少)说明这不是「少干活少出错」而是真的多修了行为。

链条三:检测器打断无效循环 → 停滞不再烧预算。停滞与上下文压力是两个独立死法:有空间也可能原地转圈。检测器只在记录中的固定事实(重复命令+同样失败)上触发、零 token 成本、响应固定——把「换个方法」这个外部提示注入循环。注意论文承认此组件无单独消融,其贡献包裹在包总效应里。

链条四:收益窗口条件性 → 解释 262k 下的消失。无约束窗口下控制组的档案室还没装满,视图管理自然无用武之地(-0.3pp 区间跨零);FeatureBench 仍受益可能因其任务本身阅读需求高。这个条件性反而是论文结论精确性的来源:harness 的杠杆在资源受限时最大——而现实部署恰恰经常是资源受限的。

七、必要知识反推

零基础复现这项工作所需的三层知识:

7.1 领域知识层

  • 编码 Agent 的真实工作流:搜索-读-改-测循环中每步产生什么文本、哪些是巨无霸(全文件 dump、宽 grep 结果、测试日志)——不知道这些就无法设计分档截断。
  • 上下文窗口的语义:工作空间 vs 档案的区分;阅读需求、撞墙率等测量概念的构造。

7.2 方法论知识层

  • 配对实验设计:同模型/同任务/同协议,唯一差异是一个签入配置包——这是把 harness 变成可控变量的关键一步。还要懂为什么配对符号检验适合 F2PF 方向、McNemar 适合二值解决数。
  • 预注册式的纪律:操作点在报告前冻结、探索性调参结果如实报告(且全部更差)、历史战役与当前包的版本差异在附录逐条声明。
  • 控制组可信度检验:先跑 500 任务与成熟 harness 对齐(87.6% 一致)再开实验。

7.3 工程知识层

  • 本地推理栈:llama.cpp 服务四比特权重、贪婪解码、无网络沙箱、sealed image 任务准备。
  • 可审计的机械规则实现:视图构建确定性、每次变更可直接审计、零额外模型调用。
  • 公开数据工程:task-outcomes.tsv 逐任务分子分母、provenance.json 记录配置哈希与代码身份。

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

8.1 模型 + harness = 被测求解器(评测方法学级)

核心思想:任何 Agent 评测,单报模型名不足以定义被测对象;harness 配置(视图构造、工具行为、运行控制)必须与模型一起被版本化、报告、对比。 论文证据:同一模型同任务,仅换配置包 F2PF 28%→49%、解决数 43→72;四个架构迥异的模型全部正增益(1.5×-2.1×)。 推广场景:① 企业选型编码 Agent 时要求供应商披露完整 harness 配置;② 学术基准排行榜增加 harness 字段;③ Agent 框架的「配置即代码」实践。

8.2 记录与视图分离(架构级)

核心思想:完整记录(供审计/回放)与工作视图(供模型决策)应该是两个东西;视图可以缩,记录永不丢。 论文证据:半衰期规则下视图中位削减 45-64% 字符而内存记录完整,trace/transcript 文件全量落盘。 推广场景:① 长程 Agent 的上下文管理(所有超过几小时的任务);② 人机协作系统的工作记忆设计;③ 数据库的物化视图思想在 Agent 上下文里的翻版。

8.3 按年龄指数衰减是信息价值的一阶近似(机制级)

核心思想:对话历史中工具结果的信息价值随年龄近似指数衰减——最新的要全保,老的保头尾即可;机械规则就能拿到大部分收益。 论文证据:最新 4 条全保、更老的按 4096→256 半衰期分档;阅读边界翻倍以上,宽窗口下无副作用。 推广场景:① 任何上下文压缩策略的默认基线(先试机械规则再上模型摘要);② 日志/监控系统的滚动摘要;③ 多轮对话产品的历史折叠。

8.4 杠杆在资源受限处最大(战略级)

核心思想:基础设施优化的收益分布不均匀——压力最大(窗口最小、任务最难)的地方收益最大;无约束条件下收益趋零。 论文证据:20,480 窗口 +21.1pp、43,008 窗口 +6.4pp、262,144 窗口 -0.3pp。 推广场景:① 端侧/成本敏感部署是 harness 优化的高价值场景;② 评测设计应显式报告资源压力水平;③ 技术选型时先问「我的约束在哪」。

8.5 零 token 的监督也有价值(工程级)

核心思想:harness 可以用纯规则的方式对运行状态做出反应(检测重复、注入提醒),不需要另一个模型——监督不必昂贵。 论文证据:检测器只看记录中的固定事实、零模型调用、规则预先冻结;同一模式必然同一响应。 推广场景:① Agent 产品的廉价护栏(循环检测、预算熔断);② 工作流系统的停滞告警;③ 人机界面的被动提醒设计。

8.6 独立研究者的方法论示范(科研文化级)

单作者、本地四比特权重、自建 harness、全部任务级结果与配置哈希公开、七页正文加详尽附录声明每处版本差异、明确列出四个「该测什么」的后续实验。在算力军备竞赛的时代,这篇论文示范了「好问题 + 严格设计 + 完整披露」的独立研究路径。