dsh-git-panel: DSH Web GUI 的 Git 面板插件

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 即可生效。

典型用法

  1. 在會話界面添加 Git 標籤頁,查看當前倉庫的代碼改動。
  2. 拖拽文件行或使用行號欄選中特定行,通過浮出的操作條快速暫存或丟棄。
  3. 通過工具欄管理分支和遠程倉庫,執行合併或拉取操作。

注意事項

  • 所有 Git 操作由界面觸發,插件本身不註冊工具或寫入 system prompt,模型在界面上看不到它。
  • 插件採用樂觀 UI,操作失敗時會自動回滾並顯示錯誤。
  • 瀏覽器端通過 Web Locks 機制保證跨標籤頁只開一條 SSE 事件流,避免連接池阻塞。

插件目錄 | GitHub 倉庫

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

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

小夜