用 dsh-git-graph 在 DeepSeek Harness 會話裏查看 Git 提交圖

前言

用 DeepSeek Harness 做 AI 編程時,對話、軌跡、工作區改動往往擠在同一個 Web 界面裏。Git 歷史卻常常還在別處:終端裏敲 git log --graph,或者再開一個 VS Code、GitHub Desktop。來回切換並不複雜,但上下文會斷——剛纔模型改了哪幾個文件、當前 HEAD 在哪條分支、工作區是乾淨還是髒的,都要重新確認一遍。

DeepSeek Harness(dsh)的設計是「一切皆插件」:模型、工具、會話、沙箱和 UI 都可以掛載替換。社區因此出現了一批只改界面、不改核心的增強插件。dsh-git-graph 就是其中面向 Web GUI 的 Git 可視化插件:把提交歷史圖、分支過濾、文件 diff 和 VS Code 風格的未提交改動,嵌進會話頁的「Git 圖譜」標籤。

本文按插件目錄頁、GitHub 倉庫 README / package.json,以及 DeepSeek Harness 官方倉庫 交叉覈對後整理。社區插件目錄是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係,下文不當成官方應用商店來寫。

這是什麼

dsh-git-graph 是 DeepSeek Harness Web GUI 的嵌入式 Git 倉庫圖譜插件,由 GitHub 用戶 1841220388zzzcccxxx-star 維護,倉庫地址爲 1841220388zzzcccxxx-star/dsh-git-graph。目錄頁將它歸在「界面增強」。許可證爲 MIT。倉庫 package.jsondsh.plugin.json 中的版本號均爲 0.10.0,並聲明客戶端平臺爲 web

它要解決的問題很具體:在當前對話的工作區裏,直接看清提交拓撲、分支關係和未提交改動,而不必離開 Harness 界面。README 的定位是:在對話界面內嵌入 GitHub 風格的提交歷史圖、分支管理、代碼 Diff,以及 VS Code 風格的未提交改動面板。

需要分清的是:GitHub 上還有其他同名或相近的 DSH Git 插件(例如只讀圖譜、狀態浮窗)。本文只寫目錄頁收錄、維護者爲 1841220388zzzcccxxx-star 的這一份。覈對當日 GitHub API 顯示該倉庫 12 星;目錄頁當時仍顯示 7 星,星標以倉庫頁面爲準。倉庫 README 寫明本項目由 AI 輔助開發。

核心功能

倉庫 README 列出的能力可以分成「看歷史」和「管工作區」兩塊。下面只寫已在 README 與源碼結構裏覈對過的部分。

提交歷史圖與分支

圖譜按 GitHub 風格列出提交,本地分支和遠程分支各自成組,可以摺疊,並按分支着色。打開哪個會話,就顯示哪個會話工作區的 Git 倉庫;切換會話會自動跟隨。工作區不是 Git 倉庫時,只顯示空態,不畫圖譜。

分支過濾用勾選控制:勾選則顯示該分支,不勾則完全隱藏;全部不勾選時列表爲空。提交列表分頁加載,README 寫明每頁 200 條,並提供「加載更多」。圖譜頁頭部有下拉框,用於在多個倉庫之間切換。

提交詳情與 Diff

點擊提交行打開詳情:提交信息、變更文件列表、單文件 diff。Ctrl+點擊 可以選兩次提交做對比。詳情裏的文件歷史入口(README 用「📜」標註)用來查看單個文件相關的歷史提交。

未提交改動

未提交改動區塊常駐圖譜頂部,分組方式接近 VS Code:已暫存、更改、未跟蹤。每行有狀態徽標(A / M / D / R / U / ?)和 +/- 行數,點擊行展開帶語法高亮的單文件 diff。重命名顯示爲 舊 → 新;未跟蹤文件直接顯示內容。分組開關可以單獨隱藏某一組,面板和分組都可以摺疊。

行內可以暫存、取消暫存、還原;頂欄可以全部暫存、提交。勾選複選框後可批量暫存、取消暫存、還原、忽略或提交選中文件。README 寫明破壞性操作執行前會彈確認框。提交對話框內可以依據 diff 生成候選提交信息,生成結果可編輯;英文 README 將其描述爲基於 diff 的啓發式候選,而不是單獨的模型調用說明。

右鍵與遠程操作

提交行右鍵菜單包括:複製哈希或消息、查看詳情、打標籤(可改名/刪除)、從該提交新建分支、打開 GitHub 提交頁、複製倉庫路徑、在文件管理器中打開。

頂欄提供 ⬇ 拉取git fetch)和 ⬆ 推送git push 當前分支,確認後執行)。分支組頭也可右鍵:本地分支可切換、推送、刪除(README 寫明已合併纔可刪,HEAD 受保護);遠程分支可拉取、複製遠程分支名。遠程分支組頭即使與本地完全同步也會顯示,並標註「已同步」或「已包含」。

刷新、快捷鍵與主題

頁面可見時,每 5 秒監聽工作區改動與新增提交,並更新統計和列表。快捷鍵包括:Ctrl+F 搜索、Ctrl+/ 打開快捷鍵面板、Ctrl+B 摺疊或展開全部分支組、↑↓ / j / k 導航、Enter 打開詳情、Esc 關閉。

主題可自動跟隨系統,也可固定深色或淺色;另外提供 8 種風格方案(櫻花、海洋、森林、夜空、糖果、商務、星河、科技)。分支過濾、分組開關、摺疊狀態和主題會保存,刷新後保留。README 寫明自 v0.8 起存儲鍵統一爲 gg2-*,首次打開時分支默認全部展開。

圖譜打開時會靜默檢查 GitHub 上的最新版本;發現新版本後,頂欄顯示「🔄 新版本 vX.Y」,點擊後下載並替換插件文件(先備份舊版,失敗則回滾),重啓後生效。這是寫權限操作,安裝前應當和源碼一起審查。

掛載位置在會話頁內「Git 圖譜」標籤,位於「軌跡」標籤旁。package.json 裏客戶端注入槽爲 slots,並通過 cordis.patch.yml 聲明 bundle patch。

安裝與啓用

目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端中運行:

dsh plugin add github:1841220388zzzcccxxx-star/dsh-git-graph

目錄頁同時說明:如需可復現安裝,可固定 commit 哈希:

dsh plugin add github:1841220388zzzcccxxx-star/dsh-git-graph#commit

#commit 換成實際的 40 位提交哈希,不要原樣複製佔位符。DeepSeek Harness 官方 CLI 文檔裏,插件管理的完整形式是 dsh plugin --profile <profile> add ...。這個插件聲明平臺爲 web,裝到 Web 界面時應對準 web profile,例如:

dsh plugin --profile web add github:1841220388zzzcccxxx-star/dsh-git-graph

Git 源安裝拉取的是源碼而不是構建產物。官方開發文檔指出,pnpm ≥10 默認攔截 git 依賴的 prepare 腳本,第一次 add 可能失敗,需要按提示把包名寫入該 profile 的 pnpm-workspace.yamlallowBuilds 後再執行一次。本倉庫 package.json 未聲明 prepare;若安裝報錯,以終端提示爲準,不要假設必須允許構建。

目錄頁的安全提示需要原樣理解:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前應檢查源代碼倉庫和許可證。

倉庫 README 還提供了一套從本地源碼掛載的寫法,適合已經把插件拷到 profile 目錄的情況。

  1. 在 web profile 的 package.json 中加入依賴(路徑按實際調整):
{
  "dependencies": {
    "dsh-git-graph": "file:./plugins/git-graph"
  }
}
  1. 在 profile 的 cordis.patch.yml 中掛載。倉庫裏的示例是:
- insert:
    - id: git-graph
      name: dsh-git-graph
      config:
        repo: "C:/path/to/your/repo"

config.repo / config.repos 是圖譜面板初始可訪問的倉庫白名單。README 寫明:運行中被會話工作區發現的倉庫也會自動加入可訪問集合。示例路徑是 Windows 風格,換成自己的倉庫路徑。

  1. 安裝並重啓:
pnpm install

然後重啓 dsh web。官方默認 Web UI 地址是 http://127.0.0.1:3080。打開任意會話頁,點「軌跡」旁的「Git 圖譜」標籤即可。

典型用法

README 中的操作可以按這個順序試一遍(工作區必須已經是 Git 倉庫,否則只會看到空態)。

  1. 打開會話頁的「Git 圖譜」標籤,確認顯示的是當前對話工作區的倉庫。
  2. 用分支組標題摺疊或展開某條分支;用勾選框過濾要看的分支。
  3. 看圖譜頂部的「未提交改動」:已暫存 / 更改 / 未跟蹤。點擊某一行展開 diff。
  4. 需要暫存或還原時,用行內按鈕;需要提交時用頂欄「提交」。破壞性操作會先彈出確認框。
  5. 點擊某次提交查看詳情;按住 Ctrl 再點另一次提交,對比兩次提交。
  6. 在提交行上右鍵:複製哈希、打標籤、從該提交拉新分支,或打開 GitHub 提交頁。
  7. 遠程同步用頂欄拉取 / 推送;切換或刪除本地分支用分支組頭右鍵。
  8. 底部狀態欄的「未提交改動」可以滾回頂部改動區塊;↻ 刷新 會重新加載倉庫數據。

倉庫結構在 README 裏寫得很清楚,方便對照源碼:

git-graph/
├── index.js          # 服務端 git API
├── client.js         # 會話頁Git 圖譜標籤
├── web/index.html    # iframe 內的圖譜頁面
├── package.json      # 插件清單
└── cordis.patch.yml  # profile 掛載點

源碼文件頭註釋寫明:服務端在 /git-graph 下提供 API,命令通過 execFile 執行(不走 shell),參數列表是固定的。也就是說,本機需要能調用 git。服務端(index.js)或客戶端(client.js)改動後要重啓 dsh web;只改 web/index.html 時刷新頁面即可。

適用場景與注意事項

比較適合這幾類用法:

  • 已經在用 dsh web 做 AI 編程,希望在同一個會話頁裏看提交圖和工作區改動
  • 需要比 git log --graph 更直觀的分支過濾、文件 diff、兩次提交對比
  • 偶爾要在界面裏做暫存、提交、拉取、推送,但不想爲此再開一個 Git 客戶端

不適合、或需要額外小心的地方:

  • 它只聲明瞭 Web 客戶端,不是 TUI / headless 插件。
  • 工作區不是 Git 倉庫時沒有圖譜,只有空態。
  • 插件會執行 git fetchgit push、切換分支、刪除已合併分支、還原文件等寫操作。雖然 README 寫了確認框和 HEAD 保護,權限仍等於當前 dsh 進程。
  • 自動更新會下載並替換插件文件。如果環境不允許插件自行改磁盤上的安裝目錄,應關閉或不要使用該入口,改爲固定 commit 再手動升級。
  • config.repo 是白名單,但會話工作區發現的倉庫會在運行時加入可訪問集合。不要把 dsh 指到你不希望被 Git 面板觸及的目錄。
  • 社區目錄和 GitHub 上存在多個 Git 可視化插件,安裝命令必須對準 github:1841220388zzzcccxxx-star/dsh-git-graph,不要按名字隨便拼。

再次強調:插件以當前 dsh 進程權限運行,安裝時可能執行代碼。安裝前檢查源代碼與 MIT 許可證;生產或共享環境建議固定 commit 哈希。DeepSeek Harness 仍處於 developer preview,官方 README 寫明會有破壞性變更,插件接口也可能跟着變。

小結

dsh-git-graph 把提交歷史、分支過濾、文件 diff 和 VS Code 風格的未提交視圖嵌進 DeepSeek Harness 的會話頁,減少「一邊跟模型改代碼、一邊切到別的 Git 客戶端」的往返。它是社區 MIT 項目,不是官方內置功能。

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-git-graph/

GitHub:https://github.com/1841220388zzzcccxxx-star/dsh-git-graph

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

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

小夜