- Início
- Plugins
- Melhorias de UI
- dsh-window
dsh-window
lczment/dsh-window
Window close behaviour for DeepSeek Harness Desktop — ask, minimise to tray, or quit, with a remembered choice editable in Settings, plus per-session and per-workspace child windows. Windows only: requires DSH Desktop 0.2.1-rc.5+ and a PowerShell installer that patches the app shell (resources/app); re-run it after every DSH upgrade, otherwise closing keeps DSH default behaviour.
Instalar
dsh plugin --profile web add github:lczment/dsh-windowREADME
DSH Window
English | 简体中文
给 DeepSeek Harness Desktop 加两件事:关闭窗口时由你决定「最小化到后台」还是「完全退出」,以及把某个会话 / 整个工作区丢进独立子窗口。
这是第三方扩展,不是 DeepSeek 官方组件。它会修改本机 DeepSeek Harness 的
resources/app(见「安装」),升级 DSH 后需要重跑一次安装脚本。
功能
| 功能 | 说明 |
|---|---|
| 关闭行为可选 | 关闭主窗口时弹出与主界面同风格的对话框:最小化到后台 / 完全退出 / 取消,可勾选「记住我的选择」。 |
| 设置页 | 设置 → 「窗口与多开」:三个选项(每次询问 / 最小化到后台 / 完全退出),立即生效,和关闭对话框共用同一份配置。 |
| 侧栏快捷入口 | 侧栏底部、设置齿轮上方新增「多开」按钮(窄栏时只显示图标),点开即可改关闭行为或把目标丢进子窗口。 |
| 每会话独立窗口 | 会话行悬停时在「…」菜单旁出现一个窗口图标,点击即把该会话开进新窗口。 |
| 工作区整窗 | 设置页里每个工作区都有 Open workspace,把整个工作区开进新窗口。 |
| 后台保活 | 选「最小化到后台」后进程与 Agent 继续运行,托盘图标可重新打开或退出。 |
| 悬停动效 | 插件内按钮带 120ms 过渡;系统开启「减少动画」时自动关闭位移效果。 |
| 无黑框 | 安装 / 升级收尾通过隐藏的 wscript 启动,不会闪控制台窗口。 |
组成
DSH 插件运行在 Host(Node 子进程)与 Web 前端里,没有窗口或退出的 IPC。因此本项目由两部分组成:
- 插件(
index.js/client.js,仓库根目录)— 设置页、侧栏按钮、会话行按钮、关闭对话框的 UI 与 Host 路由。 - 壳扩展(
shell/install.mjs)— 注入 Electron 主进程,接管窗口关闭、创建子窗口、读写共享配置。安装脚本在tools/。
只装插件:设置页与多开按钮会出现,但顶部会提示壳扩展未安装,关闭窗口仍走 DSH 原行为。
安装
前置:Windows、DeepSeek Harness Desktop 0.2.1-rc.5 或更新、Node.js 可用(安装脚本用)。
1. 安装插件
已发布到 npm:@lczment/dsh-window@0.1.0。任选一种:
- 市场 / 命令行安装:
dsh plugin add @lczment/dsh-window,或在 设置 → 插件 → 发现 里搜索 DSH Window; - 官方列表条目已提交 awesome-dsh-plugin#12113,索引构建后进入默认货架;
- 也可以直接从仓库安装:
dsh plugin add github:lczment/dsh-window; - 本地开发时把目录链接到
%USERPROFILE%\.dsh\profiles\desktop\node_modules\@lczment\dsh-window。
安装后打开 设置 → 窗口与多开,应能看到本页。
2. 安装壳扩展
需要写入
D:\DeepSeek Harness(或你的安装目录),并以当前用户运行 PowerShell。
# 在仓库根目录
node tools/install-shell-extension.mjs --stage-only
# 注册隐藏的收尾任务(每分钟检查一次,成功后自动删除)
powershell -NoProfile -ExecutionPolicy Bypass -File tools/register-completion-task.ps1
# 然后:托盘图标 → 退出。约一分钟内应用会带着扩展重启
通过市场 / npm 安装时,插件位于
%USERPROFILE%\.dsh\profiles\desktop\node_modules\@lczment\dsh-window(设置了DSH_HOME则在%DSH_HOME%\profiles\desktop\node_modules\@lczment\dsh-window),把上面命令里的tools/换成该目录下的tools/即可。
--stage-only 会:解包 resources/app.asar → resources/app、叠加 app.asar.unpacked、给 lib/main.js 打补丁(关闭钩子、子窗口 WebSocket 白名单、子窗口 IPC 放行)、给 lib/preload-app.cjs 加 window.dshWindow 桥,然后等应用退出时把 app.asar 改名为 app.asar.orig。
安装目录不是默认的 D:\DeepSeek Harness 时,先设置环境变量:
$env:DSH_DESKTOP_ROOT = 'E:\Apps\DeepSeek Harness'
收尾任务有 75 秒健康检查:启动后扩展没写日志、或补丁缺失,会自动回滚到原版 app.asar 并重启,不会把应用留在坏状态。
3. 验证
- 设置页顶部显示绿色 “Desktop shell extension is installed”。
- 关闭主窗口 → 出现与主界面同风格的对话框。
- 侧栏会话悬停 → 出现窗口图标;点击后新窗口加载该会话。
设置与行为
配置文件:%USERPROFILE%\.dsh\desktop\window-policy.json(DSH_HOME 存在时用 $DSH_HOME\desktop\window-policy.json)。
{ "closeAction": "ask" }
ask— 每次关闭都询问(默认)background— 直接隐藏到托盘quit— 直接退出
关闭对话框勾选「记住我的选择」会写入同一文件;设置页修改后立即广播给所有窗口。
更新 DSH 之后
DSH 升级会带回新的 resources/app.asar,旧补丁随之失效(resources/app 会被忽略或覆盖)。重新执行第 2 步即可:
node tools/install-shell-extension.mjs --stage-only
powershell -NoProfile -ExecutionPolicy Bypass -File tools/register-completion-task.ps1
插件部分通常不需要重装。
卸载
# 先退出 DeepSeek Harness
powershell -NoProfile -ExecutionPolicy Bypass -File tools/uninstall-shell-extension.ps1
再在 设置 → 插件 里移除本插件。卸载脚本会恢复 app.asar.orig、删除 resources/app 与 resources/dsh-window-extension。
-
已发布到 npm:
@lczment/dsh-window(0.1.0)。官方货架下一次构建索引时会收录。 -
想立刻在 插件 → 发现 里看到它,打开「管理索引源…」并添加:
https://raw.githubusercontent.com/lczment/dsh-window/main/index.json该索引使用 npm 源,安装走
@lczment/dsh-window。 -
也可以直接按仓库安装:
dsh plugin add github:lczment/dsh-window,或下载 Release v0.1.0 的dsh-window.tgz。 -
官方列表条目已提交:awesome-dsh-plugin#12113(
market/lczment__dsh-window.yml)。
限制
- 仅 Windows:壳扩展依赖 DSH 的 win32 托盘、
titleBarOverlay与 PowerShell 安装脚本。 - 壳扩展是对本机安装目录的补丁,不是官方扩展点;DSH 升级后要重跑。
- 子窗口与主窗口共享同一份登录 cookie 与 Host 连接;会话数据是同一个 runtime。
- 应用正在运行时
app.asar被占用,所以切换必须等退出后由收尾任务完成。 - 关闭对话框依赖前端已加载;前端尚未就绪时回退到系统原生对话框。
开发
dsh-window/
index.js Host 半:/dsh-window/policy、/targets、/boot-injections 路由
client.js Client 半:设置分区、侧栏按钮、会话行按钮、关闭对话框
locale/{en,zh}.json 显示名与描述
cordis.patch.yml 插件插入声明
shell/install.mjs 注入 Electron 主进程的壳扩展(关闭、子窗口、IPC)
tools/ 安装器、收尾任务、卸载、UI 冒烟测试
docs/ARCHITECTURE.md 内部机制
node tools/smoke-client.mjs # 用桩环境渲染 client.js,校验 4 个插槽与关闭对话框
node --check client.js index.js shell/install.mjs
许可
MIT,见 LICENSE。
Plugins relacionados
dsh-web (dsh-task-board)
zhu1090093659/dsh-web
dsh-web (dsh-web-all)
zhu1090093659/dsh-web
dsh-TUI
ccch1mneyyy/dsh-tui
dsh-web-ui (dsh-task-board)
zhu1090093659/dsh-web-ui