dsh-git-plugins:DeepSeek Harness 的 Git 与源码控制插件套件

前言

DSH 的插件理念是「一切皆插件」:把原本分散在脚本、CLI 或人工流程里的能力,变成 DSH 代理可以直接调用的工具。对智能体开发者来说,一个常见需求是:让代理不只是回答问题,还能处理本地仓库、提交变更、操作托管平台上的 pull request / MR、issues、releases、CI/CD 和安全告警。

下面介绍 sakthiveltofficial/dsh-git-plugins。它是一个 DSH 插件套件,提供本地 Git 操作、GitHub / GitLab / Bitbucket Cloud / Azure DevOps / Gitea 平台操作,以及一套跨会话的自演进记忆。

这是什么

sakthiveltofficial/dsh-git-pluginssakthiveltofficial 维护,许可证为 MIT。它面向 DeepSeek Harness(DSH),为代理提供一组模型工具,用于本地仓库操作、托管平台操作和跨会话记忆。

已核实的运行要求如下:

  • DeepSeek Harness
  • Node.js >= 20
  • git CLI 在 PATH 中

仓库 package.json 版本为 0.1.2,bundle patch 配置为:

./cordis.patch.yml

核心能力

本地仓库操作

插件覆盖常见本地 Git 操作,包括:

  • clone
  • branch
  • checkout
  • commit
  • push
  • pull
  • stash
  • tag
  • merge
  • rebase
  • diff
  • blame
  • log
  • 代码搜索
  • 文件搜索

这些能力依赖 PATH 中的 git CLI,而不是在插件内重新实现一套完整的 Git 行为。

托管平台操作

插件支持以下托管平台的常见源码控制对象:

  • GitHub
  • GitLab
  • Bitbucket Cloud
  • Azure DevOps
  • Gitea

可按平台支持情况操作:

  • pull requests / MRs
  • issues
  • releases
  • CI/CD
  • 安全告警

对于某平台不支持的操作,插件会以 GIT_UNSUPPORTED 失败,而不是静默返回空结果。

模型工具

插件暴露以下模型工具:

git_repo
git_inspect
git_pr
git_issues
git_release
git_security
git_ci
git_memory

安装并启用后,可以用这句话验证工具是否进入代理可用列表:

what git tools do you have?

预期应列出上面的 8 个工具。

自演进记忆

git_memory 提供跨会话持久化记忆,主要能力包括:

  • 跨会话持久化
  • 自动捕获工具失败签名
  • 对重复事件去重
  • 持久化前清除密钥
  • 每一步注入有界摘要
  • 删除过时条目

如果某条记忆已经过时,可以使用:

git_memory forget

删除对应记忆条目。

策略增强

插件在操作安全上增加了若干约束:

  • 破坏性操作走 host approval service
  • 变更遵守 sandbox policy
  • 支持 sandbox_permissions escalation
  • 限流回退
  • 读缓存

这意味着代理可以执行更完整的源码控制流程,但关键操作不会被直接放行。

安装与启用

1、先确认环境中有 git 和可用的 Node.js:

git --version
node --version

这里需要 git CLI 在 PATH 中,并且 Node.js 版本满足 >= 20

2、安装插件:

dsh plugin --profile web add github:sakthiveltofficial/dsh-git-plugins

3、安装后重启 profile,或重启 DSH 进程。无需手动编辑 preset;host rows 由 dsh.bundle.patch 自动插入。

4、验证配置中是否出现 Git 相关项:

dsh --profile web --dump-config | grep -i git

5、再询问代理:

what git tools do you have?

如果代理能列出 git_repogit_inspectgit_prgit_issuesgit_releasegit_securitygit_cigit_memory,说明工具已经可用。

典型用法

自然语言驱动 Git 工作流

安装后,可以用自然语言让代理执行一串 Git 操作。示例:

Clone the repo, check out a feat/ branch, commit these changes and open a PR against main; squash-merge it and create a v1.2.0 release.

示例中的 feat/mainv1.2.0 都只是占位值,实际使用时应替换为你自己的分支、目标分支和版本号。

配置平台凭据

平台操作通过 DSH 的凭据机制解析。配置中只保存 env-var references,不保存令牌本身;令牌会按操作解析。

可按平台使用以下环境变量,或通过 ctx.credentials sources 配置:

GITHUB_TOKEN
GITLAB_TOKEN
BITBUCKET_APP_PASSWORD
AZURE_DEVOPS_PAT
GITEA_TOKEN

几点行为需要确认:

  • 公共仓库可以匿名访问
  • 未设置凭据时,写操作会以 GIT_AUTH_FAILED 失败
  • Bitbucket 需要额外 username 配置
  • GitLab 的 baseUrl 可配置
  • Gitea 的 baseUrl 必填

管理记忆

git_memory 会自动记录工具失败签名,并在后续命中相似模式时提供摘要。由于记忆会跨会话保留,长期使用时需要清理过时条目。

删除过时记忆时,使用:

git_memory forget

适用场景与注意

适合以下场景:

  • 使用 DSH 代理处理本地仓库的 clone、branch、commit、push、pull、merge、rebase 等操作
  • 需要操作 GitHub、GitLab、Bitbucket Cloud、Azure DevOps 或 Gitea 上的 pull requests / MRs、issues、releases、CI/CD 和安全告警
  • 希望代理跨会话记住工具失败签名和项目约定
  • 希望破坏性操作进入 host approval service,而不是直接执行

注意以下几点:

  1. 插件会访问本地 Git 仓库和托管平台接口,因此会运行在当前 DSH 进程权限内。
  2. 安装前应检查源码和 MIT 许可证,并确认自己允许代理执行哪些 Git 与平台操作。
  3. 令牌不会存储在配置中,仅保存 env-var references,并按操作解析。
  4. 未设置凭据时,匿名访问可能适用于公共仓库读取,但写操作会以 GIT_AUTH_FAILED 失败。
  5. 不支持的平台操作会以 GIT_UNSUPPORTED 失败,而不是静默返回空。
  6. 记忆在持久化前会清除 secrets、tokens、keys、private-key blocks、username paths。

链接与查找

GitHub 仓库:

https://github.com/sakthiveltofficial/dsh-git-plugins

插件名称:

sakthiveltofficial/dsh-git-plugins

如果你使用 DSH 插件目录,可按该名称查找并核对当前可用版本。

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

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

小夜