前言¶
在 DeepSeek Harness(DSH)裏,工具調用不只有“能不能執行”的問題。內置工具、第三方工具和 MCP 工具進入同一個運行路徑後,部署方常常需要按工具名和參數做統一約束:某些只讀工具放行,某些 shell 或外部工具要求審批,某些刪除類工具直接拒絕。
dsh-tool-policy 是一個針對 DSH 的社區插件,用來在工具調用執行前插入一層聲明式策略。它不是 DeepSeek AI 維護的官方組件,也不等同於 DSH 官方的能力沙箱。下面介紹它的能力、安裝方式和典型配置。
這是什麼¶
一句話定位:dsh-tool-policy 允許、詢問或拒絕 DeepSeek Harness 的工具調用,且發生在工具執行之前。
它面向的是單次工具調用,不是一次會話級的授權,也不是一組能力的運行時隔離。它提供 deny-by-default 的策略層:默認拒絕,只有命中顯式規則才進入對應處理。它覆蓋內置工具、第三方工具和 MCP 工具,並在工具體運行前匹配可觀察的工具名和可選參數模式。
已覈實的基礎信息如下:
- 倉庫:
Drifter-yh/dsh-tool-policy - 許可:
MIT - 運行環境:Node
>=22.19 - peer dependencies:
@deepseek-ai/cordis >=4.0.1 <5@deepseek-ai/dsh-tools >=0.1.0-rc.5 <0.2.0
核心功能¶
dsh-tool-policy 的功能比較集中:
- 在工具調用執行前應用
allow、ask或deny規則。 - 爲內置工具、第三方工具和 MCP 工具提供 deny-by-default 的策略層。
- 匹配可觀察的工具名,並可選擇匹配參數模式。
- 使用第一條命中規則生效的規則模型。
- 支持錨定的工具名模式,並允許一個通配符
*。 - 使用 JSON Pointer 描述參數條件。
- 支持
trace: true,通過 Cordis logger 輸出不含參數值的決策 trace。
這裏的“策略”主要面向工具調用本身:它判斷某個具體調用是否允許、是否要求審批、是否直接拒絕。它不負責能力沙箱、參數改寫或工具體執行。
安裝與啓用¶
資料中給出的安裝命令如下:
pnpm add dsh-tool-policy @deepseek-ai/cordis @deepseek-ai/dsh-tools
安裝後,可以在 DSH 配置中啓用該插件。建議先保持默認拒絕,再按工具名逐步添加 allow、ask 或 deny 規則。
一個最小配置片段如下:
defaultDecision: deny
rules:
- tool: 'read_*'
decision: allow
- tool: 'bash'
decision: ask
reason: 'Shell execution requires approval.'
這個配置片段表達了兩條意圖:
- 未命中規則的工具調用默認拒絕。
- 命中
read_*的工具調用允許繼續。 - 命中
bash的工具調用進入需要審批的路徑。
如果操作者需要排查某個調用爲什麼被允許、詢問或拒絕,可以打開決策 trace:
trace: true
開啓後,插件通過 Cordis logger 輸出決策 trace。該 trace 不包含參數值,適合作爲“爲什麼不命中某條規則”的排查線索。
典型用法¶
下面是一個更完整的策略配置片段。它同時覆蓋只讀工具、shell、MCP 工具和刪除類工具:
defaultDecision: deny
rules:
- tool: 'read_*'
decision: allow
- tool: 'bash'
decision: ask
reason: 'Shell execution requires approval.'
- tool: 'mcp__*'
decision: ask
reason: 'External tool calls require approval.'
- tool: 'delete_*'
decision: deny
reason: 'Delete operations are disabled in this deployment.'
這個配置片段表達了四條常見意圖:
read_*:允許匹配到的只讀工具調用。bash:shell 執行需要審批。mcp__*:外部工具調用需要審批。delete_*:在當前部署中禁用刪除操作。
規則順序會影響結果。插件使用第一條命中規則生效的規則模型,因此如果同一調用可能命中多條規則,應把更具體的規則放在前面。
適用場景與注意¶
dsh-tool-policy 適合這些場景:
- 在無人值守任務中運行 deny-by-default 的工具調用白名單。
- 對
mcp__*等外部工具調用要求審批。 - 對已知的刪除類工具調用在執行前拒絕。
- 在同一個 DSH 部署中對內置工具、第三方工具和 MCP 工具使用統一規則。
使用上需要保留幾個邊界:
- 它是 per-call policy 層,不是 sandbox。能力執行仍依賴 DSH 的運行時隔離和沙箱配置。
- 它不實現沙箱、能力強制、shell 語義分析或等價操作檢測。
- 一條
deny規則讓命中的工具調用不可用,不等於在系統中徹底禁止破壞性行爲。 - 它不改寫參數,也不執行工具體。
- 它會隨當前
dsh進程權限運行。安裝前應檢查源碼、許可證和依賴版本,確認它符合部署方的安全要求。 - 生產環境中,策略路由應與更嚴格的 DSH 沙箱組合使用,而不是替代沙箱。
鏈接¶
倉庫地址:
https://github.com/Drifter-yh/dsh-tool-policy
如果要繼續評估,可以從 defaultDecision: deny 的默認姿態開始,先把高風險工具設爲 ask 或 deny,再逐步放開只讀和低風險工具。