前言¶
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 网页之间切换,而不销毁任一侧的会话。
- 目录页:skillhub.cn/plugins/lxg103/dsh-chat-shell
- 源码与说明:github.com/lxg103/dsh-chat-shell
- 许可证:MIT(README 徽章与
package.json一致) - 当前包版本(
package.json):0.5.2
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
手动(本地目录)¶
- 将整个插件目录复制到 profile 的
node_modules:
%USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-chat-shell
- 在
…\profiles\desktop\cordis.patch.yml中插入:
- insert:
- id: chat-shell
name: dsh-chat-shell
- 保存后桌面应用会热重载插件图;若未出现切换条,重启一次应用。
卸载时:从 cordis.patch.yml 移除 chat-shell 或执行 dsh plugin remove dsh-chat-shell,并删除对应 node_modules 目录;若曾应用可选的 shell 登录持久化补丁,需先按 README 执行 restore(见下节)。
典型用法¶
- 切换模式 — 点击
Chat或Harness,或拖动滑块。 - 选择站点 — 点击切换条左侧圆形按钮。
- 添加站点 — 在 picker 中选
+ 添加 AI 网页,粘贴 URL 后按Enter。 - 回到 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.browserinternal 契约,未来 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。