dsh-chat-shell:在 DeepSeek Harness 桌面端一键切换 Chat 与 Harness

前言

DeepSeek Harness(DSH)桌面端默认是单一窗口、单一界面:会话、工具、任务都在同一套 UI 里完成。若你习惯在浏览器里用 chat.deepseek.com、豆包或 ChatGPT 对话,又要频繁回到 Harness 查任务、看工具输出,常见做法是开多个窗口或 Alt+Tab 切换,Harness 里的滚动位置和进行中的工具调用容易被打断,网页侧正在流式输出的回复也可能因切走而中断感知。

下面介绍社区客户端插件 dsh-chat-shell(维护者 lxg103):在标题栏增加 Chat / Harness 分段切换,把指定 AI 站点以嵌入式浏览器铺满整窗,再一键回到未改动的 Harness 界面;两侧状态保持挂载,切换是淡入淡出而非整页重载。

这是什么

dsh-chat-shell 是 DSH 的 客户端插件(plain ES modules,lib/client.js 在挂载时向 document.body 绘制全屏面板、站点按钮与切换控件)。它依赖桌面壳提供的 dshDesktop.browser 创建与内置侧栏浏览器相同方式的 <webview>,在 Harness UI 与 Chat 网页之间切换,而不销毁任一侧的会话。

DSH 生态理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。安装前请自行查看源码与许可证——插件在 当前 DSH 进程权限 下运行。

核心功能

README 中已核实的能力如下。

能力 说明
分段切换 标题栏居中 Chat \| Harness,可点标签或拖动玻璃滑块切换。
站点按钮 切换左侧:品牌图标 + caret,打开后选预设或自定义站点。
三个预设 DeepSeek、豆包(Doubao)、ChatGPT,各自独立 browser session partition。
自定义 URL 粘贴地址,标签由 hostname 推导,与预设一并持久化。
即时切换 站点只挂载一次,用 CSS 显隐切换,不因切换而 teardown。
状态记忆 上次模式、上次站点、站点列表在重载后保留(见下文 localStorage)。
主题跟随 从 live 页面读取明暗并随应用主题更新。
软失败 在无桌面 bridge 的浏览器版 DSH 上,切换控件自行隐藏,不破坏页面。

切换行为上的要点(与简介一致):

  • Harness 侧:会话、滚动位置、进行中的 tool call 不被改动。
  • Chat 侧:各 AI 站点保持 mounted,你在看 Harness 时仍在生成的回复可继续生成。
  • 每个站点独立 partition,三套登录互不覆盖。

环境与要求

  • DeepSeek Harness desktop 0.2.x — 嵌入式浏览器由 Electron 壳提供,dsh web 中不存在。
  • Windows — README 标明在该桌面构建上开发与测试。

安装与启用

插件市场 / CLI

官方 README 给出的安装命令为:

dsh plugin add dsh-chat-shell

手动(本地目录)

  1. 将整个插件目录复制到 profile 的 node_modules:
   %USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-chat-shell
  1. 在 …\profiles\desktop\cordis.patch.yml 中插入:
   - insert:
       - id: chat-shell
         name: dsh-chat-shell
  1. 保存后桌面应用会热重载插件图;若未出现切换条,重启一次应用。

卸载时:从 cordis.patch.yml 移除 chat-shell 或执行 dsh plugin remove dsh-chat-shell,并删除对应 node_modules 目录;若曾应用可选的 shell 登录持久化补丁,需先按 README 执行 restore(见下节)。

典型用法

  1. 切换模式 — 点击 Chat 或 Harness,或拖动滑块。
  2. 选择站点 — 点击切换条左侧圆形按钮。
  3. 添加站点 — 在 picker 中选 + 添加 AI 网页,粘贴 URL 后按 Enter。
  4. 回到 Harness — 再点一次 Harness;其余状态不变。

插件在 localStorage 中只保留一个键 dsh-chat-shell:state,结构示例:

{
  "mode": "chat",
  "active": "deepseek",
  "sites": [{ "id": "deepseek", "label": "DeepSeek", "url": "https://chat.deepseek.com/" }]
}

重置:在应用 DevTools 中执行 localStorage.removeItem("dsh-chat-shell:state") 后重载。

可选:重启后保持 Chat 登录

默认嵌入式浏览器使用 内存 session partition,应用重启后会退出登录;README 说明这是 shell 行为,非本插件缺陷。

仓库提供 scripts/patch-persistent-login.mjs,通过对 已安装 shell 副本 做一行 partition 修改实现持久登录(原安装包保留以便回滚)。操作前阅读 docs/persistent-login.md:会修改已安装应用、仅 Windows、DSH 更新会覆盖补丁(需再 build + apply)。不打补丁插件仍可正常使用。

状态与构建相关命令(摘自 README):

node scripts/patch-persistent-login.mjs status
node scripts/patch-persistent-login.mjs build
node scripts/patch-persistent-login.mjs apply

适用场景与限制

适合谁: 在 Windows 上使用 DSH 0.2.x 桌面版,希望在同一窗口内在 Harness 工作流与 DeepSeek / 豆包 / ChatGPT(或自填 URL)之间快速切换,且不想因切换丢失 Harness 上下文或打断网页侧流式输出。

务必知晓的限制(README「Limits worth knowing」):

  • 仅桌面端;依赖未文档化的 dshDesktop.browser internal 契约,未来 DSH 若改名,插件会隐藏自身而非抛错。
  • Shell 对嵌入式浏览器有 deliberate 限制:无下载、无权限提示、无嵌套 webview、无 HTTP 认证对话框;本插件不尝试放宽。
  • 部分站点可能识别 embedded browser;DeepSeek、豆包、ChatGPT 当前可渲染输入;若站点自行拦截自动化,插件不应尝试绕过。
  • 路线图不含「每站点多窗口」;每站点单 tab。
  • 浏览器托管 DSH 无 desktop bridge,切换条不会出现。

结尾

dsh-chat-shell 在 DSH 桌面标题栏增加 Chat / Harness 双界面切换,用真实 webview 嵌入常用 AI 聊天站,并与 Harness 原生 UI 并行保活。安装以 dsh plugin add dsh-chat-shell 为准;细节与实现摘要见 GitHub README。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜