前言¶
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-plugins 由 sakthiveltofficial 维护,许可证为 MIT。它面向 DeepSeek Harness(DSH),为代理提供一组模型工具,用于本地仓库操作、托管平台操作和跨会话记忆。
已核实的运行要求如下:
- DeepSeek Harness
Node.js >= 20gitCLI 在 PATH 中
仓库 package.json 版本为 0.1.2,bundle patch 配置为:
./cordis.patch.yml
核心能力¶
本地仓库操作¶
插件覆盖常见本地 Git 操作,包括:
clonebranchcheckoutcommitpushpullstashtagmergerebasediffblamelog- 代码搜索
- 文件搜索
这些能力依赖 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_permissionsescalation - 限流回退
- 读缓存
这意味着代理可以执行更完整的源码控制流程,但关键操作不会被直接放行。
安装与启用¶
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_repo、git_inspect、git_pr、git_issues、git_release、git_security、git_ci、git_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/、main、v1.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,而不是直接执行
注意以下几点:
- 插件会访问本地 Git 仓库和托管平台接口,因此会运行在当前 DSH 进程权限内。
- 安装前应检查源码和 MIT 许可证,并确认自己允许代理执行哪些 Git 与平台操作。
- 令牌不会存储在配置中,仅保存 env-var references,并按操作解析。
- 未设置凭据时,匿名访问可能适用于公共仓库读取,但写操作会以
GIT_AUTH_FAILED失败。 - 不支持的平台操作会以
GIT_UNSUPPORTED失败,而不是静默返回空。 - 记忆在持久化前会清除 secrets、tokens、keys、private-key blocks、username paths。
链接与查找¶
GitHub 仓库:
https://github.com/sakthiveltofficial/dsh-git-plugins
插件名称:
sakthiveltofficial/dsh-git-plugins
如果你使用 DSH 插件目录,可按该名称查找并核对当前可用版本。