dsh-plugin-bridge 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -4
- package/README.zh.md +10 -4
- package/cordis.patch.yml +2 -1
- package/docs/benchmark.md +2 -0
- package/docs/guide.zh.md +2 -2
- package/lib/cli.js +2 -2
- package/lib/index.js +2 -2
- package/lib/migrate.js +6 -6
- package/package.json +3 -1
- package/reports/dsh-0.1.5-rc.1-compat-2026-09-10.md +64 -0
- package/reports/worker-tier-rc1-2026-09-10.md +49 -0
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
[](https://github.com/Totoro-qaq/dsh-plugin-bridge/actions/workflows/ci.yml)
|
|
10
10
|
[](LICENSE)
|
|
11
11
|
[](package.json)
|
|
12
|
-
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
13
13
|
[](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin)
|
|
14
14
|
[](https://dshfind.com/en/plugins/Totoro-qaq/dsh-plugin-bridge?ref=badge)
|
|
15
15
|
|
|
@@ -35,7 +35,7 @@ dsh plugin --profile web add dsh-plugin-bridge
|
|
|
35
35
|
Pinned GitHub fallback:
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
dsh plugin --profile web add github:Totoro-qaq/dsh-plugin-bridge#v0.3.
|
|
38
|
+
dsh plugin --profile web add github:Totoro-qaq/dsh-plugin-bridge#v0.3.5
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
Then type in the official WebUI:
|
|
@@ -85,6 +85,7 @@ The release gate is intentionally small and reproducible; these are regression r
|
|
|
85
85
|
| Summary worker share of clean acceptance components | **20.74% nominal** |
|
|
86
86
|
| Native WebUI repeat gate (preview / target facts) | **3/3 · 3/3**, five facts each |
|
|
87
87
|
| DSH 0.1.2 alpha.2 / alpha.3 / alpha.5 installed WebUI | **13/13 · ordered-list edit · PTC paused · image → text fallback** |
|
|
88
|
+
| DSH 0.1.5-rc.1 installed WebUI, npm Bridge 0.3.4 | **13/13 · 3/3 migrations · edit reached target · PTC paused · raw image → vision target** |
|
|
88
89
|
|
|
89
90
|
The token percentage varies widely with preset, response length, and cache state. The worker share is composition, not causal overhead versus no Bridge; the stable product claim is one additional confirmation request. Read the [design and evidence boundaries](docs/design.md), [full release report](reports/v0.2.3-e2e-report.md), and [vision report](reports/v0.2.6-rc11-vision-report.md).
|
|
90
91
|
|
|
@@ -120,8 +121,11 @@ The five sections are Goal, Current state, Key decisions and conventions, Key fi
|
|
|
120
121
|
| 0.1.2-alpha.2 / alpha.3 / alpha.5 | Yes | Yes | Official DSH npm hosts: typed controllers 13/13 and PTC auto-open; the alpha.5 gate installed the branch tarball, retained alpha.3 titles, edited ordered lists, fell back from unresolved image to text, and removed cleanly |
|
|
121
122
|
| 0.1.2-rc.1 → 0.1.3-alpha.2 | Yes (Bridge 0.3.3+) | Yes (Bridge 0.3.3+) | Real npm-host upgrade, preserved v2 history/title, exact edited payload, PTC paused goal, image fallback and clean removal; see [acceptance report](reports/dsh-0.1.3-alpha.2-compat-2026-09-08.md) |
|
|
122
123
|
| 0.1.5-alpha.1 | Yes (Bridge 0.3.4+) | Yes (Bridge 0.3.4+) | Official npm host with session format V3: tarball install, served native-card bundle, doctor 13/13 and preset listing on a V3 session; SDK type diff and V3 fold fixtures. Model-backed preview, migration and image fallback were not re-run; see [smoke report](reports/dsh-0.1.5-alpha.1-compat-2026-09-09.md) |
|
|
124
|
+
| 0.1.5-rc.1 | Yes (Bridge 0.3.4+) | Yes (Bridge 0.3.4+) | Official npm host with the published 0.3.4 unchanged: doctor 13/13, native card rendered, three model-backed migrations to PTC with an exact edited handoff and paused goal, and an unresolved image carried to the vision-capable default model; see [acceptance report](reports/dsh-0.1.5-rc.1-compat-2026-09-10.md) |
|
|
123
125
|
|
|
124
|
-
Use Bridge 0.3.4 or later for DSH 0.1.5-alpha.1: DSH published no 0.1.4, and a caret prerelease range such as `^0.1.3-alpha.2` never matches the next prerelease minor, so 0.3.4 adds `^0.1.5-alpha.1` and builds against that SDK with byte-identical `lib/` output. Session format V3 records the system prompt as a `system/message` surface node; Bridge folds only user, assistant and tool events, so prompt text never enters a handoff. Use Bridge 0.3.3 or later for DSH 0.1.3-alpha.2; Bridge 0.3.2 does not include those compatibility changes. The typed adapter reads the default 240-message history window with one fresh `inspect` call instead of four; it does not cache running state. `doctor` checks method availability, not end-to-end compatibility.
|
|
126
|
+
Use Bridge 0.3.4 or later for DSH 0.1.5-alpha.1: DSH published no 0.1.4, and a caret prerelease range such as `^0.1.3-alpha.2` never matches the next prerelease minor, so 0.3.4 adds `^0.1.5-alpha.1` and builds against that SDK with byte-identical `lib/` output. Session format V3 records the system prompt as a `system/message` surface node; Bridge folds only user, assistant and tool events, so prompt text never enters a handoff. Use Bridge 0.3.3 or later for DSH 0.1.3-alpha.2; Bridge 0.3.2 does not include those compatibility changes. The typed adapter reads the default 240-message history window with one fresh `inspect` call instead of four; it does not cache running state. `doctor` checks method availability, not end-to-end compatibility. The same `^0.1.5-alpha.1` range also matches 0.1.5-rc.1 and the 0.1.5 final, so rc.1 needs no new Bridge release.
|
|
127
|
+
|
|
128
|
+
Since 0.3.5 the summary worker follows the conversation's model by default (`modelTier: current`). On DSH 0.1.5-rc.1 that is V4.1-Flash, which matched V4-Pro in the [tier comparison](reports/worker-tier-rc1-2026-09-10.md) at about half the summary time. DSH releases before 0.1.5-rc.1 have no V4.1-Flash, so set `DSH_BRIDGE_TIER=pro` or pass `--tier pro` there.
|
|
125
129
|
|
|
126
130
|
CI covers Node.js 22 and 24. Run `/bridge --doctor` after every Harness upgrade; it names missing required gateway methods instead of failing vaguely.
|
|
127
131
|
|
|
@@ -143,6 +147,8 @@ The server command stays the compatibility core. The same package now adds an op
|
|
|
143
147
|
- [Vision migration report](reports/v0.2.6-rc11-vision-report.md)
|
|
144
148
|
- [Native WebUI repeat acceptance](reports/native-workbench-2026-08-25.md)
|
|
145
149
|
- [DSH 0.1.2-alpha.2 compatibility acceptance](reports/dsh-0.1.2-alpha.2-compat-2026-08-31.md)
|
|
150
|
+
- [DSH 0.1.5-rc.1 compatibility acceptance](reports/dsh-0.1.5-rc.1-compat-2026-09-10.md)
|
|
151
|
+
- [Summary worker tier comparison on DSH 0.1.5-rc.1](reports/worker-tier-rc1-2026-09-10.md)
|
|
146
152
|
- [Historical compression benchmark](docs/benchmark.md)
|
|
147
153
|
|
|
148
154
|
## Development
|
|
@@ -152,7 +158,7 @@ npm ci
|
|
|
152
158
|
npm run verify
|
|
153
159
|
```
|
|
154
160
|
|
|
155
|
-
`verify` builds and type-checks both plugin halves, runs
|
|
161
|
+
`verify` builds and type-checks both plugin halves, runs 177 tests, checks generated `lib/` and datasets, then packs, installs, and imports the actual npm tarball. Tests spend no model tokens. `prepublishOnly` runs the same gate; GitHub releases also require the tag to match `package.json` before trusted npm publishing.
|
|
156
162
|
|
|
157
163
|
Community listings: [Awesome DSH Plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) · [Awesome DeepSeek Harness](https://github.com/Dominic789654/awesome-deepseek-harness)
|
|
158
164
|
|
package/README.zh.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
[](https://github.com/Totoro-qaq/dsh-plugin-bridge/actions/workflows/ci.yml)
|
|
10
10
|
[](LICENSE)
|
|
11
11
|
[](package.json)
|
|
12
|
-
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
13
13
|
[](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin)
|
|
14
14
|
[](https://dshfind.com/zh/plugins/Totoro-qaq/dsh-plugin-bridge?ref=badge)
|
|
15
15
|
|
|
@@ -35,7 +35,7 @@ dsh plugin --profile web add dsh-plugin-bridge
|
|
|
35
35
|
GitHub 固定版本备用路径:
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
dsh plugin --profile web add github:Totoro-qaq/dsh-plugin-bridge#v0.3.
|
|
38
|
+
dsh plugin --profile web add github:Totoro-qaq/dsh-plugin-bridge#v0.3.5
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
然后在官方 WebUI 输入:
|
|
@@ -85,6 +85,7 @@ DSH rc.7 及以上会在官方 WebUI 原生卡片中渲染 `/bridge`。「文本
|
|
|
85
85
|
| 摘要 worker 在干净验收组件中的 nominal 占比 | **20.74%** |
|
|
86
86
|
| 原生 WebUI 重复门禁(预览 / 目标事实) | **3/3 · 3/3**,每次五项 |
|
|
87
87
|
| DSH 0.1.2 alpha.2 / alpha.3 / alpha.5 官方 WebUI 实装 | **13/13 · 编号列表编辑 · PTC 已暂停 · 图片转文本降级** |
|
|
88
|
+
| DSH 0.1.5-rc.1 官方 WebUI 实装,npm Bridge 0.3.4 | **13/13 · 3/3 次迁移 · 编辑逐字送达 · PTC 已暂停 · 原图直达视觉目标** |
|
|
88
89
|
|
|
89
90
|
token 百分比会随 preset、回复长度和缓存状态大幅波动;worker 占比是组成,不是相对“无 Bridge”的因果开销。稳定结论是默认确认多一个请求。边界和原始证据见[设计与证据说明](docs/design.md)、[完整 release report](reports/v0.2.3-e2e-report.md)和[视觉迁移报告](reports/v0.2.6-rc11-vision-report.md)。
|
|
90
91
|
|
|
@@ -120,8 +121,11 @@ token 百分比会随 preset、回复长度和缓存状态大幅波动;worker
|
|
|
120
121
|
| 0.1.2-alpha.2 / alpha.3 / alpha.5 | 支持 | 支持 | 官方 DSH npm 宿主:typed controllers 13/13 与 PTC 自动跳转;alpha.5 门禁安装分支 tarball,保留 alpha.3 标题,编号列表可编辑,未解析图片降级为文本,卸载干净 |
|
|
121
122
|
| 0.1.2-rc.1 → 0.1.3-alpha.2 | 支持(Bridge 0.3.3+) | 支持(Bridge 0.3.3+) | 官方 npm 宿主真实升级、v2 历史与标题保留、编辑内容逐字交接、PTC goal 暂停、图片回退及卸载;见[验收记录](reports/dsh-0.1.3-alpha.2-compat-2026-09-08.md) |
|
|
122
123
|
| 0.1.5-alpha.1 | 支持(Bridge 0.3.4+) | 支持(Bridge 0.3.4+) | 官方 npm 宿主(会话格式 V3):tarball 安装、原生卡片 bundle 已下发、V3 会话上 doctor 13/13 与预设列表;SDK 类型 diff 与 V3 折叠 fixture。未重跑需要模型的预览、迁移与图片回退;见[smoke 记录](reports/dsh-0.1.5-alpha.1-compat-2026-09-09.md) |
|
|
124
|
+
| 0.1.5-rc.1 | 支持(Bridge 0.3.4+) | 支持(Bridge 0.3.4+) | 官方 npm 宿主,已发布的 0.3.4 未改动:doctor 13/13,原生卡片实际渲染,三次真实模型迁移到 PTC,编辑内容逐字交接且 goal 保持暂停,未解析图片以原图交给支持图片的默认模型;见[验收记录](reports/dsh-0.1.5-rc.1-compat-2026-09-10.md) |
|
|
123
125
|
|
|
124
|
-
DSH 0.1.5-alpha.1 请使用 Bridge 0.3.4 或更高版本:DSH 没有发布 0.1.4,而 `^0.1.3-alpha.2` 这类 caret 预发布范围不会匹配下一个预发布 minor,所以 0.3.4 追加 `^0.1.5-alpha.1` 并基于该 SDK 构建,`lib/` 产物逐字节相同。会话格式 V3 把系统提示词记成 `system/message` surface node;Bridge 只折叠用户、助手和工具事件,提示词文本不会进入交接。DSH 0.1.3-alpha.2 请使用 Bridge 0.3.3 或更高版本;Bridge 0.3.2 不包含那些兼容改动。typed adapter 只调用一次 `inspect`,就能读取默认 240 条消息的历史窗口,原来需要四次;不会缓存运行状态。`doctor` 检查方法是否存在,不能代替完整迁移验收。
|
|
126
|
+
DSH 0.1.5-alpha.1 请使用 Bridge 0.3.4 或更高版本:DSH 没有发布 0.1.4,而 `^0.1.3-alpha.2` 这类 caret 预发布范围不会匹配下一个预发布 minor,所以 0.3.4 追加 `^0.1.5-alpha.1` 并基于该 SDK 构建,`lib/` 产物逐字节相同。会话格式 V3 把系统提示词记成 `system/message` surface node;Bridge 只折叠用户、助手和工具事件,提示词文本不会进入交接。DSH 0.1.3-alpha.2 请使用 Bridge 0.3.3 或更高版本;Bridge 0.3.2 不包含那些兼容改动。typed adapter 只调用一次 `inspect`,就能读取默认 240 条消息的历史窗口,原来需要四次;不会缓存运行状态。`doctor` 检查方法是否存在,不能代替完整迁移验收。 同一个 `^0.1.5-alpha.1` 范围也覆盖 0.1.5-rc.1 和之后的 0.1.5 正式版,所以 rc.1 不需要新发 Bridge。
|
|
127
|
+
|
|
128
|
+
0.3.5 起压缩工人默认跟随会话当前模型(`modelTier: current`)。在 DSH 0.1.5-rc.1 上这就是 V4.1-Flash,它在[档位对比](reports/worker-tier-rc1-2026-09-10.md)里与 V4-Pro 打平,摘要用时约减半。DSH 0.1.5-rc.1 之前的版本没有 V4.1-Flash,请设 `DSH_BRIDGE_TIER=pro` 或用 `--tier pro`。
|
|
125
129
|
|
|
126
130
|
CI 覆盖 Node.js 22/24。每次升级 Harness 后先跑 `/bridge --doctor`;缺哪个必要网关方法会被直接点名。
|
|
127
131
|
|
|
@@ -143,6 +147,8 @@ CI 覆盖 Node.js 22/24。每次升级 Harness 后先跑 `/bridge --doctor`;
|
|
|
143
147
|
- [视觉迁移报告](reports/v0.2.6-rc11-vision-report.md)
|
|
144
148
|
- [原生 WebUI 重复验收](reports/native-workbench-2026-08-25.md)
|
|
145
149
|
- [DSH 0.1.2-alpha.2 兼容性验收](reports/dsh-0.1.2-alpha.2-compat-2026-08-31.md)
|
|
150
|
+
- [DSH 0.1.5-rc.1 兼容性验收](reports/dsh-0.1.5-rc.1-compat-2026-09-10.md)
|
|
151
|
+
- [DSH 0.1.5-rc.1 压缩档位对比](reports/worker-tier-rc1-2026-09-10.md)
|
|
146
152
|
- [历史压缩档位 benchmark](docs/benchmark.md)
|
|
147
153
|
|
|
148
154
|
## 开发验证
|
|
@@ -152,7 +158,7 @@ npm ci
|
|
|
152
158
|
npm run verify
|
|
153
159
|
```
|
|
154
160
|
|
|
155
|
-
`verify` 会构建并类型检查插件两端、运行
|
|
161
|
+
`verify` 会构建并类型检查插件两端、运行 177 项测试、核对 `lib/` 与数据集,再把真实 npm tarball 打包、安装并导入。测试不消耗模型 token。`prepublishOnly` 使用同一个 gate;GitHub Release 还会先检查 tag 与 `package.json` 版本一致,再走可信 npm 发布。
|
|
156
162
|
|
|
157
163
|
社区收录:[Awesome DSH Plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) · [Awesome DeepSeek Harness](https://github.com/Dominic789654/awesome-deepseek-harness)
|
|
158
164
|
|
package/cordis.patch.yml
CHANGED
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
- id: bridge
|
|
6
6
|
name: dsh-plugin-bridge
|
|
7
7
|
config:
|
|
8
|
-
|
|
8
|
+
# 默认跟随源会话模型。DSH 0.1.5-rc.1 之前没有 V4.1-Flash,这类宿主建议设 pro。
|
|
9
|
+
modelTier: !!js process.env.DSH_BRIDGE_TIER ?? 'current'
|
|
9
10
|
sourceCharBudget: !!js Number(process.env.DSH_BRIDGE_SOURCE_BUDGET ?? 60000)
|
|
10
11
|
summaryCharBudget: !!js Number(process.env.DSH_BRIDGE_SUMMARY_BUDGET ?? 2400)
|
|
11
12
|
# 上游 goal.create 的部署默认是 256 轮自主循环;交接只需要一轮。
|
package/docs/benchmark.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Bridge 跨模式迁移 · 准确率实验报告
|
|
2
2
|
|
|
3
|
+
> 0.3.5 更新:DSH 0.1.5-rc.1 的 V4.1-Flash 在同样的迁入 minimal 探针条件下与 V4-Pro 打平,默认档位已改为 `current`,见[档位对比](../reports/worker-tier-rc1-2026-09-10.md)。下文仍是 2026-08 基于 V4-Flash 的原始结论。
|
|
4
|
+
|
|
3
5
|
日期:2026-08-17 | 宿主:本地 `dsh web`(默认 127.0.0.1:3080) | 模型:deepseek-v4-flash / deepseek-v4-pro
|
|
4
6
|
脚本:`eval/run.mjs` | 原始数据:`reports/benchmark-2026-08-17.raw.json`(含逐 run token 记账)
|
|
5
7
|
|
package/docs/guide.zh.md
CHANGED
|
@@ -13,7 +13,7 @@ dsh plugin --profile web add dsh-plugin-bridge
|
|
|
13
13
|
需要固定 GitHub tag 或 npm 暂时不可用时:
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
dsh plugin --profile web add github:Totoro-qaq/dsh-plugin-bridge#v0.3.
|
|
16
|
+
dsh plugin --profile web add github:Totoro-qaq/dsh-plugin-bridge#v0.3.5
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
发生了什么(不用手动干预):
|
|
@@ -114,7 +114,7 @@ dsh-bridge migrate --to code --summary-file <path>
|
|
|
114
114
|
|
|
115
115
|
| 配置 | 环境变量 | 默认 | 说明 |
|
|
116
116
|
|---|---|---|---|
|
|
117
|
-
| `modelTier` | `DSH_BRIDGE_TIER` | `
|
|
117
|
+
| `modelTier` | `DSH_BRIDGE_TIER` | `current` | 压缩工人档位,0.3.5 起默认跟随源会话当前模型。DSH 0.1.5-rc.1 的默认模型 V4.1-Flash 在迁移后探针测试里与 V4-Pro 打平(各 50/50、零全灭),摘要用时约减半,见[档位对比](../reports/worker-tier-rc1-2026-09-10.md)。DSH 0.1.5-rc.1 之前没有 V4.1-Flash,会话默认是 V4-Flash,它在 2026-08 的基准里迁入 minimal 时出现过全灭;这类宿主请设 `pro`。`flash` 取同 provider 目录里第一个 flash 类模型 |
|
|
118
118
|
| `sourceCharBudget` | `DSH_BRIDGE_SOURCE_BUDGET` | `60000` | 取材总字符预算(≈30K tokens 输入) |
|
|
119
119
|
| `summaryCharBudget` | `DSH_BRIDGE_SUMMARY_BUDGET` | `2400` | 摘要正文字符预算(≈900 tokens,注入侧成本上限) |
|
|
120
120
|
| `goalRounds` | `DSH_BRIDGE_GOAL_ROUNDS` | `1` | 新会话的自主 goal 轮次上限,见下 |
|
package/lib/cli.js
CHANGED
|
@@ -38,7 +38,7 @@ const HELP = `dsh-bridge · 跨 preset 会话迁移
|
|
|
38
38
|
--quiet 不打印进度
|
|
39
39
|
|
|
40
40
|
preview / run:
|
|
41
|
-
--tier <flash|current|pro> 压缩档位(默认
|
|
41
|
+
--tier <flash|current|pro> 压缩档位(默认 current,跟随源会话模型)
|
|
42
42
|
--provider <id> --model <id> 直接指定压缩模型,跳过档位推断
|
|
43
43
|
--lang <zh|en|auto> 摘要语言(默认 auto,跟着会话内容走)
|
|
44
44
|
--source-budget <n> 取材字符预算(默认 ${SOURCE_CHAR_BUDGET})
|
|
@@ -109,7 +109,7 @@ function resolveSessionId(args) {
|
|
|
109
109
|
+ '如果你是在普通终端里手动跑,请用 --session <id> 指定(`dsh-bridge doctor` 会列出候选)。');
|
|
110
110
|
}
|
|
111
111
|
function tierOf(args) {
|
|
112
|
-
const value = str(args, 'tier') ?? '
|
|
112
|
+
const value = str(args, 'tier') ?? 'current';
|
|
113
113
|
if (value !== 'flash' && value !== 'current' && value !== 'pro') {
|
|
114
114
|
throw new UsageError(`--tier 只能是 flash / current / pro,收到 "${value}"`);
|
|
115
115
|
}
|
package/lib/index.js
CHANGED
|
@@ -25,7 +25,7 @@ export const inject = ['commands'];
|
|
|
25
25
|
/** 命令是同步返回的,等压缩工人不能等太久。 */
|
|
26
26
|
const DEFAULT_PREVIEW_TIMEOUT_MS = 180_000;
|
|
27
27
|
export const Config = Schema.object({
|
|
28
|
-
modelTier: Schema.union(['flash', 'current', 'pro']).default('
|
|
28
|
+
modelTier: Schema.union(['flash', 'current', 'pro']).default('current'),
|
|
29
29
|
sourceCharBudget: Schema.number().default(SOURCE_CHAR_BUDGET),
|
|
30
30
|
summaryCharBudget: Schema.number().default(SUMMARY_CHAR_BUDGET),
|
|
31
31
|
goalRounds: Schema.number().default(1),
|
|
@@ -50,7 +50,7 @@ function writeSummaryFile(sessionId, summary) {
|
|
|
50
50
|
/** 把 Config 解析成命令层要的形状(Schema 已经填过默认值,这里只兜底)。 */
|
|
51
51
|
export function commandConfigOf(config = {}) {
|
|
52
52
|
return {
|
|
53
|
-
modelTier: config.modelTier ?? '
|
|
53
|
+
modelTier: config.modelTier ?? 'current',
|
|
54
54
|
sourceCharBudget: config.sourceCharBudget ?? SOURCE_CHAR_BUDGET,
|
|
55
55
|
summaryCharBudget: config.summaryCharBudget ?? SUMMARY_CHAR_BUDGET,
|
|
56
56
|
goalRounds: config.goalRounds ?? 1,
|
package/lib/migrate.js
CHANGED
|
@@ -191,7 +191,7 @@ export async function previewMigration(input, options) {
|
|
|
191
191
|
throw new RpcError('bridge.preview', 'empty-source', '这个会话还没有可迁移的内容(取材为空)。直接开一个新会话更省事。');
|
|
192
192
|
}
|
|
193
193
|
const lang = options.lang && options.lang !== 'auto' ? options.lang : detectLang(source.text);
|
|
194
|
-
const tier = options.tier ?? '
|
|
194
|
+
const tier = options.tier ?? 'current';
|
|
195
195
|
const route = await resolveWorkerModel(host, options.sessionId, tier, options);
|
|
196
196
|
if (options.dryRun) {
|
|
197
197
|
return { summary: '', source, lang, worker: { ...route }, capped: false, sourceSession };
|
|
@@ -345,9 +345,9 @@ export async function executeMigration(input, options) {
|
|
|
345
345
|
...where,
|
|
346
346
|
agentPreset: options.to,
|
|
347
347
|
});
|
|
348
|
-
// rc.2 的 session.selectModel 会同时保存 host 默认模型。预览 worker
|
|
349
|
-
//
|
|
350
|
-
//
|
|
348
|
+
// rc.2 的 session.selectModel 会同时保存 host 默认模型。预览 worker 可能
|
|
349
|
+
// 用了与源会话不同的档位模型(例如 --tier pro),因此如果这里依赖新会话
|
|
350
|
+
// 默认值,目标会被 worker 悄悄改成那个模型,视觉源会话也会失去 VLM。显式复制源选择既保持用户模型意图,也让
|
|
351
351
|
// 未解析原图能在 kickoff 前通过目标模型的图片准入。
|
|
352
352
|
let modelTransferred = false;
|
|
353
353
|
if (sourceModel) {
|
|
@@ -432,8 +432,8 @@ export async function executeMigration(input, options) {
|
|
|
432
432
|
try {
|
|
433
433
|
const images = await readPromptImages(host, options.sessionId, unresolved.refs);
|
|
434
434
|
const transferNote = lang === 'en'
|
|
435
|
-
? 'Bridge transfer note: the unresolved source images listed above are attached to this
|
|
436
|
-
: 'Bridge
|
|
435
|
+
? 'Bridge transfer note: the unresolved source images listed above are attached to this message as images, and you can already see them. Check them by looking at them; do not call any tool to read, open or locate them, and do not infer details that are not visible.'
|
|
436
|
+
: 'Bridge 搬运说明:上文列出的未解析源图片已作为图片附在本条消息里,你现在就能看到。请直接看图核对,不要调用任何工具去读取、打开或查找这些图片,也不得推断看不清的细节。';
|
|
437
437
|
await host.sessions.prompt({
|
|
438
438
|
sessionId: created.sessionId,
|
|
439
439
|
mode: 'queue',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-plugin-bridge",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.5",
|
|
4
4
|
"description": "Previewable cross-preset session migration for DeepSeek Harness with bounded, fixed-schema handoffs",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
"reports/dsh-0.1.2-alpha.2-compat-2026-08-31.md",
|
|
17
17
|
"reports/dsh-0.1.3-alpha.2-compat-2026-09-08.md",
|
|
18
18
|
"reports/dsh-0.1.5-alpha.1-compat-2026-09-09.md",
|
|
19
|
+
"reports/dsh-0.1.5-rc.1-compat-2026-09-10.md",
|
|
20
|
+
"reports/worker-tier-rc1-2026-09-10.md",
|
|
19
21
|
"cordis.patch.yml",
|
|
20
22
|
"README.md",
|
|
21
23
|
"README.zh.md"
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# DSH 0.1.5-rc.1 compatibility acceptance
|
|
2
|
+
|
|
3
|
+
Date: 2026-09-10 (Asia/Shanghai). **Published Bridge 0.3.4 from npm**, unchanged. No Bridge code, dependency range or build changed for this run: the 0.3.4 peer term `^0.1.5-alpha.1` already matches `0.1.5-rc.1` and the future `0.1.5` final under npm semver. DSH made `0.1.5-rc.1` its npm `latest` on release day.
|
|
4
|
+
|
|
5
|
+
## Environment
|
|
6
|
+
|
|
7
|
+
- Official npm `@deepseek-ai/dsh@0.1.5-rc.1` in a scratch prefix (521 packages, Node 22.23.1, pnpm 11.22.0), isolated `DSH_HOME`, seeded scratch workspace. No user profile, session or credential file was read or modified.
|
|
8
|
+
- `dsh plugin --profile web add dsh-plugin-bridge@0.3.4` from the registry: no peer warnings; Bridge joined the profile bundle layer after `@deepseek-ai/dsh-base` and `@deepseek-ai/dsh-web-app`.
|
|
9
|
+
- The WebUI was driven by headless Google Chrome 152 through `playwright-core` with a throwaway browser profile. Unlike the in-app browser used for the 0.1.5-alpha.1 smoke, it held the `remote.mux` WebSocket, so the native card was rendered and inspected.
|
|
10
|
+
- The repository owner entered their DeepSeek key in the isolated WebUI; it was stored only in that isolated `DSH_HOME` (`refs.DEEPSEEK_API_KEY`). Default model: `deepseek-flash` (DeepSeek-V41-Flash, image-capable), reasoning effort max. The Bridge summary worker used its `pro` tier (`deepseek-v4-pro`).
|
|
11
|
+
- All Session content was synthetic.
|
|
12
|
+
|
|
13
|
+
## Upstream contract
|
|
14
|
+
|
|
15
|
+
Type declarations of every package Bridge pins or calls structurally were diffed between `0.1.5-alpha.1` and `0.1.5-rc.1`. Nothing Bridge uses changed:
|
|
16
|
+
|
|
17
|
+
| Change | Effect on Bridge |
|
|
18
|
+
|---|---|
|
|
19
|
+
| Top-level `conversation` panel slot moved to `main.conversation` | None; Bridge registers `conversation.chat.commandview`, which is unchanged |
|
|
20
|
+
| `forClosing(owner, sessionId)` file-mention hook; `DocumentFileIcon` replaced by `FileTypeIcon`; `CodeBlock`/`Menu` gained optional props | None; the card uses `MarkdownText` and `JsonTree` only |
|
|
21
|
+
| Session controller gained `revealPath`/`workspaceDesktop` | None; the 13 methods Bridge probes are unchanged, `commands.execute(sessionId, line, attachments)` unchanged |
|
|
22
|
+
| Session lifecycle: `SessionHandle`, per-process session lock | None observed; Bridge reads history through `inspect` and never opens logs |
|
|
23
|
+
| Default model DeepSeek-V41-Flash accepts images | Changes which image path is common; see the image run below |
|
|
24
|
+
| Pausing a goal aborts the active turn; only the user may resume | Bridge pauses before kickoff; the targets below all stayed paused with zero goal rounds |
|
|
25
|
+
|
|
26
|
+
## Credential-free checks
|
|
27
|
+
|
|
28
|
+
| Check | Result |
|
|
29
|
+
|---|---|
|
|
30
|
+
| `/bridge --doctor` | `dsh-typed-controllers · 13/13`, targets `ptc · minimal · cordis` |
|
|
31
|
+
| Native card | Rendered for doctor, usage and error results; no page errors; no horizontal overflow at 1280 px |
|
|
32
|
+
| `/bridge ptc` with no key configured | Failed closed with `worker-empty`; no target Session was created and the summary worker was archived |
|
|
33
|
+
|
|
34
|
+
A Session that contains only command runs stays blank and keeps the empty-workspace hero view, so no command row or card appears there. One ordinary message first makes the Session non-blank.
|
|
35
|
+
|
|
36
|
+
## Model-backed migration
|
|
37
|
+
|
|
38
|
+
Three real migrations from a `standard` source to `ptc`, each on a fresh source Session:
|
|
39
|
+
|
|
40
|
+
| Check | Run 1 | Run 2 | Image run |
|
|
41
|
+
|---|---|---|---|
|
|
42
|
+
| Source seed turn | 7 s | 6 s | Image admitted; turn stopped before any assistant analysis |
|
|
43
|
+
| Preview facts (project code, PostgreSQL, port, planned `src/migration.ts`, MongoDB ban) | 5/5, 24 s | 5/5, 20 s | Project code kept; image reported as `未解析 1 条` |
|
|
44
|
+
| Text mode | Five-section form, 5 fields | Five-section form, 5 fields | — |
|
|
45
|
+
| Markdown edit of Next step | Reached target byte-exact | Reached target byte-exact; also visible back in Text mode | — |
|
|
46
|
+
| Confirm | One target, auto-opened in PTC | One target, auto-opened in PTC | One target; confirmation says the unresolved original was carried to the vision target |
|
|
47
|
+
| Target goal (projection cache) | `paused`, `maxGoalRounds 1`, `roundsStarted 0` | `paused`, `maxGoalRounds 1`, `roundsStarted 0`, objective contains the edit | Paused goal bar shown |
|
|
48
|
+
| Target reply | Restated facts, ran no tools | Restated facts including the edited step as the next action, ran no tools | Read `IMG-4821` and the blue triangle from the carried image, restated, stopped |
|
|
49
|
+
| Target turn usage | 10.8K tokens, cache 0% | 10.3K tokens, cache 83% | 23K tokens, cache 86%, 2 steps |
|
|
50
|
+
| Page errors | 0 | 0 | 0 |
|
|
51
|
+
|
|
52
|
+
Findings:
|
|
53
|
+
|
|
54
|
+
- **Run 1's edit was a test artifact, not a product defect.** The edit line was labeled `EDIT-MARK-7731`. The kickoff tells the target to disregard anything "标记为已作废", and the target declined to treat the "MARK" line as confirmed, while still carrying it verbatim. Run 2 used a natural sentence and the target adopted it as the next step.
|
|
55
|
+
- **Image kickoff costs one extra tool step in PTC.** The target already saw the attached image, then followed Bridge's note "请直接检查原图" by calling a read-only image tool before restating. No file was written and the goal stayed paused, but this is not the strict "restate and wait without tools" behavior, and it roughly doubled that turn's tokens. A wording change that says the image is already attached and needs no tool call is a candidate follow-up.
|
|
56
|
+
- **Default-model image behavior changed.** With an image-capable default model, unresolved source images now normally travel as raw images to the target instead of falling back to text.
|
|
57
|
+
|
|
58
|
+
## Not covered
|
|
59
|
+
|
|
60
|
+
- The text-only image fallback was not re-run on rc.1; it requires switching the target to a text-only model. The 0.1.3-alpha.2 report remains the latest evidence for that path.
|
|
61
|
+
- English UI, Node 24, `--go --continue`, and a `dsh plugin remove` plus restart cycle were not repeated.
|
|
62
|
+
- Three runs are release evidence, not a statistical guarantee.
|
|
63
|
+
|
|
64
|
+
The isolated install, profile, browser driver and screenshots stayed outside the repository.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Summary worker tier on DSH 0.1.5-rc.1
|
|
2
|
+
|
|
3
|
+
Date: 2026-09-10 (Asia/Shanghai). This report is why Bridge 0.3.5 changes the default `modelTier` from `pro` to `current`, so the summary worker uses the source conversation's own model.
|
|
4
|
+
|
|
5
|
+
## Why the default was `pro`
|
|
6
|
+
|
|
7
|
+
The [2026-08-17 benchmark](../docs/benchmark.md) compared `deepseek-v4-flash` with `deepseek-v4-pro` as the summary worker. The difference was not in the summaries: it came from probing the migrated target. Flash averaged 80% probe accuracy against 95% for pro, all of it from whole-run wipeouts. Two of three flash migrations into `minimal` lost every fact. `pro` became the default to remove that tail risk.
|
|
8
|
+
|
|
9
|
+
DSH 0.1.5-rc.1 adds `deepseek-flash` (DeepSeek-V41-Flash) and makes it the default model for new sessions. The same catalog still offers `deepseek-v4-flash` and `deepseek-v4-pro`. No earlier DSH release offers V4.1-Flash; 0.1.1-rc.2 through 0.1.5-alpha.1 list only `deepseek-v4-flash`, `deepseek-v4-pro` and `deepseek-v4-flash-vision-exp`.
|
|
10
|
+
|
|
11
|
+
## Environment
|
|
12
|
+
|
|
13
|
+
- Official npm `@deepseek-ai/dsh@0.1.5-rc.1`, isolated `DSH_HOME`, published Bridge 0.3.4, Node 22.23.1.
|
|
14
|
+
- WebUI driven by headless Google Chrome with a throwaway profile; the repository owner entered the DeepSeek key in the isolated WebUI.
|
|
15
|
+
- Sources: all five themes from `datasets/test.json` and `datasets/validation.json`. Each source received the dataset's plant message and then a port change that voids the original port, so stale values can be detected. The workspace held only a README, so targets could not read the dataset.
|
|
16
|
+
- Tiers resolved as `pro` → `deepseek-v4-pro`, `current` → `deepseek-flash` (the source model), `flash` → `deepseek-flash` (first flash-like id in the catalog). The worker receives provider and model only, so every worker ran at `high` reasoning effort even though the conversations used `max`.
|
|
17
|
+
|
|
18
|
+
## Summary layer: previews
|
|
19
|
+
|
|
20
|
+
24 previews, no target sessions. A fact counts when the summary contains the expected value, with the new port replacing the dataset's original port.
|
|
21
|
+
|
|
22
|
+
| Tier | Model | Runs | Facts | Stale port | Median worker model time | Median output tokens |
|
|
23
|
+
|---|---|---|---|---|---|---|
|
|
24
|
+
| `pro` | deepseek-v4-pro | 10/10 | 50/50 | 0 | 24.4 s | 1,622 |
|
|
25
|
+
| `current` | deepseek-flash | 10/10 | 50/50 | 0 | 12.7 s | 2,238 |
|
|
26
|
+
| `flash` | deepseek-flash | 4/4 | 20/20 | 0 | 11.7 s | 1,963 |
|
|
27
|
+
|
|
28
|
+
Every summary kept all five sections, stated the ban as a prohibition, copied the path exactly, and contained no unexpected numbers.
|
|
29
|
+
|
|
30
|
+
## Probe layer: migrations into `minimal`
|
|
31
|
+
|
|
32
|
+
This repeats the condition where the old flash failed. Each of the five themes was run twice. Within a source, `pro` and `current` each previewed and confirmed a migration into `minimal`, with alternating order between repetitions. The dataset's probe then asked the target five questions. Answers were scored from the saved replies, with 英文 accepted for `English` and Chinese for `中文`; the dataset's literal expectation otherwise marks the correct answer "提交信息使用英文" as a miss.
|
|
33
|
+
|
|
34
|
+
| Tier | Model | Migrations | Probe facts | Without the language fact | Wipeouts (≤ 1/5) | Old port in answer |
|
|
35
|
+
|---|---|---|---|---|---|---|
|
|
36
|
+
| `pro` | deepseek-v4-pro | 10/10 | 50/50 | 40/40 | 0 | 0 |
|
|
37
|
+
| `current` | deepseek-flash | 10/10 | 50/50 | 40/40 | 0 | 0 |
|
|
38
|
+
|
|
39
|
+
Paired by source: 0 wins, 10 ties, 0 losses.
|
|
40
|
+
|
|
41
|
+
## Reading the result
|
|
42
|
+
|
|
43
|
+
- On DSH 0.1.5-rc.1, following the conversation model gives the same measured accuracy as `pro` at about half the summary time, and the old flash-into-minimal wipeout did not occur.
|
|
44
|
+
- Both tiers scored 100%, so this set cannot show which model is better on harder material. Long or compacted sources were not tested for either tier.
|
|
45
|
+
- Zero failures in ten runs per tier lowers, but does not exclude, a rare wipeout.
|
|
46
|
+
- V4.1-Flash wrote more output tokens, up to 4,615 in one preview. Prices were not compared.
|
|
47
|
+
- On DSH before 0.1.5-rc.1, `current` usually means `deepseek-v4-flash`, the model behind the old wipeouts. Users on those hosts should set `DSH_BRIDGE_TIER=pro` or pass `--tier pro`.
|
|
48
|
+
|
|
49
|
+
Run artifacts, drivers and screenshots stayed outside the repository.
|