Paper Deep DiveAI Self-Evolution · Coding Agents

让 Coding-Agent Harness 成为可观测、可回滚的自进化层

AHE 不再把自进化限制在 prompt 或 playbook,而是联合修改 tools、middleware、skills 与 memory,并用三种 observability 把每次编辑变成下一轮可证伪的文件级实验。

论文
Agentic Harness Engineering: Observability-Driven Automatic Evolution of Coding-Agent Harnesses
版本
arXiv:2604.25850v4 · 2026-05-18 · Preprint
核心设置
冻结 GPT-5.4;Terminal-Bench 2;10 轮;每任务 2 rollouts
一句话结论:自进化不一定发生在模型权重里。只要可变组件被外部化、运行经验被压成可追溯证据、每次修改必须接受下一轮验证,harness 就能成为一个现实且可审计的能力增长层。
01 · Problem Setting

为什么 Harness 是模型权重之外的独立优化层

同一个基础模型放进不同的工具、执行控制、记忆与提示系统后,长时程任务表现会明显变化。AHE 将这一整套模型外部组件视为独立适应表面,而不是部署完成后的附属工程。

论文中的 harness 包含 system prompt、tool description、tool implementation、middleware、skill、sub-agent configuration 和 long-term memory。它们共同决定模型能看到什么、能做什么、错误怎样恢复、重要状态会不会在下一步被破坏。模型可能已经知道正确策略,但工具没有执行能力、警告被长输出淹没,或者结束流程允许删除已验证产物,潜在能力仍无法变成任务成功。

Prompt工作原则、完成标准与全局策略
Tools模型理解的接口与真正执行的代码
Middleware跨步骤状态、调用拦截、恢复与结束控制
Memory / Skills跨任务经验与按需加载的方法
Sub-agents任务分解、委派与上下文隔离
Execution超时、sandbox、验证器与状态保护
Observation工具输出与环境反馈怎样呈现给模型
Recovery失败后重试、转向、回滚和停止机制

权重侧改进

改变模型内部参数,成本高、更新周期长,能力与行为绑定在模型版本中。

Harness 侧改进

冻结模型,编辑外部文件与执行结构;可查看 diff、可快速迁移、可按文件回滚。

论文主张Harness engineering 是 coding-agent 性能的 first-class lever。模型快速迭代时,人工阅读轨迹、手工修改外围系统的速度跟不上,会形成模型能力与能力实现之间的差距。

既然 harness 是独立优化层,下一个问题就不是“能否再写一段更好的提示”,而是如何在整个异构系统上联合而稳定地搜索。

02 · Research Gap

从单层自进化到完整 Harness:难点不是组件数量

Reflexion、Self-Refine 修改输出与语言反馈;prompt optimizer 修改指令;ACE 将经验写成 itemized playbook;TF-GRPO 从成功/失败轨迹中提取训练外语义优势;另一些方法演化 skill、程序或 workflow graph。它们各自有效,但通常预先限定了一个可编辑表面。

现实观察同模型不同 harness,长时程任务成功率不同
已有假设优化 prompt、playbook 或轨迹策略就足够
结构矛盾真正故障可能位于 tool、middleware、memory
研究问题如何联合且稳定地演化全部可编辑组件

三个联合演化障碍

异构动作空间

Prompt 是文本,tool 与 middleware 是代码,skill 与配置有各自加载规则;耦合框架让一次编辑散落在多处。

轨迹信号淹没

一次 campaign 产生百万到千万 token,真正有用的是根因和同任务 passing/failing 分歧点。

效果难归因

多文件同时变化后,下一轮既有修复也有回归;仅凭修改理由无法判断该保留还是撤销。

Layer mismatch如果失败来自“模型明知风险仍删除已验证产物”,自然语言 playbook 只能重复提醒;更直接的修复是让 shell tool 在执行点硬拦截。只开放 prompt 会错过真正承载增益的层。
03 · Design Thesis

设计转折:瓶颈是 Observability,而不只是 Agent 能力

AHE 没有训练一个新的专用优化器,而是把演化系统重构为三个可观测表面:可改什么、从哪里获得证据、修改后怎样被下一轮证伪。

AHE 三种可观测性闭环
Figure 2 · AHE pipeline。组件、rollout 经验和编辑决策都以结构化 artifact 暴露给另一 Agent;约 10M token raw trace 被组织为约 10K token overview,同时保留逐层下钻路径。
证据边界这张方法图解释结构,不证明 observability 本身必然胜过更强优化模型。真正支持来自同基础模型下的基线比较与组件消融。

I · Component

七类组件固定为 workspace 文件;动作空间明确,Git 提供 diff 和 rollback。

II · Experience

Overview → task report → cleaned/raw trace;根因摘要可核验而非不可追溯。

III · Decision

每次编辑写 manifest,提前声明 predicted fixes 与 regression risks,下一轮给 verdict。

04 · Component Observability

把联合优化变成清晰、可撤销的文件级动作

AHE 在 NexAU 上把 system prompt、tool description、tool implementation、middleware、skill、sub-agent configuration 和 long-term memory 放在固定 mount point。松耦合意味着新增 middleware 不需要顺手重写 prompt,新增 skill 也不要求修改 tool。

这种设计把失败模式映射到一个可选组件层:认知规则放 prompt,重复经验放 memory,执行时约束放 tool,跨步骤状态放 middleware。每个逻辑编辑是一次 Git commit,性能变化可以对应具体文件 diff,被否定的编辑也能按文件撤销。

为什么重要Component observability 不是“目录规范”。它把一个开放式软件修改问题压成有边界的 action space,并为后续 attribution 提供最小可回滚单位。

极简种子如何保护实验归因

`NexAU0` 只有一个 shell execution tool,没有 middleware、skills、sub-agents 与 long-term memory,system prompt 也很短。这样每个新增组件必须凭 rollout 结果“挣到”自己的位置,避免人工预调 seed 污染自动演化贡献。

限制这也缩窄了结论:论文证明从 bash-only seed 出发能找到更好 harness,不代表从任意成熟生产 harness 出发都能获得相同幅度。
05 · Experience Observability

Agent Debugger:把大量轨迹变成可钻取证据

每轮对 benchmark 中每个任务运行 (k) 次 rollout。Agent Debugger 把轨迹视为可导航文件环境,每条消息单独存放,通过 shell 和脚本寻找关键步骤,并比较同一任务的 passing/failing traces。它输出 per-task 根因报告,再聚合成 benchmark-level overview。

1 · overview.md约 10K token 的入口,按失败模式与任务簇组织全局证据。
2 · task detail解释某个任务为何失败、成功轨迹在哪个步骤分岔。
3 · cleaned trace删除无关噪声但保留调用序列,核对报告是否过度概括。
4 · raw trace摘要仍不足时回到原始消息,保留证据可追溯性。

因此 experience observability 不是用摘要“替代”轨迹,而是让摘要成为索引。Evolve Agent 先消费结构化根因,需要时再 progressive disclosure,避免直接把约千万 token 全量上下文塞进一次调用。

为什么参考运行使用每任务两个 Rollout

0/2、1/2、2/2 提供任务级 pass-rate 信号。1/2 的 partial-pass task 尤其有价值:它说明基础能力已经存在,Debugger 可寻找同一 query 的成功与失败分歧,把偶然成功变成可靠默认策略。

统计边界(k=2) 仍然很小,单任务翻转可能受采样方差影响。89 任务、多轮和下一轮 delta 提供更多证据,但没有消除高方差。
06 · Decision Observability

Change Manifest:把修改理由变成可证伪合约

Evolve Agent 只能写 harness workspace;runs、tracer、verifier 与 LLM configuration 只读,种子 prompt 的原始规则不可删除。它不能通过关闭 verifier、换模型或提高 reasoning budget 获得虚假增益。

每次编辑必须先给出失败证据、根因、针对性修复和预测影响,并写入 versioned manifest。下一轮用 fail→pass 与 pass→fail 的任务变化核验,形成 KEEP、IMPROVE 或 ROLLBACK 的 verdict。

failure_evidence
root_cause
targeted_fix
files[]
predicted_fixes[]
risk_tasks[]
constraint_level

证据:哪些具体 rollout 暴露了共同失败模式。

组件选择:为何修在 middleware,而不是继续堆 prompt。

可证伪预测:下一轮哪些任务应被修好、哪些可能回归。

文件边界:若预测未兑现,精确撤销对应编辑。

Attribution 在新一轮 distillation 之前运行,所以旧 manifest 的 verdict 会进入新证据库。Evolve Agent 不只看到“上轮我为什么这样改”,还看到“我说会修谁,实际修了谁”。

不要混淆Manifest 让决策可审计,不会自动让归因正确。多个组件联动时,文件级 diff 仍不能直接给出严格因果贡献;论文后面用预测 precision/recall 检查这一点。
07 · Algorithm

AHE 外层循环怎样运行

H_best ← H_0
for t = 1 ... N:
    T_t  ← ROLLOUT(M, H_{t-1}, D, k)
    T~_t ← CLEAN(T_t)
    if t ≥ 2:
        V_t ← ATTRIBUTE(C_{t-1}, T_{t-1}, T_t)
        H_{t-1} ← ROLLBACK(H_{t-1}, V_t)
    R_t ← AGENT_DEBUGGER(T~_t)
    (H_t, C_t) ← EVOLVE(H_{t-1}, R_t, V_t)
    COMMIT(H_t, C_t, t)
    if pass@1(T_t) > pass@1(H_best): H_best ← H_t
return H_best
1 · Rollout固定模型与当前 harness 执行全 benchmark
2 · Clean把不同 tracer 输出规范化
3 · Attribute核验上一轮 manifest,先判断再学习
4 · Rollback撤销被拒绝的文件级编辑
5 · Debug + Evolve生成分层证据并修改新组件
6 · Commit记录 workspace 与新 manifest

算法返回 best-so-far,而非最后一轮,因为即时分数不单调。Iteration 1 还并行运行一次 Explore Agent,从 NexAU 源码和公开资料生成框架参考 skill;这些 skill 从第二轮起同样可被修改或删除。

10参考 campaign 的 outer-loop iterations
89 × 2每轮 Terminal-Bench 2 tasks × rollouts
200KCode/Evolve Agent 最大 context
32 h一次主 campaign 的约 wall-clock
08 · Qualitative Mechanism

演化到底改出了什么:从文字规则升级为执行时约束

AHE 在 middleware prompt tool 三层的实际编辑
Figure 5 · 三类真实编辑。Middleware 观察跨步骤风险,prompt 编码 contract-first 等工作原则,shell tool 暴露 timeout 并提供恢复提示。
直接证据这些不是作者预先固定的模板,而是 Evolve Agent 从 rollout failure pattern 中产生的文件级修改。
Iteration 2 · Contract-first + tunable timeoutprompt + tool

针对“用 row count、文件存在等 proxy 代替 evaluator”以及前台长命令耗尽超时,加入 mirror evaluator、no-overfit 规则和 `timeout_ms`。

Iteration 5 · Publish-state guardprompt + tool

Agent 已验证成功却在清理中删除交付物。Prompt 定义通过检查后的状态即 deliverable,shell tool 记录并保护路径。

Iteration 6 · Cross-step risk monitortool + middleware

扩展保护到 evaluator 入口脚本;middleware 识别浅层验证、只测 localhost、自制 proxy、重复超时等跨步模式。

Iteration 8 · Hard block + risk saliencetool + middleware

封堵 override token 绕过;把上一工具步骤的风险在下一次模型调用前提升为 FRAMEWORK reminder。

为什么 publish-state guard 是关键案例

`path-tracing` 已正确生成并自检 `/app/reconstructed.ppm`,却随后为“整理目录”执行删除,verifier 找不到文件。Iteration 5 的 prompt 解释 publish state,tool guard 则在执行点拦截破坏命令;任务由 0/2 变成 2/2。这个因果链说明,知道原则不等于每次都执行原则,关键状态需要在工具层保护。

Middleware 的不可替代性

`mcmc-sampling-stan` 用近似 grid integration 生成看似合理的数字,中止真正 MCMC,再用“文件存在”结束。Middleware 把 proxy validation 与 shallow validation 标出,tool guard 保护真正 evaluator 入口;之后两个 rollout 都运行完整分析并通过 6/6 verifier tests。跨步骤模式无法被单次 tool description 充分表达。

09 · Experimental Design

三组 RQ 分别检验性能、迁移与归因

实验问题与证据矩阵
RQ设置比较指标主张
RQ1Terminal-Bench 2,89 tasks人工 harness;ACE;TF-GRPOpass@1联合 harness 演化是否更强
RQ2SWE-bench-verified;五个 alternate basesFrozen seed / evolved harnesssuccess;tokens/trial是否过拟合一个 benchmark / model
RQ3单组件 swap;9 个相邻轮次Full / component-only;random predictionpass@1;P/R增益位置与自归因可靠性

Terminal-Bench 2 包含 4 Easy、55 Medium、30 Hard,每任务最长 3600 秒。SWE-bench-verified 是 500 个任务、7 个 repository。三个 role agent 均属于 GPT-5.4 模型家族,避免跨模型能力转移;但原文配置口径并不一致:正文 §4.1 称三者均为 high,Appendix Table 4 则把 Code Agent 列为 high、Evolve Agent 列为 xhigh,且两者运行预算不同。

pass@1 口径

任务与 rollout 的二元 reward 平均;基础设施异常和 timeout 计为失败,与 leaderboard 对齐。

Tokens/trial 口径

统计 prompt + completion;基础设施中止 trial 被排除,避免截断调用量扭曲均值。

配置口径可确认三个角色使用同一 GPT-5.4 家族,但不能同时接受“全部 high”和附录中的 Evolve xhigh。报告采用附录细粒度设置,并把正文/附录矛盾保留为不确定性。
解释要求成功率使用严格失败口径,token 效率只覆盖完成 trial;两者不能直接拼成完整部署成本。
10 · RQ1 Main Results

Terminal-Bench 2:总体领先主要来自 Medium,而非所有层级

AHE 十轮演化曲线
Figure 1 · 十轮即时得分与 best-so-far。从 69.7% seed 出发,四个关键机制推动历史最佳逐步提高到 77.0%;即时曲线仍有明显回落。
本文解读“能进化”不等于每步单调变好。稳定性主要由保留 best-so-far、manifest 与 rollback 提供。
Table 1 · Terminal-Bench 2 pass@1(89 tasks)
方法类型AllEasyMediumHard
OpenCodehuman-designed47.2%75.0%52.7%33.3%
Terminus-2human-designed62.9%75.0%74.5%40.0%
Codexhuman-designed71.9%75.0%80.0%56.7%
NexAU0shared seed69.7%87.5%78.2%51.7%
ACEself-evolved68.9%91.7%78.2%48.9%
TF-GRPOself-evolved72.3%100.0%79.4%55.6%
AHEself-evolved77.0%100.0%88.2%53.3%
+7.3 ppAHE aggregate 相对 NexAU0
+10.0 ppMedium 相对 seed,是主要增益来源
-3.4 ppHard 相对 Codex,分层并非全面领先
55 / 89Medium 任务占总体权重最大

直接证据AHE 在所列方法中 aggregate 最高,但 Hard 低于 Codex 与 TF-GRPO。“超过所有基线”只能指总体分数,不应扩展成所有难度层级。

本文解读优化目标是 aggregate pass@1,而 55 个 Medium 决定大部分搜索与优化方向;最终 harness 偏向 Medium 是目标分布的自然结果,不等于它对最长时程任务最稳健。

11 · RQ2 Transfer

Frozen Harness 的迁移:总体正向,但存在明确负迁移

跨 Benchmark:SWE-bench-verified

Table 2/5 · 500 tasks aggregate,均未在 SWE-bench 上重演化
方法演化来源SuccessTokens / trial相对 seed tokenSucc / Mtok
ACETerminal-Bench 274.6%679K+29.1%1.10
TF-GRPOTerminal-Bench 274.2%582K+10.6%1.27
NexAU0seed75.2%526K基准1.43
AHETerminal-Bench 275.6%461K-12.4%1.64

AHE success 只比 seed 高 0.4 pp,明显证据来自 token:完成 trial 的均值从 526K 降到 461K,同时 aggregate success 未下降。论文认为 tool、middleware、memory 把协调行为固化为执行结构,避免 prompt/playbook 在每次调用中重复携带和推导。

负迁移Repository 级并非全正向:scikit-learn 93.8%→87.5%,pydata 77.3%→72.7%,astropy 54.5%→50.0%。Aggregate 不能抹去这些结果。

跨模型:五个 Alternate Operating Points 全部正向

Figure 3 数据重建 · 同一 AHE workspace,不做重演化
Base model / reasoning类型NexAU0AHE frozen增益
GPT-5.4 mediumwithin-family65.7%68.0%+2.3 pp
GPT-5.4 highevolution point69.7%77.0%+7.3 pp
GPT-5.4 xhighwithin-family72.5%74.7%+2.3 pp
gemini-3.1-flash-litecross-family36.5%41.6%+5.1 pp
deepseek-v4-flashcross-family51.7%61.8%+10.1 pp
qwen-3.6-pluscross-family56.2%62.5%+6.3 pp

论文主张跨 family 增益说明组件编码了通用 coordination patterns,而非 GPT-5.4 专属表达习惯。

限制GPT-5.4 family 内增益 medium +2.3、high +7.3、xhigh +2.3,并不单调。Step budget 与 timeout 为 high 调整,结果混合了 harness portability 和 operating-point coupling。

12 · RQ3a Component Ablation

增益储存在 Tools、Middleware 与 Memory,而不是单独 Prompt

Table 3 · 单组件从 AHE swap 到 NexAU0,其余保持 seed
Variant类型AllEasyMediumHard
NexAU0seed69.7%87.5%78.2%51.7%
+ memory only12 boundary lessons75.3%50.0%83.6%63.3%
+ tool only1364-line shell73.0%75.0%87.3%46.7%
+ middleware onlyfinish/risk hooks71.9%100.0%81.8%50.0%
+ system prompt only79 lines discipline67.4%75.0%78.2%46.7%
AHE fulljoint harness77.0%100.0%88.2%53.3%
+5.6 ppMemory-only aggregate,相对 seed
+3.3 ppTool-only aggregate
+2.2 ppMiddleware-only aggregate
-2.3 ppSystem-prompt-only aggregate

这是论文支持“harness 是独立优化层”的核心消融。非 prompt 组件单独移植仍有增益,prompt 单独移植反而退化,说明文字策略的可执行性依赖外围机制。

非加和交互三个正向单组件增益相加为 +11.1 pp,高于 full AHE 的 +7.3 pp。Memory、middleware 与 prompt 都推动 closure verification,叠加后可能重复检查、耗尽 Hard 任务 budget。

本文解读Single-component swap 提高可解释性,但不是严格因果分解。组件语义互相依赖,独立移植表现不等于它在 full harness 中的 Shapley-style 贡献。

13 · RQ3b Decision Quality

它能预测部分修复,却看不见大多数回归

AHE fix 与 regression 预测质量
Figure 4 · 9 个 evaluation rounds 的平均 precision/recall。Fix prediction 约为随机基线 5 倍;regression prediction 只约为随机的 2 倍。
33.7%Fix precision;random 6.5%
51.4%Fix recall;random 10.6%
11.8%Regression precision;random 5.6%
11.1%Regression recall;random 5.4%

直接证据Fix targeting 不是随机猜测,但 33.7% precision 仍意味着多数 predicted fixes 没有按预期发生。它是有信息的噪声信号,不是可靠因果模型。

Appendix D 的累计结果更直接:9 轮共有 43 个 unique regression predictions,只有 5 个命中;真实发生的回归中有 40 个未被预见。Manifest 较会解释为什么修改应当帮助,却不会系统枚举同一修改的破坏面。

核心未解问题AHE 已建立审计基础设施,但尚未建立准确的风险 world model。下一步需要组合干预、主动回归测试、反事实评测或多目标约束,而不是只让 Evolve Agent 写更长理由。
14 · Efficiency Boundary

Frozen 推理 Token 更少,不代表完整演化免费

SWE-bench-verified 上 AHE tokens/trial 比 seed 少约 12%、比 ACE 少约 32%、比 TF-GRPO 少约 21%,Success/Mtok 最高为 1.64。该结果支持“把协调策略固化进执行结构,而不是每次在 prompt 中重推导”。

Frozen harness 推理成本Table 2/5 统计完成 trial 的模型 prompt + completion。这里 AHE 有明确优势。
一次演化 campaign10 轮 × 89 tasks × 2 rollouts,外加 Debugger、Evolve 与 Explore Agent,约 32 小时;未给完整美元或总 token 账单。
执行基础设施成本独立 E2B sandbox、每任务最长 1 小时、rollout 并发 96;不在简单 tokens/trial 指标中。
口径限制Token 均值排除 infrastructure-aborted trials,而 pass@1 将其计为失败。效率结论适用于完成运行的模型调用量,不等同于端到端生产总成本。
15 · What The Paper Establishes

哪些结论被直接证据支持,哪些仍是推论

直接建立

固定参考设置中 69.7%→77.0%;非 prompt 组件承载主要增益;frozen workspace 在跨模型设置均为正向。

合理提示

经验可从自然语言进一步“编译”为 tool、middleware 与 memory,形成模型权重之外的适应层。

尚未证明

任意生产 harness 都会同幅提升;observability 是唯一瓶颈;每轮编辑都有准确因果归因。

四个需要收紧的论文主张

Observability 是主要瓶颈系统结果支持结构化闭环有效,但没有在相同 harness 上系统改变 Evolve Agent 能力,不能完全排除 optimizer capability。

组件编码通用工程经验跨 benchmark/model 提供证据,但仅覆盖两个 benchmark,且 repository 级存在负迁移。

优于 prompt-only 是因为编辑层更广组件消融方向一致,但 AHE 同时增加了 Debugger、manifest、rollback 与 Explore Agent,没有逐项正交控制。

回滚带来稳定演化Best-so-far 上升,但即时曲线波动。稳定更多来自保存历史最好点与可撤销工程,而不是每步编辑不伤害系统。

16 · Limitations & Critique

AHE 仍是高成本、高方差的研究原型

论文明确承认

Benchmark scope

仅在 Terminal-Bench 2 演化,在 SWE-bench-verified 迁移;更多语言、生产库与 human-in-loop 未测试。

Operating point

Step budget 与 timeout 针对 GPT-5.4 high;跨模型数字混合了 harness portability 与预算耦合。

Governance

Workspace 权限、只读 verifier、Git 与 rollback 不是完整安全栈;长期清理和滥用防护不成熟。

进一步的批判性判断

单次 campaign77.0% 来自一次 10 轮 reference run,且每任务 (k=2)。没有多随机种子重复整套演化的均值和置信区间,不能把 best configuration 当作稳定期望。

系统复杂度ACE 与 TF-GRPO 使用同 seed 是重要公平条件,但 AHE 开放更多组件并加入 Debugger、manifest、rollback、Explore Agent。结果证明完整系统更强,不能精确分摊三种 observability 的边际贡献。

回归盲区Regression recall 只有 11.1%,大部分破坏必须等全量 benchmark 后发现。昂贵环境需要提交前静态检查、差分执行与针对风险面的主动测试。

目标分布偏置55/89 的 Medium 支配 aggregate pass@1。Memory-only 在 Hard 更强却被 full harness 部分抵消,提示实际部署需要分层约束或多目标优化。

17 · AI Self-Evolution Map

AHE 在 AI 自进化方法中的位置

维度
ACE
TF-GRPO
AHE
进化对象
Itemized context / playbook
轨迹策略与语义优势
完整 harness 文件与执行结构
经验写回
Reflector → Curator delta → merge
组内相对反馈强化有效决策
Debugger evidence → edits → manifest verdict
强项
可读、增量、在线上下文适应
训练外利用多轨迹反馈
经验可编译为 tool / middleware 硬约束
边界
依赖反馈质量,知识仍在上下文
编辑表面较窄
搜索昂贵、非加和、回归预测弱

AHE 可以理解为 experience compilation:ACE 把经验写成下一次供模型阅读的知识,AHE 进一步把重复经验编译成工具接口、状态机、hook 和硬保护。两者不是互斥替代;完整系统可能需要 playbook 层的快速记忆与 harness 层的慢速结构固化。

最终判断:AHE 最可靠的贡献不是证明 Agent 已能稳定改进自己,而是给出一条可执行的工程原则:自进化对象必须外部化,经验必须结构化,修改必须在下一轮被证伪。这样,模型之外的 harness 才可能持续积累能力,而不是堆出越来越长、越来越难归因的 prompt。