🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

窗口尺寸锁定 Koewen/dsh-window-size-lock

DeepSeek Harness
Koewen5 天前有提交已提供中文文档扫描:含敏感能力

记住并锁定主窗口尺寸位置,每次启动自动还原

29.7/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Koewen/dsh-window-size-lock
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · desktop
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 4 处,展示前 4 条)
  • 读取本地文件
    lib/index.js:328
    if (!existsSync(p)) return null;
  • 读取本地文件
    lib/index.js:330
    const o = JSON.parse(readFileSync(p, 'utf8'));
  • 写入本地文件
    lib/index.js:350
    mkdirSync(dirname(p), { recursive: true });
  • 写入本地文件
    lib/index.js:358
    writeFileSync(p, JSON.stringify(payload, null, 2));
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 插件:跨会话记住、锁定并恢复主窗口尺寸(用 koffi + user32,无需 Electron API)。

README

由 DeepSeek 最新模型翻译生成
dsh-window-size-lock DeepSeek Harness(DSH)宿主插件,记住主窗口的尺寸和位置:每次启动都还原这两项,锁住它们不被默认布局覆盖,并跨会话持久保存。 功能 1. 启动时还原 —— DSH 主窗口一出现,立刻应用上次保存的矩形(x、y、width、height),并在短暂宽限期内反复重申,这样 DSH 默认的 1280×820 布局和 Windows 默认的窗口摆放都占不到上风。窗口每次重开都往右下角挪,就是这一步挡住的。 2. 调整时采纳 —— 你拖动窗口边缘或角,新尺寸稳定下来后,自动存为新的锁定值。 3. 最大化安全 —— 最大化(双击全屏)的窗口永远不会被记录。窗口处于缩放状态时,所有尺寸记录暂停;还原后,重新应用保存的非全屏尺寸。最小化的窗口同样冻结(这类窗口会报出经典的屏幕外矩形 -32000,-32000),无边框全屏(F11 那种)也一样——它不是 WS_MAXIMIZE,靠显示器覆盖启发式判断。 4. 持久化 —— 矩形存在 %APPDATA%\@deepseek-ai\dsh-desktop\window-size-lock.json,格式为 {x, y, width, height},重启后依然有效。v1.3.0 写的文件(只有尺寸)仍能读取;升级后第一次稳定读取时学到位置。
展开完整文档(README 剩余 1 节)
dsh-window-size-lock

DeepSeek Harness(DSH)宿主插件,记住主窗口的尺寸和位置:每次启动都还原这两项,锁住它们不被默认布局覆盖,并跨会话持久保存。

功能

1. 启动时还原 —— DSH 主窗口一出现,立刻应用上次保存的矩形(x、y、width、height),并在短暂宽限期内反复重申,这样 DSH 默认的 1280×820 布局和 Windows 默认的窗口摆放都占不到上风。窗口每次重开都往右下角挪,就是这一步挡住的。
2. 调整时采纳 —— 你拖动窗口边缘或角,新尺寸稳定下来后,自动存为新的锁定值。
3. 最大化安全 —— 最大化(双击全屏)的窗口永远不会被记录。窗口处于缩放状态时,所有尺寸记录暂停;还原后,重新应用保存的非全屏尺寸。最小化的窗口同样冻结(这类窗口会报出经典的屏幕外矩形 -32000,-32000),无边框全屏(F11 那种)也一样——它不是 WS_MAXIMIZE,靠显示器覆盖启发式判断。
4. 持久化 —— 矩形存在 %APPDATA%\@deepseek-ai\dsh-desktop\window-size-lock.json,格式为 {x, y, width, height},重启后依然有效。v1.3.0 写的文件(只有尺寸)仍能读取;升级后第一次稳定读取时学到位置。

出厂默认尺寸(1280×820)永远不会被采纳为锁定值,所以默认布局即使晚一步重置,也无法悄悄覆盖你保存的尺寸。

安装

用 DSH 插件命令行安装(把 exe 路径换成你的 DSH 安装位置):

set ELECTRON_RUN_AS_NODE=1
"D:\WorkStation\DeepSeek Harness\DeepSeek Harness.exe" --expose-internals ^
"D:\WorkStation\DeepSeek Harness\resources\app.asar\dsh\node_modules\@deepseek-ai\dsh-desktop-host\lib\cli.js" ^
plugin --profile desktop add https://github.com/Koewen/dsh-window-size-lock

然后重启 DeepSeek Harness。(命令行会跑 pnpm,自动安装插件的 koffi 依赖。)

配置

编辑 cordis.patch.yml 里的 config: 块,然后重装或重启:

| 键 | 默认值 | 含义 |
| enabled | true | 总开关。false = DSH 默认行为,不锁定。 |
| pollMs | 500 | 监视循环间隔,单位毫秒。 |
| graceMs | 3000 | 窗口出现后,保存的矩形要重申多久。如果 DSH 在 3 秒之后才重新应用自己的布局,就调大(比如 6000)。 |
| adoptFactoryDefault | false | 允许把 1280×820(DSH 出厂默认)采纳为尺寸锁定。位置不受这个开关影响,始终采纳。 |
| persistPosition | true | 同时记住并还原窗口原点。false 则回到 v1.3.0 的行为(只记尺寸)。 |

重置

删除已保存的 rect 文件,然后重启 DSH:

del "%APPDATA%\@deepseek-ai\dsh-desktop\window-size-lock.json"

工作原理

DSH 宿主插件运行在普通 Node 子进程里(用 ELECTRON_RUN_AS_NODE=1 启动),所以拿不到 Electron API。这个插件改从操作系统获取窗口句柄:

- 与主窗口运行在同一个交互式桌面会话中;
- 是 Electron 主进程的直接子进程,所以 process.ppid 正是持有主窗口的 PID。

插件通过 koffi(已作为依赖打包)绑定 user32.dll,按 Z 序查找父 PID 名下最大的可见顶层窗口,再按 pollMs 间隔用 MoveWindow / GetWindowRect 应用和观测尺寸。

限制

Electron 在 Chromium 消息层强制了最小窗口尺寸(约 520×600)。任何外部调用方都无法把窗口缩到这条下限以下——这个插件只在允许范围内锁定尺寸。

DPI:插件启动时会请求 per-monitor DPI awareness v2(尽力而为),这样坐标就是物理像素。如果宿主进程在这次调用之前已经固定了 DPI 上下文,混合 DPI 的多显示器环境恢复尺寸时可能出现缩放偏移。

兼容性

基于 DeepSeek Harness 0.2.1-rc.3 构建并测试。可选的 peerDependencies 按这个确切版本声明,以便通过兼容性检查。

测试

test/wsl-edge-tests.mjs 用测试进程里创建的真实 Win32 窗口(ownerPid: process.pid)驱动真实插件,配合隔离的 APPDATA 和消息泵,让最小化/最大化状态是真实的:

node test/wsl-edge-tests.mjs # 21 checks, exit code 1 on any failure

覆盖:接管、仅移动、仅缩放、最小化(-32000 的 rect 绝不能记录)、最大化、保存的原点位于屏幕外、旧版仅存尺寸的存储、persistPosition:false、拖动(拖动过程中不接管)、关闭后重开、多窗口(最大者胜出)、存储损坏、dispose、显示器遮挡冻结、出厂默认尺寸,以及 v1.3.0 → v1.4.0 升级路径。

更新日志

v1.4.0 — 同时记住位置

修复「窗口重开时略微偏右下」:旧代码只恢复保存的尺寸,并把窗口当前的原点传给 MoveWindow,所以位置从未持久化,每次启动都回落到 Windows 的默认摆放(逐级向右下偏移)。

- 保存/恢复 {x, y, width, height};保存的原点若已不与任何显示器相交(显示器被拔掉),就忽略它,而不是把窗口拖到屏幕外;
- 位置和尺寸独立接管:出厂默认的 1280×820 保护只拦截尺寸接管,所以从不调整窗口大小的用户仍能保存位置;
- 仅存尺寸的 v1.3.0 存储会就地升级——原点在第一次稳定读取时学到(以前 lastApplied 会把它永久吞掉);
- 诊断:窗口超出显示器时告警,冻结原因在启动、no window found for pid 警告、DPI 感知级别。
预览分享卡片长什么样 ↓Koewen/dsh-window-size-lock
分享 · DeepSeek Harness Hub
Koewen/dsh-window-size-lock

记住并锁定主窗口尺寸位置,每次启动自动还原

这是你的仓库?认领条目

回到顶部