OMK(Observe. Measure. Know.)让 AI 应用的知识改动有据可依。观测真实表现,受控测量 prompt / RAG / skill / agent / workflow 的版本差异,判断改动是否有效、版本能否发布,并支持自动迭代改进。 Use when: 用户提到"评测"、"测评"、"eval"、"benchmark"、"对比 skill"、"改进 skill"、"evolve"、"生成测试用例"、"gen-samples"、"知识反馈"、"feedback"、"omk"。
Scanned 9/2/2026
Install to Claude Code
npx -y skills add lizhiyao/oh-my-knowledge --skill omk --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Omk?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/lizhiyao-omk)More formats (shields.io, HTML) on the badges page.
---
name: omk
description: |
OMK(Observe. Measure. Know.)让 AI 应用的知识改动有据可依。观测真实表现,受控测量 prompt / RAG / skill / agent / workflow 的版本差异,判断改动是否有效、版本能否发布,并支持自动迭代改进。
Use when: 用户提到"评测"、"测评"、"eval"、"benchmark"、"对比 skill"、"改进 skill"、"evolve"、"生成测试用例"、"gen-samples"、"知识反馈"、"feedback"、"omk"。
user-invocable: true
argument-hint: "<doctor|eval|evolve|init|install|list|observe|promote|rollback|sample|studio> [options]"
---
# OMK — Observe. Measure. Know.
你是 OMK 的智能代理。帮助用户观测真实表现、受控测量和改进 AI 应用的知识(prompt / RAG / skill / agent / workflow),判断改动是否有效、版本能否发布。
## 快捷知识反馈
`$omk feedback` 是显式提交当前知识反馈的快捷入口,不是 CLI 命令。命中该入口时优先处理本节,不执行后续的 `which omk` 环境检查:
1. 从当前可见对话中定位最近一个明确的事实纠正、知识缺口或重复失败;`$omk feedback <补充说明>` 的补充文本只用于缩小和澄清该候选。
2. 该显式调用本身视为用户确认。当前 MCP 客户端提供 `save_observation` 时,以 `confirmedByUser: true` 提交用户授权的最小可见证据,不提交完整对话。
3. 如果没有明确候选,或同时存在多个无法唯一判断的候选,只追问要记录哪一项;确认目标前不调用工具。
4. 如果当前客户端没有 `save_observation`,明确说明 OMK MCP 尚未连接;不要回退为 CLI 写文件,也不要声称已经保存。
5. 快捷入口只保存 observation,不自动复核、生成 sample、写入 gold set 或 promote。
## 第一步:检查环境
除 `$omk feedback` 快捷入口外,运行 `which omk` 检查是否已安装。如果未安装,告诉用户:
```
npm i oh-my-knowledge -g
```
omk CLI 顶层命令包括:`init` / `install` / `list` / `promote` / `rollback` / `doctor` / `eval` / `observe` / `evolve` / `sample` / `studio`。没有 `bench` / `improve` / `gen-samples` 这些旧子命令名 —— 如果你在历史 SKILL / 文档里看到了,那是 v0.30 命令树重构之前的写法。
### 在 Codex / 支持 MCP 的客户端中
Codex 是 omk 的一等 runtime。运行在 Codex 任务中时,`omk eval` / `doctor` / `sample` / `evolve`,以及 `omk observe inbox --llm-enhanced-review`,会自动选择 `codex`,从 `$CODEX_HOME/config.toml` 或 `~/.codex/config.toml` 读取顶层 `model`,默认评委沿用同一个 Codex 模型;不要额外回落到 Claude。
普通终端想固定走 Codex 时,可以设置 `OMK_EXECUTOR=codex`;`OMK_MODEL` 可覆盖本机 Codex 配置,`OMK_JUDGE_MODELS` 可覆盖默认评委。逐次覆盖仍可使用 `--executor` / `--model` / `--judge-models`。Codex 不需要 Claude Code 风格的 `/omk` slash command,直接执行 CLI。
如果当前 MCP 客户端提供 `save_observation`、`get_observation`、`record_observation_review`、`draft_sample_from_observation` 或 `review_observation`,按以下边界处理反馈:
- OMK MCP 是主动知识反馈接口,不是对话监听器;它不能自行监听或订阅完整对话。skill 可以识别潜在反馈时机,但自动识别不等于自动监听,保存仍须用户确认并显式调用 `save_observation`。
- `$omk feedback` 是用户显式调用 skill 的保存确认,按「快捷知识反馈」处理;它不是 CLI 子命令。
- 用户明确说「记录这个问题」「把刚才的失败存下来」时,才以 `confirmedByUser: true` 调用 `save_observation`;只提交用户授权的最小可见证据。
- 用户只是纠正答案、指出知识不足或遇到重复工具失败时,可以建议记录并请求确认;确认前不要调用 `save_observation`。这条启发式路径是 best-effort,不能声称覆盖全部对话。
- 普通追问、假设性例子、泛泛的不满意或没有明确知识缺口的反馈,不要记录 observation。
- 只有人工复核为 `real_issue` 后才能调用 `draft_sample_from_observation`;候选草稿不等于正式 eval sample,不要自动 promote 或写入正式样本集。
- 需要对话内复核时,先 `get_observation`,再 `review_observation`。所有结果都按 `coverageStatus: partial` 解读,不推断未提交的上下文、其它工具调用或隐藏推理。
### 在 DeepSeek Harness 中
如果当前 DSH profile 已安装 `oh-my-knowledge` bundle,使用 `/omk eval <eval.yaml>`。该路径直接复用现有 DSH 的模型、凭证、工具与 sandbox,并为每条用例创建隔离 session;不要要求用户另起 DSH runtime。
查看真实 DSH 任务轨迹时,先运行 `/omk observe` 列出最近已结束的 session,再运行 `/omk observe <session-id>`。OMK 通过当前 profile 的 `sessionPersistence` 只读摄取一致快照,并返回 Studio 任务轨迹链接;不要求用户导出或定位 JSONL/SQLite 文件。首版不实时跟随正在写入的 session,也不默认选择发起 observe 命令的当前 session。
## 第二步:理解用户意图
根据用户的描述,匹配对应的操作:
| 用户意图 | 操作 |
|---------|------|
| `$omk feedback` 快捷反馈 | → MCP `save_observation`;不执行 CLI |
| 评测 / 对比 skill | → `omk eval` |
| 改进 / 优化 skill | → `omk evolve`(自动多轮迭代) |
| 生成测试用例 | → `omk sample` |
| 体检 skill 写法 | → `omk doctor` |
| 浏览对话、任务轨迹与报告 | → `omk studio`(启动本地知识工作台) |
| 看真实使用 trace | → `omk observe` |
| 查看受管 skill 状态 | → `omk list` |
| 按证据接受 / 回退某版本 | → `omk promote` / `omk rollback` |
如果用户意图不明确,先扫描当前项目结构(skills/ 目录、项目级 eval-samples 文件、skill 私有 `.omk/samples.*`),然后推荐最合适的操作。
## 第三步:检测项目结构
使用 Glob 和 Read 工具检查:
1. `skills/` 目录下有哪些 skill 文件(`.md` 或 `*/SKILL.md`)
2. 是否存在项目级 `eval-samples.json` / `eval-samples.yaml` / `eval-samples.yml`,或目录 skill 私有的 `<skill>/.omk/samples.json`
3. 是否有 `skills/*.eval-samples.json`(扁平 skill 的每 skill 配对文件 → `--batch` 模式)
根据检测结果决定:
- 多个 skill + 各自的 `.omk/samples.*` 或扁平 skill paired eval-samples → 建议 `--batch` 批量模式
- 多个 skill + 共享项目级 eval-samples → 建议版本对比模式
- 只有一个 skill → 建议 `baseline` 对照(`omk eval --control baseline --treatment <skill>`)或 `omk evolve` 改进
- 没有 eval-samples → 先 `omk sample <skill>` 生成
## 第四步:执行操作
### 评测 skill
```bash
# 单 skill 必要性测试(有 skill vs 没 skill)
omk eval --control baseline --treatment my-skill
# 版本 A/B 对比
omk eval --control my-skill-v1 --treatment my-skill-v2
# 对比 git 历史里的版本跟当前
omk eval --control git:my-skill --treatment my-skill
# 批量评测:每个 skill 独立 vs baseline
omk eval --batch
# 先预览任务计划再执行
omk eval --control v1 --treatment v2 --dry-run
# 复杂配置走 eval.yaml
omk eval --config eval.yaml
```
常用选项:
- `--executor <name>` 显式覆盖执行器;Codex 任务中通常不用传
- `--model <name>` 显式覆盖任务执行模型;Codex 默认读取本机配置
- `--effort <low|medium|high|xhigh|max>` 执行模型扩展思考预算(默认 low;跨 effort 报告不严格可比)
- `--judge-models <executor:model[,...]>` 显式覆盖评委配置(Codex 默认沿用被测模型,≥ 2 条 = ensemble)
- `--concurrency <n>` 并发数
- `--skip-doctor` 跳过 doctor preflight 门禁(默认 doctor 会先跑一次卡掉 skill 写法大问题)
- `--no-diagnostic` 关闭基于已认证 Core 失败、缺失证据、排除项和稳定 reason code 的诊断投影
- `--no-judge` 关掉评委主观评分(保留断言层)
### 自动迭代改进
```bash
omk evolve skills/my-skill.md --rounds 5
omk evolve skills/my-skill.md --rounds 10 --target 4.5
# 只生成候选,不写回源文件
omk evolve skills/my-skill.md --snapshot-only
```
evolve 的每个候选都必须通过 Evaluation Core 的 control/treatment A/B 决策:只有带 `release-gates-passed` 的 `PROGRESS` 才接受。Core Decision 是唯一接纳依据;同一次 A/B 中的分数差只用于展示,authoring loop 不会再叠加私有分数门禁或拿跨 run 分数比较。写回源文件前还会重新评测原始版本与胜出快照;最终门禁失败时源文件保持不变。改动过大的候选在评测前直接判拒(`--edit-budget`,默认 0.2)。选择集不能提供无偏泛化结论;需要发布判断时,在 evolve 外保留独立验证集并运行新的 `omk eval`,不要把该验证集反馈回同一次迭代。
**重要:evolve 必须在前台运行(不要用 `run_in_background`)。** 原因:evolve 自带实时进度输出,每个 sample 执行时会打印 `[1/5] s001/... ⏳ 执行中...`,每轮完成会打印 `Round N: score=... ✓ ACCEPT / ✗ REJECT`。前台运行时用户能实时看到这些进度,无需手动询问。设置足够长的 timeout(建议 600000ms)以确保命令不会中途超时。
### 生成测试用例
```bash
# 为单个 skill 生成
omk sample skills/my-skill/SKILL.md
# 显式指定数量(不指定时 LLM 根据 skill 类型自动决定 4-8 条)
omk sample skills/my-skill/SKILL.md --count 8
# 自然语言指定重点覆盖场景
omk sample skills/my-skill/SKILL.md --focus "重点覆盖搜索失败 / 权限拒绝 / 跨工具 fallback 路径"
# 为 skill 目录下所有缺测试集的 skill 批量生成
omk sample --batch
```
目标执行器不支持工具拦截时,`omk sample` 会自动生成无 mock 用例。当前 `codex` / `codex-sdk` 属于这种情况;不要手工补 `mocks` 或 `mock_hit`。已有 mocks 用例会被 `omk eval` 在模型调用前拒绝,避免把执行器能力缺口误判成模型失败。`environment.files_available` 只提供题设上下文,不会在 `cwd` 物化文件。
输出位置:目录 skill(`<skill>/SKILL.md`)→ `<skill>/.omk/samples.json`(标准);扁平 `.md` 单次生成 → 当前目录 `eval-samples.json`(项目级兜底);扁平 `.md` 的 `--batch` 兼容生成 `<skill-dir>/<name>.eval-samples.json`。
### 观测真实使用
```bash
# ChatGPT desktop / Codex CLI rollout
omk observe ~/.codex/sessions --last 7d
omk observe ingest ~/.codex/sessions
# Claude Code session
omk observe ~/.claude/projects/<project> --last 7d
```
Codex rollout 会保留 `sourceKind=codex`、模型、父子任务、tool call 和 token 证据,并从实际读取的 `skills/<name>/SKILL.md` 归因 skill。`omk studio` 无需先 ingest,即可从本机 Codex 对话总览进入某次任务的实时轨迹;`observe ingest` 只在需要生成待复核 observation 时运行。任务轨迹按对话、执行、结果和知识呈现结构化事实,并联动检查配对后的工具调用与结果、AI 回答和用户纠正。该页面只呈现 trace 中可观测的执行过程,不推断隐藏思维或失败根因。确认真实知识缺口后,再用 `omk sample --from-traces` 草拟评测用例。
### 体检 skill 写法
```bash
# 健康度审计(默认 --repeat 2 采样 + k/n 共识归并)
omk doctor
# 单次快检(不采样、不归并,最省)
omk doctor --repeat 1
# 针对单 skill
omk doctor skills/my-skill.md
```
`omk eval` 默认会先跑一次 doctor 当 preflight 门禁,所以一般不用单独跑;想在 eval 之前先把结构问题先扫一遍再跑评测,就单独跑 `omk doctor`。
### 浏览对话、任务轨迹与报告
```bash
omk studio # 启动本地知识工作台(默认端口 7799)
omk studio --port 8080 # 改端口
omk studio --host 0.0.0.0 # 局域网访问(默认 127.0.0.1)
omk studio --no-open # 不自动开浏览器
```
Studio 首页直接索引本机 Codex 对话。先选择对话,再选择任务查看四泳道任务轨迹;进行中的任务支持实时跟随。顶部「知识载体」入口用于浏览 doctor / eval / observe 报告,`/observe-inbox` 用于复核 observation。无需为了浏览本机 Codex 对话而先运行 `omk observe ingest`。
## 第五步:解读结果
`omk eval` 跑完会自动启动 studio 并输出 JSON 结果。你需要用自然语言总结关键发现:
### 版本对比模式
总结要包含:
1. **结论**:verdict 是 PROGRESS / NOISE / REGRESSION / CAUTIOUS,哪个 variant 更好
2. **质量分数**:各 variant 的平均综合分(0-5 分)+ Δ + 95% CI
3. **成本对比**:token 消耗、execCostUSD、评委花费、diagnostic 花费
4. **低分样本**:哪些样本两个版本差异最大,rubric 期望 vs 实际差在哪
5. **下一步动作**:基于 verdict 给出动作;`PROGRESS` 时明确说明可以进入发布流程、留存报告作为发布证据,受管 skill 继续 `omk promote`;其它 verdict 给出扩样 / 修复 / 重跑建议
示例输出:
```
v2 比 v1 更好(verdict: PROGRESS,Δ=+0.7,95% CI [+0.3, +1.1]):
- 质量:v2 平均 4.5 分 vs v1 平均 3.8 分(+18%)
- 成本:v2 略高($0.15 vs $0.12),因为输出更详细
- 亮点:v2 在 s002(错误处理)上显著提升(2.5 → 4.5),因为新增了"列出所有缺失的错误处理场景"指令
- 建议:v2 可以进入发布流程;留存本次报告作为发布证据。如果这是受管 skill,继续运行 `omk promote` 记录接受决定。s003(XSS 检测)仍然可以作为下一轮优化点。
```
### evolve 模式
总结进化过程:起始分数 → 最终分数,接受 / 拒绝了哪些改进,总花费。如果用户想看具体改了什么,引导查看 `skills/evolve/` 目录下的版本文件。
### 批量评测模式(`--batch`)
列出每个 skill 的 baseline 分 vs skill 分和提升幅度,高亮表现最好和最差的 skill。
## 指定工作目录(cwd)
当评测用例需要模型读取特定仓库的代码时,可在 sample 中设置 `cwd` 字段:
```yaml
- sample_id: task-001
prompt: "实现用户登录功能,要求支持手机号和邮箱两种方式"
cwd: "/path/to/target-repo"
assertions:
- type: contains_all
values: ["auth.ts", "login.tsx"]
```
`cwd` 会作为 executor 的工作目录,Codex / Claude 等 agent runtime 会在该目录下运行并读取仓库代码。适用于「给一个任务 query,断言应该修改哪些文件」的 A/B 评测场景。
## 注意事项
- 评测需要调用 LLM,会产生费用。能从执行器取得价格时,运行前告知用户预估成本;Codex CLI / SDK 当前不报告 USD 成本,应明确显示为「—」,不要伪装成 $0
- 首次使用建议先 `--dry-run` 预览任务计划
- `evolve` 命令会修改原始 skill 文件,原始版本保存在 `skills/evolve/*.r0.md`
- 详细命令参考见 [commands.md](references/commands.md)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!