dsh-tool-git
Structured, safe Git tool family for DeepSeek Harness: status/diff/log/branch/stage/commit/stash/show/fetch/pull/remote/checkout with a destructive-command guard.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:lxj808624/dsh-tool-git说明文档
阅读完整 README ↗dsh-tool-git
为 DeepSeek Harness(dsh)开发的结构化、安全 Git 工具插件。
编码 agent 几乎每天都在用 git,但 dsh 默认只提供裸 bash 命令。dsh-tool-git 为模型提供八个结构化工具——通过无 shell 的子进程运行器执行 git,返回规范的 JSON 值——并内置 tools/pre-execute 安全门,在破坏性 git 操作(强制推送、硬重置、rebase、amend、删除分支等)发生之前将其拦截,无论模型是通过这些工具调用,还是通过 shell 工具调用。
- 无 shell 注入:所有命令通过
execFile+ 显式参数数组执行,模型提供的路径和消息永远不会被字符串拼接进 shell。 - 机器可读输出:porcelain v2、
--numstat、--format记录被解析为结构化 JSON,而不是文本。 - 默认安全:破坏性操作默认被拒绝并附带原因说明,除非你选择
ask(审批弹窗)或allow(放行)。
工具列表
| 工具 | 功能 |
|---|---|
git_status | 工作区状态:分支、领先/落后、已暂存 / 未暂存 / 未跟踪文件 |
git_diff | 逐文件增删统计、可选 unified patch、--cached / rev 基线 |
git_log | 提交历史:哈希、作者、日期、主题、正文;支持 maxCount、rev 区间、path 过滤 |
git_branch | 分支列表及上游跟踪状态(领先/落后) |
git_stage | 暂存指定路径,或全部 / 仅已跟踪的修改 |
git_commit | 用消息创建提交;返回哈希和统计 |
git_stash | list / push / pop 暂存,pop 冲突安全处理 |
git_show | 单次提交:元数据、逐文件统计、可选 patch |
git_fetch | 从远端下载引用,不触碰工作区 |
git_pull | 默认仅快进;not-fast-forward / conflict 结果结构化返回 |
git_remote | 列出已配置的远端(fetch/push URL) |
git_checkout | 切换分支或创建并切换(-b);绝不丢弃更改 |
每个工具都接受可选的 repoDir 参数,并在结果中返回解析后的仓库根目录。
安全门
安全门监听 tools/pre-execute,检查每一次工具调用:
-
插件自身的工具 —— 例如带
amend: true的 。