CtrlK
BlogDocsLog inGet started
Tessl Logo

eval-harness

为 Claude Code 会话提供的正式评测框架,实现了评测驱动开发(EDD)原则

SKILL.md
Quality
Evals
Security

评测工具链(Eval Harness)技能(Skill)

一个用于 Claude Code 会话的正式评测框架,实现了评测驱动开发(Eval-Driven Development, EDD)原则。

何时激活

  • 为 AI 辅助工作流设置评测驱动开发(EDD)
  • 为 Claude Code 任务完成定义通过/失败的标准
  • 使用 pass@k 指标衡量智能体(Agent)的可靠性
  • 为提示词(Prompt)或智能体(Agent)的变更创建回归测试套件
  • 跨模型版本对智能体(Agent)性能进行基准测试

核心理念

评测驱动开发(Eval-Driven Development)将评测视为“AI 开发的单元测试”:

  • 在实现之定义预期行为
  • 在开发过程中持续运行评测
  • 追踪每次变更带来的回归(Regression)
  • 使用 pass@k 指标进行可靠性衡量

评测类型

能力评测(Capability Evals)

测试 Claude 是否能够完成之前无法完成的任务:

[CAPABILITY EVAL: feature-name]
任务:描述 Claude 应该完成的目标
成功标准:
  - [ ] 标准 1
  - [ ] 标准 2
  - [ ] 标准 3
预期输出:对预期结果的描述

回归评测(Regression Evals)

确保变更不会破坏现有功能:

[REGRESSION EVAL: feature-name]
基线(Baseline):SHA 或检查点(checkpoint)名称
测试项:
  - existing-test-1: 通过/失败(PASS/FAIL)
  - existing-test-2: 通过/失败(PASS/FAIL)
  - existing-test-3: 通过/失败(PASS/FAIL)
结果:X/Y 通过(之前为 Y/Y)

评分器(Grader)类型

1. 基于代码的评分器(Code-Based Grader)

使用代码进行确定性检查:

# 检查文件是否包含预期模式
grep -q "export function handleAuth" src/auth.ts && echo "PASS" || echo "FAIL"

# 检查测试是否通过
npm test -- --testPathPattern="auth" && echo "PASS" || echo "FAIL"

# 检查构建是否成功
npm run build && echo "PASS" || echo "FAIL"

2. 基于模型的评分器(Model-Based Grader)

使用 Claude 评测开放式输出:

[MODEL GRADER PROMPT]
评测以下代码变更:
1. 它是否解决了所述问题?
2. 结构是否良好?
3. 是否处理了边缘情况?
4. 错误处理是否得当?

得分:1-5(1=差,5=优秀)
推理:[解释说明]

3. 人工评分器(Human Grader)

标记以进行人工审查:

[HUMAN REVIEW REQUIRED]
变更内容:描述发生了什么变化
原因:为什么需要人工审查
风险等级:低/中/高(LOW/MEDIUM/HIGH)

指标

pass@k

“k 次尝试中至少有一次成功”

  • pass@1:首次尝试成功率
  • pass@3:3 次尝试内的成功率
  • 典型目标:pass@3 > 90%

pass^k

“所有 k 次试验均成功”

  • 对可靠性有更高要求
  • pass^3:连续 3 次成功
  • 用于关键路径

评测工作流

1. 定义(编码前)

## 评测定义:feature-xyz

### 能力评测
1. 可以创建新用户账户
2. 可以验证电子邮件格式
3. 可以安全地对密码进行哈希处理

### 回归评测
1. 现有登录功能仍然正常
2. 会话管理保持不变
3. 注销流程完好无损

### 成功指标
- 对于能力评测:pass@3 > 90%
- 对于回归评测:pass^3 = 100%

2. 实现

编写代码以通过定义的评测。

3. 执行评测

# 运行能力评测
[运行每项能力评测,记录通过/失败]

# 运行回归评测
npm test -- --testPathPattern="existing"

# 生成报告

4. 报告

评测报告:feature-xyz
========================

能力评测:
  create-user:     通过 (pass@1)
  validate-email:  通过 (pass@2)
  hash-password:   通过 (pass@1)
  总体:           3/3 通过

回归评测:
  login-flow:      通过
  session-mgmt:    通过
  logout-flow:     通过
  总体:           3/3 通过

指标:
  pass@1: 67% (2/3)
  pass@3: 100% (3/3)

状态:准备好进行评审 (READY FOR REVIEW)

集成模式

实现前(Pre-Implementation)

/eval define feature-name

.claude/evals/feature-name.md 创建评测定义文件

实现过程中(During Implementation)

/eval check feature-name

运行当前评测并报告状态

实现后(Post-Implementation)

/eval report feature-name

生成完整的评测报告

评测存储

在项目中存储评测:

.claude/
  evals/
    feature-xyz.md      # 评测定义
    feature-xyz.log     # 评测运行历史
    baseline.json       # 回归基线

最佳实践

  1. 在编码前(BEFORE)定义评测 - 强制对成功标准进行清晰思考
  2. 频繁运行评测 - 尽早发现回归
  3. 随时间跟踪 pass@k - 监控可靠性趋势
  4. 尽可能使用代码评分器 - 确定性优于概率性
  5. 安全相关需人工评审 - 绝不完全自动化安全检查
  6. 保持评测快速 - 慢速评测往往不会被运行
  7. 将评测与代码一同进行版本控制 - 评测是一等公民资产

示例:添加身份验证(Authentication)

## EVAL: add-authentication

### 第 1 阶段:定义 (10 分钟)
能力评测:
- [ ] 用户可以使用电子邮件/密码注册
- [ ] 用户可以使用有效凭据登录
- [ ] 无效凭据被拒绝并显示正确错误
- [ ] 页面重新加载后会话依然持久化
- [ ] 注销后清除会话

回归评测:
- [ ] 公共路由仍可访问
- [ ] API 响应保持不变
- [ ] 数据库架构兼容

### 第 2 阶段:实现 (耗时视情况而定)
[编写代码]

### 第 3 阶段:执行评测
运行:/eval check add-authentication

### 第 4 阶段:报告
评测报告:add-authentication
==============================
能力:5/5 通过 (pass@3: 100%)
回归:3/3 通过 (pass^3: 100%)
状态:准予发布 (SHIP IT)
Repository
xu-xiang/everything-claude-code-zh
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.