dsh-window-size:在设置里保存 DSH 客户端主窗口尺寸与位置

前言

用 DeepSeek Harness(DSH)桌面客户端时,主窗口的宽高和屏幕坐标往往要靠系统或窗口管理器「记住」上一次状态;换机器、清配置或客户端自身未持久化时,每次都要手动拖一遍。社区插件 dsh-window-size(维护者 myxiyues)把这件事收进 客户端 → 设置 → 窗口尺寸:填好数值保存即生效,并在每次启动客户端后自动恢复一次。实现上在宿主进程内通过 Win32 API 改窗口,不挂计划任务、不起外部守护进程。

这是什么

dsh-window-size 是 DSH 客户端侧插件(分类:客户端)。它只在设置里提供「窗口尺寸」一节(settings.section 插槽),不在主界面加按钮或面板,也不注册工具或命令。配置落在用户目录,重启后由宿主在窗口出现后应用一次保存的尺寸,然后不再轮询。

目录页:SkillHub - dsh-window-size
源码与说明:GitHub - myxiyues/dsh-window-size(MIT,当前包版本 0.1.0)

核心功能

下面介绍插件在资料中明确写明的能力。

设置页保存与应用

  1. 打开 客户端 → 设置 → 窗口尺寸。
  2. 填写宽、高(下限与客户端一致:minWidth 520、minHeight 600);X、Y 可留空,留空表示位置交给客户端默认逻辑。
  3. 点击 保存并应用:立即调整主窗口并写入磁盘。
  4. 之后每次启动客户端,宿主会在窗口出现后应用一次已保存的尺寸,然后停止干预。

若要回到客户端默认尺寸,使用 清除保存(会删除配置文件)。

窗口识别与安全边界

  • 只处理标题含 DeepSeek Harness 或属于本进程树内的可见窗口,不操作其它程序窗口。
  • 窗口控制加载失败时不会把异常抛给宿主;设置页会显示失败原因,配置仍可保存。

实现方式(为何不是「守护脚本」)

  • 无计划任务、无常驻轮询、无外部脚本进程。在客户端宿主进程内通过自带的 koffi(路径形如 resources\app.asar.unpacked\dsh\node_modules\koffi)绑定 user32.dll,调用 EnumWindows、GetWindowRect、SetWindowPos、ShowWindow 等。
  • 宿主进程是客户端主进程的子进程,完整性级别与窗口一致,因此 SetWindowPos 不会被 UIPI 拦住。
  • 仅在两个时刻改窗口:客户端启动后收敛一次、用户在设置页点保存/应用。客户端未运行时,插件侧不会有任何进程、窗口或弹窗。

配置与 RPC

位置 说明
~/.dsh/window-size.json 保存的配置字段:width、height、x、y、maximized、applyOnStart、savedAt
~/.dsh/window-size.log 启动应用/保存相关结果行,供排查(自动截断)
POST /api/window-size/dispatch 宿主注册的 RPC(经 connection.fetch.register)

RPC 报文风格与 dsh-novel-desk 相同,例如客户端请求:

// 客户端 → 宿主
{ "type": "client-request", "method": "window-size/dispatch", "rpcId": "…", "payload": { "action": "config.save", "args": { "width": 2027, "height": 1074, "x": 231, "y": 163 } } }

action 取值包括:state.get、config.save、config.apply、config.clear、window.read、windows.list。

安装与启用

官方 README 说明:客户端自带 pnpm;profile 位于 ~/.dsh/profiles/desktop。已通过 dsh-super-injector 的 dev_install_package 装配(在 profile 的 package.json 里做 link 依赖,并写入 dsh.profile.bundles)。包内 cordis.patch.yml 仅一行 insert,用于保证重启后由 profile 的 bundles 正常装配。

# 客户端自带 pnpm;profile 在 ~/.dsh/profiles/desktop
# 已经通过 dsh-super-injector 的 dev_install_package 装配(profile package.json 的 link 依赖 + dsh.profile.bundles)

若你使用注入器卸载,可一步执行 dev_uninject_plugin 并匹配包名 dsh-window-size。

典型用法

经过上面的安装与设置入口,日常可按下面步骤复现 README 中的流程:

  1. 启动 DSH 客户端,进入 设置 → 窗口尺寸。
  2. 按需填写宽高;需要固定到某块显示器时填写 X、Y,否则留空。
  3. 点 保存并应用,确认窗口立即变化。
  4. 完全退出后再次启动客户端,确认尺寸(及已保存的位置)在窗口出现后恢复一次。

排查时可查看 ~/.dsh/window-size.log 中与启动、保存相关的行。

适用场景与注意

适合谁:长期在固定分辨率或多显示器布局下使用 DSH 桌面客户端,希望宽高与坐标由插件显式落盘、启动即恢复一次的开发者。

权限与信任:窗口操作在 DSH 客户端宿主进程内执行,插件以当前 DSH 进程权限运行;安装前请自行阅读 源码 与 MIT 许可证,确认符合你的安全策略。

平台:实现依赖 Windows user32 与进程内 koffi 绑定;资料面向 Win32 客户端场景,其它平台行为以仓库说明为准。

生态说明:DSH 社区插件目录(如 SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系;插件通过 Cordis patch 接入 profile,属于「一切皆插件」生态中的客户端扩展,而非内置功能。

结尾

dsh-window-size 把主窗口尺寸与位置收敛到设置页和 ~/.dsh/window-size.json,启动时自动恢复一次,且不在后台常驻。需要进一步了解参数与 RPC 时,以 GitHub README 为准。

  • 目录页:https://www.skillhub.cn/plugins/myxiyues/dsh-window-size
  • GitHub:https://github.com/myxiyues/dsh-window-size
羽毛球分组比赛记分
小程序二维码

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

小夜