oh-my-knowledge 0.29.0 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (449) hide show
  1. package/README.md +204 -25
  2. package/README.zh.md +204 -25
  3. package/dist/src/analysis/report-diagnostics.js +2 -0
  4. package/dist/src/analysis/report-diagnostics.js.map +1 -1
  5. package/dist/src/authoring/evolver.d.ts +32 -2
  6. package/dist/src/authoring/evolver.d.ts.map +1 -1
  7. package/dist/src/authoring/evolver.js +416 -52
  8. package/dist/src/authoring/evolver.js.map +1 -1
  9. package/dist/src/authoring/generator.d.ts +24 -23
  10. package/dist/src/authoring/generator.d.ts.map +1 -1
  11. package/dist/src/authoring/generator.js +637 -40
  12. package/dist/src/authoring/generator.js.map +1 -1
  13. package/dist/src/authoring/sample-fixer.d.ts +51 -0
  14. package/dist/src/authoring/sample-fixer.d.ts.map +1 -0
  15. package/dist/src/authoring/sample-fixer.js +213 -0
  16. package/dist/src/authoring/sample-fixer.js.map +1 -0
  17. package/dist/src/cli/commands/doctor.d.ts +25 -1
  18. package/dist/src/cli/commands/doctor.d.ts.map +1 -1
  19. package/dist/src/cli/commands/doctor.js +233 -124
  20. package/dist/src/cli/commands/doctor.js.map +1 -1
  21. package/dist/src/cli/commands/eval/gold/compare.d.ts +17 -0
  22. package/dist/src/cli/commands/eval/gold/compare.d.ts.map +1 -0
  23. package/dist/src/cli/commands/eval/gold/compare.js +91 -0
  24. package/dist/src/cli/commands/eval/gold/compare.js.map +1 -0
  25. package/dist/src/cli/commands/eval/gold/index.d.ts +9 -0
  26. package/dist/src/cli/commands/eval/gold/index.d.ts.map +1 -0
  27. package/dist/src/cli/commands/eval/gold/index.js +34 -0
  28. package/dist/src/cli/commands/eval/gold/index.js.map +1 -0
  29. package/dist/src/cli/commands/eval/gold/init.d.ts +11 -0
  30. package/dist/src/cli/commands/eval/gold/init.d.ts.map +1 -0
  31. package/dist/src/cli/commands/eval/gold/init.js +51 -0
  32. package/dist/src/cli/commands/eval/gold/init.js.map +1 -0
  33. package/dist/src/cli/commands/eval/gold/validate.d.ts +12 -0
  34. package/dist/src/cli/commands/eval/gold/validate.d.ts.map +1 -0
  35. package/dist/src/cli/commands/eval/gold/validate.js +46 -0
  36. package/dist/src/cli/commands/eval/gold/validate.js.map +1 -0
  37. package/dist/src/cli/commands/eval/index.d.ts +54 -0
  38. package/dist/src/cli/commands/eval/index.d.ts.map +1 -0
  39. package/dist/src/cli/commands/{eval-runner.js → eval/index.js} +216 -50
  40. package/dist/src/cli/commands/eval/index.js.map +1 -0
  41. package/dist/src/cli/commands/evolve.d.ts +36 -1
  42. package/dist/src/cli/commands/evolve.d.ts.map +1 -1
  43. package/dist/src/cli/commands/evolve.js +202 -41
  44. package/dist/src/cli/commands/evolve.js.map +1 -1
  45. package/dist/src/cli/commands/init.d.ts +15 -1
  46. package/dist/src/cli/commands/init.d.ts.map +1 -1
  47. package/dist/src/cli/commands/init.js +70 -28
  48. package/dist/src/cli/commands/init.js.map +1 -1
  49. package/dist/src/cli/commands/observe/inbox.d.ts +23 -0
  50. package/dist/src/cli/commands/observe/inbox.d.ts.map +1 -0
  51. package/dist/src/cli/commands/observe/inbox.js +258 -0
  52. package/dist/src/cli/commands/observe/inbox.js.map +1 -0
  53. package/dist/src/cli/commands/observe/index.d.ts +22 -0
  54. package/dist/src/cli/commands/observe/index.d.ts.map +1 -0
  55. package/dist/src/cli/commands/observe/index.js +118 -0
  56. package/dist/src/cli/commands/observe/index.js.map +1 -0
  57. package/dist/src/cli/commands/observe/ingest.d.ts +13 -0
  58. package/dist/src/cli/commands/observe/ingest.d.ts.map +1 -0
  59. package/dist/src/cli/commands/observe/ingest.js +69 -0
  60. package/dist/src/cli/commands/observe/ingest.js.map +1 -0
  61. package/dist/src/cli/commands/observe/show.d.ts +13 -0
  62. package/dist/src/cli/commands/observe/show.d.ts.map +1 -0
  63. package/dist/src/cli/commands/observe/show.js +49 -0
  64. package/dist/src/cli/commands/observe/show.js.map +1 -0
  65. package/dist/src/cli/commands/sample.d.ts +37 -1
  66. package/dist/src/cli/commands/sample.d.ts.map +1 -1
  67. package/dist/src/cli/commands/sample.js +402 -35
  68. package/dist/src/cli/commands/sample.js.map +1 -1
  69. package/dist/src/cli/commands/skill-extract.d.ts +20 -0
  70. package/dist/src/cli/commands/skill-extract.d.ts.map +1 -0
  71. package/dist/src/cli/commands/skill-extract.js +84 -0
  72. package/dist/src/cli/commands/skill-extract.js.map +1 -0
  73. package/dist/src/cli/commands/studio.d.ts +22 -1
  74. package/dist/src/cli/commands/studio.d.ts.map +1 -1
  75. package/dist/src/cli/commands/studio.js +111 -37
  76. package/dist/src/cli/commands/studio.js.map +1 -1
  77. package/dist/src/cli/index.js +15 -47
  78. package/dist/src/cli/index.js.map +1 -1
  79. package/dist/src/cli/lib/cli-exit.d.ts +16 -0
  80. package/dist/src/cli/lib/cli-exit.d.ts.map +1 -0
  81. package/dist/src/cli/lib/cli-exit.js +20 -0
  82. package/dist/src/cli/lib/cli-exit.js.map +1 -0
  83. package/dist/src/cli/lib/cmd-flags.d.ts +236 -0
  84. package/dist/src/cli/lib/cmd-flags.d.ts.map +1 -0
  85. package/dist/src/cli/lib/cmd-flags.js +46 -0
  86. package/dist/src/cli/lib/cmd-flags.js.map +1 -0
  87. package/dist/src/cli/{i18n-dict.d.ts → lib/i18n-dict.d.ts} +1 -1
  88. package/dist/src/cli/lib/i18n-dict.d.ts.map +1 -0
  89. package/dist/src/cli/{i18n-dict.js → lib/i18n-dict.js} +93 -260
  90. package/dist/src/cli/lib/i18n-dict.js.map +1 -0
  91. package/dist/src/cli/{i18n.d.ts → lib/i18n.d.ts} +11 -6
  92. package/dist/src/cli/lib/i18n.d.ts.map +1 -0
  93. package/dist/src/cli/{i18n.js → lib/i18n.js} +12 -7
  94. package/dist/src/cli/lib/i18n.js.map +1 -0
  95. package/dist/src/cli/{parse-run-config.d.ts → lib/parse-run-config.d.ts} +19 -8
  96. package/dist/src/cli/lib/parse-run-config.d.ts.map +1 -0
  97. package/dist/src/cli/{parse-run-config.js → lib/parse-run-config.js} +60 -58
  98. package/dist/src/cli/lib/parse-run-config.js.map +1 -0
  99. package/dist/src/cli/lib/progress.d.ts.map +1 -0
  100. package/dist/src/cli/lib/progress.js.map +1 -0
  101. package/dist/src/cli/{run-tally.d.ts → lib/run-tally.d.ts} +1 -1
  102. package/dist/src/cli/lib/run-tally.d.ts.map +1 -0
  103. package/dist/src/cli/lib/run-tally.js.map +1 -0
  104. package/dist/src/cli/{commands/_shared.d.ts → lib/shared.d.ts} +2 -2
  105. package/dist/src/cli/lib/shared.d.ts.map +1 -0
  106. package/dist/src/cli/{commands/_shared.js → lib/shared.js} +3 -3
  107. package/dist/src/cli/lib/shared.js.map +1 -0
  108. package/dist/src/cli/lib/update-check.d.ts.map +1 -0
  109. package/dist/src/cli/lib/update-check.js.map +1 -0
  110. package/dist/src/cli/oclif/base-command.d.ts +8 -0
  111. package/dist/src/cli/oclif/base-command.d.ts.map +1 -0
  112. package/dist/src/cli/oclif/base-command.js +27 -0
  113. package/dist/src/cli/oclif/base-command.js.map +1 -0
  114. package/dist/src/cli/oclif/help.d.ts +16 -0
  115. package/dist/src/cli/oclif/help.d.ts.map +1 -0
  116. package/dist/src/cli/oclif/help.js +33 -0
  117. package/dist/src/cli/oclif/help.js.map +1 -0
  118. package/dist/src/cli/oclif/i18n.d.ts +16 -0
  119. package/dist/src/cli/oclif/i18n.d.ts.map +1 -0
  120. package/dist/src/cli/oclif/i18n.js +62 -0
  121. package/dist/src/cli/oclif/i18n.js.map +1 -0
  122. package/dist/src/cli/oclif/parsers.d.ts +10 -0
  123. package/dist/src/cli/oclif/parsers.d.ts.map +1 -0
  124. package/dist/src/cli/oclif/parsers.js +102 -0
  125. package/dist/src/cli/oclif/parsers.js.map +1 -0
  126. package/dist/src/cli/oclif/projection.d.ts +23 -0
  127. package/dist/src/cli/oclif/projection.d.ts.map +1 -0
  128. package/dist/src/cli/oclif/projection.js +52 -0
  129. package/dist/src/cli/oclif/projection.js.map +1 -0
  130. package/dist/src/cli/oclif/run.d.ts +2 -0
  131. package/dist/src/cli/oclif/run.d.ts.map +1 -0
  132. package/dist/src/cli/oclif/run.js +11 -0
  133. package/dist/src/cli/oclif/run.js.map +1 -0
  134. package/dist/src/diagnosis/observe-mapper.d.ts +68 -0
  135. package/dist/src/diagnosis/observe-mapper.d.ts.map +1 -0
  136. package/dist/src/diagnosis/observe-mapper.js +276 -0
  137. package/dist/src/diagnosis/observe-mapper.js.map +1 -0
  138. package/dist/src/diagnosis/observe-producer.d.ts +9 -0
  139. package/dist/src/diagnosis/observe-producer.d.ts.map +1 -0
  140. package/dist/src/diagnosis/observe-producer.js +197 -0
  141. package/dist/src/diagnosis/observe-producer.js.map +1 -0
  142. package/dist/src/diagnosis/studio-projection.d.ts +14 -0
  143. package/dist/src/diagnosis/studio-projection.d.ts.map +1 -0
  144. package/dist/src/diagnosis/studio-projection.js +84 -0
  145. package/dist/src/diagnosis/studio-projection.js.map +1 -0
  146. package/dist/src/diagnosis/types.d.ts +79 -0
  147. package/dist/src/diagnosis/types.d.ts.map +1 -0
  148. package/dist/src/diagnosis/types.js +20 -0
  149. package/dist/src/diagnosis/types.js.map +1 -0
  150. package/dist/src/doctor/fixer.d.ts +12 -0
  151. package/dist/src/doctor/fixer.d.ts.map +1 -0
  152. package/dist/src/doctor/fixer.js +326 -0
  153. package/dist/src/doctor/fixer.js.map +1 -0
  154. package/dist/src/doctor/health/builtin-dimensions.d.ts.map +1 -1
  155. package/dist/src/doctor/health/builtin-dimensions.js +20 -23
  156. package/dist/src/doctor/health/builtin-dimensions.js.map +1 -1
  157. package/dist/src/doctor/health/composer.d.ts.map +1 -1
  158. package/dist/src/doctor/health/composer.js +14 -7
  159. package/dist/src/doctor/health/composer.js.map +1 -1
  160. package/dist/src/doctor/health/dimension-spec.d.ts +1 -0
  161. package/dist/src/doctor/health/dimension-spec.d.ts.map +1 -1
  162. package/dist/src/doctor/health/parser.d.ts +0 -1
  163. package/dist/src/doctor/health/parser.d.ts.map +1 -1
  164. package/dist/src/doctor/health/parser.js +38 -0
  165. package/dist/src/doctor/health/parser.js.map +1 -1
  166. package/dist/src/doctor/health/prompt-builder.d.ts +2 -21
  167. package/dist/src/doctor/health/prompt-builder.d.ts.map +1 -1
  168. package/dist/src/doctor/health/prompt-builder.js +1 -161
  169. package/dist/src/doctor/health/prompt-builder.js.map +1 -1
  170. package/dist/src/doctor/html-renderer.d.ts +1 -1
  171. package/dist/src/doctor/html-renderer.d.ts.map +1 -1
  172. package/dist/src/doctor/html-renderer.js +78 -68
  173. package/dist/src/doctor/html-renderer.js.map +1 -1
  174. package/dist/src/doctor/index.d.ts.map +1 -1
  175. package/dist/src/doctor/index.js +1 -0
  176. package/dist/src/doctor/index.js.map +1 -1
  177. package/dist/src/doctor/renderer.d.ts +1 -1
  178. package/dist/src/doctor/renderer.d.ts.map +1 -1
  179. package/dist/src/doctor/renderer.js +2 -2
  180. package/dist/src/doctor/renderer.js.map +1 -1
  181. package/dist/src/doctor/rules.d.ts.map +1 -1
  182. package/dist/src/doctor/rules.js +33 -1
  183. package/dist/src/doctor/rules.js.map +1 -1
  184. package/dist/src/eval-core/cache.d.ts +16 -2
  185. package/dist/src/eval-core/cache.d.ts.map +1 -1
  186. package/dist/src/eval-core/cache.js +86 -15
  187. package/dist/src/eval-core/cache.js.map +1 -1
  188. package/dist/src/eval-core/evaluation-execution.d.ts +11 -1
  189. package/dist/src/eval-core/evaluation-execution.d.ts.map +1 -1
  190. package/dist/src/eval-core/evaluation-execution.js +78 -6
  191. package/dist/src/eval-core/evaluation-execution.js.map +1 -1
  192. package/dist/src/eval-core/evaluation-job.d.ts +2 -1
  193. package/dist/src/eval-core/evaluation-job.d.ts.map +1 -1
  194. package/dist/src/eval-core/evaluation-job.js +2 -1
  195. package/dist/src/eval-core/evaluation-job.js.map +1 -1
  196. package/dist/src/eval-core/evaluation-reporting.d.ts +7 -0
  197. package/dist/src/eval-core/evaluation-reporting.d.ts.map +1 -1
  198. package/dist/src/eval-core/evaluation-reporting.js +19 -2
  199. package/dist/src/eval-core/evaluation-reporting.js.map +1 -1
  200. package/dist/src/eval-core/execution-strategy.d.ts +1 -1
  201. package/dist/src/eval-core/execution-strategy.d.ts.map +1 -1
  202. package/dist/src/eval-core/execution-strategy.js +12 -1
  203. package/dist/src/eval-core/execution-strategy.js.map +1 -1
  204. package/dist/src/eval-core/mock-hook.cjs +215 -0
  205. package/dist/src/eval-core/mocks-runtime.d.ts +100 -0
  206. package/dist/src/eval-core/mocks-runtime.d.ts.map +1 -0
  207. package/dist/src/eval-core/mocks-runtime.js +559 -0
  208. package/dist/src/eval-core/mocks-runtime.js.map +1 -0
  209. package/dist/src/eval-core/schema.d.ts.map +1 -1
  210. package/dist/src/eval-core/schema.js +18 -5
  211. package/dist/src/eval-core/schema.js.map +1 -1
  212. package/dist/src/eval-core/task-planner.d.ts +9 -1
  213. package/dist/src/eval-core/task-planner.d.ts.map +1 -1
  214. package/dist/src/eval-core/task-planner.js +40 -1
  215. package/dist/src/eval-core/task-planner.js.map +1 -1
  216. package/dist/src/eval-workflows/batch-evaluation-workflow.d.ts +5 -1
  217. package/dist/src/eval-workflows/batch-evaluation-workflow.d.ts.map +1 -1
  218. package/dist/src/eval-workflows/batch-evaluation-workflow.js +2 -1
  219. package/dist/src/eval-workflows/batch-evaluation-workflow.js.map +1 -1
  220. package/dist/src/eval-workflows/evaluation-pipeline.d.ts +23 -2
  221. package/dist/src/eval-workflows/evaluation-pipeline.d.ts.map +1 -1
  222. package/dist/src/eval-workflows/evaluation-pipeline.js +40 -13
  223. package/dist/src/eval-workflows/evaluation-pipeline.js.map +1 -1
  224. package/dist/src/eval-workflows/evaluation-preparation.d.ts +5 -0
  225. package/dist/src/eval-workflows/evaluation-preparation.d.ts.map +1 -1
  226. package/dist/src/eval-workflows/evaluation-preparation.js +3 -1
  227. package/dist/src/eval-workflows/evaluation-preparation.js.map +1 -1
  228. package/dist/src/eval-workflows/run-evaluation.d.ts +12 -2
  229. package/dist/src/eval-workflows/run-evaluation.d.ts.map +1 -1
  230. package/dist/src/eval-workflows/run-evaluation.js +18 -6
  231. package/dist/src/eval-workflows/run-evaluation.js.map +1 -1
  232. package/dist/src/executors/claude-cli.d.ts +1 -1
  233. package/dist/src/executors/claude-cli.d.ts.map +1 -1
  234. package/dist/src/executors/claude-cli.js +59 -6
  235. package/dist/src/executors/claude-cli.js.map +1 -1
  236. package/dist/src/executors/claude-sdk-trace.d.ts.map +1 -1
  237. package/dist/src/executors/claude-sdk-trace.js +10 -4
  238. package/dist/src/executors/claude-sdk-trace.js.map +1 -1
  239. package/dist/src/executors/claude-sdk.d.ts +1 -1
  240. package/dist/src/executors/claude-sdk.d.ts.map +1 -1
  241. package/dist/src/executors/claude-sdk.js +25 -2
  242. package/dist/src/executors/claude-sdk.js.map +1 -1
  243. package/dist/src/executors/shared.d.ts +1 -1
  244. package/dist/src/executors/shared.d.ts.map +1 -1
  245. package/dist/src/executors/shared.js +6 -1
  246. package/dist/src/executors/shared.js.map +1 -1
  247. package/dist/src/grading/assertions.d.ts +5 -0
  248. package/dist/src/grading/assertions.d.ts.map +1 -1
  249. package/dist/src/grading/assertions.js +27 -1
  250. package/dist/src/grading/assertions.js.map +1 -1
  251. package/dist/src/grading/diagnostic.d.ts +40 -0
  252. package/dist/src/grading/diagnostic.d.ts.map +1 -0
  253. package/dist/src/grading/diagnostic.js +450 -0
  254. package/dist/src/grading/diagnostic.js.map +1 -0
  255. package/dist/src/grading/index.d.ts +5 -0
  256. package/dist/src/grading/index.d.ts.map +1 -1
  257. package/dist/src/grading/judge.d.ts.map +1 -1
  258. package/dist/src/grading/judge.js +54 -2
  259. package/dist/src/grading/judge.js.map +1 -1
  260. package/dist/src/grading/layered-scores.d.ts.map +1 -1
  261. package/dist/src/grading/layered-scores.js +1 -0
  262. package/dist/src/grading/layered-scores.js.map +1 -1
  263. package/dist/src/inputs/eval-config.js +19 -0
  264. package/dist/src/inputs/eval-config.js.map +1 -1
  265. package/dist/src/inputs/load-samples.d.ts +22 -2
  266. package/dist/src/inputs/load-samples.d.ts.map +1 -1
  267. package/dist/src/inputs/load-samples.js +193 -22
  268. package/dist/src/inputs/load-samples.js.map +1 -1
  269. package/dist/src/inputs/skill-loader.d.ts.map +1 -1
  270. package/dist/src/inputs/skill-loader.js +11 -3
  271. package/dist/src/inputs/skill-loader.js.map +1 -1
  272. package/dist/src/observability/experience.d.ts +441 -0
  273. package/dist/src/observability/experience.d.ts.map +1 -0
  274. package/dist/src/observability/experience.js +2400 -0
  275. package/dist/src/observability/experience.js.map +1 -0
  276. package/dist/src/observability/inbox-view-model.d.ts +14 -1
  277. package/dist/src/observability/inbox-view-model.d.ts.map +1 -1
  278. package/dist/src/observability/inbox-view-model.js +85 -3
  279. package/dist/src/observability/inbox-view-model.js.map +1 -1
  280. package/dist/src/observability/inbox.d.ts +29 -2
  281. package/dist/src/observability/inbox.d.ts.map +1 -1
  282. package/dist/src/observability/inbox.js +62 -10
  283. package/dist/src/observability/inbox.js.map +1 -1
  284. package/dist/src/observability/problem-patterns.d.ts +52 -0
  285. package/dist/src/observability/problem-patterns.d.ts.map +1 -0
  286. package/dist/src/observability/problem-patterns.js +205 -0
  287. package/dist/src/observability/problem-patterns.js.map +1 -0
  288. package/dist/src/observability/resolved-review.d.ts +25 -0
  289. package/dist/src/observability/resolved-review.d.ts.map +1 -0
  290. package/dist/src/observability/resolved-review.js +231 -0
  291. package/dist/src/observability/resolved-review.js.map +1 -0
  292. package/dist/src/observability/review-state.d.ts +61 -0
  293. package/dist/src/observability/review-state.d.ts.map +1 -0
  294. package/dist/src/observability/review-state.js +169 -0
  295. package/dist/src/observability/review-state.js.map +1 -0
  296. package/dist/src/observability/skill-chain-advisories.d.ts +25 -0
  297. package/dist/src/observability/skill-chain-advisories.d.ts.map +1 -0
  298. package/dist/src/observability/skill-chain-advisories.js +69 -0
  299. package/dist/src/observability/skill-chain-advisories.js.map +1 -0
  300. package/dist/src/observability/skill-chain.d.ts +62 -0
  301. package/dist/src/observability/skill-chain.d.ts.map +1 -0
  302. package/dist/src/observability/skill-chain.js +270 -0
  303. package/dist/src/observability/skill-chain.js.map +1 -0
  304. package/dist/src/observability/soft-standards.d.ts +130 -0
  305. package/dist/src/observability/soft-standards.d.ts.map +1 -0
  306. package/dist/src/observability/soft-standards.js +426 -0
  307. package/dist/src/observability/soft-standards.js.map +1 -0
  308. package/dist/src/observability/text-signals.d.ts +14 -0
  309. package/dist/src/observability/text-signals.d.ts.map +1 -0
  310. package/dist/src/observability/text-signals.js +106 -0
  311. package/dist/src/observability/text-signals.js.map +1 -0
  312. package/dist/src/observability/trace-adapter.d.ts +1 -1
  313. package/dist/src/observability/trace-adapter.d.ts.map +1 -1
  314. package/dist/src/observability/trace-adapter.js +1 -1
  315. package/dist/src/observability/trace-adapter.js.map +1 -1
  316. package/dist/src/observability/trace-attribution.d.ts +29 -1
  317. package/dist/src/observability/trace-attribution.d.ts.map +1 -1
  318. package/dist/src/observability/trace-attribution.js +106 -10
  319. package/dist/src/observability/trace-attribution.js.map +1 -1
  320. package/dist/src/observability/trace-segmenter.d.ts +11 -1
  321. package/dist/src/observability/trace-segmenter.d.ts.map +1 -1
  322. package/dist/src/observability/trace-segmenter.js +121 -30
  323. package/dist/src/observability/trace-segmenter.js.map +1 -1
  324. package/dist/src/observability/trace-source.d.ts +28 -1
  325. package/dist/src/observability/trace-source.d.ts.map +1 -1
  326. package/dist/src/observability/trace-source.js +366 -6
  327. package/dist/src/observability/trace-source.js.map +1 -1
  328. package/dist/src/renderer/html-renderer.d.ts.map +1 -1
  329. package/dist/src/renderer/html-renderer.js +229 -171
  330. package/dist/src/renderer/html-renderer.js.map +1 -1
  331. package/dist/src/renderer/layout.d.ts.map +1 -1
  332. package/dist/src/renderer/layout.js +108 -61
  333. package/dist/src/renderer/layout.js.map +1 -1
  334. package/dist/src/renderer/observation-inbox-renderer.d.ts.map +1 -1
  335. package/dist/src/renderer/observation-inbox-renderer.js +9551 -85
  336. package/dist/src/renderer/observation-inbox-renderer.js.map +1 -1
  337. package/dist/src/renderer/skill-detail-renderer.d.ts +15 -0
  338. package/dist/src/renderer/skill-detail-renderer.d.ts.map +1 -0
  339. package/dist/src/renderer/skill-detail-renderer.js +1244 -0
  340. package/dist/src/renderer/skill-detail-renderer.js.map +1 -0
  341. package/dist/src/renderer/skill-list-renderer.d.ts +4 -0
  342. package/dist/src/renderer/skill-list-renderer.d.ts.map +1 -0
  343. package/dist/src/renderer/skill-list-renderer.js +334 -0
  344. package/dist/src/renderer/skill-list-renderer.js.map +1 -0
  345. package/dist/src/renderer/summary.d.ts.map +1 -1
  346. package/dist/src/renderer/summary.js +78 -50
  347. package/dist/src/renderer/summary.js.map +1 -1
  348. package/dist/src/renderer/table.d.ts.map +1 -1
  349. package/dist/src/renderer/table.js +213 -167
  350. package/dist/src/renderer/table.js.map +1 -1
  351. package/dist/src/renderer/test-view.d.ts +66 -0
  352. package/dist/src/renderer/test-view.d.ts.map +1 -0
  353. package/dist/src/renderer/test-view.js +905 -0
  354. package/dist/src/renderer/test-view.js.map +1 -0
  355. package/dist/src/server/report-server.d.ts +4 -1
  356. package/dist/src/server/report-server.d.ts.map +1 -1
  357. package/dist/src/server/report-server.js +242 -4
  358. package/dist/src/server/report-server.js.map +1 -1
  359. package/dist/src/server/report-store.d.ts.map +1 -1
  360. package/dist/src/server/report-store.js +33 -1
  361. package/dist/src/server/report-store.js.map +1 -1
  362. package/dist/src/server/skill-index.d.ts +81 -0
  363. package/dist/src/server/skill-index.d.ts.map +1 -0
  364. package/dist/src/server/skill-index.js +377 -0
  365. package/dist/src/server/skill-index.js.map +1 -0
  366. package/dist/src/server/skill-insights.d.ts +101 -0
  367. package/dist/src/server/skill-insights.d.ts.map +1 -0
  368. package/dist/src/server/skill-insights.js +788 -0
  369. package/dist/src/server/skill-insights.js.map +1 -0
  370. package/dist/src/shared/hard-rules.d.ts +42 -0
  371. package/dist/src/shared/hard-rules.d.ts.map +1 -0
  372. package/dist/src/shared/hard-rules.js +242 -0
  373. package/dist/src/shared/hard-rules.js.map +1 -0
  374. package/dist/src/shared/llm-prompts/index.d.ts +14 -0
  375. package/dist/src/shared/llm-prompts/index.d.ts.map +1 -0
  376. package/dist/src/shared/llm-prompts/index.js +35 -0
  377. package/dist/src/shared/llm-prompts/index.js.map +1 -0
  378. package/dist/src/shared/llm-prompts/skill-health.d.ts +22 -0
  379. package/dist/src/shared/llm-prompts/skill-health.d.ts.map +1 -0
  380. package/dist/src/shared/llm-prompts/skill-health.js +170 -0
  381. package/dist/src/shared/llm-prompts/skill-health.js.map +1 -0
  382. package/dist/src/shared/time.d.ts +2 -0
  383. package/dist/src/shared/time.d.ts.map +1 -0
  384. package/dist/src/shared/time.js +10 -0
  385. package/dist/src/shared/time.js.map +1 -0
  386. package/dist/src/types/doctor.d.ts +2 -0
  387. package/dist/src/types/doctor.d.ts.map +1 -1
  388. package/dist/src/types/eval.d.ts +88 -0
  389. package/dist/src/types/eval.d.ts.map +1 -1
  390. package/dist/src/types/executor.d.ts +43 -0
  391. package/dist/src/types/executor.d.ts.map +1 -1
  392. package/dist/src/types/judge.d.ts +76 -0
  393. package/dist/src/types/judge.d.ts.map +1 -1
  394. package/dist/src/types/judge.js +3 -1
  395. package/dist/src/types/judge.js.map +1 -1
  396. package/dist/src/types/report.d.ts +69 -3
  397. package/dist/src/types/report.d.ts.map +1 -1
  398. package/dist/src/util/safe-slice.d.ts +23 -0
  399. package/dist/src/util/safe-slice.d.ts.map +1 -0
  400. package/dist/src/util/safe-slice.js +33 -0
  401. package/dist/src/util/safe-slice.js.map +1 -0
  402. package/docs/prompts/llm-enhanced-review.prompt.md +111 -0
  403. package/package.json +33 -7
  404. package/dist/src/cli/cli-exit.d.ts +0 -15
  405. package/dist/src/cli/cli-exit.d.ts.map +0 -1
  406. package/dist/src/cli/cli-exit.js +0 -19
  407. package/dist/src/cli/cli-exit.js.map +0 -1
  408. package/dist/src/cli/commands/_shared.d.ts.map +0 -1
  409. package/dist/src/cli/commands/_shared.js.map +0 -1
  410. package/dist/src/cli/commands/eval-gold.d.ts +0 -2
  411. package/dist/src/cli/commands/eval-gold.d.ts.map +0 -1
  412. package/dist/src/cli/commands/eval-gold.js +0 -137
  413. package/dist/src/cli/commands/eval-gold.js.map +0 -1
  414. package/dist/src/cli/commands/eval-runner.d.ts +0 -2
  415. package/dist/src/cli/commands/eval-runner.d.ts.map +0 -1
  416. package/dist/src/cli/commands/eval-runner.js.map +0 -1
  417. package/dist/src/cli/commands/eval.d.ts +0 -2
  418. package/dist/src/cli/commands/eval.d.ts.map +0 -1
  419. package/dist/src/cli/commands/eval.js +0 -11
  420. package/dist/src/cli/commands/eval.js.map +0 -1
  421. package/dist/src/cli/commands/observe.d.ts +0 -2
  422. package/dist/src/cli/commands/observe.d.ts.map +0 -1
  423. package/dist/src/cli/commands/observe.js +0 -246
  424. package/dist/src/cli/commands/observe.js.map +0 -1
  425. package/dist/src/cli/commands/registry.d.ts +0 -11
  426. package/dist/src/cli/commands/registry.d.ts.map +0 -1
  427. package/dist/src/cli/commands/registry.js +0 -32
  428. package/dist/src/cli/commands/registry.js.map +0 -1
  429. package/dist/src/cli/i18n-dict.d.ts.map +0 -1
  430. package/dist/src/cli/i18n-dict.js.map +0 -1
  431. package/dist/src/cli/i18n.d.ts.map +0 -1
  432. package/dist/src/cli/i18n.js.map +0 -1
  433. package/dist/src/cli/parse-run-config.d.ts.map +0 -1
  434. package/dist/src/cli/parse-run-config.js.map +0 -1
  435. package/dist/src/cli/parse-strict.d.ts +0 -7
  436. package/dist/src/cli/parse-strict.d.ts.map +0 -1
  437. package/dist/src/cli/parse-strict.js +0 -26
  438. package/dist/src/cli/parse-strict.js.map +0 -1
  439. package/dist/src/cli/progress.d.ts.map +0 -1
  440. package/dist/src/cli/progress.js.map +0 -1
  441. package/dist/src/cli/run-tally.d.ts.map +0 -1
  442. package/dist/src/cli/run-tally.js.map +0 -1
  443. package/dist/src/cli/update-check.d.ts.map +0 -1
  444. package/dist/src/cli/update-check.js.map +0 -1
  445. /package/dist/src/cli/{progress.d.ts → lib/progress.d.ts} +0 -0
  446. /package/dist/src/cli/{progress.js → lib/progress.js} +0 -0
  447. /package/dist/src/cli/{run-tally.js → lib/run-tally.js} +0 -0
  448. /package/dist/src/cli/{update-check.d.ts → lib/update-check.d.ts} +0 -0
  449. /package/dist/src/cli/{update-check.js → lib/update-check.js} +0 -0
package/README.md CHANGED
@@ -27,6 +27,8 @@ omk init my-eval && cd my-eval
27
27
  omk eval --control code-review-v1 --treatment code-review-v2 # → HTML report with verdict in 5 minutes
28
28
  ```
29
29
 
30
+ Walkthrough: [5-minute quickstart guide](docs/quickstart-skill-eval.md) (recommended for first-time users).
31
+
30
32
  Deeper: [use inside Claude Code / Codex](#use-inside-ai-coding-agents) · [`omk eval` flags](#omk-eval) · [artifact directory layout](#artifact-directory-layout) · [`--lang` / `OMK_LANG`](#environment-variables)
31
33
 
32
34
  ## Use inside AI Coding Agents
@@ -365,6 +367,18 @@ omk exposes a workflow CLI for knowledge artifacts. Seven top-level commands cov
365
367
  omk init [dir]
366
368
  ```
367
369
 
370
+ <!-- omk:cli:init:flags:start -->
371
+
372
+ **Flags:**
373
+
374
+ ```text
375
+ --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
376
+ ```
377
+
378
+ For full descriptions: `omk init --help`.
379
+
380
+ <!-- omk:cli:init:flags:end -->
381
+
368
382
  Scaffolds an evaluation project with two starter skill variants and an `eval-samples.json` file.
369
383
 
370
384
  ### `omk doctor`
@@ -378,6 +392,28 @@ omk doctor --gate; echo $? # silent gate; exit 1 on fatal failures,
378
392
  omk doctor --static-only # offline mode: static checks only, no LLM call
379
393
  ```
380
394
 
395
+ <!-- omk:cli:doctor:flags:start -->
396
+
397
+ **Flags:**
398
+
399
+ ```text
400
+ --effort <value> LLM reasoning effort: low / medium / high / xhigh / max.
401
+ --executor <value> Executor name, default claude. Pass a test fixture path to use in tests.
402
+ --fix Interactive fix: use LLM agent to fix skill issues reported by doctor.
403
+ --gate Silent mode: only emit stderr summary on fail. Exit code carries the signal.
404
+ --html <value> HTML report output path. Coexists with --json / --gate.
405
+ --json JSON output to stdout, for CI / external script consumption.
406
+ --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
407
+ --model <value> LLM model name, default sonnet.
408
+ --samples <value> Samples file path (.json/.yaml). Auto-detects from target / cwd if omitted.
409
+ --static-only Offline static mode: only 4 static rules, no LLM call.
410
+ --timeout <value> Single-session LLM timeout sec, default 600 (10 min).
411
+ ```
412
+
413
+ For full descriptions: `omk doctor --help`.
414
+
415
+ <!-- omk:cli:doctor:flags:end -->
416
+
381
417
  LLM health audit: a single LLM session emits per-dimension grades, findings, and suggestions for the 7 builtin dimensions; the HTML report sorts dimensions fail→warn→pass→skipped with errors first within each dim. Dimensions are extensible — call `registerHealthDimension` in your own code and the new section is folded into the same LLM call's prompt and report (order = registration order).
382
418
 
383
419
  Static-only mode (`--static-only`): for CI nodes without claude / codex installed, or local debugging without network — runs the four static rules (readability / metadata / dependencies / samples contract) with zero LLM calls and zero cost. Output goes through the same `DoctorReport` shape and combines with `--json` / `--gate` / `--html`.
@@ -396,33 +432,63 @@ omk eval gold compare <report-id> --gold-dir gold-dataset
396
432
 
397
433
  Runs the offline evaluation, applies the verdict gate, persists the report, and returns a ship/no-ship exit code. Bootstrap CI is enabled by default on this workflow.
398
434
 
399
- Common options:
435
+ <!-- omk:cli:eval:flags:start -->
436
+
437
+ **Flags:**
400
438
 
401
439
  ```text
402
- --samples <path> sample file (default: eval-samples.json, also detects .yaml/.yml)
403
- --skill-dir <path> artifact dir (default: skills)
404
- --control <expr> control variant expression
405
- --treatment <v1,v2> treatment variants, comma-separated
406
- --config <path> YAML/JSON evaluation config
407
- --model <name> task execution model (default: sonnet)
408
- --judge-models <list> judge config, e.g. claude:haiku or claude:opus,openai:gpt-4o
409
- --executor <name> claude / claude-sdk / codex / codex-sdk / openai-api / gemini / custom
410
- --no-judge skip LLM judge
411
- --dry-run preview only
412
- --blind blind A/B mode
413
- --concurrency <n> parallel tasks
414
- --timeout <sec> per-task timeout
415
- --repeat <n> repeat N times for variance analysis
416
- --batch evaluate each artifact independently vs baseline
417
- --bootstrap-samples N bootstrap resample count (default 1000)
418
- --threshold <number> verdict layer-gate threshold (default 3.5)
419
- --trivial-diff <num> practically tiny diff cutoff (default 0.1)
420
- --report-only produce the report and print verdict, but always exit 0
421
- --no-gate alias for --report-only
422
- --skip-connectivity skip model connectivity check (internal static gates still run)
423
- --no-serve do not auto-start the report server after evaluation
440
+ --batch Batch mode: baseline vs each skill
441
+ --blind Blind judge mode
442
+ --bootstrap Add bootstrap CI
443
+ --bootstrap-samples <value> Bootstrap resamples, default 1000
444
+ --budget-per-sample-ms <value> Per-sample time cap ms (must be > 0; omit for no cap)
445
+ --budget-per-sample-usd <value> Per-sample budget cap USD (must be > 0; omit for no cap)
446
+ --budget-usd <value> Total budget cap USD (must be > 0; omit for no cap)
447
+ --concurrency <value> Concurrency, default 1
448
+ --config <value> eval.yaml path
449
+ --control <value> Control variant expr
450
+ --dry-run Plan only, no real exec
451
+ --effort <value> Executor LLM reasoning effort low/medium/high/xhigh/max (default low; reports across efforts not strictly comparable).
452
+ --executor <value> Executor: claude / claude-sdk / codex / codex-sdk / openai-api / gemini / custom (default claude).
453
+ --gold-dir <value> Gold dataset dir
454
+ --judge-models <value> Judge config: executor:model[,...]. e.g. claude:haiku or claude:opus,openai:gpt-4o (≥ 2 = ensemble). Default <executor>:haiku.
455
+ --judge-repeat <value> Judge each dim N times
456
+ --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
457
+ --layered-stats Emit layered stats
458
+ --mcp-config <value> MCP config path
459
+ --model <value> Evaluated model
460
+ --no-cache Skip executor cache
461
+ --no-debias-length Disable length-debias (default on)
462
+ --no-diagnostic Disable diagnostic LLM call (on by default; emits "what went wrong + how to fix" advice for failed samples).
463
+ --no-gate Disable verdict gate
464
+ --no-judge Skip LLM judge
465
+ --no-serve Do not start report server
466
+ --no-strict-baseline Disable baseline isolation
467
+ --output-dir <value> Report output dir
468
+ --repeat <value> Repeat each sample N times
469
+ --report-only Produce the report and print verdict, but always exit 0 (no CI gate).
470
+ --resume <value> Resume a previous failed run
471
+ --retry <value> Per-sample retry count
472
+ --samples <value> Samples file path. Defaults to eval-samples.json (also .yaml/.yml); auto-discovers <skill>/.omk/samples.json under --skill-dir.
473
+ --skill-dir <value> Skill dir, default skills
474
+ --skip-connectivity Skip LLM connectivity preflight
475
+ --skip-doctor Escape hatch: skip the doctor health-check gate (on by default). Use when sandbox mocks supply deps; caller owns garbage-in risk.
476
+ --strict-baseline Force baseline isolation (default true)
477
+ --threshold <value> Verdict threshold, default 3.5
478
+ --timeout <value> Per-sample timeout sec, default 120
479
+ --treatment <value> Treatment variants, comma-separated
480
+ --trivial-diff <value> Trivial diff tolerance; 0 disables tolerance
481
+ --verbose Verbose logging
424
482
  ```
425
483
 
484
+ For full descriptions: `omk eval --help`.
485
+
486
+ <!-- omk:cli:eval:flags:end -->
487
+
488
+ The HTML report has two tabs:
489
+ - **📊 Score view** — the verdict-driven A/B comparison (fact / behavior / judge layers, bootstrap CI, length-debias).
490
+ - **✅ Functional view** — each sample as a unit test: design (prompt / rubric / mocks / environment) + execution trace + assertion results + actionable diagnostic. Diagnostic emits root cause (skill_doc_unclear / llm_misread / sample_design / tripwire_intentional / ...), workflow checks (rubric step ✓/✗ with evidence), and failure-mode tags (工作流跳步 / 硬编码值 / 幻觉输出 / 工具误用 / 环境拦截 / 误读约束 / 其他). For the sandbox-mock semantics behind `mocks` / `environment` / `tripwire` / `mocksStrict`, see [docs/sample-design-spec.md §三](./docs/sample-design-spec.md).
491
+
426
492
  ### `omk observe`
427
493
 
428
494
  `omk observe` ships two workflows: the default skill-health report, and the new observe inbox for human review.
@@ -437,6 +503,24 @@ omk observe ~/.claude/projects/my-project --skills audit,polish
437
503
  omk observe ~/.claude/projects/my-project --kb /path/to/project
438
504
  ```
439
505
 
506
+ <!-- omk:cli:observe:flags:start -->
507
+
508
+ **Flags:**
509
+
510
+ ```text
511
+ --from <value> Start time ISO, overrides --last
512
+ --kb <value> KB root, enables KB-aware analysis
513
+ --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
514
+ --last <value> Time window (7d / 24h / 30m)
515
+ --output-dir <value> Analysis output directory
516
+ --skills <value> Filter to specific skills, comma-separated
517
+ --to <value> End time ISO
518
+ ```
519
+
520
+ For full descriptions: `omk observe --help`.
521
+
522
+ <!-- omk:cli:observe:flags:end -->
523
+
440
524
  Turns real Claude Code session traces into skill-health reports: knowledge usage, gap signals, execution stability, tokens, and latency. This is production observation, not production scoring.
441
525
 
442
526
  #### B. observe inbox: reviewer loop
@@ -455,6 +539,7 @@ omk observe inbox --skill audit # filter by skill
455
539
  omk observe inbox --by-skill # rollup view (one row per skill)
456
540
  omk observe inbox --explore 10 # sample 10 long-tail items from medium/low
457
541
  omk observe inbox --explore 10 --include-noise # explicitly include the noise bucket
542
+ omk observe inbox --llm-enhanced-review # run LLM enhanced chain review explicitly
458
543
  omk observe inbox --json # JSON output for automation
459
544
 
460
545
  # 3. Inspect a single observation with its event triplet (surrounding messages)
@@ -468,7 +553,31 @@ Every observation carries:
468
553
  - `messageWindow` — 3 messages before / trigger / 3 messages after, plus `resolutionAfter` (whether the agent recovered)
469
554
  - `evidence.{messageIndex,messageUuid,toolUseId}` — anchors for round-tripping back to the original jsonl
470
555
 
471
- Supported trace formats: Claude Code session JSONL (`.jsonl`) and markdown conversation logs (`.log`).
556
+ Supported trace formats: Claude Code session JSONL (`.jsonl`), OpenClaw session JSONL (`.jsonl`), and markdown conversation logs (`.log`).
557
+
558
+ ### `omk skill-extract`
559
+
560
+ ```bash
561
+ omk skill-extract demo-create --review soft-xxx --status author_confirmed
562
+ omk skill-extract demo-create --review soft-xxx --status rejected --reason "not a real standard"
563
+ ```
564
+
565
+ <!-- omk:cli:skill-extract:flags:start -->
566
+
567
+ **Flags:**
568
+
569
+ ```text
570
+ --input-dir <value> Observation data directory
571
+ --json JSON output
572
+ --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
573
+ --reason <value> Manual review reason
574
+ --review <value> Soft standard id to review
575
+ --status <value> Review status: author_confirmed / rejected / pending_review (also accepts aliases: confirm / confirmed / reject / pending)
576
+ ```
577
+
578
+ For full descriptions: `omk skill-extract --help`.
579
+
580
+ <!-- omk:cli:skill-extract:flags:end -->
472
581
 
473
582
  ### `omk evolve`
474
583
 
@@ -477,6 +586,36 @@ omk evolve <skill> # multi-round auto-iteration on a skill
477
586
  omk evolve skills/foo.md --rounds 10 --target 4.5
478
587
  ```
479
588
 
589
+ <!-- omk:cli:evolve:flags:start -->
590
+
591
+ **Flags:**
592
+
593
+ ```text
594
+ --auto-fix-samples Fix the skill, then fix samples, then evaluate the combined candidate
595
+ --concurrency <value> Eval concurrency, default 1
596
+ --effort <value> Reasoning effort: low/medium/high/xhigh/max
597
+ --executor <value> Executor name, default claude
598
+ --improve-mode <agent|rewrite> Improvement strategy (default: agent)
599
+ --improve-model <value> LLM that rewrites the skill, default sonnet
600
+ --judge-models <value> Judge model (single judge required), executor:model format. Default claude:haiku
601
+ --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
602
+ --model <value> Evaluated LLM, default sonnet
603
+ --no-diagnostic Disable diagnostic LLM call
604
+ --reuse-latest-eval Reuse the latest comparable eval report as round-0
605
+ --rounds <value> Max iteration rounds, default 5
606
+ --sample-fix-max-attempts <value>Max auto-fix attempts per sample (default: 2)
607
+ --samples <value> Samples file, default eval-samples.json
608
+ --skip-connectivity Skip LLM connectivity preflight
609
+ --skip-doctor Skip doctor gate (escape hatch; user takes garbage-in risk)
610
+ --stop-on-assertions-pass Stop early when normal samples pass assertions
611
+ --target <value> Target composite score; stop when reached. If omitted, runs all rounds.
612
+ --timeout <value> Per-sample timeout sec, default 120
613
+ ```
614
+
615
+ For full descriptions: `omk evolve --help`.
616
+
617
+ <!-- omk:cli:evolve:flags:end -->
618
+
480
619
  Auto-iterates a skill through repeated eval → judge → rewrite loops until it hits `--target` or exhausts `--rounds`. Cost scales with `rounds × samples × variants`; a typical run takes minutes to tens of minutes. Original skill files are versioned under `skills/evolve/*.r0.md`.
481
620
 
482
621
  ### `omk sample`
@@ -486,6 +625,27 @@ omk sample <skill> # generate or fill eval-samples test cases f
486
625
  omk sample --batch # generate for skills missing eval-samples
487
626
  ```
488
627
 
628
+ <!-- omk:cli:sample:flags:start -->
629
+
630
+ **Flags:**
631
+
632
+ ```text
633
+ --batch Batch mode: scan --skill-dir, generate samples for any skill missing them.
634
+ --count <value> Number of samples to generate. Defaults to LLM auto-selection by skill type.
635
+ --fix Fix mode: auto-fix sample_design failures using the latest eval report.
636
+ --focus <value> Generation focus (NL hint). Steers LLM toward certain sample types.
637
+ --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
638
+ --model <value> Generation LLM model name, default opus.
639
+ --no-mock Skip mock generation; all tool calls execute for real during eval.
640
+ --reports-dir <value> Reports dir (fix mode), default ~/.oh-my-knowledge/reports.
641
+ --skill-dir <value> Skill root dir, default skills. Used by batch mode.
642
+ --treatment <value> Treatment name (fix mode), defaults to skill-path inference.
643
+ ```
644
+
645
+ For full descriptions: `omk sample --help`.
646
+
647
+ <!-- omk:cli:sample:flags:end -->
648
+
489
649
  One-shot generation. Auto-stamps `provenance` on generated cases. Generated assertions use English, numbers, or code tokens so they compare cleanly across bilingual outputs.
490
650
 
491
651
  ### `omk studio`
@@ -499,9 +659,28 @@ omk studio --observations-dir .omk/observations # observe inbox data director
499
659
  omk studio --no-open
500
660
  ```
501
661
 
662
+ <!-- omk:cli:studio:flags:start -->
663
+
664
+ **Flags:**
665
+
666
+ ```text
667
+ --analyses-dir <value> Analyses dir (optional)
668
+ --dev Dev mode: child process with hot reload
669
+ --host <value> Listen host, default localhost. Use 0.0.0.0 to expose to LAN
670
+ --lang <value> Output language zh|en. Priority: CLI > OMK_LANG env > zh.
671
+ --no-open Do not auto-open browser
672
+ --observations-dir <value> Observations dir (optional)
673
+ --port <value> Listen port, default 7799. Pass 0 for OS-assigned
674
+ --reports-dir <value> Reports dir, default ~/.oh-my-knowledge/reports
675
+ ```
676
+
677
+ For full descriptions: `omk studio --help`.
678
+
679
+ <!-- omk:cli:studio:flags:end -->
680
+
502
681
  Starts the local knowledge workbench for browsing reports and observation analyses. Verdict, sample diffs, regressions, saturation curves, and per-sample drill-downs all live in the studio UI — there is no CLI export / analysis subcommand. For CI gates, use `omk eval`'s exit code (0 on `PROGRESS`, non-zero otherwise) or `jq` over the report JSON.
503
682
 
504
- Visit `/observations/inbox` for the observe inbox dashboard: per-skill rollup view, reviewer action list, observability funnel, and a per-observation detail panel with the event triplet (surrounding messages).
683
+ Studio is skill-centric — the list page (`/`) shows skill cards with health band / 0-100 reference score / open-issue count / trend; the detail page (`/skills/<name>`) puts a prioritized issue checklist on the left (skill issues / sample issues / tool advisories), and a chart.js health trend plus three compact stage cards (doctor / eval / observe) on the right, with modals for deeper drill-down. The legacy run list moved to `/runs`. Visit `/observations/inbox` for the observe inbox dashboard: per-skill rollup view, reviewer action list, observability funnel, and a per-observation detail panel with the event triplet (surrounding messages).
505
684
 
506
685
  ## Executors
507
686
 
package/README.zh.md CHANGED
@@ -27,6 +27,8 @@ omk init my-eval && cd my-eval
27
27
  omk eval --control code-review-v1 --treatment code-review-v2 # → 5 分钟出 HTML 报告 + verdict
28
28
  ```
29
29
 
30
+ 手把手教程:[5 分钟快速上手](docs/zh/quickstart-skill-eval.md)(推荐第一次跑评测的用户)。
31
+
30
32
  深入:[在 Claude Code / Codex 中调用](#在-ai-coding-agent-中使用) · [`omk eval` 全 flag](#omk-eval) · [artifact 目录结构](#artifact-目录结构) · [`--lang` / `OMK_LANG`](#环境变量)
31
33
 
32
34
  ## 在 AI Coding Agent 中使用
@@ -365,6 +367,18 @@ omk 的公开 CLI 由 7 个顶层命令构成完整闭环:`init`(脚手架
365
367
  omk init [目录]
366
368
  ```
367
369
 
370
+ <!-- omk:cli:init:flags:start -->
371
+
372
+ **Flags:**
373
+
374
+ ```text
375
+ --lang <value> 输出语言 zh|en,优先级 CLI > OMK_LANG env > zh。
376
+ ```
377
+
378
+ 完整描述见 `omk init --help`。
379
+
380
+ <!-- omk:cli:init:flags:end -->
381
+
368
382
  生成一个评测项目脚手架,包含两版 starter skill 和 `eval-samples.json`。
369
383
 
370
384
  ### `omk doctor`
@@ -378,6 +392,28 @@ omk doctor --gate; echo $? # 静默门禁,fatal 问题 exit 1,
378
392
  omk doctor --static-only # 离线模式:只跑静态检查,不调 LLM
379
393
  ```
380
394
 
395
+ <!-- omk:cli:doctor:flags:start -->
396
+
397
+ **Flags:**
398
+
399
+ ```text
400
+ --effort <value> LLM 推理 effort:low / medium / high / xhigh / max。
401
+ --executor <value> 执行器名,默认 claude。指定为测试 fixture 路径可在测试里跑(同 omk doctor)。
402
+ --fix 交互式修复:根据 doctor 报告问题,用 LLM agent 修复 skill。
403
+ --gate 静默模式,只在 fail 时输出 stderr 摘要,exit code 标识结果。
404
+ --html <value> HTML 报告输出路径。可跟 --json / --gate 共存。
405
+ --json JSON 输出到 stdout,适合 CI / 外部脚本消费。
406
+ --lang <value> 输出语言 zh|en,优先级 CLI > OMK_LANG env > zh。
407
+ --model <value> LLM model 名,默认 sonnet。
408
+ --samples <value> 样本文件路径(.json/.yaml)。不传则按 target / cwd 顺序自动发现。
409
+ --static-only 离线静态模式,只跑 4 条静态 rule(skill_readable / skill_metadata / dependencies_present / samples_contract_aligned),不调 LLM。
410
+ --timeout <value> 单次 LLM 会话超时秒数,默认 600(10 分钟)。
411
+ ```
412
+
413
+ 完整描述见 `omk doctor --help`。
414
+
415
+ <!-- omk:cli:doctor:flags:end -->
416
+
381
417
  LLM 健康度审计:单次 LLM 会话产出 7 个内置维度的健康度评分 + findings + 改进建议;HTML 报告按 fail→warn→pass→skipped 排序,错误 finding 优先。维度可扩展(在自己代码里调 `registerHealthDimension`,自动并入同一次 LLM 调用的 prompt 与报告,顺序 = 注册顺序)。
382
418
 
383
419
  离线静态模式(`--static-only`):CI 节点没装 claude / codex、本地断网调试等场景下跑 4 条静态 rule(可读性 / 元数据 / 依赖 / samples 契约),零 LLM 调用、零成本。结果同样进 `DoctorReport`,可与 `--json` / `--gate` / `--html` 组合。
@@ -396,33 +432,63 @@ omk eval gold compare <report-id> --gold-dir gold-dataset
396
432
 
397
433
  运行离线评测,应用 verdict gate,持久化报告,并用 exit code 表示 ship/no-ship。这个工作流默认开启 bootstrap CI。
398
434
 
399
- 常用选项:
435
+ <!-- omk:cli:eval:flags:start -->
436
+
437
+ **Flags:**
400
438
 
401
439
  ```text
402
- --samples <路径> 样本文件(默认:eval-samples.json,也自动检测 .yaml/.yml)
403
- --skill-dir <路径> artifact 目录(默认:skills)
404
- --control <expr> 对照组 variant 表达式
405
- --treatment <v1,v2> 实验组 variants,逗号分隔
406
- --config <路径> YAML/JSON 评测配置
407
- --model <名称> 任务执行模型(默认:sonnet)
408
- --judge-models <list> 评委配置,例如 claude:haiku claude:opus,openai:gpt-4o
409
- --executor <名称> claude / claude-sdk / codex / codex-sdk / openai-api / gemini / custom
410
- --no-judge 跳过 LLM 评委
411
- --dry-run 仅预览
412
- --blind 盲测模式
413
- --concurrency <n> 并行任务数
414
- --timeout <秒> 单任务超时
415
- --repeat <n> 重复 N 次做方差分析
416
- --batch 每个 artifact 独立和 baseline 对比
417
- --bootstrap-samples N bootstrap 重采样次数(默认 1000)
418
- --threshold <number> verdict 分层门禁阈值(默认 3.5)
419
- --trivial-diff <num> 实际可忽略 diff 阈值(默认 0.1)
420
- --report-only 生成报告并打印 verdict,但始终 exit 0
421
- --no-gate --report-only 的别名
422
- --skip-connectivity 跳过模型连通性检查(内部静态 gate 仍强制执行)
423
- --no-serve 评测后不自动启动报告服务
440
+ --batch batch 模式:baseline vs 每个 skill
441
+ --blind judge blind 模式
442
+ --bootstrap 加 bootstrap CI
443
+ --bootstrap-samples <value> bootstrap 重采样次数,默认 1000
444
+ --budget-per-sample-ms <value> 单 sample 时长上限 ms(必须 > 0,不传则无上限)
445
+ --budget-per-sample-usd <value> 单 sample 预算上限 USD(必须 > 0,不传则无上限)
446
+ --budget-usd <value> 总预算上限 USD(必须 > 0,不传则无上限)
447
+ --concurrency <value> 并发数,默认 1
448
+ --config <value> eval.yaml 路径
449
+ --control <value> control variant 表达式
450
+ --dry-run 只 plan 不实跑
451
+ --effort <value> 被测 LLM 扩展思考预算 low/medium/high/xhigh/max(默认 low;跨 effort 报告不严格可比)。
452
+ --executor <value> 执行器:claude / claude-sdk / codex / codex-sdk / openai-api / gemini / 自定义命令(默认 claude)。
453
+ --gold-dir <value> gold dataset 目录
454
+ --judge-models <value> 评委配置,格式 executor:model[,...],例 claude:haiku 或 claude:opus,openai:gpt-4o(≥ 2 个 = ensemble)。默认 <executor>:haiku。
455
+ --judge-repeat <value> 每个 dim 评 N
456
+ --lang <value> 输出语言 zh|en,优先级 CLI > OMK_LANG env > zh。
457
+ --layered-stats 输出分层统计
458
+ --mcp-config <value> MCP 配置文件路径
459
+ --model <value> 被测模型
460
+ --no-cache 跳过 executor cache
461
+ --no-debias-length 关 length-debias(默认开)
462
+ --no-diagnostic 关闭 diagnostic 诊断 LLM 调用(默认开,给 failed sample 出「哪错了 + 怎么改」建议)。
463
+ --no-gate 关 verdict gate
464
+ --no-judge 跳过 LLM judge
465
+ --no-serve 不启 report server
466
+ --no-strict-baseline 关闭 baseline 隔离
467
+ --output-dir <value> 报告输出目录
468
+ --repeat <value> 每个 sample 重复跑 N 次
469
+ --report-only 生成报告并打印 verdict,但始终 exit 0(不参与 CI gate)。
470
+ --resume <value> 从某次失败 run 续跑
471
+ --retry <value> 失败 sample 重试次数
472
+ --samples <value> 样本文件路径。默认 eval-samples.json,也接受 .yaml/.yml;自动发现 --skill-dir 下的 <skill>/.omk/samples.json。
473
+ --skill-dir <value> skill 目录,默认 skills
474
+ --skip-connectivity 跳 LLM 连通性预检
475
+ --skip-doctor escape hatch:跳 doctor 健康检查门禁(默认强制启用)。沙箱 mock 提供依赖时绕开 doctor 物理路径误报;garbage-in 风险自负。
476
+ --strict-baseline 强制 baseline 隔离(default true)
477
+ --threshold <value> verdict 阈值,默认 3.5
478
+ --timeout <value> 单样本超时秒,默认 120
479
+ --treatment <value> treatment variant 列表,逗号分隔
480
+ --trivial-diff <value> 可忽略 diff 容差,0 表示不启用容差
481
+ --verbose 详细日志
424
482
  ```
425
483
 
484
+ 完整描述见 `omk eval --help`。
485
+
486
+ <!-- omk:cli:eval:flags:end -->
487
+
488
+ HTML 报告有两个 tab:
489
+ - **📊 评分视角** — verdict 驱动的 A/B 对比(事实/行为/judge 三层、bootstrap CI、length-debias)。
490
+ - **✅ 功能视角** — 每条 sample 当一条单测看:用例设计(prompt / rubric / 工具调用 mock / environment)+ 执行轨迹 + 断言结果 + 可操作的 diagnostic 建议。诊断给出归因(skill 文档模糊 / LLM 误读 / sample 设计 bug / 诱错样本 / ...)、工作流校验(rubric 每步 ✓/✗ + 证据)和失败模式标签(工作流跳步 / 硬编码值 / 幻觉输出 / 工具误用 / 环境拦截 / 误读约束 / 其他)。沙箱 mock 字段语义(`mocks` / `environment` / `tripwire` / `mocksStrict`)见 [docs/sample-design-spec.md §三](./docs/sample-design-spec.md)。
491
+
426
492
  ### `omk observe`
427
493
 
428
494
  omk observe 提供两条工作流:默认的 skill 健康度报告,以及 reviewer 闭环用的 observe inbox。
@@ -437,6 +503,24 @@ omk observe ~/.claude/projects/my-project --skills audit,polish
437
503
  omk observe ~/.claude/projects/my-project --kb /path/to/project
438
504
  ```
439
505
 
506
+ <!-- omk:cli:observe:flags:start -->
507
+
508
+ **Flags:**
509
+
510
+ ```text
511
+ --from <value> 起始时间 ISO,优先级高于 --last
512
+ --kb <value> 知识库 root,启用 KB-aware 分析
513
+ --lang <value> 输出语言 zh|en,优先级 CLI > OMK_LANG env > zh。
514
+ --last <value> 时间窗(7d / 24h / 30m)
515
+ --output-dir <value> 分析结果输出目录
516
+ --skills <value> 只看指定 skill,逗号分隔
517
+ --to <value> 结束时间 ISO
518
+ ```
519
+
520
+ 完整描述见 `omk observe --help`。
521
+
522
+ <!-- omk:cli:observe:flags:end -->
523
+
440
524
  把真实 Claude Code session trace 转成 skill 健康度报告:知识使用、gap 信号、执行稳定性、token 和耗时。这是生产观测,不是生产评分。
441
525
 
442
526
  #### B. observe inbox:reviewer 闭环
@@ -455,6 +539,7 @@ omk observe inbox --skill audit # 只看某个 skill
455
539
  omk observe inbox --by-skill # 按 skill 资产视图
456
540
  omk observe inbox --explore 10 # 从 medium / low 桶抽 10 条长尾
457
541
  omk observe inbox --explore 10 --include-noise # 显式包含 noise 桶
542
+ omk observe inbox --llm-enhanced-review # 显式调用模型进行链路增强复盘
458
543
  omk observe inbox --json # JSON 输出,便于自动化消费
459
544
 
460
545
  # 3. 反向查单条 observation 的事件三元组(前后 message 上下文)
@@ -468,7 +553,31 @@ omk observe show <inbox_id>
468
553
  + `messageWindow`:前 3 条 / 触发点 / 后 3 条 message 上下文 + `resolutionAfter`(后续是否解决)
469
554
  + `evidence.{messageIndex,messageUuid,toolUseId}`:可反向回到原始 jsonl 的锚点
470
555
 
471
- 支持 trace 格式:Claude Code session JSONL(`.jsonl`)+ markdown 对话日志(`.log`)。
556
+ 支持 trace 格式:Claude Code session JSONL(`.jsonl`)、OpenClaw session JSONL(`.jsonl`)、markdown 对话日志(`.log`)。
557
+
558
+ ### `omk skill-extract`
559
+
560
+ ```bash
561
+ omk skill-extract demo-create --review soft-xxx --status author_confirmed
562
+ omk skill-extract demo-create --review soft-xxx --status rejected --reason "不是有效标准"
563
+ ```
564
+
565
+ <!-- omk:cli:skill-extract:flags:start -->
566
+
567
+ **Flags:**
568
+
569
+ ```text
570
+ --input-dir <value> observation 数据目录
571
+ --json JSON 格式输出
572
+ --lang <value> 输出语言 zh|en,优先级 CLI > OMK_LANG env > zh。
573
+ --reason <value> 人工判断原因
574
+ --review <value> 要确认或否决的软标准 ID
575
+ --status <value> 确认状态:author_confirmed / rejected / pending_review(也接受 confirm / confirmed / reject / pending 别名)
576
+ ```
577
+
578
+ 完整描述见 `omk skill-extract --help`。
579
+
580
+ <!-- omk:cli:skill-extract:flags:end -->
472
581
 
473
582
  ### `omk evolve`
474
583
 
@@ -477,6 +586,36 @@ omk evolve <skill> # 多轮自动迭代 skill
477
586
  omk evolve skills/foo.md --rounds 10 --target 4.5
478
587
  ```
479
588
 
589
+ <!-- omk:cli:evolve:flags:start -->
590
+
591
+ **Flags:**
592
+
593
+ ```text
594
+ --auto-fix-samples 每轮先修 skill,再修 sample,随后一起评估候选结果
595
+ --concurrency <value> 评测并发数,默认 1
596
+ --effort <value> reasoning effort: low/medium/high/xhigh/max
597
+ --executor <value> 执行器名,默认 claude
598
+ --improve-mode <agent|rewrite> 改写策略(默认:agent)
599
+ --improve-model <value> 负责重写 skill 的 LLM,默认 sonnet
600
+ --judge-models <value> 评委 model(单评委约束),格式 executor:model。默认 claude:haiku
601
+ --lang <value> 输出语言 zh|en,优先级 CLI > OMK_LANG env > zh。
602
+ --model <value> 被评测的 LLM,默认 sonnet
603
+ --no-diagnostic 关 LLM diagnostic 调用
604
+ --reuse-latest-eval 复用可比的最新 eval 报告作为 round-0
605
+ --rounds <value> 最大迭代轮数,默认 5
606
+ --sample-fix-max-attempts <value>每条 sample 自动修复最多尝试次数(默认:2)
607
+ --samples <value> 样本文件路径,默认 eval-samples.json
608
+ --skip-connectivity 跳过 LLM 连通性预检
609
+ --skip-doctor 跳过 doctor 门禁(escape hatch,自负 garbage-in 风险)
610
+ --stop-on-assertions-pass 普通样本断言全过时提前停止
611
+ --target <value> 目标 composite 分数,达到即停。不传则跑满 rounds
612
+ --timeout <value> 单样本超时秒,默认 120
613
+ ```
614
+
615
+ 完整描述见 `omk evolve --help`。
616
+
617
+ <!-- omk:cli:evolve:flags:end -->
618
+
480
619
  让 skill 跑 eval → judge → 改写 SKILL.md 的多轮闭环,直到达到 `--target` 或 `--rounds` 上限。耗时按 `轮数 × 样本 × 变体` 累加,几分钟到几十分钟级别。原始 skill 文件版本保存在 `skills/evolve/*.r0.md`。
481
620
 
482
621
  ### `omk sample`
@@ -486,6 +625,27 @@ omk sample <skill> # 为单个 skill 生成或补齐评测用
486
625
  omk sample --batch # 为目录下缺评测集的 skill 批量生成
487
626
  ```
488
627
 
628
+ <!-- omk:cli:sample:flags:start -->
629
+
630
+ **Flags:**
631
+
632
+ ```text
633
+ --batch 批量模式:扫 --skill-dir 下所有缺 samples 的 skill,逐个生成。
634
+ --count <value> 生成样本条数。不传由 LLM 按 skill 类型自动决定。
635
+ --fix fix 模式:基于最近评测报告自动修复 sample_design 类型失败。
636
+ --focus <value> 生成焦点(自然语言提示)。控制 LLM 偏向哪类用例。
637
+ --lang <value> 输出语言 zh|en,优先级 CLI > OMK_LANG env > zh。
638
+ --model <value> 生成 LLM model 名,默认 opus。
639
+ --no-mock 不生成 mocks,eval 时所有工具调用真实执行。
640
+ --reports-dir <value> 报告目录(fix 模式用),默认 ~/.oh-my-knowledge/reports。
641
+ --skill-dir <value> skill 根目录,默认 skills。batch 模式扫此目录。
642
+ --treatment <value> 指定 treatment 名(fix 模式用),默认推断自 skill 路径。
643
+ ```
644
+
645
+ 完整描述见 `omk sample --help`。
646
+
647
+ <!-- omk:cli:sample:flags:end -->
648
+
489
649
  一次性生成。自动给生成的用例打 `provenance`。生成的 assertions 使用英文 / 数字 / 代码 token,便于跨中英文输出对比。
490
650
 
491
651
  ### `omk studio`
@@ -499,9 +659,28 @@ omk studio --observations-dir .omk/observations # observe inbox 数据目录
499
659
  omk studio --no-open
500
660
  ```
501
661
 
662
+ <!-- omk:cli:studio:flags:start -->
663
+
664
+ **Flags:**
665
+
666
+ ```text
667
+ --analyses-dir <value> 分析数据目录(可选)
668
+ --dev dev 模式:子进程启动 + 热更新
669
+ --host <value> 监听 host,默认 localhost。改为 0.0.0.0 暴露给局域网
670
+ --lang <value> 输出语言 zh|en,优先级 CLI > OMK_LANG env > zh。
671
+ --no-open 不自动打开浏览器
672
+ --observations-dir <value> 观测数据目录(可选)
673
+ --port <value> 监听端口,默认 7799。传 0 让 OS 分配
674
+ --reports-dir <value> 报告目录,默认 ~/.oh-my-knowledge/reports
675
+ ```
676
+
677
+ 完整描述见 `omk studio --help`。
678
+
679
+ <!-- omk:cli:studio:flags:end -->
680
+
502
681
  启动本地知识工作台浏览报告。verdict、样本回退、跨样本 diff、饱和曲线、单样本 drill-down 全部在 studio UI 里 —— omk 不提供 CLI 导出 / 分析子命令。CI gate 用 `omk eval` 的 exit code(PROGRESS 退 0、其他非 0),需要文字摘要自己 `jq` report JSON。
503
682
 
504
- 访问 `/observations/inbox` 查看 observe inbox 看板:按 skill 资产视图(rollup)+ reviewer 待办建议 + 当前可观测漏斗 + 单 observation 详情面板(含事件三元组)。
683
+ Studio 是 skill-centric 信息架构 — 列表页(`/`)按 skill 卡片展示健康等级 / 0-100 参考分 / 待优化数 / 趋势,详情页(`/skills/<name>`)左栏列关键问题清单(skill 优化 / 用例优化 / 工具反馈三档),右栏画 chart.js 健康趋势 + 三个紧凑阶段卡(doctor / eval / observe),细节走 modal。旧的 run 列表挪到 `/runs`。访问 `/observations/inbox` 查看 observe inbox 看板:按 skill 资产视图(rollup)+ reviewer 待办建议 + 当前可观测漏斗 + 单 observation 详情面板(含事件三元组)。
505
684
 
506
685
  ## 执行器
507
686
 
@@ -366,6 +366,7 @@ const AGENT_ASSERTION_TYPES = new Set([
366
366
  'tools_called',
367
367
  'tools_not_called',
368
368
  'tool_input_contains',
369
+ 'tool_input_not_contains',
369
370
  'tool_output_contains',
370
371
  'tools_count_min',
371
372
  'tools_count_max',
@@ -376,6 +377,7 @@ const TRACE_HEAVY_AGENT_ASSERTION_TYPES = new Set([
376
377
  'tools_called',
377
378
  'tools_not_called',
378
379
  'tool_input_contains',
380
+ 'tool_input_not_contains',
379
381
  'tool_output_contains',
380
382
  'tools_count_min',
381
383
  'tools_count_max',