dsh-workspace-focus:把 DSH Web 側邊欄收窄到當前工作區

前言

在 DSH(DeepSeek Harness)Web 裏同時維護多個工作區時,側邊欄會列出全部工作區及其會話。日常只想盯一個項目目錄時,列表仍然很長,視線容易被別的分組打斷。官方瀏覽區沒有對外暴露「按工作區過濾列表」的接口,單靠摺疊也不能把其它工作區的標題藏起來。

下面介紹的 dsh-workspace-focus(維護者 qiansanyu)是社區客戶端插件:進入「聚焦」後,側邊欄只保留當前聚焦的那一個工作區,並在會話頭部提供狀態標籤與操作入口。插件當前在 GitHub 上星標爲 0,許可證 MIT,版本 0.1.0(以 package.json 爲準)。

這是什麼

一句話:工作區聚焦——把 DSH Web 側邊欄收窄到當前聚焦的工作區,並在會話頭部提供聚焦入口與狀態提示。

分類屬於 客戶端(dsh.client,僅 Web 平臺)。它不替代官方工作區模型,而是在現有 WorkspaceBrowser 與設置服務之上做視圖摺疊、CSS 隱藏組標題,以及 URL / 存儲中的作用域管理。

核心功能

側邊欄收窄

未聚焦時,側邊欄照常顯示所有工作區;聚焦某個工作區後,其它工作區及其會話從側邊欄消失,退出聚焦後恢復。實現上結合兩條通道:讀寫官方瀏覽區註冊的視圖 store(摺疊非聚焦工作區),以及按 data-row-key="workspace:<id>" 注入 CSS 隱藏其它工作區的組標題行。

會話頭部標籤

當前會話屬於某個工作區時,標題欄右側出現工作區標籤,三種狀態:未聚焦(灰色)、聚焦且會話在該工作區內(藍色 + 藍點)、聚焦但會話在其它工作區(警告色 +「未聚焦」)。單擊不觸發聚焦(防誤觸);雙擊在「聚焦到當前工作區」與「退出聚焦」之間切換;右鍵或鍵盤 Enter / Space 打開菜單(工作區列表、聚焦、在此工作區新建會話、複製聚焦鏈接、退出聚焦等)。子智能體等不屬於任何工作區的會話不顯示標籤。

設置與聚焦鏈接

「設置 → 工作區聚焦」提供 enabled(默認開,關則隱藏頭部標籤)與 focusEnabled(默認開,關則退出聚焦並還原側邊欄),寫入 profile 的 cordis.patch.yml。聚焦後地址欄帶 ?ws=<工作區路徑>,可通過菜單複製鏈接,在他處或新標籤頁打開同一聚焦狀態。

作用域(每標籤頁獨立)

讀取順序爲 URL → sessionStorage['dsh.workspace.focus'] → localStorage['dsh.workspace.focus.default']。「退出聚焦」會清空三層狀態,避免刷新後又被默認值拉回。

安裝與啓用

前提:DSH Web 0.2.x(dsh --version 確認;開發時使用過 0.2.2-rc.1),且 PATH 上有 pnpm(dsh plugin 會把參數轉發給 pnpm)。

命令行(推薦)

在 web profile 下執行:

dsh plugin --profile web add git+https://github.com/qiansanyu/dsh-workspace-focus.git

裝完後會把 dsh-workspace-focus 追加進 profile 的 dsh.profile.bundles,一般無需手改配置。刷新頁面即可;若未生效可重啓 dsh web(關閉 HMR 的 profile 只能重啓)。等價簡寫爲 github:qiansanyu/dsh-workspace-focus;HTTPS 不通時可改用 git+ssh://git@github.com/qiansanyu/dsh-workspace-focus.git。

Web 界面

側邊欄 →「插件」→「添加插件」→「安裝第三方插件」,填入同一 Git 地址,同樣會自動勾選 bundle。

卸載

dsh plugin --profile web remove dsh-workspace-focus

同一 profile 不宜並存多份工作區聚焦插件,否則會搶用 window.__DSH_WORKSPACE_FOCUS__。

典型用法

  1. 打開屬於某工作區的會話,在頭部右側查看工作區標籤。
  2. 雙擊標籤,側邊欄收窄到該工作區;再次雙擊退出聚焦。
  3. 需要可分享狀態:聚焦後使用菜單「複製聚焦鏈接」,對方打開帶 ?ws= 的 URL 即進入相同聚焦(工作區不存在時參數保留但不聚焦,不會破壞界面)。
  4. 在聚焦狀態下新建會話:優先用菜單「在此工作區新建會話」,頭部官方「新建會話」按鈕不受插件攔截,可能落在非聚焦工作區。

其它插件可通過 window.__DSH_WORKSPACE_FOCUS__ 調用 focus(path)、exit()、toggle(path)、subscribe(fn) 等,並監聽 dsh:workspace-focus 事件(詳見倉庫 README)。

適用場景與注意

適合誰:長期在多個 DSH 工作區之間切換、但經常需要「只盯一個目錄」的開發者。

安裝前:插件隨當前 DSH Web profile 加載,與 dsh web 進程權限一致;安裝第三方插件前建議瀏覽 源碼倉庫 與 MIT 許可證。

已知邊界(README 已說明,摘要點):

  • 未歸入任何工作區的會話在聚焦時會從側邊欄整桶消失(成員關係需通過 attachSession 等顯式記賬)。
  • 官方視圖狀態 dsh.workspace.view.v5 跨標籤頁共享,多標籤各自聚焦時摺疊狀態可能互相覆蓋;退出聚焦會按插件快照 dsh.workspace.focus.snapshot 還原。
  • 側邊欄上方搜索仍走 Host 全量查詢,可能搜到其它工作區的會話。
  • 聚焦工作區被刪除時自動退出聚焦;官方若改動 data-row-key DOM 契約,隱藏標題可能降級爲「只摺疊不隱藏」,功能不會故意破壞數據。

社區插件目錄與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,本插件由社區維護。

結尾

dsh-workspace-focus 在不改官方會話列表 API 的前提下,用視圖摺疊、DOM 標識與頭部交互,把 Web 側邊欄收成「當前工作區」視圖,並用 URL 與存儲分層記住聚焦狀態。查閱與安裝可參考:

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

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

小夜