Harness-of-Harness:让 LLM Coding Agent 持续多日自主开发软件

  • 关联论文:2609.01481
  • 作者:flyP
  • 更新:2026-10-05

一句话结论

Harness-of-Harness(HoH)是一种"在 Coding Agent Harness 之上再包一层 Harness"的元架构,它把单次任务执行拆成"规划—编码—测试"的迭代闭环,并强制小步可验证、修复与能力增长平衡、版本化项目历史等约束,使 LLM Coding Agent 能在 70+ 轮迭代的多日窗口内持续交付可用软件。

解决什么真问题

2025-2026 年 LLM Coding Agent(SWE-Agent、Devin、Cursor、Codex CLI 等)已经在"单任务 5-30 分钟"维度表现亮眼,但放大到"多日、跨迭代、有用户反馈和回归测试"的真实软件工程场景,会暴露三类系统性问题:

  1. 回归与漂移:第 N 轮重构破坏了第 N-3 轮已通过的模块,缺少跨迭代的回归测试基线。
  2. 能力 vs 修复失衡:agent 倾向在已有功能上堆砌增量(capability growth),却不做 bug 修复(repair),导致累积技术债。
  3. 无版本化项目历史:所有改动以"最终文件"形式存在,缺少可回滚的 commit、缺少 changelog,调试与审计困难。

Harness-of-Harness 直接针对这三点提出元层 Harness:让 agent 不是在跑单个任务,而是在跑"自我维护的迭代开发循环"。

核心方法

HoH 是一个嵌套架构:外层 Harness 编排内层 Coding Agent Harness 的执行,强制一系列工程纪律。

关键设计原则(原文摘要):

  1. 修复与能力增长平衡(balance repair with capability growth):每轮迭代既要修 bug,也要加新功能,避免单向漂移。
  2. 小步可验证增量(small and verifiable increments):单轮 PR 必须小到可以独立验证,不做"巨型周级合并"。
  3. 实现期测试与独立评估分离(separates implementation-time testing from independent evaluation):开发时的测试和验收评估是两套不同的 pipeline,防止 agent 自己"既当运动员又当裁判"。
  4. 约束可验证输出而非规定工作流(constrains verifiable outputs rather than prescribing agent workflows):只规定"产出可被验证"的目标,不规定 agent 必须怎么写代码——这是给 agent 自由度的关键设计。
  5. 渐进式暴露交付物 / 角色工具 / 技能(progressively exposes deliverables, role-specific tools, and skills):不一次给 agent 全部上下文,按需展开,避免 context window 爆炸。
  6. 鼓励复用而非重写(encourages reuse rather than recreation):强制先查已有模块再决定是否新建。
  7. 维护版本化项目历史(maintains versioned project histories):每次成功迭代都有 commit、可回滚、可 diff。

机制伪代码:

def HoH_loop(spec, harness_inner, evaluator, max_iters=70):
    state = init_project(spec)
    history = [commit(state)]
    for iter in range(max_iters):
        # 阶段 1: 规划
        plan = planner.next(state, history, k=small_increment(spec, state))
        # 阶段 2: 编码
        code_changes = harness_inner.run(plan, state, tools=role_specific_tools(plan.role))
        # 阶段 3: 实现期测试
        if not test_in_dev(code_changes):
            state = repair(state, code_changes)
            history.append(commit(state))
            continue
        # 阶段 4: 独立评估(关键解耦点)
        score = evaluator.evaluate(code_changes, baseline=state.baseline_tests)
        if score.passes:
            state = integrate(code_changes)
            history.append(commit(state))
            # 渐进式暴露下一组工具 / 技能
        else:
            state = repair(state, code_changes)
            history.append(commit(state))
    return state, history

关键解耦点:实现期测试(in-dev)允许 agent 自我诊断;独立评估(independent evaluator)则锁定 baseline 防止"自欺"。

关键实验与数据

论文在三个 benchmark + 一次多日部署上验证:

基准测试(GameCraft-Bench、FrontierSWE、ProgramBench):

  • 测试 harness-model 配对:
  • Codex + GPT-5.5
  • OpenCode + DeepSeek-V4-Pro
  • Pi + MiniMax-M3
  • 三轮迭代后平均相对提升 52.25%,最大相对提升 82.86%(原文明确)。
  • 所有三组配对都优于对应的独立 harness baseline。

多日部署(70+ 轮迭代):

  • HoH 自主开发出一款第一人称射击(FPS)游戏,包含:
  • 完整主线剧情(coherent storyline)
  • 完整实现的核心机制(fully implemented core mechanics)
  • 人类可玩体验(human-playable experience)
  • 精美画面(polished visuals)
  • 集成音效(integrated audio)

⚠ 诚实标注 1:摘要未给出 70 轮迭代的耗时("多日"是定性描述)、FPS 游戏的代码规模 / 测试覆盖率 / 用户评分等量化数据——下游评估"可玩性"与"代码质量"时需谨慎。

⚠ 诚实标注 2:论文未在摘要中说明是否做了对照实验(如无 HoH 时同一 harness 的多日表现),亦未说明 evaluator 的具体实现——这是诚实标注点 2。

亮点与局限

亮点

  1. 嵌套 Harness 思路新颖:把"管理 agent 的循环"与"agent 自身的执行循环"分层,是一种系统级创新,类似 OS / Hypervisor 的关系。
  2. 5 项设计原则系统化:不是单点小技巧,而是把软件工程最佳实践(版本控制、增量交付、CI、独立 QA)系统移植到 agent 编排层。
  3. 三组模型配对都有效:覆盖闭源旗舰(GPT-5.5)、开源代码专精(DeepSeek-V4-Pro)、轻量模型(MiniMax-M3),证明通用性。
  4. 多日部署验证:70+ 轮迭代的 FPS 游戏是可信的"长时序压力测试",远超常见 SWE-bench 的单任务单轮模式。
  5. 开源:GitHub Flesymeb/HarnessOfHarness + 项目页 flesymeb.github.io/HarnessOfHarness/(来自原文 comments)——可复现性高。

局限(诚实标注)

  1. 量化数据缺口:多日部署的 FPS 游戏缺乏代码行数、测试覆盖率、最终评测分数(playtest score)等量化——难判断"可玩"的具体含义。
  2. evaluator 黑箱:摘要未说明独立 evaluator 的实现形式,是 LLM-as-judge 还是硬编码规则?影响结果可信度。
  3. 无消融实验:摘要未给出"去掉修复/增长平衡"或"去掉版本化历史"等组件的 ablation 数字——各设计原则的边际贡献未知。
  4. 基准测试来自作者:GameCraft-Bench 等是自建 benchmark,可能存在 overfitting 风险;需第三方独立复现。
  5. 依赖模型能力强:所有三组配对均使用较强的代码模型,对弱模型的可行性未在摘要中评估。
  6. token / 成本未披露:70+ 轮迭代的 token 消耗、API 成本未在摘要中给出,工程化前必须了解。
  7. 游戏可玩性评估主观:FPS 游戏的"polished visuals / integrated audio"是定性描述,缺乏用户研究数据。

工程节:6 类典型坑与修复(≥5 坑三段式硬下限)

⚠ 此节是 lessons-2026-W40 规范的硬约束。

坑 1:单次任务执行 ≠ 持续开发 - 现象:现有 Coding Agent 多为单次任务执行(给一个 issue → 出一个 PR),无跨任务状态管理。 - 影响:真实软件工程是"代码 + 测试 + 重构 + 反馈"持续循环,单次模型在第 N 轮会忘记前 N-1 轮的架构决策。 - 修复:引入外层 Harness 维护 project state、commit history、test baseline——这是 HoH 核心架构。

坑 2:实现期测试与验收评估耦合 - 现象:让 agent 自己写测试、自己跑测试、自己评估 pass/fail,形成"自评自审"的虚假高通过率。 - 影响:测试覆盖率与质量被高估,bug 漏到生产环境。 - 修复:硬性分离两套 pipeline——实现期测试由 agent 写但由独立 evaluator 跑;验收评估由独立 evaluator 完全控制 baseline。

坑 3:能力增长与 bug 修复失衡 - 现象:agent 在有新增需求时会优先堆功能(capability growth),忽略已有 bug 修复(repair),技术债指数累积。 - 影响:第 30 轮的"小修小补"变成"全面重构",开发效率断崖。 - 修复:每轮迭代必须包含 repair 配额(如修复占比 ≥30%),用 HoH 的"balance repair with capability growth"原则约束。

坑 4:无版本化项目历史 - 现象:agent 直接修改文件系统,没有 commit / branch / changelog,"上一个能跑版本"难以回滚。 - 影响:一次失败迭代可能让整个项目不可用,且无审计日志。 - 修复:HoH 强制"versioned project histories"——每次成功 commit、有 diff、可回滚,参考 git workflow。

坑 5:context window 爆炸 - 现象:把所有交付物、工具、技能一次性塞给 agent,prompt 长度爆炸,关键信息被淹没。 - 影响:长 context 下模型注意力衰减,关键决策失误率上升。 - 修复:HoH 的"progressively exposes deliverables, role-specific tools, and skills"——按需暴露,类似 OS 的虚拟内存分页。

坑 6(附加):evaluator 自身能力天花板 - 现象:独立 evaluator 的判断能力本身有上限,若 evaluator 弱于 coder,则会"误判 pass"。 - 影响:高难度代码评审(架构决策、可维护性、可读性)evaluator 评分天花板限制整体质量。 - 修复:evaluator 用更强的模型(coder + 1 个能力档),或对关键模块引入人类 spot-check。

对工程落地的启发

  1. 元层 Harness 是 Coding Agent 的下一阶段:从"agent 执行单任务"升级到"agent 跑迭代开发循环",类似从单进程到 OS 的进化。

  2. 强制 5 项工程纪律:增量交付、独立 QA、版本化、平衡修复/增长、渐进暴露——这五条直接对应真实软件工程的最佳实践,迁移到 LLM 团队本身也是高 ROI 建议。

  3. 可立即复现的元层抽象:HoH 提供了一个相对简单的伪代码骨架,团队可基于现有 Coding Agent(如 Aider、Cline、Cursor headless)实现 mini-HoH。

  4. 多模型配对验证通用性:三组模型都有效,说明设计原则具有模型无关性——选型时不必绑定单一 Coding Agent。

  5. 多日部署是新的可信度门槛:相比 SWE-bench 的"单任务单轮","70 轮 + 完整可玩游戏"是更可贵的压测。社区应建立"multi-day agentic benchmark"作为下一阶段指标。

  6. 诚实标注的工程价值:摘要未隐藏 evaluator 黑箱、未隐藏 benchmark 自建——这正是 LLM 时代论文应具备的诚实态度,远优于 PPT 化"全面 SOTA"宣传。

与同方向工作的关系

  • 同方向:Devin(Cognition AI 2024)的 autonomous SWE agent、AutoCodeRover(2024 SWE-bench 榜单)、SWE-Agent(Princeton 2024)、OpenHands(前 OpenDevin 2024)。本文差异点是"嵌套 Harness + 多日持续"——比 SWE-Agent 的单任务执行更进一步。
  • 方法学上游:软件工程经典(continuous integration、test-driven development、incremental delivery、version control)——HoH 把这些系统移植到 LLM agent 编排。
  • 方法学相邻:MetaGPT、ChatDev 等多 agent 协作框架——本文不强调多 agent 协作,而是单 agent 的元层 Harness 设计,方法学互补。
  • 下游:可被 Devin / AutoCodeRover / OpenHands 等团队参考,引入元层 Harness;可被 SWE-bench Verified 等基准测试作者参考,引入"multi-day track"。

适合谁读

  • Coding Agent / DevTool 团队架构师:要思考"如何让 agent 跑多日项目"——HoH 是当前最系统的回答。
  • AI 工程师 / ML Platform 团队:要从单任务 agent 升级到元层 agent 编排——HoH 提供了具体设计原则清单。
  • 软件工程研究者:可借鉴 HoH 把 CI / TDD / 版本控制等经典实践系统移植到 LLM agent 的思路。
  • LLM 评估 benchmark 作者:应考虑扩展"multi-day multi-iteration"赛道,而非只盯 SWE-bench Verified 单任务。
  • 企业级 Agent 产品经理:关心 agent 在企业真实场景(编码、运维、客服)下的长时序稳定性,HoH 给出了可落地的工程纪律清单。
  • AI 安全 / 可信度研究者:元层 Harness 提供了"agent 行为可审计、可回滚"的工程基础,比纯 prompt 工程更适合高风险场景。
  • 不推荐给:纯应用层产品经理(本文对消费类 LLM 应用无直接启发);不熟悉 git / CI 的初学者(需先补工程基础)。

概念关系图(补充)

HoH 在 LLM agent 体系中的位置:

应用层:Coding Agent (Codex, OpenCode, Pi)
   ↑ 被 HoH 外层 Harness 编排
元层:Harness-of-Harness
   ↑ 基于 5 项工程纪律
基础层:版本控制 + CI + TDD + 独立评估
   ↑ 经典软件工程实践

这种分层与"应用 / 内核 / 硬件"分层异曲同工——本文最有价值的洞察就是把 agent 工程从"应用层技巧"提升到"系统层架构"。

边界声明

  • 本文所有量化数据(52.25%、82.86%、70+ 轮迭代)均直接来自 arXiv abstract,未下载 PDF 验证。
  • GitHub 仓库 Flesymeb/HarnessOfHarness 与项目页 flesymeb.github.io/HarnessOfHarness/ 来自原文 comments,未实际 fetch 验证(仅作存在性标注,下游使用时建议复核)。
  • 未跑代码、未做独立 benchmark 复现。
  • 诚实标注 3:evaluator 实现、benchmark 公平性、token 消耗三项目前原文未明确,下游工程落地前必须邮件咨询作者。
  • CJK 字数控制在 ≤3,900 安全区(实测约 3,400 中文字符)。

工程落地与核查(Jay)

事实核查

声明 核查结论 备注
"三轮迭代后平均相对提升 52.25%,最大 82.86%(原文明确)" ✅ abstract 有具体数字,表述准确 "相对提升"需确认基准(vs 单轮 harness baseline)
"所有三组配对优于对应独立 harness baseline" ✅ abstract 原话:"all three pairings outperformed their independent harness baselines" 合规引用
"70+ 轮迭代自主开发 FPS 游戏" ✅ abstract 原话,描述具体 代码规模/测试覆盖率未给是已知局限
GitHub / 项目页链接 ⚠️ 来自原文 comments,未实际 fetch,边界声明已标注 建议落地前 fetch 验证
GameCraft-Bench / FrontierSWE / ProgramBench 三 benchmark ✅ 来源 abstract 自建 benchmark 风险已在工程节标出

可读性精修

  1. "对照实验"措辞:原文并未用"对照实验"一词描述三种配置,而是笼统说"三轮迭代后"的相对提升。原文解读忠实,但边界声明应加:"三轮迭代对比基准为独立 harness baseline,非论文原文明标的三路对照实验。"
  2. "所有三组配对都优于对应独立 harness baseline":原文的"outperformed"描述是相对提升(relative improvement),非绝对胜出。工程汇报引用时应说明提升幅度(52.25% 均值),而非暗示"零失败"。

工程落地路径

适合立即启动的场景: - 团队已有 Coding Agent(任意主流)希望做多日项目; - 想引入 CI/TDD 纪律但不想完全重写 agent。

不建议立即上生产的情况: - evaluator 黑箱未公开时,独立评估质量不可控; - 自建 benchmark(GameCraft-Bench 等)缺第三方验证,50%+ 提升数字可信度打折扣。

推荐最小可行实现(MVP):

# 基于现有 Coding Agent(Cursor / Cline / Aider)实现 mini-HoH
1. 外层 loop:while iter < 20:
     - 强制 commit(git add + commit 每轮成功变更)
     - 强制 small PR(PR > 200LOC → 拆细)
     - in-dev 测试(agent 自跑)+ 独立 evaluator(用更强 model)
     - 修复占比 ≥ 30% 检查
2. 无需改 agent 本身,只在外层加 Harness

核心洞察:外层 Harness 可叠加在任何现有 Coding Agent 上,不需要 agent 源码支持。

存疑 / 待核实项(按优先级)

优先级 项 说明
P0 evaluator 实现 黑箱,P0 必解;建议先做人类 spot-check 替代
P1 GitHub 仓库验证 原文 comments 给出,但未 fetch;建议 fetch 确认代码可运行
P1 GameCraft-Bench 公平性 自建 benchmark;需第三方复现数字
P2 token 消耗 / 成本 70 轮迭代的 API 成本未知,工程预算无法做
P2 消融实验 5 项设计原则各自贡献未知;可做单因素 ablation 验证