前言¶
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 服務提供者。
前置要求¶
- 操作系統:僅支持 Windows。
- Node.js:版本需
>= 22。 - 可執行文件:需要
wxc-exec.exe。優先級爲config.wxcExecPath> 環境變量DSH_MXC_WXC> 從已安裝的@microsoft/mxc-sdk推導。 - PowerShell:Profile 中指向的
pwsh必須是未打包(unpackaged)版本。MXC 容器無法啓動 MSIX 打包的應用(如 Store 版 PowerShell),否則會報錯。 - 可讀性: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 工具實現隔離,無需內核補丁,並具備默認的網絡安全阻斷策略。