03 · Claude Code 如何工作
📚 系列导航:上一篇 02 · 安装与使用 带你把 Claude Code 装好、跑起来。这一篇拆开盖子,看清它到底怎么干活——为什么它能自己读代码、改文件、跑命令,而不只是聊天。
第一次用 Claude Code,常会撞见这么一段对话——
你:「这个测试为啥挂了?」 Claude:「我先跑一下测试套件看看。」(开始跑命令) Claude:「报错说
validateEmail返回了 undefined,我去看看这个函数。」(读了文件) Claude:「找到了,这里少了一个 return。我改一下,然后重新跑测试确认。」(改完,又跑了一次) Claude:「测试过了。」
看到这儿容易有点懵:只问了一句话,它怎么自己跑命令、自己读文件、自己改、还自己验证了?
说白了,这就是 Claude Code 和普通 AI 聊天框最大的区别。聊天框只会「回你一段文字」,而 Claude Code 会自己动手做事。这背后是一套固定的工作机制,今天讲透。
看完这一篇,你会拿到:
- 一张图看懂 Claude Code 的「代理循环」——它每做一件事都在重复的三个动作
- 搞清楚它手里那 5 类「工具」分别能干啥,以及它怎么决定用哪个
- 知道它到底能看到你电脑上的什么、看不到什么(关系到安全)
- 一个能照着跑的小实验,亲眼看它走完一整个循环
01 代理循环:想 → 做 → 看
先说结论:Claude Code 干任何活,都在重复三个动作——收集上下文、采取行动、验证结果。官方把这套机制叫「代理循环(agentic loop)」。
换个更土的说法:想 → 做 → 看。
- 想(收集上下文):先搞清楚状况——读相关文件、看报错、查 git 状态
- 做(采取行动):动手——改代码、跑命令、新建文件
- 看(验证结果):检查刚才做的对不对——跑测试、看输出,不对就再来一轮
类比:一个靠谱的修车师傅。 你把车开进店说「方向盘抖」,师傅不会立刻拆。他先看一圈、试开两步(想),再动扳手(做),修完开一段确认不抖了(看)。还抖就回第一步重查。Claude Code 就是这么个师傅,只不过修的是你的代码。
回到开头那段对话,对照一下你就懂了:
| Claude 说的话 | 对应循环里的哪一步 |
|---|---|
| 「我先跑一下测试套件」 | 想(收集上下文) |
| 「报错说 undefined,我去看看这个函数」 | 想(继续收集) |
| 「这里少了 return,我改一下」 | 做(采取行动) |
| 「然后重新跑测试确认」 | 看(验证结果) |
| 「测试过了」 | 循环结束 |
它把这三步串成一条链,一步的结果决定下一步干什么。修个 bug 可能循环好几轮,问个「这段代码啥意思」可能只要「想」这一步就够。循环几轮,由任务复杂度决定,不是写死的。

上面这张图就是 Claude Code 每次干活转的圈:从「想」到「做」到「看」,不满意就从「看」拐回「想」再来一轮——你随时能按 Esc 把它叫停。
这里有个关键点,很多人没意识到:你也是这个循环的一部分。它走偏了,你随时能插话纠正——这点下一节细说。
驱动这个循环的是两样东西:模型负责「想」,工具负责「做」和「看」。
模型就是 Claude 的大脑——Sonnet 应付日常编程够用,Opus 推理更强、适合复杂架构。会话里输入 /model 随时切,或者启动时 claude --model sonnet。
💡 一句话总结:Claude Code 不是「回你一段话」,而是「想→做→看」转圈直到把事办完,这才是它和聊天框的本质区别。
02 你也在循环里:随时能打断
上一节结尾说了:你也是这个循环的一部分。展开聊聊。普通 AI 聊天是「你问一句、它答一段、回合结束」。Claude Code 不一样——它在循环里自己跑的时候,你不用干等着,随时能插手。
比如让它重构一个模块,看它跑偏了、正要大改一堆文件,直接按 Esc,它立刻停下,正在跑的命令也取消了。再补一句「别动那个文件,只改这个函数」,它就顺着新指示继续。
两种打断方式,区别要分清:
| 操作 | 效果 | 什么时候用 |
|---|---|---|
按 Esc | 立刻停,正在跑的工具调用被取消,等你下一条指令 | 它跑偏了、要做的事不对,赶紧拦住 |
打字 + Enter | 不打断当前操作,发一句补充,它做完手头的就读 | 只是想补个上下文、提个醒,不急着叫停 |
你不需要憋一个「完美的提示」。先说个大概,看它做,不对再纠正——这是对话,不是一次性命令。
这话是官方文档原话,特别值得记住。刚上手时总想「一句话把需求说全」,憋半天。其实没必要:丢个大方向,它做错了再喊停,迭代比憋大招快得多。
💡 一句话总结:它自主干活,但永远听你指挥——
Esc急停、打字补充,方向盘随时在你手里。
03 工具:它能真正动手的原因
上一节说模型负责「想」。那「做」和「看」靠什么?工具。
这是 Claude Code 最该记住的一句话:没有工具,Claude 只能回你文字;有了工具,它能真的读你的代码、改你的文件、跑你的命令。
类比:一个戴了智能手环的助理。 光会说话的助理只能出主意;给他配上能开门、打字、查资料的设备,他才能真正替你把事办了。工具就是 Claude Code 的「手」。
官方把内置工具分成 5 大类。我用大白话给你列一遍——
| 工具类别 | 它能干什么 | 对应你平时的什么操作 |
|---|---|---|
| 文件操作 | 读文件、改代码、新建文件、重命名、重组 | 你在编辑器里打开、敲字、保存 |
| 搜索 | 按文件名找文件、用正则在内容里搜、翻整个代码库 | 你按 Ctrl+F 或 grep |
| 执行 | 跑 shell 命令、起服务器、跑测试、用 git | 你在终端里敲命令回车 |
| 网络 | 搜网页、抓文档、查报错信息 | 你打开浏览器搜一段错误 |
| 代码智能 | 看类型错误和警告、跳转定义、查引用 | IDE 的「转到定义」「找引用」 |
⚠️ 注意:第 5 类「代码智能」需要额外装代码智能插件才有,前 4 类是开箱即用的。以官方文档为准。
那它怎么决定用哪个工具?不是你指定的,是模型自己根据你的话和当前进展挑。
举个官方的例子,你说一句「修复失败的测试」,它内部大概会这么走:
- 跑测试套件,看哪个挂了 —— 用了 执行
- 读报错输出 —— 执行
- 搜相关源文件 —— 搜索
- 读这些文件理解逻辑 —— 文件操作
- 改文件修 bug —— 文件操作
- 再跑一次测试验证 —— 执行
看出来没?这 6 步就是「想→做→看」循环在工具层面的展开。每用一次工具,就拿回一点新信息,喂给模型决定下一步——循环就是这么转起来的。
有个很典型的场景:让它给一个没文档的老项目「理一下目录结构」。它不用你喂任何文件,自己 ls、自己 grep 关键字、读了七八个文件,最后画出一张结构图。全程没指定任何一个文件——这就是官方说的「委派,不要指示」:给方向,细节它自己抠。
至于 Skill、MCP、Hook、Subagent 这些——它们是架在这 5 类内置工具之上的扩展层,能让 Claude 知道更多、连更多外部服务。本系列后面一篇篇讲,先知道有这么回事就行。
💡 一句话总结:工具是 Claude Code 的「手」,5 类各管一摊;用哪个、用几次,它自己决定,你只管说目标。
04 它能看到你电脑上的什么
这一节关系到安全,得说清楚。很多人第一次用会犯嘀咕:它是不是把我整个硬盘都翻了一遍传走了? 不是。
先记一句话:Claude Code 的「视野」基本等于你在那个目录下的终端能摸到的东西。你在哪个文件夹敲的 claude,它的活动范围就以那儿为中心。
按官方文档,当你在某个目录运行 claude,它能访问:
- 你的项目:当前目录和子目录里的文件(其他地方的文件需要你给权限才碰)
- 你的终端:你能跑的任何命令——构建工具、git、包管理器、脚本。命令行能干的,它就能干
- 你的 git 状态:当前分支、未提交的改动、最近的提交历史
- 你的
CLAUDE.md:你写的项目专属说明书,每次会话它都会读(这文件后面有专篇讲) - 你配置的扩展:MCP、Skill、Subagent 这些
正因为它能看到整个项目,而不只是你当前打开的那一个文件,所以它能跨文件协调——你说「修登录 bug」,它能搜出相关的好几个文件、一起改、再跑测试验证。这和只看当前文件的内联补全插件,根本不是一回事。
那安全怎么保证?两道闸——
第一道:检查点(checkpoint),相当于游戏存档。 它改任何文件之前,会先给当前内容拍个快照。改坏了,在输入框空着时连按两次 Esc(或输入 /rewind),会弹出一个「回溯菜单」,选「恢复代码」就把文件退回改之前;也可以直接说「撤销刚才的修改」。
检查点只管 Claude 用编辑工具改的文件——bash 命令改的、以及外部副作用都不在内。 数据库、API、线上部署这类「泼出去收不回」的操作没法存档——所以 Claude 在跑这类有外部影响的命令前会先问你。
这里有个常踩的坑:有时它改了五六个文件,你看完觉得方向全错。搁以前得手动一个个 git checkout 回滚,现在按两下 Esc、在弹出的菜单里选「恢复代码」——五个文件齐刷刷回到改之前,干净利落。有了这一手,放手让它改代码就没那么怵了。
第二道:权限模式,相当于实习生动手前问不问你。 按 Shift+Tab 循环切换:
| 权限模式 | Claude 的行为 |
|---|---|
| 默认 | 改文件、跑命令前都问你 |
| 自动接受编辑 | 改文件和常见文件命令(如 mkdir、mv)不问,其他命令仍问 |
| Plan Mode(计划模式) | 可读文件和运行探索性命令,但不编辑源代码;先给你一份计划,你批准了才动手 |
| 自动模式 | 用后台安全检查评估所有操作(实验性,目前是研究预览,可能变化) |
最值得养成的习惯是用 Plan Mode:复杂任务先按两下 Shift+Tab 进去,让它「只分析、出方案、别动手」,方案过一遍、改改,确认了再放它执行。这能躲过好几次「方向错了改一半」的返工——先看图纸再施工,比边干边改省事太多。
嫌每次都问烦?可以在项目的 .claude/settings.json 里把信任的命令(比如 npm test、git status)加白名单,以后不问。配置细节后面专篇讲。
💡 一句话总结:它的视野≈你在那个目录的终端权限;检查点管「改坏了能撤」,权限模式管「动手前问不问」——两道闸下,放手用也踏实。
05 动手:亲眼看它走一个完整循环
光看原理记不住,跑一个最小实验,亲眼看它「想→做→看」转一圈。这个实验不依赖任何现成项目,新建个空文件夹就能做。
第一步:建个空目录,进去启动 Claude Code。
在终端里跑(Mac / Linux;Windows 用 PowerShell 把 mkdir -p 换成 mkdir 即可):
bash
mkdir -p ~/cc-demo && cd ~/cc-demo
claude第二步:进去之后,先切到计划模式看它怎么「想」。
按两下 Shift+Tab,界面底部会提示进入了 Plan Mode(计划模式)。然后丢这么一句给它:
text
帮我写一个 Python 脚本 add.py,里面一个函数 add(a, b) 返回两数之和,
再写几个测试用例验证它,最后跑一遍测试。先给我计划,别直接动手。预期看到:它不会立刻建文件,而是先回你一份计划,大致是——
text
计划:
1. 创建 add.py,实现 add(a, b)
2. 创建测试(用 assert 或 pytest)
3. 运行测试,确认全部通过
需要我开始吗?这就是「想」——它在动手前先理清了思路。注意它停下来等你批准了,这是计划模式的特征。
第三步:批准,看它「做」+「看」。
回复「可以,开始吧」。接着你会看到它依次:
- 建文件(文件操作工具)——可能先弹一下权限确认,你按同意
- 写完后跑测试(执行工具),比如执行
python add.py或pytest - 把测试输出贴给你,预期是类似:
text
测试通过:add(2, 3) == 5 ✓ add(-1, 1) == 0 ✓ add(0, 0) == 0 ✓到这儿,你就完整看了一遍循环:想(出计划)→ 做(建文件、写代码)→ 看(跑测试报告结果)。
第四步(可选):故意制造一次「再循环」。
跟它说:「把 add 改成减法,但函数名别变,然后重新跑测试。」
你会看到它改完代码、再跑测试——如果测试断言还是加法,测试会挂,它会自己发现挂了、回头再改。这就是循环的精髓:看到不对,自动再来一轮。
新手都值得跑一遍这个实验。比起读十遍「代理循环」四个字,亲眼看它停下来出计划、再动手、再验证,理解得快得多。
💡 一句话总结:跑一遍这个最小实验,你会亲眼看到「想→做→看」转圈——尤其是它会自己发现错、自动再来一轮那一下。
06 小结
这一篇就讲清了一件事:Claude Code 凭什么能自己干活。
回顾一下核心:
| 要点 | 一句话记住 |
|---|---|
| 代理循环 | 想→做→看,转圈直到办完;这是它和聊天框的本质区别 |
| 模型 + 工具 | 模型负责想,工具负责做和看 |
| 5 类工具 | 文件 / 搜索 / 执行 / 网络 / 代码智能,用哪个它自己挑 |
| 能看到什么 | ≈你在那个目录的终端权限,能跨文件协调 |
| 两道安全闸 | 检查点(改坏能撤)+ 权限模式(动手前问不问) |
你现在应该能看懂 Claude Code 跑任务时屏幕上在发生什么——它每读一个文件、每跑一条命令,都是循环里的一步;也知道了怎么用 Esc 急停、用计划模式先看方案、靠检查点放心让它改。
理解了这套机制,你用起来的心态会完全不同:它不是许愿池,而是个会自己想、动手、检查的搭档——你的活儿是给方向、定验收标准、跑偏时拉一把。
下一篇 04 · API 配置:Claude Code 装好了、原理也懂了,但它得连上模型才能真正干活。下一篇带你把 API 配通——这一步搞定,前面学的循环和工具才能跑起来。