科普 Harness 工程——AI Agent 时代的测试基础设施

从 SWE-bench 到企业级实践:AI Agent 评测一站通关


一、什么是 Harness

1.1 一句话定义

Harness(测试脚手架)= 一套评估 / 测试 AI Agent 的基础设施:给 Agent 一个任务、给它一个运行环境、让它执行、记录结果、给出评分。

任务定义

Harness 调度

Agent 执行

轨迹记录

评分

报告

1.2 词源

领域Harness 含义
马具套在马身上的"装备"(缰绳 + 鞍具)—— 让马能被控制
软件测试测试脚手架 —— 让测试能被自动化
AI AgentAgent 评测脚手架 —— 让 Agent 行为可被量化评估

1.3 传统 Test Harness vs AI Agent Harness

Harness 对比

传统 Test Harness

测试用例

Mock 数据

断言 / 结果

AI Agent Harness

任务定义

运行环境

工具 / API

执行轨迹

评分函数

维度传统 Test HarnessAI Agent Harness
被测对象单元 / 集成代码AI Agent
输入函数参数自然语言任务
断言精确值匹配多模态评估 / LLM 评委
执行同步 / 毫秒级异步 / 秒~分钟
结果pass / fail通过率 / 步骤轨迹 / 评分

1.4 AI Agent Harness 整体架构

任务定义
(Task)

运行环境
(Environment)

工具 / API
(Tools)

Agent 执行

执行轨迹
(Trajectory)

评分函数
(Evaluator)

评分报告
(Report)

1.5 6 大核心地图

Harness
6 大核心

基础

定义与起源

5 大核心能力

评测

评测体系

SWE-bench

框架

主流框架对比

实践

企业级实践


二、核心 1:Harness 定义与起源

2.1 一句话定义

Harness = 测试脚手架,把"测试什么 / 怎么测试 / 如何评分"全部封装起来的工具集。

2.2 为什么 AI 时代需要 Harness?

痛点传统方式Harness 方式
Agent 效果不稳定“感觉不错”量化评分
改动无法回归人工测试自动评测
多模型对比难“A 比 B 好”标准化基准
上线前评估等用户反馈提前量化

2.3 Harness 的 4 个核心角色

Harness 4 个核心角色

① 任务定义者
What to test

② 环境提供者
Where to run

③ 执行监控者
How it runs

④ 评分反馈者
How it scores

2.4 关键点

  • Harness = “AI Agent 的 QA 工具”
  • 从"凭感觉"到"量化"的关键基础设施
  • 传统测试 + AI 评测的桥梁
  • 不是简单的单元测试(需要处理多模态 / 长链路 / 不确定性)

三、核心 2:Harness 5 大核心能力

3.1 一句话定义

Harness 的 5 大核心能力 = 任务 / 环境 / 执行 / 评估 / 反馈,缺一不可。

3.2 5 大能力详解

Harness 5 大能力

① 任务定义
(Task Spec)

② 运行环境
(Environment)

③ 执行控制
(Execution)

④ 评估打分
(Evaluator)

⑤ 反馈改进
(Feedback)

能力 1:任务定义(Task Spec)

问题:要测什么?

{
  "task_id": "fix_bug_123",
  "description": "修复 UserService.java 中的 NPE",
  "repo": "https://github.com/example/repo",
  "base_commit": "abc123",
  "expected_files": ["UserService.java"],
  "test_files": ["UserServiceTest.java"]
}
能力 2:运行环境(Environment)

问题:在什么环境跑?

任务

Docker 容器

代码仓库
(Git)

依赖服务
(DB/Redis)

Mock 外部 API

Agent 执行

能力 3:执行控制(Execution)

问题:怎么让 Agent 跑起来?

控制点实现
超时控制任务 5 分钟超时
Token 限制单任务 < 10K tokens
步骤限制最多 50 步
工具调用提供 Bash / Edit / Read 等
能力 4:评估打分(Evaluator)

评估打分

静态评估

测试通过率

代码 diff

动态评估

LLM 评委

行为轨迹

方法适用场景优点缺点
测试通过率SWE-bench / 代码任务客观只看结果
代码 diffBug 修复任务精确容易误判
LLM 评委开放式任务灵活主观
行为轨迹调试 Agent可解释难量化
能力 5:反馈改进(Feedback)

问题:评测结果怎么用?

评测结果

任务成功率

优化 Prompt

优化 Few-shot

优化工具调用

下一轮评测

3.3 关键点

  • 5 大能力缺一不可
  • 任务 + 环境是"题面",执行 + 评估是"打分",反馈是"改进"
  • 没有反馈的 Harness = 一次性评测
  • 不要只看"通过率"(看不到 Agent 的真实能力)

四、核心 3:评测体系

4.1 一句话定义

评测体系 = 用一套标准化的指标(Pass@k、成功率、效率分),量化 Agent 的能力。

4.2 6 大评测指标

6 大评测指标

① Pass@k
(k 次内至少 1 次通过)

② 任务成功率
(Success Rate)

③ 平均步数
(Avg Steps)

④ Token 效率
(Tokens/Task)

⑤ 失败类型分布
(Error Categorization)

⑥ 轨迹质量
(Trajectory Quality)

4.3 指标详解

指标公式含义
Pass@11 次成功的任务数 / 总任务数单次通过率
Pass@55 次内至少 1 次通过的任务数 / 总任务数多次尝试的稳定性
任务成功率成功任务数 / 总任务数整体能力
平均步数总步数 / 任务数效率
Token 效率Token 总数 / 任务数成本
失败类型分布每类失败占比改进方向

4.4 关键点

  • Pass@k 是核心指标(k 越大越能反映 Agent 真实能力)
  • 多指标组合(不要只看通过率)
  • 失败类型分类很关键(API 错 / 逻辑错 / 超时)
  • 不要用单一指标定 Agent 优劣

五、核心 4:主流框架对比

5.1 一句话定义

主流 Agent Harness 框架 = SWE-bench / AgentBench / LangSmith / Phoenix 等,各有侧重。

5.2 4 大主流框架

SWE-bench
代码任务

AgentBench
通用任务

LangSmith
LangChain 系

Phoenix
可观测性

5.3 框架对比

框架侧重点适用场景优点缺点
SWE-bench代码 Bug 修复Agent 编程能力业界标准任务固定
AgentBench通用任务Agent 综合能力任务多样难度不一
LangSmithLangChain 调试LangChain 应用链路追踪绑定框架
Phoenix可观测性LLM 应用监控开源 / 通用学习成本

5.4 关键点

  • SWE-bench 是"业界标准"(评估 Agent 编程能力必看)
  • 不同框架各有侧重,按需选
  • 企业级通常自研 + 集成开源框架
  • 不要迷信单一框架

六、核心 5:SWE-bench 深度拆解 ⭐ 重头

6.1 一句话定义

SWE-bench = 真实 GitHub Issue + 真实代码仓库,让 Agent 修 Bug,自动用 PR 测试集评测。

6.2 SWE-bench 5 大要素

SWE-bench 5 大要素

① 真实 GitHub Issue
(任务描述)

② 真实代码仓库
(代码上下文)

③ 真实 PR 测试
(评分标准)

④ Docker 隔离环境
(运行环境)

⑤ 自动评分
(Fail-to-Pass)

6.3 SWE-bench 评测流程

PR Test SuiteAgentGit RepoHarnessPR Test SuiteAgentGit RepoHarness1. 拉取 base_commit2. 发送 Issue 描述3. 读代码 / 编辑 / 测试4. 返回 Patch5. 应用 Patch6. 运行 PR 测试7. 通过 / 失败8. 统计 Pass@k

6.4 SWE-bench 版本演进

版本任务数特点
SWE-bench Lite300子集,快
SWE-bench Verified500人工验证质量
SWE-bench Multimodal617多模态 Issue
SWE-bench Full2294全部任务

6.5 主流 Agent 的 SWE-bench 分数(2024-2025)

AgentSWE-bench Verified备注
Claude 4 Sonnet~65% ⭐当前最强
GPT-5~60%接近 Claude
Claude 3.5 Sonnet~49%上一代
DeepSeek-V3~42%开源 SOTA
GPT-4o~33%上一代 OpenAI

6.6 关键点

  • SWE-bench Verified 是当前最权威的评测
  • Claude 4 已经 65% 通过(接近人类水平)
  • Pass@1 ≈ 49-65% 是 Agent 编程能力的"分数线"
  • 不要只看分数(要看任务类型 + 实际使用场景)

七、核心 6:企业级实践:自己搭 Harness

7.1 一句话定义

自己搭 Harness = 5 步搭一个最小可用的 Agent 评测系统:任务定义 → 环境 → 执行 → 评估 → 报告。

7.2 5 步搭最小 Harness

Step 1
定义任务

Step 2
搭环境

Step 3
执行 Agent

Step 4
评估打分

Step 5
生成报告

7.3 完整示例(Python)

# 最小 Harness 实现(伪代码)
import docker
from agent_sdk import Agent

class AgentHarness:
    def __init__(self):
        self.client = docker.from_env()

    def run_task(self, task):
        # Step 1: 启动 Docker 容器
        container = self.client.containers.run(
            "python:3.11",
            command="bash",
            detach=True,
            volumes={task.workspace: {"bind": "/repo", "mode": "rw"}}
        )

        try:
            # Step 2: 启动 Agent
            agent = Agent(model="claude-4-sonnet")

            # Step 3: 执行任务
            result = agent.run(
                task_description=task.description,
                working_dir="/repo",
                timeout=300,
                max_steps=50
            )

            # Step 4: 评估
            score = self.evaluate(result, task)

            # Step 5: 返回报告
            return {
                "task_id": task.id,
                "score": score,
                "trajectory": result.trajectory,
                "tokens": result.token_usage,
                "steps": len(result.trajectory)
            }
        finally:
            container.remove(force=True)

    def evaluate(self, result, task):
        # 跑 PR 测试集
        test_result = run_tests(
            container=result.container,
            test_files=task.test_files
        )
        return {
            "passed": test_result.passed,
            "failed": test_result.failed,
            "pass_rate": test_result.passed / test_result.total
        }

7.4 关键点

  • 从最小可用 Harness 开始(不要一开始就做完整)
  • Docker 隔离环境是必须的(防止污染)
  • 超时 + Token + 步数限制 3 重防护
  • 不要把 Agent 和 Harness 耦合太紧

八、6 大核心的关系图

基础

评测

框架

标准

实践

定义与起源
(是什么)

5 大核心能力
(怎么做)

评测体系
(怎么评)

主流框架
(用什么)

SWE-bench
(业界标准)

企业级实践
(自己搭)

金句Harness 是"AI Agent 的 QA 工具集"——从定义到能力、从评测到框架、从标准到实践,6 大核心组成完整的 Agent 测试基础设施


九、5 个常见误区

#误区真相
1“Agent 答得对就行”需要量化指标(Pass@k / 成功率)
2“SWE-bench 分数高 = Agent 好”分数高但场景不对,仍然不能用
3“一次评测够了”Agent 评估要多次 + 多次任务 + 不同场景
4“LLM 评委准”LLM 评委需要校准(用人类评分对齐)
5“不用 Harness 也能上线”不上 Harness = 等用户当评委

十、工具栈推荐

推荐工具
任务定义SWE-bench / 自建 YAML / JSON
运行环境Docker / Kubernetes
Agent 框架Claude Agent SDK / LangGraph / AutoGen
评测框架SWE-bench Verified / AgentBench / 自研
可观测性LangSmith / Phoenix / Helicone
报告Pandas / Streamlit / 自建 Web

推荐学习路径

入门
读 SWE-bench 论文

实践
跑 SWE-bench Lite

自定义
改 SWE-bench 任务

自研
搭内部 Harness

工程化
集成 CI/CD


十一、6 步学习路径

第 1 步
理解 Harness
(是什么)

第 2 步
掌握 5 大能力
(怎么搭)

第 3 步
理解评测体系
(Pass@k)

第 4 步
对比主流框架
(SWE-bench)

第 5 步
深度学习 SWE-bench
(Verified)

第 6 步
自己搭 Harness
(5 步实战)

  1. 第 1 步:理解 Harness 是什么(AI Agent 的 QA 工具)
  2. 第 2 步:掌握 5 大能力(任务 / 环境 / 执行 / 评估 / 反馈)
  3. 第 3 步:理解评测体系(Pass@k / 成功率 / 效率)
  4. 第 4 步:对比主流框架(SWE-bench / AgentBench)
  5. 第 5 步:深度学习 SWE-bench(业界标准)
  6. 第 6 步:自己搭 Harness(5 步实战)

十二、推荐阅读

如果你想深入学 Harness 工程,这些资料值得读:

  • 📚 《Software Testing》(Sommerville)—— 软件测试基础
  • 📚 《LLM Evaluation》—— LLM 评测综述
  • 📖 SWE-bench 官方论文(arXiv:2310.06770)—— Agent 评测基准
  • 📖 AgentBench 官方论文(arXiv:2308.03688)—— 通用 Agent 评测
  • 📖 LangSmith 文档—— LangChain 可观测性
  • 🔗 SWE-bench GitHub—— 跑一遍 Lite / Verified
  • 🔗 OpenAI Evals—— OpenAI 官方评测框架

十三、附录

一句话总结 6 大核心

核心一句话
定义与起源Harness = AI Agent 的 QA 工具集
5 大核心能力任务 / 环境 / 执行 / 评估 / 反馈
评测体系Pass@k + 成功率 + 效率多维评估
主流框架SWE-bench / AgentBench / LangSmith / Phoenix
SWE-bench真实 GitHub Issue + 真实仓库 + 自动评分
企业级实践5 步搭最小可用 Harness

5 个面试常问问题

Q1:什么是 AI Agent Harness?

评估 / 测试 AI Agent 的基础设施:给 Agent 一个任务、给它一个运行环境、让它执行、记录结果、给出评分。

Q2:SWE-bench 是什么?

真实 GitHub Issue + 真实代码仓库,让 Agent 修 Bug,自动用 PR 测试集评测的 Agent 编程能力基准。

Q3:SWE-bench Verified 和 Lite 的区别?
  • Lite:300 个任务(子集,2-4 小时跑完)
  • Verified:500 个任务(人工验证质量,更权威)
  • Multimodal:617 个任务(带截图)
  • Full:2294 个任务(全部)
Q4:怎么评估 Agent 的代码能力?

用 SWE-bench Verified 的 Pass@1 分数。当前 SOTA:

  • Claude 4 Sonnet:~65%
  • GPT-5:~60%
  • Claude 3.5 Sonnet:~49%
Q5:企业级怎么自己搭 Harness?

5 步:任务定义 → 搭环境(Docker)→ 执行 Agent → 评估打分 → 生成报告。关键是要"量化"+“反馈”,不是一次性评测。

更多推荐