dsh-screen-switcher:DSH 裏的 Ctrl+Tab 屏幕切換

前言

在 DeepSeek Harness(DSH)裏來回改 Session、進 Settings、翻插件頁,常見做法是點側邊欄或依賴已有的 Session 輪詢類插件。社區目錄裏已有 session cyclers 和 tab bar,但它們往往在按鍵瞬間就切換,或者不把你去過的「頁面級」位置當成一等公民。若你希望像桌面 Alt+Tab 那樣:按住修飾鍵才彈出列表,鬆開才跳轉,Esc 則留在原地,就需要一個客戶端側的屏幕切換器。dsh-screen-switcher 由 Grawl 維護,分類爲客戶端插件,用 Ctrl+Tab 列出最近訪問過的各類「地點」,並按你的選擇恢復。

這是什麼

dsh-screen-switcher 是 DeepSeek Harness 的 Ctrl+Tab 切換插件:按住 Ctrl 再按 Tab,會出現 Alt+Tab 風格的疊加列表,列出你去過的 Session、Settings 分區、全局面板頁、插件目錄及單個插件頁,最近訪問的排在前面。鬆開 Ctrl 進入高亮項,Esc 取消。社區目錄頁:https://www.skillhub.cn/plugins/Grawl/dsh-screen-switcher;源碼與說明:https://github.com/Grawl/dsh-screen-switcher。當前 package 版本爲 0.1.5,許可證 MIT。

與同類做法的差異

README 明確區分:已有插件多是在按鍵時立即切換,或只圍繞 Session。本插件在按住 Ctrl 期間才展示列表,鬆手前不跳轉;Esc 不改變當前位置。它不增加額外窗口或常駐 UI,一個組合鍵加一層 overlay。地點不限於 Session:Settings 某一節、插件列表裏的某一卡,各自計爲獨立 place,返回時會恢復對應 section 或插件卡狀態。

核心功能

鍵盤與列表行爲

  1. 按住 Ctrl,按 Tab:打開列表,第一項爲最近訪問地點。
  2. 繼續 Tab 向下移動,Shift+Tab 向上。
  3. 鬆開 Ctrl:跳轉到高亮地點。
  4. Esc:關閉列表,保持原位置。
  5. 單次 Ctrl+Tab 後立刻鬆開:回到上一個 Session(與常見「切回上一項」習慣一致)。

列表渲染爲掛到 document.body 的 shell overlay,在 Settings 對話框之上仍可操作;離開前的界面仍能在背後看到。支持點擊某行直接切換;點擊列表外區域視爲取消。

哪些算一個 place

地點 讀取方式 恢復方式
Session 主視圖保留的 Session(ctx.sessions.list) ctx.uiWorkspace.openSession()
Page 當前選中的全局面板(ctx.layout.panelInfo) ctx.layout.selectPanel()
Plugin page Plugins 頁 store(view、tab) setView / setTab
Settings Settings shell store(open、activeId) open() / openSection()

Session 行會帶上側邊欄同源的狀態點:等待審批/計劃審閱/回答爲黃點,運行中爲轉圈,未讀輸出完成爲綠點,空閒爲灰點。

持久化與清理

訪問記錄寫在瀏覽器 localStorage 鍵 dsh.screen-switcher.v1,重載或重啓後仍保留 MRU 順序。列表長度不固定:地點一直存在直到對應實體消失。打開 switcher 時會剔除已刪除、已歸檔的 Session,以及不再註冊的 Settings section,並從存儲裏同步刪掉。

切換時的副作用

切到 Session 時會先關閉 Settings,並清空當前選中的 page。若目標已失效(Session 已刪、頁面已撤回),列表保持打開並打一條 warning 日誌;下次打開會按你真實所在位置更新。

安裝與啓用

從 Plugin Manager 安裝目錄 bundle,或對已發佈副本使用 CLI。官方命令如下:

dsh plugin --profile "$DSH_PROFILE" add dsh-screen-switcher

安裝新包後需重啓應用一次;對已安裝副本改動的 Client 代碼可熱更新。插件以當前 DSH 進程權限在客戶端運行,安裝前建議閱讀倉庫源碼與 LICENSE(MIT)。

典型用法

日常在多個 Session 與 Settings 之間跳轉時:

  1. 安裝並重啓 DSH 桌面端(見下文限制)。
  2. 依次打開幾個 Session,再進 Settings 某一節或 Plugins 裏某個插件頁。
  3. 按住 Ctrl,連按 Tab 瀏覽列表,鬆開到目標;若誤開列表,按 Esc 或點外側取消。
  4. 需要快速回到上一 Session 時,Ctrl+Tab 後立刻鬆開 Ctrl。

維護者提供的無頭校驗(非端到端像素測試):

node scripts/verify.mjs

該腳本通過與應用相同的 window.__ModuleLoader__ 加載 client.js,模擬 Ctrl+Tab 序列,覆蓋訪問順序、循環、提交/取消、Settings 重開、插件頁恢復與持久化等行爲。

適用場景與注意

適合: 經常在 Session、Settings 分區、插件頁之間切換的 DSH 用戶;希望 MRU 列表而不是即時輪詢;需要一眼看到 Session 側欄狀態點的場景。

快捷鍵優先級: Ctrl+Tab / Ctrl+Shift+Tab 在頁面層處理,優先於編輯器和對話框,終端面板內以及正在錄製快捷鍵時除外。

平臺限制: 瀏覽器通常把 Ctrl+Tab 留給標籤頁,Web 構建僅在桌面應用內可用,或瀏覽器能把該快捷鍵交給頁面時可用。

歷史粒度: 只記全局 page 級;右側邊欄(文件、終端、瀏覽器)不進列表。Settings 裏若子 tab 狀態落在 section 組件內部(README 舉例:Built-in plugins 下的只讀 inventory tabs),只能恢復到 section,不能保證精確子 tab。

生態說明: DSH 採用「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,本文檔描述的是社區插件能力,非官方產品說明。

結尾

dsh-screen-switcher 用一根 Ctrl+Tab 弦把 Session、面板頁、插件頁和 Settings 收成一張 MRU 表,按住才預覽、鬆手才跳轉,並把狀態點與 localStorage 持久化一併帶上。若要安裝或看實現細節,可訪問目錄頁 https://www.skillhub.cn/plugins/Grawl/dsh-screen-switcher 與 GitHub 倉庫 https://github.com/Grawl/dsh-screen-switcher。

羽毛球分组比赛记分
小程序二维码

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

小夜