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 仓库

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

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

小夜