简要结论
区分软约束、人工审批、文件系统强制边界与工具执行策略。
安全配置最危险的误解是把一个标签当成完整保证。DeepSeek Harness 中至少有四层控制:任务文字、工具策略、审批、进程沙箱。它们解决不同问题。
四层控制地图
| 层 | 性质 | 失败时会怎样 |
|---|---|---|
| Prompt / Plan | 软约束 | 模型可能误解或偏离 |
| Tool Schema / policy | 调用边界 | 参数被拒绝或工具不可见 |
| Approval policy | 人工决策 | 请求暂停、拒绝或按策略继续 |
| Sandbox | 文件效果强制 | 子进程写入被后端阻止 |
不要用“我已经在 Prompt 里写了”替代沙箱,也不要把审批弹窗等同于底层隔离。
三种 SandboxMode
read-only:只允许执行所需接收器,拒绝文件写入。workspace-write:允许写工作区和后端承诺的临时区域。danger-full-access:绕过隔离,消费方直接启动原始命令。
该沙箱词汇只承诺文件系统效果,不自动限制网络或进程可见性。若任务要求“绝不联网”,还需要相应网络控制或不暴露网络工具。
检查强制完整性
后端会报告 full 或 partial。部分强制执行意味着当前平台、内核或 ACL 只覆盖承诺的一部分。需要绝对边界的工作流不能把 partial 当作“基本等于安全”。
Windows ACL、旧版 Landlock 等环境可能存在特定边界。上线前应在目标主机验证,而不是从开发机结果推断。
运行时不变量的意义
不变量是运行时始终应该成立的关系,例如工具调用与结果配对、Session Event 的可回放顺序、注册项随插件卸载清理。它们比 Prompt 更适合表达系统内部必须成立的条件。
设计扩展时问:
- 这个规则能否由类型或 Schema 表达?
- 能否在注册时快速失败?
- 能否由沙箱或批准策略强制?
- 只剩策略判断时,才放进 Skill 或 Prompt。
权限矩阵练习
为任务“扫描依赖并生成报告”写矩阵:
| 能力 | 是否需要 | 建议 |
|---|---|---|
| 读取清单与 lockfile | 是 | read-only 足够 |
| 写报告文件 | 可选 | 限定 workspace-write |
| 安装依赖 | 否 | 不批准 |
| 访问漏洞数据库 | 视目标 | 明确域名和上传数据 |
| 读取环境变量 | 否 | 不暴露秘密 |
先用只读模式生成聊天内报告;只有确认确实需要落盘时,再把写范围扩大到单一目录。
破坏性操作的双重门
删除、迁移、发布、付费 API 和生产写入至少需要:
- 任务契约明确授权具体目标;
- 执行前审批展示实际命令或请求;
- 存在备份、预览或 dry-run;
- 执行后有独立验证。
如果任一条件缺失,Agent 应停止并给出最小可行的只读替代。
下一篇把这些约束落到可靠工具设计。