Self-Harness:让 Agent 学会改造自己的“操作系统”
一句话读懂
Self-Harness 把 Agent 的 harness 视为可迭代的外部状态:不改模型权重,不换更强老师,让同一个固定模型根据自己的失败轨迹提出小步改动,再用回归测试决定是否升级。
做 Agent 的人都知道,一个模型在真实任务里能不能跑顺,不只看模型本身。系统提示怎么写,工具怎么暴露,错误怎么恢复,什么时候验证中间产物,什么时候停止无效探索,这些围绕模型的工程层,往往决定了 Agent 的上限和稳定性。
论文把这一层称为 harness。它可以包括系统提示、工具、运行时机制、验证规则、编排逻辑、权限策略和故障恢复程序。换句话说,harness 就像 Agent 的操作系统:模型是内核能力,harness 决定能力如何被调度、约束和修复。
Self-Harness 想回答一个很有野心但又很工程的问题:既然 harness 如此重要,能不能让 Agent 根据自己的失败记录,参与改造自己正在使用的 harness?
- 为什么需要 Self-Harness?
过去改进 Agent harness,主要有两条路。
第一条是人类工程师手工调参。这很有效,但模型发布越来越快,不同模型的工具习惯、错误模式、提示敏感性都不一样。给每个模型都手工定制一套最优 harness,成本会越来越高。
第二条是Meta-Harness 一类方法,用更强的外部 Agent 或优化器去改弱模型的 harness。这比纯人工更自动化,但它仍然依赖外部更强能力:如果目标模型本身已经是前沿模型,或者外部模型并不了解目标模型的具体失败模式,优化就可能变贵、变慢、变偏。
Self-Harness 的核心转向:
不是让人来改,也不是让另一个更强 Agent 来改,而是让目标 Agent 在当前 harness 下观察自己的失败,用结构化证据提出候选修改,并通过回归测试决定哪些修改真正进入下一版 harness。
- Harness 到底改什么?
论文特别强调,Self-Harness 做的是非参数化改进。模型权重不变,解码配置不变,工具集和评估器也不变。被优化的对象,是模型外部那层可声明、可审计、可回滚的执行协议。
这点非常关键。因为很多 Agent 失败并不是“模型不知道答案”,而是执行协议出了问题:
- 答案算出来了,但忘了写入评分器要求的文件。
- 工具报错后反复重试同一个坏命令。
- 长时间探索,却迟迟不进入实现和验证。
- 跨 shell 命令时丢失了环境变量、路径或安装状态。
- 未检查产物就提前声称任务完成。
这些问题更像工程 SOP 的缺失,而不一定适合用微调解决。Self-Harness 就是把这类 SOP 放进一个可测试的迭代循环里。
- 核心流程:挖弱点,提改动,做回归
Self-Harness 的循环可以概括成三步:Weakness Mining、Harness Proposal、Proposal Validation。

图 1:Self-Harness 的一次优化循环。固定模型先在当前 harness 下执行任务,系统从失败轨迹中挖掘模式,再让同一模型提出有界修改,最后由回归测试决定是否接受。
第一步:弱点挖掘
系统先让固定模型在当前 harness 下跑一批 held-in 任务,收集执行轨迹和验证器结果。重点不是随便看几条失败案例,而是把失败记录按“验证器拒绝原因、Agent 侧因果行为、可复用行为机制”聚类。
这样做可以避免把表面症状当成根因。例如两个任务都因为缺少文件失败,但一个是 Agent 忘了创建工件,另一个是工具错误后删除了文件。它们需要的 harness 修改很可能不同。
第二步:Harness 提议
接着,同一个固定模型会在“提议者”角色下读取证据包,生成多个彼此不同但尽量最小的候选 harness 修改。每个候选都必须说明目标失败模式、修改的可编辑表面、预期行为效果和潜在回归风险。
论文的一个约束很实用:候选修改不能大规模重写整体架构,也不能只写泛泛的“以后要更仔细”。它必须把失败模式映射到具体 harness 表面,比如新增验证指导、限制工具循环、加入工件恢复策略或修改运行时策略。
第三步:提议验证
候选修改不会因为听起来合理就被接受。每个候选 harness 都要重新评估,并同时检查 held-in 和 held-out 两个分割。接受规则很保守:
接受门限
held-in 不退步,held-out 不退步,并且至少有一个分割的通过数提升。只在一个分割上变好、另一个分割上变差的候选,会被拒绝。
这让 Self-Harness 更像一种经验性的状态转换:每次升级都要留下证据,说明它想改变什么行为、改了哪个表面、为什么这样改,以及评估结果是否支持升级。
- 实验设置:固定模型,只改 harness
论文在 Terminal-Bench-2.0 上做实验。这个基准要求 Agent 在容器化终端环境里完成真实多轮任务,并由确定性验证器判断最终容器状态是否合格。
原始 Terminal-Bench-2.0 包含 89 个容器化任务。论文主要实验使用固定的 64 个案例子集,排除了依赖不稳定外部网络资源或需要多模态输入的任务,以减少环境噪声。
| 实验控制项 | 论文设置 |
|---|---|
| 基础模型 | MiniMax M2.5、Qwen3.5-35B-A3B、GLM-5 |
| 初始 harness | 基于 DeepAgent 的极简 harness,包含简短系统提示和默认文件、编辑、shell 工具 |
| 被固定的部分 | 模型、解码配置、工具集、预算、基准环境、评估器 |
| 被允许改变的部分 | 声明式 harness 配置界面,例如指令、验证指导、运行时策略 |
| 主要指标 | 通过率 Pass (%),每个候选在两次重复尝试上计算 |
- 结果:三个模型都涨了,held-out 也涨了
主结果很直接:Self-Harness 在三个模型上都提升了通过率,并且 held-out 任务也提升。这一点重要,因为 held-out 轨迹不会展示给提议者,能更好说明修改并非只是在修补已见失败案例。

图 2:Terminal-Bench-2.0 通过率。灰色为初始 harness,绿色为 Self-Harness 生成的最终 harness。
| 模型 | held-in | held-out | overall |
|---|---|---|---|
| MiniMax M2.5 | 43.0 → 50.0(+16%) | 40.5 → 61.9(+53%) | 42.2 → 53.9(+28%) |
| Qwen3.5-35B-A3B | 15.1 → 36.0(+138%) | 23.8 → 38.1(+60%) | 18.0 → 36.7(+104%) |
| GLM-5 | 47.7 → 57.0(+20%) | 42.9 → 57.1(+33%) | 46.1 → 57.0(+24%) |
论文报告的最大绝对增益达到 21.4 个百分点,最大相对提升达到 138%。更关键的是,接受门限阻止了“牺牲一个分割换另一个分割”的升级,最终提升后的 harness 没有让任一分割退步。
- 它学到的不是通用鸡汤
这篇论文最值得注意的地方,是定性分析显示 Self-Harness 并不是简单把提示词写长,也不是统一加一句“请仔细检查”。不同模型保留下来的 harness 修改明显不同。
MiniMax M2.5
主要问题是缺失必需工件、结构化工具内容格式错误、工具循环停滞。最终 harness 鼓励 Agent 更早创建输出文件,更谨慎处理内容标签,并在工具交互过长时重定向执行。
Qwen3.5-35B-A3B
主要收益来自依赖预检查、避免重复失败命令、打破探索循环,以及工具错误后的工件恢复。论文中的 extract-elf 案例显示,编辑后的 harness 会把 Agent 从反复覆盖和编辑失败中拉回到“恢复缺失文件并验证 JSON 输出”的路径上。
GLM-5
修改更集中在跨 shell 会话保持环境设置,以及从长时间探索转向实现和测试。换句话说,它解决的是“环境状态丢失”和“探索太久不落地”的执行问题。
这正是 Self-Harness 想证明的点:同一个初始 harness 暴露出的失败模式会随模型而变。有效的 harness 优化,应该把模型特定弱点变成具体、可执行、可验证的运行规则。
- 对 Agent 工程有什么启发?
如果把这篇论文翻译成工程实践,它给出的不是“让模型自我反思一下”,而是更具体的四条原则。
第一,把 harness 当成版本化资产。 好的 Agent 经验不应该散落在聊天记录里,而应该沉淀为可编辑、可审计、可回滚的 harness 配置。
第二,用轨迹证据驱动修改。 不要因为一条失败日志就立刻改 prompt。先看失败是否重复,根因是否一致,是否能映射到可改的执行表面。
第三,保持小步修改。 单次编辑越大,越难判断是哪条规则产生了效果,也越容易破坏原本成功的行为。
第四,必须有回归门。 Agent harness 的改动不能只看“这次好了没有”,还要看其他任务有没有变坏。没有 held-out 或回归测试,自我改进很容易变成自我过拟合。
- 局限性:这不是开放式自我进化
论文也很克制。Self-Harness 目前研究的是固定基准下的有界 harness 编辑,而不是开放域、自主长期运行的自我改进系统。
它的效果依赖三个前提:验证器要足够可靠,执行轨迹要能支持合理归因,任务分布不能和评估分割差异过大。否则,挖出来的失败模式可能是噪声,接受的修改也可能只对特定基准有效。
另外,论文当前的接受规则主要基于通过率非回退。对于更高风险的 Agent,例如会操作真实账户、调用付费接口、修改生产资源的系统,只靠 pass rate 显然不够,还需要更强的安全门限、人工审计和对抗测试。
- 结语
Self-Harness 的意义,不只是提出了一个新的 Agent 优化循环。它更像是在提醒我们:Agent 的能力边界,越来越不只是模型权重的边界,也包括 harness 这层工程组织能力的边界。
未来的 Agent 系统,很可能不会只靠人类工程师不断写规则,也不会完全依赖一个外部更强模型来替它改造。更可行的路径,是让系统在可记录、可测试、可回滚的范围内,把自己的失败变成下一版运行规则。
这也是这篇论文最有价值的技术态度:真正的自我改进,不应该只建立在“听起来合理”的自我解释上,而应该建立在行为证据、回归测试和可审计变更之上。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)