DshHotkey
August 17, 2026 · View on GitHub
一个零依赖的 Windows 后台小工具:按 Alt+Space,把承载 DeepSeek Harness 的窗口 从最小化中唤起并置顶;再按一次,把它最小化。
仅限 Windows:依赖 Win32 API(全局热键、窗口管理)和系统自带的 .NET Framework 编译器,不支持 macOS / Linux。
为什么是独立小工具,而不是 skill / MCP / 插件?
- skill 只是一份给 Agent 的指令文本,不能常驻监听按键。
- MCP / Cordis 插件 跑在 Harness 自己的进程或页面里,管不到浏览器窗口的 最小化/恢复,更注册不了操作系统级全局热键。
- 全局热键 + 窗口管理必须由 OS 层的常驻进程来做,所以最合适的形态就是一个 极小的 Windows 可执行程序(C# 编译,无需安装任何运行时)。
安装
cd C:\desktoppp\dshdemo\dsh-hotkey
powershell -ExecutionPolicy Bypass -File .\install.ps1
安装脚本会:编译 exe → 复制到 %LOCALAPPDATA%\DshHotkey\ → 写入 HKCU 开机自启 →
立即启动。之后 Alt+Space 即可切换。
卸载:
powershell -ExecutionPolicy Bypass -File .\uninstall.ps1
行为
| 状态 | Alt+Space 效果 |
|---|---|
| Harness 窗口已最小化 | 恢复并置顶聚焦 |
| Harness 窗口可见 | 最小化 |
| 找不到匹配窗口 | 用默认浏览器打开 http://127.0.0.1:64552 |
手动使用
.\DshHotkey.exe -list # 列出当前所有窗口(进程名 + 标题),确认匹配项
.\DshHotkey.exe -toggle # 手动执行一次切换(用于测试)
.\DshHotkey.exe -proc "DSH Desktop" -title "DeepSeek Harness" -url "http://127.0.0.1:64552"
日志写在 exe 同目录的 DshHotkey.log,启动和每次切换都有记录。
注意事项
- 目标窗口用进程名 + 标题双重匹配:默认
proc=DSH Desktop(Harness 是 Electron 应用)+ 标题包含DeepSeek Harness(页面<title>)。双重匹配可以 避免 Obsidian 等窗口标题碰巧包含 "DeepSeek Harness" 而误操作。 - 若 Harness 窗口标题临时变化(如无会话时的首页标题就是纯 "DeepSeek Harness", 有会话时是 "「会话标题」 — DeepSeek Harness"),包含式匹配都能命中。
- 想改用浏览器承载 Harness:把
-proc设为chrome或msedge等(或传空串-proc ""只按标题匹配)。自定义后需同步修改 HKCU 自启命令里的参数。 -url可以是 URL,也可以是 exe 路径——找不到窗口时会启动它。- Alt+Space 本来用于打开窗口系统菜单;注册全局热键后该组合被本工具接管。
若被其他程序占用,日志会报错误 1409,可修改
DshHotkey.cs顶部的MOD_*/VK_*常量后重新build.ps1。