前言¶
在 DeepSeek Harness(DSH)里写智能体时,Git 操作很常见:查看状态、看 diff、提交、暂存、拉取、切分支。若只依赖裸 bash,会遇到两类问题:一是命令通过 shell 字符串拼装,容易引入 shell 注入风险;二是输出往往是文本,模型不容易稳定解析。
dsh-tool-git 是 lxj808624 维护的 DSH 插件,MIT 许可。它把常用 Git 操作拆成结构化工具,并通过执行前安全检查拦截破坏性命令。
这是什么¶
dsh-tool-git 是 DeepSeek Harness 的 Git 工具插件。它的核心定位是:
- 提供结构化的 Git 工具;
- 避免通过 shell 字符串直接执行 Git 命令;
- 将 Git 输出解析为结构化 JSON;
- 在工具执行前增加破坏性命令防护。
它适合需要让 DSH 智能体稳定执行 Git 工作流的场景。
核心能力¶
dsh-tool-git 提供以下 Git 操作的结构化工具:
statusdifflogbranchstagecommitstashshowfetchpullremotecheckout
这些工具通过 shell-free subprocess runner 运行 git,使用 execFile 和显式参数数组,避免模型输入被 shell 解释。
它还会把以下输出解析为结构化 JSON:
- porcelain v2
--numstat--format
这比直接读取终端文本更容易被智能体处理。
插件还在 tools/pre-execute 上加入安全检查,用于处理破坏性 Git 操作和 shell 命令。
破坏性命令策略¶
dsh-tool-git 提供 destructivePolicy 选项,有三个取值:
deny:默认值,拒绝破坏性操作;ask:走审批流程;如果没有挂载审批服务,会退化为deny;allow:放行。
默认情况下,破坏性操作会被拒绝,除非明确配置为 ask 或 allow。
需要说明的是,这是策略级防护,不是沙箱。如果一个 agent 能执行任意代码,仍可能绕过字符串匹配式的防护。这个门主要用于让误操作显式失败,并给出说明。
安装与启用¶
推荐从 npm 安装:
dsh plugin --profile web add dsh-tool-git
也可以从 GitHub 安装指定版本:
dsh plugin --profile web add github:lxj808624/dsh-tool-git#v0.1.3
安装完成后,重启对应 profile:
dsh --profile web
从 GitHub 安装时,可能需要一次性允许 pnpm prepare 构建脚本。
典型用法¶
下面是两个常见配置点。
配置破坏性命令策略¶
将 destructivePolicy 设置为以下值之一:
deny
ask
allow
如果不配置,默认是 deny。
指定仓库发现目录¶
工具支持可选的 repoDir 参数,用于指定仓库发现起始目录。默认使用进程当前工作目录。
工具执行结果中会报告解析出的仓库根目录。
适用场景与注意¶
dsh-tool-git 适合以下场景:
- 在 DSH 智能体中稳定执行 Git 状态查询;
- 让模型读取结构化的 diff、log、branch 信息;
- 完成 stage、commit、stash、fetch、pull、checkout 等常规 Git 流程;
- 降低裸 shell 执行 Git 命令带来的注入和输出解析问题。
使用前需要注意:
- 插件会按当前
dsh进程权限运行,安装前应检查源码与许可证; - 它是策略防护,不是沙箱;
- 破坏性操作默认拒绝;
ask依赖可用的审批服务,否则会退化为deny。
结尾¶
dsh-tool-git 的价值在于把常用 Git 操作变成结构化、可解析、有默认安全策略的工具调用,适合在 DSH 中替代一部分裸 shell Git 用法。
GitHub 仓库:
https://github.com/lxj808624/dsh-tool-git
如需通过 DSH 社区目录查找,可搜索插件名 dsh-tool-git。