前言¶
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、歷史和分支。
stage、unstage、安全恢復、提交。- 分支創建、切換、安全刪除。
fetch、默認 fast-forwardpull、push,且不提供 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
典型用法¶
經過上面的安裝步驟後,可以使用以下流程:
- 執行
dsh --profile web。 - 進入當前任務已註冊的工作區。
- 在側欄 footer 找到 Git 入口。
- 在面板中查看變更、分支、歷史、文本文件編輯和 PR。
- 在需要修改時執行 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