dsh-sandbox-mxc:基於 MXC 的 DeepSeek Harness 沙箱提供者

前言

DeepSeek Harness (DSH) 依賴插件實現進程隔離。在 Windows 平臺上,原生沙箱通常需要內核補丁或嚴格的容器支持。dsh-sandbox-mxc 提供了一個基於 Microsoft eXecution Containers (MXC) 的解決方案,它通過 wxc-exec.exe 包裝進程參數,在無需內核補丁的情況下實現沙箱隔離。

這是什麼

這是一個 DeepSeek Harness 沙箱提供者實現,由 dsh-sandbox-mxc-dev 維護,採用 MIT 許可證。

它實現了 Harness 的進程隔離 seam(ctx.sandbox,即 @deepseek-ai/dsh-sandbox 中的 SandboxProvider),將調用方即將啓動的 argv 包裝爲以下形式:

wxc-exec.exe --config-base64 <policy-json> -- <original argv...>

該插件僅有一個運行時依賴:@microsoft/mxc-sdk。SDK 僅用於定位 wxc-exec.exe 可執行文件,並未在代碼中導入,因此不受 SDK 關於 Node.js 版本(24.21.0 或 26.8.0)的嚴格限制,可在 Node.js 22 及以上版本運行。

安裝與配置

安裝

使用官方安裝命令將插件添加到指定 Profile:

dsh plugin --profile <profile> add dsh-sandbox-mxc

安裝後,插件的 cordis.patch.yml 會生效,禁用默認的 @deepseek-ai/dsh-sandbox-local 提供者,並插入此插件作爲 sandbox 服務提供者。

前置要求

  1. 操作系統:僅支持 Windows。
  2. Node.js:版本需 >= 22。
  3. 可執行文件:需要 wxc-exec.exe。優先級爲 config.wxcExecPath > 環境變量 DSH_MXC_WXC > 從已安裝的 @microsoft/mxc-sdk 推導。
  4. PowerShell:Profile 中指向的 pwsh 必須是未打包(unpackaged)版本。MXC 容器無法啓動 MSIX 打包的應用(如 Store 版 PowerShell),否則會報錯。
  5. 可讀性:Shell 的安裝目錄必須在容器內可讀,否則容器無法解析自身路徑。

配置項

配置項 默認值 說明
wxcExecPath '' wxc-exec.exe 的絕對路徑。爲空時嘗試環境變量或 SDK 導出路徑。
readonlyPaths [] 容器可讀取的額外根目錄。
extraWritablePaths [] 容器可寫入的額外根目錄。
deniedPaths [] 容器嚴禁訪問的根目錄。
network omitted 未設置時,MXC 默認策略爲阻斷出站網絡。
timeoutMs 0 單次執行超時時間(毫秒),0 表示無超時。
containerIdPrefix 'dsh-mxc' 診斷容器名稱的前綴。
sandboxEnv [] 注入到容器進程環境變量中的 KEY=VALUE 條目。
injectNodePipeShim true 注入 Node 管道 shim,使容器內 Node 能通過文件句柄捕獲子進程輸出。

重要說明

  • Windows 10 限制:在 Windows 10 上,MXC 使用 appcontainer-dacl 等級。如果路徑的 DACL 無法被修改(例如屬於其他 SID 的卷),插件會自動丟棄該路徑並打印原因,而不是導致命令失敗。如果路徑不存在,也會被自動過濾。
  • 權限隔離:默認策略爲阻斷出站網絡,剪貼板與宿主機隔離。
  • SDK 限制豁免:由於不導入 SDK 原生綁定,該插件避開了 SDK 對 Node.js 版本的特定要求。

總結

dsh-sandbox-mxc 爲 DeepSeek Harness 在 Windows 環境下提供了一個基於 MXC 的輕量級沙箱方案。它通過標準的 wxc-exec 工具實現隔離,無需內核補丁,並具備默認的網絡安全阻斷策略。

GitHub 倉庫

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

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

小夜