dsh-session-git:在 DSH 會話裏直接看 Git 歷史與工作區

前言

在 DSH 裏和智能體改代碼時,提交歷史、分支和工作區狀態往往要切到終端或獨立 Git 客戶端。會話一多,每個項目對應哪條歷史、當前目錄是不是倉庫根,也容易搞混。下面介紹社區插件 dsh-session-git(維護者 koi128bit,分類爲客戶端):它在每條會話頂部增加 Git 頁籤,綁定當前會話的工作目錄與所選倉庫,而不是全局單一倉庫。

這是什麼

dsh-session-git 把 Git 能力嵌進 DSH 對話界面:頁籤與 Chat | Trajectory 並列,打開的是該會話關聯的倉庫(工作目錄由主機按 sessionId 解析)。兩個會話可以各自看不同項目的歷史,互不影響。插件當前版本 1.1.1(MIT),依賴 Node.js 22+ 與 DSH >=0.2.1-rc.2 <0.3.0-0;README 寫明在 macOS 的 DSH 0.2.1-rc.2 上驗證過。

若無法解析會話目錄,插件會按文檔順序回退到配置項或主機默認工作目錄;操作前應以面板裏顯示的倉庫路徑爲準。

核心功能

插件通過 conversation.view 槽位註冊 Git 頁籤,後端在 /api/git-panel 下調用本機 git(走 DSH Connection 的認證與請求信任檢查;1.1.1 起替代 1.1.0 未校驗的自建接口,升級後需重啓 DSH)。

已覈實的能力包括:

  1. 提交圖與分支泳道:按真實父子關係分配列,線性歷史單列展示;合併提交用曲線跨列,列顏色固定,刷新不會亂序。
  2. 提交詳情:作者、時間、短 SHA(可點擊複製)、增刪行統計、按文件的 numstat、提交說明;支持 detached checkout、在該提交創建分支或標籤、revert、cherry-pick。
  3. Diff:按文件按需拉取,大行數 diff 有大小限制;工作區、暫存區、指定提交均可查看。
  4. 工作區:暫存/未暫存/未跟蹤計數;單文件 stage、unstage、discard;可選 add -A 後提交、amend、stash 已跟蹤改動。
  5. 引用:本地與遠程分支、標籤、stash 同頁展示;切換、合併、創建/刪除分支與標籤、pop stash。
  6. 按會話記住倉庫:用戶選擇的倉庫保存在 dsh-git-panel:repo:<sessionId>,換項目不會串會話。

未在面板內提供的操作:push、pull、fetch(需憑據與網絡,README 說明仍在終端執行)。

倉庫解析順序(顯式無效路徑會報錯,不會靜默換庫):面板 ?repo= → 配置 repoRoot → 從會話工作目錄自動探測 → 主機 workingDirectory.defaultDirectory → process.cwd()。自動探測會先對會話 cwd 執行 git rev-parse --show-toplevel,否則在有限深度內查找 .git,跳過 node_modules 等目錄,最多收集 40 個倉庫。

默認允許寫倉庫,提交前默認暫存全部改動;配置裏可設 allowWrite: false 只讀。路徑白名單用於限制插件可選倉庫,不是 OS 沙箱;Git 與 hooks 仍以當前 DSH 進程用戶權限運行。

安裝與啓用

環境:Node.js 22 或更高,DSH 0.2.1-rc.2 或兼容的 0.2.x(<0.3.0-0)。

安裝到 Web profile:

dsh plugin --profile web add github:koi128bit/dsh-session-git

也可從 Release 安裝固定版本 tarball(示例爲 v1.1.1):

dsh plugin --profile web add https://github.com/koi128bit/dsh-session-git/releases/download/v1.1.1/dsh-session-git.tgz

安裝後重啓 dsh web。打開已有至少一條消息的會話,在頂部選擇 Git(全新空會話不渲染視圖區,頁籤會在有首條消息後出現)。DSH Desktop 用戶可在插件管理器中添加相同 GitHub 地址並重啓 Desktop;若使用非 web 的 profile,將命令中的 web 換成對應 profile 名。

卸載:

dsh plugin --profile web remove dsh-session-git

卸載後同樣需要重啓主機。若仍在使用 1.1.0,請升級到 1.1.1 並重啓,以啓用 DSH Connection 認證。

典型用法

  1. 在目標項目下開啓或繼續 DSH 會話,確認會話工作目錄落在該 Git 倉庫或其子目錄內。
  2. 切換到 Git 頁籤;若存在多個嵌套倉庫,在面板中選擇正確根目錄(與會話 ID 綁定的選擇會持久化)。
  3. 在提交圖中點選 commit 查看文件列表與 diff,按需 checkout、打 tag 或 cherry-pick。
  4. 在工作區視圖暫存、提交或 stash;需要同步遠端時在終端執行 pull/push/fetch。
  5. 只讀審計時將配置設爲 allowWrite: false,避免誤提交。

適用場景與注意

適合在 DSH Web 或 Desktop 中同屏查看智能體對話與 Git 狀態的開發者:多會話並行、每會話獨立倉庫記憶、圖形化歷史與工作區操作,減少窗口切換。

使用前建議自行閱讀 GitHub 倉庫 源碼與 MIT 許可證;插件會執行本機 Git 命令,權限與你在終端運行 git 相同。社區目錄 SkillHub 插件頁 與 GitHub 爲獨立信息源,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-session-git 把「當前會話的 Git 倉庫」收進 DSH 對話頂欄:歷史、diff、分支與工作區在一處完成,遠端同步仍交給終端。安裝與細節以 README 爲準。

  • 目錄頁:https://www.skillhub.cn/plugins/koi128bit/dsh-session-git
  • GitHub:https://github.com/koi128bit/dsh-session-git
羽毛球分组比赛记分
小程序二维码

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

小夜