dsh-git-workbench:DeepSeek Harness 的 Git 與 GitHub PR 工作臺

前言

DeepSeek Harness 的插件生態強調“一切皆插件”;社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。對已經在 DSH 中運行智能體的開發者來說,常見需求不只是執行單條 Git 命令,而是把倉庫狀態、diff、提交、分支和 GitHub PR 操作放進同一個工作區:模型能讀取狀態並執行受控操作,Web 端也能查看變更、編輯文本文件和跟進 PR。

dsh-git-workbench 針對這個場景,把 Git 與 GitHub pull-request 流程暴露爲模型工具和 DSH Web 側邊欄面板。下面介紹它的定位、能力、安裝方式和注意事項。

這是什麼

dsh-git-workbench 是由 FlutterSoul 維護的 DeepSeek Harness 工作流插件,許可證爲 MIT。

項目狀態爲 experimental,當前目標爲 0.1.0-rc.6 DSH 包線;DeepSeek Harness 仍在 developer preview 階段,插件接口可能變化。它主要解決的是 DSH 智能體和 Web 端使用者都需要完成的 Git/GitHub 日常工作流。

核心功能

倉庫與提交

插件提供以下倉庫操作能力:

  • 倉庫狀態、暫存/未暫存 diff、歷史和分支。
  • stageunstage、安全恢復、提交。
  • 分支創建、切換、安全刪除。
  • fetch、默認 fast-forward pullpush,且不提供 force 選項。

GitHub PR

對於 GitHub pull request,插件支持:

  • 列出 PR。
  • 查看 PR。
  • 創建 PR。
  • 編輯 PR。
  • 檢出 PR。
  • 合併 PR。
  • 評論 PR。

當前 GitHub 操作通過 GitHub CLI 和 GitHub-hosted PR 完成。

Web 面板與模型工具

在 DSH Web 中,插件提供側邊欄面板,覆蓋:

  • 變更。
  • 文本文件編輯。
  • 提交。
  • 分支。
  • 歷史。
  • PR。

同時,插件暴露給模型的工具有:

git_status
git_diff
git_log
git_stage
git_commit
git_branch
git_sync
github_pr

這些工具與 Web 面板面向同一組 Git/GitHub 工作流。

安裝與啓用

環境要求

使用前需要滿足:

  • Node.js ^22.19.0>=24
  • DeepSeek Harness 0.1.0-rc.6
  • Git 在 PATH
  • GitHub CLI 在 PATH,並已完成 gh auth login,用於 PR 功能

插件不存儲 GitHub token;認證仍由 Git 和 gh 持有。

從 GitHub 安裝

下面命令用於從 GitHub 倉庫安裝插件:

dsh plugin --profile web add github:FlutterSoul/dsh-git-workbench

Git 源安裝會觸發該包的 prepare 構建。pnpm 10 及以上會在首次嘗試時拒絕該構建;此時需要把 DSH 打印的 package key 寫入:

$DSH_HOME/profiles/web/pnpm-workspace.yaml

然後重試。

如果使用 pnpm 11.19 及以上,可以使用倉庫級 allowBuilds 配置:

allowBuilds:
  'dsh-git-workbench@git+https://github.com/FlutterSoul/dsh-git-workbench.git': true

啓動 DSH Web

安裝後啓動 Web 端:

dsh --profile web

啓動後,側欄 footer 會出現 Git 入口,並跟隨當前任務已註冊工作區。

本地 DSH profile 安裝

如果是本地路徑安裝,可以使用:

dsh plugin --profile web add ./path/to/dsh-git-workbench
npx @deepseek-ai/dsh web

開發檢查

開發者可以在倉庫中執行:

pnpm install --ignore-scripts
pnpm check
pnpm pack --dry-run

典型用法

經過上面的安裝步驟後,可以使用以下流程:

  1. 執行 dsh --profile web
  2. 進入當前任務已註冊的工作區。
  3. 在側欄 footer 找到 Git 入口。
  4. 在面板中查看變更、分支、歷史、文本文件編輯和 PR。
  5. 在需要修改時執行 stage、提交、分支切換或 PR 操作。

在 UI 中,discard、刪除分支和合並會先要求確認。文本文件保存使用期望 SHA-256,用於防止併發編輯後的靜默覆蓋。

配置

非默認配置可以在 DSH profile 的 Loader 條目中設置。已列出的配置項包括:

gitBinary
ghBinary
commandTimeoutMs
maxOutputBytes
maxFileBytes
maxRequestBytes
defaultRemote
defaultPullMode
pushBeforePrCreate
mutationApproval
allowedRoots

其中,maxFileBytes 與文本編輯能力相關:超過該限制的文件只能查看 diff。瀏覽器請求需要同源,並限制在已註冊或已配置的工作區內。

安全模型

插件的安全約束包括:

  • 命令使用 spawn,且 shell: false
  • 參數不會拼接進 shell 命令。
  • Git 和 GitHub CLI 的交互提示和 pager 被禁用。
  • 變更按倉庫串行。
  • 模型觸發的變更默認需要審批;審批服務缺失時 fail closed。
  • 瀏覽器請求要求同源,並限制在已註冊或已配置工作區。
  • 文本保存使用期望 SHA-256,防止併發覆蓋。
  • 不暴露 force push、強制刪除分支、git clean、任意 Git 參數或任意 gh 參數。
  • Discard 僅對顯式 tracked 路徑調用 git restore --worktree,不刪除未跟蹤文件。

適用場景與注意

適合以下場景:

  • 使用 DeepSeek Harness 0.1.0-rc.6
  • 希望把 Git/GitHub 工作流接入 DSH 智能體。
  • 希望在 DSH Web 中查看變更、編輯文本文件、處理分支和 PR。
  • 使用 Git 與 GitHub CLI,並已完成 gh auth login

需要注意:

  • 項目狀態爲 experimental,DSH 插件接口可能變化。
  • 插件以當前 DSH 進程權限運行。
  • 安裝前應檢查源碼與許可證。
  • 文本編輯僅支持 UTF-8。
  • 二進制文件和超過 maxFileBytes 的文件只能 diff-only。
  • GitHub 操作當前僅通過 GitHub CLI 和 GitHub-hosted PR。
  • 插件不包含語義合併編輯器。
  • 插件不創建倉庫、不重寫歷史、不管理憑據、不繞過分支保護。

鏈接

目錄頁:

https://www.skillhub.cn/plugins/FlutterSoul/dsh-git-workbench

GitHub 倉庫:

https://github.com/FlutterSoul/dsh-git-workbench
羽毛球分组比赛记分
小程序二维码

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

小夜