Claude Code 模式切换全指南:从小白到理解底层原理

能力越强,风险越大。模式就是在安全和效率之间选档位。


目录


为什么需要模式?

Claude Code 能做的事情很多:读文件、改代码、跑命令、访问网络。如果什么都让它随便做,万一它删错了文件怎么办?如果什么都问你要确认,用起来又太慢了。

这就是模式要解决的矛盾:能力越强,风险越大。

模式不是限制你,是让你选择「在哪个档位上信任 AI」。就像开车有经济模式、运动模式、雪地模式——同一辆车,不同场景用不同档位。


五种模式速览

模式 读文件 改文件 跑命令 一句话
Default 自动 需确认 需确认 万事求确认,安全第一
AcceptEdits 自动 自动 需确认 放心写代码,不放心跑命令
Plan 自动 禁止 禁止 先探索出方案,审阅后再动手
Auto 自动 自动 自动(带检查) 长时间任务,减少中断
BypassPermissions 自动 自动 自动(无检查) 仅限隔离环境,极度危险

Default 模式

新手首选。Claude 能自由读文件,但改代码、跑命令都要你点确认。适合刚上手、处理敏感项目、或者只想让 AI 帮你读代码找答案。

AcceptEdits 模式

信任 AI 写代码,但对跑命令保持警惕。批量改文件很方便,但 rm -rf 还是会拦住你。状态栏显示 accept edits on

Plan 模式

只读模式。Claude 自由探索代码库,但不能改任何文件。它会把探索结果整理成实施计划给你审阅,你批准后才真正动手。适合复杂重构、方案不确定的场景。

Auto 模式

Claude 可以执行所有操作,但有后台安全检查。适合长时间自主运行的任务,减少「提示疲劳」。

BypassPermissions 模式

跳过所有权限检查。源码里有明确警告:

// 只有在完全受信任的环境中才使用
// 错误使用可能导致数据丢失或安全问题

仅在 Docker 容器或 CI/CD 流水线中使用。

切换方式

  • Shift+Tab:在 default → acceptEdits → plan 之间循环
  • 启动参数claude --permission-mode plan
  • 配置文件:在 .claude/settings.json 中设置 defaultMode

Plan 模式详解

Plan 是 Claude Code 最独特的设计。它的核心思想:让模型主动降低自己的权限,换取用户的信任。

完整流程

用户触发 Plan 模式
    |
    v
Claude 只读探索代码库
    |
    v
生成实施计划(写入 ~/.claude/plans/)
    |
    v
用户审阅、编辑计划
    |
    v
批准 → 退出 Plan,恢复原模式,开始执行
拒绝 → 回到原状态

为什么 Plan 有效?

在规划阶段纠正错误,代价几乎为零。让 Claude 探索 5 分钟出个方案,比让它直接动手然后你花 30 分钟回滚高效得多。

实际开发中:

  • 重构复杂模块 → 先 Plan 摸清代码结构,再动手
  • 方案有多种选择 → 让 Claude 在 Plan 里对比分析
  • 跨文件改动 → Plan 阶段确认影响范围

底层原理:Agent Loop + 五层权限

Agent Loop:核心是一个 while 循环

Claude Code 的执行逻辑,本质上就是一个 Agent Loop:

async function agentLoop(messages) {
  while (true) {
    // 1. 调用 Claude 模型
    const response = await callModel(messages);

    // 2. 如果没有工具调用,结束
    if (!response.toolCalls) return response.text;

    // 3. 执行工具(读文件、写文件、跑命令等)
    const toolResults = await executeTools(response.toolCalls);

    // 4. 把结果喂回给模型,继续循环
    messages = [...messages, response, ...toolResults];
  }
}

关键洞察:Claude Code 有 40+ 个工具模块(读文件、写文件、跑命令、搜索等)。模式切换的本质,就是改变这些工具的「权限级别」。

  • Plan 模式:所有写操作的工具被禁用
  • Default 模式:写工具需要用户确认
  • BypassPermissions 模式:所有工具的权限检查被跳过

五层权限架构

Claude Code 的权限系统不是简单的「允许/拒绝」,而是五层从粗到细的控制:

第 1 层:会话模式(粗)
  Default / AcceptEdits / Plan / Auto / BypassPermissions
    |
第 2 层:工具白名单
  配置文件里允许/禁止特定工具(如禁止 BashTool)
    |
第 3 层:工具级权限
  每个工具有默认权限(读工具自动允许,写工具需询问)
    |
第 4 层:操作级权限
  同一工具不同操作风险不同(ls 自动允许,rm -rf 需确认)
    |
第 5 层:ML 分类器(细)
  用机器学习判断命令的危险程度

这告诉我们:好的权限系统是「分层」的。你不需要在全开和全关之间二选一——可以在不同粒度上精细控制。


Plan Mode 的源码实现

从源码层面看,Plan Mode 涉及这些文件:

文件 职责
EnterPlanModeTool.ts 进入 Plan 模式的入口
ExitPlanModeV2Tool.ts 退出 Plan 模式 + 审批流程
plans.ts 计划文件的存储与管理
planModeV2.ts 配置管理
permissionSetup.ts 权限上下文准备与恢复

完整生命周期

批准

拒绝

用户触发 Plan 模式

保存当前模式 prePlanMode

注入只读探索指令

Claude 探索代码库

生成实施计划

写入 ~/.claude/plans/slug.md

用户审阅计划

恢复原模式

回到原状态

注入 plan_mode_exit 指令

Claude 按计划执行

关键设计:状态的对称性

Plan Mode 最巧妙的设计是进入和退出的对称性

  • 进入时:保存当前模式到 prePlanMode
  • 退出时:精确恢复到 prePlanMode

这意味着 Plan Mode 是一个「可嵌套的插入层」。不管你在什么模式,进入 Plan 再退出后都能回到原来的状态。

// 进入 Plan Mode
const prePlanMode = currentMode;
currentMode = 'plan';

// 退出 Plan Mode
currentMode = prePlanMode;  // 精确恢复

这个设计原则值得借鉴:好的功能要考虑「进入」和「退出」的对称性——用户不应该因为尝试了一个功能就回不到原来的状态。


对开发的影响

1. 模式选择 = 问题粒度匹配

不是「哪个模式更好」,而是「你的任务适合哪个档位」:

任务类型 推荐模式 原因
读代码、找答案 Default 只需要读,不需要改
批量改文件 AcceptEdits 信任代码修改,不想反复确认
复杂重构、方案不确定 Plan 先规划,避免方向性错误
长时间自动化任务 Auto 减少中断
CI/CD 流水线 BypassPermissions 隔离环境,全自动

2. 先规划后执行省返工时间

Plan Mode 的哲学:在规划阶段纠正错误的代价几乎为零。

改一张图纸比拆一面墙便宜。让 Claude 在 Plan 模式下探索 5 分钟,比让它直接动手然后你花 30 分钟回滚高效。

3. 权限分层 = 精细化授权

你不必在「完全信任」和「完全不信任」之间二选一:

  • 可以允许改代码(AcceptEdits),但不允许跑命令
  • 可以在配置文件中单独禁止某些危险工具
  • 甚至可以对同一个命令的不同参数做不同处理

4. 50 万行代码的启示

Claude Code 有 50 万行 TypeScript 代码,但核心 Agent Loop 只有 20 行。95% 的代码不在核心循环里,而在围绕它的基础设施上——权限系统、上下文压缩、子代理编排、会话持久化。

对我们自己开发 AI 应用的启示:核心逻辑可以很简单(一个 while 循环调用 LLM),真正的工作量在「让这个循环安全、高效、可扩展」的工程上。


总结与实战建议

小白怎么选模式?

你的场景 推荐模式
第一次用,想试试水 Default
想让 CC 帮你写代码,怕它乱跑命令 AcceptEdits
要重构复杂模块,不确定方案 Plan
跑测试、批量处理 Auto
Docker 容器里做自动化 BypassPermissions

推荐工作流

1. Plan 模式:让 Claude 探索代码、出方案
2. 审阅计划,确认方向正确
3. 切到 AcceptEdits 或 Auto:按计划执行
4. 发现偏差 → 随时切回 Plan 重新规划

核心观点

  • 模式不是限制你,是让你在正确的档位上信任 AI
  • Plan Mode 的价值:先规划后执行,避免方向性错误
  • 五层权限的启示:好的安全设计是分层的,不是一刀切
  • Agent Loop 的启示:核心逻辑简单,工程在护城河

一句话:理解这些模式,不只是让 Claude Code 用得更顺手,也是在学「怎么设计一个好的 AI Agent 系统」。


Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐