前言¶
在 DeepSeek Harness(DSH)里做长任务时,经常会在中途换工具预设:比如从「代码」切到「写作」,或从一套工具组合换到另一套。直接在原会话里切换 preset,历史里会留下旧工具装配的调用痕迹,新 preset 容易读到不兼容的上下文。
常见做法是手动复制对话、重新描述目标,或者开新会话从头交代。这两种方式都费时,且容易漏掉关键决策、文件路径或未处理的图片。
下面介绍 dsh-plugin-bridge(GitHub:Totoro-qaq/dsh-plugin-bridge)。它把当前会话折叠成固定五段交接摘要,先预览再迁移,在干净的目标 preset 里继续工作,原会话不做任何改写。
这是什么¶
dsh-plugin-bridge 是 DSH 的工作流类插件,维护者为 Totoro-qaq。项目在 GitHub 上有 112 stars、4 forks,npm 包当前版本为 v0.3.0,许可证为 MIT。
插件定位是「可预览的跨 preset 会话迁移」:把源会话的状态、源模型意图和未解析图片,通过固定 schema 的五段交接传递给目标 preset。迁移前可审阅、可编辑;执行后原会话保持原样。
它不是模型工具或 skill,不往普通会话里注入 prompt token。只有调用 /bridge 斜杠命令时才会工作。
核心功能¶
固定五段交接¶
Bridge 把历史折叠为五个固定字段:
- Goal(目标)
- Current state(当前状态)
- Key decisions and conventions(关键决策与约定)
- Key files(关键文件)
- Next step(下一步)
交接内容有界、结构固定,便于在迁移前检查,也便于在目标 preset 里复述上下文。
先预览,再执行¶
/bridge <preset> 只做预览,不创建目标会话,也不改动源会话。确认内容无误后,再用 --go 执行迁移。
迁移状态,不搬工具痕迹¶
决策、路径、当前状态和下一步会进入干净的目标 preset;旧工具装配里不兼容的调用不会跟过去。
失败即停(fail closed)¶
目标会话在启动前会暂停 goal。若无法保证这一点,Bridge 会清除或取消目标,不发送模型请求。
图片处理¶
- 已有 assistant 分析的图片:原文复制该回复,默认不重新发送原始图片。
- 未解析且目标支持图片:通过附件网关复制原图,保留源 VLM。
- 未解析且目标仅文本:在 prompt 准入阶段拒绝图片,发送可见的文本回退,不做隐藏的本地 VLM 调用。
官方 WebUI 原生卡片¶
在 DSH 0.1.1-rc.2 及更高版本的官方 WebUI 中,/bridge 以原生卡片渲染。Text 模式把五段内容展平为普通字段和列表行;Markdown 模式保留完整编辑自由;Preview 模式渲染 Markdown 或完整 JSON 树。长内容在卡片内滚动,操作栏始终可达。点击「Confirm migration」可打开创建好的目标会话。
实现了官方 conversation.chat.commandview 插槽的自定义 UI 也会自动获得同样卡片。其他客户端仍可使用完整服务端结果、摘要文件工作流,以及目标标题 / session ID 回退。
安装与启用¶
需要 Node.js ≥ 22。通过 npm 安装:
dsh plugin --profile web add dsh-plugin-bridge
# 安装后重启一次 dsh web
若需固定 GitHub 版本,可用:
dsh plugin --profile web add github:Totoro-qaq/dsh-plugin-bridge#v0.3.0
卸载:
dsh plugin --profile web remove dsh-plugin-bridge
卸载后同样需要重启 dsh web。
安装后建议执行 /bridge --doctor,检查 DSH 升级后的宿主契约是否完整;它会列出缺失的必需 gateway 方法,而不是模糊报错。
典型用法¶
在官方 WebUI 中输入以下命令。
列出可迁移的目标 preset:
/bridge
检查宿主契约(DSH 升级后建议执行):
/bridge --doctor
预览交接内容,不创建目标、不改动源会话(以 code preset 为例):
/bridge code
执行迁移,目标复述后等待确认:
/bridge code --go
执行迁移,并在同一次目标请求里复述并开始工作(少一次确认请求):
/bridge code --go --continue
在较旧或非原生卡片的客户端上,可先修正打印出的摘要文件,再执行:
/bridge code --go --file <path>
工作流大致为:折叠历史 → 生成五段交接 → 预览 / 编辑 → 创建干净的目标会话 → 暂停并注入 goal → 复述 → 等待或继续。若交接不满意,可归档目标会话后回到源会话重新操作。
适用场景与注意¶
适合谁¶
- 长任务中途需要换 preset,又不想手动重述上下文。
- 需要在迁移前审阅交接内容,或微调五段摘要后再执行。
- 会话里有关键决策、文件路径或未处理图片,需要一并带到新 preset。
- 希望原会话保持完整、可回退,作为迁移前的参照。
迁移模式对比¶
| 场景 | 行为 | 代价 |
|---|---|---|
已安装但未调用 /bridge |
无 prompt 注入 | 0 Bridge token |
/bridge code(仅预览) |
一次有界摘要 worker | 不创建目标会话 |
--go(默认) |
目标复述后等待 | 多一次显式确认请求 |
--go --continue |
复述并立即工作 | 请求数更少 |
兼容性¶
| DSH 基线 | 服务端交接 | 原生卡片 |
|---|---|---|
| 0.1.0-rc.6 | 支持 | 不支持 |
| 0.1.0-rc.7 / rc.8 | 支持 | 契约检查 |
| 0.1.1-rc.2 | 支持 | 支持(doctor 13/13) |
CI 覆盖 Node.js 22 和 24。每次 Harness 升级后建议运行 /bridge --doctor。
当前已知限制:
- 安装后需重启一次 WebUI。
- 原生卡片通过官方 Session runtime 自动打开目标;旧客户端回退到标题和 session ID。
- worker 运行期间有进度提示;固定三跑样本耗时约 7.4–12.8 秒,
previewTimeoutMs为硬上限。 - 纯文本模型无法检查未解析图片。
- 原生卡片重复门禁目前仅三跑固定样本,属于发布证据而非统计保证。
安全与权限¶
插件以当前 dsh 进程的权限运行,可访问该进程能读写的文件与网络。安装前请阅读源码并确认 MIT 许可证条款,在 GitHub 仓库 核对 cordis.patch.yml 和 lib/ 下的实际行为。社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,插件由社区维护者独立发布。
结尾¶
dsh-plugin-bridge 解决的是 DSH 长任务中途换 preset 时的上下文迁移问题:固定五段交接、可预览可编辑、原会话不动、目标会话干净启动。对需要在工具组合之间切换、又不想丢失决策与文件上下文的开发者,这是一个可直接落地的斜杠命令工作流。