三种操作模式
Three Operating Modes
Claude Code 提供了三种操作模式来适应不同的使用场景和信任级别。理解并善用这三种模式,是高效使用 Claude Code 的关键。
模式概览
Modes Overview
在深入讲解之前,先了解三种模式的核心区别:
| 特性 | Default 模式 | Auto 模式 | Plan 模式 |
|---|---|---|---|
| 操作执行 | 每次询问确认 | 自动执行 | 不执行任何操作 |
| 安全级别 | 最高 | 较低 | 最高(只读) |
| 交互频率 | 高(频繁确认) | 低(仅输入指令) | 中(讨论计划) |
| 适合用户 | 初学者、敏感操作 | 熟练用户、重复任务 | 复杂任务规划 |
| 执行速度 | 慢(需等待确认) | 快(连续执行) | 无(仅规划) |
Default 模式
Default Mode
Default 模式是 Claude Code 的默认工作模式。在这个模式下,Claude Code 执行任何操作前都会请求你的确认。
工作原理
你的请求 → Claude 分析 → 提出操作方案 → 等待你确认 → 执行操作
↑
你可以在这里审查
并决定是否允许实际交互示例
> 给 UserService 添加一个缓存方法
# Claude 分析后:
Claude wants to read file: src/services/UserService.ts
Allow? [y/n/a] y
# Claude 读取文件后,提出修改方案:
Claude wants to edit file: src/services/UserService.ts
Changes:
+ import { Cache } from '../utils/cache';
+
+ private cache = new Cache({ ttl: 300 });
+
+ async getCachedUser(id: string): Promise<User> {
+ const cached = this.cache.get(`user:${id}`);
+ if (cached) return cached;
+ const user = await this.getUser(id);
+ this.cache.set(`user:${id}`, user);
+ return user;
+ }
Allow? [y/n/a] y确认选项详解
在每次权限提示时,你有以下选择:
| 输入 | 全称 | 行为 | 持续范围 |
|---|---|---|---|
y | Yes | 允许本次操作 | 仅本次 |
n | No | 拒绝本次操作 | 仅本次 |
a | Always | 允许此类操作 | 当前会话 |
当你选择 n 拒绝操作时,Claude Code 不会放弃任务,而是会尝试找到替代方案或询问你期望的做法。
Default 模式的优势
- 完全掌控:每一步操作都在你的视野中
- 学习友好:通过审查操作来了解 Claude Code 的工作方式
- 安全保障:防止误操作导致代码被意外修改
- 审计追踪:你清楚地知道发生了什么改动
Default 模式的不足
- 效率较低:频繁的确认操作会打断工作流
- 对多步任务不友好:一个复杂任务可能需要确认十几次
- 等待时间长:Claude 分析完成后需要等你回来确认
Auto 模式
Auto Mode
Auto 模式让 Claude Code 自动执行所有操作,无需逐一确认。这大幅提升了工作效率,特别适合处理信任度高的重复性任务。
如何进入 Auto 模式
# 方式一:启动时指定
claude --auto
# 方式二:REPL 内切换
# 按 Shift+Tab 切换(循环:Default → Auto → Plan)在 REPL 中,状态栏会显示当前模式:
╭─────────────────────────────────────────╮
│ Mode: Auto (execute without asking) │
╰─────────────────────────────────────────╯
>实际交互示例
# Auto 模式下的交互(注意没有确认步骤)
> 给项目中所有 React 组件添加 PropTypes 验证
# Claude 自动执行:
✓ Reading src/components/Header.tsx
✓ Reading src/components/Sidebar.tsx
✓ Reading src/components/Footer.tsx
✓ Reading src/components/UserCard.tsx
✓ Editing src/components/Header.tsx
✓ Editing src/components/Sidebar.tsx
✓ Editing src/components/Footer.tsx
✓ Editing src/components/UserCard.tsx
Done! Added PropTypes validation to 4 components.安全机制
虽然 Auto 模式跳过了交互确认,但它仍然受到权限配置的约束:
// .claude/settings.json
{
"permissions": {
"deny": [
"Bash(rm -rf *)",
"Bash(git push --force)",
"Edit(/etc/**)",
"Edit(~/.ssh/**)"
]
}
}即使在 Auto 模式下,被明确禁止的操作仍会被阻止。
Auto 模式的重要注意事项
使用 Auto 模式的注意事项
- 确保项目有版本控制 — 在 Git 仓库中工作,这样任何误操作都可以回滚
- 先用 Default 模式试运行 — 对新类型的任务先手动确认几次,确认安全后再切换到 Auto
- 设置权限黑名单 — 在配置文件中明确禁止危险操作
- 定期审查变更 — 任务完成后用
git diff查看所有改动
Auto 模式的最佳使用场景
| 场景 | 示例 | 为什么适合 Auto |
|---|---|---|
| 批量重构 | 重命名所有变量、统一代码风格 | 操作类型单一、可预测 |
| 测试生成 | 为多个模块生成单元测试 | 主要是创建新文件 |
| 文档生成 | 为所有函数添加 JSDoc | 重复性高、风险低 |
| 代码迁移 | 将 JS 文件批量转换为 TS | 模式化操作 |
| 格式化 | 统一导入顺序、添加类型注解 | 低风险的样式修改 |
在 Auto 模式下中断执行
如果你在 Auto 模式下看到 Claude Code 正在做不正确的事情,可以随时中断:
# 按 Ctrl+C 中断当前操作
# Claude Code 会停止执行并等待你的新指令
# 然后你可以:
# 1. 切换回 Default 模式
# 2. 用 git 回滚不正确的修改
# 3. 给出更明确的指令Plan 模式
Plan Mode
Plan 模式是 Claude Code 的"只看不动"模式。在这个模式下,Claude Code 会分析你的需求、阅读相关代码、制定详细的执行计划,但不会执行任何修改操作。
如何进入 Plan 模式
# REPL 内切换
# 按 Shift+Tab 切换(循环:Default → Auto → Plan)
# 状态栏显示
╭─────────────────────────────────────────╮
│ Mode: Plan (analyze only, no changes) │
╰─────────────────────────────────────────╯实际交互示例
> 我想把整个认证系统从 JWT 迁移到 OAuth2,帮我制定计划
# Claude 在 Plan 模式下会输出类似以下内容:
## 认证系统迁移计划:JWT → OAuth2
### 第一阶段:准备工作
1. 安装依赖包
- passport (v0.7.x)
- passport-oauth2
- express-session
2. 创建配置文件
- src/config/oauth.ts — OAuth2 提供商配置
- src/config/session.ts — Session 配置
### 第二阶段:核心实现
3. 创建 OAuth2 策略
- src/auth/strategies/google.ts
- src/auth/strategies/github.ts
4. 修改认证中间件
- src/middleware/auth.ts — 替换 JWT 验证逻辑
- src/middleware/session.ts — 新增 session 管理
5. 更新用户模型
- src/models/User.ts — 添加 OAuth 相关字段
- 数据库迁移脚本
### 第三阶段:路由更新
6. 新增 OAuth 路由
- /auth/google — Google 登录
- /auth/github — GitHub 登录
- /auth/callback — 回调处理
7. 修改现有路由
- 移除 /auth/login 的 JWT 逻辑
- 更新 /auth/logout
### 第四阶段:测试与清理
8. 更新测试
- 修改现有认证测试
- 添加 OAuth 流程测试
9. 清理旧代码
- 移除 JWT 相关依赖
- 清理不再使用的工具函数
### 风险评估
- 需要更新所有前端的认证逻辑
- 现有用户的 session 需要迁移策略
- 第三方 OAuth 提供商的回调 URL 需要配置
### 预计影响的文件
共 15 个文件需要修改,3 个新文件需要创建Plan 模式的核心价值
Plan 模式在以下场景中极为有用:
1. 复杂任务的前期规划
在执行大规模修改之前,先让 Claude 生成计划:
# Plan 模式
> 分析一下将这个项目从 Express 迁移到 Fastify 需要做什么
# 审查计划后,切换到 Default 或 Auto 模式执行2. 代码审查和分析
不需要修改任何东西,只想了解代码:
> 这个项目有哪些潜在的性能瓶颈?
> 分析一下 src/services/ 目录的依赖关系
> 当前的错误处理策略是否完善?3. 学习和理解代码
加入新团队时,用 Plan 模式安全地探索代码库:
> 帮我梳理一下用户下单到订单完成的整个数据流
> 解释一下这个项目的中间件是如何组织的4. 技术方案评估
> 如果要给这个系统添加实时通知功能,有哪些实现方案?
分析各方案的优缺点模式切换
Mode Switching
REPL 内切换
在 REPL 中,按 Shift+Tab 可以循环切换三种模式:
Default → Auto → Plan → Default → ...每次切换时,状态栏会更新显示当前模式。
切换不影响上下文
模式切换不会清除当前的对话上下文。你可以先在 Plan 模式下制定计划,然后切换到 Auto 模式执行:
# Step 1: Plan 模式下规划
[Plan] > 帮我规划如何重构 UserService
# Claude 输出详细计划...
# Step 2: 按 Shift+Tab 切换到 Auto 模式
[Auto] > 按照刚才的计划开始执行
# Claude 自动执行所有步骤...命令行参数
# 启动时直接进入 Auto 模式
claude --auto
# Default 模式是默认值,无需参数
claude三种模式的对比
Detailed Comparison
操作行为对比
| 操作类型 | Default | Auto | Plan |
|---|---|---|---|
| 读取文件 | 询问确认 | 自动执行 | 自动执行 |
| 编辑文件 | 询问确认 | 自动执行 | 不执行 |
| 创建文件 | 询问确认 | 自动执行 | 不执行 |
| 删除文件 | 询问确认 | 自动执行 | 不执行 |
| 运行命令 | 询问确认 | 自动执行 | 不执行 |
| Git 操作 | 询问确认 | 自动执行 | 不执行 |
| 分析代码 | 自动 | 自动 | 自动 |
| 生成计划 | 附带执行 | 附带执行 | 仅生成计划 |
安全等级对比
Plan 模式 ████████████ 最安全(完全只读)
Default 模式 ████████░░░░ 安全(需确认)
Auto 模式 ████░░░░░░░░ 需要谨慎(自动执行)效率对比
Auto 模式 ████████████ 最高效
Plan 模式 ████████░░░░ 中等(分析快但不执行)
Default 模式 ████░░░░░░░░ 较慢(频繁等待确认)实际使用建议
Practical Recommendations
日常开发工作流
推荐的模式使用策略:
1. 新任务开始 → Plan 模式
"分析需求,制定方案"
2. 方案确认后 → Default 模式
"逐步执行,审查关键改动"
3. 重复性操作 → Auto 模式
"批量执行已验证的操作模式"按任务类型选择模式
| 任务类型 | 推荐模式 | 理由 |
|---|---|---|
| 理解代码 / 学习项目 | Plan | 无需修改,只需分析 |
| 制定重构方案 | Plan | 先规划后执行 |
| 编写新功能 | Default | 需要审查生成的代码 |
| 修复已知 Bug | Default | 确认修复方案正确 |
| 批量格式化 | Auto | 低风险、高重复 |
| 生成测试 | Auto | 创建新文件为主 |
| 生产环境配置 | Default | 敏感操作必须确认 |
| 数据库迁移脚本 | Default → Plan | 先规划再谨慎执行 |
团队协作建议
对于团队使用 Claude Code,建议设定以下规范:
// .claude/settings.json(提交到仓库)
{
"permissions": {
"deny": [
"Bash(rm -rf *)",
"Bash(git push --force*)",
"Bash(git reset --hard*)",
"Edit(.env*)",
"Edit(**/credentials*)",
"Edit(**/secrets*)"
]
}
}这份配置确保了即使在 Auto 模式下,危险操作也会被阻止。
进阶技巧
Advanced Tips
组合使用模式
一个复杂任务的典型工作流:
# 1. Plan 模式:分析现状
[Plan] > 分析当前项目的 API 层存在哪些问题
# 2. Plan 模式:制定方案
[Plan] > 制定重构 API 层的详细计划
# 3. Default 模式:执行关键部分
[Default] > 执行计划的第一步:创建新的路由结构
# 4. Auto 模式:执行重复部分
[Auto] > 按照新结构迁移所有现有路由
# 5. Default 模式:验证结果
[Default] > 运行测试,检查是否有遗漏用 Plan 模式做代码审查
[Plan] > 查看最近 5 次提交的改动,指出潜在问题
[Plan] > 分析 PR #42 的代码变更,给出审查意见Auto 模式配合 Git
在 Auto 模式下工作时,利用 Git 作为安全网:
# 创建工作分支
git checkout -b feature/auto-refactor
# Auto 模式执行任务
[Auto] > 将所有 class 组件转换为函数组件
# 完成后审查
git diff
# 不满意?一键回滚
git checkout .
# 满意?提交
git add -A && git commit -m "refactor: convert class to function components"小结
Summary
三种操作模式是 Claude Code 的核心设计理念之一,它们让你在安全性和效率之间找到最佳平衡:
- Default 模式 — 安全至上,每步确认,适合初学者和敏感操作
- Auto 模式 — 效率优先,自动执行,适合信任的重复任务
- Plan 模式 — 只分析不执行,适合规划和代码理解
记住,你可以随时通过 Shift+Tab 在三种模式之间切换,并且切换不会丢失对话上下文。善用模式切换,让 Claude Code 成为你最高效的编程伙伴。