前言¶
用 DSH 做智能體開發時,當前會話往往綁定一個工作目錄。分支名、暫存/未暫存改動、與 upstream 的領先/落後,這些信息分散在終端或 IDE 裏,切回 Web 界面時不一定一眼能看到。下面介紹社區插件 dsh-git-statusline(維護者 pinzza,分類:客戶端):在 DSH Web 裏用一行緊湊文本展示 Git 工作區與 upstream 狀態,顯示位置可在設置裏切換。設計參考了 ccstatusline-zh 的 Git widgets,適合希望在瀏覽器裏常駐 Git 摘要的 DSH 0.2.x 用戶。
這是什麼¶
dsh-git-statusline 是面向 DSH Web 的純 JavaScript 客戶端插件,通過 DSH 插槽把 Git 狀態渲染到側邊欄底部、會話標題旁或對話框上下方。非 Git 倉庫的會話會按設計隱藏;無 upstream 時不會給出錯誤的「已推送」結論,懸停提示會說明無法判斷。
- 目錄頁:https://www.skillhub.cn/plugins/pinzza/dsh-git-statusline
- 源碼與文檔:https://github.com/pinzza/dsh-git-statusline
- 當前資料中的版本:0.2.1(MIT 許可證)
顯示內容與格式¶
典型一行形如:
main (+16,-2) ↑2 ↓1
含義(與 README 一致):
(+16,-2):已暫存與未暫存文本改動的新增/刪除行數。↑2:當前分支相對 upstream 待推送的提交數。↓1:當前分支相對 upstream 待拉取的提交數。✓:工作區乾淨,且相對 upstream 沒有領先或落後。
插件每 5 秒輪詢一次,窗口重新獲得焦點時立即刷新;同一時刻最多一個進行中的請求(客戶端併發去重)。Git 命令均爲只讀,並設置 GIT_OPTIONAL_LOCKS=0。服務端先用 .git/HEAD 與 .git/index 的 mtime 預檢,工作區未變則命中緩存、不拉起 git 進程;在 Windows 掛載路徑(如 WSL 的 /mnt/*)上另有超時與結果緩存策略,詳見倉庫 README。
顯示位置¶
在 DSH 中打開:設置 → Git 狀態欄 → 顯示位置。選項保存在瀏覽器 localStorage(鍵 dsh-git-statusline:config),改完立即生效,無需重啓 DSH。
| 位置 | 說明 |
|---|---|
| 側邊欄底部(默認) | 側邊欄一行;收起成 56px 軌道時退化爲 ↑ / ↓ / ± / ✓ 單字符 |
| 會話頂部標題後方 | 標題欄內的小 chip |
| 對話框上方 | 輸入框上方的 chip,獨佔一行 |
| 對話框下方 | 輸入框下方狀態行內的純文本(與用量統計等同處一行,帶寬緊,故爲無邊框純文本) |
| 不顯示 | 不註冊插槽,也不發請求 |
若在意對話框下方那一行的排版,README 建議優先選「會話頂部標題後方」。
與 DSH 版本的兼容性¶
要求 DSH >=0.2.0-rc.1 <0.3.0(插件 0.2.1 起)。DSH 啓動時會校驗插件 package.json 裏 @deepseek-ai/dsh* peer 是否覆蓋當前運行時;不覆蓋會打印 skipping profile bundle 並靜默跳過整個插件,界面上無報錯。
| DSH 版本線 | 可用插件版本 |
|---|---|
>=0.2.0-rc.1 <0.3.0 |
0.2.1 起 |
0.1.x |
0.2.0(在 0.2.x 上會被跳過) |
安裝與啓用¶
插件預構建代碼在倉庫 lib/ 中,不需要構建步驟。以下命令在 README 中標註爲在 DSH 0.2.0-rc.1 + pnpm 11.21.0 上實測通過。
從 GitHub 直接安裝(推薦):
dsh plugin --profile web add github:pinzza/dsh-git-statusline
從 Release 預構建 tarball 安裝(與上一方式等價,可離線):
curl -L -o dsh-git-statusline.tgz \
https://github.com/pinzza/dsh-git-statusline/releases/latest/download/dsh-git-statusline.tgz
dsh plugin --profile web add ./dsh-git-statusline.tgz
固定版本可將 URL 改爲釘住 tag 的形式,例如 .../releases/download/v0.2.1/dsh-git-statusline.tgz。
安裝後重啓 dsh web;若 Web 由其他進程管理,重啓該進程並刷新 http://127.0.0.1:3080。
驗證插件層是否加載:
dsh --profile web --dump-config | grep -A2 dsh-git-statusline
應能看到 # == dsh-git-statusline。若同時出現 dsh: skipping profile bundle "dsh-git-statusline",說明 peer 與當前 DSH 不匹配,需按兼容性表升級插件或調整 DSH 版本。
卸載:
dsh plugin --profile web remove dsh-git-statusline
不顯示時的排查¶
README 給出的順序:
- 插件層是否被跳過:執行上面的
dump-config | grep,看不到# == dsh-git-statusline或出現skipping profile bundle→ peer 不兼容(升級 DSH 後常見)。 - 當前會話工作目錄不是 git 倉庫(
isRepo=false,插件隱藏)。 - 顯示位置選了「不顯示」。
若瀏覽器 Network 裏沒有 POST /git-statusline/status,多爲 ① 或 ③;有請求卻無渲染則多爲 ②。
適用場景與注意¶
- 適合:在 DSH 0.2.x Web 端開發、希望少切終端即可看到分支與 upstream 摘要的用戶。
- 權限與安全:插件隨當前 dsh 進程運行,會通過服務端執行只讀 Git 查詢;安裝前請自行查看源碼與 MIT 許可證,確認符合你的環境策略。DSH 社區目錄(如 SkillHub)爲獨立生態站點,與 DeepSeek / 幻方無官方從屬關係。
- 0.1.x DSH:應使用插件 v0.2.0 或更早 tag,勿在 0.2.x 上誤用舊 peer 包。
倉庫內可用 node --test 跑 8 個測試(4 個 Git 解析 + 4 個兼容性迴歸)。
結尾¶
dsh-git-statusline 把 Git 分支、行級改動摘要和 upstream 領先/落後壓成 Web 裏可配置位置的一行狀態,並針對輪詢與慢速文件系統做了緩存與預檢。需要安裝命令與性能細節時以 GitHub README 爲準。
- 插件目錄:https://www.skillhub.cn/plugins/pinzza/dsh-git-statusline
- 倉庫:https://github.com/pinzza/dsh-git-statusline