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

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

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

小夜