前言¶
在 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。