惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
P
Palo Alto Networks Blog
C
Cisco Blogs
The Hacker News
The Hacker News
T
Threatpost
S
Schneier on Security
K
Kaspersky official blog
Spread Privacy
Spread Privacy
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
量子位
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google DeepMind News
Google DeepMind News
Security Latest
Security Latest
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
博客园 - 叶小钗
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
News and Events Feed by Topic
爱范儿
爱范儿
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
Project Zero
Project Zero
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Cisco Talos Blog
Cisco Talos Blog
GbyAI
GbyAI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Apple Machine Learning Research
Apple Machine Learning Research
T
Tenable Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
Vulnerabilities – Threatpost
Forbes - Security
Forbes - Security
博客园 - 三生石上(FineUI控件)
C
Cyber Attacks, Cyber Crime and Cyber Security
N
News and Events Feed by Topic
V
V2EX
Webroot Blog
Webroot Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Blog — PlanetScale
Blog — PlanetScale
M
MIT News - Artificial intelligence
Scott Helme
Scott Helme
Simon Willison's Weblog
Simon Willison's Weblog
L
LangChain Blog
W
WeLiveSecurity
Cloudbric
Cloudbric

博客园 - iTech

AI Agent 写完代码谁来测?这个开源沙箱把 CI/CD 和多 Agent 协作全包了 7万星的AI交易框架:让大模型模拟投行多空辩论,自动做交易决策 71000颗星的AI交易团队:让大模型模拟投行分工,自动做交易决策 13400颗星的开源项目:输入一句话,AI全自动帮你做短视频 102颗星的沙盒:当AI学会自己写代码、跑测试、做部署 AI 技术日报 - 2026-05-08 29k 星的 PageIndex:不用向量数据库,靠推理就能做 RAG 每天花两小时刷信息?这个开源项目帮你全自动搞定 读源码像读小说?试了 DeepWiki 和 Zread,我再也不想裸读 GitHub 了 Matt Pocock 开源的这套 .claude 技能,为什么让工程师集体上头? Cursor Team Kit:Cursor 官方团队在用的 17 个 AI 工作流 AI 技术日报 - 2026-05-07 AI 技术日报 - 2026-05-06 AI 技术日报 - 2026-05-05 Anthropic CEO 说 12 个月内程序员要失业,我扒完他的底牌,发现事情没那么简单 把工程师的肌肉记忆装进 Claude Code,这个 4300 Star 的项目我后悔没早用 AI 技术日报 - 2026-05-04 AI 技术日报 - 2026-05-03 AI 技术日报 - 2026-05-02 六大 Agent 框架横评:谁支持 Skills?谁能自动创建 Agent?MCP 呢? Wechatsync:一个 Chrome 插件,一键把文章同步到 31 个平台 LangChain 开源了 Open SWE:Stripe、Ramp、Coinbase 内部都在造的编程 Agent Cockpit:把 Claude Code 从终端里搬出来,装进浏览器 Cursor 把自家的 AI Agent 开放了:写几行 TypeScript 就能调 Cursor 干活 AI 技术日报 - 2026-05-01 AI 写代码每次结果都不一样?Archon 用 YAML 工作流把 AI 编程变成流水线 AI 写代码比你快了,但你还是得学编程——只不过学法得换 腾讯的龙虾特工队:4 个 AI Agent 同日更新,全家桶正式成型 Agno 不做更聪明的 Agent,它要把所有 Agent 框架包进同一个操作系统 Hermes Agent 终于有了像样的 Web 界面,而且还支持远程访问 Datawhale 出了一套 29 学科知识地图,把 AI 的底牌全掀了 Hermes Agent 在聊天框里就能用的 20 种高级功能 一份 AGENTS.md 能顶一次模型升级?Augment Code 用数据说了算 NVIDIA 开源了一个「AI 沙箱」,20K Star,让 Agent 跑代码不再裸奔 60ms 冷启动、5MB 内存:腾讯开源的这个沙箱让 Docker 安全隔离像笑话 AI 技术日报 - 2026-04-30 AI 技术日报 - 2026-04-29 AI 技术日报 - 2026-04-28 Goose:Linux 基金会亲儿子,能撼动 Claude Code 和 OpenCode 吗? AI 技术日报 - 2026-04-27 AI 技术日报 - 2026-04-26 Google 把价值20美元/月的东西免费了,102K人已经抢到了 OpenClaw 和 Claude Code 网络搜索配置指南 AI 技术日报 - 2026-04-25 Anthropic 为什么遥遥领先:从 Cat Wu 专访看AI霸主的底层逻辑 Mac 本地跑大模型完全指南:你的苹果电脑就是 AI 工作站 同样 70B 参数,为什么 MoE 只激活 13B 就能打平 Dense? DeepSeek-V4 技术报告里藏着一条线:华为昇腾 NPU 已完成推理验证 DeepSeek-V4 深夜炸场:1M 上下文、384K 输出、双模型,API 定价直接卷到底 MacBook Air 跑大模型实测:Ollama、llama.cpp、LM Studio 谁才是本地推理之王? AI 技术日报 - 2026-04-24 OpenCode:Claude Code 的最佳平替 2026 开源大模型五国杀:Qwen 3.6 vs Gemma 4 vs Llama 4 vs GLM-5.1 vs DeepSeek V4 MCP 与 Skills 的你死我活:Anthropic 的 Agent 生态野心与开发者的站队困境 给 AI Agent 配搜索,国内能用的搜索 API 实测对比 AI 技术日报 - 2026-04-23 CC Switch:49K Star 的 Claude Code 登录绕过神器,还能管 Codex 和 Gemini CLI NVIDIA 开出 32 万美元年薪招 AI Agent 工程师,JD 里藏着这些信号 fast-mirror-skill 技术拆解:一个小而完整的 Claude Skill 是怎么设计的 Cursor 值 600 亿美元?马斯克这次赌的不是技术,是入口 AI 技术日报 - 2026-04-22 别再问 AI 能不能赚钱了:3 个上班族亲测有效的副业方法(2026 最新版) 10 分钟从零搞定 Hermes Agent:飞书微信双通道丝滑上线 AI 技术日报 - 2026-04-21 Anthropic 实战总结:AI Agent 的 3 种工作流模式,选错代价很大 安装 openclaw,hermes 慢的想发疯,fast-mirror-skill 来救了 Claude Routines:你下班睡觉了,Agent 还在为你干活 微信飞书里敲一个斜杠就能干活:Hermes Quick Command 到底多省事 AI 正在疯狂吃电:算力尽头是电力,谁能解这道题? AI 技术日报 - 2026-04-20 3K 行代码造一个越用越聪明的 AI Agent:GenericAgent 登顶 GitHub Trending 高德途途封神机器人半马,背后的 ABot-Claw 到底是什么 人们希望 AI 能干啥?Anthropic 调查:第一名不是赚钱,是变强 AI 时代人们在担心什么?Anthropic 的 13 条焦虑排行榜 OpenAI 官方 Agent SDK 来了:22k Star,支持 100+ 模型,Python 10 行代码上手 AI 技术日报 - 2026-04-19 OpenAgents Workspace:让 Claude Code 和 Codex 在同一个群里干活 Claude 是要干掉整个软件行业吗? Claude 官方推荐多 Agents 设计模式 多 Agent 系统的 5 种协调模式:选错了模式,再强的 Agent 也白搭 AI 技术日报 - 2026-04-18 AI 技术日报 - 2026-04-17 OpenClaw Workspace 完全指南:我的AI编程工作流 DeepSeek内蒙草原高薪招聘:AI时代的数字牧民梦,还是营销噱头? 2 核 2G 的阿里云 ECS 能跑 OpenClaw 吗?能,但有点折腾 AI 技术日报 - 2026-04-16 OpenCLI:一个命令行搞定 16+ 内容平台的神器 从零到精通:OpenClaw CLI 命令完全指南 AI 技术日报 - 2026-04-15 AI Agent 如何自我进化?Hermes Agent Self-Evolution 深度解析 AI 技术日报 - 2026-04-14 为什么你的飞书 Bot 总是连不上?OpenClaw Gateway 架构深度解析 OpenClaw 连接飞书的原理:Gateway、Channel 与消息流转 国内安装 Hermes Agent 踩坑全记录:从 GitHub 超时到正常跑起来的每一步 35 万 Star 的 OpenClaw:5 分钟部署你的私人 AI 助手,直连飞书 AI 技术日报 - 2026-04-13 公司用 AI 筛简历,这个开源项目让候选人用 AI 反选公司 为什么 Google ADK 可能是你下一个 Agent 框架——7 个改变游戏规则的特性 Microsoft Agent Framework 深度解析:架构设计与实战落地 AI 技术日报 - 2026-04-11
Better-Harness:让AI Agent自己优化自己的革命性框架
iTech · 2026-04-17 · via 博客园 - iTech

Better-Harness:让AI Agent自己优化自己的革命性框架

LangChain最近开源了一个名为"better-harness"的研究项目,它的核心思想非常简单但极具革命性:让一个Deep Agent通过评估数据来改进另一个agent的harness

这意味着什么?AI系统不再需要人工调优,而是可以"自我进化"。

一、什么是Harness?

在深入better-harness之前,先理解什么是"harness"。

Harness(驾驭系统)是指围绕AI模型构建的完整执行环境,包括:

Harness组件 作用 示例
Prompt 定义agent的行为准则和角色 "你是一个专业的代码审查员..."
Tools agent可调用的工具集合 文件读写、API调用、数据库查询
Skills agent的专业能力模块 代码分析、文档生成、测试编写
Middleware 拦截和增强agent行为的中间件 日志记录、权限检查、性能监控

传统上,优化harness需要工程师手动调整prompt、修改middleware代码、重构tools。这是一个耗时且依赖经验的过程。

二、Better-Harness的核心思想

Better-harness的核心是一个双层agent循环

┌─────────────────────────────────────────────────────────────┐
│                     Better-Harness Loop                      │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│  ┌──────────────┐         ┌──────────────┐                 │
│  │ Outer Agent  │────────▶│ Inner Agent  │                 │
│  │ (优化者)     │ 编辑    │ (被优化者)   │                 │
│  └──────────────┘ Harness  └──────────────┘                 │
│         │                            │                       │
│         │ 运行评估                   │                       │
│         │                            │                       │
│         ▼                            │                       │
│  ┌──────────────┐                   │                       │
│  │ 评估数据     │◀──────────────────┘                       │
│  │ (Train/      │ 运行结果                                   │
│  │  Holdout)    │                                           │
│  └──────────────┘                                           │
│         │                                                    │
│         │ 决策:保留/丢弃修改                                │
│         └──────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘

工作流程

  1. 运行baseline:用当前的harness运行inner agent,获取baseline分数
  2. 构建proposer workspace:为outer agent创建一个临时工作区
  3. 编辑harness:outer agent基于评估失败案例,编辑harness的允许部分
  4. 测试候选harness:在train和holdout集上运行修改后的agent
  5. 决策:只有当组合通过率提升时,才保留修改
  6. 迭代:重复2-5步骤,直到达到最大迭代次数

三、实战配置:从零开始

3.1 环境准备

# 克隆项目
git clone https://github.com/langchain-ai/deepagents.git
cd deepagents/examples/better-harness

# 安装依赖
uv sync --extra dev

要求
- Python 3.11+
- uv包管理器
- deepagents已安装(或设置DEEPAGENTS_ROOT)

3.2 配置文件解析

创建my_experiment.toml

[experiment]
name = "my-harness"
runner = "pytest"
workspace_root = "/abs/path/to/workspace"
model = "claude-sonnet-4-6"
max_iterations = 3

[better_agent]
model = "claude-sonnet-4-6"
max_turns = 40

[runner.pytest]
project_root = "/abs/path/to/workspace/libs/evals"
model_flag = "--model"
summary_flag = "--evals-report-file"
pytest_args = ["-q"]

# 定义可编辑的harness表面
[surfaces.prompt]
kind = "module_attr"
target = "my_agent.graph:BASE_PROMPT"
filename = "prompt.txt"
base_value = """
You are a helpful agent.
"""

[surfaces.middleware_impl]
kind = "workspace_file"
target = "my_agent/middleware.py"
filename = "middleware.py"
base_file = "middleware.py"

[surfaces.middleware_registration]
kind = "workspace_file"
target = "my_agent/graph.py"
filename = "graph.py"
base_file = "graph.py"

# 定义评估案例
[[cases]]
case_id = "tests/evals/test_one.py::test_case[{model}]"
split = "train"
stratum = "tool_use"

[[cases]]
case_id = "tests/evals/test_two.py::test_case[{model}]"
split = "holdout"
stratum = "tool_use"

3.3 关键配置详解

Surfaces(可编辑表面)

每个surface定义了一个harness的可编辑部分:

支持两种加载模式

  1. module_attr - 修改Python模块属性
[surfaces.prompt]
kind = "module_attr"
target = "my_agent.graph:BASE_PROMPT"
filename = "prompt.txt"
base_value = "You are a helpful agent."
  1. workspace_file - 临时替换工作区文件
[surfaces.middleware]
kind = "workspace_file"
target = "my_agent/middleware.py"
filename = "middleware.py"
base_file = "middleware.py"

常见的surface类型

Surface类型 作用 应用场景
prompt 修改agent的prompt 调整行为准则、角色定位
tools 添加/修改工具 扩展agent能力边界
skills 优化技能模块 提升特定领域性能
middleware_impl 修改middleware实现 改进拦截逻辑
middleware_registration 修改middleware注册 开启/关闭middleware

Cases(评估案例)

支持三种split类型:

[[cases]]
case_id = "tests/evals/test_one.py::test_case[{model}]"
split = "train"        # 训练集:用于优化
stratum = "tool_use"   # 分层:按任务类型分组

[[cases]]
case_id = "tests/evals/test_two.py::test_case[{model}]"
split = "holdout"      # 测试集:验证泛化能力
stratum = "tool_use"

Split说明
- train:用于outer agent学习和优化
- holdout:防止过拟合,验证泛化能力
- scorecard:可选的额外评估维度

3.4 运行优化

# 验证配置
uv run better-harness validate my_experiment.toml

# 运行优化循环
uv run better-harness run my_experiment.toml \
  --output-dir runs/my-harness \
  --max-iterations 3

输出结构

runs/my-harness/
├── iteration_0/
│   ├── baseline/          # baseline运行结果
│   └── candidate/         # 候选harness
├── iteration_1/
│   ├── candidate/         # 第一次迭代结果
│   └── decision.json      # 保留/丢弃决策
├── iteration_2/
│   └── ...
└── final/                 # 最终优化的harness
    ├── harness/          # 最优harness代码
    ├── metrics.json      # 性能指标
    └── report.md         # 优化报告

四、实际案例:优化代码审查Agent

场景描述

假设我们有一个代码审查agent,初始harness表现一般:

初始配置

# prompt.txt
"""
你是一个代码审查员。检查代码质量并给出建议。
"""

# tools.py
tools = [
    {
        "name": "read_file",
        "description": "读取文件内容"
    },
    {
        "name": "write_report",
        "description": "写入审查报告"
    }
]

评估结果
- Train set: 65% pass rate
- Holdout set: 58% pass rate
- 主要问题:遗漏边界情况、建议不够具体

运行Better-Harness

uv run better-harness run code_review.toml \
  --output-dir runs/code_review \
  --max-iterations 5

优化后的Harness

Outer Agent发现的改进

  1. Prompt优化
# 优化后的prompt
"""
你是一个资深代码审查员,专注于:
1. 安全性:检查SQL注入、XSS等漏洞
2. 性能:识别N+1查询、未使用索引
3. 可维护性:评估代码复杂度、命名规范

对于每个问题,提供:
- 问题类型(严重/中等/轻微)
- 具体位置(文件名:行号)
- 修复建议(代码示例)
- 影响分析
"""
  1. Tools增强
# 优化后的tools
tools = [
    {
        "name": "read_file",
        "description": "读取文件内容"
    },
    {
        "name": "analyze_ast",
        "description": "分析AST结构,检测代码模式"
    },
    {
        "name": "check_security_patterns",
        "description": "检测常见安全漏洞模式"
    },
    {
        "name": "write_report",
        "description": "写入结构化的审查报告"
    }
]
  1. Middleware添加
# 新增middleware:重复检查
class DuplicateCheckMiddleware:
    def __call__(self, agent_input):
        # 检查是否已经审查过相同文件
        if is_duplicate(agent_input['file']):
            return {
                "status": "skip",
                "reason": "Already reviewed"
            }
        return agent_input

最终结果
- Train set: 89% pass rate (+24%)
- Holdout set: 84% pass rate (+26%)
- 泛化能力提升,未见代码类型的成功率提高

五、技术深度解析

5.1 Outer Agent的视角

Outer Agent在每次迭代中看到的信息:

┌─────────────────────────────────────────┐
│         Outer Agent的输入                │
├─────────────────────────────────────────┤
│ 1. 当前可编辑的surface文件              │
│    - prompt.txt                         │
│    - tools.py                           │
│    - middleware.py                      │
│                                         │
│ 2. Visible train failures               │
│    - test_case_101: FAILED              │
│      Reason: Missed SQL injection       │
│    - test_case_203: FAILED              │
│      Reason: Suggestion too vague       │
│                                         │
│ 3. 失败案例的源代码                     │
│    - tests/evals/test_one.py            │
│                                         │
│ 4. 历史决策                             │
│    - Iteration 1: Keep (score +5%)      │
│    - Iteration 2: Discard (score -2%)   │
└─────────────────────────────────────────┘

Outer Agent的任务:

# 伪代码
def optimize_harness(failures, current_harness):
    for failure in failures:
        if "SQL injection" in failure.reason:
            # 修改prompt,强调安全性
            current_harness.prompt += "\n重点关注SQL注入漏洞"
            # 添加安全检查tool
            current_harness.tools.append("check_security_patterns")
        elif "too vague" in failure.reason:
            # 优化prompt,要求更具体的建议
            current_harness.prompt += "\n每个建议必须包含代码示例"

    return current_harness

5.2 可编辑表面的机制

Module Attr模式

# 目标模块:my_agent/graph.py
BASE_AGENT_PROMPT = "原始prompt"

# Better-harness的工作流程
# 1. 读取当前值
current_prompt = importlib.import_module("my_agent.graph").BASE_AGENT_PROMPT

# 2. Outer Agent编辑
edited_prompt = outer_agent.edit(current_prompt)

# 3. 运行时patch
import my_agent.graph
my_agent.graph.BASE_AGENT_PROMPT = edited_prompt

# 4. 运行eval
run_eval()

# 5. 恢复原值
my_agent.graph.BASE_AGENT_PROMPT = original_prompt

Workspace File模式

# 目标文件:my_agent/middleware.py

# Better-harness的工作流程
# 1. 备份原文件
shutil.copy("my_agent/middleware.py", "middleware.py.backup")

# 2. Outer Agent编辑
edited_middleware = outer_agent.edit_file("my_agent/middleware.py")

# 3. 替换文件
with open("my_agent/middleware.py", "w") as f:
    f.write(edited_middleware)

# 4. 运行eval
run_eval()

# 5. 恢复原文件
shutil.move("middleware.py.backup", "my_agent/middleware.py")

5.3 决策机制

保留/丢弃的决策逻辑

def should_keep_candidate(baseline_score, candidate_score, min_improvement=0.01):
    """
    决策是否保留候选harness

    Args:
        baseline_score: baseline的通过率
        candidate_score: 候选harness的通过率
        min_improvement: 最小提升阈值(默认1%)

    Returns:
        bool: True=保留, False=丢弃
    """
    improvement = candidate_score - baseline_score

    # 必须有正向提升
    if improvement <= 0:
        return False

    # 提升必须超过阈值
    if improvement < min_improvement:
        return False

    # 检查过拟合(train提升但holdout下降)
    # 这里需要更复杂的逻辑
    return True

六、应用场景与最佳实践

6.1 适用场景

✅ 适合使用better-harness的场景

  1. 复杂的agent系统:harness有多个可调参数
  2. 有明确的评估指标:可以通过测试量化性能
  3. 需要持续优化:agent的功能会不断演进
  4. 有足够的计算资源:需要运行多次迭代评估

❌ 不适合的场景

  1. 简单的单次任务:overkill
  2. 没有量化指标:无法评估改进效果
  3. 计算资源受限:每次迭代成本高
  4. 安全性敏感:自动修改可能有风险

6.2 最佳实践

1. 从小规模开始

# ✅ 好的做法:先优化一个surface
[surfaces.prompt]
kind = "module_attr"
target = "my_agent.graph:BASE_PROMPT"
filename = "prompt.txt"
base_value = "..."

# ❌ 不推荐:一开始就暴露太多surface
[surfaces.prompt]
...
[surfaces.tools]
...
[surfaces.middleware_impl]
...
[surfaces.middleware_registration]
...

2. 合理设置评估案例

# ✅ 平衡的train/holdout比例
[[cases]]
case_id = "test_1"
split = "train"   # 70% train
stratum = "tool_use"

[[cases]]
case_id = "test_2"
split = "holdout" # 30% holdout
stratum = "tool_use"

3. 限制最大迭代次数

# ✅ 合理的迭代次数
uv run better-harness run my_experiment.toml \
  --max-iterations 3  # 3-5次通常足够

# ❌ 不推荐:无限迭代
uv run better-harness run my_experiment.toml \
  --max-iterations 100  # 可能过拟合

4. 监控过拟合

# 检查train/holdout的gap
def check_overfitting(train_score, holdout_score, max_gap=0.1):
    gap = train_score - holdout_score
    if gap > max_gap:
        print(f"⚠️ 过拟合警告:train={train_score:.2f}, "
              f"holdout={holdout_score:.2f}, gap={gap:.2f}")
        return True
    return False

七、与其他方法的对比

方法 人工优化 AutoML/Hyperopt Better-Harness
优化对象 整个harness 超参数 Harness代码
自动化程度
适用范围 通用 模型训练 Agent系统
代码级优化
需要人工设计 部分需要
评估成本
可解释性

Better-Harness的独特优势
1. 代码级优化:不只是调参,而是修改代码逻辑
2. 领域感知:通过评估案例,了解具体失败原因
3. 自我进化:形成持续改进的闭环

八、未来展望

Better-harness目前还是一个研究项目,但它指明了AI系统发展的一个方向:自我进化

未来可能的发展方向

  1. 更丰富的surface类型
    - 支持模型选择
    - 支持架构搜索
    - 支持多模态输入输出

  2. 更智能的outer agent
    - 引入强化学习
    - 支持元学习
    - 跨任务迁移能力

  3. 更安全的优化
    - 形式化验证
    - 沙箱隔离
    - 回滚机制

  4. 更高效的评估
    - 并行评估
    - 增量评估
    - 代理指标

九、总结

Better-harness展示了AI系统"自我进化"的可能性。通过双层agent循环,系统可以:

  • 自动发现问题:从评估失败中学习
  • 自动生成改进:outer agent提出解决方案
  • 自动验证效果:通过holdout集验证泛化能力
  • 持续迭代优化:形成改进的闭环

这不是取代工程师,而是将工程师从重复的调优工作中解放出来,专注于更高层次的设计和创新。

对开发者的建议

  1. 从简单开始:先尝试优化prompt
  2. 建立评估体系:好的评估是优化的基础
  3. 关注泛化能力:避免过拟合
  4. 保持人类监督:审查outer agent的修改
  5. 记录优化过程:理解agent学到了什么

最后

Better-harness标志着AI开发范式的转变——从"人工调优"到"自我进化"。这可能是通向AGI的一小步,但确实是重要的一步。


项目地址:https://github.com/langchain-ai/deepagents
相关文章:Improving Deep Agents with Harness Engineering
发布时间:2026-04-17