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
羽毛球分组比赛记分
小程序二维码

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

小夜