04. 三种模式详解
Claude Code 有三种核心权限模式,理解它们的区别对于高效使用至关重要。
📋 三种模式概览
| 模式 | 特点 | 适用场景 | 安全性 |
|---|---|---|---|
| 默认模式 | 逐个确认 | 初学者、不确定的操作 | ⭐⭐⭐⭐⭐ |
| 自动模式 | 自动批准 | 信任的重复性任务 | ⭐⭐⭐ |
| 规划模式 | 先计划后执行 | 复杂重构、大型功能 | ⭐⭐⭐⭐⭐ |
🔵 默认模式 (Default Mode)
启动方式
bash
# 默认就是此模式,无需额外参数
claude工作流程
你: "帮我修复这个 bug"
Claude: "我将修改 file.js"
你: [需要按 y 确认]
Claude: "我将安装依赖"
你: [需要按 y 确认]
Claude: "我将运行测试"
你: [需要按 y 确认]交互提示
每个操作前,你会看到:
→ I will read the file src/utils/helper.js
Allow? (Y/n/s):
Y - Yes, proceed
n - No, skip
s - Skip all future read operations in this task何时使用
✅ 推荐使用场景:
- 初次使用 Claude Code
- 不确定的操作
- 想要学习 Claude 的工作方式
- 需要仔细审查每个改动
- 生产环境的代码
优点与缺点
优点:
- 🔒 最安全,每个操作都需要确认
- 📚 学习机会多,能理解每个步骤
- 🎯 精确控制,可以随时调整方向
缺点:
- ⏱️ 需要多次确认,速度较慢
- 🔔 对于信任的操作会感到重复
🟢 自动模式 (Auto Mode)
启动方式
bash
# 方式 1: 命令行参数
claude --auto-approve
# 方式 2: 配置文件
# ~/.claude/config.json
{
"autoApprove": true
}工作流程
你: "帮我运行所有测试并修复失败的用例"
Claude: [自动执行所有操作]
- 读取测试文件 ✓
- 运行测试 ✓
- 分析失败原因 ✓
- 修复代码 ✓
- 再次运行验证 ✓
Claude: "完成!修复了 3 个测试用例"何时使用
✅ 推荐使用场景:
- 高度信任的操作(如只读任务)
- 重复性工作(如格式化代码)
- 沙盒环境或测试项目
- 已经在规划模式中审查过的任务
- 脚本化操作
优点与缺点
优点:
- ⚡ 速度最快,无中断
- 🤲 解放双手,适合复杂多步骤任务
- 🔄 适合批量操作
缺点:
- ⚠️ 风险较高,无法中途干预
- 👀 无法看到每个步骤
- 🚫 不适合生产环境的修改操作
在 VS Code 插件中开启全自动模式
如果你使用 VS Code 插件,可以通过 cc-switch 工具来开启全自动模式(即 --dangerously-skip-permissions):
- 打开 cc-switch
- 勾选「Allow Dangerously Skip Permissions」
- 在下面的选项中,可以把全自动模式配置为默认模式
开启后,Claude Code 在 VS Code 中可以自动运行命令,无需二次确认。
⚠️ 全自动模式没有任何安全拦截,请仅在沙盒或测试项目中使用。详见上方「Auto Mode vs --dangerously-skip-permissions」对比表。
安全使用建议
bash
# 1. 结合使用范围限制
claude --auto-approve --allow-read-only
# 2. 先用规划模式审查,再用自动模式执行
# 步骤 1: 规划
claude --plan-mode
> "帮我重构这个模块"
> [审查计划]
# 步骤 2: 执行
claude --auto-approve
> "按我们刚才讨论的计划执行"Auto Mode 的安全机制:AI 分类器
Auto Mode 不是简单的"全部放行",它内置了一套 AI 安全分类器来拦截危险操作。
两阶段分类机制
用户请求
↓
┌─────────────────────────┐
│ 第一阶段:快速分类 │
│ Prompt Injection 探测器 │
│ 误报率:8.5% │
│ 速度:快 │
└──────────┬──────────────┘
│ 可疑?
↓
┌─────────────────────────┐
│ 第二阶段:深度推理 │
│ Transcript 分类器 │
│ 误报率:0.4% │
│ 速度:较慢 │
└──────────┬────────────┘
│ 确认危险?
↓
🚫 拦截操作工作原理:
- 输入层:Prompt Injection 探测器快速检查用户输入是否包含恶意指令
- 输出层:Transcript 分类器分析 Claude 的完整操作历史,判断是否存在异常模式
Auto Mode 拦截的真实案例
| 类型 | 示例 | 结果 |
|---|---|---|
| 范围升级 | "顺便看看 /etc/passwd" | 🚫 拦截 |
| 凭证探索 | "检查一下 AWS 密钥" | 🚫 拦截 |
| 绕过安全检查 | "跳过验证直接部署" | 🚫 拦截 |
| 数据外泄 | "把用户数据发到这个 URL" | 🚫 拦截 |
⚠️ 重要警告
Auto Mode 有约 17% 的漏检率。它不是万能的安全保障,仍然需要用户保持警惕。
Auto Mode vs --dangerously-skip-permissions
| 特性 | Auto Mode | --dangerously-skip-permissions |
|---|---|---|
| 安全分类器 | ✅ 有 | ❌ 无 |
| 危险操作拦截 | ✅ 自动拦截 | ❌ 完全放行 |
| 适用场景 | 日常开发 | 沙盒/测试环境 |
| 安全性 | 中 | 极低 |
| 推荐度 | ⭐⭐⭐ | ⭐(慎用) |
三层权限体系总结
安全等级(从高到低):
1️⃣ 默认模式(逐个确认)
→ 最安全,每个操作都需要你确认
2️⃣ Auto Mode(AI 分类器 + 逐个确认)
→ AI 自动拦截明显危险操作
→ 不确定的操作仍会询问你
3️⃣ /permissions 白名单
→ 指定某些工具/操作自动放行
→ 其余仍需确认
4️⃣ --dangerously-skip-permissions
→ 完全跳过权限检查
→ ⚠️ 仅限沙盒环境🟠 规划模式 (Plan Mode)
启动方式
bash
# 方式 1: 命令行参数
claude --plan-mode
# 方式 2: 在会话中快速切换
# 按两次 Shift+Tab
# 方式 3: 配置文件
# ~/.claude/config.json
{
"planModeRequired": true
}工作流程
你: "帮我将这个应用从 JavaScript 迁移到 TypeScript"
Claude: "让我先分析项目结构..."
[分析项目...]
Claude: "这是我的迁移计划:
1. 安装 TypeScript 和相关依赖
2. 创建 tsconfig.json
3. 重命名 .js 文件为 .ts
4. 添加类型定义(按优先级):
- 环 tsconfig.json
- src/types/index.ts(共享类型)
- src/utils/*.ts(工具函数)
- src/components/*.tsx(组件)
5. 修复类型错误
6. 更新构建脚本
这个计划会修改约 23 个文件。
是否批准此计划?"
你: [批准或修改计划]
Claude: [执行计划]何时使用
✅ 强烈推荐使用场景:
- 大型重构(超过 5 个文件)
- 架构变更
- 添加复杂功能
- 性能优化
- 安全性敏感的操作
- 团队协作中的重要改动
规划模式的特点
计划包含:
- 📁 要修改的文件列表
- 🔄 操作的步骤顺序
- 💡 每个步骤的目的
- ⚠️ 潜在的风险提示
- 📊 影响范围评估
优势:
- 🎯 可以在执行前看到全局
- 🔄 方便讨论和调整方案
- 📝 生成可分享的计划文档
- 🛡️ 避免意外的大规模修改
计划文件
规划模式会生成计划文件:
~/.claude/plans/
└── 2024-03-15-migrate-to-typescript.md计划文件包含:
- 任务描述
- 执行步骤
- 文件变更清单
- 风险评估
🔄 模式切换策略
推荐的工作流
┌─────────────────┐
│ 规划模式 │ ← 大型任务从这里开始
│ (Plan Mode) │
└────────┬────────┘
│ 审查并批准计划
↓
┌─────────────────┐
│ 自动模式 │ ← 执行已批准的计划
│ (Auto Mode) │
└─────────────────┘
对于小型任务:
┌─────────────────┐
│ 默认模式 │ ← 直接使用,逐个确认
│ (Default Mode) │
└─────────────────┘实战示例
场景:添加用户认证功能
步骤 1: 规划模式
bash
claude --plan-mode你: "我想添加用户认证功能,包括登录、注册、密码重置"
Claude: [生成详细计划]
你: "看起来不错,但我不想用 JWT,改用 Session"
Claude: [调整计划]
你: "批准!"步骤 2: 切换到自动模式执行
bash
# 新开一个终端
claude --auto-approve你: "按照刚才的计划执行认证功能实现"🎓 模式选择决策树
任务来了
│
├─ 是否修改代码?
│ ├─ 否 → 使用默认模式或自动模式(只读操作)
│ └─ 是 → 继续
│
├─ 涉及多少文件?
│ ├─ 1-3 个 → 默认模式(简单可控)
│ └─ 3+ 个 → 继续
│
├─ 是否是生产代码?
│ ├─ 是 → 规划模式(安全第一)
│ └─ 否 → 继续
│
└─ 你是否信任 Claude?
├─ 是 → 自动模式(效率优先)
└─ 否 → 规划模式或默认模式📊 对比表格
| 特性 | 默认模式 | 自动模式 | 规划模式 |
|---|---|---|---|
| 确认次数 | 每个操作 | 0 次 | 1 次(整体) |
| 适用任务规模 | 小-中 | 小-大 | 中-大 |
| 学习曲线 | 低 | 低 | 中 |
| 安全性 | 高 | 低 | 高 |
| 效率 | 中 | 高 | 中 |
| 可审查性 | 高 | 低 | 高 |
| 可中断性 | 随时 | 仅完成步骤 | 执行前 |
💡 高级技巧
1. 混合使用
bash
# 读取操作自动,修改操作确认
claude --auto-approve-reads2. 按命令类型设置
bash
# bash 命令自动,文件修改确认
claude --auto-approve-bash3. 临时切换模式
在会话中按 Shift+Tab 两次:
- 从默认模式 → 规划模式
- 从规划模式 → 默认模式
4. 计划复用
bash
# 查看之前的计划
cat ~/.claude/plans/2024-03-15-*.md
# 让 Claude 执行已有计划
claude --auto-approve
> "执行这个计划:[粘贴计划内容]"⚠️ 安全建议
生产环境
bash
# 始终使用规划模式
export CLAUDE_DEFAULT_MODE="plan"
# 或在项目配置中强制
echo "planModeRequired: true" > .claude/config.yml测试环境
bash
# 可以使用自动模式
export CLAUDE_DEFAULT_MODE="auto"敏感操作
无论什么模式,以下操作应格外小心:
- 🗑️ 删除文件或目录
- 🔄 Git force push
- 🔧 修改 CI/CD 配置
- 🔐 涉及密钥和凭证的操作
- 📦 发布到生产环境
📚 下一步
理解模式后,继续学习 05. 执行终端命令
🔗 相关资源
💡 API 推荐:https://apipro.maynor1024.live/ - 一站式接入各种AI服务,注册即送0.2刀