前言¶
在 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)。
已覈實的能力包括:
- 提交圖與分支泳道:按真實父子關係分配列,線性歷史單列展示;合併提交用曲線跨列,列顏色固定,刷新不會亂序。
- 提交詳情:作者、時間、短 SHA(可點擊複製)、增刪行統計、按文件的 numstat、提交說明;支持 detached checkout、在該提交創建分支或標籤、revert、cherry-pick。
- Diff:按文件按需拉取,大行數 diff 有大小限制;工作區、暫存區、指定提交均可查看。
- 工作區:暫存/未暫存/未跟蹤計數;單文件 stage、unstage、discard;可選
add -A後提交、amend、stash 已跟蹤改動。 - 引用:本地與遠程分支、標籤、stash 同頁展示;切換、合併、創建/刪除分支與標籤、pop stash。
- 按會話記住倉庫:用戶選擇的倉庫保存在
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 認證。
典型用法¶
- 在目標項目下開啓或繼續 DSH 會話,確認會話工作目錄落在該 Git 倉庫或其子目錄內。
- 切換到 Git 頁籤;若存在多個嵌套倉庫,在面板中選擇正確根目錄(與會話 ID 綁定的選擇會持久化)。
- 在提交圖中點選 commit 查看文件列表與 diff,按需 checkout、打 tag 或 cherry-pick。
- 在工作區視圖暫存、提交或 stash;需要同步遠端時在終端執行 pull/push/fetch。
- 只讀審計時將配置設爲
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