工作原理
理解智能体循环、内置工具、会话与上下文窗口,以及检查点和权限这两道安全机制。
Claude Code 是一个运行在终端里的智能体助手。它最擅长写代码,但凡是你能在命令行里做的事,它都能帮上忙:写文档、跑构建、搜索文件、调研主题等。
智能体循环
你交给 Claude 一个任务后,它会经历三个阶段:收集上下文 → 采取行动 → 验证结果。这三个阶段互相交织,Claude 在整个过程中都在使用工具:搜索文件来理解代码,编辑文件来改动,运行测试来检查成果。
循环会随任务调整:只问一个代码库问题,可能只需要收集上下文;修 bug 会反复经过三个阶段;重构则可能包含大量验证。Claude 根据上一步学到的东西决定下一步,串联几十个动作并随时纠偏。
你也是循环的一部分:可以随时打断,补充上下文,或要求它换个思路。
循环由两部分驱动:负责推理的模型和负责行动的工具。Claude Code 是包在模型外面、提供工具并管理模型所见上下文的那一层,这一层被称为智能体 harness。
模型
Claude Code 使用 Claude 模型理解代码、推理任务。官方的说法是:Sonnet 能很好地处理大多数编码任务,Opus 在复杂架构决策上推理更强。会话中用 /model 切换,或用 claude --model <name> 启动。详见模型配置。
工具
没有工具,Claude 只能回复文字;有了工具,它才能读代码、改文件、跑命令、搜网页、调用外部服务。内置工具大致分五类:
| 类别 | Claude 能做什么 |
|---|---|
| 文件操作 | 读文件、编辑代码、新建文件、重命名和整理 |
| 搜索 | 按模式找文件、用正则搜内容、探索代码库 |
| 执行 | 运行 shell 命令、启动服务、跑测试、使用 git |
| 网络 | 搜索网页、获取文档、查报错信息 |
| 代码智能 | 编辑后看到类型错误和警告、跳转定义、查找引用(需要代码智能插件) |
比如你说「修复失败的测试」,Claude 可能会:跑测试 → 读报错 → 搜相关源码 → 读这些文件 → 改文件 → 再跑测试验证。完整的工具清单见工具参考。
在内置工具之上,可以用 Skill 补充知识、用 MCP 连接外部服务、用 Hooks 自动化流程、用子智能体分担任务,这些见扩展 Claude Code。
Claude 能访问什么
在某个目录运行 claude 后,它能访问:
- 你的项目:当前目录及子目录的文件,经你允许也可访问其他位置
- 你的终端:任何你能运行的命令——构建工具、git、包管理器、脚本
- 你的 git 状态:当前分支、未提交改动、近期提交历史
- 你的 CLAUDE.md:每次会话都会读取的项目指令;如果仓库里有给其他智能体用的 AGENTS.md,Claude 也可以读取
- 自动记忆:Claude 工作时自动保存的学习内容,每次会话开头加载 MEMORY.md 的前 200 行或 25KB(以先到者为准)
- 你配置的扩展:MCP 服务器、Skill、子智能体、Claude in Chrome
因为能看到整个项目,所以它可以跨文件工作——这和只看当前文件的内联代码助手不同。
运行环境与入口
| 运行环境 | 代码在哪执行 | 用途 |
|---|---|---|
| 本地 | 你的机器 | 默认,完整访问你的文件和工具 |
| 云端 | Anthropic 托管的虚拟机,或组织自建的自托管环境 | 卸载任务,处理本地没有的仓库 |
| Remote Control | 你的机器,从浏览器控制 | 用网页界面,但执行和文件仍在本地 |
入口(终端、桌面端、IDE 扩展、claude.ai/code、Slack、CI/CD)只决定你怎么看和怎么交互,底层的智能体循环完全一样。
会话
Claude Code 把对话保存在本地:每条消息、工具调用和结果都写入 ~/.claude/projects/ 下的 JSONL 文件,这使得回退、恢复和分叉会话成为可能。Claude 修改代码前还会给受影响文件做快照。
会话相互独立:每个新会话都有全新的上下文窗口,不带上次的对话历史。要跨会话保留内容,用自动记忆,或自己在 CLAUDE.md 里写持久指令。
- 会话绑定当前目录。切换分支后 Claude 能看到新分支的文件,但对话历史不变。想并行跑多个会话,用 git worktree 创建独立目录
claude --continue或claude --resume以同一个会话 ID 重新打开并追加消息;--fork-session或/branch把历史复制到新会话 ID,原会话不变
上下文窗口
上下文窗口装着对话历史、文件内容、命令输出、CLAUDE.md、自动记忆、已加载的 Skill 和系统指令。上下文会随工作逐渐变满:Claude 会自动压缩,但对话早期的指令可能丢失。要长期生效的规则写进 CLAUDE.md,用 /context 查看是什么在占用空间。
快满时 Claude Code 会先清理较早的工具输出,必要时再总结对话;你的请求和关键代码片段会保留。想控制压缩时保留什么,可以在 CLAUDE.md 里加「Compact Instructions」小节,或运行 /compact focus on the API changes 这样带重点的命令。
其他管理上下文的办法:
- Skill 按需加载:会话开始时 Claude 只看到 Skill 的描述,用到时才加载全文。只想手动调用的 Skill 可设置
disable-model-invocation: true - 子智能体使用独立的上下文窗口:它的工具调用不占用你的上下文,结束时只返回摘要
用检查点和权限保证安全
检查点:Claude 编辑文件前会快照当前内容,出问题时按两次 Esc 回退,或让 Claude 撤销。检查点独立于 git,恢复对话后依然可用,只覆盖文件改动;对数据库、API、部署这类远程系统的操作无法回退,需要靠权限模式和规则来控制。
权限模式:按 Shift+Tab 循环切换:
- Auto:分类器在后台审查多数动作,拦截有风险的,而不是每次问你
- Manual:改文件和跑 shell 命令前都询问
- Accept edits:不询问就编辑文件、运行
mkdir、mv这类常见文件系统命令,其他命令仍询问 - Plan:只探索并给出计划,不改源码
还可以在 .claude/settings.json 里预先放行 npm test、git status 这类可信命令。详见权限。
高效使用的几个习惯
- 向 Claude 求助:直接问「怎么设置 hooks」「CLAUDE.md 怎么组织」。
/init为项目生成初始 CLAUDE.md,/doctor诊断安装和配置问题 - 这是一场对话:不需要完美的提示词,先说想要什么再逐步修正,第一次不对不用重来
- 打断与引导:按
Esc立即停止;或直接输入修正并回车,消息会排队,Claude 完成当前工具调用后会读到并调整 - 委托而非口述:像对一位能干的同事那样给出背景和方向,不必指定读哪些文件、跑什么命令,例如「结账流程对过期银行卡用户坏了,相关代码在 src/payments/,帮我排查并修复」