跳到主内容

dsh-mode-switcher 使用指南

在 DSH Web 聊天会话顶部加一个智能体模式切换下拉,空白会话原地切换、有历史的会话则在同一工作区先开新会话再切,原有对话不会被打断。

本文为派生内容(基于 wiki / faq / compatibility_json 自动组装),非 AI 即时创作。

本文由本站基于该插件已收录的字段自动派生(wiki / faq / compatibility_json / readme),非 AI 即时创作。每节末尾标源字段。

快速上手

dsh-mode-switcher

— 源: plugin_wiki.wiki_content

安装与验证

dsh plugin --profile web add --allow-build=@linxin666/dsh-client-ui-mode-switcher github:ningbainb/deepseek-harness-desktop#path:packages/dsh-mode-switcher

复制以上命令在 DSH Web Profile 内运行。安装完成后在「插件列表」启用即可。

— 源: plugins.install

关键要点

  • 可靠 Windows 启动:移除 PowerShell 5.1 -WindowStyle Hidden 与 Electron Node 模式的冲突,隐藏窗口仍由 spawn 的 windowsHide 处理;空旧补丁、状态订阅竞态和 IPC 错误不会再把启动页永久留在 8%。
  • 验证过的 Runtime 组合:内置 @deepseek-ai/dsh 0.1.0-rc.7、dshmarket 1.15.0、Web UI 聚合 0.2.3、兼容 rc.7 的 Codex Connect 与 dsh-live-stats 0.1.20,Stable 继续精确锁定而非追随 latest。
  • 托盘与后台自动化需显式选择:默认关闭仍会退出。选择“最小化到托盘并启用后台自动化”后,关闭主窗口才保留 Runtime 和到期任务;显式退出、更新、安全模式和崩溃路径一律完整停止。
  • Host 持久任务调度:Task Board 保存时区、cron 槽位、租约、misfire/running 策略和确定性运行键;启用后台自动化时通过真实 DSH Session 执行并回写 Task Run,Host 不可用时仍回退浏览器调度。
  • 可审计的扩展边界:扩展坞校验 dsh.compatibility 的版本、Desktop API、能力、Surface 与运行时证据,并在 profile 写入 desktop-plugins.lock.json。browser-safe SDK 不导入 Electron 或私有 DSH 模块;预览的外部打开仅传工作区根和相对路径,Host 验证后才交给系统。

— 源: plugin_wiki.readme_zh (fallback readme_raw)

常见问题

装上后能看到什么?

在 dsh web 打开的任意会话顶部,多出一个胶囊样式的下拉框,列出当前 DSH 运行时暴露的所有可用智能体模式(如 Plan / Code / 等);选中后会立刻切换当前会话的工作模式。运行时可用预设不足两个时这个下拉会自动隐藏,避免出现无意义控件(packages/dsh-mode-switcher/src/client/ModeSwitcher.tsx:26、README.md:14)。

切换模式会不会清空当前对话历史?

看情况。空白会话(还没有任何消息)时直接在原会话上原地切换;只要当前会话已有消息,插件会先清空当前客户端的会话视图、并调用工作区服务在同一路径下创建一个全新空白会话,再把所选模式套到新会话上(packages/dsh-mode-switcher/src/client/mode-controller.ts:53-70、tests/mode-controller.spec.ts:41-49)。历史数据落到 host 进程的真实会话列表里、不会因此被删除,只是当前聊天视图换到新会话。

哪些模式会被列出来?

列表来自 DSH 官方运行时(packages/dsh-mode-switcher/src/client/mode-controller.ts:39-51 调用 api.agentPresets.list)。预设里只要带有 broken 字段就会被过滤掉;如果某个预设没有 name,则回退用其 id 作为显示文本(packages/dsh-mode-switcher/src/client/mode-controller.ts:44-50)。

切换失败会怎么提示?

错误不会阻塞 UI,但会被显示在下拉框的 tooltip(title 属性)里;下一次切换时该提示会被清掉(packages/dsh-mode-switcher/src/client/ModeSwitcher.tsx:30-40)。同时切换进行时下拉框会被禁用、鼠标变 wait 光标,避免重复点击。

等不到新会话怎么办?

控制器内部默认 10 秒超时(timeoutMs 默认值,packages/dsh-mode-switcher/src/client/mode-controller.ts:73)。超时后会以 "timed out while starting the new mode session" 抛错,并被同一份错误处理逻辑写到 tooltip 里;用户可重新尝试或刷新页面。

跟官方 DSH 模式管理冲突吗?

不冲突。本插件是一个纯浏览器侧的 slot 注入器,把"模式切换"动作挂到 conversation.session.header.actions 槽位(packages/dsh-mode-switcher/src/client/index.ts:20-25),并不修改官方会话数据模型或运行时。卸载后下次 dsh web 启动时该下拉不再出现。

这个插件只在 DSH Web 上能用吗?Headless / CLI 模式呢?

是,仅 DSH Web GUI(profile=web)。package.json#dsh.client.platform 声明 web,cordis.patch.yml 把插件 row 插入 web profile 名册;host 半区是空 no-op(packages/dsh-mode-switcher/src/index.ts:5-6),所有行为都在浏览器半区,因此 CLI/headless 模式下不会注入这个下拉。

需要额外配置吗?

不需要。插件不读 ctx.config、不暴露 cordis Schema、不读环境变量;开关全靠 DSH 插件市场的 enable/disable。

怎么卸载?

dsh plugin --profile web remove @linxin666/dsh-client-ui-mode-switcher(npm 包名见 packages/dsh-mode-switcher/package.json:2)。卸载后下次 dsh web 启动即不再渲染这个下拉。

— 源: plugin_wiki.faq_json

兼容性

  • DSH: 0.1.0-rc.7 ~ <0.2.0(peerDependencies 锁定 @deepseek-ai/dsh-* ^0.1.0-rc.7,packages/dsh-mode-switcher/package.json:34-40)
  • Node: ^22.19.0 || >=24.0.0(包内未独立声明 engines;与根 package.json#engines 全仓一致)

— 源: plugin_wiki.compatibility_json

踩坑提醒

安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。

— 来源:通用规则