mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
2.5 KiB
2.5 KiB
sandbox/:进程沙箱能力家族
English | 中文
能力 seam 拆分中负责限制的一半:抽象提供方接口、平台后端和共享策略归属位置。消费方把即将 spawn 的精确 argv 交给 ctx.sandbox,改为 spawn 返回的已包装 argv;完整的 SandboxExecutionPolicy(模式 + 工作区根目录)随每次能力调用传递,其中受限制的子集成为提供方的 SandboxPolicy。因此,不同会话与消费方可以同时按不同策略施加限制。这些均为产品包(package)。
| 包 | 职责 | ctx key |
|---|---|---|
sandbox/ |
抽象进程沙箱 seam(SandboxProvider 契约 + 模式/强制执行/策略词汇),加共享 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.bash、ctx.fs);边界记录在沙箱 Agent Note(agent 决策记录)中。
当前消费方:bash/bash-sandbox(包装 ['bash', '-c', command] 时会调用 ctx.sandbox)和 fs/fs-sandbox(进程内路径隔离,而非 argv 包装层;读取 ctx.sandboxPolicy,对写入/编辑强制执行共享模式)。跨家族边界是沙箱 Agent Note 的跨家族 fs 沙箱阶段;共享词汇使两个家族可以向模型传授同一种拒绝标记与升权流程。