Claude Code 源码解析 (9):多层权限决策引擎设计
导读: 这是 Claude Code 20 个功能特性源码解析系列的第 9 篇,深入分析权限系统的架构设计。
📋 目录
问题引入:权限控制的挑战
痛点场景
场景 1:权限粒度太粗
1 | 用户:"给 AI 完全访问权限" |
场景 2:每次都要确认
1 | 用户:"运行测试" |
场景 3:规则无法覆盖所有场景
1 | 规则:允许执行 npm install |
核心问题
设计 AI 助手的权限系统时,面临以下挑战:
粒度问题
- 如何平衡灵活性与安全性?
- 如何支持细粒度权限控制?
效率问题
- 如何减少不必要的确认?
- 如何让常用操作更流畅?
智能问题
- 如何判断操作的真实意图?
- 如何处理规则未覆盖的场景?
审计问题
- 如何记录权限决策?
- 如何追溯权限滥用?
Claude Code 用多层权限决策引擎解决了这些问题。
技术原理:多层权限决策架构
整体架构
1 | ┌─────────────────────────────────────────────────────────────┐ |
权限规则定义
1 | interface PermissionRule { |
规则引擎
1 | class PermissionRuleEngine { |
AI 分类器
1 | class AIPermissionClassifier { |
权限决策器
1 | class PermissionDecider { |
审计日志
1 | class AuditLogger { |
设计思想:为什么这样设计
思想 1:多层防御
问题: 单层规则容易被绕过或误判。
解决: 多层决策。
1 | 全局规则 → 工作区规则 → 会话规则 → AI 分类器 → 用户确认 |
设计智慧:
每层都有不同的视角,组合起来更可靠。
思想 2:智能降级
问题: AI 分类器可能出错。
解决: 置信度阈值 + 人工兜底。
1 | if (classification.confidence > 0.85) { |
阈值选择:
| 置信度 | 决策 | 说明 |
|---|---|---|
| > 0.85 | 自动 | AI 很有把握 |
| 0.5-0.85 | 用户确认 | AI 不太确定 |
| < 0.5 | 拒绝 | AI 认为危险 |
思想 3:规则可学习
问题: 规则配置繁琐。
解决: 从用户决策学习。
1 | // 用户选择"允许并记住" |
学习效果:
1 | 第 1 次:npm install → 用户确认 → 选择"允许并记住" |
思想 4:审计可追溯
问题: 权限滥用无法追溯。
解决: 完整审计日志。
1 | interface AuditLog { |
审计查询:
1 | # 查看所有拒绝的请求 |
思想 5:上下文感知
问题: 同样命令在不同上下文风险不同。
解决: 上下文感知决策。
1 | // 同样命令:rm -rf node_modules |
解决方案:完整实现详解
PermissionTool 实现
1 | export class PermissionTool extends Tool { |
权限规则配置
1 | # ~/.openclaw/config/permissions.yaml |
OpenClaw 最佳实践
实践 1:查看权限规则
1 | # 查看所有规则 |
实践 2:添加权限规则
1 | # 添加允许规则 |
实践 3:查询审计日志
1 | # 查看所有权限决策 |
实践 4:测试权限决策
1 | # 测试特定请求的决策 |
实践 5:导出审计报告
1 | # 导出 CSV |
总结
核心要点
- 多层决策 - 全局 → 工作区 → 会话 → AI → 用户
- 智能降级 - 置信度阈值 + 人工兜底
- 规则学习 - 从用户决策自动创建规则
- 审计追溯 - 完整记录所有决策
- 上下文感知 - 根据上下文调整决策
设计智慧
好的权限系统让用户”无感安全”。
Claude Code 的权限系统设计告诉我们:
- 多层决策比单层更可靠
- AI 辅助可以减少用户确认
- 规则可以从用户行为学习
- 审计日志是安全的基础
决策流程
1 | 请求 → 规则匹配 → AI 分类 → 用户确认 → 决策 |
下一步
- 配置权限规则
- 启用 AI 分类器
- 设置审计日志
- 定期审查规则
系列文章:
- [1] Bash 命令执行的安全艺术 (已发布)
- [2] 差异编辑的设计艺术 (已发布)
- [3] 文件搜索的底层原理 (已发布)
- [4] 多 Agent 协作的架构设计 (已发布)
- [5] 技能系统的设计哲学 (已发布)
- [6] MCP 协议集成的完整指南 (已发布)
- [7] 后台任务管理的完整方案 (已发布)
- [8] Web 抓取的 SSRF 防护设计 (已发布)
- [9] 多层权限决策引擎设计 (本文)
- [10] 插件生命周期的设计智慧 (待发布)
- …
上一篇: Claude Code 源码解析 (8):Web 抓取的 SSRF 防护设计
关于作者: John,OpenClaw 平台开发者,专注 AI 助手架构设计与实现。