DSH Toolbox

@deepseek-ai/dsh-sandbox

@deepseek-ai/dsh-sandbox 是 dsh 的一个能力 seam:进程沙箱 seam(ctx.sandbox):约束词汇表,以及后端要实现的那份 SandboxProvider 契约。

这个包发布在 npm 上,当前版本 0.0.1-rc.1,安装位置是 $DSH_HOME/profiles/<名字> 的依赖列表。

安装

插件管理会把参数转发给 profile 目录里的 pnpm,这条命令的行为和 pnpm add 一致。

dsh plugin --profile web add @deepseek-ai/dsh-sandbox

它在 profile 里做什么

进程沙箱 seam(ctx.sandbox):约束词汇表,以及后端要实现的那份 SandboxProvider 契约。当前版本 0.0.1-rc.1。想知道它是否已经在你的 profile 里,看 $DSH_HOME/profiles/<名字>/package.json 的依赖,或用 --dump-config 读合成后的树。

什么时候你需要关注这个包

症状是命令被拒绝,报 sandbox mode "<mode>" is requested but no sandbox backend is usable on this host; refusing to run the command unconfined。这句话就是这个包在拒绝悄悄降级——总比不约束地跑完还报成功强。

移除或换掉它,什么会坏

删掉这个 seam,策略就没有挂载点。SandboxMode 只有 read-only、workspace-write、danger-full-access 三个值,且只管文件影响;SandboxEnforcement 按内核 ABI 报 full 或 partial,不假装各平台约束力一样。策略随每次调用传递,所以同一时刻两个调用方可以用不同策略。

容易被混淆的那个包

它不是 dsh-sandbox-local。这个包持有契约和词汇,local 包提供后端——bwrap、npm 分发的 landlock-run 启动器、macOS Seatbelt、Windows ACL 受限令牌——并在运行时探测。装后端本身不改变任何策略。

常见问题

装错了怎么卸掉?

用 dsh plugin --profile <名字> remove @deepseek-ai/dsh-sandbox,和装的时候对称。

版本不匹配会怎样?

插件通过 engines.dsh 或 DSH 的 peer 依赖声明兼容区间。不在区间内时命令行会跳过它并打印要求,而不是启动一个可能崩的组合。