了解 Claude Code 的底层架构,才能更好地使用它。本文从 Agentic Loop 机制、内置工具、会话管理到 Context 优化,系统解析 Claude Code 的工作方式。
Agentic Loop:三阶段循环
当你给 Claude 布置任务时,它通过三个阶段推进工作:收集上下文 → 采取行动 → 验证结果。这三个阶段不是严格顺序的,而是相互交织、不断循环。
你的提示
↓
收集上下文(读取文件、搜索代码库、了解当前状态)
↓
采取行动(编辑文件、运行命令、调用工具)
↓
验证结果(运行测试、检查错误、对比输出)
↓
如果未完成,循环继续……
↓
任务完成
循环会自适应任务类型:
- 关于代码库的问题:只需收集上下文
- 修复 Bug:完整循环多轮
- 大规模重构:大量验证步骤
你是循环的一部分:可以随时中断、纠正方向、提供更多上下文。Claude 自主工作,但始终响应你的输入。
Agentic Loop 由两个组件驱动:推理的模型(Claude)和执行动作的工具。Claude Code 是「Agentic Harness」——提供工具、上下文管理和执行环境,将语言模型转变为有能力的编码助手。
五类内置工具
没有工具,Claude 只能输出文字。有了工具,Claude 才能「行动」。
| 工具类别 | Claude 可以做什么 |
|---|---|
| 文件操作 | 读取文件、编辑代码、创建新文件、重命名和重组 |
| 搜索 | 按模式查找文件、用正则搜索内容、探索代码库 |
| 执行 | 运行 Shell 命令、启动服务器、运行测试、使用 git |
| Web | 搜索互联网、获取文档、查找错误信息 |
| 代码智能 | 查看编辑后的类型错误和警告、跳转到定义、查找引用(需安装代码智能插件) |
工具链示例(「修复失败的测试」):
- 运行测试套件,查看失败项
- 读取错误输出
- 搜索相关源文件
- 读取文件理解代码
- 编辑文件修复问题
- 再次运行测试验证
每次工具调用给 Claude 新信息,指导下一步行动——这就是 Agentic Loop 的实际运作。
扩展内置工具:Skills(工作流知识)、MCP(外部服务连接)、Hooks(自动化工作流��、Subagents(任务委托)。
Claude Code 能访问什么
在目录中运行 claude 后,Claude Code 可以访问:
- 你的项目:目录和子目录中的文件(经允许还可访问其他位置的文件)
- 你的终端:任何你能运行的命令(构建工具、git、包管理器、系统工具、脚本)
- 你的 Git 状态:当前分支、未提交的变更、最近的提交历史
- CLAUDE.md:你存储的项目特定指令、惯例和上下文
- Auto Memory:Claude 自动保存的学习成果(每次会话加载 MEMORY.md 前 200 行)
- 你配置的扩展:MCP 服务器、Skills、Subagents、Claude in Chrome
这与只能看到当前文件的内联代码助手不同——Claude 能跨整个项目工作,协调多文件修改。
三种执行环境
| 环境 | 代码运行位置 | 使用场景 |
|---|---|---|
| 本地 | 你的机器 | 默认。完整访问文件、工具和环境 |
| 云端 | Anthropic 托管 VM | 卸载任务、处理本地没有的仓库 |
| Remote Control | 你的机器,通过浏览器控制 | 使用 Web UI 同时保留本地环境 |
会话管理
会话是独立的
每个新会话从空白 Context 窗口开始,不携带之前会话的对话历史。Claude 通过 Auto Memory 跨会话持久化学习成果,你通过 CLAUDE.md 提供持久指令。
恢复和分叉会话
# 恢复最近一次会话(继续原来的会话 ID)
claude --continue
# 按 ID 或名称恢复
claude --resume auth-refactor
# 从当前节点分叉(创建新会话 ID,不影响原会话)
claude --continue --fork-session⚠️ 多终端同一会话:在多个终端恢复同一会话,两个终端的消息会交织写入同一会话文件。内容不会损坏,但对话会混乱。并行工作时用
--fork-session给每个终端独立的会话。
跨分支工作
会话绑定到当前目录。切换分支后,Claude 看到新分支的文件,但对话历史保持不变。并行处理多分支使用 Git Worktree:
claude -w feature-auth # 在独立 worktree 中启动Context 窗口管理
Context 窗口包含:对话历史 + 文件内容 + 命令输出 + CLAUDE.md + 已加载的 Skills + 系统指令。
自动压缩机制
Claude Code 在接近上限时自动管理 Context:
- 首先清除旧的工具输出
- 必要时压缩对话摘要
- 你的请求和关键代码片段被保留
- 早期的详细指令可能丢失(→ 应放入 CLAUDE.md)
自定义压缩指令(在 CLAUDE.md 中):
# Compact instructions
When you are using compact, please focus on test output and code changes或在命令行:
/compact focus on the API changes
用 Skills 和 Subagents 管理 Context
- Skills:按需加载,全部内容仅在被调用时进入 Context(
disable-model-invocation: true可完全延迟加载) - Subagents:获得独立的全新 Context 窗口,其工作不会占用主对话的 Context,完成后只返回摘要
安全机制
Checkpoints(文件变更可回退)
每次文件编辑都可撤销。Claude 编辑任何文件之前会先快照当前内容。出错时:
Esc + Esc # 回退到历史节点
/rewind # 交互式选择回退点
Checkpoints 是会话本地的,独立于 git。只覆盖文件变更——影响远程系统的操作(数据库、API、部署)无法被 checkpoint,这也是为什么 Claude 在执行有外部副作用的命令前会先询问。
权限模式
Shift+Tab 在三种模式间循环:
| 模式 | 行为 |
|---|---|
| 默认 | 文件编辑和 Shell 命令前都会询问 |
| 自动接受编辑 | 文件编辑无需确认,命令仍需确认 |
| Plan Mode | 只使用只读工具,生成计划供你审批后再执行 |
高效使用技巧
给 Claude 验证手段:提供测试用例、截图或预期输出,让 Claude 能自我校验。
先探索,后实现:进入 Plan Mode,让 Claude 理解代码库后再制定计划,审批后再执行。
委托而非指令:描述你想要的结果,让 Claude 决定如何实现,而不是逐步指定每个操作。
及早中断纠偏:发现 Claude 方向跑偏时,按 Escape 立即停止,用 /rewind 回滚到之前的检查点。
增量验证:写一个文件、测试它,再继续。早期发现问题修复成本低。
原文:How Claude Code works | 来源:Anthropic 官方文档