Agent 遇到没见过的任务就歇菜?Google 这套框架让 harness 自己改自己(2.3 万星)
github监控器 · 2026-11-10 · 约 3045 字 · google-research/harness2
你的 agent 在训练过的任务上很强,换个没见过的领域就崩。因为它不会为自己造工具。
Harness² 的思路是把"改造 harness"这件事本身递归掉:任务级递归当场调 harness,harness 级递归把这次的教训沉淀下来,下次直接用。
2.3 万星,10 月 6 日建仓,Google Research 出品,Apache-2.0。它最硬的一点:全程模型权重不动。 提升全来自 harness。
一、先说结论:它把"改进"从训练搬到了推理
提升 agent 能力有两条路:改模型权重(训练),改模型周围的东西(harness)。
第一条贵、慢、需要数据。第二条便宜,但以前靠人手工调。
Harness² 的问题是:能不能让 agent 自己调自己的 harness?
它的答案是两层递归。而"权重固定"这个约束,让结果能直接搬到任何模型上。

二、harness 到底指什么(官方定义)
README 给了一句非常清楚的定义,值得原文照抄:
"A harness is the system around a model that enables it to act as an agent: prompts, tools, memory, skills, orchestration, and more. Harnessing is the process of optimizing that system."
翻成人话:模型之外的一切,加上"优化这一切"的动作。
这个定义把"提示词工程"降级成了 harness 的一个子集。工具设计、记忆结构、任务分解方式,权重都比提示词大。
三、两层递归:分别改什么
第一层:任务级递归(task-level)
针对当前这一个任务,反复调整执行用的 harness。方法是 Propose–Probe–Compose:
- Propose:提出几处 harness 修改(加个工具、改提示、换分解方式);
- Probe:在同一个任务上试探这些修改的效果;
- Compose:根据"行为差异"组合出一个更好的 harness。
注意关键一句:"without ground-truth feedback"——不依赖标准答案。
它比较的是"不同 harness 下的执行轨迹差异",不是"对错"。这意味着没有标注数据的任务也能优化。
第二层:harness 级递归(harnessing-level)
把这一轮被采纳的 harness 变更、以及有证据支撑的经验,写进一个持久化的改进 harness。
下次遇到新任务,从这份积累出发,而不是从零开始。
两层的关系是:内层解决这个任务,外层让下次更快。

四、装:uv 一条龙
标准流程:
uv venv --python 3.12 .venv
source .venv/bin/activate
uv pip install -e '.[render]'[render] 这个 extra 是渲染相关依赖——它要出图/出报告,所以带了渲染包。
装完先跑 demo,不需要模型凭据:
harness2-demo --output runs/demo --k 2--k 2 是递归轮数。先从 2 开始,看它怎么改,别一上来跑 10 轮。
跑完去 runs/demo 看产物——这一步比读文档有用,能直观看到"harness 被改成了什么"。
五、配模型:Vertex AI
要跑真实基准,得配 Google Cloud 的 Vertex AI:
cp .env.example .env
# 编辑 .env,填你的 Vertex AI 项目和模型 ID
gcloud auth application-default login两步都不能省。.env 里填的是项目 ID 和模型名,gcloud auth 给的是运行时凭据。
这一步是国内用户的主要门槛:需要能访问 Google Cloud,并且有可用的项目配额。
六、跑基准:五条命令的顺序
README 给的完整流程:
# 1. 准备基准环境
harness2-setup lab
# 2. 自检(不要跳过)
harness2-check --bench lab
# 3. 跑
harness2 --bench lab --k 1 --mode parallel \
--only-domains antitrust-competition --max-tasks 1
# 4. 评判
harness2-judge --bench lab --k 1 --mode parallel
# 5. 出报告
harness2-report --bench lab五步的顺序不能乱:setup → check → run → judge → report。
第二步 check 最容易被跳过。它检查环境、模型连通性、数据完整性——跳过它的代价是跑到一半失败,白烧配额。
第一次跑建议用 --only-domains antitrust-competition --max-tasks 1:一个领域、一个任务,先把链路跑通。
这个"先跑通一条最小链路"的习惯,比任何框架知识都值钱。所有跑不起来的人,都是想一次跑全量。
七、--k 是什么:递归深度
--k 出现在多个命令里,含义是递归轮数。
关键判断:k 增大后如果指标不涨,说明瓶颈不在 harness,在别处。这时候加 k 只是烧钱。
八、六个坑
- 跳过
harness2-check。 跑到一半失败,配额白花; - 一上来跑全量基准。 先用
--max-tasks 1跑通链路; - k 开太大。 收益递减,成本线性;
- 没有 Vertex AI 配额。 装完也跑不了真实基准,只能看 demo;
- 忘了 activate venv。 命令找不到,先
source .venv/bin/activate; - 以为它能提升模型能力。 它改的是 harness,权重是固定的。
九、为什么"权重固定"是个优点
这点容易被忽略。
如果靠训练提升,你会遇到三个问题:要数据、要算力、换模型就失效。
权重固定意味着:这套 harness 改进可以搬到任何模型上。今天在 A 模型上摸索出来的 harness,明天贴到 B 模型上大概率还有用。
这跟你自己积累 prompt 和工具的习惯是一个逻辑——harness 是可迁移资产,权重不是。

十、谁该读这个项目
十一、和"自动 prompt 优化"的区别
第二行是它最实用的创新。"不需要标准答案"意味着它能用在你没标注的场景里。
十二、版本与地址
包名: harness2
版本: 0.1.0
许可: Apache-2.0
安装: uv pip install -e '.[render]'
命令: harness2-setup / check / harness2 / judge / report
约束: 模型权重固定,只优化 harness最后一句:这个项目最值钱的不是代码,是那句定义——harness 是模型之外的一切。 想清楚这一点,你就知道该往哪儿使劲了。
AI 实战导师 / 企业 AI 落地顾问 / 智能体工程师,17 年跨界、15,000+ 小时 AI 实操、20+ 套已交付工作流。 看完整履历海报 → skills 实验室 →
发表评论: