它背后怎么运转的
它背后怎么运转的
上一篇说了 Claude Code 是什么,这篇来说说它到底怎么工作的。知道它的运转逻辑,你才能更好地驾驭它,而不是瞎碰运气。
从你输入一句话开始
你在终端里输入了一句话,比如:
帮我找出 src/api.js 里的内存泄漏接下来发生了什么?表面上看是 AI 给了你答案,背后其实是一套完整的循环在跑。
核心循环:感知 → 决策 → 行动
Claude Code 的运转本质上是一个 Agent 循环,用大白话描述就是:
你说话
↓
它想一想(调用大模型推理)
↓
它决定用什么工具做什么事
↓
工具执行,拿到结果
↓
它看看结果,再想一想
↓
重复,直到任务完成 / 需要你确认这个循环可以跑很多轮。你说一句话,它可能要转好几圈才给你最终答案。这不是卡顿,是它在认真干活。
它手里有哪些工具?
Claude Code 能"动手",是因为它配备了一套工具(Tools)。模型决定要干什么,工具去真正执行。
| 工具类型 | 能做什么 |
|---|---|
| 文件读取 | 读取项目中任意文件的内容 |
| 文件写入 | 新建、修改、删除文件 |
| 命令执行 | 在终端运行 shell 命令 |
| 搜索 | 在文件里搜索关键词、符号 |
| 网络请求 | 访问 URL,抓取内容(可选) |
| 子 Agent | 创建子任务,并行处理更复杂的工作 |
它在每一步都会决定:用哪个工具、传什么参数、拿到结果后怎么继续。这个决策是大模型做的,不是写死的规则。
这里面有些工具是"低风险"的(读文件、搜索),有些是"高风险"的(写文件、执行命令)。Claude Code 对它们的处理策略不一样,后面的权限那节会讲清楚。
请求怎么从终端流转到 AI?
Claude Code 本身是一个客户端程序,跑在你电脑上。但它的"大脑"是远程的 Anthropic API。
你的终端
│
│ 发送请求(对话历史 + 工具列表 + 当前上下文)
▼
Anthropic API(Claude Sonnet / Opus)
│
│ 返回决策(调用哪个工具 / 直接回答)
▼
Claude Code 客户端执行工具 / 显示回答每一轮循环,都要往返一次 API。这也是为什么任务越复杂,消耗的 Token 越多——每轮都在传递上下文。
上下文:它怎么"记住"你的项目
这是理解 Claude Code 的关键点之一。
它并不是真的把项目装进了内存一直放着。每次调用 API,它会把当前会话的对话历史 + 读取过的文件内容 + 工具执行结果打包发送过去,让大模型有足够的信息做判断。
这个"打包"就是所谓的 上下文窗口(Context Window)。
┌─────────────────────────────┐
│ Context Window │
│ ┌─────────────────────┐ │
│ │ 你说的话(历史) │ │
│ ├─────────────────────┤ │
│ │ 它读过的文件内容 │ │
│ ├─────────────────────┤ │
│ │ 工具执行结果 │ │
│ ├─────────────────────┤ │
│ │ CLAUDE.md 规则 │ │
│ └─────────────────────┘ │
└─────────────────────────────┘窗口是有上限的,装满了就会出问题。典型表现:你在会话前段叮嘱过"不要动 config.js",聊了一两个小时后它忘了,直接改了这个文件;或者它开始给出和前面矛盾的答案,像是失忆了一样。这不是 bug,是上下文撑满了。后面的篇章会专门讲怎么管理这个窗口。
它怎么知道该读哪些文件?
它不会一开始就把整个项目全部读进来,那样 Token 消耗会爆炸。
它的策略是按需读取:
- 先看你说的话,判断任务是什么
- 根据任务推断需要看哪些文件(比如你提到了
api.js,它就去读这个文件) - 读了之后如果发现还需要其他文件,继续读
- 直到有足够信息可以完成任务
这个过程有点像一个工程师接手新项目时的做法:不会把整个代码库从头到尾看一遍,而是从你说的问题出发,顺藤摸瓜。
权限:它能做什么,不能做什么
Claude Code 执行命令是在你的机器上真实运行的,所以权限控制很重要。
默认情况下:
- 读文件:自动执行,不会问你
- 写文件:默认会问你确认
- 执行命令:默认会问你确认
- 网络请求:取决于配置
你可以通过配置调整这些策略,比如在信任的项目里开启"自动执行",减少确认弹出。第四篇会详细讲权限管理。
小结
知道了这套运转逻辑,遇到问题时你就能对号入座:
| 你遇到的现象 | 背后的原因 |
|---|---|
| 任务越复杂,等待时间越长 | Agent 循环轮次多,每轮都要往返 API |
| 会话越长,它越容易答非所问 | 上下文窗口逐渐装满,早期信息被挤出 |
| 它"忘记"了你之前说的限制 | 对话历史超出窗口上限,相关内容已不在上下文里 |
| 它找不到某个文件或走错了目录 | 按需读取策略下,它没有读到那个文件,需要你手动指引 |
| 写文件/执行命令前总弹确认框 | 高风险工具的默认权限策略,可以通过配置调整 |
这些问题,后面会逐一拆解。
