前言¶
在 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 或插件卡狀態。
核心功能¶
鍵盤與列表行爲¶
- 按住 Ctrl,按 Tab:打開列表,第一項爲最近訪問地點。
- 繼續 Tab 向下移動,Shift+Tab 向上。
- 鬆開 Ctrl:跳轉到高亮地點。
- Esc:關閉列表,保持原位置。
- 單次 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 之間跳轉時:
- 安裝並重啓 DSH 桌面端(見下文限制)。
- 依次打開幾個 Session,再進 Settings 某一節或 Plugins 裏某個插件頁。
- 按住 Ctrl,連按 Tab 瀏覽列表,鬆開到目標;若誤開列表,按 Esc 或點外側取消。
- 需要快速回到上一 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。