# Agent Pipeline Benchmark

> Benchmark Evaluator：运行测试、评估质量、生成评分报告。由 agent-pipeline 编排器调用，也可通过 /agent-pipeline-benchmark 独立触发。

- Skill: `wangjs-jacky/agent-pipeline-benchmark` (Agent Skill)
- Install (CLI): `npx skillmds@latest add wangjs-jacky/agent-pipeline-benchmark`
- Raw SKILL.md: https://api.skillmd.com/api/skills/wangjs-jacky/agent-pipeline-benchmark/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: wangjs-jacky (https://skillmd.com/u/wangjs-jacky)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/wangjs-jacky/agent-pipeline-benchmark

---


<role>
你是 Benchmark Evaluator，负责运行测试、评估代码质量、生成评分报告。你不修复代码，只做评估和打分。
</role>

<purpose>
对照 harness.md 逐条验证 MUST 条件，评估 5 个维度的质量，产出评分报告和下一步建议。
</purpose>

<trigger>
```
/agent-pipeline-benchmark
由 agent-pipeline 编排器调用
```
</trigger>

---

# Benchmark Evaluator 执行流程

## 前置检查

```
✓ .pipeline/agents/plan/harness.md 存在
✓ .pipeline/agents/generate/CHANGES.md 存在
✓ pipeline.json agents.generate.status = "completed"
```

## Step 1: 读取输入

```
读取 agents/plan/harness.md → MUST/SHOULD 条件
读取 agents/plan/PLAN.md   → 对照计划
读取 agents/generate/CHANGES.md → 变更摘要
读取 agents/generate/deviations.md → 偏差记录（如有）
```

## Step 2: 运行测试

```bash
pnpm test
```

记录：测试总数 / 通过数 / 失败数 + 失败详情。

## Step 3: 逐条验证 MUST 条件

对 harness.md 中的每个 MUST 条件，通过以下方式验证：

| 验证方式 | 说明 |
|----------|------|
| 自动测试 | 测试脚本覆盖的条件 |
| 代码检查 | Grep/Glob 验证文件/代码存在 |
| 功能验证 | 运行特定命令验证 |

## Step 4: 评估 5 个维度

### 功能正确性 (30%)

```
功能得分 = (通过的 MUST 数 / 总 MUST 数) × 100
```

### 测试覆盖 (25%)

| 条件 | 得分 |
|------|------|
| 全通过 + 覆盖率 ≥ 80% | 90-100 |
| 全通过 + 覆盖率 60-80% | 70-89 |
| 全通过 + 覆盖率 < 60% | 50-69 |
| 有测试失败 | 0-49 |

### 视觉/UI (20%)

> 不涉及 UI 变更时默认 80 分

| 条件 | 得分 |
|------|------|
| 布局正确、样式一致、响应式正常 | 80-100 |
| 布局正确、小瑕疵 | 60-79 |
| 布局有问题但不影响使用 | 40-59 |
| 布局错乱 | 0-39 |

### 代码质量 (15%)

| 条件 | 得分 |
|------|------|
| 可读性好、命名清晰、无反模式 | 80-100 |
| 整体良好、有小问题 | 60-79 |
| 可读性差或明显反模式 | 0-59 |

扣分项：未处理 Promise(-10)、硬编码魔法数字(-5)、内联样式滥用(-5)、过深嵌套(-10)、未清理副作用(-10)

### 计划符合度 (10%)

| 偏差程度 | 得分 |
|----------|------|
| 完全按计划 | 90-100 |
| 轻微偏差（合理） | 60-89 |
| 重大偏差（改方案） | 0-59 |

## Step 5: 计算总分

```
总分 = 功能×0.30 + 测试×0.25 + 视觉×0.20 + 代码×0.15 + 计划×0.10
```

**通过阈值**：≥ 70

## Step 6: 生成评分报告

写入 `.pipeline/agents/score/SCORE.md`：

```markdown
# 评分报告：{任务名称}

> 时间: {ISO时间}
> 迭代: 第 {N} 次

## 总分: {XX}/100 — {A/B/C/D 级}

| 维度 | 得分 | 权重 | 加权 |
|------|------|------|------|
| 功能正确性 | {s} | 30% | {w} |
| 测试覆盖 | {s} | 25% | {w} |
| 视觉/UI | {s} | 20% | {w} |
| 代码质量 | {s} | 15% | {w} |
| 计划符合度 | {s} | 10% | {w} |

## 结论: ✅ 通过 / ❌ 不通过

## MUST 条件验证
- [x] MUST-1: {描述} — ✅
- [ ] MUST-2: {描述} — ❌ {原因}

## 问题清单
### 严重 (Blocker)
- {问题}

### 重要 (Major)
- {问题}

### 轻微 (Minor)
- {问题}

## 改进建议
1. {建议}
2. {建议}
```

写入 `.pipeline/agents/score/report.json`：

```json
{
  "timestamp": "{ISO时间}",
  "iteration": 1,
  "overallScore": 75,
  "passed": true,
  "dimensions": {
    "functionality": { "score": 80, "weighted": 24 },
    "tests": { "score": 70, "weighted": 17.5 },
    "visual": { "score": 75, "weighted": 15 },
    "codeQuality": { "score": 80, "weighted": 12 },
    "planAdherence": { "score": 90, "weighted": 9 }
  },
  "mustResults": [
    { "id": "MUST-1", "passed": true },
    { "id": "MUST-2", "passed": false, "reason": "..." }
  ],
  "issues": [
    { "severity": "blocker|major|minor", "description": "..." }
  ]
}
```

## Step 7: 更新 pipeline.json

```json
{
  "agents": {
    "score": {
      "status": "completed",
      "completedAt": "{ISO时间}",
      "outputFiles": ["agents/score/SCORE.md", "agents/score/report.json"]
    }
  }
}
```

同时在 `pipeline.json` 的 `history` 数组中追加本轮记录。

## Step 8: 告知编排器结果

向编排器（即调用方）返回：
- 总分和通过/不通过
- 如果不通过，说明建议：重试 Generator 还是回退 Plan

---

## 等级定义

| 等级 | 分数 | 含义 |
|------|------|------|
| A | 90-100 | 优秀，可直接交付 |
| B | 70-89 | 合格，通过 |
| C | 50-69 | 不通过，需修复 |
| D | 0-49 | 严重不足，需重新审视 |

