claude-code/claude-zh/skills/eval-harness/SKILL.md

5.7 KiB
Raw Permalink Blame History

name description
eval-harness 針對 Claude Code 會話的正向評估框架,實踐評估驅動開發 (EDD) 原則。

評估測試組件技能 (Eval Harness Skill)

針對 Claude Code 會話的正向評估框架,實踐評估驅動開發 (Eval-Driven Development, EDD) 原則。

何時啟用

  • 為 AI 輔助工作流設置評估驅動開發 (EDD)。
  • 為 Claude Code 任務完成定義「通過/失敗」基準。
  • 使用 pass@k 指標衡量 Agent 的可靠性。
  • 為提示詞 (Prompt) 或 Agent 變更建立回歸測試套件。
  • 在各個模型版本間進行 Agent 效能基準測試。

核心哲學

評估驅動開發 (EDD) 將評估視為「AI 開發的單元測試」:

  • 在實作「之前」定義預期行為。
  • 在開發過程中持續執行評估。
  • 追蹤每次變動可能產生的回歸 (Regressions)。
  • 使用 pass@k 指標衡量可靠度。

評估類型

能力評估 (Capability Evals)

測試 Claude 是否能做到以前做不到的事情:

[能力評估:功能名稱]
任務:描述 Claude 應完成的目標
成功標準:
  - [ ] 準則 1
  - [ ] 準則 2
  - [ ] 準則 3
預期輸出:預期結果的描述

回歸評估 (Regression Evals)

確保變動不會破壞現有功能:

[回歸評估:功能名稱]
基準線SHA 雜湊值或是檢查點 (Checkpoint) 名稱
測試項:
  - 現有測試-1通過/失敗
  - 現有測試-2通過/失敗
  - 現有測試-3通過/失敗
結果:通過 X/Y 個 (先前為 Y/Y)

評分器類型 (Grader Types)

1. 基於程式碼的評分器

使用程式碼進行確定性檢查:

# 檢查檔案是否包含預期模式
grep -q "export function handleAuth" src/auth.ts && echo "通過" || echo "失敗"

# 檢查測試是否通過
npm test -- --testPathPattern="auth" && echo "通過" || echo "失敗"

# 檢查建置是否成功
npm run build && echo "通過" || echo "失敗"

2. 基於模型的評分器

使用 Claude 評估開放式的輸出:

[模型評分器提示詞]
請評估以下程式碼變動:
1. 它是否解決了所述問題?
2. 結構是否良好?
3. 是否處理了邊際案例 (Edge cases)
4. 錯誤處理是否妥切?

評分1-5 (1=差5=優)
推論過程:[解釋原因]

3. 人工評分器

標記需要人工審查:

[需要人工審查]
變動內容:對變動的描述
原因:為何需要人工審查
風險程度:低/中/高

指標 (Metrics)

pass@k

「在 k 次嘗試中至少成功一次」

  • pass@1:第一次嘗試的成功率。
  • pass@33 次嘗試內的成功率。
  • 典型目標:pass@3 > 90%

pass^k

「所有 k 次試驗皆成功」

  • 更高標準的可靠性。
  • pass^3:連續 3 次成功。
  • 用於關鍵路徑。

評估工作流

1. 定義 (開發前)

## 評估定義:功能-xyz

### 能力評估
1. 可以建立新的使用者帳號
2. 可以驗證電子郵件格式
3. 可以安全地雜湊密碼

### 回歸評估
1. 現有登入功能仍正常運作
2. 會話 (Session) 管理未受影響
3. 登出流程完好

### 成功指標
- 能力評估之 pass@3 > 90%
- 回歸評估之 pass^3 = 100%

2. 實作

撰寫程式碼以通過定義好的評估項目。

3. 執行評估

# 執行能力評估
[執行各個能力評估項,記錄通過/失敗]

# 執行回歸評估
npm test -- --testPathPattern="existing"

# 生成報告

4. 報告

評估報告:功能-xyz
========================

能力評估:
  建立使用者:      通過 (pass@1)
  驗證電子郵件:    通過 (pass@2)
  密碼雜湊:        通過 (pass@1)
  整體情況:        3/3 通過

回歸評估:
  登入流程:        通過
  會話管理:        通過
  登出流程:        通過
  整體情況:        3/3 通過

數據指標:
  pass@1: 67% (2/3)
  pass@3: 100% (3/3)

狀態:準備好接受審查 (READY FOR REVIEW)

整合模式

實作前

/eval define 功能名稱

.claude/evals/功能名稱.md 建立評估定義檔。

實作過程中

/eval check 功能名稱

執行目前的評估並報告狀態。

實作完成後

/eval report 功能名稱

生成完整的評估報告。

評估儲存方式

將評估儲存在專案中:

.claude/
  evals/
    feature-xyz.md      # 評估定義
    feature-xyz.log     # 評估執行紀錄
    baseline.json       # 回歸測試基準線

最佳實踐

  1. 在寫程式「之前」定義評估項 - 強迫自己對成功標準有清晰的思考。
  2. 頻繁執行評估 - 儘早發現回歸問題。
  3. 長期追蹤 pass@k - 監控可靠性趨勢。
  4. 盡可能使用程式碼評分器 - 確定性優於機率性。
  5. 針對安全性進行人工審查 - 絕不要完全自動化安全性檢查。
  6. 保持評估快速 - 緩慢的評估不會被執行。
  7. 將評估項與程式碼一同進行版本控制 - 評估項是第一等產出物。

範例:新增身分驗證功能

## 評估:新增身分驗證

### 階段 1定義 (10 分鐘)
能力評估:
- [ ] 使用者可以使用電子郵件/密碼註冊
- [ ] 使用者可以使用有效憑證登入
- [ ] 無效憑證將被拒絕並顯示正確錯誤
- [ ] 重新整理頁面後會話仍保持
- [ ] 登出後會清除會話

回歸評估:
- [ ] 公開路由仍可存取
- [ ] API 回應未改變
- [ ] 資料庫架構相容

### 階段 2實作 (因人而異)
[撰寫程式碼]

### 階段 3執行評估
執行:/eval check 新增身分驗證

### 階段 4報告
評估報告:新增身分驗證
==============================
能力評估5/5 通過 (pass@3: 100%)
回歸評估3/3 通過 (pass^3: 100%)
狀態:可以發佈 (SHIP IT)