前言¶
在 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