dsh-hotkey-enhance:DSH Desktop 鍵盤增強與會話切換

前言

在 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜