Skip to content

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):

  1. 打开 cc-switch
  2. 勾选「Allow Dangerously Skip Permissions
  3. 在下面的选项中,可以把全自动模式配置为默认模式

开启后,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-reads

2. 按命令类型设置

bash
# bash 命令自动,文件修改确认
claude --auto-approve-bash

3. 临时切换模式

在会话中按 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刀

基于 MIT 许可发布 | 永久导航