DeepSeek Harness (DSH) 采用插件化架构,智能体在会话中需要操作本地代码仓库时,往往缺乏直接、安全的工具支持。手动调用 shell 命令风险较高,且依赖远程接口会增加延迟。为了解决这个问题,我们需要一套原生的、安全的本地 Git 工具集。
dsh-git-tools 是由 Shyboy0499 维护的 DeepSeek Harness 插件。它提供四个本地 Git 工具(git_status、git_diff、git_log、git_commit),让智能体能够在会话工作区(session workspace)内直接检查仓库状态和创建提交,不依赖 UI 或远程服务,完全在 Host 端运行。
核心功能¶
- git_status:检查分支、ahead/behind 状态,以及 staged / unstaged / untracked 文件。
- git_diff:查看变更。支持 staged 或 unstaged,统计摘要或完整补丁,可选路径过滤。
- git_log:列出最近提交,格式为
{ hash, author, date, subject }。 - git_commit:暂存指定路径(或全部)并提交,必须提供消息。
安装¶
安装前请确保环境已安装 git。
dsh plugin --profile web add dsh-git-tools
典型用法¶
- git_status:检查工作树和分支状态。
- git_diff:查看变更。
staged对比索引,statOnly: true(默认)返回统计摘要,statOnly: false返回完整补丁,path用于过滤单个文件。 - git_log:列出最近提交。
count默认为 10(最大 100),path用于过滤文件。 - git_commit:创建提交。
message是必需的(非空)。使用paths暂存特定文件,或使用all: true暂存所有文件。它从不隐式暂存文件。
适用场景与注意¶
该插件适合需要在 DSH 会话中执行常规 Git 操作(查看状态、对比、查看历史、提交代码)的场景。
- 安全性:所有 Git 调用通过
execFile执行,参数作为数组传递,因此没有 shell 插值,用户/模型控制值是注入安全的。 - 操作限制:
git_commit需要显式消息且从不隐式暂存文件。核心范围内没有破坏性操作(如--amend、--force、rebase、reset)。 - 工作目录:所有工具接受可选的
cwd(默认为会话工作区)。
总结¶
dsh-git-tools 解决了智能体在 DSH 环境下直接操作 Git 的痛点,提供了安全、原生的接口。插件列表及源码可参考目录页与 GitHub 仓库。