12.2 权限系统与沙箱设计

本节首先对比 Claude Code 和 OpenClaw 的权限框架设计,再介绍通用的权限框架与沙箱隔离策略,最后讨论两者的协同机制,涵盖从权限定义到执行的完整防护链条。

12.2.1 权限框架对比

Claude Code 权限框架

Claude Code 实际采用五模式权限框架(normal/auto-accept/plan/don't-ask/bypass),从完全确认到全自动。其中 normal 模式在危险操作时提示用户确认,auto-accept 模式通过 LLM 评估自动批准低风险操作,plan 模式为只读模式,don't-ask 模式自动拒绝除预批准外的操作,bypass 模式跳过所有权限检查。以下将其扩展为更细粒度的六级模型,便于理解权限决策的设计空间:

type PermissionMode =
  | "manual_only"     // 完全人工操作
  | "approve_always"  // 每步审批
  | "approve_once"    // 一次审批
  | "ask_first"       // 事前询问
  | "auto_notification"  // 自动+通知
  | "auto_trusted"    // 完全自动

// 应用于每个工具调用
interface ToolCall {
  toolName: string;
  args: ToolArgs;
  permissionMode: PermissionMode;  // 基于风险动态决定
  confidenceScore: number;         // 模型对决策的置信度
}

风险评估与权限模式映射

Claude Code 在 auto-accept 模式下使用两阶段 LLM 评估(而非传统 ML 分类器)来决定权限模式:第一阶段为快速保守检查,第二阶段在需要时进行链式推理分析。以下为简化的风险评估逻辑:

六模式的实际应用

模式
触发条件
行为
风险控制

manual_only

极高风险操作(rm -rf /)

每步人工批准

完全控制

approve_always

高风险操作(delete, transfer)

每个操作人工批准

逐步控制

approve_once

中高风险(任务批量操作)

任务开始批准一次

计划控制

ask_first

中等风险(关键文件读取)

首次询问,记住选择

选择性控制

auto_notification

低风险(日常读取、列表)

自动执行+通知

事后可知

auto_trusted

极低风险(查询、计算)

完全自动,无通知

最小开销

OpenClaw 权限系统

OpenClaw 实际采用三级权限系统(deny/allowlist/full),配合三种审批选项(Allow once/Always allow/Deny)和三种提示模式(off/on-miss/always)。以下将其扩展为六个权限等级,展示完整的权限梯度设计:

图 12-3:六级权限信任模型

工作机制

设计特点

  • 粒度:工具级别

  • 状态维护:用户×工具二维表

  • 适用场景:自驱型Agent,需要用户交互反馈

6级模型的完整支持

  • Manual Only: 完全人工操作,每次都需要确认

  • Approve Always: 每个操作都需要人工批准

  • Approve Once: 任务开始时批准一次,执行过程中不再询问

  • Ask First: 首次询问,后续记住用户决择,24小时有效

  • Auto with Notification: 自动执行并发送通知

  • Full Trust: 完全信任,无需额外验证

12.2.2 通用权限框架设计

综合Claude Code和OpenClaw的优点,设计一个通用框架:

1. 权限定义层

权限层的基础定义:

2. 权限决策引擎

权限决策引擎的完整实现:

3. 异步权限决策

在并发Agent系统中,权限决策需支持异步操作。现代Agent系统几乎全部采用异步架构,PolicyEngine.evaluate应提供async版本以支持并发工具调用、数据库查询等I/O操作。以下为异步版 PolicyEngine.evaluate 示例:

4. 子智能体权限冒泡

当智能体创建子Agent时,权限继承需特殊处理。Claude Code引入permissionMode: 'bubble'机制:

12.2.3 沙箱隔离策略

沙箱的目标是 限制突破:即使智能体执行恶意操作,破坏范围也受限。

1. 进程级隔离

机制:使用操作系统原语限制单个进程的资源访问。

优点:简单,无需额外软件。 缺点:无法限制文件系统访问,无法隔离网络。

2. 容器级隔离

机制:使用Docker/Podman将工具执行环境隔离在容器内。

优点:强隔离,文件系统独立,网络隔离完全。 缺点:每次创建容器开销大(500ms-1s),资源占用多。

3. 虚拟机级隔离

机制:使用轻量级VM(如Firecracker, gVisor)进行更强隔离。

适用场景:极高安全要求(金融、医疗)。

沙箱选择矩阵

隔离级别
开销
文件隔离
网络隔离
进程隔离
适用场景

进程

部分

开发调试

容器

生产环境

VM

高安全要求

12.2.4 权限与沙箱的协同

最佳实践是 权限决策 + 沙箱执行 的两层防护:


本节总结:权限与沙箱是防护的两个维度。权限控制 是否允许 执行,沙箱限制 执行的破坏范围。两者结合形成纵深防护。

最后更新于