@mojiexuan/dsh-git:給 DeepSeek Harness web UI 加一塊類 VS Code 的 Git 面板

前言

把項目交給 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 在內網或鏡像環境下有用。

典型流程

以一個尚未納入版本控制的目錄爲例,日常流程大致是:

  1. 打開側邊欄面板,點擊一鍵初始化倉庫(git init -b main)
  2. 在 Changes 列表逐文件暫存,或點全部暫存
  3. 點擊 AI 生成提交信息,等流式輸出完成,也可以手動改寫
  4. 點 Commit;首次提交後分支沒有上游,按鈕會變成 Publish branch
  5. 通過遠程管理添加 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 / 幻方無官方從屬關係。

羽毛球分组比赛记分
小程序二维码

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

小夜