dsh-mcp-auto-permission:Workspace Write + MCP 預設與 MCP 審批自動認領

前言

在 DeepSeek Harness(DSH)裏,除非當前權限預設另有說明,Harness 會對每次工具調用請求用戶審批。接入 MCP 後,mcp__* 類工具同樣會彈出審批卡片。若你已經在 workspace-write 沙箱邊界內工作,又希望 MCP 調用不再反覆打斷會話,需要在不改動策略插件、也不去 tools/execute 鉤子裏和後續策略監聽器搶優先級的前提下,專門處理「審批請求」這一層。

下面介紹社區插件 dsh-mcp-auto-permission(維護者 ThomasTZh,目錄分類 admin-security)。它通過一個 bundle 增加名爲 Workspace Write + MCP 的權限預設,並在該預設生效時,把 MCP 相關的審批請求認領爲 allowed-once。

這是什麼

dsh-mcp-auto-permission 是一個 DSH bundle:註冊權限預設鍵 workspace-write-mcp(展示名 Workspace Write + MCP),並在 profile 根掛載 mcp-auto-permission 插件。它不修改任何工具定義、不更換沙箱、也不覆蓋策略層的 hard deny,只參與回答 ctx.approval.request 觸發的審批瀑布流。

Harness 本體與審批、權限服務來自 DeepSeek Harness 項目;本插件爲社區維護,SkillHub 目錄頁與 DeepSeek / 幻方無官方從屬關係。

核心功能

權限預設 workspace-write-mcp

項 值
Sandbox workspace-write
Approval policy ask
非 MCP 工具 行爲不變,含沙箱升級提示
MCP 工具 審批請求被認領爲 allowed-once
Preset key workspace-write-mcp
Display label Workspace Write + MCP

預設仍遵守 workspace-write 的文件與 shell 邊界。若策略在詢問用戶之前已對某工具 hard deny,本 bundle 不會推翻該拒絕。

審批鉤子如何工作

本地策略可通過 ctx.approval.request 發起審批。本插件在 approval/request 瀑布流上認領匹配 mcp__* 的請求並返回 allowed-once,用戶通常看不到審批卡片。這樣無需改 policy 插件,也避免在 tools/execute 上競爭——後者仍可能被更晚的策略監聽器攔截。

鉤子與當前會話的 permission preset 綁定:若 preset 不是 workspace-write-mcp,插件調用 next(),由常規定答邏輯處理。請求信號已 abort 時返回 cancelled;權限服務或 projection 不可用時回退到常規定答。

插件暴露 mcpAutoPermission.autoApproves(session, toolName)。通知類插件可據此跳過「仍需審批」的誤報;審批仍會記錄,工具仍會執行。

在該預設下會附加一段簡短的 system-prompt 說明:告知模型 mcp__* 調用已預批准,避免通用「瀏覽器審批」措辭讓模型無謂停頓。

倉庫內文件

  • cordis.patch.yml:聲明權限預設表,並在 profile 根插入 mcp-auto-permission 插件。
  • lib/index.js:審批鉤子、自動審批服務、system-prompt 附註。
  • test/index.test.mjs:覆蓋認領、回退、取消、autoApproves 謂詞與附註等(6 個測試)。

安裝與啓用

安裝前請自行閱讀倉庫源碼與許可證;插件以當前 DSH 進程權限運行,clone 與 link 路徑需你確認可信。

1、將倉庫 clone 到本地插件目錄(命令來自官方 README):

DSH_HOME=${DSH_HOME:-$HOME/.dsh}
git clone https://github.com/ThomasTZh/dsh-mcp-auto-permission \
  "$DSH_HOME/local-plugins/dsh-mcp-auto-permission"

2、在 $DSH_HOME/profiles/web/package.json 中增加本地 link 依賴,並在 dsh.profile.bundles 中列出 @local/dsh-mcp-auto-permission:

"@local/dsh-mcp-auto-permission": "link:<absolute path to $DSH_HOME>/local-plugins/dsh-mcp-auto-permission"

3、安裝 profile 依賴並重啓 DSH:

cd "$DSH_HOME/profiles/web" && pnpm install

bundle patch 會先於 profile patch 應用。若之後你在設置裏改「新會話默認」預設,settings 服務會把完整的 permission 條目寫入 profile patch,從而用相同預設定義覆蓋 bundle 裏的副本——這是 DSH 常規的設置持久化行爲。

典型用法

啓用 bundle 並在會話中選擇(或設爲默認)Workspace Write + MCP(workspace-write-mcp)後,在該 preset 下發起的 MCP 工具審批由插件自動認領爲單次允許,非 MCP 工具仍按原有 ask 與沙箱規則走。

若你編寫通知插件,可在展示「需要審批」提示前調用 mcpAutoPermission.autoApproves(session, toolName),避免對已自動認領的 MCP 調用重複告警。

倉庫 README 註明:僅憑本倉庫無法完整復現線上審批路徑的全鏈路 live 測試;作者在編寫環境中已跑通該 preset,但未爲本 release 單獨再做一次 live 檢查。

適用場景與注意

適合: 已在 DSH web profile 中使用 MCP、希望保留 workspace-write 邊界、又希望減少 MCP 審批卡片打斷的開發者。

不適合或無效的情況(README Limitations):

  • MCP 工具若被策略 hard deny,本插件不會覆蓋。
  • 委派子 agent 在上游將 approval policy 固定爲 never,不會繼承本模式。
  • headless profile 不加載此 bundle。

驗證(倉庫內已記錄):

檢查 命令 結果
單元測試 node --test test/index.test.mjs pass,6 tests
模塊語法 node --check lib/index.js pass
安裝佈局 臨時 DSH_HOME clone 後檢查 package 與 patch pass;未在此流程中執行 pnpm install 與 harness 重啓

結尾

dsh-mcp-auto-permission 在 DSH「一切皆插件」的模型裏,用獨立的審批認領層補上「Workspace Write + MCP」預設:文件與 shell 仍受 workspace-write 約束,MCP 則在當前 preset 下以 allowed-once 靜默通過審批請求。

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

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

小夜