核心发现
一个由中国团队(复旦、北大、上海奇绩)提出的新框架 AHE(Agentic Harness Engineering),在不触碰底层模型、不修改系统提示词的前提下,仅通过自动进化 Agent 的周边组件,就在 32 小时内超越了所有人工调优的 coding agent harness。
关键数字:
- Terminal-Bench 2 上 pass@1 从 69.7% → 77.0%(10 轮迭代)
- 超越 Codex-CLI(71.9%)、ACE(68.9%)、TF-GRPO(72.3%)
- SWE-bench-verified 上达到 75.6%,同时 token 消耗比 seed 减少 12%
更反直觉的是:单独优化系统提示词反而会让性能下降 2.3 个百分点。
什么是 Harness?
论文把 harness 定义为模型之外的一切:系统提示词、工具定义、工具实现、中间件、技能、子 Agent 配置、长期记忆。
生产团队目前靠手工调优这些组件——看轨迹、改文件、再跑一轮。这个过程慢、散、不可追溯。AHE 的目标是把这套流程自动化。
三层可观测性设计
AHE 的核心架构建立在可观测性之上,每一层都产出结构化、文件级产物,供下一个 Agent 读取:
1. 组件可观测性(Component Observability)
基于 NexAU 框架,harness 的七个组件类型以文件形式暴露:
- 系统提示词
- 工具描述
- 工具实现
- 中间件
- 技能
- 子 Agent 配置
- 长期记忆
每个故障模式 cleanly 映射到一个组件类。每次逻辑编辑对应一次 git commit,文件级 diff 和回滚天然免费。
2. 经验可观测性(Experience Observability)
Agent Debugger 框架把原始 rollout 轨迹(百万级 token)蒸馏成分层证据库:
- 每条轨迹消息独立成文件
- 每任务根因报告识别故障模式
- 基准级概览聚合所有报告,作为 evolve agent 的入口
原始轨迹保留用于验证,但从不作为第一读取源。
3. 决策可观测性(Decision Observability)
每次编辑附带 change_manifest.json 条目,记录:
- 针对的故障模式
- 预测会修复的任务
- 预测会引入的回归风险
- 约束级别(提示词/工具描述/工具实现/中间件/技能)
下一轮迭代中,loop 将预测修复和回归与实际任务级增量做交集。预测未兑现的编辑在文件粒度自动回滚。自我辩解变成了可测量。
关键约束:防止作弊
Evolve agent 只能在 workspace/ 目录内写入。runs 目录、tracer、verifier、LLM 配置均为只读。seed 系统提示词不可删除。
这些约束阻止了无约束自修改器可能走的捷径——比如禁用 verifier 或提高推理预算——确保每次记录到的增益都可归因于 harness 编辑。
四个从失败到修复的轨迹
论文追踪了第 2、5、6、8 轮迭代的四个典型修复案例,揭示了一个共同模式:
db-wal-recovery(第 2 轮) Agent 需要从损坏的 SQLite WAL 重建数据库。失败轨迹凭空捏造缺失行(value = id × 100),用行数而非 verifier 的值断言做自检。修复是向系统提示词追加 68 行八条规则——契约优先、镜像 evaluator、泛化而不过拟合可见样本。这些规则并非针对 SQLite/WAL/此任务,而是为另一簇部分通过任务提出的,意外迁移后 db-wal-recovery 从 1/2 翻转为 2/2 并保持。
path-tracing(第 5 轮)
Agent 渲染出正确图像并自检通过,然后执行 rm -rf 清理并提交。Verifier 在磁盘上找不到文件,拒绝 rollout。Seed 提示词已有「不要销毁已验证状态」的建议,但缺乏执行时机制。
第 5 轮在 shell 工具内安装了 publish-state guard:当 shell 观察到成功的 evaluator 风格检查时,解析验收命令中的保护路径并拦截后续删除。任务从 0/2 → 2/2。
mcmc-sampling-stan(第 6 轮) Agent 用网格积分计算假后验,启动真实 MCMC 作为后台任务,在收敛前杀死它「以保留交付物」,提交假的。连续五轮失败。
第 6 轮用两个组件联合关闭:publish-state guard 扩展保护脚本入口点(analysis.R),新的 ExecutionRiskHintsMiddleware 监控实时命令历史中的七种跨步风险模式(代理验证器、浅层验证、仅 localhost 检查、对同一错误的重复重试等)。任务从 0/2 → 2/2 并保持。
configure-git-webserver(第 8 轮)
Agent 搭建好 webserver,用 localhost curl 自检通过,然后执行 ALLOW_POST_SUCCESS_RESET 前缀的清理命令,擦除 live web root 并重置 git ref「为评分留下干净仓库」。外部 verifier 得到 404。
第 8 轮修补 override token:保护输出的删除和保护 root 的重置变为硬拦截,token 无法擦除。before_model hook 将执行风险警告提升为下一模型轮次可见的 FRAMEWORK 提醒。第 8 轮总分达到 76.97,为本次运行最高。
共同模式:提示词说该避免什么,但执行时强制才是改变结果的东西。四个获胜修复中有三个在工具实现或中间件层面交付。
跨基准与跨模型迁移
跨基准(SWE-bench-verified)
无需重新进化,直接迁移 evolved workspace:
- 500 任务、7 个 repo 上达到 75.6%(最高 aggregate)
- Token 消耗比 seed 少 12%,比 TF-GRPO 少 21%,比 ACE 少 32%
- 增益集中在 django 和 sphinx-doc 两个最大、最耗 token 的 repo
成本效率(Succ/Mtok):AHE 1.64 > NexAU₀ 1.43 > TF-GRPO 1.27 > ACE 1.10
跨模型迁移
同一个 evolved workspace 在五个 alternate base 上评估,全部正向增益:
- deepseek-v4-flash: 51.7% → 61.8% (+10.1pp)
- qwen-3.6-plus: 56.2% → 62.5% (+6.3pp)
- gemini-3.1-flash-lite-preview: 36.5% → 41.6% (+5.1pp)
- GPT-5.4 medium: +2.3pp
- GPT-5.4 xhigh: +2.3pp
越弱的 base 获益越大——因为它们依赖 AHE 在工具、中间件和记忆中固定的协调模式。更强的 base 能从提示词中廉价地重新推导相同协调。
组件消融:增益到底在哪?
将单个 AHE 组件 swap 进 bash-only seed:
- 长期记忆单独: +5.6pp
- 工具单独: +3.3pp
- 中间件单独: +2.2pp
- 系统提示词单独: -2.3pp
ACE 和 TF-GRPO 从不编辑的 harness 组件,恰恰是增益所在。
但组件叠加并非完全可加:三个正增益之和为 +11.1pp,完整 AHE 只达到 +7.3pp,stacking cost 为 3.8pp。Evolve agent 优化的是由 55 个 Medium 任务主导的 aggregate,因此收敛到 Medium 偏重的 trade-off,部分牺牲了 Hard 上的记忆效应。
局限与未完成
回归盲区(Regression Blindness) 九轮评估中,evolve agent 发出 43 条独特回归预测,仅 5 条兑现(precision 11.6%)。40 条未预见回归实际发生(recall 11.1%)。修复预测是随机的 5 倍,回归预测仅是随机的 2 倍。
Agent 能辩解为什么编辑会帮助,但无法可靠命名同一编辑会打破什么。
基准范围 完整进化运行在 Terminal-Bench 2 上。跨基准和跨模型迁移证据令人鼓舞,但非 Terminal-Bench-2 的进化运行才能关闭 benchmaxxing 问题。作者明确标记此为泛化风险。
Hard 层级滑落 AHE 在 Hard 上 53.3% 略低于 Codex-CLI 的 56.7%。记忆、中间件和系统提示词都推向相同的 closure-style 验证,消耗 turn budget 做冗余重检。仅将 AHE 的长期记忆 swap 进 seed(无其他组件)就已超越 Codex on Hard。
评价与建议
论文建议将 AHE 视为受控研究原型——它已经产出一个值得研究的冻结 harness,但在第二个基准上的进化运行完成之前,不宜作为部署级自改进 loop 采纳。
关闭以下任一缺口即可推动其从研究原型走向生产级:
- 回归盲区
- 第二基准进化运行
值得关注的实体是 NexAU——loop 运行的 substrate,因为框架的覆盖范围随多少生产 Agent 采纳文件级组件契约而扩展。
适用团队:运行长周期 coding agent 的多步终端或仓库工作流、手工调优提示词超越粗略初稿的任何人、评估自进化 loop 作为微调替代品的 ML 工程师、研究无需梯度更新的测试时适应面的研究者。
不适用:短周期 API 调用链的 agent loop、没有 rollout 轨迹或二进制 pass/fail verifier 信号的团队、已投入提示词-only 框架(ACE、GEPA、DSPy)且无法打开 harness 组件的团队。