# Blind Eval

> 当合入与否取决于品味或输出质量、测试判不了时，先跑这个。隐去作者身份、只凭作品本身评判，然后保留或回滚——平局即回滚，只有被证明的提升才能合入。Trigger words: blind eval, karpathy, keep or revert, quality gate, taste call, blind judge, A/B judge, prove uplift. 中文触发词：盲评、盲测、保留还是回滚、质量门、品味判断、A/B 盲评、证明提升。

- Skill: `tcuzzo/blind-eval-7` (Agent Skill)
- Install (CLI): `npx skillmds@latest add tcuzzo/blind-eval-7`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tcuzzo/blind-eval-7/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: Tcuzzo (https://skillmd.com/u/tcuzzo)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tcuzzo/blind-eval-7

---


# Blind Eval——盲评
**Effort:** light — 一次盲评运行：由一个两边都没写过的模型，对冻结的一对作品做几轮乱序阅读。消除：自评“这版更好”就落地——那些作者自己会挥手放行的品味回归。

一道"保留或回滚"的质量门，专管测试判不了的问题——文案质量、UI 用语、重构后的可读性、prompt 的输出、设计的手感。隐去作者身份、只凭作品本身评判，然后要么保留（KEEP）要么回滚（REVERT）。平局即回滚。只有被证明的提升才能合入。

## 什么时候跑

- 任何"到底是不是更好？"属于品味或质量问题的改动，合入之前。
- 作为改进循环里的那道门：提出 → 尝试 → 度量 → 保留或丢弃。
- 任何时候，只要作者忍不住想宣布自己的活是个改进。

## 方法

1. **看结果之前，先把"更好"写下来。** 一句大白话的目标。一个带硬及格线的主指标或
   评分轴——是一道要迈过的线，不是一个越高越好的数字。次级指标按优先级排好
   （成本、长度、延迟）。
2. **冻结两个版本。** 基线和候选，都得是真实产物——绝不能只是对它们的描述。
3. **抹掉作者痕迹。** 标成 A 和 B，打乱顺序，去掉所有名字、模型 id、作者的论证过程。
   评审只看到产物和评分标准。
4. **请一位两版都没写过的评审**——不同家族的模型，或者一个人。作者永远不给自己的活打分。
5. **只凭作品评判。** 每条评分轴打分。每个分数都要引用产物里的证据——没有证据的裁决
   只是猜测。
6. **只有候选版既过线、又严格胜过基线，才保留（KEEP）。** 平局不算提升——回滚。
7. **干净地回滚。** 把代码树恢复到改动前逐字节一致的状态（提前开一个临时分支或
   stash，回滚就是一条命令）。无论结果如何都记录裁决。

## 防作弊规则

- **先查及格线，各轴按序排。** 高优先级轴上的退步是致命的，哪怕所有低优先级轴都在
  进步。及格线过得再多也换不来什么——不能用主指标的超额去"抵扣"成本上的退步。
- **看到结果之后绝不降线。** 靠削弱评测来修分数是被禁止的。把评分标准和评测放在
  改动允许触碰的文件之外。
- **不许自评。** 评审永远看不到作者的自述——读了推销词的评审评的是推销词，不是作品。
- **给随机性评审去噪。** 盲评每跑一次结果都会漂，而且评审偏爱先看到的那个选项。
  同一组对比多跑几次、每次打乱顺序、取多数票——打乱顺序杀掉位置偏差，重复次数杀掉
  噪声，一招两得。如果真实提升比评审自身的漂移还小，这道门就分不清信号和运气——
  加读数，或换个更稳的指标。
- **单模型条件。** 没有第二个模型家族可用？用一个从没见过作者对话的全新盲评会话来
  评——并在报告里写明这道门被削弱了（"同家族盲评，非跨家族"）。
- **没有可信的及格线？用严格胜出。** 基线水平未知或噪声大时，放弃绝对及格线，只保留
  严格胜过当前冠军的改动。退步永远不可能严格胜出，所以不需要下限。
- **绝不在失败样本上算成本轴。** 在失败尝试上算出来的"步数更少"，奖励的是早早放弃。
  成本和工作量只在成功样本上计算。

## 给评审去偏

评审机制的地板。它们只写在这里：

- **保留集。** 在构建者写权限之外的一套测试上评分——构建者看不到用来评分的测试，
  就没法硬编码去应付它们。
- **新鲜提交剥离。** 评分运行之前，把工作区剥到一个干净的新 commit，并切断网络出口，
  这样通过是"推导出来的"——不是从 git 历史或别人的修复里捞回来的。
- **长度归一。** 评审强烈偏爱更长的答案——比较分数前先做长度校正。
- **轮换保留标准。** 用按命名轴、逐条 yes/no 的评分表，其中部分保留标准隐藏、每轮
  轮换。一个公开的整体分会被玩成引用作秀。
- **只评最终态。** 多步工作只评最终结果，不评每个中间步骤。
- **校准评审。** 先在一小组人工标注的样本上校准评审——报出它的真阳性率和真阴性率
  ——再放它上你的领域。

顺序打乱属于上面的去噪规则——同一条法则，只说一次。

## 循环变体

同一道门也驱动自主改进循环：提出一个小改动 → 跑一轮短实验 → 盲测 → 更好就保留，
否则回滚 → 重复，在固定的轮次预算内。把上一轮的失败痕迹喂给提议者，不要只给目标
——看不见自己为什么失败的提议者是在盲改。哪怕一轮都没保留的循环也值回成本：它收集
的痕迹指向具体的、能修的 bug，任何汇总分数都暴露不了。

## 搭配使用

- [blind-tribunal](../blind-tribunal/SKILL.md)——当问题是缺陷而非品味时，用这个更重的陪审团。
- [red-first](../red-first/SKILL.md)——测试判得了的事，就去写测试。
- [clean-code-gauntlet](../clean-code-gauntlet/SKILL.md)——可度量的代码质量门，和品味判断搭配用。

> Namesake credit: Andrej Karpathy. Namesake inspiration; the keep-or-revert
> discipline is independently paralleled in Karpathy's autoresearch (2026,
> github.com/karpathy/autoresearch, MIT). The blind (author-hidden) aspect and
> the composition and hard rules here are BACKS AIOS.

