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 设为 chromemsedge 等(或传空串 -proc "" 只按标题匹配)。自定义后需同步修改 HKCU 自启命令里的参数。
  • -url 可以是 URL,也可以是 exe 路径——找不到窗口时会启动它。
  • Alt+Space 本来用于打开窗口系统菜单;注册全局热键后该组合被本工具接管。 若被其他程序占用,日志会报错误 1409,可修改 DshHotkey.cs 顶部的 MOD_* / VK_* 常量后重新 build.ps1