前言¶
在 DeepSeek Harness(DSH)裏跑智能體或寫代碼時,工作區往往已經是一個 Git 倉庫:改文件、看 diff、提交、拉取、切分支,這些操作如果每次都切到終端,會打斷 Web 會話裏的上下文。DSH 生態裏插件可以擴展 Web 界面能力;下面介紹維護者 hejingzhou 發佈的 dsh-git-tab(倉庫 hejingzhou/dsh-git-change),在會話右側欄增加「Git 變更」頁籤,把變更列表、統一 diff、提交樹和常用 Git 動作收進同一面板。
這是什麼¶
dsh-git-tab 是面向 DSH Web profile 的界面插件(npm 包名 dsh-git-tab,當前資料中版本 1.0.0,許可證 MIT)。Host 半側在 Web server 上註冊同源 JSON 路由,對當前 Session 記錄的 cwd(無則回退部署默認目錄)執行 git 子進程;Client 半側通過 ctx.sidebarRightTabs 註冊頁籤與指南入口,樣式使用 DSH 主題 token(--dsw-alias-*),文案走 DSH locale(中文 / English)。
社區目錄頁:https://www.skillhub.cn/plugins/hejingzhou/dsh-git-change。該目錄爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係;安裝與使用前請自行查看倉庫源碼與許可證。
核心功能¶
變更與 diff¶
- 列出已修改(已暫存 / 未暫存)、新增、刪除、重命名和未跟蹤文件,並顯示
+新增 / −刪除行數。 - 選中文件後在下方渲染統一 diff(行號、hunk 頭、增刪着色);未跟蹤文件按整文件新增展示;二進制與超大文件有明確標註。
提交樹¶
- 使用 Git 自身的 ASCII 拓撲(等價於
git log --graph),展示短 hash、refs(HEAD / 分支 / 遠端分支 / tag)、提交說明與日期;合併提交的圖線完整保留。
一鍵提交與拉取¶
- 提交:可選擇 僅本地提交 或 提交併推送。僅本地 =
git add -A+git commit;提交併推送 = 提交後git push;工作區已乾淨時改爲推送已有本地提交;無上游時自動git push -u origin <branch>。推送失敗不會丟失本地提交,界面會提示「已本地提交 {hash},但推送失敗」。 - 拉取:
git pull --ff-only,只允許快進;分叉、無上游、本地改動衝突等錯誤直接提示。
切換分支¶
- 點擊頂部當前分支名打開本地分支列表(含上游與「當前」標記),選擇即切換。
- 僅當工作區完全乾淨時可用(含未跟蹤文件);界面與 Host 側均會校驗
git status --porcelain,非空即拒絕。
刷新與主題¶
- 提供刷新按鈕;頁籤重新可見、窗口重新獲得焦點時自動刷新;提交 / 拉取 / 切換分支成功後自動刷新。
- 跟隨 DSH 明暗主題。
安裝與啓用¶
插件以當前 dsh 進程權限在 Session 工作目錄下執行 Git 命令;安裝前請確認信任維護者與倉庫內容。
從 GitHub 安裝(源碼)¶
dsh plugin --profile web add github:hejingzhou/dsh-git-change
從 npm 安裝(發佈後)¶
dsh plugin --profile web add dsh-git-tab
安裝後在左側欄「插件」頁確認已啓用,刷新 Web 頁面;展開會話右側欄,在指南里點 Git 變更 即可打開面板。
典型用法¶
- 在 DSH Web 中打開目標會話,確認 Session 的
cwd指向你要操作的 Git 倉庫根目錄(或依賴部署默認目錄)。 - 展開右側欄,進入 Git 變更 頁籤:在「變更」區瀏覽文件列表,點選文件查看 diff。
- 需要提交時點擊「提交」,填寫說明並選擇 僅本地提交 或 提交併推送(注意:一鍵提交會
git add -A暫存整個工作區,含未跟蹤文件)。 - 需要同步遠端時使用 拉取(僅快進);工作區乾淨後可在頂部分支名處 切換分支。
- 在「提交樹」區查看
git log --graph風格的拓撲與 refs。
Host 側對外暴露的路由(資料原文)包括:GET /dsh-git-changes/status、GET /dsh-git-changes/diff、GET /dsh-git-changes/log、GET /dsh-git-changes/branches、POST /dsh-git-changes/switch(body:{ branch })、POST /dsh-git-changes/commit(body:{ message, mode: 'local' | 'remote' })、POST /dsh-git-changes/pull。git 以參數數組執行、不經過 shell;只讀命令設置 GIT_OPTIONAL_LOCKS=0;請求帶自定義頭與本機同源校驗,路徑校驗爲倉庫相對路徑。
適用場景與注意¶
適合:主要在 DSH Web 裏開發、希望在不離開會話的情況下審查改動、看提交圖、做常規 commit / ff-only pull / 乾淨工作區下切分支的用戶。
限制與注意(來自 README):
- 拉取僅快進;分叉分支請在終端處理。
- 切換分支要求工作區完全乾淨;Host 側強制校驗。
- 提交遵循倉庫 hooks 與 Git 用戶身份;hook 失敗或身份缺失會顯示 Git 原文。
- ahead/behind 反映最近一次 fetch 的上游狀態,拉取會刷新。
- 一鍵提交會暫存整個工作區,請按需使用。
結尾¶
dsh-git-tab 把 Git 工作區審查、提交樹瀏覽和 commit / push / pull / 切分支收進 DSH 右側欄,減少在 Web 會話與終端之間來回切換。進一步瞭解可訪問社區目錄頁與 GitHub 倉庫:
- 目錄頁:https://www.skillhub.cn/plugins/hejingzhou/dsh-git-change
- GitHub:https://github.com/hejingzhou/dsh-git-change