前言¶
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