niceeval 0.15.1-canary.76 → 0.16.1
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/INDEX.md +45 -40
- package/dist/adapter-execution-trace.cjs.map +1 -1
- package/dist/adapter-execution-trace.d.cts +26 -0
- package/dist/adapter-execution-trace.d.mts +26 -0
- package/dist/adapter-execution-trace.d.ts +26 -0
- package/dist/adapter-usage.cjs.map +1 -1
- package/dist/adapter-usage.d.cts +9 -0
- package/dist/adapter-usage.d.mts +9 -0
- package/dist/adapter-usage.d.ts +9 -0
- package/dist/adapter.cjs +19 -4
- package/dist/adapter.cjs.map +1 -1
- package/dist/adapter.d.cts +37 -12
- package/dist/adapter.d.mts +37 -12
- package/dist/adapter.d.ts +37 -12
- package/dist/agents/ai-sdk.cjs +3 -0
- package/dist/agents/ai-sdk.cjs.map +1 -1
- package/dist/agents/bub.cjs +3 -0
- package/dist/agents/bub.cjs.map +1 -1
- package/dist/agents/claude-code-native.cjs +28 -2
- package/dist/agents/claude-code-native.cjs.map +1 -1
- package/dist/agents/claude-code.cjs +3 -0
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/codex.cjs +3 -0
- package/dist/agents/codex.cjs.map +1 -1
- package/dist/agents/coding-cli-versions.cjs +9 -10
- package/dist/agents/coding-cli-versions.cjs.map +1 -1
- package/dist/agents/coding-cli-versions.d.cts +1 -1
- package/dist/agents/coding-cli-versions.d.mts +1 -1
- package/dist/agents/coding-cli-versions.d.ts +1 -1
- package/dist/agents/deepseek-harness.cjs +3 -0
- package/dist/agents/deepseek-harness.cjs.map +1 -1
- package/dist/agents/hermes.cjs +3 -0
- package/dist/agents/hermes.cjs.map +1 -1
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +3 -2
- package/dist/agents/index.d.mts +3 -2
- package/dist/agents/index.d.ts +3 -2
- package/dist/agents/omp.cjs +3 -0
- package/dist/agents/omp.cjs.map +1 -1
- package/dist/agents/openai-compat.cjs +6 -0
- package/dist/agents/openai-compat.cjs.map +1 -1
- package/dist/agents/openclaw.cjs +3 -0
- package/dist/agents/openclaw.cjs.map +1 -1
- package/dist/agents/opencode.cjs +3 -0
- package/dist/agents/opencode.cjs.map +1 -1
- package/dist/agents/sdk-streams.cjs +9 -0
- package/dist/agents/sdk-streams.cjs.map +1 -1
- package/dist/agents/ui-message-stream.cjs +3 -0
- package/dist/agents/ui-message-stream.cjs.map +1 -1
- package/dist/assertions/api.cjs.map +1 -1
- package/dist/assertions/api.d.cts +27 -5
- package/dist/assertions/api.d.mts +27 -5
- package/dist/assertions/api.d.ts +27 -5
- package/dist/assertions/collection.cjs +6 -0
- package/dist/assertions/collection.cjs.map +1 -1
- package/dist/assertions/collection.d.cts +4 -2
- package/dist/assertions/collection.d.mts +4 -2
- package/dist/assertions/collection.d.ts +4 -2
- package/dist/assertions/collection.js +12 -8
- package/dist/assertions/context-match.cjs +70 -0
- package/dist/assertions/context-match.cjs.map +1 -0
- package/dist/assertions/context-match.d.cts +107 -0
- package/dist/assertions/context-match.d.mts +107 -0
- package/dist/assertions/context-match.d.ts +107 -0
- package/dist/assertions/context-match.js +12 -0
- package/dist/assertions/context-match.js.map +1 -0
- package/dist/assertions/full-content.cjs +109 -0
- package/dist/assertions/full-content.cjs.map +1 -0
- package/dist/assertions/full-content.d.cts +6 -0
- package/dist/assertions/full-content.d.mts +6 -0
- package/dist/assertions/full-content.d.ts +6 -0
- package/dist/assertions/full-content.js +12 -0
- package/dist/assertions/full-content.js.map +1 -0
- package/dist/assertions/judge-presets.cjs +2 -34
- package/dist/assertions/judge-presets.cjs.map +1 -1
- package/dist/assertions/judge-presets.d.cts +6 -9
- package/dist/assertions/judge-presets.d.mts +6 -9
- package/dist/assertions/judge-presets.d.ts +6 -9
- package/dist/assertions/judge-presets.js +8 -8
- package/dist/assertions/judge.cjs +107 -29
- package/dist/assertions/judge.cjs.map +1 -1
- package/dist/assertions/judge.d.cts +2 -0
- package/dist/assertions/judge.d.mts +2 -0
- package/dist/assertions/judge.d.ts +2 -0
- package/dist/assertions/match.cjs +244 -5
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +43 -3
- package/dist/assertions/match.d.mts +43 -3
- package/dist/assertions/match.d.ts +43 -3
- package/dist/assertions/match.js +88 -78
- package/dist/assertions/material.cjs +520 -0
- package/dist/assertions/material.cjs.map +1 -0
- package/dist/assertions/material.d.cts +56 -0
- package/dist/assertions/material.d.mts +56 -0
- package/dist/assertions/material.d.ts +56 -0
- package/dist/assertions/material.js +20 -0
- package/dist/assertions/material.js.map +1 -0
- package/dist/assertions/record/attachment.cjs +5 -2
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/codec.cjs +2 -1
- package/dist/assertions/record/codec.cjs.map +1 -1
- package/dist/assertions/record/model.cjs.map +1 -1
- package/dist/assertions/record/model.d.cts +6 -1
- package/dist/assertions/record/model.d.mts +6 -1
- package/dist/assertions/record/model.d.ts +6 -1
- package/dist/assertions/runtime.cjs +207 -14
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/assertions/runtime.d.cts +9 -0
- package/dist/assertions/runtime.d.mts +9 -0
- package/dist/assertions/runtime.d.ts +9 -0
- package/dist/assertions/runtime.js +14 -8
- package/dist/assertions/score-match-audit.cjs +18 -8
- package/dist/assertions/score-match-audit.cjs.map +1 -1
- package/dist/assertions/score-match-gateway.cjs +83 -25
- package/dist/assertions/score-match-gateway.cjs.map +1 -1
- package/dist/assertions/score-match-gateway.d.cts +2 -0
- package/dist/assertions/score-match-gateway.d.mts +2 -0
- package/dist/assertions/score-match-gateway.d.ts +2 -0
- package/dist/assertions/value-composition.test-d.cjs +77 -0
- package/dist/assertions/value-composition.test-d.cjs.map +1 -0
- package/dist/assertions/value-composition.test-d.d.cts +1 -0
- package/dist/assertions/value-composition.test-d.d.mts +1 -0
- package/dist/assertions/value-composition.test-d.d.ts +1 -0
- package/dist/assertions/value-composition.test-d.js +4 -0
- package/dist/assertions/value-composition.test-d.js.map +1 -0
- package/dist/context/assert-first.cjs +207 -213
- package/dist/context/assert-first.cjs.map +1 -1
- package/dist/context/assert-first.d.cts +49 -23
- package/dist/context/assert-first.d.mts +49 -23
- package/dist/context/assert-first.d.ts +49 -23
- package/dist/context/session.cjs +111 -9
- package/dist/context/session.cjs.map +1 -1
- package/dist/context/session.d.cts +18 -0
- package/dist/context/session.d.mts +18 -0
- package/dist/context/session.d.ts +18 -0
- package/dist/define.cjs +17 -1
- package/dist/define.cjs.map +1 -1
- package/dist/eval/cli/contribution.cjs +2 -0
- package/dist/eval/cli/contribution.cjs.map +1 -1
- package/dist/eval/host/index.cjs +2 -0
- package/dist/eval/host/index.cjs.map +1 -1
- package/dist/eval/record/evaluation.cjs +3 -0
- package/dist/eval/record/evaluation.cjs.map +1 -1
- package/dist/eval/record/membership-provenance.d.cts +15 -15
- package/dist/eval/record/membership-provenance.d.mts +15 -15
- package/dist/eval/record/membership-provenance.d.ts +15 -15
- package/dist/eval/record/score.cjs +7 -0
- package/dist/eval/record/score.cjs.map +1 -1
- package/dist/eval/record/sealed-assertion.cjs +3 -0
- package/dist/eval/record/sealed-assertion.cjs.map +1 -1
- package/dist/eval/record/verdict.cjs +7 -0
- package/dist/eval/record/verdict.cjs.map +1 -1
- package/dist/expect/index.cjs +8 -2
- package/dist/expect/index.cjs.map +1 -1
- package/dist/expect/index.d.cts +9 -4
- package/dist/expect/index.d.mts +9 -4
- package/dist/expect/index.d.ts +9 -4
- package/dist/expect/index.js +72 -62
- package/dist/expect/index.mjs +72 -62
- package/dist/experiment/host/cli/contribution.cjs +37 -23
- package/dist/experiment/host/cli/contribution.cjs.map +1 -1
- package/dist/experiment/host/cli/contribution.d.cts +9 -1
- package/dist/experiment/host/cli/contribution.d.mts +9 -1
- package/dist/experiment/host/cli/contribution.d.ts +9 -1
- package/dist/experiment/host/current.cjs +74 -0
- package/dist/experiment/host/current.cjs.map +1 -0
- package/dist/experiment/host/current.d.cts +33 -0
- package/dist/experiment/host/current.d.mts +33 -0
- package/dist/experiment/host/current.d.ts +33 -0
- package/dist/experiment/host/current.js +10 -0
- package/dist/experiment/host/current.js.map +1 -0
- package/dist/experiment/host/index.cjs +17 -174
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/experiment/host/index.d.cts +8 -54
- package/dist/experiment/host/index.d.mts +8 -54
- package/dist/experiment/host/index.d.ts +8 -54
- package/dist/experiment/host/operations.cjs +33 -10
- package/dist/experiment/host/operations.cjs.map +1 -1
- package/dist/experiment/host/operations.d.cts +29 -1
- package/dist/experiment/host/operations.d.mts +29 -1
- package/dist/experiment/host/operations.d.ts +29 -1
- package/dist/experiment/host/operations.js +6 -4
- package/dist/experiment/host/requirements.cjs +3 -0
- package/dist/experiment/host/requirements.cjs.map +1 -0
- package/dist/experiment/host/requirements.d.cts +3 -0
- package/dist/experiment/host/requirements.d.mts +3 -0
- package/dist/experiment/host/requirements.d.ts +3 -0
- package/dist/experiment/host/requirements.js +4 -0
- package/dist/experiment/host/requirements.js.map +1 -0
- package/dist/experiment/host/runtime.cjs +179 -0
- package/dist/experiment/host/runtime.cjs.map +1 -0
- package/dist/experiment/host/runtime.d.cts +79 -0
- package/dist/experiment/host/runtime.d.mts +79 -0
- package/dist/experiment/host/runtime.d.ts +79 -0
- package/dist/experiment/host/runtime.js +6 -0
- package/dist/experiment/host/runtime.js.map +1 -0
- package/dist/experiment/host/types.cjs.map +1 -1
- package/dist/experiment/host/types.d.cts +17 -16
- package/dist/experiment/host/types.d.mts +17 -16
- package/dist/experiment/host/types.d.ts +17 -16
- package/dist/fresh-import.cjs +2 -1
- package/dist/fresh-import.cjs.map +1 -1
- package/dist/index.cjs +4 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -6
- package/dist/index.d.mts +12 -6
- package/dist/index.d.ts +12 -6
- package/dist/index.js +32 -30
- package/dist/index.mjs +32 -30
- package/dist/inspection/artifacts.cjs +83 -54
- package/dist/inspection/artifacts.cjs.map +1 -1
- package/dist/inspection/artifacts.d.cts +8 -0
- package/dist/inspection/artifacts.d.mts +8 -0
- package/dist/inspection/artifacts.d.ts +8 -0
- package/dist/inspection/artifacts.js +2 -0
- package/dist/inspection/assertions.cjs +4 -1
- package/dist/inspection/assertions.cjs.map +1 -1
- package/dist/inspection/cli/contribution.cjs +27 -4
- package/dist/inspection/cli/contribution.cjs.map +1 -1
- package/dist/inspection/cli/contribution.d.cts +2 -1
- package/dist/inspection/cli/contribution.d.mts +2 -1
- package/dist/inspection/cli/contribution.d.ts +2 -1
- package/dist/inspection/execution-traces.cjs +114 -8
- package/dist/inspection/execution-traces.cjs.map +1 -1
- package/dist/inspection/execution-traces.d.cts +38 -0
- package/dist/inspection/execution-traces.d.mts +38 -0
- package/dist/inspection/execution-traces.d.ts +38 -0
- package/dist/inspection/facts.cjs +12 -0
- package/dist/inspection/facts.cjs.map +1 -1
- package/dist/inspection/limits.cjs +5 -1
- package/dist/inspection/limits.cjs.map +1 -1
- package/dist/inspection/limits.d.cts +4 -0
- package/dist/inspection/limits.d.mts +4 -0
- package/dist/inspection/limits.d.ts +4 -0
- package/dist/inspection/limits.js +6 -2
- package/dist/inspection/overview.cjs +74 -33
- package/dist/inspection/overview.cjs.map +1 -1
- package/dist/inspection/overview.d.cts +19 -1
- package/dist/inspection/overview.d.mts +19 -1
- package/dist/inspection/overview.d.ts +19 -1
- package/dist/inspection/overview.js +4 -2
- package/dist/inspection/project-input.cjs +9 -0
- package/dist/inspection/project-input.cjs.map +1 -0
- package/dist/inspection/project-input.d.cts +20 -0
- package/dist/inspection/project-input.d.mts +20 -0
- package/dist/inspection/project-input.d.ts +20 -0
- package/dist/inspection/project-input.js +8 -0
- package/dist/inspection/project-input.js.map +1 -0
- package/dist/inspection/project-result.cjs +60 -0
- package/dist/inspection/project-result.cjs.map +1 -0
- package/dist/inspection/project-result.d.cts +1264 -0
- package/dist/inspection/project-result.d.mts +1264 -0
- package/dist/inspection/project-result.d.ts +1264 -0
- package/dist/inspection/project-result.js +10 -0
- package/dist/inspection/project-result.js.map +1 -0
- package/dist/inspection/project-source.cjs +109 -0
- package/dist/inspection/project-source.cjs.map +1 -0
- package/dist/inspection/project-source.d.cts +10 -0
- package/dist/inspection/project-source.d.mts +10 -0
- package/dist/inspection/project-source.d.ts +10 -0
- package/dist/inspection/project-source.js +6 -0
- package/dist/inspection/project-source.js.map +1 -0
- package/dist/inspection/project.cjs +100 -0
- package/dist/inspection/project.cjs.map +1 -0
- package/dist/inspection/project.d.cts +3 -0
- package/dist/inspection/project.d.mts +3 -0
- package/dist/inspection/project.d.ts +3 -0
- package/dist/inspection/project.js +6 -0
- package/dist/inspection/project.js.map +1 -0
- package/dist/inspection/protocol.cjs +19 -9
- package/dist/inspection/protocol.cjs.map +1 -1
- package/dist/inspection/protocol.d.cts +5506 -38189
- package/dist/inspection/protocol.d.mts +5506 -38189
- package/dist/inspection/protocol.d.ts +5506 -38189
- package/dist/inspection/public.mjs +896 -84
- package/dist/inspection/query.cjs +2 -0
- package/dist/inspection/query.cjs.map +1 -1
- package/dist/inspection/results.cjs +234 -29
- package/dist/inspection/results.cjs.map +1 -1
- package/dist/inspection/results.d.cts +870 -13
- package/dist/inspection/results.d.mts +870 -13
- package/dist/inspection/results.d.ts +870 -13
- package/dist/inspection/results.js +36 -34
- package/dist/inspection/select.cjs +126 -14
- package/dist/inspection/select.cjs.map +1 -1
- package/dist/inspection/select.d.cts +1 -1
- package/dist/inspection/select.d.mts +1 -1
- package/dist/inspection/select.d.ts +1 -1
- package/dist/inspection/source.cjs +4 -0
- package/dist/inspection/source.cjs.map +1 -1
- package/dist/inspection/sources.cjs +5 -0
- package/dist/inspection/sources.cjs.map +1 -1
- package/dist/inspection/trace.cjs +82 -84
- package/dist/inspection/trace.cjs.map +1 -1
- package/dist/inspection/trace.d.cts +7 -2
- package/dist/inspection/trace.d.mts +7 -2
- package/dist/inspection/trace.d.ts +7 -2
- package/dist/model-slots.cjs +35 -0
- package/dist/model-slots.cjs.map +1 -0
- package/dist/model-slots.d.cts +19 -0
- package/dist/model-slots.d.mts +19 -0
- package/dist/model-slots.d.ts +19 -0
- package/dist/model-slots.js +8 -0
- package/dist/model-slots.js.map +1 -0
- package/dist/o11y/adapter-call-price.cjs +4 -0
- package/dist/o11y/adapter-call-price.cjs.map +1 -1
- package/dist/o11y/adapter-call-price.d.cts +24 -0
- package/dist/o11y/adapter-call-price.d.mts +24 -0
- package/dist/o11y/adapter-call-price.d.ts +24 -0
- package/dist/o11y/adapter-call-price.js +6 -2
- package/dist/o11y/adapter-usage-projection.cjs +158 -0
- package/dist/o11y/adapter-usage-projection.cjs.map +1 -0
- package/dist/o11y/adapter-usage-projection.d.cts +141 -0
- package/dist/o11y/adapter-usage-projection.d.mts +141 -0
- package/dist/o11y/adapter-usage-projection.d.ts +141 -0
- package/dist/o11y/adapter-usage-projection.js +20 -0
- package/dist/o11y/adapter-usage-projection.js.map +1 -0
- package/dist/o11y/eval-usage.cjs +149 -0
- package/dist/o11y/eval-usage.cjs.map +1 -0
- package/dist/o11y/eval-usage.d.cts +46 -0
- package/dist/o11y/eval-usage.d.mts +46 -0
- package/dist/o11y/eval-usage.d.ts +46 -0
- package/dist/o11y/eval-usage.js +8 -0
- package/dist/o11y/eval-usage.js.map +1 -0
- package/dist/o11y/judge-call-price.cjs +62 -0
- package/dist/o11y/judge-call-price.cjs.map +1 -0
- package/dist/o11y/judge-call-price.d.cts +3 -0
- package/dist/o11y/judge-call-price.d.mts +3 -0
- package/dist/o11y/judge-call-price.d.ts +3 -0
- package/dist/o11y/judge-call-price.js +6 -0
- package/dist/o11y/judge-call-price.js.map +1 -0
- package/dist/o11y/judge-usage-projection.cjs +134 -0
- package/dist/o11y/judge-usage-projection.cjs.map +1 -0
- package/dist/o11y/judge-usage-projection.d.cts +18 -0
- package/dist/o11y/judge-usage-projection.d.mts +18 -0
- package/dist/o11y/judge-usage-projection.d.ts +18 -0
- package/dist/o11y/judge-usage-projection.js +20 -0
- package/dist/o11y/judge-usage-projection.js.map +1 -0
- package/dist/o11y/judge-usage-receipt.cjs +135 -0
- package/dist/o11y/judge-usage-receipt.cjs.map +1 -0
- package/dist/o11y/judge-usage-receipt.d.cts +5 -0
- package/dist/o11y/judge-usage-receipt.d.mts +5 -0
- package/dist/o11y/judge-usage-receipt.d.ts +5 -0
- package/dist/o11y/judge-usage-receipt.js +6 -0
- package/dist/o11y/judge-usage-receipt.js.map +1 -0
- package/dist/o11y/judge-usage.cjs +171 -0
- package/dist/o11y/judge-usage.cjs.map +1 -0
- package/dist/o11y/judge-usage.d.cts +35 -0
- package/dist/o11y/judge-usage.d.mts +35 -0
- package/dist/o11y/judge-usage.d.ts +35 -0
- package/dist/o11y/judge-usage.js +6 -0
- package/dist/o11y/judge-usage.js.map +1 -0
- package/dist/plugin/contracts.cjs +2 -0
- package/dist/plugin/contracts.cjs.map +1 -1
- package/dist/plugin/link.cjs +7 -0
- package/dist/plugin/link.cjs.map +1 -1
- package/dist/record/attachment/protocol.cjs +8 -6
- package/dist/record/attachment/protocol.cjs.map +1 -1
- package/dist/record/attachment/protocol.d.cts +10 -0
- package/dist/record/attachment/protocol.d.mts +10 -0
- package/dist/record/attachment/protocol.d.ts +10 -0
- package/dist/record/attachment/protocol.js +38 -36
- package/dist/record/codec/seal-manifest.d.cts +3 -3
- package/dist/record/codec/seal-manifest.d.mts +3 -3
- package/dist/record/codec/seal-manifest.d.ts +3 -3
- package/dist/record/family/adapter-usage/definition.d.cts +1 -0
- package/dist/record/family/adapter-usage/definition.d.mts +1 -0
- package/dist/record/family/adapter-usage/definition.d.ts +1 -0
- package/dist/record/family/adapter-usage/persistence.cjs +1 -1
- package/dist/record/family/adapter-usage/persistence.cjs.map +1 -1
- package/dist/record/family/adapter-usage/persistence.d.cts +2 -1
- package/dist/record/family/adapter-usage/persistence.d.mts +2 -1
- package/dist/record/family/adapter-usage/persistence.d.ts +2 -1
- package/dist/record/family/adapter-usage/schema.cjs +21 -2
- package/dist/record/family/adapter-usage/schema.cjs.map +1 -1
- package/dist/record/family/adapter-usage/schema.d.cts +85 -0
- package/dist/record/family/adapter-usage/schema.d.mts +85 -0
- package/dist/record/family/adapter-usage/schema.d.ts +85 -0
- package/dist/record/family/adapter-usage/schema.js +18 -12
- package/dist/record/family/catalog.cjs +31 -27
- package/dist/record/family/catalog.cjs.map +1 -1
- package/dist/record/family/catalog.d.cts +94 -3
- package/dist/record/family/catalog.d.mts +94 -3
- package/dist/record/family/catalog.d.ts +94 -3
- package/dist/record/family/current.cjs +45 -42
- package/dist/record/family/current.cjs.map +1 -1
- package/dist/record/family/current.d.cts +240 -1
- package/dist/record/family/current.d.mts +240 -1
- package/dist/record/family/current.d.ts +240 -1
- package/dist/record/family/execution-traces/definition.d.cts +26 -0
- package/dist/record/family/execution-traces/definition.d.mts +26 -0
- package/dist/record/family/execution-traces/definition.d.ts +26 -0
- package/dist/record/family/execution-traces/definition.js +20 -14
- package/dist/record/family/execution-traces/schema.cjs +57 -1
- package/dist/record/family/execution-traces/schema.cjs.map +1 -1
- package/dist/record/family/execution-traces/schema.d.cts +114 -0
- package/dist/record/family/execution-traces/schema.d.mts +114 -0
- package/dist/record/family/execution-traces/schema.d.ts +114 -0
- package/dist/record/family/execution-traces/schema.js +18 -12
- package/dist/record/family/judge-usage/definition.cjs +12 -0
- package/dist/record/family/judge-usage/definition.cjs.map +1 -0
- package/dist/record/family/judge-usage/definition.d.cts +91 -0
- package/dist/record/family/judge-usage/definition.d.mts +91 -0
- package/dist/record/family/judge-usage/definition.d.ts +91 -0
- package/dist/record/family/judge-usage/definition.js +6 -0
- package/dist/record/family/judge-usage/definition.js.map +1 -0
- package/dist/record/family/judge-usage/persistence.cjs +10 -0
- package/dist/record/family/judge-usage/persistence.cjs.map +1 -0
- package/dist/record/family/judge-usage/persistence.d.cts +91 -0
- package/dist/record/family/judge-usage/persistence.d.mts +91 -0
- package/dist/record/family/judge-usage/persistence.d.ts +91 -0
- package/dist/record/family/judge-usage/persistence.js +6 -0
- package/dist/record/family/judge-usage/persistence.js.map +1 -0
- package/dist/record/family/judge-usage/schema.cjs +307 -0
- package/dist/record/family/judge-usage/schema.cjs.map +1 -0
- package/dist/record/family/judge-usage/schema.d.cts +351 -0
- package/dist/record/family/judge-usage/schema.d.mts +351 -0
- package/dist/record/family/judge-usage/schema.d.ts +351 -0
- package/dist/record/family/judge-usage/schema.js +18 -0
- package/dist/record/family/judge-usage/schema.js.map +1 -0
- package/dist/record/host/sqlite-host.cjs +55 -9
- package/dist/record/host/sqlite-host.cjs.map +1 -1
- package/dist/record/host/types.cjs.map +1 -1
- package/dist/record/host/types.d.cts +7 -0
- package/dist/record/host/types.d.mts +7 -0
- package/dist/record/host/types.d.ts +7 -0
- package/dist/record/model/run-context.cjs +7 -1
- package/dist/record/model/run-context.cjs.map +1 -1
- package/dist/record/model/run-context.d.cts +4 -0
- package/dist/record/model/run-context.d.mts +4 -0
- package/dist/record/model/run-context.d.ts +4 -0
- package/dist/record/model/seal-manifest.d.cts +1 -1
- package/dist/record/model/seal-manifest.d.mts +1 -1
- package/dist/record/model/seal-manifest.d.ts +1 -1
- package/dist/record/sqlite/client.cjs +18 -5
- package/dist/record/sqlite/client.cjs.map +1 -1
- package/dist/record/sqlite/client.d.cts +1 -1
- package/dist/record/sqlite/client.d.mts +1 -1
- package/dist/record/sqlite/client.d.ts +1 -1
- package/dist/record/sqlite/project-state-database.cjs +29 -8
- package/dist/record/sqlite/project-state-database.cjs.map +1 -1
- package/dist/run/host/runtime.cjs +4 -0
- package/dist/run/host/runtime.cjs.map +1 -1
- package/dist/run/storage/sqlite.cjs +20 -0
- package/dist/run/storage/sqlite.cjs.map +1 -1
- package/dist/runner/adapter-execution-trace.cjs +125 -2
- package/dist/runner/adapter-execution-trace.cjs.map +1 -1
- package/dist/runner/adapter-execution-trace.d.cts +1 -1
- package/dist/runner/adapter-execution-trace.d.mts +1 -1
- package/dist/runner/adapter-execution-trace.d.ts +1 -1
- package/dist/runner/adapter-usage.cjs +55 -7
- package/dist/runner/adapter-usage.cjs.map +1 -1
- package/dist/runner/adapter-usage.d.cts +9 -2
- package/dist/runner/adapter-usage.d.mts +9 -2
- package/dist/runner/adapter-usage.d.ts +9 -2
- package/dist/runner/adoption.cjs +9 -0
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/attempt-cancellation.cjs +12 -0
- package/dist/runner/attempt-cancellation.cjs.map +1 -0
- package/dist/runner/attempt-cancellation.d.cts +6 -0
- package/dist/runner/attempt-cancellation.d.mts +6 -0
- package/dist/runner/attempt-cancellation.d.ts +6 -0
- package/dist/runner/attempt-cancellation.js +6 -0
- package/dist/runner/attempt-cancellation.js.map +1 -0
- package/dist/runner/attempt-resources.cjs +10 -4
- package/dist/runner/attempt-resources.cjs.map +1 -1
- package/dist/runner/attempt-resources.d.cts +2 -1
- package/dist/runner/attempt-resources.d.mts +2 -1
- package/dist/runner/attempt-resources.d.ts +2 -1
- package/dist/runner/attempt.cjs +1177 -1139
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/config-identity.cjs +20 -1
- package/dist/runner/config-identity.cjs.map +1 -1
- package/dist/runner/config-identity.d.cts +5 -0
- package/dist/runner/config-identity.d.mts +5 -0
- package/dist/runner/config-identity.d.ts +5 -0
- package/dist/runner/discover.cjs +14 -0
- package/dist/runner/discover.cjs.map +1 -1
- package/dist/runner/discover.d.cts +3 -0
- package/dist/runner/discover.d.mts +3 -0
- package/dist/runner/discover.d.ts +3 -0
- package/dist/runner/feedback/human.cjs +9 -4
- package/dist/runner/feedback/human.cjs.map +1 -1
- package/dist/runner/fingerprint.cjs +1 -0
- package/dist/runner/fingerprint.cjs.map +1 -1
- package/dist/runner/judge-usage.cjs +18 -0
- package/dist/runner/judge-usage.cjs.map +1 -0
- package/dist/runner/judge-usage.d.cts +5 -0
- package/dist/runner/judge-usage.d.mts +5 -0
- package/dist/runner/judge-usage.d.ts +5 -0
- package/dist/runner/judge-usage.js +8 -0
- package/dist/runner/judge-usage.js.map +1 -0
- package/dist/runner/project-target.cjs.map +1 -1
- package/dist/runner/project-target.d.cts +2 -0
- package/dist/runner/project-target.d.mts +2 -0
- package/dist/runner/project-target.d.ts +2 -0
- package/dist/runner/record/planning.cjs +1 -0
- package/dist/runner/record/planning.cjs.map +1 -1
- package/dist/runner/record.cjs +4 -0
- package/dist/runner/record.cjs.map +1 -1
- package/dist/runner/reporters/braintrust.cjs +2 -0
- package/dist/runner/reporters/braintrust.cjs.map +1 -1
- package/dist/runner/reuse-diagnostics.cjs +9 -10
- package/dist/runner/reuse-diagnostics.cjs.map +1 -1
- package/dist/runner/reuse-diagnostics.d.cts +5 -6
- package/dist/runner/reuse-diagnostics.d.mts +5 -6
- package/dist/runner/reuse-diagnostics.d.ts +5 -6
- package/dist/runner/reuse-diagnostics.js +4 -4
- package/dist/runner/reuse-plan.cjs +100 -48
- package/dist/runner/reuse-plan.cjs.map +1 -1
- package/dist/runner/reuse-plan.d.cts +60 -3
- package/dist/runner/reuse-plan.d.mts +60 -3
- package/dist/runner/reuse-plan.d.ts +60 -3
- package/dist/runner/reuse-plan.js +14 -10
- package/dist/runner/run.cjs +8 -6
- package/dist/runner/run.cjs.map +1 -1
- package/dist/runner/session.cjs +1 -1
- package/dist/runner/session.cjs.map +1 -1
- package/dist/runner/session.d.cts +1 -1
- package/dist/runner/session.d.mts +1 -1
- package/dist/runner/session.d.ts +1 -1
- package/dist/runner/source-producer.cjs +3 -1
- package/dist/runner/source-producer.cjs.map +1 -1
- package/dist/runner/types.cjs.map +1 -1
- package/dist/runner/types.d.cts +26 -5
- package/dist/runner/types.d.mts +26 -5
- package/dist/runner/types.d.ts +26 -5
- package/dist/sandbox/action.cjs +3 -0
- package/dist/sandbox/action.cjs.map +1 -1
- package/dist/sandbox/commands.cjs +3 -0
- package/dist/sandbox/commands.cjs.map +1 -1
- package/dist/sandbox/compose.cjs +6 -0
- package/dist/sandbox/compose.cjs.map +1 -1
- package/dist/sandbox/docker-profile/registry.cjs +7 -0
- package/dist/sandbox/docker-profile/registry.cjs.map +1 -1
- package/dist/sandbox/docker-profile/runtime.cjs +3 -0
- package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.cjs +7 -0
- package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
- package/dist/sandbox/incus.cjs +7 -0
- package/dist/sandbox/incus.cjs.map +1 -1
- package/dist/sandbox/layer.cjs +12 -0
- package/dist/sandbox/layer.cjs.map +1 -1
- package/dist/shared/adapter-cleanup.cjs +18 -0
- package/dist/shared/adapter-cleanup.cjs.map +1 -0
- package/dist/shared/adapter-cleanup.d.cts +4 -0
- package/dist/shared/adapter-cleanup.d.mts +4 -0
- package/dist/shared/adapter-cleanup.d.ts +4 -0
- package/dist/shared/adapter-cleanup.js +10 -0
- package/dist/shared/adapter-cleanup.js.map +1 -0
- package/dist/shared/attempt-lifecycle.cjs +3 -0
- package/dist/shared/attempt-lifecycle.cjs.map +1 -0
- package/dist/shared/attempt-lifecycle.d.cts +13 -0
- package/dist/shared/attempt-lifecycle.d.mts +13 -0
- package/dist/shared/attempt-lifecycle.d.ts +13 -0
- package/dist/shared/attempt-lifecycle.js +4 -0
- package/dist/shared/attempt-lifecycle.js.map +1 -0
- package/dist/show/contribution.cjs +52 -14
- package/dist/show/contribution.cjs.map +1 -1
- package/dist/show/contribution.d.cts +23 -1
- package/dist/show/contribution.d.mts +23 -1
- package/dist/show/contribution.d.ts +23 -1
- package/dist/show/model.cjs +8 -1
- package/dist/show/model.cjs.map +1 -1
- package/dist/show/model.d.cts +10 -1
- package/dist/show/model.d.mts +10 -1
- package/dist/show/model.d.ts +10 -1
- package/dist/show/render.cjs +287 -49
- package/dist/show/render.cjs.map +1 -1
- package/dist/show/render.d.cts +3 -0
- package/dist/show/render.d.mts +3 -0
- package/dist/show/render.d.ts +3 -0
- package/dist/sources/projector.cjs +3 -0
- package/dist/sources/projector.cjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/view/app-dist/.vite/manifest.json +2 -2
- package/dist/view/app-dist/assets/index-CmVoXbwG.js +63 -0
- package/dist/view/app-dist/assets/{quality-cost-scatter-CFB3wnkN.js → quality-cost-scatter-BuLISaH4.js} +1 -1
- package/dist/view/app-dist/index.html +1 -1
- package/dist/view/cli/contribution.cjs +54 -21
- package/dist/view/cli/contribution.cjs.map +1 -1
- package/dist/view/cli/contribution.d.cts +2 -1
- package/dist/view/cli/contribution.d.mts +2 -1
- package/dist/view/cli/contribution.d.ts +2 -1
- package/dist/view/function-runtime.mjs +13231 -11647
- package/dist/view/http-protocol.cjs +3 -0
- package/dist/view/http-protocol.cjs.map +1 -1
- package/dist/view/http-protocol.d.cts +8 -0
- package/dist/view/http-protocol.d.mts +8 -0
- package/dist/view/http-protocol.d.ts +8 -0
- package/dist/view/inspection-host.cjs +17 -1
- package/dist/view/inspection-host.cjs.map +1 -1
- package/dist/view/render.cjs +1 -0
- package/dist/view/render.cjs.map +1 -1
- package/dist/view/render.d.cts +2 -1
- package/dist/view/render.d.mts +2 -1
- package/dist/view/render.d.ts +2 -1
- package/dist/view/revision.cjs.map +1 -1
- package/dist/view/revision.d.cts +12 -0
- package/dist/view/revision.d.mts +12 -0
- package/dist/view/revision.d.ts +12 -0
- package/dist/view/server.cjs +10 -9
- package/dist/view/server.cjs.map +1 -1
- package/docs-site/zh/examples/ai-agent-application.mdx +1 -1
- package/docs-site/zh/explanation/adapter.mdx +2 -2
- package/docs-site/zh/explanation/assert.mdx +60 -24
- package/docs-site/zh/explanation/drive.mdx +1 -1
- package/docs-site/zh/explanation/evals.mdx +31 -29
- package/docs-site/zh/explanation/experiment.mdx +15 -15
- package/docs-site/zh/explanation/judge.mdx +23 -15
- package/docs-site/zh/explanation/overview.mdx +44 -21
- package/docs-site/zh/explanation/record.mdx +28 -13
- package/docs-site/zh/explanation/results-flow.mdx +37 -0
- package/docs-site/zh/explanation/runner.mdx +27 -6
- package/docs-site/zh/index.mdx +22 -115
- package/docs-site/zh/introduction.mdx +89 -61
- package/docs-site/zh/reference/cli.mdx +50 -26
- package/docs-site/zh/reference/define-agent.mdx +37 -5
- package/docs-site/zh/reference/define-eval.mdx +130 -29
- package/docs-site/zh/reference/define-experiment.mdx +251 -0
- package/docs-site/zh/reference/events.mdx +34 -30
- package/docs-site/zh/reference/expect.mdx +77 -2
- package/docs-site/zh/reference/official-adapters.mdx +2 -2
- package/docs-site/zh/troubleshooting/debug-sandbox.mdx +43 -24
- package/docs-site/zh/troubleshooting/debugging.mdx +65 -42
- package/docs-site/zh/troubleshooting/recover-after-kill.mdx +35 -28
- package/docs-site/zh/tutorials/accept-results.mdx +34 -24
- package/docs-site/zh/tutorials/agent-feedback-loop.mdx +74 -43
- package/docs-site/zh/tutorials/agent-onboarding.mdx +27 -20
- package/docs-site/zh/tutorials/authoring.mdx +138 -121
- package/docs-site/zh/tutorials/ci-integration.mdx +46 -22
- package/docs-site/zh/tutorials/compare-runs.mdx +40 -13
- package/docs-site/zh/tutorials/concurrency.mdx +66 -62
- package/docs-site/zh/tutorials/configuration.mdx +17 -17
- package/docs-site/zh/tutorials/connect-otel.mdx +48 -37
- package/docs-site/zh/tutorials/connect-your-agent.mdx +80 -173
- package/docs-site/zh/tutorials/control-run-cost.mdx +63 -12
- package/docs-site/zh/tutorials/criteria-files.mdx +28 -21
- package/docs-site/zh/tutorials/custom-application.mdx +75 -55
- package/docs-site/zh/tutorials/dataset-fanout.mdx +32 -22
- package/docs-site/zh/tutorials/debug-lifecycle-plan.mdx +38 -31
- package/docs-site/zh/tutorials/docker-in-docker.mdx +83 -89
- package/docs-site/zh/tutorials/eval-groups.mdx +70 -89
- package/docs-site/zh/tutorials/evaluation-kinds.mdx +12 -5
- package/docs-site/zh/tutorials/experiment-services.mdx +243 -0
- package/docs-site/zh/tutorials/fixtures.mdx +42 -26
- package/docs-site/zh/tutorials/handle-execution-failures.mdx +41 -19
- package/docs-site/zh/tutorials/install-custom-sandbox-agent.mdx +21 -16
- package/docs-site/zh/tutorials/niceeval-taste-application.mdx +394 -0
- package/docs-site/zh/tutorials/niceeval-taste.mdx +190 -0
- package/docs-site/zh/tutorials/nixos-managed-dind.mdx +51 -39
- package/docs-site/zh/tutorials/plugins.mdx +55 -31
- package/docs-site/zh/tutorials/prebuilt-sandbox.mdx +204 -0
- package/docs-site/zh/tutorials/quickstart.mdx +91 -47
- package/docs-site/zh/tutorials/reporters.mdx +45 -30
- package/docs-site/zh/tutorials/rerun-and-cache.mdx +39 -40
- package/docs-site/zh/tutorials/sandbox-agent.mdx +65 -40
- package/docs-site/zh/tutorials/sandbox-providers.mdx +104 -282
- package/docs-site/zh/tutorials/sandbox-reuse.mdx +65 -97
- package/docs-site/zh/tutorials/select-and-preview.mdx +25 -20
- package/docs-site/zh/tutorials/verify-judge.mdx +49 -26
- package/docs-site/zh/tutorials/viewing-results.mdx +130 -80
- package/docs-site/zh/tutorials/write-experiment.mdx +116 -298
- package/docs-site/zh/tutorials/write-send.mdx +53 -52
- package/node_modules/undici/docs/docs/api/Agent.md +8 -8
- package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +9 -6
- package/node_modules/undici/docs/docs/api/Errors.md +25 -0
- package/node_modules/undici/docs/docs/api/Interceptors.md +4 -3
- package/node_modules/undici/docs/docs/api/Pool.md +5 -6
- package/node_modules/undici/lib/api/readable.js +1 -2
- package/node_modules/undici/lib/core/request.js +23 -2
- package/node_modules/undici/lib/core/util.js +0 -39
- package/node_modules/undici/lib/dispatcher/client-h1.js +11 -4
- package/node_modules/undici/lib/dispatcher/client-h2.js +52 -8
- package/node_modules/undici/lib/dispatcher/client.js +1 -1
- package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +3 -2
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +21 -6
- package/node_modules/undici/lib/dispatcher/pool-base.js +63 -2
- package/node_modules/undici/lib/dispatcher/pool.js +90 -7
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +16 -3
- package/node_modules/undici/lib/handler/deduplication-handler.js +24 -11
- package/node_modules/undici/lib/handler/redirect-handler.js +5 -0
- package/node_modules/undici/lib/handler/retry-handler.js +72 -13
- package/node_modules/undici/lib/interceptor/cache.js +4 -1
- package/node_modules/undici/lib/interceptor/decompress.js +236 -69
- package/node_modules/undici/lib/web/cache/cache.js +17 -8
- package/node_modules/undici/lib/web/cache/cachestorage.js +11 -5
- package/node_modules/undici/lib/web/cookies/index.js +19 -7
- package/node_modules/undici/lib/web/cookies/util.js +3 -1
- package/node_modules/undici/lib/web/eventsource/eventsource.js +25 -1
- package/node_modules/undici/lib/web/fetch/body.js +22 -15
- package/node_modules/undici/lib/web/fetch/data-url.js +6 -6
- package/node_modules/undici/lib/web/fetch/formdata.js +30 -36
- package/node_modules/undici/lib/web/fetch/headers.js +34 -31
- package/node_modules/undici/lib/web/fetch/index.js +38 -14
- package/node_modules/undici/lib/web/fetch/request.js +74 -79
- package/node_modules/undici/lib/web/fetch/response.js +43 -44
- package/node_modules/undici/lib/web/fetch/util.js +7 -7
- package/node_modules/undici/lib/web/infra/index.js +16 -1
- package/node_modules/undici/lib/web/webidl/index.js +2 -14
- package/node_modules/undici/lib/web/websocket/events.js +43 -26
- package/node_modules/undici/lib/web/websocket/receiver.js +5 -0
- package/node_modules/undici/lib/web/websocket/stream/websocketerror.js +13 -10
- package/node_modules/undici/lib/web/websocket/websocket.js +44 -41
- package/node_modules/undici/package.json +1 -1
- package/node_modules/undici/types/diagnostics-channel.d.ts +2 -1
- package/node_modules/undici/types/interceptors.d.ts +1 -1
- package/node_modules/undici/types/webidl.d.ts +13 -7
- package/package.json +4 -4
- package/dist/view/app-dist/assets/index-DFzw1L97.js +0 -63
- package/docs-site/zh/tutorials/experiments.mdx +0 -101
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "
|
|
3
|
-
|
|
2
|
+
title: "评估自定义应用:发帖、生图这类业务操作"
|
|
3
|
+
sidebarTitle: "评估自定义应用"
|
|
4
|
+
description: "被测应用不是对话式 Agent 时,用 defineAdapter 把它的业务方法直接暴露给评估用例,检查结构化结果和业务操作。"
|
|
4
5
|
---
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
你在评估一个社交应用里的 AI 功能:用户发帖后,AI 自动生成配图、推荐回复。这里没有“发一条消息、收一条回复”的对话,有的是发帖、回复、生成图片这些业务操作。
|
|
8
|
+
|
|
9
|
+
硬把它们写成 `t.send("帮我发帖")` 很别扭。更直接的做法是用 `defineAdapter` 把应用自己的方法交给评估用例:返回对象里的每个操作,都会变成评估用例里带类型的 `t.post(...)`、`t.generateImage(...)`。
|
|
10
|
+
|
|
11
|
+
对话式 Agent 用的 `defineAgent` 是 Adapter 的一种特例,要实现 `send`、多轮会话和 Turn。自定义应用不需要实现这些。
|
|
8
12
|
|
|
9
13
|
## 定义应用连接
|
|
10
14
|
|
|
11
|
-
|
|
15
|
+
先告诉 NiceEval 怎么创建你的应用、评估要用到它的哪些操作。下面连接一个已有的社交应用。`createSocialApp` 属于你的应用,返回对象逐个列出评估需要的操作。
|
|
12
16
|
|
|
13
17
|
```ts application.ts
|
|
14
18
|
import { defineAdapter } from "niceeval";
|
|
@@ -29,16 +33,17 @@ export const social = defineAdapter({
|
|
|
29
33
|
});
|
|
30
34
|
```
|
|
31
35
|
|
|
32
|
-
运行器每个 Attempt 调用一次 `create
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
运行器每个 Attempt 调用一次 `create`,Attempt 结束时执行登记过的 `onCleanup` 回调。
|
|
37
|
+
|
|
38
|
+
- 每个 Attempt 要不要拿到独立的应用实例,由你的 `create` 决定。运行器不会替你复制实例。
|
|
39
|
+
- 没登记 `onCleanup` 的资源,运行器不会释放。取得资源后立即登记。
|
|
40
|
+
- 把 `signal` 传进应用的网络请求和长任务,超时或取消时它们才会停下。
|
|
35
41
|
|
|
36
|
-
TypeScript
|
|
37
|
-
应用没有提供 `send` 时,`t.send` 会报类型错误。`check` 等 NiceEval 核心名称不能覆盖;已有类实例用上面的闭包方式暴露方法。
|
|
42
|
+
TypeScript 会从返回对象推导出每个方法的参数和结果,不需要手写 `t` 的类型。返回对象里没有 `send` 时,在评估用例里写 `t.send` 会报类型错误。`check` 等 NiceEval 自带的名称不能被覆盖。已有的类实例,用上面的闭包写法逐个暴露方法。
|
|
38
43
|
|
|
39
44
|
## 调用应用动作并自定义检查
|
|
40
45
|
|
|
41
|
-
|
|
46
|
+
接下来在评估用例里调用这些操作,再检查结果。`test(t)` 里既有应用的操作,也有 NiceEval 的检查方法。应用返回的 Post、Reply 等对象,可以直接交给 `defineValueMatch` 定义的自定义 Match。
|
|
42
47
|
|
|
43
48
|
```ts evals/publish.eval.ts
|
|
44
49
|
import { defineValueMatch } from "niceeval/expect";
|
|
@@ -64,13 +69,13 @@ export default social.defineEval({
|
|
|
64
69
|
});
|
|
65
70
|
```
|
|
66
71
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
72
|
+
操作的参数和返回值由你的应用决定。`defineValueMatch` 只描述一个值怎样算匹配。`t.check` 登记一条断言,`.gate()` 表示这条不通过,整个评估用例就不通过。字符串、数值和 Schema 匹配器也都能直接用。
|
|
73
|
+
|
|
74
|
+
需要累计分数时,改用 `social.defineScoreEval`,再在检查上调用 `.score(points)`。语气、人物一致性、内容质量这类开放式标准可以交给 [Judge](/zh/explanation/judge)。
|
|
70
75
|
|
|
71
76
|
## 在连接处定义断言方法
|
|
72
77
|
|
|
73
|
-
|
|
78
|
+
好几个评估用例都要做同一种检查时,把它写成 Adapter 上的断言方法,评估用例里一行就能调用。在 `assertions` 里定义这些方法,它们拿到当前 Attempt 的 `app` 和 `check`,返回 `check` 的结果。
|
|
74
79
|
|
|
75
80
|
```ts application.ts
|
|
76
81
|
import { defineAdapter } from "niceeval";
|
|
@@ -113,15 +118,20 @@ export default social.defineScoreEval({
|
|
|
113
118
|
});
|
|
114
119
|
```
|
|
115
120
|
|
|
116
|
-
`hasPublishedText()`
|
|
121
|
+
`hasPublishedText()` 和直接写 `t.check` 的效果一样,计分和报告里的展示也一样。`defineEval` 里的断言方法没有 `.score()`,`defineScoreEval` 里的有。`post()` 这样的操作方法仍然只调用应用。
|
|
122
|
+
|
|
123
|
+
写断言方法时注意几点:
|
|
117
124
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
125
|
+
- 在方法被调用时才读取要检查的数据。`assertions` 只负责组装方法,不能在里面提前调用 `check`。
|
|
126
|
+
- 返回对象里只放函数,不放 getter 或其它值,方法名也不能和应用操作或 NiceEval 自带的名称重名。
|
|
127
|
+
- 方法同步返回 `check` 的结果,不返回 Boolean 或 Promise。异步操作和等待放在应用方法里,在检查前先完成。
|
|
128
|
+
- 数据不完整时报一个明确的错误,不要当成“什么都没发生”来判断。
|
|
129
|
+
- 参数写成具体类型。泛型或重载的断言方法无法调用,这类检查改用独立的 Match 加 `t.check`。应用操作本身可以是泛型方法。
|
|
122
130
|
|
|
123
131
|
## 选择实现并运行
|
|
124
132
|
|
|
133
|
+
写一个 Experiment 选定这个应用,然后运行。
|
|
134
|
+
|
|
125
135
|
```ts experiments/local.ts
|
|
126
136
|
import { defineExperiment } from "niceeval";
|
|
127
137
|
import { social } from "../application.ts";
|
|
@@ -135,16 +145,17 @@ export default defineExperiment({
|
|
|
135
145
|
```bash
|
|
136
146
|
pnpm exec niceeval check
|
|
137
147
|
pnpm exec niceeval exp local
|
|
138
|
-
pnpm exec niceeval view
|
|
139
148
|
```
|
|
140
149
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
150
|
+
跑完后用 `pnpm exec niceeval show` 在终端看结果,或用 `pnpm exec niceeval view` 在浏览器里看。
|
|
151
|
+
|
|
152
|
+
Experiment 选的应用必须提供评估用例用到的操作。缺了操作时,NiceEval 在创建应用之前就报错,先核对 `create` 的返回对象。
|
|
153
|
+
|
|
154
|
+
操作的顺序、参数和重复次数都由评估代码决定。应用操作失败时不会像 Agent 消息那样自动重试。你也可以把某个操作命名为 `send`,它的参数和返回值仍由应用决定,不需要构造 `Turn`。
|
|
144
155
|
|
|
145
156
|
## 用相同评估比较两个实现
|
|
146
157
|
|
|
147
|
-
|
|
158
|
+
想知道换一套实现后效果是变好还是变差,就让两套实现跑同一批评估用例。先声明它们共同的接口,再分别提供实现:
|
|
148
159
|
|
|
149
160
|
```ts
|
|
150
161
|
import { defineAdapterContract } from "niceeval";
|
|
@@ -155,10 +166,9 @@ export const baseline = social.implement({ name: "baseline", create: createBasel
|
|
|
155
166
|
export const candidate = social.implement({ name: "candidate", create: createCandidate });
|
|
156
167
|
```
|
|
157
168
|
|
|
158
|
-
|
|
159
|
-
只有共同接口里的方法可在该评估中使用;两个独立创建但同名的契约不能互换。
|
|
169
|
+
评估用例用 `social.defineEval` 编写,两个 Experiment 分别选 `baseline` 和 `candidate`。评估用例里只能用共同接口里的方法。两次分别调用 `defineAdapterContract` 得到的接口即使同名,也不能互换。
|
|
160
170
|
|
|
161
|
-
|
|
171
|
+
两套实现要共用断言方法时,在创建实现前调用 `withAssertions`:
|
|
162
172
|
|
|
163
173
|
```ts
|
|
164
174
|
const social = defineAdapterContract<SocialContext>({ name: "social/v1" })
|
|
@@ -169,15 +179,19 @@ const social = defineAdapterContract<SocialContext>({ name: "social/v1" })
|
|
|
169
179
|
}));
|
|
170
180
|
```
|
|
171
181
|
|
|
172
|
-
|
|
182
|
+
用 `withAssertions` 返回的接口创建实现和评估用例,各实现就会用同一套检查。`withAssertions` 返回的是一个新接口,在它之前创建的实现拿不到这些方法。
|
|
183
|
+
|
|
184
|
+
### 什么时候沿用上次结果
|
|
173
185
|
|
|
174
|
-
|
|
175
|
-
|
|
186
|
+
再次运行时,NiceEval 会判断能否沿用上次的结果。参与判断的有 Adapter 的 `name`、`contract`、`behaviorRevision`,以及 Experiment 的 `flags`。评估用例文件和它在项目内用相对路径静态 import 的文件一改,这道题就会重跑。
|
|
187
|
+
|
|
188
|
+
Experiment 单独选择的实现、动态 import、外部包和远端服务,NiceEval 看不到它们的变化。改了这些行为时,提高 `behaviorRevision`,或者用显式配置体现变化。没有声明 `behaviorRevision` 的自定义 Adapter 每次都重跑,不沿用上次结果。用 `pnpm exec niceeval exp local --dry` 可以先看哪些会沿用、哪些会重跑,见[修改后只重跑受影响的评估](/zh/tutorials/rerun-and-cache)。
|
|
176
189
|
|
|
177
190
|
## 保存应用执行轨迹
|
|
178
191
|
|
|
179
|
-
|
|
180
|
-
|
|
192
|
+
评估失败时,你想知道应用内部到底做了什么。把应用的执行日志交给 NiceEval,之后就能用 `niceeval show` 逐条查看,不必再去应用那边翻日志。
|
|
193
|
+
|
|
194
|
+
应用结束、拿到完整日志后,在 Adapter 里调用 `ctx.recordTrace`。每个事件保留自己的类型、执行者、摘要和已知的关联,不需要包装成聊天消息。下面的事件只表示发帖请求已被接受,真正发布完成要另记一条事件。
|
|
181
195
|
|
|
182
196
|
```ts
|
|
183
197
|
const attachment = await ctx.attach({
|
|
@@ -207,23 +221,25 @@ const receipt = await ctx.recordTrace({
|
|
|
207
221
|
});
|
|
208
222
|
```
|
|
209
223
|
|
|
210
|
-
`key`
|
|
211
|
-
`schema.id`
|
|
212
|
-
返回的 `receipt.events`
|
|
213
|
-
|
|
224
|
+
- `key` 用来在这次提交的事件之间互相引用。`source.eventId` 只填应用真实提供的 ID,没有就省略。
|
|
225
|
+
- `schema.id` 标明应用的事件格式,只填 `id`,不填 `revision`。
|
|
226
|
+
- 返回的 `receipt.events` 给出每个事件的 `eventId`,查看时用它展开。同一个 `traceId` 再次提交相同内容,返回同样的 `eventId`;内容不同会被拒绝。
|
|
227
|
+
- 摘要有长度上限。大段输入放进附件,用 `evidence` 的 `pointer` 指向附件里的具体位置,查看时直接定位,不用扫完整份日志。
|
|
228
|
+
|
|
229
|
+
跑完后查看这个 Attempt 的执行过程,再展开某个事件:
|
|
214
230
|
|
|
215
231
|
```sh
|
|
216
|
-
niceeval show @<attempt> --execution
|
|
217
|
-
niceeval show @<attempt> --execution --expand <eventId>
|
|
232
|
+
pnpm exec niceeval show @<attempt> --execution
|
|
233
|
+
pnpm exec niceeval show @<attempt> --execution --expand <eventId>
|
|
218
234
|
```
|
|
219
235
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
236
|
+
`collection.state` 描述日志是否完整,和运行有没有被取消无关。取消后仍拿到了完整日志,就写 `complete`。缺日志时写 `partial`,并在 `limitations` 里说明缺了什么,不要用空列表表示“不知道”。超出 `scopes` 采集范围的事件也保留下来,标成 `excluded`,判断不了的标成 `unknown`。提交执行日志本身不影响判分。
|
|
237
|
+
|
|
238
|
+
`onCleanup` 回调有自己的时限,在里面也能提交执行日志。保存后的执行日志和附件随结果文件 `.niceeval/record.sqlite` 一起保存,查看时不会再调用应用或模型。
|
|
223
239
|
|
|
224
240
|
## 归档大附件
|
|
225
241
|
|
|
226
|
-
|
|
242
|
+
应用的原始日志、网络响应这类大文件,可以作为附件和结果一起保存,排查时再取出来看。用 `ctx.attach` 把文件、网络响应或生成器作为字节流交给 NiceEval,NiceEval 不解析其中的格式:
|
|
227
243
|
|
|
228
244
|
```ts
|
|
229
245
|
import { createReadStream } from "node:fs";
|
|
@@ -241,23 +257,27 @@ const receipt = await ctx.attach({
|
|
|
241
257
|
});
|
|
242
258
|
```
|
|
243
259
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
260
|
+
先关掉本地日志的写入,再提交附件,读取期间不要改动源文件。
|
|
261
|
+
|
|
262
|
+
返回的回执包含 `artifactId`、原始字节的 `sha256` 和 `byteLength`。拿到回执后,NiceEval 已经有了自己的副本,之后删除或改写源文件不影响附件。附件在这个 Attempt 的结果保存时一起写进结果文件,不会上传到任何远端服务。
|
|
247
263
|
|
|
248
|
-
|
|
249
|
-
字符串和数组仍是单件 64 MiB、累计 256 MiB。自定义来源必须响应传入的取消信号,释放自己的文件或连接。
|
|
250
|
-
框架逐块复制并写入后才拉取下一块,不收集整件内容。大附件可以分块读取;作为 trace 的 JSON pointer 证据时,单件仍须不超过 64 MiB。
|
|
264
|
+
大小限制:
|
|
251
265
|
|
|
252
|
-
|
|
253
|
-
|
|
266
|
+
- 字节流每块最多 1 MiB,单个附件最多 1 GiB,每个 Attempt 的附件合计最多 2 GiB,同时最多提交 4 个流。
|
|
267
|
+
- 字符串和数组形式的附件单个最多 64 MiB,合计最多 256 MiB。
|
|
268
|
+
- 作为执行日志里 `pointer` 证据的附件,单个不能超过 64 MiB。
|
|
269
|
+
|
|
270
|
+
NiceEval 写完一块才读下一块,不会把整个文件读进内存。自定义的流必须响应传入的 `signal`,并释放自己的文件或连接。
|
|
271
|
+
|
|
272
|
+
在 `ctx.onCleanup` 里提交附件时,用 cleanup 回调提供的 `signal`,不要用已经取消的 `ctx.signal`。提交失败时,即使你捕获了错误,这个 Attempt 也会显示采集失败,之前成功提交的附件仍然保留。cleanup 总共只有 30 秒,大文件应在运行过程中提交。
|
|
254
273
|
|
|
255
274
|
## 阅读结果
|
|
256
275
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
276
|
+
用 `pnpm exec niceeval show` 查看这次运行。每条 `t.check` 保存了被检查的值(有长度上限)和判定。
|
|
277
|
+
|
|
278
|
+
NiceEval 没有采集到的会话、工具调用和费用会显示为缺失,不会填成零。没有 Turn 不代表用了零 token,Judge 的费用也不等于整个应用的费用。
|
|
279
|
+
|
|
280
|
+
因为拿不到应用的完整费用,自定义应用不能设置 `budget`,也不能声明只有 Agent 才有的 Sandbox 或会话能力。生命周期 Plugin 需要 Agent 的执行准备步骤,在自定义应用上配置它们会在运行前报错。
|
|
261
281
|
|
|
262
282
|
完整可运行的模拟 X 示例位于 [LLM X 源码](https://github.com/CorrectRoadH/niceeval/tree/main/examples/zh/llm-x)。
|
|
263
283
|
它由 LLM 生成人物、个人主页、推文、配图和后续社交动态,并使用应用原生方法进行评估。
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "
|
|
2
|
+
title: "数据驱动测试:一份测试集生成多条评估用例"
|
|
3
3
|
sidebarTitle: "数据驱动测试"
|
|
4
|
-
description: "
|
|
4
|
+
description: "几十条评估逻辑相同、只有输入不同时,从一个 .eval.ts 导出数组或对象,一套逻辑生成多条评估用例。也可以用 loadYaml 或 loadJson 读外部测试集,并给每条起稳定的 ID。"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
import { DatasetFanout } from '/snippets/diagram-dataset-fanout.jsx';
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
你在评估一个 SQL 生成功能,手上有 80 个“问题 + 期望结果”的样例。每条的检查逻辑都一样:发问题、跑 SQL、比结果。给每条写一个文件,改一次检查逻辑就要改 80 处。
|
|
10
|
+
|
|
11
|
+
数据驱动测试让你只写一份逻辑,用测试集生成多条评估用例。意图分类、检索问答、工具选择这类大量同构的测试都适合这样写。
|
|
10
12
|
|
|
11
13
|
<DatasetFanout />
|
|
12
14
|
|
|
13
|
-
##
|
|
15
|
+
## 从一个文件导出一组评估用例
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
把样例放进数组,用 `map` 给每一行生成一个 `defineEval`,再把整个数组作为默认导出。检查逻辑只写一次,改它时所有样例一起生效:
|
|
16
18
|
|
|
17
19
|
```ts
|
|
18
20
|
import { defineEval } from "niceeval";
|
|
@@ -34,18 +36,18 @@ export default rows.map((row) =>
|
|
|
34
36
|
);
|
|
35
37
|
```
|
|
36
38
|
|
|
37
|
-
##
|
|
39
|
+
## 确认每条评估用例的 ID
|
|
38
40
|
|
|
39
|
-
|
|
41
|
+
导出数组时,NiceEval 按位置给每条编号。如果文件是 `evals/sql.eval.ts`,生成的 ID 是:
|
|
40
42
|
|
|
41
43
|
```text
|
|
42
44
|
sql/0000
|
|
43
45
|
sql/0001
|
|
44
46
|
```
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
序号补零到固定宽度,方便引用和按前缀筛选。注意数组顺序一变,同一个样例的 ID 也会跟着变。
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
数据源已经带有稳定的 case、issue 或 benchmark ID 时,改为导出一个对象,用这些 ID 作 key:
|
|
49
51
|
|
|
50
52
|
```ts
|
|
51
53
|
export default Object.fromEntries(
|
|
@@ -62,9 +64,13 @@ export default Object.fromEntries(
|
|
|
62
64
|
);
|
|
63
65
|
```
|
|
64
66
|
|
|
65
|
-
文件是 `evals/swelancer.eval.ts`、key 是 `15193` 时,ID 就是 `swelancer/15193`。key
|
|
67
|
+
文件是 `evals/swelancer.eval.ts`、key 是 `15193` 时,ID 就是 `swelancer/15193`。key 必须是一个非空的路径片段:不能是 `.` 或 `..`,不能含 `/`、`\\` 或控制字符。NiceEval 按 key 的字典序排列,数据源返回的顺序变了,运行顺序和 ID 都不变。
|
|
68
|
+
|
|
69
|
+
运行前可以用 `pnpm exec niceeval exp local sql --dry` 确认生成了哪些 ID、一共多少条。
|
|
70
|
+
|
|
71
|
+
## 从 YAML 或 JSON 读取测试集
|
|
66
72
|
|
|
67
|
-
|
|
73
|
+
样例多了以后,放进单独的数据文件更好维护。用 `loadYaml` 或 `loadJson` 读取,并传入一个校验函数:
|
|
68
74
|
|
|
69
75
|
```ts
|
|
70
76
|
import { loadYaml } from "niceeval/loaders";
|
|
@@ -84,32 +90,36 @@ cases:
|
|
|
84
90
|
sql: SELECT COUNT(*) FROM users;
|
|
85
91
|
```
|
|
86
92
|
|
|
87
|
-
`loadYaml`
|
|
93
|
+
`loadYaml` 和 `loadJson` 必须传入校验函数(decoder)。文件内容只在校验函数里以未知类型出现;校验通过后,返回值就是带类型的数据,可以直接使用。数据文件格式不对时,校验函数会报错,这个评估文件加载失败。
|
|
88
94
|
|
|
89
|
-
##
|
|
95
|
+
## 只跑测试集里的一部分
|
|
96
|
+
|
|
97
|
+
在 Experiment 后面写评估用例 ID 前缀,就能只跑其中几条:
|
|
90
98
|
|
|
91
99
|
```bash
|
|
92
100
|
# 运行整个测试集
|
|
93
|
-
|
|
101
|
+
pnpm exec niceeval exp local sql
|
|
94
102
|
|
|
95
|
-
#
|
|
96
|
-
|
|
103
|
+
# 只运行数组里的第一条
|
|
104
|
+
pnpm exec niceeval exp local sql/0000
|
|
97
105
|
|
|
98
|
-
#
|
|
99
|
-
|
|
106
|
+
# 运行对象导出里的一条
|
|
107
|
+
pnpm exec niceeval exp local swelancer/15193
|
|
100
108
|
```
|
|
101
109
|
|
|
102
|
-
|
|
110
|
+
跑完后用 `pnpm exec niceeval show` 在终端查看结果,或用 `pnpm exec niceeval view` 在浏览器里查看。每条样例都是独立的评估用例,失败的那几条会单独列出。
|
|
111
|
+
|
|
112
|
+
## 选择测试集还是独立文件
|
|
103
113
|
|
|
104
114
|
<Tabs>
|
|
105
115
|
<Tab title="使用测试集">
|
|
106
|
-
|
|
116
|
+
每条样例的流程完全一样,只有输入和预期输出不同。
|
|
107
117
|
</Tab>
|
|
108
118
|
<Tab title="使用独立文件">
|
|
109
|
-
|
|
119
|
+
每条有不同的流程、不同的断言,或需要不同的 Agent 配置。
|
|
110
120
|
</Tab>
|
|
111
121
|
</Tabs>
|
|
112
122
|
|
|
113
123
|
<Tip>
|
|
114
|
-
|
|
124
|
+
测试集适合用大量同类样例覆盖一个功能,独立的评估用例文件适合流程复杂的场景。
|
|
115
125
|
</Tip>
|
|
@@ -1,32 +1,35 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "运行前检查 Sandbox
|
|
2
|
+
title: "运行前检查 Sandbox 会怎样准备"
|
|
3
3
|
sidebarTitle: "检查 Sandbox 计划"
|
|
4
|
-
description: "用 niceeval debug
|
|
4
|
+
description: "用 niceeval debug 列出一条评估在 Sandbox 里会按什么顺序准备、安装、执行和收尾,以及每一步的实际参数,不创建任何资源。"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
你在 Experiment、评估组和评估用例上都写了 `.before()`,又给 Agent 配了安装步骤。真正跑起来之前,你想确认这些步骤最终按什么顺序执行、每一步的参数是什么,而不是等 Sandbox 建好、装了五分钟依赖之后才发现顺序不对。
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
`exp --dry` 告诉你会跑哪些评估、多少次。`niceeval debug` 更进一步:它列出某一条评估在 Sandbox 里的完整准备、安装、执行和收尾步骤,不创建任何 Sandbox,也不调用模型。
|
|
10
|
+
|
|
11
|
+
## 选定一个 Experiment 和一条评估用例
|
|
12
|
+
|
|
13
|
+
`debug` 一次只看一个 Experiment 下的一条评估用例:
|
|
10
14
|
|
|
11
15
|
```sh
|
|
12
16
|
pnpm exec niceeval debug compare/codex memory/commit0
|
|
13
17
|
```
|
|
14
18
|
|
|
15
|
-
|
|
19
|
+
两个参数都必须只命中一个。精确 ID 优先;前缀命中多个时,CLI 会列出候选并停止,你从中复制完整 ID 再运行一次。
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
评估用例只能从这个 Experiment 已经选中的范围里找。选中评估组里的一条时,计划不会把同组其它评估用例加进来,但仍会显示评估组贡献的准备步骤。
|
|
18
22
|
|
|
19
|
-
##
|
|
23
|
+
## 按顺序读计划
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
输出用分层的框展示:最外层是 Experiment,往里依次是每个 Attempt 和它的各个生命周期步骤。每个 `sandbox.before` 步骤会显示:
|
|
22
26
|
|
|
23
|
-
- owner
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
- Provider
|
|
28
|
-
-
|
|
29
|
-
- `cache.state` 的 `declared`、`cumulative`、`providerCoverage` 和 `barrier`。
|
|
27
|
+
- 这一步由谁声明(`owner`)和它的 ID(`action`);
|
|
28
|
+
- 它最终的执行序号,以及属于哪条评估用例;
|
|
29
|
+
- 你填写的 `changeFrequency` 数值、它从哪里来、对应哪个 preset;
|
|
30
|
+
- 它依赖哪些步骤、为什么排在这个位置,以及它在哪一层执行(`occurrence`,当前固定为 `attempt`);
|
|
31
|
+
- Provider 能不能缓存这一步,以及运行时还没有检查的缓存状态;
|
|
32
|
+
- 这一步能否从缓存恢复(`cache.state` 的 `declared`、`cumulative`、`providerCoverage` 和 `barrier`)。
|
|
30
33
|
|
|
31
34
|
```text
|
|
32
35
|
╭─ sandbox.before ───────────────────────────────── EXACT ─╮
|
|
@@ -44,33 +47,37 @@ Human 输出使用分层框,不把所有步骤压成一段文本。顶层是 E
|
|
|
44
47
|
╰─────────────────────────────────────────────────────────╯
|
|
45
48
|
```
|
|
46
49
|
|
|
47
|
-
|
|
50
|
+
`execution order` 是真实运行时的顺序,不是你在代码里写下的顺序。排序规则是:依赖总是先执行;几个步骤都可以执行时,`changeFrequency` 数值小的先执行;数值也相同时,按声明者和声明先后决定。所以评估组里很少变化的步骤,可以排在 Experiment 里经常变化的步骤前面。
|
|
51
|
+
|
|
52
|
+
## 判断哪些步骤能从缓存恢复
|
|
53
|
+
|
|
54
|
+
- `declared` 是这一步自己声明会改变的状态。
|
|
55
|
+
- `cumulative` 包含它和它之前所有准备步骤会改变的状态。
|
|
56
|
+
- `providerCoverage` 说明 Provider 实际能恢复的范围。
|
|
57
|
+
- `barrier` 不是 `none` 时,输出还会给出 `barrierActionId`,指出第一个无法缓存的步骤。原因可能是它的状态声明是默认的 `all`、是 `opaque`,或者 Provider 不支持。这一步和它之后的所有步骤都会真实执行。
|
|
58
|
+
|
|
59
|
+
## 确认命令和参数
|
|
48
60
|
|
|
49
|
-
|
|
50
|
-
说明 Provider 实际能恢复的范围。`barrier` 不是 `none` 时,输出还会给出 `barrierActionId`;它指出第一个
|
|
51
|
-
默认 `all`、`opaque` 或不受支持的 Action。该 Action 和所有后缀会真实执行。
|
|
61
|
+
写死的命令步骤会显示命令的形状。普通的 callback 标为 `OPAQUE`,因为它只能在运行时执行,`debug` 看不到里面做了什么。
|
|
52
62
|
|
|
53
|
-
|
|
63
|
+
环境变量只显示变量名和摘要,stdin 只显示摘要和字节数。凭据值、stdin 原文和不安全的远端地址不会出现在终端或 JSON 输出里。
|
|
54
64
|
|
|
55
|
-
##
|
|
65
|
+
## 让工具读取计划
|
|
56
66
|
|
|
57
67
|
```sh
|
|
58
68
|
pnpm exec niceeval debug compare/codex memory/commit0 --json > debug-plan.json
|
|
59
69
|
```
|
|
60
70
|
|
|
61
|
-
JSON
|
|
62
|
-
`changeFrequency`、`dependencies`、`occurrence` 和 `cache`。
|
|
71
|
+
JSON 和终端输出是同一份计划,只是去掉了框线。每个步骤带 `declarationOrder`、`executionOrder`、`changeFrequency`、`dependencies`、`occurrence` 和 `cache`。
|
|
63
72
|
|
|
64
|
-
`cache.state`
|
|
65
|
-
`barrierActionId`;可确定的 Action 还给出 `cache.prefixIdentity`。`cache.lookup` 与
|
|
66
|
-
`cache.runtime.finalKey` 固定是 `not-probed`,`cache.runtime.status` 是 `pending`,因为 debug 不读取运行时缓存 inventory。
|
|
73
|
+
`cache.state` 总会给出 `declared`、`cumulative`、`providerCoverage`、`barrier`,有 barrier 时再给出 `barrierActionId`;能确定的步骤还会给出 `cache.prefixIdentity`。`debug` 不读取运行时的缓存,所以 `cache.lookup` 与 `cache.runtime.finalKey` 总是 `not-probed`,`cache.runtime.status` 总是 `pending`。
|
|
67
74
|
|
|
68
|
-
`debug` 只接受 `--json
|
|
75
|
+
`debug` 只接受 `--json`。预算、重跑、并发这些运行参数对它不适用。
|
|
69
76
|
|
|
70
|
-
##
|
|
77
|
+
## 它不会创建任何资源
|
|
71
78
|
|
|
72
|
-
`debug` 不运行 before callback、test、after、ensure 或 Provider
|
|
79
|
+
`debug` 不运行 before callback、test、after、ensure 或 Provider 的收尾函数,也不创建 Run、锁、Sandbox 或构建任务,不写入结果文件。
|
|
73
80
|
|
|
74
|
-
|
|
81
|
+
它会加载你的 Experiment 定义并执行 `evals` 选择函数。Provider 在规划时也可能读取本地文件、调用只读 CLI 或查询远端服务,所以仍然只在可信项目里运行它。
|
|
75
82
|
|
|
76
|
-
|
|
83
|
+
要确认跑哪些题、每题跑几次,用[运行前确认跑哪些、跑几次](/zh/tutorials/select-and-preview)。真实运行失败后需要进入现场时,用[保留 Sandbox 现场排查问题](/zh/troubleshooting/debug-sandbox)。
|