Claude Code 源码解析 (9):多层权限决策引擎设计
架构师点评:权限系统是 Coding Agent 的刹车系统。没有权限决策引擎,Agent 越强风险越高;有了分层权限、审批和审计,自动化才有进入生产研发流程的基础。
导读: 这是 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 助手架构设计与实现。
企业落地建议
这篇源码解析对应的是企业 AI Coding 平台的治理与产品化能力,建议落地时重点关注:
- 按工具、文件、命令、网络、数据级别建立最小权限模型。:按工具、文件、命令、网络、数据级别建立最小权限模型。
- 高风险动作必须有人类确认或策略审批:不能只依赖模型自判。
- 权限决策要落日志:支持按用户、项目、工具、风险等级追溯。
- 把权限规则模板化:形成团队级 AI Coding 基线。
相关入口:
- Claude Code 专题:系统化阅读 Claude Code 源码解析与企业实践
- AI Coding 专题:团队级 AI Coding 流程、质量门禁和研发效能提升
- PR 审查官产品页:把代码审查、风险识别和多 Agent 协作落到 PR 流程
- 企业 AI Coding 咨询:私有化 AI Coding 平台、权限治理、工具链集成与内训服务
Claude Code 系列适合作为企业 AI Coding 平台的设计参考:把工具能力拆成权限、配置、命令、插件、上下文和任务系统,再逐步沉淀为可复制的工程体系。