跳转到内容

Claude Code 工作原理

Claude Code 是一个运行在终端中的智能 Agent 助手。虽然它擅长编码,但它可以帮助你完成任何通过命令行能做的事情:编写文档、运行构建、搜索文件、研究主题等等。

本指南涵盖核心架构、内置能力和高效使用技巧。


当你给 Claude 一个任务时,它会经历三个阶段:收集上下文执行操作验证结果。这三个阶段相互融合,Claude 在整个过程中使用工具 — 搜索文件理解代码、编辑进行修改、运行测试检查结果。

┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 收集上下文 │ ──→ │ 执行操作 │ ──→ │ 验证结果 │
│ 搜索、阅读 │ │ 编辑、运行 │ │ 测试、检查 │
└─────────────┘ └─────────────┘ └─────────────┘
↑ │
└────────── 根据结果调整 ──────────────────┘

循环根据任务自适应:

  • 代码问题 — 可能只需要上下文收集
  • Bug 修复 — 反复循环三个阶段
  • 重构 — 可能涉及大量验证

Agent 循环由两部分驱动:

组件作用
模型理解代码并推理任务
工具执行实际操作(读文件、编辑、运行命令等)

Claude Code 充当围绕 Claude 的 Agent 框架:提供工具、上下文管理和执行环境,将语言模型转变为强大的编码 Agent。


Claude Code 使用 Claude 模型来理解代码并推理任务。Claude 可以阅读任何语言的代码,理解组件间的关联,找出需要更改的内容。对于复杂任务,它会将工作分解为步骤,逐步执行并根据学到的内容调整。

多种模型提供不同的权衡:

模型特点适用场景
Sonnet平衡速度和能力大多数编码任务
Opus最强推理能力复杂架构决策
Haiku最快速度简单快速任务

切换模型:

  • 会话中:/model 命令
  • 启动时:claude --model <name>

工具让 Claude Code 具备 Agent 能力。没有工具,Claude 只能输出文本;有了工具,Claude 可以行动:读取代码、编辑文件、运行命令、搜索网络、与外部服务交互。

类别Claude 能做什么
文件操作读取文件、编辑代码、创建新文件、重命名和重组
搜索按模式查找文件、用正则搜索内容、探索代码库
执行运行 shell 命令、启动服务器、运行测试、使用 git
网络搜索网络、获取文档、查询错误信息
代码智能查看编辑后的类型错误和警告、跳转定义、查找引用

当你说「修复失败的测试」时,Claude 可能会:

  1. 运行测试套件查看哪些失败
  2. 阅读错误输出
  3. 搜索相关源文件
  4. 阅读文件理解代码
  5. 编辑文件修复问题
  6. 再次运行测试验证

每次工具使用都给 Claude 提供新信息,指导下一步行动。这就是 Agent 循环的实际运作。

内置工具是基础。你还可以通过以下方式扩展:

扩展方式说明
Skills扩展 Claude 的知识和工作流
MCP连接外部服务
Hooks自动化工作流
子 Agent将任务委派给独立 Agent

当你在目录中运行 claude 时,Claude Code 获得以下访问权限:

你的项目

目录和子目录中的文件,以及经你许可的其他位置文件。

你的终端

任何你能运行的命令:构建工具、git、包管理器、系统工具、脚本。

Git 状态

当前分支、未提交的更改和最近的提交历史。

CLAUDE.md

存储项目特定指令、约定和上下文的 Markdown 文件。

还包括:

  • 自动记忆 — Claude 工作时自动保存的学习内容(MEMORY.md 前 200 行在会话开始时加载)
  • 配置的扩展 — MCP 服务器、Skills、子 Agent、Chrome 浏览器交互

Agent 循环、工具和能力在所有使用 Claude Code 的地方都是相同的。不同的是代码在哪里执行以及你如何与之交互

环境代码运行位置适用场景
本地你的机器默认。完全访问文件、工具和环境
云端Anthropic 管理的 VM卸载任务,处理本地没有的仓库
Remote Control你的机器(浏览器控制)使用 Web UI 同时保持本地执行

可以通过以下方式访问 Claude Code:

  • 终端(命令行)
  • 桌面应用
  • IDE 扩展(VS Code、JetBrains)
  • claude.ai/code
  • Remote Control
  • Slack
  • CI/CD 管道

界面决定了你如何看到和与 Claude 交互,但底层的 Agent 循环完全相同。


Claude Code 在你工作时本地保存对话。每条消息、工具使用和结果都被存储,支持回退恢复分叉会话。在 Claude 修改代码前,它还会快照受影响的文件以便回退。

每个 Claude Code 对话是绑定到当前目录的会话。恢复时,你只能看到该目录的会话。

  • 切换分支时,Claude 看到新分支的文件,但对话历史保持不变
  • 使用 git worktrees 可以为不同分支创建独立目录,实现并行 Claude 会话
Terminal window
# 恢复上次会话
claude --continue
# 选择恢复特定会话
claude --resume
# 分叉会话(创建新会话 ID,保留对话历史)
claude --continue --fork-session

Claude 的上下文窗口包含:对话历史、文件内容、命令输出、CLAUDE.md、已加载的 Skills 和系统指令。随着工作进行,上下文不断填充。

Claude Code 自动管理上下文:

  1. 先清除较旧的工具输出
  2. 必要时压缩对话
  3. 保留你的请求和关键代码片段
  4. 详细的早期指令可能丢失

关键建议:将持久规则放在 CLAUDE.md 中,而不是依赖对话历史。

命令说明
/context查看什么在占用上下文空间
/compact手动压缩上下文
/compact focus on API changes带焦点的压缩
/mcp检查每个 MCP 服务器的上下文成本
  • Skills 按需加载 — Claude 在会话开始时看到 Skill 描述,但完整内容仅在使用时加载。设置 disable-model-invocation: true 可将描述也排除
  • 子 Agent 获得独立上下文 — 完全独立于主对话,不会膨胀你的上下文。完成后返回摘要。这就是子 Agent 在长会话中有用的原因

Claude 有两个安全机制:检查点(撤销文件更改)和权限(控制 Claude 可以做什么)。

每次文件编辑都可撤销。在 Claude 编辑任何文件之前,它会快照当前内容。

  • Esc 两次 回退到之前的状态
  • 或者要求 Claude 撤销

Shift+Tab 循环切换权限模式:

模式说明
默认Claude 在文件编辑和 shell 命令前询问
自动接受编辑Claude 自动编辑文件,仍然询问命令
计划模式Claude 只使用只读工具,创建你可以批准的计划

你还可以在 .claude/settings.json 中允许特定命令(如 npm testgit status),设置可以从组织级策略到个人偏好层层覆盖。


Claude Code 可以教你如何使用它。问类似这样的问题:

  • 「如何设置 hooks?」
  • 「CLAUDE.md 的最佳结构是什么?」

内置命令也能引导你:

命令说明
/init引导你为项目创建 CLAUDE.md
/agents帮你配置自定义子 Agent
/doctor诊断安装的常见问题

Claude Code 是对话式的。你不需要完美的提示词,先说你想要什么,然后逐步改进:

> 修复登录 bug
[Claude 调查,尝试修复]
> 不太对。问题在会话处理部分。
[Claude 调整方案]

第一次尝试不对时,不需要重头来过,迭代即可。

如果 Claude 走了错误方向,直接输入你的纠正并按 Enter。Claude 会停止当前操作,根据你的输入调整方案。不需要等它完成,也不需要重新开始。

初始提示越精确,需要的纠正就越少。引用具体文件、提及约束、指向示例模式:

> checkout 流程对过期信用卡用户出错了。
> 检查 src/payments/ 中的问题,特别是 token 刷新。
> 先写一个失败的测试,然后修复它。

模糊的提示词(如「修复登录 bug」)可以工作,但你需要花更多时间引导。

当 Claude 能检查自己的工作时表现更好。包含测试用例、贴截图、或定义期望输出:

> 实现 validateEmail。
> 测试用例: 'user@example.com' → true,
> 'invalid' → false, 'user@.com' → false。
> 完成后运行测试。

对于复杂问题,将研究与编码分开。使用计划模式(Shift+Tab 两次)先分析代码库:

> 阅读 src/auth/ 并理解我们如何处理会话。
> 然后为添加 OAuth 支持创建一个计划。

审查计划、通过对话完善,然后让 Claude 实现。这种两阶段方法比直接编码效果更好。

把 Claude 当作能干的同事来委派任务。给出上下文和方向,然后信任 Claude 处理细节:

> checkout 流程对过期信用卡用户出错了。
> 相关代码在 src/payments/。你能调查并修复吗?

你不需要指定读哪些文件或运行什么命令。Claude 会自己搞定。