dsh-plugin-bridge
Moves an existing DSH session to another agent preset through a previewable five-section handoff, preserving the source session and either pausing the target for confirmation or continuing immediately.
Install
dsh plugin --profile web add dsh-plugin-bridge
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✗ |
| 2 list | — |
| 3 mount | — |
| 4 boot | — |
dsh: initialized profile web at /home/node/.dsh/profiles/webFour stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
dsh-plugin-bridge
<p align="center">
<img src="./assets/cover/cover-zh.png" width="100%" alt="dsh-plugin-bridge 通过可预览的固定五段交接,把锁定会话迁移到新的 preset">
</p>








[English](README.md) | 中文
在 Web preset 做到一半,想换 Code preset 继续?直接切换会让旧工具组的调用历史留在新组合里。Bridge 先生成一份有界、可编辑的五段交接,再建立干净目标会话;原会话始终不动。
<p align="center">
<img src="https://raw.githubusercontent.com/Totoro-qaq/dsh-plugin-bridge/main/assets/bridge-demo.zh.gif" width="880" alt="Bridge 在 DeepSeek Harness 官方 WebUI 中完成一次真实会话迁移">
</p>
[快速开始](#快速开始) · [为什么是-bridge](#为什么是-bridge) · [实测证据](#实测证据) · [迁移决策](#迁移决策) · [兼容性](#兼容性)
快速开始
Bridge 0.5.2 放行已发布的 DSH 0.2.2 线,直到 0.2.2 正式版,包括 0.2.2-rc.1。Bridge 0.5.1 放行了 0.2.2 alpha 线,包括已发布的 0.2.2-alpha.2。Bridge 0.5.0 新增会话菜单、可配置快捷键和自然语言入口,保留预览、编辑和人工确认。0.5.0 候选包已通过官方 0.2.1-rc.2 Web 与原生 macOS 桌面端的隔离迁移验收,以及 0.2.0-rc.2 无密钥旧宿主回归。[验收记录](docs/compatibility/dsh-0.2.1-rc.2-entrypoints-2026-10-18.md)区分了实测、限制和待完成的发布核验。后续 alpha 获准安装不等于这次验收,详见[兼容策略](#兼容策略)。
安装或卸载包时,请核对宿主实际调用的 pnpm 可执行文件。pnpm 11.22.0 存在已知的 late-worker 退出缺陷,可能在输出 Done 后仍不结束;自然 DSH 对照已隔离上游修复。建议使用包含上游修复的 11.26.0 或更新版本,不要重叠包操作。存在未结束操作时,先等待其完成,或正常停止宿主后再使用离线 CLI。Bridge 不附带 pnpm,也不会自动升级你的工具。
npm / CLI
从 npm 安装:
dsh plugin --profile web add dsh-plugin-bridge
在 DSH 0.1.5-rc.2 上,添加或移除插件后需要重启 dsh web。在 DSH 0.1.6-alpha.2 上,从 WebUI「插件」页首次安装可以直接生效;CLI 安装或升级已有插件仍可能需要一次重启。DSH 0.1.7-alpha.1 已验收 CLI 安装、实时停用/启用及卸载后重启;未验证免重启安装或升级。
在启用 HMR 的 DSH 0.2.1-alpha.3 / 0.2.1-alpha.4 Web 中,运行中的 pluginManager 服务通过 installBundle() API(包括 Remote API 调用方和 agent 的 plugin_manager 工具)安装 profile 中已有的包时,会返回 already-installed,指定另一版本也一样。API 替换顺序是 removeBundle(name)、installBundle(spec),并遵循宿主的重启提示,详见上游升级说明。
CLI 替换时,先停止使用目标 profile 的宿主,再执行 dsh plugin --profile web remove dsh-plugin-bridge、dsh plugin --profile web add <目标包 spec>,最后重新启动宿主。CLI 独立执行 profile 包操作,不经过上述运行中 API 的重复安装拒绝路径。
两种替换方式都应先完成或保存尚未确认的交接:预览和编辑稿保存在内存中,停止或卸载 Bridge 会清除确认状态。原会话仍然保留;重新安装后生成新预览,再贴回保存的草稿。这些 Web 操作不会升级原生桌面端;原生桌面 0.2.1-rc.2 的验收[单独记录](docs/compatibility/dsh-0.2.1-rc.2-entrypoints-2026-10-18.md#native-macos-desktop-acceptance)。
GitHub 固定版本备用路径:
dsh plugin --profile web add github:Totoro-qaq/dsh-plugin-bridge#v0.5.2
Discover
提供 Discover 的 DSH(0.2.1-alpha.4 引入)也可以通过作者的索引安装 Bridge:
1. 打开 插件 → 实验性插件 → 更多,启用 自定义插件市场。
2. 进入 发现(Discover)→ 添加索引源,粘贴:
https://raw.githubusercontent.com/Totoro-qaq/dsh-plugin-index/main/index.json
3. 选择 Bridge 会话交接,在确认框核对包名、版本及 https://registry.npmjs.org/,安装后点 立即启用。
这是作者自托管的第三方源,不代表官方认证或社区审核;需要在想使用的 profile 中手动添加。公开地址的添加、安装已在隔离 alpha.4 WebUI 中验收;原生桌面端本轮未单独重测 Discover 安装路径。没有 Discover 的客户端继续使用上面的 npm/CLI 方式即可。
三种入口
- 菜单按钮:打开侧栏中当前会话的
⋯菜单,选择「迁移会话」,不替换草稿、不提交待发送附件。输入框为空时也可使用+菜单里的 Bridge 项;已有草稿时,DSH 会在该菜单中隐藏带参数的命令。不会新增常驻标题栏按钮或第二条命令。 - 快捷键:在 DSH 快捷键设置里搜索「Bridge」,为「Bridge:迁移会话」绑定按键。默认未绑定,不占用系统、宿主或其他插件的组合键;命令 ID 是
dsh-plugin-bridge.open。 - 自然语言:例如「把当前任务交接到 PTC,先让我看看摘要」。支持模型工具的模式可以调用
bridge_prepare;目标不明确时先显示模式选择。模型只能准备交接,不能代替你确认迁移。
三种入口都保留人工确认:选择目标 → 生成预览 → 文本/Markdown 编辑 → 点击确认。原来的 /bridge 命令继续可用。缺少相应界面或工具接口的宿主保留命令回退;快捷键仅在当前会话页面生效,不会在随记等独立页面或模态框中触发。
自然语言入口默认开启,可在 Bridge 配置中设置 naturalLanguage: false 关闭;按钮、快捷键和原命令不受影响。开启时会增加少量工具描述 token,不再承诺所有普通请求均零开销。详见[入口、生命周期和确认边界](docs/entrypoints.md)。
原有命令
然后在官方 WebUI 输入:
/bridge 列出目标 preset /bridge --doctor DSH 升级后检查 host 契约 /bridge code 只预览交接,什么都不改 /bridge code --go 迁移、复述,然后等待 /bridge code --go --continue 在同一次目标请求里复述并开始工作
DSH rc.7 及以上会在官方 WebUI 原生卡片中渲染 /bridge。「文本编辑」把固定五段变成普通文本框,并无损支持平坦的项目符号或编号列表;「Markdown」保留完整源码自由;「预览」渲染 Markdown 或完整 JSON 树。长内容只在卡片正文内滚动;点「确认迁移」后自动打开目标会话。Bridge 0.3.10 在已测的窄窗口中为固定输入栏留出了确认按钮的可点击空间。
实现官方 conversation.chat.commandview slot 的第三方 UI 会自动得到同一张卡片。其他自定义 UI 仍保留完整服务端结果、摘要文件流程和目标标题/session ID 回退;UI 作者还可以复用无 React 的 dsh-plugin-bridge/client-contract 导出,而无需重写协议。旧客户端可修改输出里打印的摘要文件,再执行:
/bridge code --go --file <路径>
预览中的修改在确认迁移前只是临时草稿。重启客户端或系统可能使其丢失;源会话始终不受影响,重新运行预览即可生成新的草稿。
卸载:dsh plugin --profile web remove dsh-plugin-bridge,然后重启 dsh web。
为什么是 Bridge
承诺 · 具体含义
执行前预览 · /bridge <preset> 不创建目标、不改源会话;先检查或修改固定五段交接。
迁状态,不迁工具痕迹 · 决策、路径、当前状态和下一步进入干净 preset;旧工具组的不兼容调用不会跟过去。
失败时关闭迁移 · kickoff 前暂停目标;无法保证时清除/取消目标,不发送模型请求。
关闭自然语言入口(naturalLanguage: false)时,按钮、快捷键和 /bridge 都由宿主直接派发,不向模型增加 Bridge 工具描述。默认开启自然语言入口时会注册一个仅准备预览的工具;生成摘要仍只在你发起交接时调用压缩工人。
实测证据
这是小样本、可复现的回归门禁,不是总体准确率保证。
Gate · 结果
五段摘要事实 · 30/30
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::25,最后更新 2026-11-06