dsh-git-tab:在 DSH Web 右側欄審查 Git 變更並一鍵提交

前言

在 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 變更 即可打開面板。

典型用法

  1. 在 DSH Web 中打開目標會話,確認 Session 的 cwd 指向你要操作的 Git 倉庫根目錄(或依賴部署默認目錄)。
  2. 展開右側欄,進入 Git 變更 頁籤:在「變更」區瀏覽文件列表,點選文件查看 diff。
  3. 需要提交時點擊「提交」,填寫說明並選擇 僅本地提交 或 提交併推送(注意:一鍵提交會 git add -A 暫存整個工作區,含未跟蹤文件)。
  4. 需要同步遠端時使用 拉取(僅快進);工作區乾淨後可在頂部分支名處 切換分支。
  5. 在「提交樹」區查看 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
羽毛球分组比赛记分
小程序二维码

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

小夜