01 · PAPER MAParXiv:2609.01481 · 2026-09-01 · CC BY 4.0
HARNESS-OF-HARNESS

怎样让 Codex 连续开发几天?

HoH 固定模型与底层 coding harness,在外面增加 Planner、Developer、QA Tester 和跨轮 evidence state,把长期开发变成一系列版本化、可核验的候选。

这套方法靠严格的状态边界工作:只有 Developer 能写项目,QA 检查冻结候选,下一轮只能继承与该候选绑定的证据。
Fusepoint 70 轮开发轨迹
论文 Figure 1:Fusepoint 从 bare-bones prototype 迭代到 playable FPS 的 70 轮轨迹。
49.58 → 71.52GameCraft-Bench · Codex
0.31 → 0.54FrontierSWE · Codex
60.41 → 66.50ProgramBench · Codex
65 / 81Loop 70 已关闭 issue
论文 Abstract、Figure 1、Table 1。
02 · MOTIVATION持续开发需要独立的状态与验证

代码会留下,关于代码的可靠认识却会不断过期

几小时后,Agent 会同时面对持续增长的历史,以及互相脱节的 artifact、需求、回归风险和测试结论。

人类在环与自主软件开发对比
论文 Figure 2:右侧要求系统自己完成 observe → plan → develop → test 的闭环。
01
决定被遗忘早期 requirement、设计取舍和已知限制埋进长轨迹,后续修改不再知道什么不能破坏。
02
下一步没有唯一答案同一 PRD 可以对应多条开发路线;Agent 容易停在局部修补或重复尝试。
03
“能运行”不等于“做完”完整软件的正确性分散在编译、交互、状态迁移、视觉、音频与稳定性里。
论文 §1、Figure 2。
03 · SCOPE固定 operational layer,持续改变 project state

HoH 不改 Codex,也不训练模型;它改的是外层开发协议

一次 run 内固定
ModelGPT-5.5 / DeepSeek-V4-Pro / MiniMax-M3
Coding harnessCodex / OpenCode / Pi
Role contracts权限、输入、输出 schema 与 Runtime policy
→
每轮继续演化
Development document · Dt本轮 scope、acceptance 与 preservation constraints
Artifact · At代码、资源、配置和版本化项目
Evidence · Etverified records、gap records 与 candidate identity
(At−1, Et−1) → Planner → Developer → QA Tester → (At, Et)
论文 §3;Supplementary §A.1。
04 · RELATED WORK角色名称相似,不代表控制对象相同

HoH 把验证证据绑定到候选版本,跨轮状态不再只是对话摘要

路线优化或保存什么验证从哪里来与 HoH 的关键差异
Long context / memory对话、摘要、外部 memory通常仍由同一 Agent 自判记住过去,不等于知道哪条事实已在当前候选上通过
MetaGPT / ChatDev角色文档与消息流程角色间 reviewHoH 固定 read/write boundary、冻结候选和 evidence schema
AgileCoder / EvoDev / EvoMACsprint、feature dependency、test feedback迭代计划与测试HoH 将 artifact state 与 QA evidence 分成两条持久通道
Meta-Harness / AHEprompt、tool、middleware、harness code跨任务 benchmark它们改底层 harness;HoH 固定底层 harness,持续改项目
LongHorizon-Harness单任务 task state 与 audit report只读 Auditor更通用;HoH 专门面向版本化软件与独立 QA
Harness-of-Harness项目 artifact + candidate-bound evidence隔离 QA + 最终 benchmark verifier同一 harness/model 被固定角色反复调用
论文 §2;此页比较为基于论文与官方实现的作者整理。
05 · FRAMEWORK三个角色,两条跨轮状态,一个只写者

一轮包含一次受控的状态提交

Harness-of-Harness 方法总览
论文 Figure 3:模型、底层 harness、角色定义固定;artifact 与 evidence 逐轮变化。
06 · STATEartifact 说明“现在有什么”,evidence 说明“我们凭什么相信”

代码和证据必须分开保存,又必须绑定到同一个候选

At

Artifact state

  • 真实代码、资源、配置与项目元数据
  • 由 Developer 从 At−1 warm-start
  • 冻结后复制到隔离 QA workspace
  • candidate identity 防止测试结论串到另一个版本
+
Et

Evidence state

  • verified records:已有证据支持的行为
  • gap records:尚未满足或出现回归的行为
  • 截图、replay、日志、runtime trace、公开测试
  • 下一轮 Planner 只能把它当作有来源的观察,而不是永久真理
论文 §3.1–3.3;Supplementary §A.2–A.4。
07 · ROLE CONTRACTSDeveloper 是唯一写入者

三个角色的分工由权限边界保证

01

Project Planner

  • 读取 PRD 与上一轮 evidence
  • 只读检查项目结构
  • 选择 bounded but locally complete increment
  • 输出 development document Dt
  • 不能修改生产 artifact
02

Developer

  • 从旧 artifact warm-start
  • 读取 PRD 与本轮 development document
  • 建立 baseline,实施修改并自测
  • 保留已验证行为
  • 唯一拥有 read-write workspace
03

QA Tester

  • 读取冻结候选的隔离副本
  • 黑盒运行与白盒检查交叉验证
  • 输出 verified / gap records
  • 不能修代码,也看不到外部 hidden score
  • 只报告证据,不替 Developer 补丁
论文 Table 2、§3.2;官方 hoh-lite role binding(revision ae7cc6f)。
08 · ALGORITHM 1每轮只提交一个范围有限但可完整验收的增量

Planner 选边界,Developer 写候选,QA 只对冻结版本出证据

1 · PLAN

选增量

用 PRD 与旧 evidence 选择本轮最值得做的一条完整用户路径。

2 · PRESERVE

列保护项

写明哪些已验证行为不能回归,以及如何重查。

3 · DEVELOP

改 artifact

Developer 在现有项目上实现;不是从空仓库重复生成。

4 · SELF-TEST

建立 baseline

修改前后都运行公开检查,记录失败和修复。

5 · FREEZE

冻结候选

复制到隔离 QA 区,生成与候选绑定的 identity。

6 · ASSESS

更新 evidence

QA 只观察、复现和判定;verified / gap 进入下一轮。

论文 Algorithm 1;Supplementary §A.1。
09 · RUNTIME ENFORCEMENT官方 hoh-lite · Python 3.12+ · Apache-2.0

Planner 和 Tester 的只读边界会在初始化时被验证

class WorkspaceAccess(str, Enum):
    READ_ONLY = "read-only"
    READ_WRITE = "read-write"

@dataclass(frozen=True)
class RoleBinding:
    role: RoleName
    workspace_access: WorkspaceAccess
    godot_mcp: GodotMCPAccess

    def __post_init__(self):
        if self.role is not RoleName.DEVELOPER:
            if self.workspace_access is not READ_ONLY:
                raise ValueError(...)
PLANNER / TESTER只读 workspace;无法靠一句 prompt 承诺来获得写权限。
DEVELOPER唯一 read-write;修改面集中,便于冻结和归因。
RUNTIME POLICY权限实现来自公开代码;论文主实验使用更完整的内部 orchestration。
HoH 官方仓库 revision ae7cc6f:hoh-lite role bindings。代码为官方实现节选。
10 · EVIDENCE SCHEMA“测试通过”不是可复用的跨轮状态

每条 claim 都带 candidate、scope、observation 和 limitation

{
  "candidate_id": "loop-70-...",
  "final_status": "FAIL",
  "verified_records": [
    {
      "claim": "clean boot works",
      "method": "runtime replay",
      "evidence": ["log", "screenshot"]
    }
  ],
  "gap_records": [
    {
      "claim": "encounter reaches combat",
      "observed": "idle / walk only",
      "impact": "golden path blocked"
    }
  ]
}
CANDIDATE-BOUNDQA 结论只属于它真正运行过的冻结候选,不能无条件继承给下一版。
MULTI-MODAL允许截图、replay、日志、runtime trace、自动测试和结构检查共同支持一条 claim。
GAPS ARE STATE失败不是丢掉一轮;gap 会成为下一轮 Planner 的输入。
ARTICLE NOTE此页 JSON 是根据论文 Listing 1 与 Fusepoint receipt 压缩的说明性结构,不是原文件逐字复制。
论文 Listing 1;Supplementary §A.4;Fusepoint Loop 70 Tester receipt。
11 · TWO JUDGES过程反馈与最终得分严格隔离

内部 QA 能帮助下一轮;外部 hidden verifier 只能在结束后结算

INTERNAL QA TESTER

生成 Et

  • 输入:PRD、本轮 development document、冻结候选
  • 可用:运行、replay、截图、日志、runtime trace、公开测试
  • 输出:verified records、gap records、最终 PASS/FAIL
  • 结果会进入下一轮 Planner
║不可回流的边界
BENCHMARK VERIFIER

生成论文分数

  • GameCraft:binary gate + 四个 rubric dimension
  • FrontierSWE:官方 task verifier reward
  • ProgramBench:hidden behavioral tests
  • 隐藏测试、分数和 rationale 不进入 HoH 循环
论文 §3–4、Supplementary §B–D。两层 judge 不能互相替代。
12 · EVALUATION三套任务,三种外部 verifier

先看提交经过什么 judge,再看表格里的数字

GameCraft-Bench

45 tasks

15 个 game family 各采 3 题。运行失败时 binary gate B=0,Overall 直接归零;可运行后再按四个 rubric dimension 加权。

FrontierSWE

15 / 17 tasks

4 Implementation、9 Performance、2 Research。排除 Tinker API 登录不可用的 frogsgame-rl,以及 driver 版本不足的 modular-stack-wan21。

ProgramBench

count undisclosed

Agent 根据 executable 与文档重建程序。每题得到 hidden behavioral tests 的通过比例,再对任务做 macro average。

论文 §4.1、Table 1;Supplementary Tables 4–8、metric definitions。
13 · MAIN RESULTSVanilla → HoH@3;每个 task-condition 一次有效 run

三种 harness/model 的总体指标都提高,但不能当成生成方差估计

Harness + modelGameCraft OverallFrontierSWE mean rewardProgramBench Avg. Test Pass Rate
Codex + GPT-5.5 high49.58 → 71.520.31 → 0.5460.41 → 66.50
OpenCode + DeepSeek-V4-Pro26.90 → 48.980.23 → 0.3145.27 → 57.56
Pi + MiniMax-M342.16 → 58.780.26 → 0.5535.83 → 52.68
WHAT IMPROVED平均指标在 3 套 benchmark、3 种完整 harness/model 组合上方向一致。
WHAT IS NOT REPEATED没有同一 task-condition 的多 seed generation;bootstrap 只重采 task。
WHAT REMAINS HIDDENProgramBench 缺 task 数、逐题结果和运行环境,无法复核失败分布。
论文 Table 1;Supplementary protocol。数值单位:GameCraft 0–100,FrontierSWE 0–1。
14 · GAMECRAFT COMPONENTS四个 rubric dimension 都提升

提升不只来自“项目终于能启动”,内容深度和呈现也一起变化

GameCraft 四个维度结果
论文 Figure 4:error bars 为跨 45 个 task 的 20,000 次 bootstrap percentile interval。
Core Mechanics基础玩法与核心循环。三种 harness/model 都提高。
Content Depth更完整的状态、反馈与 progression;权重与 Art and Presentation 同为 0.35。
Binary gate 仍先执行如果项目无法编译或运行,四个维度不会把 Overall 从 0 救回来。
论文 Figure 4;GameCraft Overall = 100 · B · (0.15M + 0.35D + 0.15V + 0.35A)。
15 · QUALITATIVE ARTIFACTS图片展示结果,不能还原逐步失败轨迹

三轮 HoH 更常把核心交互、UI 和场景细节同时补齐

三款游戏 Vanilla 与 HoH 产物对比
论文 Figure 6:Momentum Lab、Kitchen Rush、Ant Empire。
Momentum LabOverall 34.05 → 70.61;从基础平台场景走向更完整的动量玩法。
Kitchen RushOverall 42.62 → 73.38;订单、厨房状态与管理反馈更完整。
Ant EmpireOverall 65.52 → 87.88;殖民地状态、资源与进展展示更成熟。
证据边界这些是按结果展示的作者选择案例,不能替代逐题生成方差或随机 case study。
论文 Figure 6;分数来自 Supplementary qualitative table。
16 · BUDGET CONTROL同样的 development pass,不同的信息闭环

Repeated Vanilla 也会进步,但 HoH 每轮更有效地使用新增 token

HoH 和 Vanilla Continuation 的预算对比
论文 Figure 9:累计 score 与 token trajectory。
ProtocolPass 1Pass 2Pass 3Tokens@3
Vanilla / Continue49.5854.9958.246.33M
HoH59.7164.8471.528.41M
同预算附近的关键点HoH@2 用 5.67M tokens 得到 64.84,已经超过三轮 Vanilla 的 58.24 / 6.33M。
仍不是严格等 computeMatched pass 不等于 matched wall-clock、invocation 数或 token;论文另用 budget efficiency 辅助解释。
论文 Table 2、Figure 9;Supplementary Tables 9–10。
17 · ABLATIONPlan、evidence、warm-start 分别移除

三条跨轮通道都重要;丢掉 artifact 最贵

HoH 消融结果
论文 Figure 10:最终 GameCraft score 与累计 token。
Full HoH@3 · 71.52 / 8.41M规划、QA evidence 与 artifact warm-start 全部保留。
No Plan Update · 63.39Planner 不再根据上轮 evidence 重新选择本轮增量。
No Evidence Feedback · 65.23下一轮拿不到独立 QA 的 verified/gap records。
No Warm-Start · 63.67 / 11.12M每轮从空 workspace 重建;分数下降,同时 token 反而最多。
论文 Table 3、Figure 10;Supplementary ablation protocol。
18 · FRONTIERSWE持续迭代能提高部分任务,不保证跨过每个 verifier

Dominance 上升与长期零分可以同时存在

FrontierSWE 十轮 Dominance
Figure 5:Codex 从 Vanilla 27.33% 到 HoH@10 72.67%,HoH@9 为 76.00%。
FrontierSWE 分类结果
Figure 8:4 Implementation、9 Performance、2 Research tasks。
论文 Figures 5、8。Codex 的 Cranelift、Dependent Type Checker、FFmpeg、Inference System 到 HoH@3 仍为 0。
19 · COST / NEGATIVE RESULTSprovider token accounting 不可跨 harness 直接比较

总体平均上涨,不代表每个任务、每个阶段都变好

三种 harness 调用 token 分布
论文 Figure 11:每次 coding-harness invocation 的 token 分布。
单题回退Pi 的 Spire Descent 26.61 → 10.96,Pipe Crisis 53.26 → 37.65;整体单调不等于 task-level 单调。
生成方差未知每个 task-condition 一次有效 run,没有共同生成 seed,也没有同题重复采样。
不同 provider 不同记账cache 与 input/output token 的统计口径不同,Figure 11 适合看同一 harness/model 内部,不适合横向算单价。
论文 Figure 11;Supplementary complete task scores and token accounting。
20 · REAL RECEIPT / LOOP 70Fusepoint official repository · revision 55b442fc

Developer 完成了代码任务,不代表用户路径已经被验证

Planner 要修什么?

关闭 4 个 combat_readability issue,同时保留:

  • clean boot
  • A / B / C 三档 roster:3 / 5 / 10
  • mouse-look、武器组件与终局逻辑
Loop 704 issuescandidate-bound
PLAN

选择 combat readability 作为 bounded increment,并把现有玩法列为 preservation constraints。

DEVELOP

Developer receipt 标为 PASS;3 tasks,修改 6 个 paths。

LOCAL SUCCESS

clean boot 通过;rifle 不再错误绑定 Pistol_* 组件。

UNVERIFIED PATH

这些改动还没有证明 encounter 能完整进入 aim / fire / reload / hit / death。

Fusepoint Loop 70 Planner / Developer receipts;官方仓库 revision 55b442fc。
21 · REAL RECEIPT / VERDICTsetup → action → observation → FAIL

QA 运行的是完整路径:局部修复通过,golden path 仍被阻断

Fusepoint 开发轨迹
Figure 1:论文截点为 Loop 70;81 issues 中关闭 65、未解决 16,17 个曾关闭 issue 因回归重开。
Setup / actionQA 在冻结候选上 clean boot,进入 encounter,并 replay 返回主菜单再尝试重新开局。
Observation 1敌人只出现 idle / walk;没有 aim、fire、reload、hit、death,combat golden path 未成立。
Observation 2Replay 后 DeployButton 无法再次启动流程;llvmpipe sample 只有 8 FPS。
Verdict · FAIL / BLOCKEDDeveloper receipt 的 PASS 只说明实现任务结束;独立 QA 的失败证据才决定下一轮状态。
Fusepoint Loop 70 Tester receipt。当前仓库已到 Loop 96,不应与论文截点混淆。
22 · QUALITATIVE ATLAS / TAKEAWAYS全部论文 Figure 1–16 已覆盖

最值得复用的是 candidate-bound evidence;最需要补的是重复实验与 QA 校准

GameCraft reporting groups
Figure 7 · five reporting groups
Action game examples
Figure 12 · Action
Timing game examples
Figure 13 · Timing
Strategy game examples
Figure 14 · Strategy
Simulation game examples
Figure 15 · Simulation
Adventure game examples
Figure 16 · Adventure
PROVEN完整 HoH 协议有效三种 harness/model、三套 benchmark 的总体指标均高于 Vanilla;matched passes 与三项消融支持跨轮状态有用。
NOT PROVEN没有同题生成方差一次有效 run 无法回答稳定性;bootstrap 只重采任务。
OPEN PROBLEMQA 还未校准需要测 false positive / negative、停止条件、rollback 和 fixed-budget 分配。
AUTHOR INTEREST9.5 / 10对 Claude Code、Codex 式完整 harness 的多日自治开发非常直接。
核心结论 1 / 22