沙箱隔离的究竟是什么
先设定故障
DSH 沙箱分三层:子进程用 confine 限制 runner,进程内工具用 fs-sandbox 结构化拒绝,执行世界通过替换 fs 与 subprocess 插口整体搬家。
失败如何传播
子进程层按平台用 bwrap、Landlock、Seatbelt 或受限令牌
子进程层按平台用 bwrap、Landlock、Seatbelt 或受限令牌。策略按调用解析并随身携带,同进程两会话可各持不同边界。fs-sandbox 规范化路径后做包含检查,拒绝抛 FS_SANDBOX_DENIED。
[repo]
拒绝与 runner 故障由两套分类器区分
拒绝与 runner 故障由两套分类器区分,先识致命签名,再查拒绝签名。无后端且受限时抛 SandboxUnavailableError,绝不裸奔。插口替换后所有状态工作迁至远端沙箱,消费方零改动。
[repo]
恢复与防线
同进程两个会话沙箱模式不同,需要提供方切换吗: 不需要。策略在每次能力调用时解析为参数,提供方只按本次参数执行。
命令以 125 退出,能直接判定为启动器失败吗: 不能。启动器约定退出码 125,但子进程自己也可能退 125,须结合诊断行判断。
仍会失效的地方
本页结论对应 revision
0a53fb55bea101816fa226bb964ae2bed71c343b。文件位置、命名和默认行为可能随版本变化,引用实现细节时应同时记录 commit。
来源与核验
- [repo] DeepSeek Harness 官方源码(固定 revision)
- [official] DeepSeek Harness 官方介绍
Revision:0a53fb55bea101816fa226bb964ae2bed71c343b · 核验日期:2026-08-31