Google Open-Sources Harness²: Self-Improving AI Agents Without Retraining
TL;DR · AI 摘要
Google Open-Sources Harness²: Self-Improving AI Agents Without Retraining - KDnuggets publ: 22-Oct, 2026 - Blog Top Post...
核心要点
- 主题聚焦:Google Open-Sources Harness²: Self-Improving AI
- 来源:KDnuggets,建议结合原文判断细节。
- AI 分析暂不可用,本条为保底评分与摘要。
Google 开源 Harness²:无需重新训练的自我改进 AI 代理 - KDnuggets
publ: 2026年10月22日
- 博客热门文章
- 主题 人工智能 职业建议 计算机视觉 数据工程 数据科学 语言模型 机器学习 MLOps NLP 编程 Python SQL
- 数据集
- 活动
- 资源 快速参考指南 推荐 技术简报
- 广告
订阅电子报
#header end
/ad_wrapper
Google 开源 Harness²:无需重新训练的自我改进 AI 代理
Google 的 Harness² 让 AI 代理通过两个递归循环改进其提示、工具、内存和脚本,而无需触碰模型权重。了解更多信息,包括如何亲自运行免费演示。
作者:
Shittu Olumide,技术内容专家,2026年10月22日发布于 人工智能
<div class="addthis_native_toolbox"></div>
Google Research 已开源 Harness²(或 Harness2),这是一个无需重新训练底层模型即可让 AI 代理自我改进的框架。Harness² 不触碰模型权重,而是修改围绕模型的框架:其提示、工具、内存、技能和脚本。然后它将所学到的内容应用到下一个任务中。
该代码在 Apache 2.0 许可证下发布,同时附带一篇研究论文《Harness²:面向开放世界的递归代理框架》和一个项目网站。该发布已在 X 上引发讨论。
本文将解释 Harness² 的工作原理及其基准测试结果,然后带您逐步了解 Google 的免费演示以及在 Vertex AI 上的实际基准测试运行。如果您正在寻找一个用于自我改进 AI 代理的开源代理框架,从这里开始。
什么是 Harness²?
框架是围绕模型的一切,使其能够作为代理运行:提示、工具、内存、技能和编排。优化框架的工作称为“框架调整”。目前,大多数团队手动进行:工程师观察代理失败,调整提示,添加工具,然后再次尝试。这适用于您计划的任务,但在论文中称为“开放世界”的场景中会失效,即代理遇到无人预料的任务时。
Harness² 在“保持模型权重固定”的同时自动化这一调整过程(README)。没有微调,也没有新的训练数据;只有模型的环境发生变化。它可以编辑八个组件:
组件 | 在代理中的作用 --- | --- 系统提示 | 模型首先读取的指导说明 防护规则 | 代理必须或不得执行的规则 内存 | 跨步骤传递的长期笔记 技能 | 特定类型工作的可重复指令 工具指导 | 如何及何时使用每个工具 脚本 | 代理可运行的辅助代码 子代理 | 任务部分的委托助手 插件 | 在工具循环中塑造行为的中间件
根据 README,前四个组件构建模型的上下文;工具指导和脚本定义其工具接口,子代理处理委托,插件控制中间件。它们共同涵盖了代理行为的几乎所有方面,除了模型本身。
Harness² 的工作原理:双重递归层级
名称中的上标“2”指的是两个循环。一个用于改进当前任务的框架;另一个用于改进跨任务的框架优化方式。
顶层循环在每个任务上运行。突出显示的改进框架在任务之间持续存在,并塑造下一轮编辑。
#### 循环 1:任务级递归(提出—探测—组合)
- Propose:一个 harness 编辑器建议不变量(通用)和领域(特定领域)的修改
Probe:代理使用每个修改后的 harness 重新执行相同任务 Compose:一个组合器比较运行结果并合并有助于改进的修改
关键细节在于 Harness² 通过“执行之间的行为对比进行学习,而不需要真实反馈”。它从不需要正确答案,只需相同任务两次运行之间的差异。这很重要,因为在开放世界中,没有人会为代理提供答案密钥。
#### 循环 2:Harness 级递归
每次任务完成后,经验反射器会将采用的 harness 和“证据支持的教训”存储在持久化改进 harness 中,用于指导下一个任务的优化。因此,第一个循环使代理在这个任务上表现更好,而第二个循环使框架在改进未来任务的代理方面更高效。在下面的演示中,你将看到这两个循环都会在磁盘上生成文件。
并行与顺序递归
你可以通过预算 k 和模式(实验指南)在循环 1 上投入更多计算资源:
- 并行模式生成 k 个不变量和 k 个领域候选方案,然后对完整池进行 k 次独立组合。它探索范围更广。
- 顺序模式依次执行 k 次 Propose—Probe—Compose 步骤,并将优化后的 harness 传递到下一步。它优化深度更深。
预算决定成本。每个任务需要 4k 次执行器 rollout 和 3k 次改进器会话(run_sweep.py),因此 --k 3 意味着每个任务有 12 次 rollout 和 9 次改进器会话。LAB 本身包含 1,143 个任务(实验指南),这就是为什么这里的每个示例都从一个任务开始。
基准测试结果
Google 在三个基准测试中对 GLM-5 和 Gemini 3.5 Flash 在四种模型—harness 配置上进行了测试。单步(k=1)改进使两者都优于其基础 harness:
| 基准测试 | 测试内容 | 最佳报告增益 | |------------------|----------------------------|---------------------------| | WorkBuddy-Bench | 办公、网络和代码任务 | 高达 +11.5 分 | | LAB | 法律工作(来自 Harvey's harvey-labs) | 高达 +11.8 个百分点(部分通过率) | | JobBench | 专业工作任务 | 高达 +4.5 分 |
这些是最佳情况下的“最高”数据,而非平均值,LAB 的数据基于其部分得分——即通过的评分标准比例。README 补充说明更大的 k 会带来进一步增益,论文中包含每种配置的具体数值。这些是 Google 自己的结果,因此独立复现将非常重要。
为什么这很重要
通常让模型在任务上表现更好的方法是进一步训练,这需要训练数据、GPU 和对权重的访问权限。大多数通过 API 使用模型的团队都没有这些资源。Harness² 将所有改进保存为普通文件:重写后的提示、固定的脚本、新的防护措施。这带来了三个实际优势:
- 你可以查看发生了什么变化。改进后的 harness 是文本和代码,因此你可以审查它并将其与原始版本进行对比。Harness² 甚至会记录它为何采用每个更改,如演示所示。它适用于无法训练的模型。执行器和改进器只是配置文件中的模型 ID(设置指南)。该发布版本本身将 GLM-5 和 Gemini 3.5 Flash 作为代理,搭配 Vertex Gemini 或 Claude 作为改进器。它不需要答案密钥。改进来自运行之间的对比,因此它可以在尚未标注的任务上工作。
运行 Harness² 演示(无需 API 密钥)
Google 的演示使用“确定性编辑器和真实 Python 执行”以及“无需模型凭证”,因此可以免费运行。
前提条件
- Linux。在 Windows 上使用 WSL;在 macOS 上使用 Linux 虚拟机或容器。Python 3.12。根据 pyproject.toml 文件,3.13 也受支持。uv,Astral 的 Python 包管理器。git。
#### 步骤 1:安装 uv
curl -LsSf https://astral.sh/uv/install.sh | shcurl 会下载 Astral 的安装脚本。这些标志表示跟随重定向(-L)、保持安静但显示错误(-s、-S),以及在响应异常时干净地失败(-f)。| sh 部分会将脚本传递给你的 shell,从而在用户目录中安装 uv。打开新终端并运行 uv --version 确认安装。使用 pip install uv 也可以安装。
#### 步骤 2:克隆仓库
git clone https://github.com/google-research/harness2.git
cd harness2git clone 会从 Google Research 的 GitHub 下载完整仓库到新创建的 harness2 文件夹中,cd 命令会进入该目录。后续所有命令都应在此仓库根目录下运行。
#### 步骤 3:创建并激活虚拟环境
uv venv --python 3.12 .venv
source .venv/bin/activateuv venv 会在 .venv 中创建一个隔离的 Python 3.12 环境,如需会下载 Python。source 命令会激活该环境,此时 python 和已安装的命令都会从 .venv 调用。激活后,提示符通常会显示 (.venv)。在任何新终端中重新运行 source 命令。
#### 步骤 4:安装 Harness²
uv pip install -e '.[render]'-e 表示以可编辑模式安装,使用源文件而非打包文件。[render] 表示额外安装 openpyxl 和 python-pptx 用于表格和幻灯片输出(见 pyproject.toml),引号防止 shell 错误解析方括号。安装后会注册下方使用的命令:harness2、harness2-demo、harness2-setup、harness2-check、harness2-judge、harness2-report 和 harness2-bridge。
#### 步骤 5:运行演示
harness2-demo --output runs/demo --k 2演示会运行真实的递归和库工作流,用脚本模拟的编辑器替代模型。--output 设置结果文件夹,--k 2 设置递归预算。不带 --mode 参数时会同时运行并行和顺序模式。在我的测试中大约耗时两秒:
[accounting] 1/2 ok ledger-1
[accounting] 2/2 ok ledger-2
Local demo: 2 tasks completed; 0 failed. /home/you/harness2/runs/demo/demo.json这里有一个 accounting 领域,包含两个任务。两个任务都成功了,demo.json 保存了汇总结果。
#### 步骤 6:查看 Harness² 修复的问题
初始版本的 harness 带有 bug,Harness² 必须自行发现并修复。以下是原始 harness 的辅助脚本:
cat runs/demo/base/scripts/summarize.pyimport csv
import sys
from decimal import Decimal
with open(sys.argv[1]) as source:
amounts = [Decimal(row['amount']) for row in csv.DictReader(source)]
total = sum((amount for amount in amounts if amount > 0), Decimal(0))
print(f'Total: {total:.2f}')该脚本将 CSV 的金额列读取为精确的 Decimal 值并求和。if amount > 0 这个过滤条件是 bug:它会静默忽略负数条目。
现在用原始脚本和修复后的脚本处理同一账本:
cat runs/demo/sources/ledger-1/ledger.csv
python runs/demo/base/scripts/summarize.py runs/demo/sources/ledger-1/ledger.csv
python runs/demo/library/k2/seq/accounting/harnesses/ledger-1/harness/scripts/summarize.py runs/demo/sources/ledger-1/ledger.csvamount
100.25
-20.10
5.00
Total: 105.25
Total: 85.15第一个命令会打印账本:三条记录,其中一条为负数。基础脚本忽略该记录并报告 105.25;采用的脚本报告了正确的 85.15(100.25 − 20.10 + 5.00)。Harness² 在从未被告知正确总额的情况下移除了过滤器。
#### 第 7 步:阅读它记录的教训
cat runs/demo/library/k2/seq/accounting/harnesses/ledger-1/EXPERIENCE.md# ledger-1
- 采用的脚本:`c1`(运行 `demo-oc-seq2/ledger-1/c1`)
- 组件:1 个脚本;62 个始终启用的字符
## 为何选择此方案
签名的总和与源账本匹配。
## 每次编辑的作用
组件:scripts/summarize.py
候选方案:inv1
修改:从金额总和中移除了仅保留正数的过滤器
观察到的现象:探测总和包含了基础运行遗漏的贷方
结论:有帮助
## 可迁移的教训
- **提示**:当账本包含贷方和借方时
- **教训**:在 scripts/summarize.py 中求和时应包含正负两种符号。
- **证据**:scripts/summarize.py 行 — 移除仅保留正数的过滤器使探测总和包含了基础轨迹遗漏的贷方。
- **置信度**:对观察到的算术对比高度置信这是经验反射器的注释。采用的脚本 c1 标识了获胜的支架;顺序组合命名为 c1 到 ck,平行组合命名为 agg1 到 aggk(ledger.py)。"每次编辑的作用" 记录了探测证据:从不变量候选方案 inv1 的编辑 "有帮助"。"可迁移的教训" 将提示与教训、证据和置信度配对 —— 这就是持续传递的内容。
接下来检查教训如何传递到第二个任务:
cat runs/demo/demo.json
{
"domain": "accounting",
"n_tasks": 2,
"seed": null,
"done": 2,
"failed": 0,
"tasks": [
{
"task": "ledger-1",
"status": "ok",
"library_entries_before": { "agg": 0, "seq": 0 }
},
{
"task": "ledger-2",
"status": "ok",
"library_entries_before": { "agg": 1, "seq": 1 }
}
],
"execution_count": 28,
"editor_calls": 32
}library_entries_before 记录了每个任务启动时存储的教训数量,其中 agg 表示并行模式,seq 表示顺序模式(library 代码)。第一个任务启动时没有存储任何教训;第二个任务启动时每种模式各存储了一个教训 —— 即来自 ledger-1 的教训。这就是任务之间改进支架的成长过程。
#### 第 8 步:探索其余输出
runs/demo 文件夹包含四个值得了解的部分:
- base/ 存储初始支架:systemprompt.md、guardrails.md、LongTermMEMORY.md、tool_descriptions/tool_guidance.md 和 scripts/summarize.py。runs/ 存储每个任务的所有候选支架:不变量候选(inv1、inv2)、领域候选(dom1、dom2)和组合。executions/ 存储所有探测运行的输出。library/ 存储改进支架:已采用的支架、EXPERIENCE.md 注释和一个 INDEX.md,供未来任务浏览。每个索引条目会重复其提示 —— 例如 "当账本包含贷方和借方时" —— 以便后续任务一目了然地判断教训是否适用。
运行真实基准测试(LAB 在 Vertex AI 上)
真实运行会在所有角色中使用模型:执行者、改进者和评判者。我们将使用 LAB,即 README 中用作示例的法律基准。基于模型的运行会产生费用,因此此处的每个命令都仅限于一个任务。我验证了每个命令直到首次付费模型调用;你的模型输出可能会有所不同。
#### 额外前提条件
你还需要 Node.js 20+ 用于 OpenCode 执行器、Google Cloud CLI、包含 Vertex AI 的 Google Cloud 项目,以及 LAB 文档所需的 Pandoc 和 Poppler。Docker 仅在 WorkBuddy-Bench 中需要。
sudo apt-get update
sudo apt-get install -y git curl unzip ca-certificates pandoc poppler-utilsapt-get update 会刷新软件包列表,第二行用于安装工具,-y 参数会跳过确认提示。pandoc 用于文档转换,poppler-utils 用于读取 PDF;其余工具用于下载代码和数据。
#### 步骤 1:创建你的 .env 文件
README 中说明需要复制 .env.example 文件,但撰写本文时该文件不在仓库中(会返回 404 错误)。请自行在仓库根目录创建 .env 文件,使用设置指南和 config.py 中的配置:
# 你的 Google Cloud 项目和 Vertex AI 区域
GOOGLE_CLOUD_PROJECT=your-gcp-project-id
GOOGLE_CLOUD_LOCATION=global
# 执行器(运行任务)和 improver(编辑 harness)
HARNESS2_SOLVER_MODEL=google-vertex/YOUR_GEMINI_MODEL_ID
HARNESS2_IMPROVER_MODEL=google-vertex/YOUR_GEMINI_MODEL_ID
# Judge(评分)- 仅需模型 ID,无需前缀
HARNESS2_JUDGE_MODEL=YOUR_GEMINI_MODEL_IDHarness² 会在启动时加载这些 KEY=VALUE 行。
- GOOGLE_CLOUD_PROJECT 是你的项目 ID;请将 GOOGLE_CLOUD_LOCATION 保留为 global。HARNESS2_SOLVER_MODEL 是执行器,必须使用 OpenCode 的 provider/model 格式,因此 Vertex Gemini ID 需以 google-vertex/ 开头。HARNESS2_IMPROVER_MODEL 用于编辑 harness,默认使用执行器模型。此处也可使用 Vertex Claude。HARNESS2_JUDGE_MODEL 用于评分,需提供不带前缀的模型 ID,因为 Harness² 会根据每个基准自动添加正确前缀。
将每个 YOUR_GEMINI_MODEL_ID 替换为 Vertex AI 控制台中的准确模型 ID。在 shell 中设置的值会覆盖 .env 文件中的配置,这对快速实验非常方便。
#### 步骤 2:使用 Google Cloud 认证
gcloud auth application-default login这会通过浏览器进行登录并保存 Application Default Credentials,Harness² 会使用这些凭据调用 Vertex AI。在无头服务器上,请添加 --no-browser 参数。
#### 步骤 3:安装 LAB 基准
harness2-setup lab该命令会下载 LAB 的固定版本(来自 Harvey's harvey-labs)和 OpenCode 执行器,应用 Google 的补丁,安装 Bun,构建 LAB 自带的 Python 环境,并将任务下载到 dependencies/ 目录。可先添加 --dry-run 参数预览计划。请保持主 .venv 激活状态;Harness² 会自行查找 LAB 的解释器。
#### 步骤 4:验证安装
harness2-check --bench lab该命令会验证依赖项、凭据和设置,而无需调用模型,并为缺失项打印 FAIL: 行。例如,如果没有 .env 文件,你会看到 FAIL: HARNESS2_SOLVER_MODEL 是执行器部署所必需的。它无法确认你的账户是否能使用模型,这只有在首次实际调用时才会显示。
#### 步骤 5:使用预演模式查看
harness2 --bench lab --k 1 --mode parallel \
--only-domains antitrust-competition --max-tasks 1 --dry-run--dry-run 会打印所选任务且不进行模型调用。--bench lab 指定基准,--k 1 --mode parallel 设置一个并行步骤,--only-domains 限制运行范围到一个实践领域,--max-tasks 1 将每个领域的任务数限制为 1。
#### 步骤 6:运行优化
harness2 --bench lab --k 1 --mode parallel \
--only-domains antitrust-competition --max-tasks 1不带 --dry-run 参数时,该命令会执行完整流程:4 次执行器扩展和 3 次优化器会话(--k 1)。它会在消耗资源前重新检查你的配置(包括判断器)。随后运行基础测试框架,提出修改建议,验证这些修改,构建优化后的测试框架,并对结果进行反思。如果中途停止,可重新运行相同命令以继续执行。
#### 第 7 步:判断与报告
harness2-judge --bench lab --k 1 --mode parallel
harness2-report --bench lab --k 1 --mode parallel判断器会根据 LAB 的评分标准对优化后的测试框架输出进行评分,报告会汇总部分通过和全部通过的得分。请使用与运行时相同的基准、--k、--mode 和任务选择参数,确保两个命令都能找到对应结果。
若要与原始测试框架对比:
harness2-judge --bench lab --k 1 --mode parallel --bases--bases 会将原始测试框架的运行结果记录到 base_judged.json,与 judged.json 并存。
结果会保存在 runs/lab/ 目录中。在更改模型或任务选择前,请通过 export HARNESS2_RUNS_DIR=runs/my-new-experiment 指定新目录。若要一次性运行第 4 至 7 步:
bash scripts/run_lab.sh --only-domains antitrust-competition --max-tasks 1run_lab.sh 会串联检查、优化、判断和报告流程,并将你的参数传递给优化步骤。在命令前添加 K=3 MODE=sequential 可更改预算或模式。
总结
Harness² 展示了一种未来可能性:智能体通过积累经验而非重新训练实现改进——在数周实际工作中形成的经验库,以及团队像审查代码一样评审测试框架变更。开放问题包括:经验在不同领域间的迁移效果、与微调的成本对比,以及如何确保自我编辑智能体的安全性。代码开源后,社区现在可以自行探索这些问题。
简要回顾:
- Harness² 是 Google Research 开源的自我改进 AI 智能体框架,保持模型权重不变。任务级递归通过 Propose—Probe—Compose 流程优化每个任务的测试框架(无需真实答案),框架级递归则传递经验。并行模式探索范围更广,顺序模式深入优化,每个任务的 k 参数对应 4k 次执行器扩展和 3k 次优化器会话。在 WorkBuddy-Bench 上单步提升高达 11.5 分,在 JobBench 上提升 4.5 分,在 LAB 上提升 11.8 个百分点。免费演示展示了 Harness² 修复有缺陷脚本并记录经验的过程;实际运行需要 Vertex AI 和自定义 .env 文件。请限制网络访问、监控成本,并将其视为研究代码。
完整方法请阅读 arXiv 上的论文。然后克隆代码库并亲自运行演示。
来源
- Harness² GitHub 仓库和 README 设置指南 实验指南 基准指南 Harness²: 用于开放世界的递归智能体框架 Harness² 项目官网
Shittu Olumide 是软件工程师兼技术作家,热衷于利用前沿技术创作引人入胜的叙事,注重细节并擅长简化复杂概念。你也可以在 Twitter 上关注 Shittu。
更多相关内容
- 使用 Google Antigravity 技能和工作流构建更优秀的 AI 智能体
- 5 个无需头疼即可构建应用的 AI 编程平台
- 无序委托:你的企业无法增长,直到你放手...
- 作为专业数据科学家,我无法离开的 7 个 AI 工具
- 如何在不增加工作时间的情况下完成更多任务(赞助)
- 不阅读代码也能理解 10K+ 行 GitHub 仓库的方法
<hr class="grey-line"><br> <div><h3>我们精选的5门免费课程推荐</h3><br> </div>
Mailchimp for WordPress v4.14.1 - https://wordpress.org/plugins/mailchimp-for-wp/
/ Mailchimp for WordPress 插件
您可以从这里开始编辑。
如果评论已关闭。
<= 上一篇
下一篇 =>
#content end
<script type="text/javascript">kda_sid_write(kda_sid_n);</script>
最新文章
- 使用 ijson 在 Python 中处理大型 JSON 文件
- Google 开源 Harness²:无需重新训练的自我改进型 AI 代理
- 使用 Scikit-LLM 进行命名实体识别
- AI 代理技能的 5 个最佳 GitHub 仓库
- 2026 年成为 AI 产品经理的路线图
- 开发者必备的 5 个 Docker 容器
热门文章
- 开发者必备的 5 个 Docker 容器
- 7 个可替代付费订阅的开源 AI 工具
- AI 软件克隆的兴起:为何 REA 和 ArtCraft 正在病毒式传播
- AI 代理技能的 5 个最佳 GitHub 仓库
- LLM 推理工程的 5 个趣味项目
- 2026 年掌握代理 AI 系统的路线图
- Claude Haiku 5.5:新特性及如何用于快速、低成本的 AI 工作流
- 2026 年可使用的 5 个免费 LLM API 提供商
- 2026 年值得关注的 10 个 Hugging Face 模型
- 信任 AI 生成代码前需要执行的 7 项检查
#content_wrapper end
© 2026
Guiding Tech Media
|
关于
联系我们
广告合作
隐私政策
服务条款
2026年10月22日由 Olumide Shittu 发布
blank
不,谢谢!
/.main_wrapper
<script defer type="text/javascript" src="https://s7.addthis.com/js/300/addthis_widget.js#pubid=gpsaddthis"></script>
noptimize
/noptimize