dsh-tool-git:为 DeepSeek Harness 提供结构化 Git 工具与破坏性命令防护

前言

在 DeepSeek Harness(DSH)里写智能体时,Git 操作很常见:查看状态、看 diff、提交、暂存、拉取、切分支。若只依赖裸 bash,会遇到两类问题:一是命令通过 shell 字符串拼装,容易引入 shell 注入风险;二是输出往往是文本,模型不容易稳定解析。

dsh-tool-gitlxj808624 维护的 DSH 插件,MIT 许可。它把常用 Git 操作拆成结构化工具,并通过执行前安全检查拦截破坏性命令。

这是什么

dsh-tool-git 是 DeepSeek Harness 的 Git 工具插件。它的核心定位是:

  • 提供结构化的 Git 工具;
  • 避免通过 shell 字符串直接执行 Git 命令;
  • 将 Git 输出解析为结构化 JSON;
  • 在工具执行前增加破坏性命令防护。

它适合需要让 DSH 智能体稳定执行 Git 工作流的场景。

核心能力

dsh-tool-git 提供以下 Git 操作的结构化工具:

  • status
  • diff
  • log
  • branch
  • stage
  • commit
  • stash
  • show
  • fetch
  • pull
  • remote
  • checkout

这些工具通过 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:放行。

默认情况下,破坏性操作会被拒绝,除非明确配置为 askallow

需要说明的是,这是策略级防护,不是沙箱。如果一个 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

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

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

小夜