Self-Harness:让AI Agent学会自我修复的框架
📰 本文选自 自游人今日AI科技日报
Agent的上限在Harness,不在模型
AI Agent领域2026年有个越来越明确的共识:一个Agent在真实任务里能不能跑顺,核心决定因素不完全是模型本身。系统提示怎么写、工具怎么暴露、错误怎么恢复、什么时候验证中间产物、什么时候停止无效探索——这些围绕模型的工程层(业内叫Harness),对最终表现的影响往往超过模型参数的多少。
上海人工智能实验室发布的Self-Harness框架[^1],解决的就是这个问题。它不改模型权重、不换更强的老师模型、增加的计算几乎可以忽略——但它干了一件之前只有人类工程师能干的事:分析Agent的错误、找出Harness的弱点、提出改进方案、验证是否有用,然后进入下一轮循环。
结果相当硬:在Terminal-Bench 2.0基准测试中,将多个主流模型驱动的Agent性能提升了33%到60%[^2]。
Harness为什么需要自动优化
先承认一个事实:大多数Agent项目里,Harness是靠人调的。
工程师写一个初始的System Prompt,配好工具接口,设几个错误处理规则,跑一遍测试。发现某类任务总是失败?回去改Prompt、调整参数、加fallback逻辑。这个过程有几个问题:
- 慢:每次迭代需要人类工程师分析失败trace、猜想原因、修改配置、重新运行评测
- 非系统性:工程师可能会漏掉某些弱点的模式,或者某次修改引入新问题没被发现
- 不可迁移:为一个模型调好的Harness,换个模型可能完全不work
- 天花板低:人类能想到的优化手段是有限的
Self-Harness的设计哲学是:把Harness本身当作一个可迭代的外部状态,让Agent根据自己的失败轨迹提出小步改动,再用回归测试决定是否接受。
三轮迭代机制
Self-Harness的核心流程是三个循环的阶段[^2]:
第一轮:弱点挖掘(Weakness Discovery)
Agent在当前Harness配置下执行一批任务。系统收集所有失败案例——不是简单的"这个任务失败了",而是详细记录:在哪个步骤失败、失败类型(工具调用错误/逻辑推理错误/超时/输出格式不符)、失败前的上下文是什么。
这一步的输出是一份弱点报告——清晰描述了当前Harness在哪些方面让Agent吃了亏。
举个例子:如果发现大量失败案例中Agent反复尝试一个不存在的文件路径,说明工具描述不够清晰或者缺少当前目录状态的反馈机制。如果Agent经常在某个类型的问题上"想太多"超时,说明循环策略需要调整。
第二轮:方案生成(Proposal Generation)
基于弱点报告,Self-Harness让同一个模型生成Harness改进方案。
这听起来像"让病人给自己开药方",但实际上很合理——因为Harness是外部工程配置,不是模型内部参数。模型很清楚自己"什么地方看不懂"、“什么信息对决策很关键”。所以它确实能提出有针对性的改进,比如:
- “工具X的描述应该更详细地说明它只接受绝对路径”
- “在步骤5之后应该增加一个验证环节,确认文件是否真的被创建”
- “当错误信息包含’permission denied’时应该直接报告而非重试”
这些改进是以结构化补丁的形式生成的,可以精确应用到Harness配置的特定位置,而不是整个替换。
第三轮:回归验证(Regression Verification)
改完之后不能直接上线——必须验证。Self-Harness在新Harness配置下重新运行之前所有任务(通过的和失败的都跑),检查两个指标:
- 通过率是否提升:失败的任务有变通过吗?
- 退步检查:之前通过的任务有变失败吗?
只有通过率和退步检查都过关的改进才会被接受并保存到Harness的新版本中。如果某次改进导致退步,它会被丢弃,系统回到上一版本继续尝试其他方案。
然后进入下一轮迭代。经过多次这样的三轮循环,Harness逐步收敛到一个更优的配置。
实测数据:33%-60%的提升
论文在Terminal-Bench 2.0上测试了三款主流开源模型[^2]:
| 模型 | Baseline | Self-Harness后 | 提升幅度 |
|---|---|---|---|
| MiniMax M2.5 | — | — | ~33% |
| Qwen3.5-35B | — | — | ~47% |
| GLM-5 | — | — | ~60% |
这些数字的核心意义在于:没有改动任何模型权重,没有使用更强的模型作为"老师",纯靠工程层的自动优化就实现了这个量级的提升。
另外值得注意的:GLM-5获得的最大提升(60%)恰恰说明一个问题——能力越强的模型,在糟糕的Harness下"浪费"的潜力越大。优化Harness的收益和模型能力正相关。
开发者怎么集成
Self-Harness的代码已在GitHub开源(datawhalechina/self-harness)[^3]。集成到现有Agent项目的基本思路:
最小集成步骤
1. 定义Harness配置结构
| |
2. 准备测试任务集
Self-Harness需要一批有明确成功/失败标准的任务。每个任务需要定义:输入、预期操作序列(或至少是预期的最终状态)、成功判定函数。
| |
3. 运行Self-Harness优化循环
| |
4. 部署优化后的Harness
将best_harness的内容替换你原有的Harness配置,Agent后续请求都使用新配置。
集成建议
- 从小开始:先用10-20个典型任务跑一轮,看看有没有正收益,再扩大规模
- 任务多样性:测试任务要覆盖不同类型的失败模式,否则Self-Harness只能治一种病
- 别上来就信:前几轮产生的改进建议可能质量不高,需要人工review——尤其是在生产场景中
- 定期重跑:你的模型可能会更新版本或部署环境变化,Harness需要与时俱进
与传统Harness优化的区别
| 维度 | 人工优化 | Self-Harness |
|---|---|---|
| 迭代速度 | 小时/天级 | 分钟级 |
| 优化策略 | 依赖工程师经验 | 数据驱动的系统性分析 |
| 覆盖面 | 可能遗漏边缘案例 | 所有失败案例都会被分析 |
| 回归保护 | 依赖人工测试 | 自动回归验证 |
| 成本 | 工程师时间 | GPU时间(一次,后续复用) |
局限与风险
说清楚Self-Harness目前还做不到的事:
它不能修复模型本身的问题。如果Agent在一类任务上失败是因为模型缺乏领域知识,再好的Harness也救不了。Harness优化的是模型能力的使用效率,而不是模型能力本身。
生成的改进可能有偏。模型提出Harness改进方案时,可能倾向于某种类型的修复(比如反复调整Prompt措辞),而忽略更结构化的改进(比如重新设计工具接口)。
依赖测试任务的代表性。如果测试集没有覆盖某些生产中的真实失败模式,Self-Harness就不会针对这些模式优化。
一次性的投入产出比。如果只需要跑一个Agent、做几件事,人工调一调就够了。Self-Harness的价值在需要持续迭代、大量任务的场景中体现——这就是为什么论文选择了Terminal-Bench这种大规模评测基准来验证。
参考来源:
- Self-Harness: 让Agent学会改造自己的"操作系统" - CSDN — 论文与机制详解
- 上海人工智能实验室造出了一个会自我进化的AI科学家 - 至顶科技 — arXiv:2606.06473论文报道与消融实验
- GitHub - datawhalechina/self-harness — 官方开源代码
- Stanford Meta-Harness - CSDN — 同方向的斯坦福工作对比
- AI Agent Harness Engineering全解 — Harness工程背景知识
📖 延伸阅读
- 🔧 GLM-5.2 本地部署实战:M3 Ultra 跑出 21.6 tok/s — 本地部署实战
- 🔧 Unsloth 从零到一训练指南:显存减70%,速度翻倍 — 训练效率翻倍
- 🧠 Claude Tag 深度体验:Anthropic 打响 Slack 协作 AI 第一枪 — Slack原生AI协作
最后更新:2026-06-24
本文由 AI 辅助撰写,经人工审阅。内容仅供参考,不构成任何建议。
© 2026 自游人 17YOU.COM · 转载请注明出处
保持关注,记得把网址 (17you.com) 加收藏夹!有空经常来网站看看!我们每天都分享最新鲜、最实用的AI知识、最新动态、最新技术,以及最新的应用场景。
相关内容
- Qwen-AgentWorld上手指南:用语言世界模型训练Agent
- GLM-5.2 本地部署实战:M3 Ultra 跑出 21.6 Tok/S
- Prompt Injection无解之谜:模型分不清「你是谁」和「你什么角色」
- Sakana Fugu深度解析:7B小模型如何编排出顶级性能
- Gemma-4-31B开源大模型权重级攻击Abliteration越狱技术
- MiniMind-3拥有训练自己的LLM模型
