前言¶
把項目交給 DSH(DeepSeek Harness)跑任務時,瀏覽器裏的 web UI 是主要工作界面。但一碰到 git——暫存、提交、切分支、推送——就得切回終端或另開編輯器,思路容易被打斷。DSH 的理念是「一切皆插件」,客戶端的界面能力同樣可以由插件補齊。下面介紹的 @mojiexuan/dsh-git 就是這樣一個插件:它在 web UI 側邊欄掛載一塊源代碼管理面板,把倉庫的日常 git 操作搬進瀏覽器。
這是什麼¶
@mojiexuan/dsh-git 是爲 DeepSeek Harness web UI 打造的類 VS Code Git 源代碼管理面板插件,作者是陳佳寶(GitHub:mojiexuan),MIT 許可證,當前版本 0.2.1。
它覆蓋的內容包括:倉庫初始化、按文件暫存、提交 / 推送 / 發佈分支 / 拉取、分支與遠程管理,另外還提供 AI 生成提交信息和提交歷史拓撲圖。
實現上分兩半:host 半邊跑在 Node 側,封裝 git/* RPC 端點;client 半邊跑在瀏覽器,負責面板 UI 與渲染。
核心功能¶
面板入口與倉庫初始化¶
側邊欄底部(Settings 上方)有面板開關。打開面板後,如果當前工作區還不是 git 倉庫,會顯示一鍵「Initialize Git repository」,背後執行的是 git init -b main。
暫存與提交¶
面板裏有可摺疊的 Staged changes / Changes 兩個列表,每個文件可以單獨暫存(+)或取消暫存(−),也支持全部暫存 / 全部取消。
主操作按鈕按 git 語義變化:
- 有未提交更改時顯示 Commit;如果沒有已暫存內容,會自動先暫存
- 分支跟蹤遠程且領先時顯示 Push
- 分支沒有上游但存在本地提交時顯示 Publish branch
Pull、分支與遠程管理¶
Pull 按鈕只在配置了遠程後顯示,點擊執行 git fetch --all --prune,一次性拉取所有遠程與分支。
分支管理支持列表、切換、創建、刪除(刪除帶確認)。遠程管理支持查看、添加、刪除 origin remote(同樣帶確認)。
AI 提交信息¶
基於暫存區 / 工作區的 diff,經 harness LLM 流式生成提交信息,遵循 Conventional Commits 格式,默認輸出中文。
提交歷史圖¶
提交歷史渲染成 SVG 泳道拓撲圖,覆蓋所有分支與遠程,泳道拓撲在客戶端計算,默認在面板底部展開,佔面板一半高度。加載方式是懶分頁加虛擬滾動,滾到底自動加載下一頁。單擊某個提交可以內聯展開它的變更文件;hover 彈窗顯示 message / author / date / hash,完整 hash 可複製。
自動刷新與自更新¶
面板每 2.5 秒輪詢一次 git status,所以在面板外做的修改、提交、推送也會同步顯示出來。
第一次打開面板時會靜默檢查 npm registry 上有沒有新版本;有更新時,側邊欄入口出現徽標,面板頭部給出一鍵更新鏈接,更新完成後提示重啓。
界面與平臺¶
界面支持英文與中文。跨 Windows / macOS / Linux 平臺;git 以未受限方式運行,因此各平臺原生的 TLS 與憑據助手都能正常使用。
安裝與啓用¶
先安裝插件:
dsh plugin --profile web add @mojiexuan/dsh-git
然後啓動 dsh web,側邊欄底部即可看到面板入口。
卸載與更新:
# 卸載(已發佈的包和本地鏈接通用)
dsh plugin --profile web remove @mojiexuan/dsh-git
# 更新到最新發布版本
dsh plugin --profile web update @mojiexuan/dsh-git
如果是本地鏈接開發(dsh plugin --profile web add .),沒有單獨的更新步驟:先做 npm run build,再完全重啓 dsh web(host bundle)並刷新瀏覽器(client bundle)。
從源碼構建:
npm install
npm run build # 產出 lib/index.js(host)與 lib/client.js(client)
npm run typecheck
配置項¶
可選配置寫在 profile 的 cordis.patch.yml 裏:
- id: git
config:
maxDiffChars: 4000 # 送給模型的 diff 文本上限(默認 4000)
maxLogEntries: 2000 # 歷史圖每頁最大提交數(默認 2000,滾動加載更多)
provider: deepseek # 可選,固定 provider(默認使用部署時的模型)
model: deepseek-chat # 可選,固定模型
reasoningEffort: off # off(默認)關閉思考;high / max / default 原樣透傳
registryUrl: https://registry.npmjs.org # 自更新檢查的 npm registry(默認 npmjs.org)
maxDiffChars 控制 AI 生成提交信息時送入模型的 diff 截斷長度,大倉庫可按需調整;registryUrl 在內網或鏡像環境下有用。
典型流程¶
以一個尚未納入版本控制的目錄爲例,日常流程大致是:
- 打開側邊欄面板,點擊一鍵初始化倉庫(
git init -b main) - 在 Changes 列表逐文件暫存,或點全部暫存
- 點擊 AI 生成提交信息,等流式輸出完成,也可以手動改寫
- 點 Commit;首次提交後分支沒有上游,按鈕會變成 Publish branch
- 通過遠程管理添加 origin 後,面板出現 Pull 按鈕;分支領先遠程時顯示 Push
經過上面的步驟,暫存、提交、推送都能在面板內完成,不需要切終端。
適用場景與注意事項¶
適合常駐 dsh web UI 工作、希望 git 操作不離開瀏覽器的人。如果你習慣純命令行,這個面板是補充而非替代。
幾點值得注意:
- 安全設計:所有
git/*端點以authority: 'loopback'註冊,僅 127.0.0.1 可訪問;用戶數據不會拼進命令字符串——提交信息走git commit -F -,路徑走--pathspec-from-file=-,分支 / 遠程名與 URL 按安全字符類校驗。 - 插件以當前 dsh 進程的權限運行,安裝前建議先讀一遍源碼與許可證再決定。本項目爲 MIT,源碼公開。
- 自更新檢查依賴 npm registry,內網環境可用
registryUrl指向自己的鏡像地址。
結尾¶
@mojiexuan/dsh-git 把一塊類 VS Code 的源代碼管理面板裝進 dsh web UI:初始化、暫存、提交、推送、分支與遠程管理在瀏覽器內完成,AI 提交信息與提交歷史拓撲圖也在其中。
- 目錄頁:https://www.skillhub.cn/plugins/mojiexuan/dsh-git
- 源碼:https://github.com/mojiexuan/dsh-git
目錄頁爲社區維護的獨立站點,與 DeepSeek / 幻方無官方從屬關係。