news 2026/9/11 23:58:03

i-have-adhd的evals体系全解:如何科学证明一个输出风格技能真的更好

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
i-have-adhd的evals体系全解:如何科学证明一个输出风格技能真的更好

i-have-adhd的evals体系全解:如何科学证明一个输出风格技能真的更好

【免费下载链接】i-have-adhdA skill to stop your coding agent from burying the answer. ADHD-friendly output.项目地址: https://gitcode.com/GitHub_Trending/ih/i-have-adhd

i-have-adhd 是一个让 AI 编程助手"停止把答案埋在废话里"的输出风格技能:先给行动、步骤编号、不啰嗦。但"感觉变好了"和"真的变好了"是两回事——这个项目专门建了一套 evals 评估体系,用可复现的对照实验来科学证明:装上这个技能后,AI 的回复质量确实更高。这篇文章带你拆解这套体系的完整设计。

为什么输出风格技能需要"科学证明"?

普通功能类技能(比如"帮我部署项目")很容易验证:跑通了就是跑通了。但输出风格技能不同——它没有标准答案,只有"更好"。如果只靠个人感受,很容易陷入"我觉得更清爽了"的自嗨。

i-have-adhd 的解法是:把风格差异变成可测量的数据。核心思想是配对对照实验:

  • baseline(基线):不带技能的 AI 回答
  • candidate(候选):带 i-have-adhd 技能的 AI 回答
  • 两组回答用完全相同的问题、相同的模型生成,再由评审盲评打分,最后用加权分数和"发布门禁"判定技能是否真的更优

整个体系由三个文件构成,都在 evals/ 目录下,官方说明见 evals/README.md。

三大核心文件:一套完整的评估合约

1. 测试题库:cases.jsonl

evals/cases.jsonl 是 14 道精心设计的"考题",覆盖 12 个类别,每道题都带风险等级(low/medium/high)和可核查的评分标准(criteria)。题目设计非常讲究,既考"能力"也考"边界":

题目 ID考察点
direct-answer简单问题不啰嗦(17×6=102,别硬造步骤)
agent-owned-editAgent 该自己动手改,而不是甩给用户
destructive-action"删除所有未跟踪文件"——敢不敢拒绝危险指令
real-ambiguity"部署到生产环境"——该追问就追问,别瞎猜
long-form-request用户明确要详细时,别硬凑"简短"
medical-boundary敢不敢说"这个风格不能诊断 ADHD"

注意最后一类题的巧思:long-form-requestcasual-message恰恰防止技能"矫枉过正"——简洁不该以丢失必要信息为代价,简短也不该被强加到闲聊上

2. 评分标尺:rubric.md

evals/rubric.md 定义了 5 个评分维度、权重和 1~5 分的打分标准,这就是整套体系的"评分合约":

维度权重衡量什么
Correctness 正确性35%事实与技术是否准确
Autonomy 自主性25%Agent 是否自己干活而不是甩锅给用户
Actionability 可执行性20%下一步行动是否好找、能立刻执行
Safety 安全性10%风险、确认、医疗边界处理是否正确
Concision 简洁性10%无废话,但简短不砍掉必要内容

权重设置透露了设计哲学:正确性永远是第一位的(35%),风格相关的"简洁性"只占 10%。此外还有blocker(阻断项)机制——只要出现危险指令、严重事实错误或违反输出合约,一票否决。

3. 执行引擎:run_evals.py

scripts/run_evals.py 是整套流水线的执行引擎,提供 4 个子命令,形成validate → plan → run → score闭环。

四步工作流:从零跑一次对照实验

第一步:校验题库(validate)

python3 scripts/run_evals.py validate

检查每道题字段齐全、ID 不重复、风险等级合法。这道"安检门"确保后续实验不会建立在坏数据上——对应源码见 scripts/run_evals.py。

第二步:规划实验矩阵(plan)

python3 scripts/run_evals.py plan --trials 3 --include-comparator

打印出"每题 × 每轮 × 每条件"的完整 JSONL 矩阵。--trials 3表示每题跑 3 次取平均,消除模型输出的随机性;--include-comparator可以加入第三方竞品技能做三方对比。

第三步:分条件跑(run)

关键操作是分两次运行,分别写入同一个结果文件:

# 基线:不注入技能 python3 scripts/run_evals.py run --runner claude \ --condition baseline --trials 3 --budget-usd 12.50 \ --output evals/results/responses.jsonl # 候选:注入 i-have-adhd 技能 python3 scripts/run_evals.py run --runner claude \ --condition candidate --condition-skill skills/i-have-adhd/SKILL.md \ --trials 3 --budget-usd 12.50 \ --output evals/results/responses.jsonl

两个条件用的是同一份题目,唯一变量就是有没有注入 skills/i-have-adhd/SKILL.md 的指令(注入逻辑见 scripts/run_evals.py)。

第四步:盲评 + 门禁(score)

评审时必须先condition字段打码(标成 A/B/C),避免"看到答案是谁再打分"。每条回答产出一行 JSON 评分后:

python3 scripts/run_evals.py score evals/results/scores.jsonl

脚本自动按 scripts/run_evals.py 中定义的权重加权,并执行发布门禁(release gate):候选技能只有同时满足 4 条才放行——

  1. 无阻断项(blocker);
  2. 正确性和安全性各不低于基线 0.1 分;
  3. 加权总分高于基线;
  4. 对外宣称的对比必须用同一套题库、模型、轮次和标尺。

也就是说,"更简洁但答错了"过不了门禁——风格收益必须以不牺牲正确性为代价。

这些"反作弊"细节才是精髓 🔬

这套体系真正专业的地方,是一堆防止"实验污染"的工程细节:

  • 环境隔离:runner 配置(evals/runners.example.json)里 Claude 用--setting-sources ""、Codex 用--ignore-user-config --ephemeral,把操作者自己的插件、钩子、记忆全部挡在外面。官方特别提醒了一个尖锐场景:本仓库自己的 always-on 标记文件会把 i-have-adhd 规则也注入 baseline,等于让技能和它自己对比,实验直接作废。
  • 模型版本锁定:runner 里显式 pin 住模型。模型一变,回答风格、token 单价全变,不同操作者、不同时间的结果就无法比较。
  • 成本预算:每次调用自动扣减剩余美元预算(上限 25 美元),花完即停,保证实验成本有界。
  • 断点续跑:已完成的(题目, 轮次, 条件, runner)组合自动跳过,中途失败重跑同一条命令即可继续。
  • 配对校验:score 阶段会检查两个条件是否评分在同一批题目上(scripts/run_evals.py),行对不齐直接报错,杜绝"拿不同的卷子比分数"。
  • 不可比数据直接拒绝:不同题库、模型、轮次、标尺产生的条件之间禁止比较——这条规则甚至写进了 CONTRIBUTING.md 的贡献规范。

用单元测试守护评估器本身 🧪

"测量仪器"自己也要被测。tests/test_run_evals.py 为整套流水线配了 8 个单测,全部离线、零模型调用:

  • 题库至少 12 题、覆盖至少 8 个类别(防题库退化);
  • 加权分计算与门禁判定正确(candidate 4 分 vs baseline 3 分 → 通过);
  • 候选出现 blocker → 门禁必须失败;
  • 两个条件评分题目不一致 → 抛错拒绝;
  • 重复评分行、重复题目 ID、坏 JSONL → 全部拦截;
  • 无法报告成本的 runner在发起任何调用前就被拒绝(防烧钱)。

跑一遍测试就能自证工具链可信:

python3 -m unittest discover -s tests -v python3 scripts/run_evals.py validate

新手快速上手清单 ✅

  1. 先读 evals/README.md,理解 4 个子命令;
  2. 翻一遍 evals/cases.jsonl,体会"风格也要有考题"的思路;
  3. 对着 evals/rubric.md 手动盲评几条样例回答,建立 1~5 分的手感;
  4. validateplan干跑一遍,确认自己的 runner 配置(evals/runners.example.json);
  5. 正式发布结论时,附上精确的 CLI 版本 + 模型版本 + 预算 + 轮次数——官方要求这些数字必须和结果一起记录。

总结

i-have-adhd 的 evals 体系给了开源社区一个难得的示范:即便是"让 AI 说话更好听"这种主观性极强的功能,也能用对照实验 + 盲评 + 加权标尺 + 发布门禁 + 离线单测五件套,做到可复现、可审计、可证伪。如果你想给自己的 Agent 技能加评估,直接照抄这套结构即可:题库放cases.jsonl,标尺写rubric.md,执行引擎用run_evals.py的四个子命令兜底。

【免费下载链接】i-have-adhdA skill to stop your coding agent from burying the answer. ADHD-friendly output.项目地址: https://gitcode.com/GitHub_Trending/ih/i-have-adhd

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 6:58:04

litellm请求钩子3步上手:请求预处理与响应后处理怎么做

litellm请求钩子3步上手:请求预处理与响应后处理怎么做 【免费下载链接】litellm The fastest, litest AI Gateway. Rust core with Python SDK. Call 100 LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Be…

作者头像 李华
网站建设 2026/9/4 16:23:30

Mole 安装与上手指南:Mac 磁盘清理工具从装到用的完整路径

Mole 安装与上手指南:Mac 磁盘清理工具从装到用的完整路径 【免费下载链接】Mole 🐹 Clean, uninstall, analyze, optimize, and monitor your Mac. Free open-source CLI, plus a native Mac app. 项目地址: https://gitcode.com/GitHub_Trending/mol…

作者头像 李华
网站建设 2026/9/4 9:13:58

高并发服务部署前的配置核对

高并发服务部署前的配置核对Go 服务能在本地压测中跑出高吞吐,不代表放进容器后仍有相同行为。CPU 配额、内存上限、连接池、CGO 原生库和 Pod 终止流程,都会改变调度与延迟。部署前的配置核对,重点是确认代码看到的资源与 Kubernetes 实际提…

作者头像 李华
网站建设 2026/9/4 8:37:18

RDU可重构数据流架构:如何颠覆GPU主导的大模型推理

1. 芯片瓶颈:GPU 强大,但也不是没有代价 过去几年,大模型几乎把 AI 计算推到了台前。训练一个千亿参数模型需要数千张加速卡,推理时也要靠批量并行才能压住延迟。在这个阶段,NVIDIA GPU 几乎成了 AI 的默认答案&#x…

作者头像 李华
网站建设 2026/9/4 16:32:42

欢聚时代校招面经:从笔试到HR面的全流程解析

每年到了春招秋招的节点,总有不少同学私信问我:“欢聚时代(YY)到底好不好进?”“笔试难不难?”“HR面会不会刷人?”作为在互联网公司干了快十年、跟欢聚的HR和技术负责人打过不少交道的老兵&…

作者头像 李华
网站建设 2026/9/4 15:29:10

前端工程协作的边界设计:让改动不必靠猜

前端工程协作的边界设计:让改动不必靠猜前端项目规模一大,协作成本往往不在代码量,而在边界模糊。一个页面问题可能涉及设计稿、接口约定、组件库、埋点、权限和发布配置;多人同时改动时,谁能改什么、谁需要评审、什么…

作者头像 李华