dsh-session-location:單列表會話行上顯示工作區與 Git 分支

前言

在 DeepSeek Harness(DSH)裏同時開着多條智能體會話時,側邊欄常用「單列表」把會話攤平顯示,而不是按工作區分組。分組視圖裏本來就有工作區標題;單列表裏每條行往往只有會話標題,看不出這條會話屬於哪個項目、當前檢出的是哪條 Git 分支。要確認歸屬,只能逐個點進會話或回到文件樹對照目錄。

dsh-session-location 是社區維護的 DSH 客戶端插件(維護者 xinjiguaike),在單列表模式下於每個會話行標題下方追加一行:所屬工作區 · 當前 Git 分支,便於在不切換分組方式的情況下做項目與分支對齊。

這是什麼

  • 包名:dsh-session-location
  • 當前版本(package.json):0.2.0
  • 許可證:MIT
  • 引擎要求:DSH >= 0.2.2-rc.1 < 0.3.0-0(不滿足時宿主會拒絕安裝)

插件邏輯全部在瀏覽器半區 client.js 完成,通過宿主已有的 remote.workspaceFiles.read 讀取工作目錄下的 Git 信息,不新增宿主服務或路由。

核心功能

顯示內容與示例

單列表(In one list)模式下,標題下方多出一行標籤,例如:

▢ 修復未登錄頁面鑑權漏洞                    1小時
  📁 hermes · ⎇ fix/auth-redirect

工作區名優先取該會話所屬工作區的標題(重命名過的標題也會生效);取不到時用工作目錄的 basename;沒有 cwd 時顯示「未分組」。分支通過讀取 .git/HEAD,或對 linked worktree / 子模塊先解析 .git 中的 gitdir: 再讀對應 HEAD 得到。讀取結果按目錄緩存 60 秒。

不是 Git 目錄、讀取失敗或文件過大時,只顯示工作區、不顯示分支,且不拋錯;降級僅影響這一行標籤,不會破壞會話行本身。

生效範圍與界面細節

  • 只在「單列表」分組模式生效。按工作區 / 按工作區樹模式自帶分組標題,插件不改動那些視圖。
  • 帶標籤的行高由 32px 調整爲 44px;無標籤行保持原樣。
  • 工作區圖標使用宿主產品圖標集的 folder-close(與文件樹一致);分支使用插件自帶的 Git 分支字形。

開關位置

設置 → 通用 → 「在會話列表中顯示工作區與分支」。偏好存在瀏覽器 localStorage,按瀏覽器生效;切換後列表立即更新,無需重啓。README 說明該選項放在 settings.general.item,是因爲會話列表右上角「分組方式 / 排序方式 / 篩選會話」下拉屬於宿主 ui-workspace 內部組件,插件無法向其中插入條目。

實現上的約束(瞭解即可)

宿主沒有「行內第二行」的官方插槽。插件使用兩個會話行裝飾 seat:sidebar.session.row.leading(idle 行,hover 時標籤仍可見)與 sidebar.session.row.trailing(有運行 / 待審批 / 未讀狀態點時由 trailing 補上標籤)。標籤經樣式絕對定位到標題下一行。若宿主 DOM 結構變化,最壞情況是標籤不顯示、行高不變,而不是側邊欄錯亂。

安裝與啓用

要求 DSH 版本在 package.json 的 engines.dsh 範圍內。插件尚未進入 awesome-dsh-plugin 精選列表,dsh-market 市場裏暫時搜不到,需用下列方式安裝。

桌面端(DSH Desktop):插件頁 → 添加插件 → 包裏輸入 dsh-session-location(或 GitHub Release 的 tarball 地址、倉庫地址),安裝後按提示重啓或刷新。

dsh web 或任意 profile(將 <profile> 換成實際 profile 名,dsh web 默認爲 web):

# 1) 從 npm 安裝(推薦;國內鏡像也會同步)
dsh plugin --profile <profile> add dsh-session-location

# 2) 或預構建 tarball(不執行任何構建腳本)
dsh plugin --profile <profile> add https://github.com/xinjiguaike/dsh-session-location/releases/latest/download/dsh-session-location.tgz

# 3) 或直接從 GitHub 源碼安裝
dsh plugin --profile <profile> add github:xinjiguaike/dsh-session-location

裝完後刷新頁面;桌面端若未生效可重啓一次應用。安裝前建議在 GitHub 倉庫 查看源碼與 LICENSE;客戶端插件在瀏覽器中與當前 DSH 會話上下文交互,應自行確認是否符合使用環境的安全預期。

典型用法

  1. 將側邊欄會話分組方式設爲 單列表。
  2. 在 設置 → 通用 中打開 「在會話列表中顯示工作區與分支」。
  3. 列表刷新後,每條會話標題下應出現「工作區 · 分支」一行(無 Git 信息時可能只有工作區名)。

若希望在所有分組模式下都顯示第二行標籤,README 指出可修改 client.js 裏 CSS 中兩處 [class*="_flatList"] 前綴(屬於本地定製,非默認行爲)。

適用場景與注意

適合:長期在 DSH 中並行多個倉庫或多分支會話、且習慣用單列表瀏覽的開發者和智能體使用者;需要快速區分「這條會話在哪個 workspace、哪條 branch」而不想頻繁切換分組視圖。

注意:

  • 分支信息依賴對工作目錄下 .git 相關文件的只讀訪問;權限與 DSH 宿主爲該會話提供的文件 API 一致。
  • 與 README 已覈對的同 profile 側邊欄類插件(如 dsh-better-sidebar、dsh-session-manager 等)未佔用相同 seat;若自行疊加大量會話行插件,仍建議在插件管理器中確認 slot 是否衝突。
  • 社區目錄頁與 GitHub 爲獨立信息源,與 DeepSeek / 幻方無官方「應用商店」從屬關係;星標與收錄狀態以各頁面當時數據爲準。

結尾

dsh-session-location 用一行副標籤補齊單列表模式下缺失的「項目 + 分支」上下文,改動面集中在會話行裝飾與本地偏好,安裝命令與版本約束以倉庫 README 與 package.json 爲準。

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

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

小夜