Files
deepseek-harness/packages/sandbox/README.zh.md
T

2.4 KiB
Raw Blame History

sandbox/:进程沙箱能力家族

English | 中文

能力 seam 拆分中负责限制的一半:抽象提供方接口、平台后端和共享策略归属位置。消费方把即将 spawn 的精确 argv 交给 ctx.sandbox,改为 spawn 返回的已包装 argv;完整的 SandboxExecutionPolicy(模式 + Workspace 根)随每次能力调用传递,其中受限制的子集成为提供方的 SandboxPolicy。因此,不同会话与消费方可以同时按不同策略施加限制。这些全是产品 包。

职责 ctx key
sandbox/ 抽象进程沙箱 seamSandboxProvider 契约 + 模式/强制执行/策略词汇),加共享 ESCALATION 工具包(approveEscalation、严格变宽的阶梯、拒绝/提示标记),以及所有强制执行方言共享的 writableRoots 派生 ctx.sandbox
sandbox-local/ 按平台链选择的本地后端:Linux 使用 bwrap,否则使用 landlock-run launcher(通过 npm 分发的 node-addon-landlock-run 家族,在自身仓库构建发布);darwin 使用 sandbox-exec/Seatbelt。多候选链会执行功能探测,唯一候选项直接选择,结论缓存,快速失败 (注册 ctx.sandbox
sandbox-policy/ 策略解析器:部署回退值,加每个会话的持久模式与不可变 cwd 根。两个强制执行家族都消费完整的逐调用结果,因此 bash 与 fs 不会限制到不同根目录 ctx.sandboxPolicy

该 seam 只限制与宿主共享文件系统和内核的子进程。容器、microVM 和远程执行器都不是这里的后端:它们会以环境一致的分组替换整个能力实现(ctx.bashctx.fs);边界记录在沙箱 Agent Note 中。

当前消费方:bash/bash-sandbox(包装 ['bash', '-c', command] 并通过 ctx.sandbox 执行)和 fs/fs-sandbox(进程内路径隔离,而非 argv 包装层;读取 ctx.sandboxPolicy,对写入/编辑强制执行共享模式)。跨家族边界是沙箱 Agent Note 的跨家族 fs 沙箱阶段;共享词汇使两个家族可以向模型传授同一种拒绝标记与升权流程。