oh-my-knowledge
v0.32.0
Published
Evaluation framework for LLM knowledge inputs — prompts, RAG corpora, skills, agent workflows. Fix the model, vary the artifact. Built-in statistical rigor: bootstrap CI, Krippendorff α, length-debias, saturation curves.
Downloads
1,979
Maintainers
Readme
oh-my-knowledge
English | 简体中文
你改完 prompt,真的变好了吗? 用统计严谨性 A/B 测试你的 prompt 和 skill —— Bootstrap 置信区间、Krippendorff α、长度去偏,全部默认开。

快速开始
npm i -g oh-my-knowledge
omk init demo && cd demo
omk eval --control code-review-v1 --treatment code-review-v2不用改任何文件 —— omk init 帮你脚手架两版 skill 和三条评测用例;omk eval 跑控制变量 A/B,5 分钟内出 HTML 报告 + 一行 verdict。
手把手教程:5 分钟快速上手(推荐第一次跑评测的用户)。
深入:CLI 参考 · 工作原理 · 评测样本格式 · 执行器与 artifact 布局
在 AI Coding Agent 中使用
在 Claude Code 中使用
当 omk skill 已在 Claude Code 中可用时,可以直接这样调用:
/omk eval # 评测当前项目的 artifact
/omk evolve # 多轮自动迭代改进 skill
/omk sample # 生成或补齐评测用例这些 slash command 是自然语言入口 —— agent 会从对话上下文里推断要操作哪个 skill。也可以直接说「帮我评测 v1 和 v2 的差异」、「改进一下这个 artifact」,omk 会自动理解意图并调用对应命令。
在 Codex 中使用
Codex 默认不支持 /omk ... 这种 Claude Code 风格的 slash command。通常直接让 agent 执行 omk CLI,例如:
omk eval
omk evolve skills/my-skill.md
omk sample skills/my-skill.md也可以直接用自然语言描述目标,例如「比较 v1 和 v2 的评测差异」、「为这个 skill 生成评测用例」。
为什么需要这个工具
做知识工程的团队会产出大量知识载体(当前常见是 skill,也包括 prompt、agent、workflow 等)。当被问到「v2 比 v1 好在哪」时,需要客观数据而非主观判断。oh-my-knowledge 通过控制变量实验解决这个问题:相同模型、相同评测用例,只改变知识载体。
为什么选 omk
| | omk | promptfoo | DeepEval | LangSmith | |--|--|--|--|--| | Bootstrap 置信区间 | ✓ 默认 | ✗ | ✗ | ✗ | | Krippendorff α(评委 ↔ 人工) | ✓ 默认 | ✗ | ✗ | ✗ | | 长度去偏的评委 prompt | ✓ 默认 | ✗ | ✗ | ✗ | | 饱和曲线 | ✓ | ✗ | ✗ | ✗ | | 三层独立评分 | ✓ | ✗ | 部分 | ✗ | | 用例隔离(construct validity) | ✓ 默认 | ✗ | ✗ | ✗ | | 原生 Claude Code skill | ✓ | ✗ | ✗ | ✗ | | 托管 SaaS 看板 | ✗ | ✗ | ✓ | ✓ |
omk 的护城河是 default-on 安全网 —— Bootstrap CI / 评委 ↔ 人工 α / 长度去偏不是 advanced flag,是默认行为。其他工具让你手动接置信区间;omk 让你默认无法忽略它。需要 SaaS 看板?选 LangSmith。要快速 prompt 迭代不要统计层?选 promptfoo。要发到生产且会被问「为什么应该相信这个数字」?选 omk。
RAG 专项评测请看 RAGAS(独立 niche,跟 omk 互补)。完整对比(7 个工具 × 25+ 维度): docs/zh/reference/comparison.md
特性
| 特性 | 说明 |
|------|------|
| Verdict 一行结论 | omk eval 六档判定 + ship 建议 + exit code 路由,与 HTML 报告 verdict pill 共享规则 |
| 六维评估 | 事实 / 行为 / LLM 评价 / 成本 / 效率 / 稳定性独立展示 |
| 多执行器 | 支持 Claude CLI / Claude SDK / Codex CLI / Codex SDK / OpenAI / Gemini 及自定义命令 |
| 21+ 种断言 | 包含子串、正则、JSON Schema、ROUGE/BLEU/Levenshtein 相似度、Agent 工具调用、语义相似度、自定义函数等 |
| 统计严谨性 | Bootstrap CI / Krippendorff α / 长度去偏 / 饱和曲线 —— 全部默认开。详情 → |
| RAG metrics | faithfulness / answer_relevancy / context_recall 三 metric — 反幻觉 + 切题度 + context 覆盖 |
| LLM 健康度审计 | omk doctor 给 7 个内置维度独立打分;--static-only 可离线无 LLM 调用 |
| 线上 session 观测 | 解析 Claude Code session JSONL,测量各 skill 的失败率、耗时、token 成本、知识缺口信号 |
| 知识缺口识别 | 严重度加权的信号量化风险敞口,不宣称完备性 |
| 用例隔离 (construct validity) | --strict-baseline(默认开)三堵 baseline 拿到被测 skill 的污染路径 |
| 用例设计科学性 | Sample schema 加 capability / difficulty / construct / provenance 元数据字段(HF Dataset Cards 风),studio 输出 coverage 分桶 + rubric_clarity_low / capability_thin issue。docs/specs/sample-design-spec.md |
| 多评委 ensemble | --judge-models claude:opus,openai:gpt-4o 跨厂商评分 + agreement 度量 |
| 盲测 A/B | --blind 隐藏变体名称,HTML 报告有揭晓按钮 |
| 多轮方差分析 | --repeat N 重复 N 次,计算均值/标准差/置信区间/t 检验 |
| MCP URL 获取 | 通过 MCP Server 获取私有文档 URL 内容(SSO 保护的知识库等) |
| 自动分析 | 检测低区分度断言、均匀分数、全通过/全失败、高成本用例 |
| 可追溯性 | 报告含 CLI 版本、Node 版本、artifact 版本指纹、judge prompt hash |
| 中英切换 | HTML 报告右上角一键切换语言 |
文档
- 工作原理 —— 交错调度、variant 解析、双通道评分、六维报告
- 评测样本格式 —— sample schema、评分公式、21+ 断言类型、自定义 JS 断言
- CLI 参考 —— 7 个命令的 bash 示例和 flag 表
- 执行器与 artifact 布局 —— 内置 / 自定义执行器、Agent 评测、常见模型配置(Claude / OpenAI / GLM / 通义 / DeepSeek / Moonshot / Ollama)
- 快速上手 —— 第一次跑评测的 5 分钟教程
- 用例设计规范 —— capability / construct / provenance 元数据;行业 gap 映射
- 统计严谨性 —— 为什么 Bootstrap CI / α / 长度去偏 / 饱和曲线重要
- 7 工具对比 —— promptfoo / DeepEval / LangSmith / Langfuse / Braintrust 等 25+ 维度横评
环境变量
| 变量 | 说明 |
|------|------|
| CCV_PROXY_URL | 通过 cc-viewer 代理请求,实时可视化评测流量 |
| OMK_REPORT_PORT | 报告服务端口(默认 7799) |
系统要求
- Node.js >= 20
claudeCLI(默认执行器和 LLM 评委需要,参考 Claude Code)- 如果使用其它执行器(openai / gemini)+
--no-judge则可不需要
- 如果使用其它执行器(openai / gemini)+
安全说明
本工具设计用于本地可信环境(开发机、CI 流水线)。以下功能会执行本地代码,请确保输入来源可信:
| 功能 | 风险 | 适用场景 |
|------|------|----------|
| 自定义断言(custom) | 动态加载并执行用户指定的 .mjs 文件 | 仅使用自己编写或审查过的断言文件 |
| eval-samples.json | 断言配置可引用外部文件路径 | 不要使用来源不明的样本文件 |
建议:
- 不要将本地报告服务暴露到公网(无身份认证)
- 不使用未经审查的第三方 eval-samples
- 自定义断言有 30 秒超时,但无沙箱隔离
发布日志见 GitHub Releases。欢迎贡献 —— 见 CONTRIBUTING。
