Self-Harness 让同一个固定模型既执行任务,也从失败中提出并验证自己的 harness 修改。本文拆解 weakness mining、最小编辑、双 split promotion gate、九组结果,以及 held-out 被反复用于筛选的关键边界。
把 harness code 本身放进评测与优化循环
先分清谁在写代码、谁在执行任务
评测对象
“Self” 指同一个固定 base model 同时充当被改进的 Agent 和 proposer。它不更新模型参数,也不借助更强外部模型;变化全部留在 prompt、工具、验证和控制逻辑等 harness 表面。
核心问题
因为最佳 harness 往往依赖模型自身的行为习惯,而为每个新模型手工重做 runtime 很难扩展。 Self-Harness 让当前模型读自己的失败轨迹、概括反复出现的机制,再提交最小修改;如果修改让任一 split 提升且两个 split 都不退,才进入下一轮。
一条稳定的因果链:证据 → 修改 → 评测 → 冻结
从任务、轨迹或运行状态定位问题。
改 prompt、tools、control flow、memory 或 verifier。
在固定模型与环境中运行候选。
选择版本并在未见任务上检查。
四个数字先建立结果量级
相邻工作的边界决定分数能否比较
Q2. 它与 prompt search、Harness-R1 和一般自动修复有何不同?
它优化完整 harness,但搜索策略比开放式代码演化更保守。 普通 prompt search 只改文本;Harness-R1 训练另一个 9B engineer;HarnessFix 显式构造 HTIR 并映射到修复算子。Self-Harness 不训练新模型,也不用更强 proposer,依靠 failure clustering 与 regression gate 控制风险。
真正的协议藏在可见与隐藏信息之间
协议与信息边界
一轮分三步:从轨迹提取 weakness signature,并行提出互异的最小 edit,再用 held-in / held-out 双重门验证。 signature 由 verifier cause、行为因果状态和抽象 mechanism 组成,只有精确匹配的失败才聚为一类。多个单独通过且兼容的 edit 可以合并。 accept(e) ⇔ held-in(e) ≥ baseline ∧ held-out(e) ≥ baseline ∧ 至少一边严格提升 这个 gate 很直观,但名为 held-out 的 split 每轮都会参与 candidate promotion。它实际是搜索期 validation / regression set,不是最终只看一次的 blind test。
主结果之外,更重要的是版本怎样失败
结果怎么读
MiniMax M2.5、Qwen3.5-35B-A3B、GLM-5 在 Terminal-Bench 2.0、SWE-bench Verified、AppWorld 的九种组合全部同时提高 held-in 与 held-out。 最大绝对跃升是 GLM-5 AppWorld 44.4% → 85.0%。 保留下来的机制 Terminal-Bench 的 edit 提前创建必需 artifact、限制无尽 tool loop、先检查 dependency;SWE-bench 加入 diff/test verifier subagent;AppWorld 补 pagination 与“只能在真实 action effect 后完成”的 contract。它们都不是泛泛的“多思考”,而是对具体 runtime failure 的控制。 但每个 candidate 通常只有两次 attempt,随机 agent score 容易让 promotion gate 接受偶然提升。九组结果也都在三个高度工程化 benchmark 内,尚未证明跨域机制迁移。
哪些结论成立,哪些还没有被证明
证据支持
MiniMax M2.5、Qwen3.5-35B-A3B、GLM-5 在 Terminal-Bench 2.0、SWE-bench Verified、AppWorld 的九种组合全部同时提高 held-in 与 held-out。 最大绝对跃升是 GLM-5 AppWorld 44.4% → 85.0%。 保留下来的机制 Terminal-Bench 的 edit 提前创建必需 artifact、限制无尽 tool loop、先检查 dependency;SWE-bench 加入 diff/test verifier subagent;AppWorld 补 pagination 与“只能在真实 action effect 后完成”的 contract。它们都不是泛泛的“多思考”,而是对具体 runtime failure 的控制。 但每个 candidate 通常只有两次 attempt,随机 agent score 容易让 promotion gate 接受偶然提升。九组结果也都在三个高度工程化 benchmark 内,尚未证明跨域机制迁移。
不能外推
需要增加从未参与筛选的 final test,并用更多 seed 或序贯检验决定 promotion。 风险更高的修改还应检查 latency、token、权限和安全回归;pass rate non-regression 无法覆盖数据泄漏、过度工具调用或静默改变任务语义。 官方仓库 commit 2720dbb3… 可访问。后续复现实验应保存所有候选、失败候选与随机种子,而不只发布最终 harness,才能判断搜索效率和选择偏差。
下一轮实验应该补什么
Q5. 怎样修正 held-out gate 带来的评估偏乐观?
需要增加从未参与筛选的 final test,并用更多 seed 或序贯检验决定 promotion。 风险更高的修改还应检查 latency、token、权限和安全回归;pass rate non-regression 无法覆盖数据泄漏、过度工具调用或静默改变任务语义。 官方仓库 commit 2720dbb3… 可访问。后续复现实验应保存所有候选、失败候选与随机种子,而不只发布最终 harness,才能判断搜索效率和选择偏差。
带着边界读结论,才不会把局部改进说成自我进化
最终判断
Self-Harness 是最清楚展示“同一个模型也能改自己的执行外壳”的工作之一。 它的最小编辑和双 split 门值得直接借鉴;与此同时,论文里的 held-out 已参与搜索,结论应读成“对未用于 weakness mining 的回归集也提升”,而不是完全独立的最终泛化证明。 最强结果 九个组合都没有在两个 gate split 上回退。 最大疑点 held-out 被每轮重复查询。 工程价值 failure mechanism → minimal edit → rollback gate。 推荐对象 想实现低成本自修 harness 循环的工程与研究人员。
阅读位置
这篇在整个系列中的兴趣度为 9.2/10。先看任务边界,再看真实修改与隐藏评测,最后回到限制。