dsh-fast-mode 1.5.15 → 1.5.16
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/BENCHMARK.md +31 -1
- package/CHANGELOG.md +7 -0
- package/docs/REFERENCE.en.md +1 -1
- package/docs/REFERENCE.md +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
package/BENCHMARK.md
CHANGED
|
@@ -1967,5 +1967,35 @@ python3 bench/suite-run.py --tasks debugfix,ledger,codeimpl --arms off,def15,bud
|
|
|
1967
1967
|
|
|
1968
1968
|
**两处与预注册的偏差,记在这里不掩盖:**
|
|
1969
1969
|
|
|
1970
|
-
1. **判据 5
|
|
1970
|
+
1. **判据 5 的「下发条件」原本没被脚本执行,现已补上并判 FAIL。** 预注册写的是「`D2G_IMPL` 8/8 仍在**第 4 步**收到,`D2G_DBG`/`D2G_MIG` 在第 2 步收到」。实际逐会话扫描:`def15` 8/8/6/7 全在第 4 步,`d2g` 在 `IMPL` 是**第 3 步**、在 `DBG`/`MIG` 是第 2 步。`d2gscore.py` 现在自己调 `d2gsign.py` 断言每个臂的命步(`5 delivery <block> <arm> step N`),输出里 `D2G_IMPL d2g step 4` 一行是 **FAIL**(实际 `[3]`)。`IMPL` 按设计应在 `disciplineEarlyCalls: 2` 下退化成第 4 步,实际提前到了第 3 步 —— 这解释了它为什么没像预期那样完全退化(0.889× 而不是 ≈1.00×),也说明判据 5 的「按条件命中」这一半同样没通过。原先 gate 5 只校验 `exact`/`green`,缺口已修(见上);判据 5 因此是「质量过、下发步位不过」,结论仍是 HOLD。
|
|
1971
1971
|
2. **`delivery audit` 探针不可用。** 报告按固定句式找完成通报,命中 0/16、2/14、0/12。这个探针在本套 fixture 上恒为 0,不能当「任务没交付」的证据;质量结论只引用 `exact`/`green`(21 对全部 1/1)与判据 5 的 0 坏格。
|
|
1972
|
+
|
|
1973
|
+
### 预注册前提检查:提醒之后输出会不会「重新变长」
|
|
1974
|
+
|
|
1975
|
+
`disciplineRepeatAtSteps` 之所以值得一测,前提是「第 4 步的提醒压住输出,之后随着步数增长输出又爬回来」。用 `~/.dsh/fast-mode-metrics.jsonl` 按 sid 联表(会话目录名里带 tag/task/pair/arm,不用猜),取每个会话第一个 turn 的每步 `output`(可见输出 + reasoning,中位),三个 `D2G` 块读出来是:
|
|
1976
|
+
|
|
1977
|
+
| 块 | 臂 | 步 1… | 形状 |
|
|
1978
|
+
|---|---|---|---|
|
|
1979
|
+
| `D2G_IMPL` | `d2g`(第 3 步提醒) | 5162 1562 1007 1132 712 599 186 128 | 单调降,末端几乎停写 |
|
|
1980
|
+
| `D2G_IMPL` | `def15`(第 4 步) | 2083 1681 969 1248 269 140 1910 900 364 1654 631 1866 352 68 | 提醒后在第 7、10、12 步三次反弹 |
|
|
1981
|
+
| `D2G_MIG` | `d2g`(第 2 步) | 120 83 3568 313 393 716 384 282 1244 350 554 178 768 656 | 无单调趋势,长尾在 0.1–1.2k 波动 |
|
|
1982
|
+
| `D2G_MIG` | `def15`(第 4 步) | 155 9080 1090 369 562 1282 1676 1491 1188 2352 462 446 125 350 | 第 4 步后先升后落,峰值在 6–10 步 |
|
|
1983
|
+
|
|
1984
|
+
两点结论(只对这套 fixture):一,`def15` 的「反弹」是存在的(`IMPL` 第 7/10/12 步明显),所以重复提醒的动机不是凭空来的;二,`d2g` 在两块里都没出现同样的反弹——它的提醒本来就更早,长尾步数也少,**现有数据无法证明第 8 步再提醒一次还能压住什么**。所以 `DR8_MIG`(`disciplineRepeatAtSteps: 8`,6 对,预注册判据在文末)照跑,但预期先降为「接近 1.0× 的无操作」,跑完以数字为准。另外说清一点:这些 fixture 的 assistant 可见文字中位只有 0–200 字符,**提醒移动的主要是工具参数与 reasoning 的 token 量,不是「话多」**;`out_geo` 0.478–0.910 说的就是这个量。
|
|
1985
|
+
|
|
1986
|
+
## 结果:`D2` 在 debugfix 上的独立复现(`D2B_DBG`,7 对新会话)
|
|
1987
|
+
|
|
1988
|
+
`D2G` 判 HOLD 之后,`d2`(`disciplineAfterSteps: 2`,无条件第 2 步提醒)唯一还站得住的证据是当初 `D2_DBG` 的 0.535×。为判断那是真效应还是那 7 对的运气,用同协议重跑了一整块新会话(新 pair 编号、ABBA 交错、同一 fixture):
|
|
1989
|
+
|
|
1990
|
+
| 指标 | 数值 |
|
|
1991
|
+
|---|---|
|
|
1992
|
+
| 对数 | 7 / 7 有效,`exact`+`green` 21/21 格全过 |
|
|
1993
|
+
| 几何均值 | **0.717×** |
|
|
1994
|
+
| 中位 | 0.864× |
|
|
1995
|
+
| 总计 | 0.633× |
|
|
1996
|
+
| 更快 | 5 / 7(符号检验 p = 0.45,**不显著**) |
|
|
1997
|
+
| 步骤 | `steps_geo` **1.118×**(平均步数变多) |
|
|
1998
|
+
| 输出 | `out_geo` **0.787×**(输出确实变短) |
|
|
1999
|
+
| 提醒步位 | `def15` 7/7 在第 4 步,`d2` 7/7 在第 2 步 |
|
|
2000
|
+
|
|
2001
|
+
怎么读:方向是复现的(输出变短、整体更快),但**幅度掉到 0.717×,中位只剩 0.864×,7 对里 5 对更快在统计上说明不了问题**;同时 `steps_geo` 1.118× 说明早提醒在这套 debugfix 上会让回合多走一两步——加速来自「每步写得更短」,不是「步数更少」,这和 `D2G_MIG` 的分解(`out` 0.478、`steps` 0.964)是同一套机制。合并原来的 `D2_DBG`(0.535×)与这块(0.717×),`d2` 在 debugfix 上的真实档位大约 **0.6–0.7×,且方差很大(单对 0.236–1.327×)**,所以任何「早提醒稳定快 2 倍」的说法都不成立。
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.5.16(只改文档与判据脚本,代码与 1.5.15 相同)
|
|
4
|
+
|
|
5
|
+
- `BENCHMARK.md` 补两块实测记录:`D2B_DBG`(`d2` 在 debugfix 上的独立复现:7 对几何 0.717×、中位 0.864×、5/7 更快、符号检验 p=0.45、`steps_geo` 1.118×、`out_geo` 0.787×)与「提醒之后输出会不会重新变长」的预注册前提检查(`def15` 有反弹,`d2g` 没有;fixture 里 assistant 可见文字中位 0–200 字符,提醒动的是工具参数与 reasoning 的 token 量)。
|
|
6
|
+
- `D2G` 判据脚本补上判据 5 的执行:`d2gscore.py` 调 `d2gsign.py` 逐臂断言提醒下发步位,`D2G_IMPL` 的 `d2g` 实际在第 3 步(预注册要求第 4 步)判 FAIL,结论仍是 HOLD、默认第 4 步。
|
|
7
|
+
- `DR8_MIG` 的判据落成可执行脚本:`dr8sign.py`(dr8 命中 ≥1、`def15` 命中 0,否则记「未测到」)与 `dr8score.py`(预注册六条,含 `out_geo ≤ 0.95`、赢面 4/6、质量不倒退)。
|
|
8
|
+
- 无配置项变化,默认 `disciplineRepeatAtSteps: 0` 行为不变。
|
|
9
|
+
|
|
3
10
|
## 1.5.15(右键面板第三行;`D2G` 预注册判据判 HOLD)
|
|
4
11
|
|
|
5
12
|
- **面板第三行「工作区清单」**:写共享字段 `workspaceMap`(默认 `false`),三行面板第三项,`readonly` / 写入中禁用,写失败回滚。与另两行一样只写共享字段、不带 `sessions`,不碰按会话的开关状态。`client.test.js` 新增一行测试覆盖「默认关、写入不带 `sessions`、写后按 host 值重绘、再点关掉」,全套 **270 pass**。
|
package/docs/REFERENCE.en.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Reference: principles, configuration and limits
|
|
2
2
|
|
|
3
|
-
This manual describes what **dsh-fast-mode 1.5.
|
|
3
|
+
This manual describes what **dsh-fast-mode 1.5.16** actually does (same code as 1.5.15) (injection behaviour under the default config is identical to 1.5.0; 1.5.14 added the right-click panel and 1.5.15 makes it three rows), matching `index.js`, `src/` and `client.js` in the repository. It is not a brochure: where something can be measured it gets a number, and where it has not been measured it says so.
|
|
4
4
|
|
|
5
5
|
**The one contract: fast mode never changes reasoning effort, the thinking budget, or the model.** The `agent/request` hook does exactly one thing — `await next()`, read the `reasoningEffort` the request already carries for measurement, then return it unchanged. Whatever effort the user picked (the per-session choice in the UI, or the effort pinned by the profile's agent-default-model) is the effort every request uses.
|
|
6
6
|
|
package/docs/REFERENCE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 参考手册:原理、配置与边界
|
|
2
2
|
|
|
3
|
-
本手册描述 **dsh-fast-mode 1.5.
|
|
3
|
+
本手册描述 **dsh-fast-mode 1.5.16** 的实际行为(代码与 1.5.15 相同)(默认配置下的注入行为与 1.5.0 一致;1.5.14 起多了右键面板,1.5.15 面板为三行),对应仓库里的 `index.js`、`src/` 与 `client.js`。它不是宣传页:凡是能测量的地方给出数字,凡是没测量的地方直接说没测量。
|
|
4
4
|
|
|
5
5
|
**唯一的契约:Fast 模式从不改变思考强度、thinking 预算或模型。** `agent/request` 钩子只做一件事——`await next()`,读一下请求携带的 `reasoningEffort` 记进测量,然后原样返回。用户选的是哪一档(会话里的 UI 选择,或者 profile 里 agent-default-model 固定下来的那一档),每个请求就用哪一档。
|
|
6
6
|
|
package/index.js
CHANGED
|
@@ -95,7 +95,7 @@ const TAG = '[fast-mode]'
|
|
|
95
95
|
* Shipped identity of this build. Traced into the debug log so a stale install is
|
|
96
96
|
* visible at a glance, and pinned by a test against `package.json`.
|
|
97
97
|
*/
|
|
98
|
-
export const VERSION = '1.5.
|
|
98
|
+
export const VERSION = '1.5.16'
|
|
99
99
|
const GLOBAL_AGENT = '__global__'
|
|
100
100
|
|
|
101
101
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-fast-mode",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.16",
|
|
4
4
|
"description": "DeepSeek Harness fast mode: same thinking effort, fewer round trips. An adaptive parallel tool fan-out, output discipline that never trims the answer, and a cancellable stall guard. Never changes reasoning effort, the model, or the request body. Provider-agnostic, one dependency (@deepseek-ai/schemastery).",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|