01 · AGENTIC HARNESS ENGINEERINGObservability-Driven Automatic Evolution

让模型依据失败记录修改执行程序,再核验和回滚

AHE 不更新模型权重。维护模型读执行记录,改提示、工具、调用前后处理和记忆;再看下一轮哪些题由失败变成功,哪些反而退化。

作者兴趣度 10 / 10
69.7 → 77.0178 次尝试的平均成功率,称为 pass@1
32 h89 题,每题 2 次完整尝试,共 10 轮修改
Lin et al., arXiv:2604.25850v4
02 · 研究问题模型固定,优化模型外的执行系统

改完整执行程序,至少要处理两类难点

可修改对象不同

各类文件有各自的作用

系统提示、工具参数、Python 实现、调用处理、技能、子 Agent 配置和记忆,不能按同一种文本修改。

+
成败不足以定位错误

轨迹长,关键步骤难找

一次任务可跨数百步。最后的成败很难说明是哪条命令、哪次拦截或清理造成结果。

论文 §1–3。
03 · 核心方法每个修改都要能被下一轮证伪

三个可观测层分别说明:能改哪里、哪里出错、改后怎样核验

01 / 可修改文件

知道能改哪里

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

输出:文件路径与修改范围
02 / 执行记录

知道哪里出错

负责整理记录的模型称为 Agent Debugger。它将约 1,000 万 tokens 的记录整理为总览与逐题报告,仍可回查原步骤。

输出:错误经过与证据位置
03 / 修改预测

知道改后怎么验

修改清单写出错误证据、原因、预计修好的题与可能退化的题;下一轮按实际成败变化核验。

输出:下一轮可检验的预测
论文 §3;Figure 2。
04 · 原论文 Figure 2组件 → 执行记录 → 分析报告 → 修改

维护模型可以直接读取组件文件、执行证据和修改预测

AHE 论文 Figure 2
论文 Figure 2,作者官方仓库版本。左侧是模型外的执行系统,称为 harness;右侧把原始记录整理成报告,再由负责维护的 Evolve Agent 修改组件文件。
官方仓库 assets/figures/method.png,MIT。
05 · 一轮修改执行 → 整理 → 核对 → 分析 → 修改 → 保存

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

1 · 执行

每题 k 次

当前程序在新建 E2B 隔离工作区执行。

2 · 整理

规范化轨迹

把消息、工具输出和验收结果写成文件。

3 · 核对

结算旧预测

核验上一轮清单,并记录已评测的最佳版本。

4 · 分析

生成报告

先读总览,必要时查逐题报告和原始记录。

5 · 修改

改组件文件

维护模型按报告决定撤销或重做哪些修改。

6 · 保存

独立提交

一项修改一个提交。新文件等下一轮执行后验收。

论文用 k = 2,可对照同题一过一错的尝试。固定代码先给当前输入版本计分,再写下一轮文件;修改效果报告不会自行撤销文件。
论文 Algorithm 1、Appendix A;按 evolve.py @8b2a55d 的实际版本顺序解释。
06 · 修改范围固定目录明确哪些组件可以修改

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

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

汇总 89 题反复出现的错误类型。

DETAIL/{TASK}.MD

逐题错误原因、成败对照与证据位置。

RAW TRACE

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

READ-ONLY BOUNDARY

运行记录、验收器、追踪器和模型配置不可改,避免维护模型改变考试本身。

论文 §3.1–3.2;Appendix B.2;官方代码。
07 · 修改清单下一轮真实成败变化才是核验依据

每次修改都写明:预计修好哪些题,哪些题可能退化

// 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:预计修复全命中预计修复题全部转为成功,声明的风险题未退化。未声明的退化另列报告。
PARTIALLY_EFFECTIVE / MIXED前者只修好部分题;后者修好的同时,也有声明的风险题退化。
INEFFECTIVE / HARMFUL前者没有修好预计题;后者还出现声明的退化。维护模型决定怎样撤销或重做。
Appendix B.2;evolve.py: evaluate_changes。左侧为字段摘录,含省略号,不是可运行 JSON。
08 · 真实案例一正确产物被最后的清理动作删除

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

任务与验收程序

Agent 要生成 /app/reconstructed.ppm。任务自带的验收程序称为 verifier,只读这个文件,与参考图逐像素比较。

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

生成与自检

图片生成正确,自检也已通过。

提交前删除

最后清理删掉唯一交付文件;命令退出码仍为 0,Agent 误以为可提交。

修改执行工具

最终检查通过后,shell 工具记录要保护的文件和目录;后续删除命令在执行前被拦截。

修复后通过

Agent 收到拦截提示,保留图片。下一轮 2/2:验收器找到文件,逐像素匹配。

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

mcmc-sampling-stan:近似结果骗过自检,骗不过重新执行

任务与验收程序

安装 rstan 2.32.7,用 30 条观测估计不同观测的成功概率分布,即 beta-binomial 模型。alpha、beta 是描述该分布的参数。

要求通过反复采样估计参数(MCMC)。Verifier 重跑 analysis.R,要求均值 alpha ∈ [2.84, 2.91]、beta ∈ [16.1, 16.7]。

失败经过

网格积分得到近似值后写文件,后台 MCMC 却被提前终止。自检只验文件存在;Verifier 重跑得到约 1.28e19 / 2.60e17,六项检查失败两项。

修改工具与运行时检查

执行保护器保留 analysis.R;运行时检查识别替代计算和只验文件存在,在下一次回复前提醒。

修复后通过

完整跑 iter=100000,再在 /tmp 独立复跑,约 2.872 / 16.43;六项检查全过,后四轮保持 2/2。

论文 Appendix C.1.3、Figure 7、C.2.3。
10 · 原论文 Figure 5运行时提醒 / 提示规则 / 工具实现

同一种错误,可以用提示规则、动态提醒或执行前拦截处理

AHE 论文 Figure 5
论文 Figure 5。作者列出三种真实修改:执行风险提醒、7 条提示规则、带超时的 shell 工具。
官方仓库 assets/figures/case_study.png,MIT。
11 · 主结果全部 89 题都参与修改与最佳版本选择,非独立测试集

同一 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 重绘。pass@1 = 成功尝试数 / (89×2);超时与基础设施异常均计失败。
12 · 迁移实验冻结执行程序,不再继续演化

换任务集主要省 token;换模型的五种配置均有增益

AHE 论文 Figure 3
论文 Figure 3。换模型或推理强度,各配置都高于自身初始 harness。独立的 SWE-bench Verified 500 题上,75.2% → 75.6%,平均每次完整尝试 526k → 461k tokens。
论文 §4.3、Table 2、Figure 3。
13 · 组件对照单组件有效,不代表叠加更好

记忆、工具、调用处理都能单独增益;系统提示单独使用反而退化

NexAU₀
69.7
只加记忆
75.3
只加工具
73.0
只加运行时检查
71.9
只换系统提示
67.4
完整 AHE
77.0
单组件增益相加 +11.1 个百分点,完整系统只增 +7.3。Hard 只加记忆为 63.3%,完整 AHE 为 53.3%;作者观察到多层重复要求检查,消耗交互预算。
根据论文 Table 3 重绘。
14 · 结论与限制值得学的是实验结构,也要看清它没证明什么

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

修改对象完整执行程序可被自动修改覆盖提示、工具、运行时检查、技能、子 Agent 和记忆;每次修改可追查。
预测能力有限修复预测强,退步预测弱修复预测精确率/召回率为 33.7%/51.4%;退步预测仅 11.8%/11.1%。
独立证据仍少一次十轮演化没有重复实验;独立 SWE-bench 总分只高 0.4 个百分点,三个小仓库下降。
配置需核对推理强度影响时间预算更长推理可能超时。正文称各角色 high,Table 4 却列维护模型 xhigh,存在记载差异。
论文结论 1 / 14