先给结论
HarnessDev 的核心发现不是“LLM 已经能稳定地自我改进”,而是:模型可以从弱 seed 构建出能工作的 harness,也能根据可见反馈做出局部有用的修改;但这些修改在隐藏任务上不稳定,并且强烈依赖执行 harness 的 runtime model。
Creation
六个 creator 都能把零分、无策略的 runnable seed 变成可执行系统;但 code 与 search/research 距离成熟人工系统仍大。
Evolution
在可见的 100 个 SWE-Pro 与 89 个 Terminal-Bench 反馈上常能升分;跨到 630 个隐藏 SWE-Pro 任务后,收益明显收缩。
Transfer
同一 harness 换一个 executor 可能升分,也可能崩溃;“能被另一个模型运行”不等于“能力可以迁移”。
本文页面只把论文真正测量到的内容写成事实;有关 procedural material、context optimizer 或更强 evaluator 的内容会明确标为 Research Extension。
标题、作者与研究定位
| 字段 | 核准信息 | 证据边界 |
|---|---|---|
| 准确标题 | HarnessDev: Can LLMs Create and Evolve Their Own Agent Harness? | 标题末尾有问号;用户原文中的 “Evolve” 不是标题拼写错误,准确标题如此。 |
| 作者 | Yuhao Wu, Jingyuan Zhang, Jiajun Shi, Xinping Lei, Qingshui Gu, Yuxuan Zhang, Zexuan Wang, Chen He, Chen Huang, Maojia Song, Zhiyuan Zeng, Shaowen Wang, Jinkai Liu, Yunfeng Shi, Jiaheng Liu, Shen Yan, Wenhao Huang, Ge Zhang, Wenxuan Zhang | arXiv record 列出 19 位作者;论文另标出 Wu、Zhang、Shi 为 core contributors。 |
| 机构 | ByteDance Seed;Singapore University of Technology and Design;Georgia Institute of Technology;M-A-P;TokenWave.AI | PDF 首页给出 1–5 组机构;页面不擅自推断每位作者的逐人对应关系。 |
| 时间与版本 | arXiv v1,2026-09-01 15:45:33 UTC 提交;PDF 首页标注 2026-09-02 | 这是动态的最新版本身份;当前 record 未显示 conference / journal 接收信息。 |
| Venue 状态 | arXiv technical report,分类 cs.SE(Software Engineering)与 cs.CL(Computation and Language) | 不能写成已发表会议论文;论文正文与项目页均按 benchmark/report 介绍。 |
这篇论文位于三篇 Self-Developing Agents 工作的 “SYSTEM” 层:Aspire 追问 vague goal 能否变成可训练的 target,S3Gym 追问 experience 能否被 self-test / self-judge / self-improve,HarnessDev 则追问这些能力是否能落到一个可运行、可维护、可复用的 system harness。三者的关系是项目页的研究框架,不是 HarnessDev 单独完成的联合实验。
为什么要把 harness 单独拿出来评测?
传统 benchmark 隐藏了最昂贵的一层工程
在 SWE-bench、GAIA、WebArena、τ-bench、AgentBench 等常见设置里,task、environment、scorer 与执行 scaffold 已经准备好,研究者只需在固定 harness 中比较模型。这样做适合控制变量,却把现实部署中决定“能否工作”的一整层排除在外:执行 loop、工具编排、context 管理、状态保存、失败恢复、生命周期与验证。
论文借用 forward-deployed engineer(FDE)的类比:部署到真实客户环境后,工程师要把模糊意图转成成功标准,补出可靠的反馈信号,并不断维护运行系统。HarnessDev 只聚焦其中第三层——模型能否建设并维护承载未来任务的 execution scaffold。
普通代码编辑
模型修改一个外部程序;目标行为通常已给定,局部测试可以验证修改是否有效。
失败多半是“这次程序没有按规格工作”。
自改 harness
模型修改的是未来每一次观察、计划、工具调用、恢复与停止的执行底座;一次错误修改可能改变所有后续任务。
难点是从 trace 识别结构瓶颈,并让修复成为可复用的 capability gain。
真正的 research gap
已有研究分别探索了 agent benchmark、自动 agent design、prompt/workflow/topology search、self-improving agent 与 harness optimization,但缺少一个统一协议同时测量:
- 从弱起点创造一个真正 runnable、persistent 的 harness;
- 让 creator 与 executor 分离,区分“模型适合自己”与“软件可迁移”;
- 在反馈集上逐版本演化,同时对隐藏任务做 post-freeze generalization;
- 审计机制是否真的在运行,而不是仅出现在代码或类名里;
- 同时报告 task capability 与 executor token cost。
被评测的不是答案,而是冻结后的系统
令 \(L_C\) 为 creator LLM,\(D\) 为它工作的 development environment,\(H\) 为最终的 runnable harness,\(L_E\) 为只在冻结之后运行下游任务的 executor LLM,\(x\) 为下游 task,\(y\) 为 authoritative task artifact,\(J\) 为固定 evaluator。论文的核心计算图是:
这里有一个决定性 freeze boundary:\(D\) 参与构建 \(H\),\(L_E\) 只在 \(H\) 冻结之后执行任务。否则,评测分数可能混入 development environment 的能力,无法回答“harness 本身是否有效”。
Harness 的六元表示
| 符号 | 职责 | 下游可见行为 |
|---|---|---|
| \(E\) · execution | 执行 loop、planning、调度、停止条件 | 决定何时向 LLM 请求下一步、何时继续、何时结束。 |
| \(T\) · tools | 工具接口、选择、输入输出约束、错误处理 | 把模型输出转成读写文件、shell、search 或其它受限 action。 |
| \(C\) · context | task、代码、日志、history、约束的组织与压缩 | 决定模型下一轮究竟看到哪些证据。 |
| \(S\) · state | 目标、假设、进度、尝试、失败与 artifact 状态 | 支持 resume、checkpoint 与跨操作的可追踪性。 |
| \(L\) · lifecycle | action 前后 hook、timeout、failure recovery、finalization | 让运行可以恢复、优雅终止,并避免“假成功”。 |
| \(V\) · verification | tests、checks、artifact validation、trajectory 记录 | 将“模型说完成了”与真实可评分结果分开。 |
六元表示是研究抽象,不要求最终代码必须有六个同名文件;关键是这些责任必须在可执行路径上真正发生。\(H\) 不是模型权重,也不是一次 prompt,而是把模型输出变成可靠 action 的 model-external software system。
Creation 与 Evolution 的变量
| 记号 | 含义 | 它在实验中如何出现 |
|---|---|---|
| \(H_{\mathrm{seed}}\) | 统一弱 seed | 有 CLI、配置、被动 primitive 与审计输出,但没有 task-solving policy。 |
| \(H_0\) | Evolution 的起始 harness | 由同一 creator 在 RQ1 Creation 中产出并冻结。 |
| \(H_t\) | 第 \(t\) 个冻结候选 | 每一个完整 feedback pair 评估后才进入 official trajectory。 |
| \(H_{\mathrm{dec}}\) | creator 声明的 final version | 只允许声明非 \(H_0\)、且完成两个 benchmark full evaluation 的 commit。 |
| \(P_t\) | Evolution 的 pair score | 等权平均 SWE-Pro-100 与 Terminal-Bench-89 的百分比分数。 |
这条公式只用于 Evolution 的可见 feedback pair;post-freeze 的 hidden-630 是单独的 SWE-Pro 分数,不能与 pair score 当作同一个指标。论文还报告 executor tokens,但 creator 修改 harness 所用的 tokens 不计入 execution cost。
两个阶段、四个领域、五个下游 benchmark
| 阶段 | 起点 | creator 可见信号 | 输出 / 评测 |
|---|---|---|---|
| Creation · RQ1 | \(H_{\mathrm{seed}}\) | task-family specification、1–3 个 development cases、简短设计教程、工具/权限约束 | 冻结 final harness \(H\),在 held-out downstream tasks 上 Self-Eval 与 Unified-Eval。 |
| Evolution · RQ2 | creator 自己的 RQ1 code harness \(H_0\) | 固定 100 个 SWE-Pro feedback tasks + 全部 89 个 Terminal-Bench 2.1 结果;最多 10 个 full pairs | 每个完整 commit 冻结并评估;最终由 creator 声明 \(H_{\mathrm{dec}}\),再对 630 个隐藏 SWE-Pro tasks 复测。 |
Creation 的下游覆盖
| 领域 | Benchmark | 实例数 | 主指标 | 作用 |
|---|---|---|---|---|
| Code | SWE-bench Pro public split | 731 | Task success | 真实 repo patch 是否通过评分。 |
| Code | Terminal-Bench 2.1 | 89 | Task success | 终端环境最终状态是否正确。 |
| Data / ML engineering | MLE-bench | 75 | Medal score / rate | 机器学习实验、提交文件与指标。 |
| Writing | EQ-Bench3 | 46 | Rubric score | LLM judge 的 rubric / pairwise 评分。 |
| Search / research | BrowseComp | 1,266 | Accuracy | 检索、证据组织与最终回答正确性。 |
五个 benchmark 合计 2,207 个 unique downstream instances。Evolution 使用的 100 个 SWE-Pro feedback tasks 与 630 个 held-out tasks 都来自 731 个 public-split instances,89 个 Terminal-Bench task 全部作为 feedback;因此 Evolution 的反馈集与 Creation 的总覆盖不是另加 189 个独立实例。
故意设置的弱 seed
提供:稳定的 contract floor
python -m harness ...
passive paths · files · search · process · LLM gateway
result.json · trajectory.jsonl · response.md · logs
刻意不提供:控制层
这个边界避免了两个极端:空仓库会把 CLI 与文件格式工作混进 harness design;成熟 agent 又会直接赠送 planning 与 verification policy。任何非零 Creation 分数都必须来自 creator 添加的 execution logic,而不是 seed 自带策略。
从写 harness 到冻结、执行、再演化
一次下游任务真正发生什么?
图中的顺序不是说所有 harness 都实现同一个 planner,而是描述论文要求的责任闭环:runtime LLM 做 task-semantic decision,harness 负责让它可执行、可观察、可恢复、可验证、可评分。
接口、artifact 与不可绕过的约束
六个可审计模块的参考接口
| 模块 | 接口责任 | 为什么重要 |
|---|---|---|
execution.py | run(task) → Resultstep(state, observation) → Action | 实现多轮 loop 与 action scheduling,而非 one-shot call。 |
tools.py | register(toolspec)call(name, **params) → Observation | 将工具 schema、输入输出与错误处理纳入可控边界。 |
context.py | build(task, history, state) → Promptcompress(messages) → Messages | 避免历史膨胀导致重要证据丢失。 |
state.py | save(checkpoint) · load(id) · resume() | 把目标、假设、失败与 artifact 从瞬时 context 变成持久状态。 |
lifecycle.py | beforeAction · afterAction · onFailure · onTimeout | 决定何时拦截、重试、优雅收尾或恢复。 |
evaluation.py | evaluate(result, criteria) → ScorerecordTrajectory(step) | 把验证与轨迹记录接入真实执行;不能只写装饰性模块。 |
CLI 与统一审计 envelope
至少支持三种入口
python -m harness run --task-json <task.json> --model-config <model.json> --output-dir <out>
python -m harness --task-json <task.json> --workdir <dir> --model-config <model.json> --output-dir <out>
python -m harness -p "<task>" --workdir <dir> --output-dir <out> --max-steps <n>
并接受 -p/--prompt、--workdir/--work-dir/--workspace、--max-steps/--max-turns、--output-dir/--output 别名。
每次运行至少留下
result.json(诚实 status、artifact paths、metrics、errors)
trajectory.jsonl(每行一个 action / observation / state / time / error event)
response.md、stdout.log、stderr.log 与 domain-specific final artifact。
Code 任务还需真实 patch / changed files;只生成 JSON 与 log 不算完成。
约束不是“请自觉”,而是被 scorer 路径隔离
creator-visible specification 禁止 hard-code task ID、答案、expected patch、file-name allowlist、private scorer、hidden tests / answers / patches、official evaluation feedback,也禁止换成自己的 provider-specific LLM access path。SWE-Pro 只根据 task workdir 中的真实 repository diff 给 credit;Terminal-Bench 只根据最终 environment state 给 credit。因此 harness 在 result.json 中自报 success 不会直接得分。
伦理与安全边界:Creation 与下游任务在 container 中运行,但作者明确说该边界主要为 reproducibility 配置,不等同于 containment;复用生成 harness 时应将其视作 untrusted code 并采取更强隔离。
怎样把“模型、harness、评测器”拆开?
Self-Eval 与 Unified-Eval
| 设置 | 固定什么 | 改变什么 | 回答的问题 |
|---|---|---|---|
| Self-Eval | 每个 creator 自己的 \(L_C\)、harness、scorer | \(L_E=L_C\),每个模型运行自己构建的 harness | 完整的 model–harness co-design 是否有用? |
| Unified-Eval | 所有生成 harness 共用 Gemini 3.1 Pro executor 与 evaluator | 只替换由不同 creator 产出的 \(H\) | harness 是 transferable software asset,还是只适配原 creator? |
| Human reference | 公开系统的 harness–model pair | 不是同一 executor 的 paired control | 与选定成熟系统的距离;不是绝对人类上限。 |
因此 Self-Eval 的高分混合了 executor 能力、harness 设计与二者兼容性;Unified-Eval 减少了 executor 差异,却不能消除 harness–model interaction。论文没有把外部 human row 当作第三个统一 executor。
Creation:每个 creator–benchmark 三次独立构建
六个 creator 与四个 domain / 五个 benchmark 组合下,RQ1 为每个 creator–benchmark pair 独立创建并评估三个 harness,报告 avg@3。隐藏任务、答案与人工实现不提供给 creator。每个完成的 harness 冻结后才进入 downstream evaluation,execution token 只计 \(L_E\) 在评测期的用量,创建代码的 token 不计入。
Evolution:full pair、probe 与 hidden-630
- 每条 lineage 从自己的 RQ1 code harness \(H_0\) 开始;controller 先提交 H0 在 100 个 SWE-Pro 与 89 个 Terminal-Bench 上的 baseline pair。
- 一个 official post-H0 candidate 必须以同一 commit 完成两个 full evaluation;任一 leg 未完成的 probe、partial、stopped 或 invalid instance 不进入官方 trajectory。
- 总预算为 10 个 post-H0 pairs;每个 pair 先 freeze commit,再异步运行两个 benchmark。每轮最多 2 个 probe,probe 永远是每个 benchmark 固定的前 5 个任务,只提供方向性信号。
- creator 读到可见反馈后自行判断诊断、编辑、是否提交、是否回滚、何时停止与选择哪个版本;controller 不替它做 accept/reject、best-version selection、failure attribution 或 summary。
- 所有 official versions 完成后,另行在 630 个与 feedback disjoint 的 SWE-Pro tasks 上评估;这些分数从不返回 creator,也不能影响编辑、停止或 final selection。
论文还规定了 liveness guard:反馈全部到达、仍有预算但 12 小时没有新 commit 或 submission 时发 idle notice;两次未回应后进入 declare-only,之后再等待 24 小时会 archive。它是复现实验控制器语义的一部分,不是模型能力指标。
Creation:模型能把弱 seed 变成什么?
实验设置
Creator LLM 为 Opus 4.8、GPT-5.5、Gemini 3.1 Pro、DeepSeek V4 Pro、Qwen 3.7 Max、Seed 2.0 Pro。除 GPT-5.5 使用 Codex 0.144.3 外,其余使用 Claude Code 2.1.177 作为 development environment。官方 API 或 OpenRouter 提供模型调用;每个创建结果独立运行三次。
柱状图仅可视化 Table 3 的 unweighted average:SWE-Pro、Terminal-Bench、EQ-Bench3、BrowseComp 四项的算术平均;MLE-bench 不并入该 Avg。
Table 3 · Self-Eval:creator 运行自己的 harness
| Creator | SWE-Pro score / M tokens | Terminal-2.1 score / M tokens | MLE-bench medal / M tokens | EQ-Bench3 score / M tokens | BrowseComp score / M tokens | Avg. |
|---|---|---|---|---|---|---|
| Opus 4.8 | 69.3 / 759.5 | 64.8 / 46.2 | 32.9 / 101.7 | 84.6 / 3.1 | 52.4 / 593.9 | 67.8 |
| GPT-5.5 | 32.8 / 325.6 | 52.1 / 12.2 | 19.1 / 29.3 | 83.0 / 4.9 | 52.6 / 313.5 | 55.1 |
| Gemini 3.1 Pro | 43.6 / 783.6 | 68.8 / 177.1 | 32.4 / 131.3 | 74.8 / 5.2 | 35.2 / 267.4 | 55.6 |
| DeepSeek V4 Pro | 28.9 / 739.7 | 35.6 / 35.2 | 19.6 / 208.4 | 75.4 / 4.9 | 40.9 / 1,449.9 | 45.2 |
| Qwen 3.7 Max | 33.5 / 421.9 | 41.3 / 19.3 | 3.1 / 42.9 | 68.7 / 4.3 | 32.3 / 130.9 | 44.0 |
| Seed 2.0 Pro | 10.8 / 454.4 | 6.0 / 23.0 | 5.3 / 557.1 | 71.1 / 9.0 | 3.2 / 610.2 | 22.8 |
| Human harness + paired model | 80.0* / — | 88.8* / — | 24.0 / — | 83.7 / 9.2 | 92.2* / — | 86.2 |
最强的自评 overall 是 Opus 4.8 的 67.8,仍低于选定 human-engineered system row 的 86.2。分领域看,Writing 接近 reference;MLE-bench 的 Opus 32.9 与 Gemini 32.4 高于外部 reference 24.0;EQ-Bench3 的 Opus 84.6 略高于 83.7;BrowseComp 的最佳 creator GPT-5.5 只有 52.6,对 92.2 的 gap 很大。
Table 4 · Unified-Eval:统一由 Gemini 3.1 Pro 执行
| Creator harness | SWE-Pro | Terminal-2.1 | MLE-bench | EQ-Bench3 | BrowseComp | Avg. |
|---|---|---|---|---|---|---|
| Opus 4.8 | 33.0‡ / 782.9 | 52.4 / 94.3 | 16.9 / 46.3 | 74.2 / 2.1 | 53.6‡ / 505.8 | 53.3‡ |
| GPT-5.5 | 27.8 / 383.9 | 49.4 / 24.3 | 16.0 / 80.5 | 46.5 / 4.9 | 55.4 / 177.8 | 44.8 |
| Gemini 3.1 Pro | 43.6 / 783.6 | 68.8 / 177.1 | 32.4 / 131.3 | 74.8 / 5.2 | 35.2 / 267.4 | 55.6 |
| DeepSeek V4 Pro | 29.2‡ / 492.4 | 38.2‡ / 26.8 | 9.8 / 125.5 | 72.9 / 5.0 | 54.8 / 362.8 | 48.8‡ |
| Qwen 3.7 Max | 41.3 / 1,253.3 | 48.6 / 81.9 | 16.0 / 44.0 | 71.5 / 2.5 | 49.9 / 133.4 | 52.8 |
| Seed 2.0 Pro | 15.6 / 786.8 | 13.1 / 79.0 | 13.3 / 1,717.5 | 73.1 / 44.9 | 17.3 / 398.4 | 29.8 |
换 executor 后排名明显移动:Qwen、Seed、DeepSeek 在若干 Data / Search 设置反而提升,而 Opus、GPT-5.5 更常在自己的 executor 下强。结论不是“Gemini 更好”,而是 harness 设计与 runtime model 存在兼容性。
实现形态与失败分布
- 18 个 Code artifacts 合计新增净 17,111 LOC,但代码体量不预测分数;Gemini 只增加 1,006 行,却得到最高 Terminal-Bench 68.8。
- 18/18 实现了显式 execution loop;tools、lifecycle control、verification 分别在 13/18、13/18、15/18 中完整。
- 状态管理最弱:11/18 定义了 State class,但只有 1 个暴露 state-saving interface,只有 1 个做 periodic checkpointing;26,679 条轨迹中没有观察到 checkpoint event。
- Data 任务中 2,325 次执行有 441 次产生 degenerate submission 且没有 harness 检出;验证“文件存在”远不等于验证“提交有意义”。77.8% 的失败 Data task 被归因于 harness defect。
Table 5 · RQ1 Code harness 的编辑规模
| Creator | Files add / change / delete | Total net LOC | Median / range per replica | SWE-Pro | Terminal-2.1 |
|---|---|---|---|---|---|
| Opus 4.8 | 19 / 7 / 16 | 2,470 | 698 / 656–1,116 | 69.3 | 64.8 |
| GPT-5.5 | 3 / 10 / 0 | 3,537 | 1,231 / 1,059–1,247 | 32.8 | 52.1 |
| Gemini 3.1 Pro | 4 / 4 / 0 | 1,006 | 324 / 270–412 | 43.6 | 68.8 |
| DeepSeek V4 Pro | 14 / 4 / 1 | 3,242 | 988 / 931–1,323 | 28.9 | 35.6 |
| Qwen 3.7 Max | 12 / 6 / 0 | 3,562 | 1,339 / 551–1,672 | 33.5 | 41.3 |
| Seed 2.0 Pro | 14 / 6 / 0 | 3,294 | 1,200 / 868–1,226 | 10.8 | 6.0 |
Table 5 的对照正好支持作者的 caution:LOC 不是能力代理变量;Gemini 以最少净增量取得最高 Terminal-Bench,但这只是本实验的描述性结果。
机制真的被调用了吗?
HarnessDev 的一个重要贡献是把“代码中声明了什么”和“正式运行时发生了什么”分开统计。Figure 5 的 normalized evidence density 不是分数、显著性或因果效果,而是机制进入主路径或触发于真实运行的证据密度。
| 观测层级 | Code harness 统计 | 应怎样读 |
|---|---|---|
| component instances | 108 个;72 trigger,18 partial evidence,18 never observed | 没有被观察到的 18 个全部属于 state / memory;类名存在不是 runtime evidence。 |
| 其它 Creation domain | Writing 有 587 个 features,其中 124 个 dead code;Data 有 36 个 dead mechanisms | 把机制写出来不等于它参与了执行,也不等于它有用。 |
| self-test vs score | self-test count 与 downstream score Spearman 仅 0.13–0.26,不显著 | 测试数量本身不是有效质量指标。 |
| revision calls vs score | revision calls 相关达到 0.57,\(p\le 0.0005\) | 更有价值的是读懂失败、做 targeted change、再验证,而不是堆测试数量。 |
跨 executor 的兼容性证据
可迁移的正例
Qwen harness 换到 Gemini 后,BrowseComp 从 32.3 到 49.9(+17.6),MLE-bench 从 3.1 到 16.0(+12.9)。原来的 executor 可能才是瓶颈。
过拟合的反例
Opus Code harness 的 Self-Eval SWE-Pro 为 69.3,换 Gemini 后降至 33.0;Opus Search 中 duplicate-query rate 从 10.1% 升到 88.2%,说明 dedup、review、termination 规则适配了原模型。
这也是为什么论文把“generated agent”定义为 \(H+L_E\),而不是把 harness 当作独立可排名的静态库:软件资产是否有用,取决于它与调用模型的 protocol、prompt、budget、tool schema 与 stopping rule 是否相容。
Evolution:局部修复能否变成稳定收益?
Table 6 · 可见反馈上涨,不等于隐藏任务上涨
| Setting / creator | Visible pair \(H_0\rightarrow H_{\mathrm{dec}}\) | Hidden-630 \(H_0\rightarrow H_{\mathrm{dec}}\) | Final gap |
|---|---|---|---|
| Self · Gemini 3.1 Pro | 59.9 → 68.7 (+8.8) | 48.89 → 51.59 (+2.70) | 0.00 |
| Self · Opus 4.8 | 71.1 → 74.1 (+3.0) | 63.02 → 67.46 (+4.44) | 1.59 |
| Self · Qwen 3.7 Max | 41.8 → 55.7 (+13.9) | 42.22 → 43.65 (+1.43) | 3.17 |
| Self · DeepSeek V4 Pro | 47.2 → 60.6 (+13.4) | 47.30 → 50.48 (+3.17) | 1.75 |
| Self · GPT-5.5 | 59.2 → 65.1 (+5.9) | 48.25 → 52.06 (+3.81) | 0.00 |
| Fixed Gemini · Opus 4.8 | 58.8 → 68.6 (+9.7) | 48.10 → 50.79 (+2.70) | 2.54 |
| Fixed Gemini · Qwen 3.7 Max | 62.1 → 63.2 (+1.1) | 49.52 → 48.41 (−1.11) | 1.11 |
| Fixed Gemini · DeepSeek V4 Pro | 47.3 → 53.8 (+6.5) | 43.02 → 40.63 (−2.38) | 3.02 |
| Fixed Gemini · GPT-5.5 | 56.6 → 59.1 (+2.4) | 42.22 → 31.90 (−10.32) | 16.51 |
五条 Self-runtime lineage 全部在 hidden-630 上比 H0 有提升,范围 +1.43 到 +4.44,均值 +3.11;固定 Gemini 的四条对照中只有 Opus 提升,其余三条回退。可见 feedback 与 hidden score 在 64 个 adjacent version switches 中只有 34 次同向(53.1%),9 个 creator-declared final versions 只有 2 个是 hidden set 上的最优版本。
Evolution 的稳定性与可归因性
switches 在两个 benchmark 都回退
只在一个 benchmark 回退
表面 gain 仍在 repeated-run noise band 内
有超出噪声带的明确正证据
没有可测变化
没有 executable code change
同一个 commit 的 pair score 约可波动 ±4.75 points,因此小幅分数变化不能仅凭 score 归因于代码修改。169 个新增 function / class 中,113 个从 entry point 可达,31 个只从 dead code 可达,25 个没有 caller。
Table 7 · 改了什么,而不是改了多少行
| Setting / creator | Official switches | H0 → Hdec cumulative diff | 主要编辑焦点 |
|---|---|---|---|
| Self · Gemini 3.1 Pro | 8 | 11 files, +692 / −38 | tool output、editing、timeouts、patch cleanup |
| Self · Opus 4.8 | 3 | 8 files, +450 / −18 | completion gate、self-review、process recovery |
| Self · Qwen 3.7 Max | 8 | 9 files, +1101 / −106 | empty-response / parse recovery、auto-submit checkpoints |
| Self · DeepSeek V4 Pro | 10 | 9 files, +1730 / −58 | completion logic、tool extensions、workspace pre-analysis |
| Self · GPT-5.5 | 7 | 4 files, +496 / −49 | final-state review gate、artifact tracking |
| Fixed Gemini · Opus | 4 | 3 files, +227 / −21 | pre-completion verification、scratch-file cleanup |
| Fixed Gemini · Qwen | 5 | 4 files, +219 / −96 | context、message-sanitizer rewrite |
| Fixed Gemini · DeepSeek | 9 | 8 files, +476 / −12 | message-protocol recovery、workspace discovery |
| Fixed Gemini · GPT-5.5 | 10 | 6 files, +297 / −34 | probes、branch rollback、final-state review |
9 条 lineage 共产生 73 个 official versions、64 个 adjacent version switches。64 个 switches 中,58 个改 execution / control flow,37 个改 tools,17 个改 lifecycle recovery,16 个改 context,只有 4 个改 state,没有一个修改 standalone verifier。Evolution 更像围绕 runtime feedback 的 local program search:删除代码与回滚同样重要。
最清楚的成功案例与反例
Opus:从“99 次报告成功”追到“48 次真的通过”
Opus 发现 100 个运行中有 99 个自报 success,但真实通过只有 48 个;它把差距追溯到 premature completion,并添加 completion check。这个修改在端到端验证后才进入有效反馈。
Qwen:message sanitizer 破坏了有效协议
一个看起来合理的 context / message 清理重写,反而破坏 Gemini 的有效 tool-result sequence。它说明“更干净的 context”并不自动等于更强的执行系统。
诊断仍是最弱环节:专用 trajectory interface 只被调用两次;不同 lineage 明确检查的 feedback cases 只覆盖 0.5%–40.2% 的 189 个 feedback tasks。某个 GPT-5.5 candidate 通过了全部 5 个 Terminal probe,但 full set 只得到 0.584。
论文图表应该怎样读?
由于单文件页面不直接复制 PDF 位图,下面采用基于原图 caption 与正文的结构化重绘;所有数值表格尽量保留论文原始数字。图示标明“非原图”,避免把重绘误当作作者的视觉排版。
Existing agent evaluation
HarnessDev
Declared in code
类、函数、配置、transient state 出现,只能给 partial weight。
Observed at runtime
机制进入 main path 或在 formal run 触发,才得到 full weight;仍不等于它有效。
Related work 的边界
论文将自身放在 Harness-Bench、Meta-Agent Challenge、HarnessOpt-Bench、Evo-Bench 与自动 agent design / harness evolution 工作之间。最接近的差异是:HarnessDev 把 from-scratch Creation 接到 Evolution,区分 creator–executor,记录 execution cost,并将每个冻结版本都放到 disjoint hidden set 上;但作者也承认 matched-search evaluation 仍是 future work。
复现边界:哪些已固定,哪些仍不可得?
这不是模型训练 benchmark
HarnessDev 不更新 creator 或 runtime LLM 的权重,也没有 optimizer、learning rate、batch size、epoch 或 fine-tuning loss。Creation / Evolution 的“学习”发生在 inference-time software development:\(L_C\) 通过 development environment 修改 harness source,commit 被 freeze,\(L_E\) 再在下游 task 上执行。可持久化的载体是 harness code、Git version、trajectory、feedback ledger 与最终 artifact,而不是新的 neural checkpoint。
所以论文中的 capability gain 应理解为 model-external learning / system engineering gain。作者明确不主张 heuristic harness learning 可以替代 parameter training;它测量的是模型能否建设与维护承载 future tasks 的 execution system。
Appendix B · Creator decoding 配置
| Creator | Development env | Temp. | Top-p | Top-k | Max output |
|---|---|---|---|---|---|
| Opus 4.8 | Claude Code 2.1.177 | 1.0 | provider default | default | 128,000 |
| GPT-5.5 | Codex 0.144.3 | default | default | — | 128,000 |
| Gemini 3.1 Pro | Claude Code 2.1.177 | 1.0 | 0.95 | 64 | 65,100 |
| DeepSeek V4 Pro | Claude Code 2.1.177 | 1.0 | 0.95 | — | 131,072 |
| Qwen 3.7 Max | Claude Code 2.1.177 | 0.6 | 0.95 | 20 | 65,536 |
| Seed 2.0 Pro | Claude Code 2.1.177 | 1.0 | 0.70 | — | 131,072 |
所有 creator 使用 high reasoning effort 与 streaming,output length 设为 endpoint maximum;“default”表示 provider 未暴露或论文未覆盖该参数,不应自行补成某个数值。
下游资源与 human reference
| 项目 | 论文给出的配置 / reference |
|---|---|
| MLE-bench runtime | 每 task 独立 container:1× NVIDIA A800-SXM4-80GB、14 vCPUs、227 GiB RAM;36,000 s wall-clock,其中 harness 34,200 s、grader reserve 1,800 s;500-step cap;数据下载/准备不计入 task clock。 |
| RQ2 code runtime | 500-step cap,7,200 s per task;100 SWE-Pro + 89 Terminal-Bench full pair。 |
| SWE-Pro reference | Public coding-agent setup + Claude Fable 5,80.0(外部公开结果,未在本实验重跑)。 |
| Terminal-Bench reference | OpenAI agent setup + GPT-5.6 Sol,88.8(外部公开结果)。 |
| MLE-bench reference | MLEvolve + Gemini 3.1,medal rate 24.0。 |
| EQ-Bench3 reference | Kimi Writer + Opus 4.8,rubric score 83.7。 |
| BrowseComp reference | OpenAI browsing stack + GPT-5.6 Sol,92.2(外部公开结果)。 |
Representative system prompts
附录 E 给出了两套代表性 system prompt,但删去了 task-specific prompt 与 auxiliary workspace documents。RQ1 的共同 prompt 要求模型作为 agent harness engineer,交付 executable system code,而不是 architecture description、README、plan 或未被调用的 helper modules;随后定义 runtime LLM、generated harness、generated agent、creator、metaharness,并要求实现 \(E,T,C,S,L,V\) 的行为责任。RQ2 prompt 在此基础上改为持续改进已存在的 runnable code-agent harness,并明确 controller 不替 creator 做 best-version selection、rollback、failure attribution 或 feedback summarization。
页面不伪造未公开的完整 task prompt。论文明确说任务相关 prompt 与 auxiliary workspace 文档被 omitted;因此此处只整理原文公开的 system-level contract。
若要复现实验,最小的 honest-status 语义是什么?
success:有合理证据最终 artifact 完成任务;partial:有真实进展但验证不足、依赖受阻或结果不确定;failed:没有有效 artifact 且记录失败原因。不能把 plan、解释、模板、空 artifact 或模型自报状态写成 success。
官方代码仓库与 release 状态
截至当前 arXiv v1 的 record 与官方项目页,本页未发现作者在页面上链接一个可直接复现实验的公开 HarnessDev GitHub repository。附录 C.1 承诺 release reference seed implementation、audit script 与 held-out task splits;在它们实际公开前,不应声称本地已完成 benchmark reproduction。论文正文与附录本身是当前可核验的一手材料。
MathJax 3 browser-safe smoke test
页面统一使用 MathJax 3 的 \(I^{\ast}\)、\(z^{\ast}_{\mathrm{img}}\)、\(z^{\mathrm{img}}_{1:I}\)、\(z_{\lt t}\)、\(P_{\theta}(\mathbf{z}\mid\mathbf{x})\) 与 \(\beta_1=0.9,\ \beta_2=0.95\)。
这些是项目页面规范要求的渲染验收表达式,与 HarnessDev 的原始公式分开,仅用于检查 HTML parser、MathJax delimiter 与 inline nowrap CSS。
把事实、作者主张与我们的解释分开
- 所有六个 creator 都能从弱 seed 产出 runnable harness,seed 本身在五项 Creation benchmark 均为 0。
- Creation 在 writing 与 MLE-bench 更接近或超过选定 reference,在 code 与 search/research 明显落后。
- Evolution 的 Self-runtime hidden-630 final gains 为 +1.43 至 +4.44,均值 +3.11;fixed Gemini 只有 Opus 提升。
- 64 次 adjacent switches 中 feedback / hidden 同向 34 次(53.1%),只有 2/9 declared final 是 hidden-optimal。
- state / memory 大量只存在于代码声明,未在 runtime 触发;executor 变化可导致显著崩溃或提升。
- Harness 是继 model weights 之外,另一处可以积累、测试、复用并通过失败持续改进的 intelligence substrate。
- Creation 与 Evolution 能让 agent development 成为可测量的 software-engineering object。
- 可靠的 harness engineering 需要从 execution traces 诊断行为限制,而非只增加代码量或 self-test 数量。
这些是作者用实验动机与讨论支持的总体论断;并不等于已经证明了跨领域、跨模型、长期稳定的自我进化。
- Self-Eval 主要测量 model–harness co-design;Unified-Eval 才较接近“软件资产可迁移性”,但仍受模型协议影响。
- Evolution 的核心 bottleneck 不是“不会写新代码”,而是 feedback attribution、版本选择、噪声估计与回归保护。
- 论文中最有价值的负结果是:结构名词(State、Memory、Verifier)必须用 runtime reachability 与真实 artifact 验证。
- 为 harness 版本建立 provenance graph,把每次修改与 failure evidence、触发路径、成本和 held-out 回归绑定。
- 用多任务、跨 executor 的 survival rule 替代“可见分数最高即 final”。
- 把 verifier confidence、uncertainty 与 repeated-run variance 纳入选择器,而不把一次 noisy gain 当成 causal proof。
Reviewer 视角:一篇好的 benchmark,尚不是稳定 RSI 证明
Strengths
- 评测单位选得准确。冻结 runnable harness、分离 creator 与 executor,把长期系统能力从一次答案质量中拆出来。
- 边界与审计清楚。弱 seed 既可运行又不带 task-solving policy;score path 读取真实 repo / environment,避免 self-report gaming。
- 覆盖维度完整。同时看 capability、execution-token efficiency、hidden generalization、cross-executor transfer、dead mechanisms 与 version trajectories。
- 负结果具体。没有用“模型会 self-improve”收束,而是量化 53.1% 方向一致率、±4.75 noise、state/checkpoint 缺失与 441 个 degenerate Data submissions。
- 可复现边界诚实。公开 decoding、hardware、CLI、artifact、controller budget 与 system-level prompts;对 human reference 的非 paired 性质做了标注。
Weaknesses / 需要谨慎的地方
- Evolution 样本仍很薄。9 条 lineage、每个 creator–runtime cell 一条 trajectory,且有一个 unfinished main-runtime cell,不足以给出稳健的不确定性估计或 population-level claim。
- Hidden generalization 只有 SWE-Pro。Creation 有四个领域,Evolution 的 post-freeze hidden set 却只覆盖 630 个 code tasks;无法证明 writing、data、research 的 evolution transfer。
- Human baseline 不完全公平。不同 benchmark 的 reference 使用不同 harness–model pair、版本与公开 leaderboard 条件,不是共同 executor 下的 controlled upper bound。
- Unified-Eval 仍不是纯 harness test。一个 harness 的 prompt、tool schema、budget、stop rule 与 Gemini 的 response style 可能不匹配;executor–harness compatibility 本身也会被测到。
- 可见反馈的诊断质量有限。作者说 controller 不做 failure summarization,把诊断责任完全交给 creator,正是研究问题的一部分,但也使最终选择混入“读了多少 case、会不会 ledger”等额外能力。
- 没有强 search baseline。作者承认 matched-search evaluation 是 future work;因此 Evolution gain 还不能与简单的保留 H0、随机 rollback、best-of-n 或人类规则选择器充分比较。
- 安全边界不是 sandbox 证明。生成 harness 被审计无违规,但容器是 reproducibility boundary,不是可直接面向不受信代码的 containment 方案。
Potential Improvements
| 改进方向 | 具体设计 | 要排除的混淆 |
|---|---|---|
| 多 executor、多任务 survival | 每次 candidate 同时在多个 runtime model 与多个 unseen domain 上评估,按保守下界选择。 | 不把单一 executor 的 co-adaptation 写成泛化。 |
| 噪声与因果归因 | 每个版本 repeated runs、paired seeds、confidence interval;记录修改触发的具体 failure bucket。 | 不把 ±4.75 的自然波动归因给一行代码。 |
| 强 baseline | 加入 H0 保留、随机 edit、best visible、best hidden oracle、简单 regression gate 等对照。 | 分离“会改代码”与“会做正确版本选择”。 |
| 机制可达性验证 | 静态 call graph + dynamic trace + artifact-level assertion;对 state / verifier 设最小触发标准。 | 不把 dead code、decorative modules 或 self-report 当能力。 |
| 可组合 harness | 把 \(E,T,C,S,L,V\) 做成 versioned components,跨模型检验替换单一模块的影响。 | 避免每次改动同时改变多个层,无法定位收益。 |
对 Agent / Context Optimization 研究的启发
以下不是 HarnessDev 的论文结果,而是从其问题定义和负结果推导出的研究接口。它们与程序化材质、renderer-in-the-loop agent 也有直接对应关系。
1. Context 不是“加更多历史”,而是可验证的选择器
论文中 \(C\) 的责任是把 task、代码、日志、history 与 constraints 送入 runtime context。Future harness 可以把 context selection 显式记录为 provenance:模型看到什么、为什么看到、压缩掉什么、压缩后是否改变 tool-message pairing。对 renderer agent,可把参考图像的多尺度 feature、graph diff、编译错误、渲染截图与预算状态作为 typed observations,而不是无结构长日志。
2. Verifier 应独立于模型自报
HarnessDev 的 code score 只读取真实 repo / environment,这个原则可以迁移到材质生成:不要只看 agent 写出的 success,而要让 Substance cook、render、graph validity、通道完整性与目标图像指标各自产生 evidence。指标可以写成一个未来工作的多目标 evaluator:
这个公式是研究延伸,不是 HarnessDev 的原始公式。它强调 compile / artifact validity 是硬边界,不能被单一图像相似度或模型自评覆盖。
3. 双层演化:局部 action loop 与版本 survival loop
HarnessDev 已经说明“修改 execution、tools 很常见,而修改 state、verifier 很少”。后续研究的关键不是继续增加模块,而是证明每个机制可达、被调用、能改善下一个任务,且不会吞掉已有能力。
最小可发表的后续实验
| 因素 | Control | Treatment | 主要指标 |
|---|---|---|---|
| Context | 原始 task + 全量 history | 带 provenance 的结构化 context selector / compressor | token cost、重要证据保留率、tool-pair integrity |
| Verification | 模型自报 finish | 独立 artifact / execution / renderer verifier | false-positive、real success、回归率 |
| Evolution | visible best 或独立 retry | failure-bucket + repeated-run + hidden survival rule | held-out gain、direction agreement、best-version gap |
| Transfer | 单一 runtime model | 多 executor、多预算、多任务 family | 跨模型迁移、成本–能力 Pareto front |
References
- Wu, Y. et al. HarnessDev: Can LLMs Create and Evolve Their Own Agent Harness? arXiv:2609.01437v1, 2026. 论文 record、作者、提交时间与 abstract。
- Wu, Y. et al. HarnessDev 原始 PDF. 2026-09-02 标注版本;本文的公式、表格、附录接口与实验数字均以此一手资料为准。
- HarnessDev authors. Self-Developing Agents project page. Aspire、S3Gym、HarnessDev 的三问框架与跨研究结果。
- SWE-bench team. SWE-bench / SWE-bench Pro. HarnessDev 使用 public split 的 731 个实例,Evolution 取 100 feedback + 630 held-out。
- The Terminal-Bench team. Terminal-Bench 2.1. HarnessDev 使用全部 89 个任务作为 Evolution feedback benchmark。
- Chan, J. S. et al. MLE-bench. Evaluating machine learning agents on machine learning engineering, 2024。
- Paech, S. J. EQ-Bench3. Emotional intelligence benchmark,论文引用版本含 46 scenarios。
- OpenAI. BrowseComp. HarnessDev 的 search / research downstream benchmark。
- Lu, X. et al. The Meta-Agent Challenge: Are Current Agents Capable of Autonomous Agent Development? 相关的 agent artifact development benchmark。
- Ursekar, V. et al. HarnessOpt-Bench: Evaluating LLMs at Harness Optimization. HarnessDev 在 Related Work 中讨论的 concurrent benchmark。
- Wu, Y. et al. 本页中的版本号、模型名、execution cost、hidden split、audit 与 controller 语义均直接回链上述 arXiv PDF 的 Sections 3–6 与 Appendices A–E;第三方解读只用于发现线索,未作为关键事实来源。