Claude Code :核心工作流 —— 与AI共舞的六种模式

阅《Claude Code 橙皮书:从入门到精通》有感


前言

这篇博客是对今天所看的橙皮书进行一个梳理,也是对claude code的一个梳理,当然文章的许多内容也都是Claude code帮忙编写的,写该篇文章的目的是为了让我更好的理解它的核心工作流,当然也希望帮助到正在感兴趣点进来的你们。

1. 六种权限模式:一张表看清全局

Claude Code 提供了六种权限模式,本质上是信任梯度的六个档位------从「一步一问」到「完全不管」。先上全景图:

模式 编辑文件 Shell 命令 网络请求 适用场景
default 需确认 需确认 需确认 陌生项目、敏感代码库
acceptEdits 自动放行 需确认 需确认 日常开发主力档(推荐)
plan 禁止 禁止 禁止 需求分析、架构规划、接手新项目
auto 分类器判定 分类器判定 分类器判定 批量重构、长时间自动化任务
dontAsk 仅白名单放行 仅白名单放行 仅白名单放行 CI/CD 流水线、自动化脚本
bypassPermissions 无限制 无限制 无限制 隔离沙箱、一次性实验环境

这张表的理解要点:信任递增,控制递减。


2. 逐模式深度解析

2.1 default 模式:最安全,也最慢

行为:每次文件编辑、每次 Shell 命令执行、每次网络请求都弹确认框。

设计意图:这是 Claude Code 的出厂设置。它假设你对当前环境一无所知,所以凡事都问。

什么时候用

  • 刚 clone 一个陌生仓库,还没读代码

  • 操作生产环境配置(数据库 migration、K8s 部署脚本)

  • 仓库里有敏感信息(密钥文件、.env、客户数据)

什么时候不用

  • 日常迭代开发------太慢了,确认框会让你想砸键盘

  • 你已经信任的项目------此时 acceptEdits 是更好的选择

橙皮书原话:「default 模式就像驾校教练,副驾有刹车------安全,但你不可能一辈子在驾校里开车。」


2.2 acceptEdits 模式:日常开发的最优解

行为:文件编辑自动放行;Shell 命令、网络请求仍需用户确认。

为什么是「最优解」

文件编辑的风险可控------有 Git 兜底,错了可以 git diff + git reset 回滚。而 Shell 命令和网络请求有不可逆性:rm -rfgit push --force、调用外部 API 发送数据------这些一旦执行,回滚成本高得多。

日常开发默认开 acceptEdits。 这是效率与安全的最佳平衡点。


2.3 plan 模式:先画地图再上路

核心机制 :plan 模式是一个只读沙箱 。AI 可以读代码、分析架构、搜索文件,但所有写操作、Shell 执行、网络请求全部被系统拦截------不是 AI 自觉不做,而是 Claude Code 的 harness 在工具调用层直接拒绝。

触发方式

  • 命令:/plan <你的需求>

  • 快捷键:连按两次 Shift + Tab

四种典型使用场景

场景 示例 prompt
接手新项目,快速理解结构 /plan 帮我理解这个项目的整体架构、核心模块和数据流
大功能开发,先看整体方案 /plan 添加用户权限系统,涉及哪些文件?推荐方案是什么?
怀疑 AI 走偏,让它停下来重新审视 等一下,先别写。切到 plan 模式重新想想,有没有更优解?
技术选型决策 /plan 这个项目该用 Tailwind 还是 CSS Modules?结合我们现有的技术栈分析

plan 模式输出通常包含

  1. 涉及的文件清单及其职责

  2. 推荐实现方案(含备选方案对比)

  3. 预估工作量与复杂度

  4. 潜在风险点和边界情况

「Plan 模式就像买车前让 AI 帮你查参数、看口碑、比价格------但它不能帮你下单。最终决定权在你。」


2.4 auto 模式:分类器驱动的自动驾驶

这是 Claude Code 最具技术含量的模式。

auto 模式背后运行了一个 LLM 安全分类器(safety classifier),对每一次工具调用做出四级安全判定:

复制代码

【日常开发用 acceptEdits,长时间自动化任务切 auto 模式------比如批量重构、跑全量测试套件、跨几十个文件做统一修改。】

前提条件 :auto 模式要发挥最大价值,需要配合 settings.json 做好信任域配置

  • 企业内网域名 → 可信任的 Shell 操作

  • 公司代码仓库 → 可信任的 Git 操作

  • 已知安全的 npm 包 → 可信任的安装操作

没有这些配置,auto 模式会频繁触发 soft_deny,最终还是回到你面前要确认------等于白切。


2.5 dontAsk 模式:流水线专用

行为 :只有 settings.json 里显式白名单的工具/命令可用,其他一律拒绝(不是询问,是直接拒绝)。

唯一适用场景:CI/CD 流水线。

复制代码

dontAsk 与 acceptEdits 的关键区别:acceptEdits 对未知操作是「询问」,dontAsk 对未知操作是「直接拒绝」。后者在无人值守的自动化场景下是安全的唯一选择。


2.6 bypassPermissions 模式:裸奔模式

所有安全检查全部关闭。只用于完全隔离的沙箱环境------比如 Docker 容器、临时虚拟机、一次性实验环境。

慎用


3. 会话管理:对话即资产

如果说六种权限模式控制的是【AI 能做什么】,那会话管理控制的就是【AI 记得什么】以及【你们聊到哪了】。

3.1 会话是什么?

在 Claude Code 中,每一次启动(claude 命令)都会创建一个新的会话(Session)。一个会话包含:

复制代码

理解这个结构是会话管理的第一步:会话不只是聊天记录,它是 AI 对你项目的全部认知的运行时载体。


3.2 会话的生命周期

橙皮书将一次典型的开发会话分为四个阶段:

复制代码
启动 ──▶ 执行 ──▶ 压缩/整理 ──▶ 归档
 │          │          │           │
 │          │          │           └─ 关闭会话,关键信息写入 CLAUDE.md 或 Memory
 │          │          │
 │          │          └─ 上下文过长时 /compact 压缩,保留关键决策
 │          │
 │          └─ 核心工作阶段:探索→规划→编码→提交 的循环
 │
 └─ claude 命令启动,自动加载 CLAUDE.md + Memory

每个阶段都有对应操作:

阶段 操作 命令/方式
启动 新建会话,自动加载项目上下文 claudeclaude --resume
执行 核心开发循环 自然语言交互 + 模式切换
压缩 上下文过长时压缩历史 /compact
归档 将关键发现持久化 写入 CLAUDE.md、Memory、或 Git 提交

3.3 会话恢复:断点续传的核心能力

这是橙皮书强调的一个关键特性。Claude Code 支持 会话持久化与恢复------你关闭终端、电脑休眠、甚至过了一周,都可以回到上次中断的地方继续工作。

三种恢复方式

复制代码
方式一:启动时选择
─────────────────
$ claude
? 检测到 3 个之前的会话,选择要恢复的会话:
  [1] 2026-06-01 14:23 --- 「给 ai-news-digest 添加中文摘要功能」
  [2] 2026-05-30 09:15 --- 「重构用户模块的数据层」
  [3] 新建会话
​
方式二:命令行指定
─────────────────
$ claude --resume          # 恢复最近一次会话
$ claude --resume 2        # 恢复列表中第 2 个会话
​
方式三:会话内继续
─────────────────
在 Claude Code 运行中,直接说「继续上次的 xxx 任务」,
如果是近期的会话,AI 会从历史中找回上下文。

为什么这很重要?传统 AI 编程工具的痛点:ChatGPT 关掉页面就没了;Copilot Chat 每次新对话都是白纸一张。Claude Code 的会话恢复意味着:

  • 大型功能可以跨天开发 :今天写到一半下班,明天 claude --resume 继续,AI 记得所有上下文。

  • 多项目并行不混淆:每个会话绑定到自己的项目目录,不会串上下文。

  • 不怕意外中断:断电、崩溃、误关终端------会话自动保存,重启即可恢复。


3.4 上下文窗口管理:/compact 的艺术

这是会话管理中最具实操价值的部分。Claude Code 的上下文窗口有 token 上限(200k)。随着开发推进,对话历史越来越长,终会触达上限。橙皮书详细讲解了应对策略。

问题本质

复制代码
Token 使用分布(典型的长会话)
────────────────────────────────────
█████████████████████████████░░░░░░░  85%
├─ 系统提示词 ─┤├── 对话历史──┤├free┤
                                    ↑
                              剩余空间不够 AI 做复杂推理

当上下文即将耗尽时,你有三个选择:

选择一:/compact ------ 压缩历史(首选)

复制代码

/compact 做的事情:

  1. 将漫长的对话历史压缩为一份结构化的对话摘要

  2. 保留所有关键信息:做了什么、改了哪些文件、做了哪些决策、踩了哪些坑

  3. 丢弃冗长的原始输出、重复内容、已完成的中间步骤

  4. 释放 60--80% 的 token 空间,让你继续工作

什么时候该 compact

  • 对话历史明显变长,AI 回复开始变慢

  • 上下文使用率超过 70%(用 /context 查看)

  • 你需要开启一个全新的、复杂的功能讨论

选择二:新建会话 ------ 彻底重置

当当前会话的话题已经完全偏离、或者你从【开发模式】切换到【代码审查模式】时,开一个新会话更清爽。新会话会重新加载 CLAUDE.md 和 Memory,但不会携带之前的对话历史。

选择三:分层会话策略 ------ 高级玩法

橙皮书作者推荐了一种「一个功能一个会话」的策略:

复制代码
会话 A:需求分析 + 方案设计(plan 模式为主)
    │
    │  输出:方案文档、文件清单、预估工作量
    │  归档:方案写入 CLAUDE.md 或项目 docs/
    │
    ▼
会话 B:编码实现(acceptEdits 模式为主)
    │
    │  输入:读取 CLAUDE.md 中的方案
    │  输出:功能代码
    │  归档:Git commit
    │
    ▼
会话 C:代码审查 + 测试(plan 模式为主)
    │
    │  输入:git diff
    │  输出:审查意见、测试用例
    │  归档:审查结论写入 PR

这样做的优势:

  • 每个会话的上下文高度聚焦,token 浪费少

  • 出问题时可以精确回到某个阶段重来

  • 不同阶段用不同模式,权限边界清晰


3.5 Memory 系统:跨会话的持久记忆

会话会结束,但有些信息需要跨会话持久化 。Claude Code 提供了 Memory 系统来解决这个问题------存储在 ~/.claude/projects/<项目>/memory/ 目录下,每个文件一条事实。

会话 vs Memory 的分工

维度 会话 Memory
生命周期 一次对话 跨会话持久
存什么 对话过程、中间讨论 用户偏好、项目约定、重要决策
类比 工作记忆(RAM) 长期记忆(硬盘)
容量 200k tokens 无硬性上限

什么叫「值得写入 Memory」

复制代码
 不值得写:
  "刚才 AI 帮我改了一个 typo"        ← 太琐碎
  "src/index.ts 第 42 行有个函数"    ← 代码本身在 git 里
​
 值得写:
  "用户偏好用 Tailwind 而非 CSS Modules"     ← 用户偏好
  "该项目 API 返回格式多包了一层 wrapper"    ← 项目特殊约定
  "部署到生产前必须先过 staging 环境验证"     ← 流程约束

实际工作流中的 Memory 使用

复制代码
开发过程中发现 AI 反复犯同一个理解错误
        │
        ▼
「记住:这个项目的 API 认证用的是 JWT + refresh token 双 token 机制,
   不是简单的 Bearer token。」
        │
        ▼
Claude Code 自动写入 Memory 文件
        │
        ▼
下次新会话,AI 启动时自动加载这条 Memory,不会再犯同样的理解错误

【你不需要在每次新对话里重新教育 AI。教它一次,它记住一辈子。】


3.6 多会话并行:同时推进多个任务

多会话并行的工作方式,这在真实开发中非常常见------你正在做一个功能,突然来了个紧急 bug,或者你想同时推进两个独立的任务。

多会话的工作模型

复制代码
终端 A:会话 1                     终端 B:会话 2
┌────────────────────┐          ┌────────────────────┐
│ 项目:my-app        │          │ 项目:my-app        │
│ 任务:新功能开发     │          │ 任务:修复线上 bug   │
│ 模式:acceptEdits   │          │ 模式:acceptEdits   │
│                    │          │                    │
│ "帮我实现用户权限   │          │  线上报了个NPE,    │
│  管理的后端接口"    │          │  帮我定位跟修复     │
│                    │          │                    │
│ 上下文:权限设计    │          │ 上下文:bug 定位     │
│ 方案、数据库 schema │          │ 堆栈、相关代码文件   │
└────────────────────┘          └────────────────────┘
         │                               │
         │     同一个 git 仓库            │
         └───────────────┬───────────────┘
                         │
                    注意隔离:
                    · 不同分支(git checkout -b)
                    · 或不同 worktree
                    · 避免两个会话同时改同一个文件

多会话并行三原则

  1. 一个会话只做一件事:不要在一个会话里同时聊三个功能------AI 会混淆,你也会。

  2. 用 Git 分支做物理隔离:两个会话如果涉及文件修改,至少要在不同分支上工作,否则互相覆盖。

  3. 用 Memory 做信息桥接:会话 A 发现的通用约定,写入 Memory;会话 B 启动时自动继承。


3.7 会话管理的常见坑

坑 1:一个会话扛到底

症状:从项目初始化到上线部署,全程一个会话不换。对话历史 500+ 条,AI 回复越来越慢,上下文过载导致 AI 混淆早期决策。

正确做法:按功能/阶段拆分会话,会话间通过 CLAUDE.md、Memory、Git commit message 传递关键信息。

坑 2:不写 Memory,每次重新教育 AI

症状:每次新会话都跟 AI 说一遍「我们这个项目 API 返回格式不是标准 RESTful」------浪费 token,也浪费生命。

正确做法:AI 一旦犯了理解错误,纠正之后立刻让它写入 Memory。一次纠正,终身受益。

坑 3:/compact 恐惧症

症状:怕 compact 丢失重要信息,死撑着不压缩,直到上下文爆满报错。

正确做法:compact 不是删除------是压缩。关键决策、已修改的文件、当前任务状态都会被保留在摘要中。用完 70% 上下文就应该考虑 compact。

坑 4:忘记恢复会话,重复劳动

症状 :昨天写了一半的功能,今天直接 claude 开了个新会话,AI 一问三不知,你又从头描述一遍需求。

正确做法 :进项目目录直接 claude --resume,恢复上次的会话继续干。养成肌肉记忆。


4. 核心工作流循环:四步法

Claude Code工作流抽象为一个迭代循环:

复制代码

4.1 循环的力度:大功能 vs 小改动

任务规模 循环方式 模式选择
大功能(跨 5+ 文件,新增模块) 完整的四步循环,每一步都认真走 探索(plan) → 规划(plan) → 编码(acceptEdits) → 提交
中等改动(改 2--5 个文件) 压缩循环,探索+规划合并 规划(plan) → 编码(acceptEdits) → 提交
小修小补(单文件、改一行) 直接编码 编码(acceptEdits) → 提交

4.2 循环中的回头箭

一个容易被忽视的点:循环不是单向的。 Plan 出来的方案在执行中暴露问题,你要有勇气回到 Plan 阶段重新设计。

你在 acceptEdits 下写新功能,写到一半突然觉得 AI 的方案可能有问题。不要硬着头皮让它继续写。立刻切到 plan 模式:「等一下,你先别写了,重新想想是不是有更优解。」AI 重新分析,给修正方案,审完再切回 acceptEdits。

这种随时叫停、调整方向、重新出发的能力,在传统编程中需要重构、回滚、重写的成本,在 Claude Code 中变成了两次快捷键切换。


5. 模式切换的实战决策树

复制代码
开始一个任务
    │
    ├─ 这是我熟悉的项目吗?
    │       │
    │       ├─ 是 ──▶ 改动影响范围大吗?(3+ 文件 / 新模块)
    │       │              │
    │       │              ├─ 是 ──▶ 切 plan 模式,先看方案
    │       │              │              │
    │       │              │              ├─ 方案 OK ──▶ 切 acceptEdits,执行
    │       │              │              │
    │       │              │              └─ 方案有问题 ──▶ 继续在 plan 下讨论
    │       │              │
    │       │              └─ 否(小改动)──▶ 直接用 acceptEdits
    │       │
    │       └─ 否 ──▶ 用 default 或 plan 模式先探索项目
    │                      │
    │                      └─ 熟悉之后再切入 acceptEdits
    │
    ├─ 这是一个长时间自动化任务吗?(批量重构 / 跑全量测试)
    │       │
    │       ├─ 是 ──▶ 切 auto 模式,前提是 settings.json 信任域已配好
    │       │
    │       └─ 否 ──▶ 回到上面的判断
    │
    └─ 这是 CI/CD 流水线吗?
            │
            ├─ 是 ──▶ dontAsk,配置好白名单
            │
            └─ 否 ──▶ 回到上面的判断

6. Permissions 白名单:渐进式驯养

橙皮书在这一章还讨论了 permissions 配置的实操理念。核心观点就一个:

不要一上来就搞完美配置。

作者的建议是渐进式收敛

复制代码
第一周:用 acceptEdits,每遇到一个需要确认的命令,
        如果你觉得"这个操作以后都不用问我",
        就加到 settings.json 的白名单里。
​
第二周:白名单已经覆盖了 90% 的日常操作,
        确认框变得很少,体验丝般顺滑。
​
第三周:白名单基本稳定,你几乎感知不到权限确认的存在。

这种做法的好处:

  • 不需要预判:你不用在第一天就去猜"哪些命令我未来会频繁用到"

  • 低风险:每个加入白名单的命令都是经过你实际检验的

  • 自然收敛:用得越久,白名单越贴合你的实际工作流

作者把这种渐进式驯养形容为:「跟养猫似的------开始它啥都不懂,每个操作都来蹭你;你慢慢教它,后来它就懂你的节奏了,安静高效地自己干活。」


7. 常见反模式与纠正

橙皮书第四章穿插了几条「别这样用」的提醒,我整理如下:

反模式 1:永远只用 default 模式

症状:所有操作都弹确认框,点确认点到麻木,最后是「无脑点确认」------安全形同虚设。

纠正:信任的项目切 acceptEdits,让确认框回归它的本意------只有真正需要你关注的操作才弹出来。

反模式 2:一上来就开 auto 模式写新功能

症状:AI 改了一大堆文件,你中途没有介入,最后发现方向跑偏了。

纠正 :新功能先 plan,定了方案再切 acceptEdits 或 auto。auto 模式适合你已经知道要做什么、只是量大重复 的场景(比如「把项目里所有 var 改成 const」)。

反模式 3:plan 模式审完方案,不切模式就让 AI 动手

症状:在 plan 模式下说「OK 开始写吧」,AI 不动------然后你觉得 AI 不行。

纠正:plan 模式在工具调用层拦截了所有写操作。审完方案后,必须手动切到 acceptEdits(或 auto),AI 才能动手。这不是 AI 的问题,是你忘了从「地图室」走到「工地」。

反模式 4:白名单一上来就写满

症状 :第一天就把 npm *git *rm * 全加到白名单。

纠正:你给了 AI 一个「随意删库跑路」的权限集。渐进式配置,一步一步来。

反模式 5:一个会话死扛到底

症状:从项目初始化到上线,全程不换会话。上下文臃肿,AI 回复越来越慢,早期关键决策被淹没在历史中。

纠正:大功能拆分会话,关键信息写入 Memory 或 CLAUDE.md。一个会话聚焦一件事,上下文清爽,AI 表现更好。


8. 核心 Takeaways

如果整篇文章只能记住几句话,那么浓缩精华是:

  1. 默认用 acceptEdits ------ 编辑自动、命令确认,效率与安全的黄金平衡点。

  2. 大改动先 plan ------ 让 AI 先画地图,你确认方向,再切模式让它跑。

  3. 白名单渐进式养 ------ 别一上来就搞完美配置,边用边加,一周后自然收敛。

  4. 会话是资产,主动管理 ------ 用 --resume 断点续传,用 /compact 瘦身,用 Memory 做跨会话持久化。

  5. 一个会话一件事 ------ 多任务并行用多会话 + Git 分支隔离,别让 AI 在同一个会话里同时处理三个需求。

记住这五条,再加上肌肉记忆 Shift + Tab 在模式间横跳,以及每次结束时问自己一句「刚才有什么值得写进 Memory 的?」,你的 Claude Code 使用效率会有质的飞跃。

相关推荐
winlife_1 小时前
让 AI 写敌人状态机,并用脚本化场景验证状态转换正确:funplay-unity-mcp 实战
人工智能·unity·游戏引擎·ai编程·状态机·mcp
糯米导航1 小时前
飙算工具箱|AI编程工具赋能多模态 AIGC 架构实战
架构·aigc·ai编程
yumgpkpm1 小时前
华为HUAWEI昇腾910B下千问Qwen3.6-27B在的推理加速实践
sql·华为·langchain·json·ai编程·ai写作·gpu算力
AI原来如此2 小时前
工具篇 Writesonic:AI写作自带事实核查
ai·大模型·ai编程·ai写作
wangruofeng2 小时前
Build 2026 看完,我觉得微软这次是真急了
ai编程
木雷坞2 小时前
Open WebUI 连不上 Ollama:Docker Compose 排查记录
人工智能·docker·ai编程
JieE2122 小时前
AIGC 工程化入门:从零搭建你的第一个 AI 应用 -- 以 DeepSeek API 为例,带你走通大模型应用开发的完整链路
node.js·aigc·ai编程
Coder小相2 小时前
LangChain 1.0 第七篇 - Pydantic结构化输出
人工智能·agent·ai编程
沉默王二2 小时前
比 DeepSeek 便宜 24 倍,SkyClaw v1.0 值得用吗?
agent·ai编程