dsh-ptc-plus 0.4.10 → 0.5.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/README.en.md +65 -127
- package/README.md +65 -127
- package/assets/dsh-ptc-plus-banner-en.webp +0 -0
- package/assets/dsh-ptc-plus-banner-zh.webp +0 -0
- package/assets/ptc-plus-repl-workspace-en.png +0 -0
- package/assets/ptc-plus-repl-workspace-zh.png +0 -0
- package/assets/ptc-plus-settings-en.png +0 -0
- package/assets/ptc-plus-settings-zh.png +0 -0
- package/client.cjs +42702 -0
- package/cordis.patch.yml +1 -0
- package/docs/README.md +6 -2
- package/docs/adr/0005-temporary-rejected-cell-edit-transport.md +31 -198
- package/docs/adr/0008-define-agent-operating-contract.md +5 -1
- package/docs/adr/0009-bound-expensive-acceptance-default.md +2 -2
- package/docs/adr/0016-archive-resolved-review-findings.md +1 -1
- package/docs/adr/0017-track-the-latest-dsh-public-surface.md +4 -4
- package/docs/adr/0019-plugin-settings-and-kill-switch.md +1 -1
- package/docs/adr/0020-optional-cordis-tools-in-ptc-mode.md +1 -1
- package/docs/adr/0022-stage-npm-releases-with-oidc.md +4 -2
- package/docs/adr/0023-global-user-bindings.md +2 -0
- package/docs/adr/0026-persist-the-delivery-verdict-against-the-verified-candidate.md +2 -0
- package/docs/adr/0028-attach-to-the-host-ptc-execution-seam.md +25 -23
- package/docs/adr/0031-close-semantic-obligations-by-owner.md +1 -1
- package/docs/adr/0034-keep-program-values-separate-from-output-projections.md +29 -0
- package/docs/adr/0035-run-coverage-only-before-a-new-release.md +27 -0
- package/docs/adr/0036-separate-focused-development-from-delivery-verification.md +29 -0
- package/docs/adr/0037-keep-tool-hover-previews-passive.md +52 -0
- package/docs/adr/0038-freeze-session-capability-plans.md +71 -0
- package/docs/adr/0039-verify-documentation-without-runtime-suites.md +29 -0
- package/docs/adr/0040-separate-capability-configurations-from-session-observations.md +39 -0
- package/docs/adr/0041-record-cell-execution-directories.md +65 -0
- package/docs/adr/0042-persist-provider-availability-and-handback.md +41 -0
- package/docs/adr/0043-compose-capability-and-context-policies.md +37 -0
- package/docs/adr/0044-coexist-with-the-official-persistent-repl.md +35 -0
- package/docs/adr/README.md +8 -0
- package/docs/architecture.md +23 -25
- package/docs/capability-planning-components.md +93 -0
- package/docs/capability-projection.md +7 -0
- package/docs/client-ui.md +70 -23
- package/docs/client-visual-contract.md +26 -9
- package/docs/context-management.md +22 -0
- package/docs/context-optimization-plan.md +353 -0
- package/docs/context-public-interface-coverage.md +25 -0
- package/docs/durability-design.md +20 -15
- package/docs/evaluation.md +41 -6
- package/docs/evaluations/command-goat-deepseek-v4.1-flash-20261006.md +126 -0
- package/docs/evaluations/command-goat-deepseek-v4.1-flash.md +281 -0
- package/docs/installation.md +33 -10
- package/docs/program-data-plane.md +5 -3
- package/docs/publishing.md +7 -7
- package/docs/release-coverage.md +73 -0
- package/docs/release-notes.md +1 -1
- package/docs/review-procedure.md +56 -0
- package/docs/runtime-reference.md +53 -16
- package/docs/semantic-validation.md +14 -2
- package/docs/stateful-binding-updates-proposal.md +2 -2
- package/docs/user-bindings.md +1 -1
- package/docs/value-wire.md +11 -1
- package/docs/verification-optimization-work.md +26 -15
- package/docs/verification.md +30 -88
- package/index.js +146 -20
- package/internal/binding-toggle-receipt.js +24 -0
- package/internal/capability-command-receipt.js +31 -0
- package/internal/capability-environment.js +1253 -0
- package/internal/capability-plan.js +285 -0
- package/internal/capability-policy.js +96 -0
- package/internal/capability-statistics-store.js +180 -0
- package/internal/capability-statistics.js +214 -0
- package/internal/config-spec.js +89 -10
- package/internal/direct-surface-owner.js +27 -29
- package/internal/dynamic-environment-runtime.js +9 -9
- package/internal/edit-transport-owner.js +195 -140
- package/internal/execution-provider-owner.js +40 -12
- package/internal/execution-seam-compat.js +26 -8
- package/internal/kernel-worker.js +104 -32
- package/internal/native-root-dynamic.js +12 -13
- package/internal/official-repl-priority.js +51 -0
- package/internal/program-bindings.js +190 -0
- package/internal/recovery-tips.js +3 -2
- package/internal/rejected-cell-editor.js +8 -8
- package/internal/repl-observation-interest.js +11 -3
- package/internal/rpc-contract.js +1 -0
- package/internal/runtime-bridge-owner.js +275 -34
- package/internal/runtime-config.js +58 -0
- package/internal/runtime-contexts.js +74 -5
- package/internal/runtime-intrinsics.js +1 -0
- package/internal/runtime-messages.js +41 -0
- package/internal/sdk-projection.js +10 -82
- package/internal/session-cell-executor.js +42 -19
- package/internal/session-events.js +34 -0
- package/internal/session-journal-recovery.js +234 -11
- package/internal/session-journal-schema.js +6 -3
- package/internal/session-journal.js +31 -2
- package/internal/session-log-view.js +1 -1
- package/internal/session-runtime.js +119 -15
- package/internal/settings-compat.js +12 -5
- package/internal/stateful-module-compiler.js +3 -2
- package/internal/stateful-module-runtime.js +7 -3
- package/internal/stateful-root-runtime.js +9 -4
- package/internal/user-binding-authoring.js +2 -7
- package/internal/user-bindings-owner.js +19 -2
- package/internal/validated-parse-repair.js +1 -1
- package/internal/value-wire.js +68 -21
- package/internal/worker-cwd-virtualization.js +20 -18
- package/internal/worker-realm-surfaces.js +3 -3
- package/package.json +49 -30
- package/src/client-activity.js +3 -2
- package/src/client-authoring-view.js +67 -30
- package/src/client-binding-review.js +2 -1
- package/src/client-binding-toggle.js +18 -0
- package/src/client-capabilities-view.js +1555 -0
- package/src/client-capability-sort.js +29 -0
- package/src/client-copy.js +923 -8
- package/src/client-feature-gates.js +3 -0
- package/src/client-indicator-view.js +4 -6
- package/src/client-primitives.js +33 -2
- package/src/client-repl-view.js +20 -13
- package/src/client-settings-view.js +411 -41
- package/src/client-styles.js +112 -15
- package/src/client-tool-hover.js +185 -0
- package/src/client-tool-view.js +45 -9
- package/src/client-transport.js +44 -9
- package/src/client-workbench.js +6 -7
- package/src/client.js +76 -22
- package/client.js +0 -32479
package/docs/evaluation.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
The model-backed runners support native Windows paths and WSL repositories mounted as `/mnt/<drive>/...`. They invoke the Windows DSH installation through `pwsh.exe`; the Windows process environment must resolve `dsh --version` and a drive-qualified `DSH_HOME` or user-profile `.dsh` directory. Native Linux and macOS DSH execution are not supported by these runners.
|
|
6
6
|
|
|
7
|
-
Both entrypoints validate path conversion, PowerShell startup, the installed DSH command, and the Windows DSH home before creating evaluation artifacts or installing the development plugin. A public Node preload runs a keyless real-worker probe before the DSH version command: it checks persistent bindings, syntax rejection, synchronous and awaited exceptions, and explicit return. The probe owns and cleans its worker scratch directory. A failure uses `PTC-EVAL-PREREQ` and prevents model work.
|
|
7
|
+
Both entrypoints validate path conversion, PowerShell startup, the installed DSH command, and the Windows DSH home before creating evaluation artifacts or installing the development plugin. A public Node preload runs a keyless real-worker probe before the DSH version command: it checks persistent bindings, syntax rejection, synchronous and awaited exceptions, and explicit return. The launcher consumes its probe request before creating helpers, so inherited preloads cannot recursively repeat it. The probe owns and cleans its worker scratch directory. A failure uses `PTC-EVAL-PREREQ` and prevents model work.
|
|
8
8
|
|
|
9
9
|
The actual `process.version`, `process.execPath`, DSH JavaScript entry, and observed release are recorded in manifests; subsequent DSH invocations use that exact Node executable and entry. Do not launch a probe through `npm exec node`, which can resolve a different runtime. The release is evidence, not a behavior selector or compatibility gate. Keep the selected installation and repository DSH dependencies current.
|
|
10
10
|
|
|
@@ -44,21 +44,33 @@ Self-hosting acceptance against the active PTC Plus checkout is a separate track
|
|
|
44
44
|
|
|
45
45
|
The paired run uses the latest installed DSH release, a configured model, PTC mode's code-only direct-tool projection, and `danger-full-access`. The A/B task set contains ordinary project tasks plus a cheap machine-checkable canary that directly invokes `run_code` once and exercises the transport first. After the canary pair passes, the remaining pairs run with the configured concurrency.
|
|
46
46
|
|
|
47
|
-
Resolved configurations are identical except for `ptc-plus.disabled`. Agent instructions, skills, auxiliary title generation, and local identity extensions are disabled. The model route, permission mode, neutral persona,
|
|
47
|
+
Resolved configurations are identical except for `ptc-plus.disabled`. Agent instructions, skills, auxiliary title generation, and local identity extensions are disabled. The model route, permission mode, neutral persona, fixture bytes, resolved tool surface and initial context unrelated to treatment stay paired within each run. The neutral persona uses only prompt variables every supported Host release registers, so one fixture resolves across the recorded release matrix. When capability management is explicitly enabled in the isolated profile, validated source-backed capability plans must match the resolved capability settings and are treatment context: reports retain their text and usage, while pairing compares the unchanged Host context separately. Workload descriptors must explicitly allow and bound capability plan, navigation and description sources; unknown or malformed source forms fail the audit. Recovered description subsets accumulate while visible, count toward cumulative bounds and may repeat an entry only after its formal surface removal. Statistics should remain disabled for independent manual-baseline comparisons.
|
|
48
48
|
|
|
49
49
|
The shared overlay selects `tools.mode: ptc` and explicitly projects `sandbox-policy.mode` and `approval.policy`. Before any model work, both runners validate the resolved tools row with the public `ToolRuntime.Config` schema from `@deepseek-ai/dsh-tools`, then check the selected evaluation policy. A successful config dump alone does not validate plugin settings; agreement with a runner-supplied expected string cannot bypass the Host schema. `CONFIG_ONLY` also performs this zero-model schema check. The runners do not rely on child-process environment variables to project these policies across the WSL-to-Windows execution boundary.
|
|
50
50
|
|
|
51
51
|
Each arm executes in an independently named, opaque scratch tree outside the evaluator artifact tree. Treatment names are confined to evaluator-owned records. Blind packets replace the session workspace in descriptions, source, results, and final answers, including Windows, forward-slash, and JSON-escaped spellings, before the arm map is written.
|
|
52
52
|
|
|
53
|
-
Machine budgets are per session and are enforced as failures. Machine evidence comes from
|
|
53
|
+
Machine budgets are per session and are enforced as failures. Machine evidence comes from canonical execution values, workspace postconditions, or runner-owned subprocess results. Free-form final answers are never interpreted with prose or negation matching; their correctness remains `blind-pending` until the blind packet is reviewed. The transport canary requires an actual returned string exactly equal to the fixture package name. A JSON-encoded string containing extra quotation marks, a non-string value, console output, and an absent return do not satisfy that condition. Rendered tool text combines logs and values and cannot establish the return type; neither JSON parsing nor the last output line supplies canonical evidence.
|
|
54
|
+
|
|
55
|
+
The A/B overlays load the same evaluation-only Cordis observer through the public loader. It observes `tools/result`, the frozen final outcome after DSH policy and cancellation, without altering execution, tool schemas, model messages, or durable Session events. Bounded sidecars outside the model workspace retain session/call identity, source SHA-256, return presence/type, exact bounded strings, error outcome, and a separate log count; the observer does not read provider configuration, headers, or credential variables. Synchronous writes finish before the observer returns because the public notification does not await listeners. The baseline canary reads this canonical `run_code` body; the plugin canary reads its validated journal completion wire. Canonical observations preserve `valueWire` for JSON reports and expose decoded `value` only as a non-enumerable in-memory property, so even mismatching BigInt or cyclic values remain reportable failures. Missing, corrupt, duplicate, mismatched or bounded-out canonical evidence is `incomplete`, cannot pass machine acceptance, and stops the remaining paid matrix. Older presentation-only logs remain incomplete for this oracle; later evidence does not rewrite their recorded outcomes.
|
|
56
|
+
|
|
57
|
+
The observer is a new profile entry, so each overlay registers it with the public `insert` patch operation. Configuration tests compose the overlay through DSH's public patch composer against a base without the observer; an update targeting an absent entry cannot establish successful loading.
|
|
58
|
+
|
|
59
|
+
Observer identity comes from the public Agent's `session.id`, including real delegated agents. Canonical sidecars remain under the generated run artifact directory after execution scratch cleanup, so family review can inspect child observations as well as root observations. These files are local evaluation evidence and must not be committed.
|
|
54
60
|
|
|
55
61
|
For `test-gate`, a successfully completed runner-owned subprocess is valid evidence whether the tested project exits zero or nonzero. The observed exit code is recorded, while blind semantic review decides whether the answer reports it correctly. Failure to start or complete the oracle remains a runner failure.
|
|
56
62
|
|
|
57
63
|
Acceptance metrics follow durable session-log semantics. `modelRequests` counts `step/start` events, each representing one logical model loop step. `headerEpochs` counts `request/header` events, while `headerChanges` counts the subset whose reason is `change`; initial and equal resume epochs remain distinct epochs without being changes. `historyReplacements` counts events whose `surfaceOp.op` is `replace`. Provider retries can issue multiple adapter attempts within one logical step, and the current durable log does not expose a complete physical-attempt count, so no report field infers one from headers, assistant messages, or usage.
|
|
58
64
|
|
|
59
|
-
Stable-header acceptance canonicalizes empty fields by DSH rules and compares the
|
|
65
|
+
Stable-header acceptance canonicalizes empty fields by DSH rules and compares the ordered complete tool-schema JSON across every header epoch. Current DSH delivers system text through `system/message`, independently of header changes. The logical Session format selects the evidence contract: format 3 introduced formal system messages and retired `header.system`; missing or invalid format evidence cannot authorize a clean result. Absence of system messages in a modern-format log is damage, not a reason to use the historical branch.
|
|
66
|
+
|
|
67
|
+
For modern logs, the shared system audit validates every request header with public `snapshotSessionEvent`; ordered-surface folding alone does not validate header admission. It then uses the public `foldSurface` and `deriveEventMessage` functions, with the maintained public `imageOffloadProjection`, at request headers and assistant message/attempt boundaries to compare the complete ordered system-text vector consumed by the adapter. Durable message identity, source attribution and text-block segmentation remain audit evidence but do not change equal adapter text. Appending a changed or duplicate prompt fails even when no new header is recorded. A byte-identical formal replacement preserves prompt stability; missing, malformed or uninterpretable surface evidence fails. The leading system message supplies the pi-ai prompt, with its text blocks concatenated without inserted separators; later system messages remain history and are still audited. Historical `header.system` remains bounded header evidence for explicitly recorded pre-format-3 logs; it does not certify a modern ordered surface. Both runners use the same audit for persona, SDK and treatment identification, and the A/B runner also uses it to select sessions.
|
|
68
|
+
|
|
69
|
+
Any unapproved header change fails with the first differing field. `headerPolicy.allowedTransitions` names the exact epoch and route, configuration, or capability condition; `headerPolicy.historyReplacements` declares an exact replacement count and never permits header drift or a system-message change. Hashes remain diagnostic report data rather than the correctness test.
|
|
60
70
|
|
|
61
|
-
The shared Host contract recognizes `series` as an unchanged request header beginning a distinct message series, not a new schema or an inferred provider call. Usage evidence supports both historical standalone `assistant/chunk` events and compact streams in `assistant/message` or `assistant/attempt`. An embedded stream's last usage agrees with its message's accounting; formally linked duplicate storage is counted once, conflicting evidence fails, and reported usage from attempts without a surface message remains part of
|
|
71
|
+
The shared Host contract recognizes `series` as an unchanged request header beginning a distinct message series, not a new schema or an inferred provider call. Usage evidence supports both historical standalone `assistant/chunk` events and compact streams in `assistant/message` or `assistant/attempt`. An embedded stream's last usage agrees with its message's accounting; formally linked duplicate storage is counted once, conflicting evidence fails, and reported usage from attempts without a surface message remains part of reported token traffic. Logical steps, header epochs and physical attempts remain distinct. Missing usage is not a zero-cost claim. An adapter can report initialized zero usage after a failed request; this does not prove that the provider charged nothing. Reported usage cannot establish complete billing.
|
|
72
|
+
|
|
73
|
+
Stored logs pass strict public `sessionFormatCatalog` restoration before logical auditing. The original JSONL bytes and physical format are retained separately from restored logical messages and the exact inherited-event cut. Public migrations own historical interpretation; a restoration failure cannot authorize clean evidence. In WSL, Windows logs are restored by the selected Windows Node executable so absolute-path validation uses the Host execution world. Plain `parseEvents` parses JSONL syntax only and does not establish logical provenance. Both paid runners and the Web smoke reader consume restored events. Official `message.isError` outcomes remain errors even without an outer error field.
|
|
62
74
|
|
|
63
75
|
Runtime-context audits track the binding catalog independently of recovery snapshots. They detect unchanged binding text repeated inside an otherwise changed snapshot, while allowing one reassertion after a formal surface replacement removed its evidence. Model-authored ambient declarations are not plugin catalog injections.
|
|
64
76
|
|
|
@@ -66,7 +78,28 @@ Runtime-context audits track the binding catalog independently of recovery snaps
|
|
|
66
78
|
|
|
67
79
|
The typed program-surface descriptor owns `expect.programWork`: `inspectionSymbols` limits schema expansion, and each `callLimits` entry declares a namespace/member's `maxCalls` and optional `maxCallsPerArguments`. Counts include unsuccessful calls. The fixed fixture is immutable during this task, so its native read is limited to one observation; the parent passes the observed marker into the isolated child as source data. Tree retrieval is limited to one, and find/inspect counts are bounded without requiring one exact source or cell sequence.
|
|
68
80
|
|
|
69
|
-
The shared trajectory collector validates the journal and
|
|
81
|
+
The shared trajectory collector validates the journal and exposes decoded nested arguments as `args` and successful results/completions as `value` for in-memory use. These decoded properties are non-enumerable. JSON reports preserve `argsWire` and `valueWire`, canonical PTC Value Graphs that retain undefined, omitted object properties, explicit null, bigint, cycles, shared references and supported non-JSON types. Readers of persisted reports decode these wire fields with the existing value codec; plain JSON values are not substitutes. Auditing uses structured equality, independent of source spelling or object-key order; missing or corrupt evidence fails. `programWork.observations` reports call counts and `repeatedArgumentCalls` separately from `machineMetrics.repeatedSourceCalls`. A workload needing fresh observations must explicitly allow its counts; these limits never suppress runtime calls or establish effect idempotence.
|
|
82
|
+
|
|
83
|
+
### Managed Session Continuity Cohort
|
|
84
|
+
|
|
85
|
+
Four opt-in scenarios are the model-side entry points for capability management, mid-session Host surface changes and delegated sessions. They stay outside the five-workflow default cohort ([ADR 0009](adr/0009-bound-expensive-acceptance-default.md)) and run through the same runner, fixture configuration and audit contract with an explicit selection:
|
|
86
|
+
|
|
87
|
+
```sh
|
|
88
|
+
DSH_PTC_ACCEPTANCE_SCENARIOS=managed-adaptive-surface,managed-session-resume,managed-surface-change,subagent-continuity \
|
|
89
|
+
DSH_PTC_ACCEPTANCE_PROVIDER=<provider> \
|
|
90
|
+
DSH_PTC_ACCEPTANCE_MODEL=<model> \
|
|
91
|
+
DSH_PTC_ACCEPTANCE_API_KEY_ENV=PROVIDER_API_KEY \
|
|
92
|
+
npm run test:expensive
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The managed variants come from the shared overlay: a frozen capability policy with adaptive allocation over the common baseline, one closed member (`tools.write`) and one explicitly Host-disclosed member (`tools.pwsh`); the surface-change phases additionally disable the `tool-fs` module. Every phase is a separate DSH process, and later phases adopt the recorded session through the Host's public `--session-id` resume, so the cohort exercises the same configuration-change and restoration path an operator uses. Each paid phase consumes the configured route; run the cohort only with explicit consumption authorization, in release preparation or a dedicated QA pass, and expect one single-turn, one two-turn, one three-turn and one root-plus-delegated session.
|
|
96
|
+
|
|
97
|
+
- `managed-adaptive-surface` requires the managed SDK render to declare the Host-disclosed member and the always-callable edit transport while the closed member stays absent from the declaration and the runtime namespace, and the declared member stays callable.
|
|
98
|
+
- `managed-session-resume` requires a routine resume to publish no second capability plan, keep the system prompt byte-stable (zero history replacements) and restore the earlier binding without redeclaration.
|
|
99
|
+
- `managed-surface-change` adds a Host tool after the plan froze, uses it in a durable cell, then removes it and resumes again: the recorded call must still settle, the binding must survive, and no contraction (`PTC-R002`) may be produced.
|
|
100
|
+
- `subagent-continuity` delegates one arithmetic cell to a real subagent and audits the delegated session log — PTC Plus declaration, durable journal, returned product — with the same expectation model.
|
|
101
|
+
|
|
102
|
+
Runtime-context accounting for this cohort allows `capability-plan`, `capability-navigation`, `capability-descriptions`, `capability-contracts` and `runtime-availability` with explicit per-form bounds, and forbids a capability-plan update after the first publication. Host releases differ in details the scenarios deliberately do not depend on: 0.2.0-rc.2 exposes no `working_directory` tool where 0.2.1-alpha releases do, and delegated-session receipts carry different `kind` values. Assertions use stable facts only (session identity, ordered tool schemas, declared members, journal statuses, decoded completions), so a plugin defect stays distinguishable from a Host version difference: a version difference changes the live surface, not the frozen plan, the binding reconstruction or the delegated session's PTC Plus behavior.
|
|
70
103
|
|
|
71
104
|
### Guarded Edit Acceptance
|
|
72
105
|
|
|
@@ -87,6 +120,8 @@ One identity-blinded paired experiment used `opencode-go/deepseek-v4-flash`, the
|
|
|
87
120
|
|
|
88
121
|
In the module-syntax task, PTC Plus completed each repetition in one `run_code`. The other arm failed the static-import requirement in both repetitions, using eight tool calls in total. This stochastic observation is not a performance guarantee. Two PTC Plus sessions and five sessions in the other arm exceeded preset machine budgets, so the overall matrix did not pass machine acceptance. Token traffic includes input, cache-read, cache-write and output tokens. These measurements describe that experiment, not acceptance of subsequent plugin changes.
|
|
89
122
|
|
|
123
|
+
The [2026-10-06 Command Goat / DeepSeek V4.1 Flash report](evaluations/command-goat-deepseek-v4.1-flash-20261006.md) records a separate complete 60-root matrix with four formal children. Both arms completed 24/26 ordinary tasks; PTC Plus's ordinary-family reported traffic was 18.04% higher. Capability probes account for most of its overall completion advantage. The report retains the 6/8 acceptance outcome, the stopped initial pair, exact byte audits, sealed blind scores and cache/billing limits; it does not establish broad savings.
|
|
124
|
+
|
|
90
125
|
## Reporting
|
|
91
126
|
|
|
92
127
|
### Binding Workflow
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Command Goat / DeepSeek V4.1 Flash:2026-10-06 实测
|
|
2
|
+
|
|
3
|
+
本轮确认了跨 cell 状态复用、同名修订、静态模块语法和主子会话隔离的可用性,也保留了模型错误与评估链路缺陷。**没有证明普通任务的广泛成本收益**:包含子代理的 13 类普通任务 reported token traffic 高出 18.04%;全部 15 类高出 16.64%。少量任务更省、直接工具错误更少,不能抵消这一总体结果。
|
|
4
|
+
|
|
5
|
+
本报告与[此前同路线实验](command-goat-deepseek-v4.1-flash.md)分开记录。未挑选有利样本覆盖旧记录,也未因结果调整任务或预算。
|
|
6
|
+
|
|
7
|
+
## 配置与比较范围
|
|
8
|
+
|
|
9
|
+
使用 Command Goat 的 `deepseek/deepseek-v4.1-flash`,通过实验开始时 npm `latest` 安装未经修改的官方 DSH。实际记录为 DSH `0.2.0-rc.2`、Windows Node `v24.14.0`;版本仅标识本次证据。隔离 DSH home 和工作区,正常 profile、凭据存储及官方安装保持原样。
|
|
10
|
+
|
|
11
|
+
受测插件运行时来自提交 `c2858ec91dc75e0a637cebb894de4ef00b889da2`,159 份运行时文件的封存 inventory 与实验结束后的字节完全一致。后续评估观察器修复改变证据采集,不改变这批插件运行时。
|
|
12
|
+
|
|
13
|
+
A/B 固定 15 类任务,每组每类两次,共 60 主会话;正式关联 4 个子代理,两组各 2 个。13 类普通任务为主要分层,`package-name` 和 `static-import-cell` 为能力探针。两组的 provider、model、权限、提示、fixture、Git 初始历史及未提交修改相同,解析后配置唯一处理差异是 `ptc-plus.disabled`。双方都通过相同公开结果 observer 采集规范证据。
|
|
14
|
+
|
|
15
|
+
fixture 为 `ab-node-project-v1` / `1.0.0`,内容 SHA-256 为 `807580baf64e367bb2dc047c389edf471e13077d54d50ee4b3a143c38f0cebd1`。其 greeting 测试原本失败;检查任务正确报告这一失败才符合要求,不能擅自改成全绿。
|
|
16
|
+
|
|
17
|
+
任务、预算和 correctness / efficiency / clarity 各 0–3 分的 rubric 在执行前冻结。完成状态与分数分别报告,效率和表达分不能弥补错误答案。普通任务保留全部失败成本;双方均通过质量要求的配对只作次要分层。独立评分者只读取匿名执行材料和最终文件快照,评分与材料 hash 封存后再关联处理组。静态语法及运行行为仍可能提示分组,身份匿名不保证评分者无法猜测处理组。
|
|
18
|
+
|
|
19
|
+
## 主会话与真实子代理验收
|
|
20
|
+
|
|
21
|
+
冻结的八项验收 **6/8 通过**,覆盖 8 主会话和 1 真实子代理。成功项观察到跨 cell 连续计算、同名修订、静态 import、编辑派生执行和状态隔离;它们是对应路径的执行证据,不能推出任意任务均成功。
|
|
22
|
+
|
|
23
|
+
两项失败原样保留:
|
|
24
|
+
|
|
25
|
+
- 能力探索把 tree/find/inspect 集合一次性返回,11,633 字符超过 8,192 字符内容预算。工具可用不等于模型选择了有界探索。
|
|
26
|
+
- 父会话要求返回 `PARENT:42` 标量,模型实际返回包含该值的对象。子代理误用 `code.run({source})`,又在错误报告对象中引用未定义名称;查看接口和保留状态后,正确签名调用成功,返回 BigInt `2n`,四项检查最终均为 true。父会话的“三个 cell、一次 code.run”概括与实际五个 cell、两次尝试不符。恢复成功不抹去错误,也不证明父模型知道子会话中间过程。
|
|
27
|
+
|
|
28
|
+
验收日志完整处理 236,815 存储字节、738,172 解压字节、294 物理行;严格公开恢复后核对 285 个 own 逻辑事件、36 个逻辑模型步骤、27 对直接调用/结果。两个直接错误分别是预设 syntax 拒绝和子代理 ReferenceError;另有一个被 catch 的 `code.run` 参数错误。日志来源、规范 journal、正式主子身份和已结算流/用量检查通过。
|
|
29
|
+
|
|
30
|
+
| 8 主 + 1 子完整家族 | 未缓存输入 | 输出(含 reasoning) | 缓存读取 | 缓存写入 | Token traffic |
|
|
31
|
+
| --- | ---: | ---: | ---: | ---: | ---: |
|
|
32
|
+
| PTC Plus | 85,511 | 11,038 | 263,168 | 0 | 359,717 |
|
|
33
|
+
|
|
34
|
+
## 停止的首对与评估链路修复
|
|
35
|
+
|
|
36
|
+
最初 A/B 只执行一对 canary,两组都实际返回正确包名,但基线规范结果缺失,机器判定 incomplete 并停止其余 58 主会话。这两次调用的 **32,348 reported token traffic** 和原判定均保留,不回写为通过。
|
|
37
|
+
|
|
38
|
+
三处评估实现缺口已在所属入口修正:新增 profile observer 必须使用公开 `insert`,不能更新不存在的条目;真实 Agent 的公开身份来自 `agent.session.id`,而非测试替身虚构的 `sessionId`;子代理规范结果必须留在保留的 artifact 目录,不能随执行 scratch 清理而消失。公开 profile composer、真实 Agent 和官方 Windows Host 的无模型反例检查区分了修复前后,覆盖主子身份、结果来源、policy、嵌套排除、disposer、提示/schema 稳定及清理后留存。
|
|
39
|
+
|
|
40
|
+
随后重新预登记整个 60 主会话矩阵,任务、rubric、预算和插件运行时字节不变;未选择性重跑不利样本。首对记录为 `2026-10-06T091526-618Z-55431bd3`,完整矩阵记录为 `2026-10-06T100016-332Z-d7e129db`。
|
|
41
|
+
|
|
42
|
+
## A/B 完整家族成本
|
|
43
|
+
|
|
44
|
+
Token traffic 是 reported 的未缓存输入、输出、缓存读取、缓存写入之和,包含所有正式子代理的 own events,继承历史不重复计数。它不是费用账单,也不证明完整 HTTP 尝试计数。此矩阵 64 会话均有已结算步骤、完整 reported usage 和完成 turn;质量是否完成另由任务证据判断。
|
|
45
|
+
|
|
46
|
+
| 全部 15 类任务,各 2 次 | PTC Plus | 无插件 DSH PTC 模式 | PTC Plus 差异 |
|
|
47
|
+
| --- | ---: | ---: | ---: |
|
|
48
|
+
| 主 / 子会话 | 30 / 2 | 30 / 2 | — |
|
|
49
|
+
| 逻辑模型步骤 | 178 | 170 | +4.71% |
|
|
50
|
+
| 直接工具调用 | 149 | 138 | +7.97% |
|
|
51
|
+
| 直接工具错误 | 2 | 4 | -2 次 |
|
|
52
|
+
| 未缓存输入 | 399,208 | 359,509 | +11.04% |
|
|
53
|
+
| 输出(含 reasoning) | 101,659 | 102,775 | -1.09% |
|
|
54
|
+
| 缓存读取 | 1,595,264 | 1,334,784 | +19.51% |
|
|
55
|
+
| 缓存写入 | 0 | 0 | — |
|
|
56
|
+
| Token traffic | 2,096,131 | 1,797,068 | +16.64% |
|
|
57
|
+
| 根进程墙钟中位数 | 27.304 秒 | 22.868 秒 | +19.40% |
|
|
58
|
+
| 根进程墙钟合计 | 1,166.056 秒 | 1,176.105 秒 | -0.85% |
|
|
59
|
+
|
|
60
|
+
墙钟包含宿主启动、工具执行和模型等待,重叠的子代理时间不再次相加。合计略低与中位数更高同时成立,不能概括成“普遍更快”。根会话汇总会遗漏 PTC Plus 252,352、基线 240,655 traffic 的子代理成本;本表使用完整家族。
|
|
61
|
+
|
|
62
|
+
普通任务完整成本为 PTC Plus **2,026,483**、基线 **1,716,776**,差异 **+18.04%**。能力探针为 **69,648 / 80,292**,差异 **-13.26%**。预算总计 18 条超限,涉及 PTC Plus 3 个、基线 5 个根会话;它们与任务质量分别统计,整个矩阵机器验收为 fail。
|
|
63
|
+
|
|
64
|
+
## 封存盲评质量与分层结果
|
|
65
|
+
|
|
66
|
+
| 分层 | PTC Plus 通过 / 总数 | 基线通过 / 总数 | Correctness(PTC Plus / 基线) | 完整家族 traffic(PTC Plus / 基线) | 差异 |
|
|
67
|
+
| --- | ---: | ---: | ---: | ---: | ---: |
|
|
68
|
+
| 全部任务 | 28/30 | 25/30 | 83 / 72(各满分 90) | 2,096,131 / 1,797,068 | +16.64% |
|
|
69
|
+
| 普通任务(主要分层) | 24/26 | 24/26 | 71 / 69(各满分 78) | 2,026,483 / 1,716,776 | +18.04% |
|
|
70
|
+
| 能力探针 | 4/4 | 1/4 | 12 / 3(各满分 12) | 69,648 / 80,292 | -13.26% |
|
|
71
|
+
| 双方均通过的普通配对(次要分层) | 23/23 | 23/23 | 64 / 63(各满分 69) | 1,626,447 / 1,407,171 | +15.58% |
|
|
72
|
+
|
|
73
|
+
全部状态为 PTC Plus 28 通过、2 部分完成、0 失败;基线 25 通过、2 部分完成、3 失败,缺证样本为零。普通任务双方各有 2 部分完成,26 个配对 correctness 为 **3 胜、22 平、1 负**;能力探针为 **3 胜、1 平**。普通层 26 对中 8 对 traffic 更低、18 对更高;降低 traffic 且 correctness 未退步的有 7 对。收益没有广泛覆盖普通任务。
|
|
74
|
+
|
|
75
|
+
| 三项 0–3 rubric 合计 | PTC Plus | 基线 |
|
|
76
|
+
| --- | ---: | ---: |
|
|
77
|
+
| 全部 correctness / efficiency / clarity(各满分 90) | 83 / 59 / 76 | 72 / 56 / 71 |
|
|
78
|
+
| 普通 correctness / efficiency / clarity(各满分 78) | 71 / 47 / 64 | 69 / 46 / 62 |
|
|
79
|
+
|
|
80
|
+
评分是固定 rubric 下的描述性判断,不是统计显著性或普遍质量保证;“通过”允许较小解释错误,correctness 满分要求更严格。失败和部分完成有具体执行依据:基线一项包名返回包含额外引号、两项没有在 cell 中完成静态 import;PTC Plus 一项只读委派实际写了 OS 临时脚本,三份整数样本(PTC Plus 1、基线 2)虽精确分摊守恒,却额外把金额转成 Number 做诊断,违背禁止浮点金额转换的要求。不得把这些错误写成插件序列化缺陷。
|
|
81
|
+
|
|
82
|
+
| 任务(每组两次) | 通过数 PTC Plus / 基线 | Correctness(各满分 6) | Traffic PTC Plus / 基线 | 差异 |
|
|
83
|
+
| --- | ---: | ---: | ---: | ---: |
|
|
84
|
+
| package-name | 2 / 1 | 6 / 3 | 35,000 / 29,509 | +18.61% |
|
|
85
|
+
| orientation | 2 / 2 | 6 / 6 | 145,971 / 145,117 | +0.59% |
|
|
86
|
+
| test-check | 2 / 2 | 6 / 6 | 110,336 / 173,856 | -36.54% |
|
|
87
|
+
| worktree-status | 2 / 2 | 6 / 6 | 53,732 / 47,914 | +12.14% |
|
|
88
|
+
| runtime-requirement | 2 / 2 | 6 / 5 | 61,121 / 66,570 | -8.19% |
|
|
89
|
+
| code-explanation | 2 / 2 | 4 / 5 | 111,262 / 124,202 | -10.42% |
|
|
90
|
+
| small-edit | 2 / 2 | 6 / 6 | 71,809 / 63,160 | +13.69% |
|
|
91
|
+
| negative-fact | 2 / 2 | 6 / 6 | 62,291 / 53,488 | +16.46% |
|
|
92
|
+
| static-import-cell | 2 / 0 | 6 / 0 | 34,648 / 50,783 | -31.77% |
|
|
93
|
+
| numeric-analysis | 2 / 2 | 5 / 5 | 176,847 / 49,340 | +258.43% |
|
|
94
|
+
| cross-file-change | 2 / 2 | 6 / 6 | 201,548 / 170,049 | +18.52% |
|
|
95
|
+
| boundary-repair | 2 / 2 | 6 / 6 | 237,121 / 218,349 | +8.60% |
|
|
96
|
+
| successive-calculation | 2 / 2 | 5 / 4 | 92,350 / 55,416 | +66.65% |
|
|
97
|
+
| delegated-review | 1 / 2 | 4 / 4 | 648,159 / 509,807 | +27.14% |
|
|
98
|
+
| precise-integers | 1 / 0 | 5 / 4 | 53,936 / 39,508 | +36.52% |
|
|
99
|
+
|
|
100
|
+
`test-check`、`runtime-requirement`、`code-explanation` 的合计 traffic 较低;不能据此挑掉其余任务。`numeric-analysis` 的额外模块查找和复核、委派任务的宽泛探索与数千次非独立差分测试,均是本轮实际成本。两份 PTC Plus 连续计算样本第二阶段都选择重新构造数据,而非复用前一 cell 的值,因此它们不构成状态复用节省的证据;真正连续性来自前述专门验收。
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
## 日志、提示和上下文
|
|
104
|
+
|
|
105
|
+
完整矩阵逐字节检查 2,444,071 存储字节、8,677,598 解压字节、3,690 物理行;严格恢复后核对 3,626 own 逻辑事件、348 模型步骤、287 对直接调用/结果及 568 次原生分派。检查覆盖 UTF-8 / JSON、字节范围、正式来源、call/result 身份、流与已结算内容、主子 catalog/header/descriptor 关系和完整家族用量。未出现公开恢复、来源闭合或已结算用量矛盾。
|
|
106
|
+
|
|
107
|
+
直接错误逐项区分:PTC Plus 主会话误用 `fs.createHash`;PTC Plus 子会话未转义报告中的模板字面量;基线一次转义 syntax 错误和三次静态 import 拒绝。前三类是模型代码错误,静态 import 是两组的语言能力差异。没有把预留 greeting 非零退出统称工具错误,也没有把恢复后的成功抹去原错误。未观察到 provider stream failure 或畸形工具 JSON;因此本轮不能评价其修复能力。
|
|
108
|
+
|
|
109
|
+
每个会话的完整有序 system 文本和工具 schema 均保持字节稳定。PTC Plus 为 **30,830 / 3,363** 字节,基线为 **26,954 / 2,130** 字节,分别增加 **3,876 / 1,233** 字节,共 **5,109** 字节固定前缀成本。64 个 runtime snapshot 的插件状态/catalog 段均为空,未观察到此类重复注入;模型重复读取、重建数据和宽泛探索仍消耗上下文。
|
|
110
|
+
|
|
111
|
+
缓存读取占 reported 输入 PTC Plus **79.98%**、基线 **78.78%**。这些计数说明本轮有缓存读取,固定前缀说明会话内字节稳定;它们不能证明插件导致缓存提升、全部 provider 缓存键/TTL 稳定或更低账单。实验没有观察强制 compaction、冷恢复或 provider 重试,相关行为不能由本轮推出。
|
|
112
|
+
|
|
113
|
+
匿名材料在评分前扫描全部文件名、正文和 JSON 键。首次扫描发现两处截断堆栈中的临时工作区 UUID,补齐该身份的匿名投影后重新生成独立材料;原始日志和快照不变,未产生评分或替换样本。修正后的 1,687 份材料、2,946,041 字节通过 728 个已知身份字节形式扫描。源码行为仍可能泄露处理组,盲评结论有此限制。
|
|
114
|
+
|
|
115
|
+
## 证据标识与限制
|
|
116
|
+
|
|
117
|
+
- 冻结任务 SHA-256:`d4293987626bc855c9bcd1a45273ea6bcf068f88b7f1f6a203467a2ac5f3b4fd`。
|
|
118
|
+
- 冻结 rubric SHA-256:`97f5b7da37a644d8c6a4a8dadd0ec086c796832640c51f5bac07b99237eb57a1`。
|
|
119
|
+
- 插件运行时 inventory SHA-256:`f6023506c861356751f666e1d636b86cbde55d4c85c95fbd825fae0b43746903`。
|
|
120
|
+
- 匿名材料 inventory SHA-256:`050646e10ac577f8139123f40cee6dce33e02d9888e42ee8ff6b308e0d53f10e`。
|
|
121
|
+
- 合并评分 SHA-256:`930fc4a446d14ad30c94febe40ad88ae9453bc0527222af9caea409c691553d6`。
|
|
122
|
+
- 封存元数据记录的两个评分分片 SHA-256:`0a29d5ac76bb1ea7cfcf31f681b0d1f46716f52f4e5feddc47f2ca4d39bc110e`、`8bb7f49111992541ee859622cd655422598d71989907f248b40788b9dea301aa`。
|
|
123
|
+
|
|
124
|
+
原始压缩日志、严格恢复记录、逐步审计、最终文件快照、规范 sidecar、合并评分及封存元数据属于保留的本地证据,不随源码提交;上列 hash 标识本次材料,不表示读者仅凭报告就能复算全部原始日志。现有材料可重新计算合并评分和匿名材料 inventory 的哈希;原始评分分片未在保留材料中定位,两个分片哈希仅由封存元数据引用,无法重新计算。验收、停止首对和完整矩阵合计 reported traffic **4,285,264**,三者均保留。
|
|
125
|
+
|
|
126
|
+
样本只有一个 provider/model、一个 fixture、两次重复,不给出普遍性能保证。已观察到的收益是可用的连续计算与模块语言能力,以及本矩阵更少的直接工具错误;普通任务成本收益仍未成立。后续若改提示或执行路径,需要另行预登记新实验,不能改写本轮结论。评估契约见[评测说明](../evaluation.md)。
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
# Command Goat / DeepSeek V4.1 Flash 实测
|
|
2
|
+
|
|
3
|
+
## 结论范围
|
|
4
|
+
|
|
5
|
+
2026-10-05 的真实额度实验使用 Command Goat 的 `deepseek/deepseek-v4.1-flash`,在实验开始时安装官方最新 DSH。记录到的实际宿主为 `0.2.0-rc.2`、Windows Node `v24.14.0`;这些版本只标识本次证据,不是兼容性开关。插件运行时代码为 `0.4.10`、来源提交 `e36b6aab013483c1a2a31b8006a94c0bf704f95c`;本次修改范围是评估器与文档。正常 Windows DSH 配置与凭据存储未改动,实验使用独立 home 与 workspace。
|
|
6
|
+
|
|
7
|
+
验收观察到跨 cell 直接复用、同名函数/类更新、增量编辑、静态 import 和真实主/子代理独立计算及 BigInt 返回。两轮各 60 个根会话的 A/B 都没有证明普遍 token 节省:首轮环境受污染,修正实验完整家族的已报告 traffic 仍比基线高 5.67%。全部失败和成本保留,特定能力收益不能替代普通任务的质量与成本判断。
|
|
8
|
+
|
|
9
|
+
## 真实主/子代理验收
|
|
10
|
+
|
|
11
|
+
首轮 8 个场景的冻结机器结果为 **7/8**。失败场景先声明数值并返回 `declared`,再在独立 cell 复用绑定得到正确和。任务只禁止返回“此值”,oracle 却禁止返回任何值,因此这是验收指令错配。原始失败和用量保留;后续统一三个连续性任务的 setup 指令,明确禁止任何返回值,另行预定一次 durable 补充实验。
|
|
12
|
+
|
|
13
|
+
| 场景 | 冻结机器结果 | 已观察到的实际行为 |
|
|
14
|
+
| --- | --- | --- |
|
|
15
|
+
| 成功/失败 cell 的增量编辑 | 通过 | 两次只发送 delta,含一次故意语法拒绝,修复后正确完成 |
|
|
16
|
+
| Durable 连续绑定 | 失败:指令/oracle 错配 | 两个独立 cell 正确声明和复用;确认字符串触发冻结条件 |
|
|
17
|
+
| Typed program surface | 通过 | 正式能力发现、单次文件读取、单次隔离计算返回完整标记 |
|
|
18
|
+
| Node I/O 后连续计算 | 通过 | 精确字节摘要跨 cell 复用,保持 volatile 分类 |
|
|
19
|
+
| 静态 import | 通过 | 直接静态声明和后续绑定复用成功 |
|
|
20
|
+
| 已有/新增混合解构 | 通过 | 模型未手拆声明,绑定自动适配成功 |
|
|
21
|
+
| 函数/类同名更新 | 通过 | 三个独立 cell 更新并复用新实现 |
|
|
22
|
+
| 真实主/子代理 | 通过 | 主子绑定相互隔离,子代理同名更新、self identity 与隔离 BigInt 运算成功 |
|
|
23
|
+
|
|
24
|
+
首轮包含 8 个主会话和 1 个真实子代理,完整检查 251,524 压缩字节、774,976 解压字节、304 物理行、295 逻辑事件、38 模型循环步骤和 29 对直接调用/结果。原始行分段和文件保留 SHA-256;日志经实际 Windows 官方 Session catalog 严格恢复后,再检查所有 assistant/tool 步骤、来源关系、journal、主子身份和请求表面。
|
|
25
|
+
|
|
26
|
+
取证过程中另外修复了评估器报告的值边界:真实 child 成功返回 `2n`,旧报告直接 JSON.stringify 解码值会失败;现在报告保留 canonical `valueWire`,内存消费者仍使用原类型。循环/共享引用、undefined、非有限数及负零也通过两套报告回归。这属于实验工具缺陷,未改插件值语义;先前付费记录保持原样。
|
|
27
|
+
|
|
28
|
+
结果中有 1 个测试预设语法错误、0 个意外工具错误;未观察到状态丢失、主子绑定泄漏、BigInt 传输错误或插件 catalog 重复注入。self identity 证明的是子环境内的 live 对象关系,不是循环图跨边界传输。BigInt 在隔离计算中返回后仍可进行 BigInt 算术;这不改变 JavaScript 对 BigInt 与 Number 混合算术的规则。
|
|
29
|
+
|
|
30
|
+
每个会话内实际投递的有序 system 文本和完整工具 schema 字节稳定;不同 workspace 的 system 文本为 30,770–30,787 UTF-8 字节,schema 为 3,375 字节。9 个正式 runtime snapshot 未包含插件 catalog/状态段。仍观察到模型重复查询、重复 inspect,以及误选子代理 reasoning block;已有 SDK 指令明确区分这些用途,原生子代理结果由 DSH 拥有,插件没有改写它。
|
|
31
|
+
|
|
32
|
+
| 首轮用量范围 | 未缓存输入 | 输出(含 reasoning) | 缓存读取 | 缓存写入 | Token traffic |
|
|
33
|
+
| --- | ---: | ---: | ---: | ---: | ---: |
|
|
34
|
+
| 8 个主会话 | 84,401 | 13,111 | 239,488 | 0 | 337,000 |
|
|
35
|
+
| 真实子代理 | 2,896 | 1,955 | 45,696 | 0 | 50,547 |
|
|
36
|
+
| 完整会话家族 | **87,297** | **15,066** | **285,184** | **0** | **387,547** |
|
|
37
|
+
|
|
38
|
+
补充实验单独执行 1 个新版 durable 场景:先声明 `19017` 且不返回任何值,再在独立 cell 直接加 `95265`,得到 `114282`。机器判定通过;原始 7/8 不变。补充用量为未缓存输入 8,790、输出 227、缓存读取 16,768、缓存写入 0,traffic 25,785。独立审计完整覆盖 18,583 压缩字节、51,122 解压字节、27 物理行、26 逻辑事件、3 模型步骤和 2 次工具调用,0 错误;系统提示 30,772 字节、schema 3,375 字节稳定,runtime snapshot 没有插件段。正式身份扫描确认此次没有子代理,因此家族用量等于根会话用量。
|
|
39
|
+
|
|
40
|
+
缓存读取占输入为 285,184 / (87,297 + 285,184) = 76.56%。这只是 provider 经 adapter 报告的缓存计数;首轮没有禁用插件的对照,不能将其解释为插件导致的缓存收益。现有 runner 总表仅计主会话;本报告根据正式父子关系及 own-event 边界独立汇总,避免把子代理漏算成节省。
|
|
41
|
+
|
|
42
|
+
## A/B 方法
|
|
43
|
+
|
|
44
|
+
冻结 15 个任务 × 每组 2 次,13 个普通任务为主要分层,强制 transport canary 和静态 import 为两个独立能力探针。两组使用同一 provider/model、权限、任务、fixture、初始 Git 历史与 dirty state;唯一配置处理差异是 `ptc-plus.disabled`。能力探针不能代替普通任务收益。
|
|
45
|
+
|
|
46
|
+
每对先后次序由执行前 run identity 与 task/repetition 的 hash 决定,两组顺序可不同(原轮先 PTC Plus 14 对、先基线 16 对);同一配对按序执行,原机器 canary 判定通过后最多四对并行(下文披露一次假通过)。这降低固定“总先运行某组”的偏差,却没有构成 provider 缓存隔离或时间效应控制。运行选择无数值结果输入,不以有利样本停止。
|
|
47
|
+
|
|
48
|
+
使用 `ab-node-project-v1` / `1.0.0`,fixture SHA-256 为 `807580baf64e367bb2dc047c389edf471e13077d54d50ee4b3a143c38f0cebd1`;任务描述 SHA-256 为 `60ad7a844ddaf9f45c06dbd73e48c21914f51d7ba0192b34e380e89bd5ef470e`。两组保留相同的 greeting 改动和 untracked draft;原 greeting 测试故意不通过,诚实报告该失败是正确答案,顺手改成全绿违反任务。
|
|
49
|
+
|
|
50
|
+
全部尝试和失败保留,不按结果重采样。独立 reviewer 在揭示分组前按照预先冻结的事实/源码/计算 oracle,分别评分 correctness、efficiency、clarity(每项 0–3);先封存评分与证据 hash,再关联分组。统计消费者验证独立提供的评分 seal 与实际字节一致,要求分组映射、报告与评分组成精确 60 样本双射;证据不完整即保留 incomplete 配对,正式主子家族不闭合则不报告完整成本。标签和 workspace identity 隐去,语法本身仍可能提示处理组,因此是身份盲评,不保证 reviewer 无法推测处理。
|
|
51
|
+
|
|
52
|
+
评分规则在付费结果前从任务与 fixture 冻结:correctness 0 为重要结果错误/矛盾的完成宣称/缺少必需产物,1 为重要要求未解决,2 为大体正确但有有限遗漏,3 为所有重要要求有实际证据;证据缺失单独保留 incomplete。efficiency 0–3 分别为严重、实质、轻微无谓工作和适度直接;clarity 0–3 分别为混乱/无依据确定性、明显置信失当、少量歧义和清晰且匹配证据。完成状态判断与分数分开,efficiency 或 clarity 不能补偿 correctness 回退。
|
|
53
|
+
|
|
54
|
+
数值 oracle 独立固定:普通统计和为 77、平均 9.625、中位数 9、样本方差 2287/56;分阶段原均值 9.8、中位数 7,修正后均值 9.2、中位数 7、范围 17。编辑 oracle 检查实际源码与保留 dirty bytes,并用可区分 median/average 的输入验证集成;配置 oracle 区分 retries 的非负安全整数和 timeoutMs 的正安全整数以及非法类型/边界,既有 greeting 失败保持。委派必须有正式 child 关系、实际子结论和主代理独立检查,创建 child 本身不足以证明交付完成。
|
|
55
|
+
|
|
56
|
+
盲评证据包含完整匿名 trajectory、最终文件快照、独立源码后条件与正式子代理 own-event 证据。快照原子替换,包含 ignored 文件,唯一默认排除为 Git 管理元数据;非普通文件或缺失证据保持 incomplete。原始字节私下校验后生成带独立 hash 的匿名源码视图。所有 60 个固定标签保留,缺失材料不被当作成功或删除。
|
|
57
|
+
|
|
58
|
+
比较质量、工具错误、预算与完整家族用量。Token traffic 为未缓存输入 + cacheRead + cacheWrite + 输出,reasoning 已包含在输出中;逻辑步骤不等于物理 HTTP 尝试。所有正式链接子会话只统计 own events,继承历史不重复计费。缺失 usage 不按零计,缓存计数不证明完整账单或因果关系。
|
|
59
|
+
|
|
60
|
+
## 首轮 A/B 的评估环境缺陷
|
|
61
|
+
|
|
62
|
+
第一轮固定 60 个主会话全部完成,正式日志证明另有 4 个子代理。独立匿名评分和原始日志审计分别发现:隔离启动器把 Linux 快照用的 `git` 包装器目录也加入 Windows PATH,PowerShell 因而把该脚本作为文档处理,出现空输出或管道启动错误。模型后续尝试定位 `git.exe`;额外探索的成本不能归因于插件,配置两组共享错误环境也不能保证恢复成本对称。
|
|
63
|
+
|
|
64
|
+
修正在执行世界路由的 owner:Windows 只 prepend Windows launcher 目录,Linux 快照工具只留在 WSL evaluator PATH。真实无模型探针确认原生 Git 与管道工作正常。fixture、source、模型、预算和重复数不改;另外澄清已证歧义的整数任务算法并冻结新实验,完整保留原 60 个样本、评分和用量,不按不利结果挑选替换。
|
|
65
|
+
|
|
66
|
+
| 首轮分层 | PTC Plus 完成 / 总数 | 基线完成 / 总数 | PTC Plus Traffic | 基线 Traffic | Traffic 差异 |
|
|
67
|
+
| --- | ---: | ---: | ---: | ---: | ---: |
|
|
68
|
+
| 全部任务 | 28/30 | 25/30 | 2,663,541 | 2,199,466 | +21.10% |
|
|
69
|
+
| 普通任务(主要分层) | 24/26 | 23/26 | 2,595,123 | 2,075,874 | +25.01% |
|
|
70
|
+
| 能力探针 | 4/4 | 2/4 | 68,418 | 123,592 | -44.64% |
|
|
71
|
+
| 双方均完成的普通配对(次要分层) | 22/22 | 22/22 | 2,391,622 | 1,844,396 | +29.67% |
|
|
72
|
+
|
|
73
|
+
| 首轮任务 | PTC Plus / 基线完成数(各 2 次) | Correctness 合计(各满分 6) | PTC Plus / 基线 Traffic |
|
|
74
|
+
| --- | ---: | ---: | ---: |
|
|
75
|
+
| package-name | 2 / 2 | 6 / 6 | 34,279 / 29,531 |
|
|
76
|
+
| orientation | 2 / 2 | 5 / 5 | 88,780 / 145,494 |
|
|
77
|
+
| test-check | 2 / 1 | 5 / 3 | 192,327 / 222,442 |
|
|
78
|
+
| worktree-status | 2 / 2 | 6 / 6 | 249,383 / 137,605 |
|
|
79
|
+
| runtime-requirement | 2 / 2 | 6 / 6 | 92,157 / 56,099 |
|
|
80
|
+
| code-explanation | 2 / 1 | 4 / 5 | 83,236 / 103,763 |
|
|
81
|
+
| small-edit | 2 / 2 | 6 / 6 | 71,476 / 73,303 |
|
|
82
|
+
| negative-fact | 2 / 2 | 6 / 6 | 90,840 / 58,845 |
|
|
83
|
+
| static-import-cell | 2 / 0 | 6 / 0 | 34,139 / 94,061 |
|
|
84
|
+
| numeric-analysis | 2 / 2 | 4 / 6 | 55,621 / 50,386 |
|
|
85
|
+
| cross-file-change | 2 / 2 | 6 / 4 | 396,339 / 355,778 |
|
|
86
|
+
| boundary-repair | 2 / 2 | 6 / 5 | 424,394 / 356,745 |
|
|
87
|
+
| successive-calculation | 2 / 2 | 6 / 6 | 70,369 / 63,388 |
|
|
88
|
+
| delegated-review | 2 / 2 | 4 / 6 | 693,900 / 400,375 |
|
|
89
|
+
| precise-integers | 0 / 1 | 0 / 2 | 86,301 / 51,651 |
|
|
90
|
+
|
|
91
|
+
首轮盲评还保留了一次基线 test-check 擅自把 dirty greeting 改成测试期望值的失败;检查任务不授权改文件,不能把改成全绿当作检查成功。
|
|
92
|
+
|
|
93
|
+
首轮全部质量:PTC Plus 28 个完成、2 个失败;基线 25 个完成、1 个部分完成、4 个失败。普通配对 correctness 为 5 胜、14 平、7 负;能力探针为 2 胜、2 平。完成表示重要任务条件获得证据支持,仍可含少量事实错误;满分 correctness 更严格。全部成本与双方均完成的次要分层同时保留,后者没有删除原总体中的失败成本。
|
|
94
|
+
|
|
95
|
+
首轮整数任务原文为:“用真实代码处理交易金额字符串 ["9007199254740993","7","-2"],计算精确总和,再按 3:2:1 比例以整数份额分摊(余数依次分配至前面的份额),证明三份之和等于总额。不得转换为浮点金额或损失精度;最终给出十进制结果和检验事实,不改文件。”
|
|
96
|
+
|
|
97
|
+
上述整数任务完成数是**冻结 oracle 匹配分数**,不能直接等同业务计算错误。原 prompt 没明确规定先分别计算带权份额并取整;先取总额的六分之一再乘权重,也符合原措辞并精确守恒,却得到不同份额。独立源头审查用总额 8 给出 [5,2,1] 与 [4,3,1] 两个反例,证明歧义。新实验只澄清该算法:分别 floor(total × weight / 6),再按原份额顺序加一分配剩余整数;所有数值、oracle、预算及其余十四任务不变,原评分封存不重写。
|
|
98
|
+
|
|
99
|
+
原家族包含 60 个根会话与 4 个真实子会话,完整处理 2,731,370 存储字节、9,918,936 解压字节、4,247 物理行及 4,183 逻辑事件;411 模型步骤、347 直接调用、689 原生分派。字节范围、UTF-8、JSON、正式恢复、流与结算一致性、call/result、source 关系、主子身份和用量采用全覆盖检查。独立审阅已逐步完整读取 411/411 步 reasoning、源码、结果与最终回答;64 会话的唯一步骤身份和每步材料 hash/字节复核无遗漏,语义材料共 1,772,057 字节。完全重复的 provider 流与结算已逐字节比对,无需把重复流再算成另一执行步骤。
|
|
100
|
+
|
|
101
|
+
直接结果错误为 PTC Plus 1、基线 6;689 次原生分派中,DSH 原生 isError 为 PTC Plus 1、基线 1(后者为将子代理 ID 当作 job ID 后捕获的 unknown-job 错误),不能与直接错误重复计数。另有 34 次非零 exit(PTC Plus 18、基线 16),多次是保留 fixture 已有 greeting 测试失败,不能全称意外工具错误;15 次文档管道错误甚至可能伴随外层成功和 exit 0。PTC Plus 的错误是模型生成的畸形 glob pattern 被原生工具底层 ripgrep 拒绝。基线包括未定义名称、相对模块解析、三次静态 import 拒绝,以及 BigInt 与 Number 严格比较造成的模型自写断言失败;后者不是序列化失败。 独立核对实际 reasoning 与冻结提示发现:PTC Plus 第一例为构建独立算术证明主动手写十进制加法;第二例明确引用了允许 plain-object BigInt 的正确指导,却仍选择输出字符串。四例都将 BigInt 投影为十进制字符串,只有基线第二例实际 `JSON.stringify` 报告;这四例没有 native 子调用,不能归因于原生 JSON 参数边界。提示/schema 未观察到与 canonical V1 契约冲突,因此不能从这些例子的额外算术代码反推插件误导。shell 的外层成功不保证内部进程 exit code 成功,已分别审阅。PATH 污染影响 18 个根会话(PTC Plus 8、基线 10)、58 次 bare Git 分派与 15 次文档管道错误;不得把恢复探索计为插件缺陷。
|
|
102
|
+
|
|
103
|
+
预算共有 56 条超限记录,涉及 23 个根会话(PTC Plus 12、基线 11);预算超限与重要任务质量分别报告。所有正式主子 model route 相同,用量完整;继承历史不重复计数。未观察到 system、工具 schema 或 runtime-context 约束失败。
|
|
104
|
+
|
|
105
|
+
| 首轮完整家族 | 未缓存输入 | 输出(含 reasoning) | 缓存读取 | 缓存写入 | Token traffic | 模型步骤 | 直接调用 |
|
|
106
|
+
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
|
107
|
+
| PTC Plus | 421,669 | 110,928 | 2,130,944 | 0 | 2,663,541 | 214 | 182 |
|
|
108
|
+
| 基线 | 390,450 | 124,152 | 1,684,864 | 0 | 2,199,466 | 197 | 165 |
|
|
109
|
+
|
|
110
|
+
每个会话的 leading system 和工具 schema 都保持字节稳定;首轮 PTC Plus 为 30,784 / 3,375 字节,基线为 26,954 / 2,130 字节。插件增加 3,830 字节系统说明与 1,245 字节 schema,这是能力的固定上下文成本,不是状态反复注入;32 个 PTC Plus 家族成员的 snapshot 都没有插件 catalog/状态段。较高缓存读取率不能抵消或证明较低账单,静态字节稳定也不证明 provider 的所有缓存键、TTL 与物理请求行为。
|
|
111
|
+
|
|
112
|
+
逐步骤审阅区分了模型事实错误与运行时缺陷:样本中的误称全部数据为奇数、虚假的最优性检验、过宽的输入契约批评、重复测试和大规模 fuzzing,并不证成插件编译/传输错误。首轮没有 capabilities.find/inspect 调用,capabilities.tree 仅一次;不能把 shell 路径恢复探索误写成插件导致的重复能力发现。连续计算任务两次 PTC Plus 都重建第二阶段数据,因此其成本不是直接复用的对照证据;前面的独立连续性验收才观察了真正跨 cell 复用。
|
|
113
|
+
|
|
114
|
+
## 修正路由与明确算法的新实验
|
|
115
|
+
|
|
116
|
+
新协议在模型调用前冻结,配置-only 与完整无模型验证通过后执行全部 60 根会话,正式扫描关联 4 子代理。原轮未替换;修正路由但尚未澄清算法的一次启动在 keyless 阶段停止,模型样本为零。新记录独立封存评分与日志,预算不因结果调高。
|
|
117
|
+
|
|
118
|
+
独立审阅已逐步全文读取 **347/347 已结算步骤**,覆盖全部 64 会话的 reasoning、源码、直接/原生结果、relay 与最终回答;语义材料 1,735,752 字节,唯一 session/assistant 身份和每步 hash 与字节索引闭合,未结算的第 348 次启动保持明确。字节审计完整覆盖 2,411,864 存储字节、8,602,961 解压字节、3,656 物理行、3,592 逻辑事件,285 次直接调用和 561 次原生分派。53 次 Git 相关分派中有 46 次 bare Git,文档管道错误与旧 helper 引用均为零。所选日志通过公开严格恢复、完整流/结算与来源检查,实际 schema 与 system 会话内稳定;两组的固定字节成本与原轮相同,无插件 catalog/状态段重复注入。
|
|
119
|
+
|
|
120
|
+
| 新实验完整家族 | 未缓存输入 | 输出(含 reasoning) | 缓存读取 | 缓存写入 | Token traffic | 已结算模型步骤 | 直接调用 |
|
|
121
|
+
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
|
122
|
+
| PTC Plus | 393,917 | 103,526 | 1,513,856 | 0 | 2,011,299 | 170 | 138 |
|
|
123
|
+
| 基线 | 368,304 | 104,114 | 1,430,912 | 0 | 1,903,330 | 177 | 147 |
|
|
124
|
+
|
|
125
|
+
记录中有 348 次 step/start、347 次已结算 assistant 步骤和 63/64 个 turn/end:一个基线真实子代理开始了第十次请求但没有结算。所有已结算请求都有 usage,未结算请求不按零费用计;此前全家族汇总只统计已落盘用量,不证明完整账单。该基线主代理也只留下中间报告,不能因 child 已创建就判定委派任务完成;另一个基线委派存在真实完成消息和主代理交叉验证。后者声称“独立 3,000 次随机 oracle”,实际源码复制 fixture 算法,零差异没有独立语义证明力。只读核对公开 headless driver 发现,它等待主代理 whenIdle、flush 主 session 后按主 turn 完成退出,不等待全部子代理。本例主代理提前结束使 one-shot 生命周期退出时子请求仍在进行;实际进程 exit 0、无超时。委派交付仍不完整,不能据 exit 0 判定成功,也不能据日志推算 HTTP 取消或该未结算请求的账单。插件不接管宿主调度以掩盖这一结果。
|
|
126
|
+
|
|
127
|
+
| 新实验分层 | PTC Plus 完成 / 总数 | 基线完成 / 总数 | PTC Plus Traffic | 基线 Traffic | Traffic 差异 |
|
|
128
|
+
| --- | ---: | ---: | ---: | ---: | ---: |
|
|
129
|
+
| 全部任务 | 30/30 | 25/30 | 2,011,299 | 1,903,330 | +5.67% |
|
|
130
|
+
| 普通任务(主要分层) | 26/26 | 24/26 | 1,943,053 | 1,822,703 | +6.60% |
|
|
131
|
+
| 能力探针 | 4/4 | 1/4 | 68,246 | 80,627 | -15.36% |
|
|
132
|
+
| 双方均完成的普通配对(次要分层) | 24/24 | 24/24 | 1,585,452 | 1,530,420 | +3.60% |
|
|
133
|
+
|
|
134
|
+
| 新实验任务 | PTC Plus / 基线完成数(各 2 次) | Correctness 合计(各满分 6) | PTC Plus / 基线 Traffic |
|
|
135
|
+
| --- | ---: | ---: | ---: |
|
|
136
|
+
| package-name | 2 / 1 | 6 / 3 | 34,089 / 30,021 |
|
|
137
|
+
| orientation | 2 / 2 | 5 / 4 | 175,452 / 113,806 |
|
|
138
|
+
| test-check | 2 / 2 | 6 / 4 | 129,615 / 173,558 |
|
|
139
|
+
| worktree-status | 2 / 2 | 6 / 6 | 53,615 / 46,468 |
|
|
140
|
+
| runtime-requirement | 2 / 2 | 5 / 6 | 91,986 / 82,141 |
|
|
141
|
+
| code-explanation | 2 / 1 | 5 / 4 | 96,717 / 91,167 |
|
|
142
|
+
| small-edit | 2 / 2 | 6 / 6 | 83,268 / 71,407 |
|
|
143
|
+
| negative-fact | 2 / 2 | 6 / 6 | 71,208 / 71,117 |
|
|
144
|
+
| static-import-cell | 2 / 0 | 6 / 0 | 34,157 / 50,606 |
|
|
145
|
+
| numeric-analysis | 2 / 2 | 5 / 4 | 103,374 / 78,101 |
|
|
146
|
+
| cross-file-change | 2 / 2 | 6 / 6 | 139,054 / 200,617 |
|
|
147
|
+
| boundary-repair | 2 / 2 | 4 / 5 | 174,658 / 199,388 |
|
|
148
|
+
| successive-calculation | 2 / 2 | 6 / 6 | 82,403 / 43,377 |
|
|
149
|
+
| delegated-review | 2 / 1 | 4 / 3 | 702,904 / 604,026 |
|
|
150
|
+
| precise-integers | 2 / 2 | 5 / 5 | 38,799 / 47,530 |
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
独立盲评揭示新实验第一对 transport canary 的基线是假通过:模型实际 `return JSON.stringify(pkg.name)`,返回的是带引号的字符串;旧机器 validator 再次 JSON.parse 展示文本,误将它还原成要求的包名。盲评按原任务判失败,未被机器结果影响。该 pair 不满足冻结的“双方 canary 通过再扩展”条件,矩阵却已执行;故新实验是保留全部结果的描述性证据,不能称为完全遵循预登记门槛的确认性实验。原 paid report 的机器 pass、独立 fail 及全部成本保持原样;不会为纠正此误判重采样。后续评估改用公开 `tools/result` 的执行内 canonical 结果证据;细节见[评估协议](../evaluation.md#protocol)。本轮历史日志不具备该新证据,不回写机器判定。
|
|
154
|
+
|
|
155
|
+
新实验 PTC Plus 30 个完成;基线 25 个完成、1 个部分完成、3 个失败、1 个不完整。普通配对 correctness 为 **5 胜、18 平、2 负、1 不完整**;能力探针为 3 胜、1 平。普通任务的两个非完成基线样本分别是未完成的委派和code-explanation 的部分完成回答。能力探针的三个基线失败包含两次静态 import 不满足指定语法,以及一次返回经 JSON 编码的包名字符串。
|
|
156
|
+
|
|
157
|
+
普通任务 correctness / efficiency / clarity 总分分别为 PTC Plus **69 / 45 / 62**、基线 **65 / 35 / 61**(各项满分 78)。全部任务分别为 **81 / 56 / 74** 与 **68 / 45 / 70**(各项满分 90);不完整项没有虚构完成分数。分数和完成数衡量不同条件,不能把 30/30 理解为所有陈述正确。
|
|
158
|
+
|
|
159
|
+
整数任务四例最终实际结果都满足明确的 floor(total×weight/6) 再按原顺序分配余数规则,但执行与说明仍可出错:基线第二例将 Number 索引 `0` 执行 `i += 1n`,实际抛出 “Cannot mix BigInt and other types”,随后修正成功。这是原生混合算术,不是序列化失败;PTC Plus 第一例主动转换 Number 作诊断后仍声称无浮点,第二例错误写出 T mod 6 = 4(实际 2)。基线第一例文字解释又把已加权基数重复乘权重。正确的最终份额不能掩盖模型证明/说明错误。独立盲评已记录其中一些问题;后续日志审计另行发现 PTC Plus 第二例的模数错误,而该样本冻结评分仍为满分、无 flags。冻结评分保持原样,两种检查的发现不能混为一项。
|
|
160
|
+
|
|
161
|
+
PTC Plus 唯一直接错误为模型 code-explanation 探测结果含函数,插件按不支持的输出域报 `PTC-O001`;随后代码复用仍保留的 `out` 并投影可传输数据后成功。函数可留在会话中继续调用,与把函数放入返回图是不同契约。本轮没有证明任意 JavaScript 对象都可传输,亦未观察到 BigInt canonical 编码失败。
|
|
162
|
+
|
|
163
|
+
错误层次独立对账为 1 个 PTC Plus / 5 个基线直接错误,原生分派 isError 为零;24 次原生非零退出包括 21 次 fixture 已有 greeting 断言失败、两次模型生成的外部 Node 语法错误,以及一次模型错误输出过滤表达式导致空输出与 exit 1。另有一次 `node --test test/` 的 MODULE_NOT_FOUND 被其后的 PowerShell Get-Content 掩盖为总 exit 0,后续针对具体文件的测试成功;非零标记数并非全部内部进程失败数。不得把这些全算成 plugin tool error,也不得仅凭原生 isError 为零称执行全成功。
|
|
164
|
+
|
|
165
|
+
新增语义检查还发现:所有跨文件实现都实际调用了正确 median,但新增测试数据的 median 全都等于 average,因此测试不能拒绝 `median: average(values)`;验收的独立行为 oracle 使用可区分数据,实际实现通过,测试质量缺口另记。边界配置改动正确,部分最终回答误计测试数;数值分析中有模型修复错误公式、正确结果配上错误 Σx² 的情况。两组均有额外搜索、重复测试、console 与 return 重复输出及过度输入域探测,尚无实际证据把这些行为归为插件提示冲突。
|
|
166
|
+
|
|
167
|
+
新冻结预算仍失败:23 条超限(PTC Plus 11、基线 12),涉及两组各 5 个根会话。context 配对失败为零,没有 task machine exception;free-form 正确性仍由独立盲评判定。完整家族 traffic 为 PTC Plus +5.67%,已结算步骤和直接调用更少;这些描述不能以请求减少抵消质量回退,也不能换算账单。
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
## 提示契约修正轮:定向主/子代理 A/B
|
|
171
|
+
|
|
172
|
+
为验证本轮提示契约修正,另以同一 Command Goat / `deepseek/deepseek-v4.1-flash` 路由
|
|
173
|
+
执行四类窄任务,每类两次重复、每次都有完整主会话;两组都启用 PTC Plus,唯一差异是
|
|
174
|
+
冻结的旧/新 `replGuidance`。任务覆盖特殊值观察、明确 JSON 输出、委派文本审查和
|
|
175
|
+
独立 Node 引擎对照。配置预检、安装文件、模型路由、权限、fixture、预算和主/子关系
|
|
176
|
+
均由独立审计核对;子代理只计 own events。独立盲评分者在揭示分组前读取 16 个匿名
|
|
177
|
+
packet 并封存评分,质量 **92/92**,两组每个任务层均无质量下降。
|
|
178
|
+
|
|
179
|
+
解盲后的已报告 token traffic 为候选 **560,403**、控制 **504,030**,候选高 **11.18%**;
|
|
180
|
+
候选 48 个已结算模型步骤、控制 47 个,直接错误分别为 3 和 5。候选在明确 JSON 任务
|
|
181
|
+
两次均避免了控制组出现的一次 literal `\\n` 外部脚本语法失败和一次路径准备错误,
|
|
182
|
+
但独立引擎层仍出现 BigInt 混合算术、原生 JSON.stringify BigInt 拒绝及函数输出边界
|
|
183
|
+
拒绝各类模型选择错误。它们随后都通过保留 binding、编辑或显式投影恢复;这些现象
|
|
184
|
+
不是 PTC Plus codec 丢值,也不证明模型永远遵守提示。委派任务两组都保留正式 child
|
|
185
|
+
完成关系和父级合并证据。
|
|
186
|
+
|
|
187
|
+
因此本轮确认了:run_code schema 与 PTC cell 语言契约一致;特殊值应直接观察,显式
|
|
188
|
+
JSON 是有损格式选择;当前 cell 足够时存在直接 Node module 路径,独立引擎仍可使用;
|
|
189
|
+
authoring SDK 的完整类型结构保持不变。实验支持关闭四条记录的错误归因和入口缺失,
|
|
190
|
+
但没有证明普遍 token、缓存或账单收益,也不能宣称任意 JavaScript 类型都可直接传输。
|
|
191
|
+
完整度量、错误分类和盲评封存 hash 留在 checkout-local 评估材料中,不进入版本库。
|
|
192
|
+
|
|
193
|
+
## 可复现与限制
|
|
194
|
+
|
|
195
|
+
两个仓库入口分别为 `npm run test:expensive` 和 `npm run test:ab`。先按 [配置预检](../evaluation.md#configuration-preflight) 显式配置 provider、model 与凭据变量,分别用专属 CONFIG_ONLY 入口验证隔离配置,再运行已授权模型场景。原始日志、分组映射、凭据及本机路径不进入版本库;本报告只保存方法、汇总结果和结论范围。验收、补充和两轮 A/B 共执行 138 个正式会话(129 根会话、9 子代理),合计已报告 token traffic 为 9,190,968;这不是费用清单,缺失物理尝试不按零费用解释。
|
|
196
|
+
|
|
197
|
+
## 冻结与独立证据标识
|
|
198
|
+
|
|
199
|
+
下列 SHA-256 绑定本次有限结论使用的字节对象。原始材料保留在隔离评估存储中,不随仓库发布;hash 本身不能替代内容、独立评分或重现,也不使未结算请求具有完整账单。评分先封存再关联分组,后续审计核对两组封存 hash 未变。
|
|
200
|
+
|
|
201
|
+
| 对象 | SHA-256 |
|
|
202
|
+
| --- | --- |
|
|
203
|
+
| 修正实验调用前冻结协议 | `f7c94c6abff9daf7ec81a3967f85a901cdc627916e2319a85dbc3579d8e5a0df` |
|
|
204
|
+
| 修正实验冻结中立评分 oracle | `9268d476bcd67037ed69590d02ccbb94936daa5e0038c120055c8cd8a582e459` |
|
|
205
|
+
| 修正实验任务文件 | `d4293987626bc855c9bcd1a45273ea6bcf068f88b7f1f6a203467a2ac5f3b4fd` |
|
|
206
|
+
| 原实验盲评分 | `95343dfac7fd7fe41df7957f65009a649fa06f0864de17c1adf5f2a087834445` |
|
|
207
|
+
| 原实验盲评报告 | `c7131d5c3343c38b3608f5094ec9b30623e69a9e7c895c6934acabb9b37a4176` |
|
|
208
|
+
| 原实验全步骤聚合索引 | `c41ae20ec9fcce51c801cb8a1cc4b4c65b788b53cc6edb3eadb942bd96f03779` |
|
|
209
|
+
| 修正实验匿名材料 inventory | `936f436842a4239ce5d407538cee67978584d55c66a5172e413f97f27a8d1e8c` |
|
|
210
|
+
| 修正实验盲评分 | `f03e01c1cbf579f1f94c2ae178932d6aac541088b98ca5a4a157abe283d0d131` |
|
|
211
|
+
| 修正实验盲评报告 | `fc87e454771bcf712e5d5cb94290ed3e0fa7a34f8ebba4fd45fef981a1e3744f` |
|
|
212
|
+
| 修正实验全步骤聚合索引 | `7b4fa7b68f53cdd333dbb43c175b3192750faaac8a409a176db075eb61b0ebea` |
|
|
213
|
+
| 修正实验语义覆盖闭合 | `b024fca1db2c20dbfa18422c413cc7dad9364725908cb09a5fdca9cc54aa7fab` |
|
|
214
|
+
| 修正实验独立日志审计报告 | `8a658a2d4138c0e0b52fadeddbce4f45da8d8f144231c50d5781bf9ecd210f85` |
|
|
215
|
+
|
|
216
|
+
## 实验任务与冻结预算
|
|
217
|
+
|
|
218
|
+
下表给出修正实验的精确任务。首轮只有 precise-integers 的算法措辞不同,原文及歧义在前文单列;其余十四条逐字相同。预算是单个根会话的验收阈值,完整家族另计。
|
|
219
|
+
|
|
220
|
+
| 任务 ID | 精确任务 |
|
|
221
|
+
| --- | --- |
|
|
222
|
+
| package-name | 请直接调用一次 run_code(不要先调用 capabilities 或其他工具)读取当前项目的 package.json。run_code 必须直接 return name 字段的 JSON 字符串值本身,不要返回对象或数组,也不要 console.log;然后报告该值。 |
|
|
223
|
+
| orientation | 这个项目是做什么的? |
|
|
224
|
+
| test-check | 检查这个项目能否通过测试。 |
|
|
225
|
+
| worktree-status | 这个仓库当前有哪些未提交的变更? |
|
|
226
|
+
| runtime-requirement | 这个项目要求的最低 Node.js 版本是什么? |
|
|
227
|
+
| code-explanation | 解释 internal/value-wire.js 中 projectValueWire 的返回策略。 |
|
|
228
|
+
| small-edit | 在 package.json 中新增 test:unit 脚本,值为 node --test,并验证 JSON 有效。 |
|
|
229
|
+
| negative-fact | README 是否要求 Python 3.12?只报告结论和依据。 |
|
|
230
|
+
| static-import-cell | 在 run_code cell 中直接使用静态 import 声明导入 node:path 的 basename(不要改写为动态导入),用它返回 C:/logs/session.jsonl 的文件名,并报告该文件名。 |
|
|
231
|
+
| numeric-analysis | 读取 data/facts.json 的实际数据,解释其用途;另对 [2,3,5,7,11,13,17,19] 计算和、平均值、中位数、样本方差并核对结果。只读操作,最终给出数据来源和全部数值。 |
|
|
232
|
+
| cross-file-change | 让 lib/processor.js 的 summarize 在保留 count/average 契约基础上增加 median 字段;使用现有 stats 模块中的 median,添加覆盖空数组、奇数和偶数长度的自动化测试,然后运行所有测试。保留已有未提交变更。 |
|
|
233
|
+
| boundary-repair | 修复 internal/config.js:retries 只接受非负安全整数,timeoutMs 只接受正安全整数;无效值恢复现有 defaults。增加负数、零、小数和合法边界测试并运行整个套件,保持其他字段语义及既有未提交变更。 |
|
|
234
|
+
| successive-calculation | 分步骤计算以下固定数据。先读取并保留 [3,7,7,12,20],计算原始平均值与中位数;然后把 12 修正为 9,再计算平均值、中位数和范围;最后解释两阶段差异。每阶段需要用一次真实代码执行得到结果,不要写文件,不预设 REPL 是否保留状态。 |
|
|
235
|
+
| delegated-review | 请委派一个真正的独立子代理只读审查 src/math/stats.js 的平均值和中位数实现,覆盖空数组、奇偶长度、重复值和输入数组是否被排序改变。主代理独立运行少量验证后比较子代理结论,最终给出有依据的审查结果。不要改文件,也不要修改模型路由。 |
|
|
236
|
+
| precise-integers | 用真实代码处理交易金额字符串 ["9007199254740993","7","-2"],计算精确总和,再按 3:2:1 比例分摊。先分别对总额乘以每个权重再除以 6 向下取整,得到三份整数基础份额;把总额减去三份基础份额之和的剩余单位,按原份额顺序依次给前面的份额,每份加一,直到分完。证明三份之和等于总额。不得转换为浮点金额或损失精度;最终给出十进制结果和检验事实,不改文件。 |
|
|
237
|
+
|
|
238
|
+
所有任务的 runtime-context 实验条件相同:两组均为 `{ "allowed": [], "requiredTransitions": [], "maxSnapshotChars": 8192 }`,不允许插件 catalog/状态注入;仅 package-name 为 canary。
|
|
239
|
+
|
|
240
|
+
预算向量依次为 `maxModelRequests / maxDirectCalls / maxSourceChars / maxRepeatedSourceCalls / maxResultChars / maxAssistantChars / maxTokenTraffic / maxRuntimeContextChars`;分别约束逻辑模型步骤、直接调用、源码字符、重复源码、结果字符、回答字符、报告的 token traffic 和 runtime-context 字符。
|
|
241
|
+
|
|
242
|
+
| 任务 | 完整预算向量 |
|
|
243
|
+
| --- | --- |
|
|
244
|
+
| package-name | 4 / 3 / 6000 / 0 / 30000 / 12000 / 40000 / 16000 |
|
|
245
|
+
| orientation | 5 / 4 / 12000 / 0 / 50000 / 20000 / 60000 / 20000 |
|
|
246
|
+
| test-check | 6 / 5 / 16000 / 0 / 100000 / 20000 / 80000 / 24000 |
|
|
247
|
+
| worktree-status | 5 / 4 / 12000 / 0 / 50000 / 20000 / 60000 / 20000 |
|
|
248
|
+
| runtime-requirement | 5 / 4 / 12000 / 0 / 50000 / 20000 / 60000 / 20000 |
|
|
249
|
+
| code-explanation | 6 / 5 / 18000 / 0 / 80000 / 30000 / 80000 / 24000 |
|
|
250
|
+
| small-edit | 6 / 5 / 18000 / 0 / 80000 / 20000 / 80000 / 24000 |
|
|
251
|
+
| negative-fact | 5 / 4 / 12000 / 0 / 50000 / 20000 / 60000 / 20000 |
|
|
252
|
+
| static-import-cell | 5 / 3 / 8000 / 0 / 30000 / 10000 / 50000 / 24000 |
|
|
253
|
+
| numeric-analysis | 12 / 10 / 30000 / 1 / 150000 / 40000 / 240000 / 40000 |
|
|
254
|
+
| cross-file-change | 12 / 10 / 30000 / 1 / 150000 / 40000 / 240000 / 40000 |
|
|
255
|
+
| boundary-repair | 12 / 10 / 30000 / 1 / 150000 / 40000 / 240000 / 40000 |
|
|
256
|
+
| successive-calculation | 12 / 10 / 30000 / 1 / 150000 / 40000 / 240000 / 40000 |
|
|
257
|
+
| delegated-review | 12 / 10 / 30000 / 1 / 150000 / 40000 / 240000 / 40000 |
|
|
258
|
+
| precise-integers | 12 / 10 / 30000 / 1 / 150000 / 40000 / 240000 / 40000 |
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
复现使用顶层数组,每个条目包括 `id`、上表的 `prompt`、完整八维 `machineBudget`、`validator` 和两组 `runtimeContexts`;未设置额外 headerPolicy。Validator 及额外字段如下:
|
|
262
|
+
|
|
263
|
+
| 任务 | validator | 额外字段 |
|
|
264
|
+
| --- | --- | --- |
|
|
265
|
+
| package-name | `package-name` | `{"canary":true}` |
|
|
266
|
+
| orientation | `blind` | 无 |
|
|
267
|
+
| test-check | `test-gate` | 无 |
|
|
268
|
+
| worktree-status | `git-status` | 无 |
|
|
269
|
+
| runtime-requirement | `package-engine` | 无 |
|
|
270
|
+
| code-explanation | `blind` | 无 |
|
|
271
|
+
| small-edit | `package-script` | `{"script":"test:unit","value":"node --test"}` |
|
|
272
|
+
| negative-fact | `readme-phrase` | `{"phrase":"Python 3.12"}` |
|
|
273
|
+
| static-import-cell | `blind` | 无 |
|
|
274
|
+
| numeric-analysis | `blind` | 无 |
|
|
275
|
+
| cross-file-change | `blind` | 无 |
|
|
276
|
+
| boundary-repair | `blind` | 无 |
|
|
277
|
+
| successive-calculation | `blind` | 无 |
|
|
278
|
+
| delegated-review | `blind` | 无 |
|
|
279
|
+
| precise-integers | `blind` | 无 |
|
|
280
|
+
|
|
281
|
+
单一小型 fixture、单一模型路由与每任务两次重复只能提供描述性观测。未预登记或进行统计显著性检验;同一任务的重复也不能当作不同项目的独立样本。不能据此保证任意项目都有收益,也不能证明所有数据类型、冷恢复、所有原生工具、provider 重试、远端缓存规则或实际费用。
|