DSH 插件「當前變更」:在會話裏查看工作區 Git 改動與 diff

前言

在 DeepSeek Harness(DSH)裏跑 Agent 時,改動的文件往往分散在終端命令、多輪對話和多個子項目之間。若工作區根目錄本身不是 Git 倉庫,或一個容器裏並列着 frontend、backend 等多個獨立倉庫,單靠本地 git status 很難在「當前 Session」的上下文裏快速對齊:改了哪些文件、暫存與未暫存如何區分、本輪對話裏各分支又多了哪些 commit。

下面介紹維護者 xuex991 發佈的客戶端插件 Working Changes(DSH 界面中常顯示爲 當前變更,倉庫 xuex991/dsh-working-changes)。它只做只讀展示:對比當前工作區與 HEAD 的變更,並在 DSH 原生右側欄查看 unified diff;同時可按 Session 範圍瀏覽本地分支上新增的 commit。分類爲客戶端;社區目錄頁見 SkillHub 條目。

這是什麼

當前變更 是一個體量較小的只讀 DSH 插件:在當前 DSH 工作區內展示相對 HEAD 的文件改動,並支持在右側欄逐文件查看 diff;多倉庫工作區會按倉庫分組。它不替代 Git 客戶端做暫存、提交或推送,而是把「Session 裏到底動了什麼」嵌進 DSH 會話界面。

維護者:xuex991(GitHub:xuex991/dsh-working-changes)。

核心功能

會話頂部的變更摘要

  • 單倉庫:顯示 分支 · 更改文件數 · +新增行 −刪除行。
  • 多倉庫:顯示 倉庫數 · 文件數 · +新增行 −刪除行,文件按倉庫分組。
  • 鼠標懸停總覽可看到各項目與當前分支(含剛初始化、尚無 commit 的倉庫),並列出變更文件及每個文件的行數變化。
  • 點擊總覽或某個文件,在 DSH 原生右側欄打開 diff。

工作區與 Git 狀態

  • 區分 已暫存、未暫存、未跟蹤、衝突 等狀態;支持文件篩選、狀態標記、重命名、二進制文件列表與手動刷新。
  • 使用 Codex 風格的層級文件樹,支持按路徑搜索與目錄摺疊,只展示包含變更文件的目錄。
  • 在右側欄渲染帶行號與平臺 diff 配色的 unified diff。

多倉庫自動發現

工作區根目錄不是 Git 倉庫時,插件會嘗試發現其下並列的獨立倉庫(默認掃描一層,並跳過依賴目錄與構建目錄)。典型佈局如下:

project/                 ← 不是 Git 倉庫
  frontend/.git          ← 會發現
  backend/.git           ← 會發現
  infra/.git             ← 會發現
  node_modules/...       ← 跳過

每個文件歸屬唯一倉庫;某一倉庫讀取失敗不會隱藏其他倉庫的改動。

Session 內的 commit 歷史(只讀)

從「當前變更」相關入口可選擇 本 Session 內、各本地分支上產生的 commit(按項目分組、時間倒序)。選中 commit 後查看其相對第一個父提交的文件變更,並繼續打開文件 diff。歷史不展示遠程分支、Push 狀態或 Push 事件。

刷新時機

Agent 每輪結束、窗口重新聚焦以及手動刷新時會更新視圖。

明確不提供的能力

只讀:沒有暫存、提交、切分支、stash、push、pull 或 worktree 等寫操作。

安裝與啓用

插件以當前 DSH 進程權限運行;安裝前請自行查看倉庫源碼與 LICENSE(README 標註爲 MIT)。DSH 生態採用「一切皆插件」思路;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

環境要求(來自 README):

  • DeepSeek Harness 0.2.1-rc.2 或更新版本。
  • DSH 宿主機環境中可用的 git 命令。

通過 DSH 插件頁

  1. 打開 DSH 的 插件。
  2. 點擊 添加插件。
  3. 輸入倉庫地址:
https://github.com/xuex991/dsh-working-changes
  1. 安裝並啓用 當前變更(Working Changes)。

通過插件市場索引

在 插件 → 發現 → 索引源 中添加:

https://xuex991.github.io/dsh-working-changes/index.json

安裝後,在發現頁找到 當前變更。xuex991 相關插件的穩定安裝入口也彙總在 xuex991.github.io/dsh-working-changes。

典型用法

  1. 在 DSH 中打開含 Git 倉庫(或多子倉庫)的工作區,啓用插件後查看會話頂部的變更摘要。
  2. 懸停摘要確認分支與各文件行數;點擊摘要或文件,在右側欄閱讀 diff。
  3. 多倉庫時按分組確認每個子項目的改動;需要時用文件樹路徑搜索縮小範圍。
  4. Agent 跑完一輪後視圖會自動刷新;也可手動刷新。
  5. 若需回顧本 Session 內在本地分支上新增的 commit,使用 revision 選擇器選中 commit,再逐文件查看相對父提交的 diff。

適用場景與限制

適合:在 DSH Session 內快速覈對 Agent 或人工編輯帶來的改動;多倉庫容器工作區統一瀏覽;需要只讀 diff 而不想在 IDE 與終端之間來回切換時。

實現與邊界(README「說明 / Limits」):

  • 文件狀態區分 staged / unstaged,但文件 diff 仍比較完整工作區與 HEAD。
  • 歷史僅讀本地分支;以 Session 首次觀察到分支時的 HEAD 爲祖先基線,只展示之後產生的 commit。
  • 每個倉庫最多 200 個本地分支、每分支最多 500 個 commit,超出會提示截斷。
  • 二進制文件僅列在列表中,不渲染正文;單個 diff 最多 400,000 字符。
  • 不展開 submodule;不展開已發現倉庫內部的嵌套倉庫。

發現相關 Host RPC 配置(可選):支持 discoverDepth、repos、repoLabels、untracked、maxRepos、concurrency、repoTimeoutMs。默認發現一層、最多 20 個倉庫、4 個倉庫併發、每倉庫 15 秒超時;顯式傳入 repos 時關閉自動發現。

結尾

當前變更 把「相對 HEAD 的工作區改動」和「本 Session 內本地 commit」收進 DSH 會話 UI,並與原生右側欄 diff 聯動,適合需要只讀、可刷新視圖的場景。

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

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

小夜