dsh-git-status:DSH Web 的實時 Git 分支指示器與切換工具

前言

在 DeepSeek Harness (DSH) 的 Web 客戶端開發工作流中,頻繁在聊天界面內管理 Git 分支是一個常見痛點。開發者通常需要離開對話界面,去終端執行 git checkout 或 git stash,這會打斷心流。dsh-git-status 插件直接在 DSH Web 的 Composer 工具行中集成了實時狀態顯示與切換能力,讓分支管理迴歸對話上下文。

插件介紹

這是一個面向 DSH Web 客戶端的插件,由 weiyuou-chowbus 維護。其核心價值在於將 Git 的狀態感知與分支切換操作本地化、安全化,使其成爲開發者與代碼倉庫交互的一個輕量級入口。

核心功能

  • 實時分支指示器:在 Composer 工具欄右側顯示當前分支的芯片,每 3 秒輪詢一次狀態。芯片上會附帶一個圓點來指示工作區是否乾淨(有未提交更改時顯示髒狀態)。
  • 工作區感知:插件跟隨當前會話的工作目錄(cwd)。當你切換 DSH 會話的工作區時,指示器會自動更新爲對應目錄的當前分支。
  • 分支切換:點擊指示器可打開一個過濾列表,列出所有本地分支(按最新提交者排序,並附帶上游追蹤信息)。點擊目標分支後,系統會彈出確認對話框。
  • 髒狀態安全:這是該插件的一個重要安全特性。如果工作區有未提交的更改,默認情況下會阻止 checkout 操作。插件提供顯式的“Stash & switch”操作,在切換前自動執行 git stash push --include-untracked,並在切換失敗時恢復 stash,防止代碼丟失。
  • 安全設計:插件採用“無 Shell”的調用方式,所有 Git 命令通過 child_process.execFile 執行。所有路徑在請求時經過 realpath 解析,僅接受註冊的工作區路徑或配置的 repoPath。分支名僅限本地分支枚舉結果,輸入不經過 shell 轉義。

安裝與啓用

安裝此插件需要系統中已配置 DSH Web 配置文件,且 pnpm 已在系統 PATH 中。

dsh plugin --profile web add dsh-git-status

安裝完成後,需要重啓 Web 服務以加載新插件:

npm exec @deepseek-ai/dsh web

配置與用法

默認情況下,插件會使用 DSH 進程的當前工作目錄作爲倉庫路徑。如果你希望爲沒有工作區的會話指定一個默認倉庫,可以通過配置文件覆蓋。

編輯 ~/.dsh/profiles/web/cordis.patch.yml,添加或修改以下配置:

- id: git-status
  config:
    repoPath: /absolute/path/to/your/default/repo

插件通過 HTTP 路由提供接口:
* GET /git-status?cwd=<workspace path>:獲取當前分支、髒狀態及本地分支列表。
* POST /git-checkout:切換分支,僅在 POST 請求下有效,且需要確認。

注意事項

  • 依賴要求:必須依賴 DSH Web 配置文件以及 PATH 中的 pnpm。
  • 路徑要求:配置項 repoPath 必須是絕對路徑。
  • 交互確認:所有切換操作(checkout)都需要用戶確認,屬於 POST-only 操作。
  • 髒狀態處理:髒狀態默認被阻止。只有顯式啓用 stash: true 或使用 UI 中的“Stash & switch”按鈕才能在髒狀態下切換分支。
  • 安全原則:該插件不使用 Shell 執行命令,所有輸入均經過白名單校驗,適合對安全性要求較高的開發環境。

結語

dsh-git-status 通過在 DSH Web 界面中嵌入輕量級的 Git 操作,解決了開發者在對話流中管理代碼狀態的痛點。它既提供了直觀的視覺反饋,又通過嚴格的白名單和髒狀態保護機制,確保了操作的安全性。你可以通過 GitHub 倉庫 查看源碼或提交反饋。

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

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

小夜