前言¶
在 DSH Desktop 里日常开多个会话时,两件事很容易让人别扭:一是没有像 Codex 那样按住修饰键、连点 Tab 预览再松手切换的会话切换方式;二是 DSH Desktop 2.0.18 在 web runtime 下,文档里的 desktop:* 默认键位整套不生效,Cmd+N、Ctrl+Tab 等组合又进不了官方快捷键注册表的白名单。浏览器里这些键本来就要留给标签页和系统菜单,所以在非 Electron 环境里也不该被插件抢走。
下面介绍社区插件 @brantshi1/dsh-hotkey-enhance(GitHub:brantshin/dsh-hotkey-enhance,维护者 brantshin,分类:客户端)。它只在 DSH Desktop 的 Electron 环境里挂载监听,补 Codex 式 Ctrl+Tab 浮窗切换,并接管一批桌面常用快捷键。
这是什么¶
npm 包名 @brantshi1/dsh-hotkey-enhance,当前资料中的版本为 0.2.0,许可证 MIT。插件描述为:Desktop keyboard enhancement for DSH——Codex 式按住预览的会话切换器,加上 DSH 从未真正生效过的桌面键位映射。仅适配 DSH Desktop;在普通浏览器中加载即惰性返回,不注册监听器,也不抢键。
为什么需要绕过官方快捷键表¶
DSH Desktop 2.0.18 客户端跑在 web runtime。资料说明:dsh-client-shortcuts 依赖的 document.documentElement.dataset.platform 在安装包里未被赋值,导致 desktop:* 默认键位失效,实际生效的是 web:*(例如新会话为 Cmd+Alt+N)。同时 isWebBindingAllowed() 会拒绝 Cmd+N、Cmd+W、Cmd+D、Ctrl+Tab 等浏览器保留组合,向注册表注册时会抛出 Unsupported Web shortcut。
本插件因此不在注册表注册,而是在 window 捕获阶段监听 keydown——与社区里 dsh-custom-hotkeys、dsh-file-finder 等面对同一限制时的做法一致。副作用是:这些键不会出现在 设置 → 通用 → 快捷键(注册表目录)里,改键由插件自己的设置卡片完成。
核心功能¶
十一条可改键动作¶
下列组合在资料中有明确说明;全部可在 设置 → 通用 → 桌面快捷键 里录制改键(设置卡片在 README 中也称为「会话快捷键」)。
| 按键 | 动作 |
|---|---|
Cmd/Ctrl+N |
新建会话 |
Cmd/Ctrl+W |
关闭当前会话,回会话列表 |
Cmd/Ctrl+Shift+W |
同上(macOS 菜单 Cmd+W 的备用) |
Cmd/Ctrl+D |
置顶 / 取消置顶当前会话 |
Ctrl+Tab |
打开最近会话浮窗;按住连按移动高亮,松开才切换 |
Ctrl+Shift+Tab |
同上,反向 |
Cmd+B |
收起/展开左侧栏 |
Cmd+, |
打开设置 |
Cmd+Opt+S |
打开侧边对话(需 better-sidebar) |
Cmd+J |
新建终端 |
Cmd+T |
新建浏览器页面 |
Cmd+J / Cmd+T 转发 DSH 自带的 terminal.new / browser.new,不依赖第三方插件。Cmd+Opt+S 需要安装 dsh-better-sidebar;未安装时设置里该行置灰并注明依赖,按键不会被吞。
Ctrl+Tab 浮窗切换器¶
按下 Ctrl+Tab 弹出最近会话列表,而不是立刻切换。松开 Ctrl 才提交到高亮行;Tab 在按住 Ctrl 时可反复点选下一项;Esc 取消。浮窗挂在 shell.overlay,pointer-events: none,不抢焦点。列表在打开瞬间快照,上限 9 条;过滤 blank、归档、origin: "subagent" 会话。浮窗打开期间会暂时抑制其余会话快捷键。
改键与持久化¶
在 设置 → 通用 底部卡片中:每行显示动作、当前键、修改、恢复;点 修改 后按下新组合即保存,Esc 取消。组合须至少含 Ctrl/Alt/Cmd;与内置命令冲突或与其它行重复会被拒绝。键位保存在 localStorage 键 dsh.sessionkeys.bindings.v1,结构为 { version: 1, bindings: { <动作>: "<修饰键>+<code>" } },卸载插件不会清除,重装后仍在。
只在命中组合时 preventDefault() 与 stopPropagation();未命中一律放行,不干扰输入框、终端与内嵌页面。
安装与启用¶
面向 DSH Desktop profile 的安装命令(来自 README 原文):
dsh plugin --profile desktop add @brantshi1/dsh-hotkey-enhance
安装后重启 DSH Desktop。设置 → 通用 底部应出现「桌面快捷键」相关一节。
本地开发可从源码路径安装(改动即时生效):
dsh plugin --profile desktop add /path/to/dsh-hotkey-enhance
卸载:
dsh plugin --profile desktop remove @brantshi1/dsh-hotkey-enhance
也可手动从 ~/.dsh/profiles/desktop/package.json 的 dependencies 与 dsh.profile.bundles 移除包名,在 profile 目录执行 pnpm install 后重启。
package.json 中声明与 dshReleases 的 0.2.1-rc.2 为 compatible;安装前请对照你本机 DSH Desktop 版本与插件仓库说明。
典型用法¶
1、安装并重启后,用 Cmd/Ctrl+N 新建会话,用 Cmd/Ctrl+W 从主视图回到列表。
2、需要 Codex 式切换时:按住 Ctrl,点 Tab 在浮窗里移动高亮,松开 Ctrl 切换;反向用 Ctrl+Shift+Tab。
3、改键:打开 设置 → 通用,在插件卡片里对某行动作点 修改,录新组合;需要时用「全部恢复默认」。
4、若使用侧边对话快捷键,先安装 dsh-better-sidebar 并重启,再使用 Cmd+Opt+S。
维护者在仓库中提供离线测试(62 条断言):
pnpm test
等价于 node tests/hotkey-enhance.test.mjs。
适用场景与注意¶
适合长期用 DSH Desktop、多会话并行、且希望桌面键位与 Codex 切换习惯对齐的开发者。不适合在纯 Web DSH 或浏览器里指望同样效果——插件会主动不装监听器。
插件以当前 DSH 进程权限在客户端运行;安装前应阅读 GitHub 仓库 源码与 MIT 许可证,自行评估信任边界。
已知边界(来自 README):快捷键绕过注册表,无原生目录的冲突检测;持久化用 localStorage 而非 profile host 配置;macOS 上 Cmd+W 可能与原生菜单竞争;浮窗 z-index 极高但仍可能被更高模态遮住;Cmd+1..9 侧栏顺序跳转未实现。
DeepSeek Harness 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-hotkey-enhance 针对 DSH Desktop web runtime 下桌面键位失效与 Ctrl+Tab 无法注册的问题,用捕获阶段监听补上常用快捷键和按住预览的会话切换,并在设置里单独改键持久化。需要时可从目录页或 GitHub 查看更新与 issue:
- 目录:https://www.skillhub.cn/plugins/brantshin/dsh-hotkey-enhance
- 仓库:https://github.com/brantshin/dsh-hotkey-enhance