oh-my-knowledge 1.0.0-beta.2 → 1.0.0-beta.4
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.
- package/README.md +2 -2
- package/README.zh.md +3 -3
- package/dist/assets/agent-skills/omk/references/commands.md +20 -19
- package/dist/cli/commands/eval/gold/compare.d.ts +1 -0
- package/dist/cli/commands/eval/gold/compare.js +25 -10
- package/dist/cli/commands/eval/gold/validate.js +7 -3
- package/dist/cli/commands/eval/index.js +20 -17
- package/dist/cli/commands/init.js +4 -4
- package/dist/cli/commands/studio.js +4 -4
- package/dist/cli/lib/i18n-dict/init.js +2 -2
- package/dist/cli/lib/i18n-dict/run.js +2 -2
- package/dist/cli/lib/run-core-evaluation.js +3 -0
- package/dist/cli/templates/init-samples.js +71 -91
- package/dist/dsh-plugin/core-command.js +19 -19
- package/dist/eval-core/analysis/builtins.d.ts +8 -0
- package/dist/eval-core/analysis/builtins.js +1334 -33
- package/dist/eval-core/analysis/decision.js +2 -2
- package/dist/eval-core/analysis/runtime.js +12 -2
- package/dist/eval-core/compiler/immutability.d.ts +1 -1
- package/dist/eval-core/compiler/immutability.js +1 -12
- package/dist/eval-core/compiler/index.d.ts +2 -2
- package/dist/eval-core/compiler/index.js +48 -9
- package/dist/eval-core/compiler/types.d.ts +9 -1
- package/dist/eval-core/compiler/types.js +1 -0
- package/dist/eval-core/compiler/validation.d.ts +3 -0
- package/dist/eval-core/compiler/validation.js +304 -25
- package/dist/eval-core/contracts/analysis-bundle.d.ts +15 -0
- package/dist/eval-core/contracts/analysis-bundle.js +36 -2
- package/dist/eval-core/contracts/analysis-input-matching.d.ts +4 -0
- package/dist/eval-core/contracts/analysis-input-matching.js +29 -0
- package/dist/eval-core/contracts/common.d.ts +5 -0
- package/dist/eval-core/contracts/comparability.d.ts +11 -11
- package/dist/eval-core/contracts/comparability.js +56 -43
- package/dist/eval-core/contracts/definition.d.ts +253 -7
- package/dist/eval-core/contracts/definition.js +29 -3
- package/dist/eval-core/contracts/digests.d.ts +8 -1
- package/dist/eval-core/contracts/digests.js +168 -5
- package/dist/eval-core/contracts/evaluation-bundle.js +5 -16
- package/dist/eval-core/contracts/execution-controls.d.ts +162 -0
- package/dist/eval-core/contracts/execution-controls.js +43 -1
- package/dist/eval-core/contracts/execution-identities.d.ts +1 -1
- package/dist/eval-core/contracts/execution-identities.js +33 -3
- package/dist/eval-core/contracts/immutability.d.ts +2 -0
- package/dist/eval-core/contracts/immutability.js +20 -0
- package/dist/eval-core/contracts/index.d.ts +1 -0
- package/dist/eval-core/contracts/index.js +1 -0
- package/dist/eval-core/contracts/json.js +3 -10
- package/dist/eval-core/contracts/plans.d.ts +324 -14
- package/dist/eval-core/contracts/plans.js +12 -6
- package/dist/eval-core/contracts/schemas/v2/comparability-assessment.schema.json +452 -0
- package/dist/eval-core/contracts/schemas/{v1 → v2}/execution-plan.schema.json +205 -82
- package/dist/eval-core/contracts/schemas/v2/series-analysis-bundle.schema.json +1299 -0
- package/dist/eval-core/contracts/schemas/{v1 → v3}/analysis-plan.schema.json +159 -42
- package/dist/eval-core/contracts/schemas/{v1 → v3}/evaluation-definition.schema.json +233 -116
- package/dist/eval-core/contracts/schemas/v3/execution-plan.schema.json +1177 -0
- package/dist/eval-core/contracts/schemas/{v1 → v3}/run-plan.schema.json +594 -445
- package/dist/eval-core/contracts/schemas/v4/evaluation-definition.schema.json +1407 -0
- package/dist/eval-core/contracts/schemas/v4/execution-plan.schema.json +1221 -0
- package/dist/eval-core/contracts/schemas/v4/run-plan.schema.json +2710 -0
- package/dist/eval-core/contracts/schemas/v5/evaluation-definition.schema.json +1451 -0
- package/dist/eval-core/contracts/schemas/v5/run-plan.schema.json +2754 -0
- package/dist/eval-core/{internal → contracts}/sealed-run-plan.d.ts +2 -2
- package/dist/eval-core/{internal → contracts}/sealed-run-plan.js +1 -1
- package/dist/eval-core/contracts/series.d.ts +9 -9
- package/dist/eval-core/contracts/series.js +3 -3
- package/dist/eval-core/contracts/statistics.d.ts +2 -0
- package/dist/eval-core/contracts/statistics.js +19 -0
- package/dist/eval-core/engine/index.d.ts +21 -1
- package/dist/eval-core/engine/index.js +59 -25
- package/dist/eval-core/engine/types.d.ts +2 -0
- package/dist/eval-core/evaluation/runtime.js +5 -6
- package/dist/eval-core/execution/runtime.js +7 -3
- package/dist/eval-core/execution/types.d.ts +2 -0
- package/dist/eval-core/facade.d.ts +1 -1
- package/dist/eval-core/facade.js +1 -1
- package/dist/eval-core/index.d.ts +3 -3
- package/dist/eval-core/index.js +1 -1
- package/dist/eval-core/schemas.js +12 -0
- package/dist/eval-core/series/builtins.d.ts +30 -0
- package/dist/eval-core/series/builtins.js +226 -0
- package/dist/eval-core/series/index.d.ts +1 -0
- package/dist/eval-core/series/index.js +1 -0
- package/dist/eval-core/series/runtime.js +10 -1
- package/dist/eval-runtime/adapters/executor-fn.js +4 -30
- package/dist/eval-runtime/adapters/invoke-contract.d.ts +159 -0
- package/dist/eval-runtime/adapters/invoke-contract.js +64 -0
- package/dist/eval-runtime/adapters/json-executor.d.ts +99 -0
- package/dist/eval-runtime/adapters/json-executor.js +928 -0
- package/dist/eval-runtime/advanced.d.ts +36 -0
- package/dist/eval-runtime/advanced.js +17 -0
- package/dist/eval-runtime/builders/paired-comparison.js +8 -1
- package/dist/eval-runtime/builders/policy.d.ts +220 -4
- package/dist/eval-runtime/builders/policy.js +189 -33
- package/dist/eval-runtime/conformance/cache.d.ts +26 -0
- package/dist/eval-runtime/conformance/cache.js +305 -0
- package/dist/eval-runtime/conformance/content-store.d.ts +27 -0
- package/dist/eval-runtime/conformance/content-store.js +98 -0
- package/dist/eval-runtime/conformance/evaluator.d.ts +38 -0
- package/dist/eval-runtime/conformance/evaluator.js +281 -0
- package/dist/eval-runtime/conformance/executor.d.ts +21 -9
- package/dist/eval-runtime/conformance/executor.js +171 -34
- package/dist/eval-runtime/conformance/judge.d.ts +43 -0
- package/dist/eval-runtime/conformance/judge.js +276 -0
- package/dist/eval-runtime/conformance/runtime.d.ts +48 -0
- package/dist/eval-runtime/conformance/runtime.js +130 -0
- package/dist/eval-runtime/conformance/workspace-provider.d.ts +20 -0
- package/dist/eval-runtime/conformance/workspace-provider.js +260 -0
- package/dist/eval-runtime/contracts.d.ts +4 -0
- package/dist/eval-runtime/contracts.js +2 -0
- package/dist/eval-runtime/custom-evaluator.d.ts +106 -0
- package/dist/eval-runtime/custom-evaluator.js +285 -0
- package/dist/eval-runtime/evaluate.d.ts +569 -0
- package/dist/eval-runtime/evaluate.js +2717 -0
- package/dist/eval-runtime/evaluators/retrieval.d.ts +30 -0
- package/dist/eval-runtime/evaluators/retrieval.js +172 -0
- package/dist/eval-runtime/evaluators/tool-trajectory.d.ts +22 -0
- package/dist/eval-runtime/evaluators/tool-trajectory.js +177 -0
- package/dist/eval-runtime/execution-controls.d.ts +6 -0
- package/dist/eval-runtime/execution-controls.js +57 -0
- package/dist/eval-runtime/identity.d.ts +22 -0
- package/dist/eval-runtime/identity.js +45 -17
- package/dist/eval-runtime/index.d.ts +23 -25
- package/dist/eval-runtime/index.js +6 -13
- package/dist/eval-runtime/infrastructure.d.ts +51 -0
- package/dist/eval-runtime/infrastructure.js +89 -0
- package/dist/eval-runtime/judges/rubric-contracts.d.ts +58 -0
- package/dist/eval-runtime/judges/rubric-contracts.js +74 -0
- package/dist/eval-runtime/judges/rubric-judge.d.ts +10 -53
- package/dist/eval-runtime/judges/rubric-judge.js +20 -74
- package/dist/eval-runtime/judges/rubric-kit.d.ts +51 -0
- package/dist/eval-runtime/judges/rubric-kit.js +139 -0
- package/dist/eval-runtime/mcp-config.d.ts +48 -0
- package/dist/eval-runtime/mcp-config.js +90 -0
- package/dist/eval-runtime/mock-interception.d.ts +65 -0
- package/dist/eval-runtime/mock-interception.js +109 -0
- package/dist/eval-runtime/result-store.d.ts +45 -0
- package/dist/eval-runtime/result-store.js +247 -0
- package/dist/eval-runtime/runner.d.ts +46 -0
- package/dist/eval-runtime/runner.js +115 -0
- package/dist/eval-runtime/series.d.ts +85 -0
- package/dist/eval-runtime/series.js +383 -0
- package/dist/eval-runtime/tool-policy.d.ts +12 -0
- package/dist/eval-runtime/tool-policy.js +69 -0
- package/dist/eval-runtime/workspace.d.ts +49 -0
- package/dist/eval-runtime/workspace.js +84 -0
- package/dist/eval-workflows/analysis/binomial-confidence.d.ts +13 -0
- package/dist/eval-workflows/analysis/binomial-confidence.js +122 -0
- package/dist/eval-workflows/analysis/bootstrap.d.ts +17 -5
- package/dist/eval-workflows/analysis/bootstrap.js +73 -30
- package/dist/eval-workflows/analysis/sample-size.d.ts +16 -0
- package/dist/eval-workflows/analysis/sample-size.js +83 -0
- package/dist/eval-workflows/artifact-store/contracts.d.ts +2 -2
- package/dist/eval-workflows/artifact-store/node-run-store.js +10 -1
- package/dist/eval-workflows/evaluation-defaults.d.ts +4 -0
- package/dist/eval-workflows/evaluation-defaults.js +4 -0
- package/dist/eval-workflows/gold/cli.d.ts +1 -1
- package/dist/eval-workflows/gold/cli.js +4 -4
- package/dist/eval-workflows/gold/dataset.d.ts +4 -0
- package/dist/eval-workflows/gold/dataset.js +60 -12
- package/dist/eval-workflows/gold/human.d.ts +56 -0
- package/dist/eval-workflows/gold/human.js +121 -30
- package/dist/eval-workflows/input-compilation/compile.js +45 -16
- package/dist/eval-workflows/input-compilation/parse.js +78 -2
- package/dist/eval-workflows/input-compilation/registry.d.ts +1 -1
- package/dist/eval-workflows/input-compilation/registry.js +13 -1
- package/dist/eval-workflows/input-compilation/types.d.ts +18 -5
- package/dist/eval-workflows/input-compilation/types.js +3 -3
- package/dist/eval-workflows/inputs/contracts/config.d.ts +14 -0
- package/dist/eval-workflows/inputs/contracts/sample.d.ts +9 -3
- package/dist/eval-workflows/inputs/contracts/schemas/{v1 → v2}/eval-sample-set.schema.json +148 -129
- package/dist/eval-workflows/inputs/eval-config.d.ts +1 -1
- package/dist/eval-workflows/inputs/eval-config.js +111 -2
- package/dist/eval-workflows/inputs/eval-samples.d.ts +1 -1
- package/dist/eval-workflows/inputs/eval-samples.js +1 -1
- package/dist/eval-workflows/inputs/load-samples.d.ts +1 -1
- package/dist/eval-workflows/inputs/load-samples.js +1 -1
- package/dist/eval-workflows/inputs/rubric-contract.d.ts +2 -0
- package/dist/eval-workflows/inputs/rubric-contract.js +2 -0
- package/dist/eval-workflows/inputs/sample-contract.js +14 -6
- package/dist/eval-workflows/inputs/schemas/json-schema.js +22 -1
- package/dist/eval-workflows/inputs/schemas/sample-set.d.ts +3 -2
- package/dist/eval-workflows/inputs/schemas/sample-set.js +18 -4
- package/dist/eval-workflows/instruments/contracts/config.d.ts +7 -2
- package/dist/eval-workflows/instruments/contracts/index.d.ts +0 -1
- package/dist/eval-workflows/messages.d.ts +1 -1
- package/dist/eval-workflows/messages.js +0 -12
- package/dist/eval-workflows/production-host/index.d.ts +1 -0
- package/dist/eval-workflows/production-host/index.js +1 -0
- package/dist/eval-workflows/production-host/judge-provider-identity.d.ts +9 -0
- package/dist/eval-workflows/production-host/judge-provider-identity.js +89 -0
- package/dist/eval-workflows/production-host/measurement-design.js +56 -26
- package/dist/eval-workflows/production-host/node-cli-composition.js +17 -26
- package/dist/eval-workflows/production-host/node-cli-evaluation-resolver.js +93 -14
- package/dist/eval-workflows/projections/contracts.d.ts +45 -8
- package/dist/eval-workflows/projections/contracts.js +1 -1
- package/dist/eval-workflows/projections/gold.d.ts +2 -0
- package/dist/eval-workflows/projections/gold.js +107 -14
- package/dist/eval-workflows/runtime-adapter/adapters/claude/cli.js +1 -1
- package/dist/eval-workflows/runtime-adapter/adapters/claude/resources.d.ts +3 -30
- package/dist/eval-workflows/runtime-adapter/adapters/claude/resources.js +150 -98
- package/dist/eval-workflows/runtime-adapter/adapters/codex/cli-protocol.d.ts +1 -1
- package/dist/eval-workflows/runtime-adapter/adapters/codex/resources.d.ts +1 -1
- package/dist/eval-workflows/runtime-adapter/adapters/codex/sdk-protocol.d.ts +1 -1
- package/dist/eval-workflows/runtime-adapter/adapters/custom/command.d.ts +33 -0
- package/dist/eval-workflows/runtime-adapter/adapters/custom/command.js +129 -5
- package/dist/eval-workflows/runtime-adapter/adapters/shared/stateless-api-resources.d.ts +1 -1
- package/dist/eval-workflows/runtime-adapter/analysis/agreement-node-contract.d.ts +6 -1
- package/dist/eval-workflows/runtime-adapter/analysis/agreement-node-contract.js +100 -31
- package/dist/eval-workflows/runtime-adapter/analysis/agreement-node.d.ts +1 -1
- package/dist/eval-workflows/runtime-adapter/analysis/agreement-node.js +49 -4
- package/dist/eval-workflows/runtime-adapter/analysis/agreement-source-adapter-v1.d.ts +11 -0
- package/dist/eval-workflows/runtime-adapter/analysis/agreement-source-adapter-v1.js +114 -0
- package/dist/eval-workflows/runtime-adapter/analysis/agreement-source-adapter.js +1 -1
- package/dist/eval-workflows/runtime-adapter/analysis/agreement-table.d.ts +207 -1
- package/dist/eval-workflows/runtime-adapter/analysis/agreement-table.js +134 -5
- package/dist/eval-workflows/runtime-adapter/analysis/bootstrap-family-node-contract.d.ts +0 -7
- package/dist/eval-workflows/runtime-adapter/analysis/bootstrap-family-node-contract.js +4 -37
- package/dist/eval-workflows/runtime-adapter/analysis/bootstrap-family-node-support.d.ts +7 -0
- package/dist/eval-workflows/runtime-adapter/analysis/bootstrap-family-node-support.js +36 -0
- package/dist/eval-workflows/runtime-adapter/analysis/bootstrap-family-node-v2.d.ts +5 -0
- package/dist/eval-workflows/runtime-adapter/analysis/bootstrap-family-node-v2.js +90 -0
- package/dist/eval-workflows/runtime-adapter/analysis/bootstrap-family-node.js +2 -1
- package/dist/eval-workflows/runtime-adapter/analysis/bootstrap-family-table-v2.d.ts +320 -0
- package/dist/eval-workflows/runtime-adapter/analysis/bootstrap-family-table-v2.js +265 -0
- package/dist/eval-workflows/runtime-adapter/analysis/bootstrap-family-table.d.ts +34 -1
- package/dist/eval-workflows/runtime-adapter/analysis/bootstrap-family-table.js +41 -28
- package/dist/eval-workflows/runtime-adapter/analysis/composite-node-contract.d.ts +1 -1
- package/dist/eval-workflows/runtime-adapter/analysis/composite-node-contract.js +3 -3
- package/dist/eval-workflows/runtime-adapter/analysis/composite-source-adapter.js +1 -1
- package/dist/eval-workflows/runtime-adapter/analysis/dimension-node.d.ts +1 -1
- package/dist/eval-workflows/runtime-adapter/analysis/dimension-node.js +36 -10
- package/dist/eval-workflows/runtime-adapter/analysis/dimension-parameters.d.ts +8 -0
- package/dist/eval-workflows/runtime-adapter/analysis/dimension-parameters.js +36 -4
- package/dist/eval-workflows/runtime-adapter/analysis/dimension-table-v1.d.ts +135 -0
- package/dist/eval-workflows/runtime-adapter/analysis/dimension-table-v1.js +195 -0
- package/dist/eval-workflows/runtime-adapter/analysis/dimension-table.d.ts +11 -5
- package/dist/eval-workflows/runtime-adapter/analysis/dimension-table.js +31 -10
- package/dist/eval-workflows/runtime-adapter/analysis/index.d.ts +2 -0
- package/dist/eval-workflows/runtime-adapter/analysis/index.js +2 -0
- package/dist/eval-workflows/runtime-adapter/analysis/judge-agreement.d.ts +8 -0
- package/dist/eval-workflows/runtime-adapter/analysis/judge-agreement.js +55 -0
- package/dist/eval-workflows/runtime-adapter/analysis/release-decision-parameters.d.ts +109 -1
- package/dist/eval-workflows/runtime-adapter/analysis/release-decision-parameters.js +199 -29
- package/dist/eval-workflows/runtime-adapter/analysis/release-decision.d.ts +22 -3
- package/dist/eval-workflows/runtime-adapter/analysis/release-decision.js +505 -74
- package/dist/eval-workflows/runtime-adapter/assembly.js +22 -26
- package/dist/eval-workflows/runtime-adapter/builtins.js +2 -0
- package/dist/eval-workflows/runtime-adapter/composition.js +2 -0
- package/dist/eval-workflows/runtime-adapter/evaluators/llm-assertions.d.ts +1 -0
- package/dist/eval-workflows/runtime-adapter/evaluators/llm-assertions.js +12 -1
- package/dist/eval-workflows/runtime-adapter/evaluators/rubric-judge.js +1 -0
- package/dist/eval-workflows/runtime-adapter/resource-leases/access.js +7 -5
- package/dist/eval-workflows/runtime-adapter/resource-leases/node.js +20 -10
- package/dist/eval-workflows/runtime-adapter/resource-leases/types.d.ts +1 -1
- package/dist/evidence/storage/directories.js +5 -10
- package/dist/evidence/storage/directory-selection.d.ts +5 -0
- package/dist/evidence/storage/directory-selection.js +13 -0
- package/dist/index.d.ts +2 -4
- package/dist/index.js +2 -4
- package/dist/knowledge-artifacts/authoring/generator.js +24 -19
- package/dist/knowledge-artifacts/governance/store.d.ts +1 -1
- package/dist/knowledge-artifacts/governance/store.js +13 -16
- package/dist/observability/inbox/paths.js +4 -5
- package/dist/studio/core-runs/renderer.js +1 -1
- package/dist/studio/presentation/observation-inbox/styles/experience.d.ts +1 -0
- package/dist/studio/presentation/observation-inbox/styles/experience.js +943 -0
- package/dist/studio/presentation/observation-inbox/styles/metrics.d.ts +1 -0
- package/dist/studio/presentation/observation-inbox/styles/metrics.js +679 -0
- package/dist/studio/presentation/observation-inbox/styles/review.d.ts +1 -0
- package/dist/studio/presentation/observation-inbox/styles/review.js +1422 -0
- package/dist/studio/presentation/observation-inbox/styles/shell.d.ts +1 -0
- package/dist/studio/presentation/observation-inbox/styles/shell.js +844 -0
- package/dist/studio/presentation/observation-inbox/styles/trajectory.d.ts +1 -0
- package/dist/studio/presentation/observation-inbox/styles/trajectory.js +1299 -0
- package/dist/studio/presentation/observation-inbox/styles.d.ts +2 -1
- package/dist/studio/presentation/observation-inbox/styles.js +11 -5183
- package/package.json +13 -2
- package/dist/eval-runtime/engine.d.ts +0 -3
- package/dist/eval-runtime/engine.js +0 -3
- package/dist/eval-workflows/instruments/contracts/result.d.ts +0 -54
- package/dist/eval-workflows/instruments/contracts/result.js +0 -1
- package/dist/eval-workflows/instruments/judge-trace.d.ts +0 -1
- package/dist/eval-workflows/instruments/judge-trace.js +0 -1
- package/dist/eval-workflows/instruments/judge.d.ts +0 -78
- package/dist/eval-workflows/instruments/judge.js +0 -323
package/README.md
CHANGED
|
@@ -55,7 +55,7 @@ export OMK_EXECUTOR=codex
|
|
|
55
55
|
|
|
56
56
|
Without `OMK_MODEL`, omk reads the model from `~/.codex/config.toml`. You can still pass `--executor codex --model <codex-model>` per command. Pass `--judge-models` or set `OMK_JUDGE_MODELS` only when you want a different judge.
|
|
57
57
|
|
|
58
|
-
> The default 3-case pack is a low-cost workflow check, so `UNDERPOWERED` is expected. `--samples 20` selects a first-party, difficulty-stratified starter pack that meets omk's
|
|
58
|
+
> The default 3-case pack is a low-cost workflow check, so `UNDERPOWERED` is expected. `--samples 20` selects a first-party, difficulty-stratified starter pack that meets omk's default heuristic evidence floor; it is not an a priori power calculation. Its provenance is `llm-generated`: use it to learn the statistical workflow, then review and replace it with real domain cases before making a release decision.
|
|
59
59
|
|
|
60
60
|
> The CLI notifies you when a newer version is available (at most once per 20h); set `OMK_SKIP_UPDATE_CHECK=1` to silence it permanently.
|
|
61
61
|
|
|
@@ -228,7 +228,7 @@ The full docs are published at **[oh-my-knowledge.pages.dev](https://oh-my-knowl
|
|
|
228
228
|
- **[CLI reference](docs/reference/cli.md)** — all top-level commands with bash examples and flag tables
|
|
229
229
|
- **[Migrate to the 1.0 preview](docs/guides/v1-preview-migration.md)** — install channel, storage reset, sample protocol, CLI automation, and embedded API changes since 0.54
|
|
230
230
|
- **[Evaluation Core cutover](docs/guides/eval-core-cutover.md)** — `BREAKING-SCHEMA` storage, resume, Studio, Gold, managed-evidence, and evolve migration
|
|
231
|
-
- **[Embed OMK in a service](docs/guides/eval-runtime.md)** —
|
|
231
|
+
- **[Embed OMK in a service](docs/guides/eval-runtime.md)** — canonical `evaluate()` plus repeat-run `evaluateSeries()` for Node.js and FaaS hosts
|
|
232
232
|
- **[Storage layout v2](docs/specs/storage-layout-spec.md)** — project/global domains, compatibility boundary, and Git policy
|
|
233
233
|
- **[Executors](docs/reference/executors.md)** & **[artifact layout](docs/reference/artifact-layout.md)** — built-in / custom executors; how `variant` resolves to an artifact + runtime context
|
|
234
234
|
- **[How-to guides](docs/guides/agent-eval.md)** — [evaluate an agent](docs/guides/agent-eval.md) (project runtime context) and [use non-Claude models](docs/guides/non-claude-models.md) (GLM / Qwen / DeepSeek / Moonshot / Ollama)
|
package/README.zh.md
CHANGED
|
@@ -55,7 +55,7 @@ export OMK_EXECUTOR=codex
|
|
|
55
55
|
|
|
56
56
|
不设置 `OMK_MODEL` 时,omk 会读取 `~/.codex/config.toml` 的模型。也可以继续逐次显式传 `--executor codex --model <codex-model>`。自定义评委时再传 `--judge-models` 或设置 `OMK_JUDGE_MODELS`。
|
|
57
57
|
|
|
58
|
-
> 默认 3 条用例是低成本流程检查,出现「数据不足(UNDERPOWERED)」符合预期。`--samples 20` 会选择经过难度分层的官方起步用例集,达到 omk
|
|
58
|
+
> 默认 3 条用例是低成本流程检查,出现「数据不足(UNDERPOWERED)」符合预期。`--samples 20` 会选择经过难度分层的官方起步用例集,达到 omk 默认的启发式证据下限,但这不是先验功效计算。其来源明确标记为 `llm-generated`:它适合学习统计流程,发布判断前仍应人工复核并替换为真实领域用例。
|
|
59
59
|
|
|
60
60
|
> 命令行有新版本时会自动提示(每 20 小时最多一次);想永久关闭该提醒,设环境变量 `OMK_SKIP_UPDATE_CHECK=1` 即可。
|
|
61
61
|
|
|
@@ -157,7 +157,7 @@ RAG 专项评测请看 RAGAS(独立 niche,跟 omk 互补)。完整对比
|
|
|
157
157
|
|
|
158
158
|
| 特性 | 说明 |
|
|
159
159
|
|------|------|
|
|
160
|
-
| **Core 发布决定** |
|
|
160
|
+
| **Core 发布决定** | 六种判定 + 稳定 reason code + exit code 路由;Studio 投影同一份经过认证的 Decision |
|
|
161
161
|
| **五层 evidence graph** | Assertion / LLM / Judge / Dimension / Composite 保持独立,coverage、成本、状态与 lineage 与分数正交 |
|
|
162
162
|
| **多执行器** | 支持 Claude CLI / Claude SDK / Codex CLI / Codex SDK / DeepSeek Harness / OpenAI / Anthropic API 及自定义命令 |
|
|
163
163
|
| **30+ 种断言** | 包含子串、正则、JSON Schema、ROUGE/BLEU/Levenshtein 相似度、Agent 工具调用、语义相似度、自定义函数等 |
|
|
@@ -228,7 +228,7 @@ omk-mcp
|
|
|
228
228
|
- **[CLI 参考](docs/zh/reference/cli.md)** —— 顶层命令的 bash 示例和 flag 表
|
|
229
229
|
- **[迁移到 1.0 预览版](docs/zh/guides/v1-preview-migration.md)** —— 从 `0.54` 升级时的安装渠道、存储重建、用例协议、CLI 自动化与嵌入式 API 变化
|
|
230
230
|
- **[Evaluation Core 生产切换](docs/zh/guides/eval-core-cutover.md)** —— `BREAKING-SCHEMA` 存储、resume、Studio、Gold、受管证据与 evolve 迁移
|
|
231
|
-
- **[在服务中嵌入 OMK](docs/zh/guides/eval-runtime.md)** —— 面向 Node.js 与 FaaS
|
|
231
|
+
- **[在服务中嵌入 OMK](docs/zh/guides/eval-runtime.md)** —— 面向 Node.js 与 FaaS 宿主的 canonical `evaluate()` 与重复运行 `evaluateSeries()`
|
|
232
232
|
- **[存储布局 v2](docs/zh/specs/storage-layout-spec.md)** —— 项目/全局领域、迁移兼容与 Git 策略
|
|
233
233
|
- **[执行器](docs/zh/reference/executors.md)** & **[知识载体布局](docs/zh/reference/artifact-layout.md)** —— 内置 / 自定义执行器;variant 如何解析为 artifact + runtime context
|
|
234
234
|
- **[操作指南](docs/zh/guides/agent-eval.md)** —— [评测 agent](docs/zh/guides/agent-eval.md)(项目 runtime context)与[使用非 Claude 模型](docs/zh/guides/non-claude-models.md)(GLM / 通义 / DeepSeek / Moonshot / Ollama)
|
|
@@ -63,7 +63,7 @@ omk doctor --json --gate
|
|
|
63
63
|
|
|
64
64
|
## omk eval
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
跑评测:用一个对照组与多个实验组 skill 做对照试验,生成判定报告。
|
|
67
67
|
|
|
68
68
|
**用法:**
|
|
69
69
|
|
|
@@ -73,16 +73,16 @@ omk eval [flags]
|
|
|
73
73
|
|
|
74
74
|
**Flags:**
|
|
75
75
|
|
|
76
|
-
- `--batch` `boolean`:batch
|
|
76
|
+
- `--batch` `boolean`:batch 模式:baseline 作为对照组,逐个 skill 作为实验组
|
|
77
77
|
- `--bootstrap` `boolean`:加 bootstrap CI
|
|
78
78
|
- `--bootstrap-samples` `option`:bootstrap 重采样次数,默认 1000
|
|
79
|
-
- `--budget-per-sample-ms` `option
|
|
80
|
-
- `--budget-per-sample-usd` `option
|
|
79
|
+
- `--budget-per-sample-ms` `option`:单用例时长上限 ms(必须 > 0,不传则无上限)
|
|
80
|
+
- `--budget-per-sample-usd` `option`:单用例预算上限 USD(必须 > 0,不传则无上限)
|
|
81
81
|
- `--budget-usd` `option`:总预算上限 USD(必须 > 0,不传则无上限)
|
|
82
82
|
- `--concurrency` `option`:并发数,默认 1
|
|
83
83
|
- `--config` `option`:eval.yaml 路径
|
|
84
|
-
- `--control` `option
|
|
85
|
-
- `--control-cwd` `option
|
|
84
|
+
- `--control` `option`:对照组(control)的 variant 表达式(仅 artifact 身份)
|
|
85
|
+
- `--control-cwd` `option`:对照组(control)的 runtime context 目录
|
|
86
86
|
- `--dry-run` `boolean`:只 plan 不实跑
|
|
87
87
|
- `--effort` `option`:被测 LLM 扩展思考预算 low/medium/high/xhigh/max(默认 low;跨 effort 报告不严格可比)。
|
|
88
88
|
- `--executor` `option`:执行器:claude / claude-sdk / codex / codex-sdk / anthropic-api / openai-api / 自定义命令。Codex 任务内自动用 codex;也可用 OMK_EXECUTOR 设置环境偏好。
|
|
@@ -90,7 +90,7 @@ omk eval [flags]
|
|
|
90
90
|
- `--gold-dir` `option`:gold dataset 目录
|
|
91
91
|
- `--holdout-ratio` `option`:留出比例 0-1(如 0.3);切出 holdout 子集,对比 train/holdout 综合分检测过拟合
|
|
92
92
|
- `--judge-models` `option`:评委配置,格式 executor:model[,...],例 claude:haiku 或 codex:<model>(≥ 2 个 = ensemble)。默认跟随所选执行器;Codex 沿用被测模型。
|
|
93
|
-
- `--judge-repeat` `option
|
|
93
|
+
- `--judge-repeat` `option`:每个维度由评委评价 N 次
|
|
94
94
|
- `--lang` `option` (默认 `zh`):输出语言 zh|en,优先级 CLI > OMK_LANG env > zh。
|
|
95
95
|
- `--layered-stats` `boolean`:输出分层统计
|
|
96
96
|
- `--mcp-config` `option`:MCP 配置文件路径
|
|
@@ -99,30 +99,30 @@ omk eval [flags]
|
|
|
99
99
|
- `--no-debias-length` `boolean`:关 length-debias(默认开)
|
|
100
100
|
- `--no-diagnostic` `boolean`:关闭基于 Core 失败、缺失、排除与稳定 reason code 的诊断投影。
|
|
101
101
|
- `--no-evidence` `boolean`:不把本次评测写成证据追加进受管记录(默认会为已 install 的 skill 自动写)。
|
|
102
|
-
- `--no-gate` `boolean
|
|
103
|
-
- `--no-judge` `boolean`:跳过 LLM
|
|
102
|
+
- `--no-gate` `boolean`:关闭判定门禁
|
|
103
|
+
- `--no-judge` `boolean`:跳过 LLM 评委
|
|
104
104
|
- `--no-serve` `boolean`:不启 report server
|
|
105
105
|
- `--no-strict-baseline` `boolean`:关闭 baseline 隔离
|
|
106
106
|
- `--output-dir` `option`:报告输出目录(默认项目级 .omk/eval)
|
|
107
|
-
- `--repeat` `option
|
|
108
|
-
- `--report-only` `boolean
|
|
107
|
+
- `--repeat` `option`:预先固定 Evaluation Series 的独立 run 数
|
|
108
|
+
- `--report-only` `boolean`:生成报告并打印判定,但始终 exit 0(不参与 CI gate)。
|
|
109
109
|
- `--resume` `option`:复用经过完整契约校验的 Core runId;拒绝时失败关闭
|
|
110
|
-
- `--retry` `option
|
|
111
|
-
- `--samples` `option
|
|
110
|
+
- `--retry` `option`:单用例失败重试次数
|
|
111
|
+
- `--samples` `option`:用例路径。自动发现项目级或单个实验组(treatment)目录 skill 下的 eval-samples.json / eval-samples.yaml;显式路径可为 JSON / YAML 文件或分片目录。
|
|
112
112
|
- `--skill-dir` `option`:skill 目录,默认 skills
|
|
113
113
|
- `--skip-connectivity` `boolean`:跳 LLM 连通性预检
|
|
114
114
|
- `--skip-doctor` `boolean`:escape hatch:跳 doctor 健康检查门禁(默认强制启用)。沙箱 mock 提供依赖时绕开 doctor 物理路径误报;garbage-in 风险自负。
|
|
115
115
|
- `--strict-baseline` `boolean`:强制 baseline 隔离(default true)
|
|
116
|
-
- `--threshold` `option
|
|
116
|
+
- `--threshold` `option`:判定阈值,默认 3.5
|
|
117
117
|
- `--timeout` `option`:单用例超时秒,默认 120
|
|
118
|
-
- `--treatment` `option
|
|
119
|
-
- `--treatment-cwd` `option
|
|
118
|
+
- `--treatment` `option`:实验组(treatment)的 variant 列表,逗号分隔(仅 artifact 身份)
|
|
119
|
+
- `--treatment-cwd` `option`:实验组(treatment)的 runtime context 目录列表,逗号分隔、与 --treatment 按序对齐(空位 = 无 cwd)
|
|
120
120
|
- `--trivial-diff` `option`:可忽略 diff 容差,0 表示不启用容差
|
|
121
121
|
- `--verbose` `boolean`:详细日志
|
|
122
122
|
|
|
123
123
|
**示例:**
|
|
124
124
|
|
|
125
|
-
>
|
|
125
|
+
> 最简对照:baseline 作为对照组,my-skill 作为实验组
|
|
126
126
|
|
|
127
127
|
```bash
|
|
128
128
|
omk eval --control baseline --treatment my-skill
|
|
@@ -169,6 +169,7 @@ omk eval gold compare <runId> [flags]
|
|
|
169
169
|
- `--gold-dir` `option`:gold dataset 目录,必填
|
|
170
170
|
- `--lang` `option` (默认 `zh`):输出语言 zh|en,优先级 CLI > OMK_LANG env > zh。
|
|
171
171
|
- `--metric` `option`:显式选择 Core metric ID。
|
|
172
|
+
- `--minimum-alpha` `option`:可选的一致性阈值;按 Krippendorff α 置信区间下界评估
|
|
172
173
|
- `--reports-dir` `option`:只读取指定 Core 报告目录(默认当前项目 + 全局)
|
|
173
174
|
- `--seed` `option`:bootstrap seed,可复现
|
|
174
175
|
- `--target` `option`:显式选择 Core target ID。
|
|
@@ -274,7 +275,7 @@ omk init [targetDir] [flags]
|
|
|
274
275
|
|
|
275
276
|
- `--force` `boolean`:允许覆盖目标目录中已有的 omk 脚手架文件
|
|
276
277
|
- `--lang` `option` (默认 `zh`):输出语言 zh|en,优先级 CLI > OMK_LANG env > zh。
|
|
277
|
-
- `--samples` `3|20` (默认 `3`):官方起步用例数量:3 条用于快速跑通,20
|
|
278
|
+
- `--samples` `3|20` (默认 `3`):官方起步用例数量:3 条用于快速跑通,20 条用于达到默认启发式证据下限
|
|
278
279
|
|
|
279
280
|
**示例:**
|
|
280
281
|
|
|
@@ -290,7 +291,7 @@ omk init
|
|
|
290
291
|
omk init my-project
|
|
291
292
|
```
|
|
292
293
|
|
|
293
|
-
>
|
|
294
|
+
> 使用达到默认启发式证据下限的 20 条官方用例初始化
|
|
294
295
|
|
|
295
296
|
```bash
|
|
296
297
|
omk init my-project --samples 20
|
|
@@ -10,6 +10,7 @@ export default class EvalGoldCompare extends BaseCommand {
|
|
|
10
10
|
target: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
11
|
evaluator: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
12
|
metric: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
'minimum-alpha': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
14
|
'trial-index': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
15
|
'reports-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
16
|
'bootstrap-samples': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -2,7 +2,7 @@ import { resolve } from 'node:path';
|
|
|
2
2
|
import { Args, Flags } from '@oclif/core';
|
|
3
3
|
import { BaseCommand } from '../../../oclif/base-command.js';
|
|
4
4
|
import { LANG_FLAG, bilingual } from '../../../oclif/i18n.js';
|
|
5
|
-
import { integerStringParser } from '../../../oclif/parsers.js';
|
|
5
|
+
import { integerStringParser, numberStringParser } from '../../../oclif/parsers.js';
|
|
6
6
|
import { CliExit } from '../../../lib/cli-exit.js';
|
|
7
7
|
import { projectReportsDir, globalReportsDir } from '../../../../evidence/storage/directories.js';
|
|
8
8
|
export default class EvalGoldCompare extends BaseCommand {
|
|
@@ -33,6 +33,13 @@ export default class EvalGoldCompare extends BaseCommand {
|
|
|
33
33
|
metric: Flags.string({
|
|
34
34
|
description: bilingual({ zh: '显式选择 Core metric ID。', en: 'Explicit Core metric ID.' }),
|
|
35
35
|
}),
|
|
36
|
+
'minimum-alpha': Flags.string({
|
|
37
|
+
description: bilingual({
|
|
38
|
+
zh: '可选的一致性阈值;按 Krippendorff α 置信区间下界评估',
|
|
39
|
+
en: 'Optional agreement threshold, assessed against the Krippendorff alpha CI lower bound',
|
|
40
|
+
}),
|
|
41
|
+
parse: numberStringParser('--minimum-alpha', { min: -1, max: 1 }),
|
|
42
|
+
}),
|
|
36
43
|
'trial-index': Flags.string({
|
|
37
44
|
description: bilingual({ zh: '显式选择 trial index。', en: 'Explicit trial index.' }),
|
|
38
45
|
parse: integerStringParser('--trial-index', { min: 0 }),
|
|
@@ -61,26 +68,31 @@ export default class EvalGoldCompare extends BaseCommand {
|
|
|
61
68
|
await this.runWithCliExit(async () => {
|
|
62
69
|
const runId = args.runId;
|
|
63
70
|
if (!runId) {
|
|
64
|
-
console.error(
|
|
71
|
+
console.error(lang === 'zh'
|
|
72
|
+
? '用法:omk eval gold compare <runId> --gold-dir <dir> --target <id> --evaluator <id> --metric <id>'
|
|
73
|
+
: 'Usage: omk eval gold compare <runId> --gold-dir <dir> --target <id> --evaluator <id> --metric <id>');
|
|
65
74
|
throw new CliExit(1);
|
|
66
75
|
}
|
|
67
76
|
const goldDir = flags['gold-dir'];
|
|
68
77
|
if (!goldDir) {
|
|
69
|
-
console.error('--gold-dir is required');
|
|
78
|
+
console.error(lang === 'zh' ? '必须提供 --gold-dir。' : '--gold-dir is required.');
|
|
70
79
|
throw new CliExit(1);
|
|
71
80
|
}
|
|
72
|
-
const { loadGoldDataset } = await import('../../../../eval-workflows/gold/dataset.js');
|
|
81
|
+
const { loadGoldDataset, validationIssueMessage } = await import('../../../../eval-workflows/gold/dataset.js');
|
|
73
82
|
const { createNodeCoreContentStore, createNodeCoreRunArtifactStore, createOverlayCoreRunArtifactStore, } = await import('../../../../eval-workflows/artifact-store/index.js');
|
|
74
83
|
const { compareGoldToCoreRun } = await import('../../../../eval-workflows/projections/gold.js');
|
|
75
84
|
const { dataset, issues } = loadGoldDataset(goldDir);
|
|
76
85
|
if (!dataset) {
|
|
77
|
-
console.error('Cannot load gold dataset:');
|
|
86
|
+
console.error(lang === 'zh' ? '无法加载 gold dataset:' : 'Cannot load gold dataset:');
|
|
78
87
|
for (const i of issues)
|
|
79
|
-
console.error(` - ${i
|
|
88
|
+
console.error(` - ${validationIssueMessage(i, lang)}`);
|
|
80
89
|
throw new CliExit(1);
|
|
81
90
|
}
|
|
82
|
-
for (const i of issues)
|
|
83
|
-
console.error(
|
|
91
|
+
for (const i of issues) {
|
|
92
|
+
console.error(lang === 'zh'
|
|
93
|
+
? `警告:${validationIssueMessage(i, lang)}`
|
|
94
|
+
: `Warning: ${validationIssueMessage(i, lang)}`);
|
|
95
|
+
}
|
|
84
96
|
const storeOf = (directory) => createNodeCoreRunArtifactStore(directory, {
|
|
85
97
|
contentResolver: createNodeCoreContentStore(resolve(directory, 'content')),
|
|
86
98
|
});
|
|
@@ -90,8 +102,8 @@ export default class EvalGoldCompare extends BaseCommand {
|
|
|
90
102
|
const source = await store.get(runId);
|
|
91
103
|
if (source === undefined) {
|
|
92
104
|
console.error(lang === 'zh'
|
|
93
|
-
? `找不到 Core run「${runId}
|
|
94
|
-
: `Core run "${runId}" was not found
|
|
105
|
+
? `找不到 Core run「${runId}」。`
|
|
106
|
+
: `Core run "${runId}" was not found.`);
|
|
95
107
|
throw new CliExit(1);
|
|
96
108
|
}
|
|
97
109
|
if (!flags.target || !flags.evaluator || !flags.metric) {
|
|
@@ -114,6 +126,9 @@ export default class EvalGoldCompare extends BaseCommand {
|
|
|
114
126
|
}),
|
|
115
127
|
},
|
|
116
128
|
bootstrapSamples: samples,
|
|
129
|
+
...(flags['minimum-alpha'] === undefined ? {} : {
|
|
130
|
+
minimumAlpha: Number(flags['minimum-alpha']),
|
|
131
|
+
}),
|
|
117
132
|
...(Number.isFinite(seedVal) ? { bootstrapSeed: seedVal } : {}),
|
|
118
133
|
});
|
|
119
134
|
console.log(JSON.stringify(result, null, 2));
|
|
@@ -25,18 +25,22 @@ export default class EvalGoldValidate extends BaseCommand {
|
|
|
25
25
|
await this.runWithCliExit(async () => {
|
|
26
26
|
const dir = args.dir;
|
|
27
27
|
if (!dir) {
|
|
28
|
-
console.error(
|
|
28
|
+
console.error(lang === 'zh'
|
|
29
|
+
? '用法:omk eval gold validate <dir>'
|
|
30
|
+
: 'Usage: omk eval gold validate <dir>');
|
|
29
31
|
throw new CliExit(1);
|
|
30
32
|
}
|
|
31
33
|
const { validateGoldDataset } = await import('../../../../eval-workflows/gold/cli.js');
|
|
32
|
-
const result = validateGoldDataset(dir);
|
|
34
|
+
const result = validateGoldDataset(dir, lang);
|
|
33
35
|
if (result.ok) {
|
|
34
36
|
console.log(lang === 'zh'
|
|
35
37
|
? `✓ gold dataset OK,共 ${result.sampleCount} 条标注`
|
|
36
38
|
: `✓ gold dataset OK — ${result.sampleCount} annotations`);
|
|
37
39
|
return;
|
|
38
40
|
}
|
|
39
|
-
console.error(
|
|
41
|
+
console.error(lang === 'zh'
|
|
42
|
+
? `✗ gold dataset 存在 ${result.issues.length} 个问题:`
|
|
43
|
+
: `✗ gold dataset has ${result.issues.length} issue(s):`);
|
|
40
44
|
for (const msg of result.issues)
|
|
41
45
|
console.error(` - ${msg}`);
|
|
42
46
|
throw new CliExit(1);
|
|
@@ -174,13 +174,13 @@ async function runEval(_args, flags, lang) {
|
|
|
174
174
|
}
|
|
175
175
|
export default class Eval extends BaseCommand {
|
|
176
176
|
static description = bilingual({
|
|
177
|
-
zh: '
|
|
177
|
+
zh: '跑评测:用一个对照组与多个实验组 skill 做对照试验,生成判定报告。',
|
|
178
178
|
en: 'Run evaluation: control vs treatment(s) comparison, produce verdict report.',
|
|
179
179
|
});
|
|
180
180
|
static examples = [
|
|
181
181
|
{
|
|
182
182
|
description: bilingual({
|
|
183
|
-
zh: '
|
|
183
|
+
zh: '最简对照:baseline 作为对照组,my-skill 作为实验组',
|
|
184
184
|
en: 'Minimal A/B: baseline vs my-skill',
|
|
185
185
|
}),
|
|
186
186
|
command: '<%= config.bin %> eval --control baseline --treatment my-skill',
|
|
@@ -197,23 +197,23 @@ export default class Eval extends BaseCommand {
|
|
|
197
197
|
lang: LANG_FLAG,
|
|
198
198
|
// ── 实验角色 ──
|
|
199
199
|
control: Flags.string({
|
|
200
|
-
description: bilingual({ zh: 'control variant 表达式(仅 artifact 身份)', en: 'Control variant expr (artifact identity only)' }),
|
|
200
|
+
description: bilingual({ zh: '对照组(control)的 variant 表达式(仅 artifact 身份)', en: 'Control variant expr (artifact identity only)' }),
|
|
201
201
|
}),
|
|
202
202
|
treatment: Flags.string({
|
|
203
203
|
description: bilingual({
|
|
204
|
-
zh: 'treatment variant 列表,逗号分隔(仅 artifact 身份)',
|
|
204
|
+
zh: '实验组(treatment)的 variant 列表,逗号分隔(仅 artifact 身份)',
|
|
205
205
|
en: 'Treatment variants, comma-separated (artifact identity only)',
|
|
206
206
|
}),
|
|
207
207
|
}),
|
|
208
208
|
'control-cwd': Flags.string({
|
|
209
209
|
description: bilingual({
|
|
210
|
-
zh: 'control
|
|
210
|
+
zh: '对照组(control)的 runtime context 目录',
|
|
211
211
|
en: 'Runtime context dir for control',
|
|
212
212
|
}),
|
|
213
213
|
}),
|
|
214
214
|
'treatment-cwd': Flags.string({
|
|
215
215
|
description: bilingual({
|
|
216
|
-
zh: 'treatment
|
|
216
|
+
zh: '实验组(treatment)的 runtime context 目录列表,逗号分隔、与 --treatment 按序对齐(空位 = 无 cwd)',
|
|
217
217
|
en: 'Runtime context dirs for treatments, comma-separated, index-aligned with --treatment (blank = none)',
|
|
218
218
|
}),
|
|
219
219
|
}),
|
|
@@ -222,7 +222,7 @@ export default class Eval extends BaseCommand {
|
|
|
222
222
|
}),
|
|
223
223
|
samples: Flags.string({
|
|
224
224
|
description: bilingual({
|
|
225
|
-
zh: '
|
|
225
|
+
zh: '用例路径。自动发现项目级或单个实验组(treatment)目录 skill 下的 eval-samples.json / eval-samples.yaml;显式路径可为 JSON / YAML 文件或分片目录。',
|
|
226
226
|
en: 'Samples path. Auto-discovers eval-samples.json / eval-samples.yaml at project scope or for a single directory-skill treatment; an explicit path may be a JSON / YAML file or split directory.',
|
|
227
227
|
}),
|
|
228
228
|
}),
|
|
@@ -256,7 +256,7 @@ export default class Eval extends BaseCommand {
|
|
|
256
256
|
}),
|
|
257
257
|
// ── 评测 toggle ──
|
|
258
258
|
'no-judge': Flags.boolean({
|
|
259
|
-
description: bilingual({ zh: '跳过 LLM
|
|
259
|
+
description: bilingual({ zh: '跳过 LLM 评委', en: 'Skip LLM judge' }),
|
|
260
260
|
}),
|
|
261
261
|
'no-cache': Flags.boolean({
|
|
262
262
|
description: bilingual({ zh: '跳过 executor cache', en: 'Skip executor cache' }),
|
|
@@ -277,7 +277,7 @@ export default class Eval extends BaseCommand {
|
|
|
277
277
|
}),
|
|
278
278
|
batch: Flags.boolean({
|
|
279
279
|
description: bilingual({
|
|
280
|
-
zh: 'batch
|
|
280
|
+
zh: 'batch 模式:baseline 作为对照组,逐个 skill 作为实验组',
|
|
281
281
|
en: 'Batch mode: baseline vs each skill',
|
|
282
282
|
}),
|
|
283
283
|
}),
|
|
@@ -300,7 +300,7 @@ export default class Eval extends BaseCommand {
|
|
|
300
300
|
description: bilingual({ zh: '详细日志', en: 'Verbose logging' }),
|
|
301
301
|
}),
|
|
302
302
|
retry: Flags.string({
|
|
303
|
-
description: bilingual({ zh: '
|
|
303
|
+
description: bilingual({ zh: '单用例失败重试次数', en: 'Per-sample retry count' }),
|
|
304
304
|
parse: integerStringParser('--retry', { min: 0 }),
|
|
305
305
|
}),
|
|
306
306
|
resume: Flags.string({
|
|
@@ -333,7 +333,10 @@ export default class Eval extends BaseCommand {
|
|
|
333
333
|
}),
|
|
334
334
|
// ── eval-runner extra ──
|
|
335
335
|
repeat: Flags.string({
|
|
336
|
-
description: bilingual({
|
|
336
|
+
description: bilingual({
|
|
337
|
+
zh: '预先固定 Evaluation Series 的独立 run 数',
|
|
338
|
+
en: 'Predeclare the independent run count for the Evaluation Series',
|
|
339
|
+
}),
|
|
337
340
|
parse: integerStringParser('--repeat', { min: 1 }),
|
|
338
341
|
}),
|
|
339
342
|
'holdout-ratio': Flags.string({
|
|
@@ -344,7 +347,7 @@ export default class Eval extends BaseCommand {
|
|
|
344
347
|
parse: numberStringParser('--holdout-ratio', { min: 0, max: 1 }),
|
|
345
348
|
}),
|
|
346
349
|
'judge-repeat': Flags.string({
|
|
347
|
-
description: bilingual({ zh: '
|
|
350
|
+
description: bilingual({ zh: '每个维度由评委评价 N 次', en: 'Judge each dim N times' }),
|
|
348
351
|
parse: integerStringParser('--judge-repeat', { min: 1 }),
|
|
349
352
|
}),
|
|
350
353
|
bootstrap: Flags.boolean({
|
|
@@ -365,16 +368,16 @@ export default class Eval extends BaseCommand {
|
|
|
365
368
|
parse: numberStringParser('--budget-usd', { minExclusive: 0 }),
|
|
366
369
|
}),
|
|
367
370
|
'budget-per-sample-usd': Flags.string({
|
|
368
|
-
description: bilingual({ zh: '
|
|
371
|
+
description: bilingual({ zh: '单用例预算上限 USD(必须 > 0,不传则无上限)', en: 'Per-sample budget cap USD (must be > 0; omit for no cap)' }),
|
|
369
372
|
parse: numberStringParser('--budget-per-sample-usd', { minExclusive: 0 }),
|
|
370
373
|
}),
|
|
371
374
|
'budget-per-sample-ms': Flags.string({
|
|
372
|
-
description: bilingual({ zh: '
|
|
375
|
+
description: bilingual({ zh: '单用例时长上限 ms(必须 > 0,不传则无上限)', en: 'Per-sample time cap ms (must be > 0; omit for no cap)' }),
|
|
373
376
|
parse: integerStringParser('--budget-per-sample-ms', { min: 1 }),
|
|
374
377
|
}),
|
|
375
378
|
threshold: Flags.string({
|
|
376
379
|
description: bilingual({
|
|
377
|
-
zh:
|
|
380
|
+
zh: `判定阈值,默认 ${DEFAULT_GATE_THRESHOLD}`,
|
|
378
381
|
en: `Verdict threshold, default ${DEFAULT_GATE_THRESHOLD}`,
|
|
379
382
|
}),
|
|
380
383
|
parse: numberStringParser('--threshold'),
|
|
@@ -385,12 +388,12 @@ export default class Eval extends BaseCommand {
|
|
|
385
388
|
}),
|
|
386
389
|
'report-only': Flags.boolean({
|
|
387
390
|
description: bilingual({
|
|
388
|
-
zh: '
|
|
391
|
+
zh: '生成报告并打印判定,但始终 exit 0(不参与 CI gate)。',
|
|
389
392
|
en: 'Produce the report and print verdict, but always exit 0 (no CI gate).',
|
|
390
393
|
}),
|
|
391
394
|
}),
|
|
392
395
|
'no-gate': Flags.boolean({
|
|
393
|
-
description: bilingual({ zh: '
|
|
396
|
+
description: bilingual({ zh: '关闭判定门禁', en: 'Disable verdict gate' }),
|
|
394
397
|
}),
|
|
395
398
|
'no-evidence': Flags.boolean({
|
|
396
399
|
description: bilingual({
|
|
@@ -77,8 +77,8 @@ export default class Init extends BaseCommand {
|
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
79
|
description: bilingual({
|
|
80
|
-
zh: '
|
|
81
|
-
en: 'Initialize with
|
|
80
|
+
zh: '使用达到默认启发式证据下限的 20 条官方用例初始化',
|
|
81
|
+
en: 'Initialize with 20 first-party samples that meet the default heuristic evidence floor',
|
|
82
82
|
}),
|
|
83
83
|
command: '<%= config.bin %> init my-project --samples 20',
|
|
84
84
|
},
|
|
@@ -108,8 +108,8 @@ export default class Init extends BaseCommand {
|
|
|
108
108
|
lang: LANG_FLAG,
|
|
109
109
|
samples: Flags.string({
|
|
110
110
|
description: bilingual({
|
|
111
|
-
zh: '官方起步用例数量:3 条用于快速跑通,20
|
|
112
|
-
en: 'Number of first-party starter samples: 3 for a quick run, 20 to meet the
|
|
111
|
+
zh: '官方起步用例数量:3 条用于快速跑通,20 条用于达到默认启发式证据下限',
|
|
112
|
+
en: 'Number of first-party starter samples: 3 for a quick run, 20 to meet the default heuristic evidence floor',
|
|
113
113
|
}),
|
|
114
114
|
options: [String(DEFAULT_INIT_SAMPLE_COUNT), String(FULL_INIT_SAMPLE_COUNT)],
|
|
115
115
|
default: String(DEFAULT_INIT_SAMPLE_COUNT),
|
|
@@ -9,11 +9,11 @@ import { resolveObserveHealthDir, projectObserveHealthDir, globalObserveHealthDi
|
|
|
9
9
|
import { DEFAULT_GLOBAL_OBSERVATIONS_DIR } from '../../observability/inbox/index.js';
|
|
10
10
|
import { openWorkbench } from '../lib/open-workbench.js';
|
|
11
11
|
// dev / browser-open 测试需要 mock `node:child_process` + `node:os`,通过 in-process
|
|
12
|
-
// import 直接调用。把业务作为 module-level helper export 从 Command file
|
|
13
|
-
//
|
|
12
|
+
// import 直接调用。把业务作为 module-level helper export 从 Command file 暴露,
|
|
13
|
+
// 便于测试命令行为,同时保持产品命令树语义干净。
|
|
14
14
|
export async function runStudio(_args, flags, lang) {
|
|
15
|
-
// reports 读取目录:显式 --reports-dir 固定该目录;--global
|
|
16
|
-
//
|
|
15
|
+
// reports 读取目录:显式 --reports-dir 固定该目录;--global 钉全局;默认聚合
|
|
16
|
+
// 当前项目与全局 Core run。
|
|
17
17
|
const reportsDirOpt = flags['reports-dir']
|
|
18
18
|
? resolve(flags['reports-dir'])
|
|
19
19
|
: flags.global
|
|
@@ -27,8 +27,8 @@ export const initDict = {
|
|
|
27
27
|
en: ' 2. Read the report verdict and Next line: 3 samples only prove the workflow, so UNDERPOWERED is expected; use --samples 20 in a new empty directory for the full starter set.',
|
|
28
28
|
},
|
|
29
29
|
'cli.init.next_step_report_full': {
|
|
30
|
-
zh: ' 2. 看报告里的 verdict 和“下一步”:20
|
|
31
|
-
en: ' 2. Read the report verdict and Next line: 20 samples meet the
|
|
30
|
+
zh: ' 2. 看报告里的 verdict 和“下一步”:20 条用例达到默认启发式证据下限,但不等于完成先验功效规划;其来源是 llm-generated,发布前应人工复核并替换为真实领域用例。',
|
|
31
|
+
en: ' 2. Read the report verdict and Next line: 20 samples meet the default heuristic evidence floor, not an a priori power plan; they are llm-generated and must be reviewed or replaced with real domain cases before release.',
|
|
32
32
|
},
|
|
33
33
|
'cli.init.next_step_executor': {
|
|
34
34
|
zh: ' executor / judge 会按运行环境选择;Codex 任务自动使用本机 Codex 配置。也可用 OMK_EXECUTOR / OMK_MODEL 固定环境偏好,详见 https://oh-my-knowledge.pages.dev/zh/reference/executors。',
|
|
@@ -64,8 +64,8 @@ export const runDict = {
|
|
|
64
64
|
en: '⚠ --bootstrap-samples "{value}" is invalid (expected an integer ≥ 100), falling back to 1000\n',
|
|
65
65
|
},
|
|
66
66
|
'cli.run.bootstrap_samples_too_large': {
|
|
67
|
-
zh: '⚠ --bootstrap-samples {n}
|
|
68
|
-
en: '⚠ --bootstrap-samples {n} is large and may take several seconds.
|
|
67
|
+
zh: '⚠ --bootstrap-samples {n} 较大,可能耗时数秒。有限重采样误差会单独进入显著性证据。\n',
|
|
68
|
+
en: '⚠ --bootstrap-samples {n} is large and may take several seconds. Finite-resampling error is reported separately in significance evidence.\n',
|
|
69
69
|
},
|
|
70
70
|
'cli.run.dry_run_no_scores': {
|
|
71
71
|
zh: 'eval dry-run:仅预览任务,不检查分数。下一步:确认任务无误后,去掉 --dry-run 运行正式评测。',
|
|
@@ -45,6 +45,9 @@ function requestFor(input, projectRoot) {
|
|
|
45
45
|
judgeMembers: input.config.judgeModels.map((judge) => ({
|
|
46
46
|
executorId: judge.executor,
|
|
47
47
|
model: judge.model,
|
|
48
|
+
...(judge.deploymentRevision === undefined
|
|
49
|
+
? {}
|
|
50
|
+
: { deploymentRevision: judge.deploymentRevision }),
|
|
48
51
|
})),
|
|
49
52
|
presentation: {
|
|
50
53
|
projectOutputDirectoryLocator: projectReportsDir(),
|