01 · AGENTIC HARNESS ENGINEERINGObservability-Driven Automatic Evolution

把 harness 变成可编辑、可追责、可回滚的优化对象

AHE 不训练 base model。它让另一个 agent 读执行证据,直接修改 prompt、tool、middleware 与 memory,再用下一轮真实 task delta 判断这次修改是否成立。

作者兴趣度 10 / 10
69.7 → 77.0Terminal-Bench 2 pass@1
32 h89 题 × 2 rollouts × 10 rounds
Lin et al., arXiv:2604.25850v4
02 · MOTIVATION模型固定,优化模型外的执行系统

自动改 prompt 很容易;自动改完整 harness 有三个结构性难点

HETEROGENEOUS ACTION SPACE

修改面不是一种文本

system prompt、tool schema、Python implementation、middleware、skills、sub-agent config 与 memory 的语义完全不同。

+
WEAK FEEDBACK

轨迹长,因果链又散

一次 rollout 可跨数百步。最后的 PASS/FAIL 很难说明是哪条命令、哪个 guard 或哪次 cleanup 造成结果。

论文 §1–3。
03 · CORE IDEA每个修改都要能被下一轮证伪

三个 observability 分别解决“改什么、根据什么改、怎么知道改对了”

01 / COMPONENT

组件可观测

七类组件都落成固定路径下的文件。一个逻辑修改对应一个 Git commit,可以逐文件回滚。

输出:明确、可执行的修改空间
02 / EXPERIENCE

经验可观测

Agent Debugger 把约 10M tokens 的 raw traces 压成 benchmark overview、per-task report,并保留逐步回钻。

输出:带根因的证据语料
03 / DECISION

决策可观测

change manifest 写下 failure evidence、root cause、predicted fixes 与 risk tasks;下一轮按 task flip 结算。

输出:可证伪的 edit contract
论文 §3;Figure 2。
04 · ORIGINAL FIGURE 2Components → traces → evidence → edits

一个闭环里,三种 artifact 都能被另一个 agent 直接读取

AHE 论文 Figure 2
论文 Figure 2,作者官方仓库版本。左侧是可编辑 harness,右侧把 raw trace 压成可回钻证据,再由 Evolve Agent 写回组件。
官方仓库 assets/figures/method.png,MIT。
05 · ALGORITHM 1rollout → clean → attribute → distill → evolve → commit

第 t 轮先评估第 t-1 轮的修改,再生成第 t 轮候选

1 · ROLLOUT

每题 k 次

同一个当前 harness 在 fresh E2B sandbox 中执行。

2 · CLEAN

规范化轨迹

原始 message、tool output 与 verifier result 写成文件。

3 · ATTRIBUTE

结算旧预测

用 task-level flips 检查上一轮 manifest,回滚无效修改。

4 · DISTILL

压成证据层

先读 overview,需要时回钻 detail 与 raw trace。

5 · EVOLVE

修改 harness

选正确组件层,写 change manifest。

6 · COMMIT

版本化

一项逻辑修改一个 commit;保留 best-so-far。

论文用 k = 2。因此每题不是只有一个 0/1,而是能暴露“同题一条过、一条不过”的 partial-pass 信号。
论文 Algorithm 1;Appendix A。
06 · EDIT SURFACE目录结构本身就是控制面

同一种失败模式,应落到最有执行力的组件层

systemprompt.md全局行为规则
tool_descriptions/调用前可见契约
tools/能力与硬拦截
middleware/跨步骤状态和注入
skills/按需工作流
sub_agents/隔离式委派
LongTermMEMORY.md跨任务边界案例
Git historydiff 与回滚边界
OVERVIEW

跨 89 题汇总 recurring failure classes。

DETAIL/{TASK}.MD

逐题根因、pass/fail 对照与证据定位。

RAW TRACE

只有摘要不足时才回看原始消息和工具调用。

READ-ONLY BOUNDARY

runs、verifier、tracer、model config 不可写,防止 optimizer 改考试本身。

论文 §3.1–3.2;Appendix B.2;官方代码。
07 · DECISION CONTRACT理由不算证据,下一轮 task delta 才算

每个 edit 在落地时就写明:预计修谁,也可能伤到谁

// change_manifest.json
{
  "id": "chg-8",
  "files": ["tools/.../run_shell_command.py"],
  "failure_pattern": "post-validation state destruction",
  "predicted_fixes": ["path-tracing", ...],
  "risk_tasks": [...],
  "constraint_level": "tool_impl"
}
EFFECTIVE预测任务全部从 fail 变 pass,且风险未命中。
PARTIALLY_EFFECTIVE / MIXED只修到部分任务,或同时出现预测内 regression。
INEFFECTIVE / HARMFUL没有命中 predicted fix,或只触发 regression。文件级 rollback。
Appendix B.2;官方 evolve.py: evaluate_changes。
08 · CASE 1正确产物被自己的 cleanup 删除

path-tracing:从 0/2 到 2/2,靠的是执行层保护

任务与 judge

Agent 要生成 /app/reconstructed.ppm。Terminal-Bench 2 verifier 只读这个文件,并与 reference image 做逐像素比较。

失败 rollout 已经生成正确图片并做过自检,随后为了“清理”执行 rm -rf ... /app/reconstructed.ppm。

S1 · BUILD

render 正确,结构性 acceptance check 通过。

F1 · DESTROY

最后一步 cleanup 删除唯一 deliverable;shell exit code 为 0,Agent 误以为可提交。

HARNESS EDIT

final/evaluator-style check 通过后,shell tool 记录 protected files/roots;后续 destructive command 在执行前被拦截。

PASS

Agent 收到明确 block,保留图片并结束。下一轮 2/2,verifier 找到且逐像素匹配。

论文 Appendix C.1.2、C.2.2;官方 evolved_harness。
09 · CASE 2“文件存在”不等于真实计算正确

mcmc-sampling-stan:proxy result 骗过自检,骗不过 verifier

任务与 judge

安装 rstan 2.32.7,用 30 条观测拟合 hierarchical beta-binomial model,写出 alpha、beta posterior means。

Verifier 会重新运行 analysis.R,要求 alpha ∈ [2.84, 2.91],beta ∈ [16.1, 16.7]。

FAIL TRACE

用 grid integration 得到 proxy 数值并写文件;真实 MCMC 放后台后被提前 kill。最终只检查“文件存在且可解析”。Verifier 重跑未收敛脚本,得到约 1e19 / 2.60e17,2/6 tests fail。

TOOL + MIDDLEWARE

publish-state guard 保护 analysis.R;ExecutionRiskHintsMiddleware 识别 inline proxy 与 shallow validation,并在下一次 model turn 以 FRAMEWORK reminder 提升显著性。

PASS TRACE

完整跑 iter=100000,再在 /tmp 独立复跑,约 2.872 / 16.43;6/6 tests pass,后四轮保持 2/2。

论文 Appendix C.1.3、Figure 7、C.2.3。
10 · ORIGINAL FIGURE 5middleware / prompt / tool

同一个 failure pattern,可以用软规则、动态提醒或硬拦截处理

AHE 论文 Figure 5
论文 Figure 5。作者列出三种真实修改:execution-risk middleware、7 条 prompt rules、带 timeout 的 shell tool。
官方仓库 assets/figures/case_study.png,MIT。
11 · TABLE 1 REDRAWNTerminal-Bench 2,89 tasks

同一 GPT-5.4 high,AHE 达到 77.0%,但 Hard 仍低于 Codex

Harness / loopAllEasyMediumHard
OpenCode47.275.052.733.3
Terminus-262.975.074.540.0
Codex71.975.080.056.7
NexAU₀69.787.578.251.7
ACE68.991.778.248.9
TF-GRPO72.3100.079.455.6
AHE77.0100.088.253.3
根据论文 Table 1 重绘;每题 k=2,timeout / infra abort 计失败。
12 · TRANSFER冻结 harness,不再 evolution

跨 benchmark 的主要收益是省 token;跨模型则五个 operating point 全部为正

AHE 论文 Figure 3
论文 Figure 3。Terminal-Bench 2 上,GPT-5.4 medium/high/xhigh 与三个跨 family 模型均高于各自 NexAU₀ seed。SWE-bench Verified 上 AHE 75.6% vs seed 75.2%,tokens/trial 526k → 461k。
论文 §4.3、Table 2、Figure 3。
13 · ABLATION单组件有效,不代表叠加更好

memory、tool、middleware 都能单独增益;system prompt 单独使用会退化

NexAU₀
69.7
+ memory only
75.3
+ tool only
73.0
+ middleware only
71.9
+ system prompt only
67.4
AHE full
77.0
三个正向单组件增益相加是 +11.1 pp,高于 full AHE 的 +7.3 pp。作者认为多层都在做 closure verification,叠加后会重复消耗 Hard task 的 turn budget。
根据论文 Table 3 重绘。
14 · TAKEAWAYS值得学的是实验结构,也要看清它没证明什么

这是一套强工程方法;因果归因、成本和泛化仍留下明显缺口

WHY IT MATTERS完整 harness 可被自动修改工作面覆盖 prompt、tool、middleware、skill、sub-agent 与 memory,且每次修改可审计。
ATTRIBUTION GAP修复预测强,回归预测弱fix precision / recall 为 33.7% / 51.4%;regression 为 11.8% / 11.1%。
EVIDENCE LIMIT单次 10-round campaign没有多 seed evolution;SWE-bench aggregate 只高 seed 0.4 pp,且三个小 repo 退化。
OPERATING POINTbudget 与模型耦合同 family 增益不是单调的;更强 reasoning 可能把 trial 推过 timeout。
论文结论 1 / 14