DSH Web GUI 的插件生態允許開發者通過會話標籤頁擴展功能。Git 操作通常依賴外部終端或手動文件管理,如果需要在智能體會話中直接管理代碼改動,往往需要頻繁切換上下文。dsh-git-panel 插件提供了一個可視化的 Git 面板,直接集成在會話標籤欄中,用於查看、暫存、提交、Diff、歷史記錄及分支管理。
該插件由 fengbinmov 維護,採用 MIT 許可證,以 profile bundle 的形式提供宿主與瀏覽器兩端的邏輯。
核心功能¶
會話頁集成¶
插件在會話標籤欄中新增一個 Git 標籤頁,緊挨「對話 / 軌跡」標籤。面板內部包含兩個子視圖:更改頁與歷史頁。
更改頁(Changes)¶
- 雙區佈局:上方爲「未暫存的更改」,下方爲「已暫存的更改」。一個文件若同時存在兩處改動,會同時在兩側出現。
- 拖拽操作:支持將文件或文件行從「未暫存」拖拽到「已暫存」進行暫存;拖拽組標題可整組移動。
- 行級操作:在行號欄按下並拖動可選中若干行,浮出操作條(暫存/取消暫存/丟棄);在代碼文字上拖動爲瀏覽器原生劃詞選擇。
- 快捷鍵:Delete 鍵可丟棄未暫存的改動(無二次確認)或取消暫存已暫存的改動。
歷史頁(History)¶
- 三欄視圖:提交列表 / 文件列表 / 選中文件的補丁。分隔條可拖動、雙擊復位。
- 實時同步:與更改頁的分隔條位置對齊,支持跨頁拖動復位。
分支與遠端¶
- 工具欄:顯示當前分支、上游分支、ahead/behind 計數。
- 操作:下拉菜單支持切換本地分支、合併、rebase、fetch/pull/push。
- 衝突處理:有未解決衝突或進行中的操作時,切換/合併會被攔截並提示原因;檢測到進行中的 merge/rebase 會顯示警告條及中止按鈕。
Diff 渲染與樂觀 UI¶
- 渲染器:更改頁和歷史頁共用同一個 Diff 渲染器,支持等寬字體、行級標記。處理二進制文件、截斷補丁及重命名時有明確提示。
- 樂觀策略:操作先在本地視圖生效(預測函數),等待 Git 真實答覆後替換;失敗則回滾並報錯。
安裝與啓用¶
該插件依賴 DSH 版本 >= 0.1.5-rc.1 及 Node.js 版本 ^22.19.0 或 >=24.0.0。
dsh plugin --profile web add @fengbinmov/dsh-git-panel@latest
安裝後重啓 dsh web 即可生效。
典型用法¶
- 在會話界面添加 Git 標籤頁,查看當前倉庫的代碼改動。
- 拖拽文件行或使用行號欄選中特定行,通過浮出的操作條快速暫存或丟棄。
- 通過工具欄管理分支和遠程倉庫,執行合併或拉取操作。
注意事項¶
- 所有 Git 操作由界面觸發,插件本身不註冊工具或寫入 system prompt,模型在界面上看不到它。
- 插件採用樂觀 UI,操作失敗時會自動回滾並顯示錯誤。
- 瀏覽器端通過 Web Locks 機制保證跨標籤頁只開一條 SSE 事件流,避免連接池阻塞。