How Claude Code works
- 分组:一、官方文档
- 原始链接:https://code.claude.com/docs/en/how-claude-code-works
- 抓取来源:http://code.claude.com/docs/en/how-claude-code-works
- 原始文件:/Users/yuanruiqin/Desktop/知识库/ClaudeCode-系统化知识库/01-官方文档/03-how-claude-code-works.md
- 精读版生成时间:2026-04-05 13:50:44
中文精读版(去噪)
代理循环由两个组件提供支持:推理的模型和行动的工具。 Claude Code 充当 Claude 周围的代理工具:它提供工具、上下文管理和执行环境,将语言模型转变为有能力的编码代理。
模型
Claude Code 使用 Claude 模型来理解您的代码并推理任务。 Claude 可以阅读任何语言的代码,了解组件如何连接,并找出需要更改哪些内容才能实现您的目标。对于复杂的任务,它将工作分解为步骤,执行它们,并根据所学到的知识进行调整。多种模型可用于不同的权衡。 Sonnet 可以很好地处理大多数编码任务。 Opus 为复杂的架构决策提供了更强有力的推理。在会话期间使用 /model 进行切换,或者从 claude --model <name> 开始。当本指南说“Claude 选择”或“Claude 决定”时,模型会进行推理。
工具
| 类别 | 克劳德能做什么 |
|---|---|
| 文件操作 | 读取文件、编辑代码、创建新文件、重命名和重新组织 |
| 执行 | 运行 shell 命令、启动服务器、运行测试、使用 git |
| 代码智能 | 编辑后查看类型错误和警告,跳转到定义,查找引用(需要代码智能插件) |
这些是主要能力。 Claude 还拥有用于生成子代理、向您提问以及其他编排任务的工具。有关完整列表,请参阅Claude 可用的工具。Claude 根据您的提示以及一路上学到的内容选择要使用的工具。当你说“修复失败的测试”时,克劳德可能会:
- 运行测试套件以查看失败的原因 2.读取错误输出 4.阅读这些文件以理解代码
- 编辑文件以解决问题
- 再次运行测试以验证
每次使用工具都会为克劳德提供新的信息,为下一步提供信息。这是行动中的代理循环。**扩展基本功能:**内置工具是基础。您可以使用 skills 扩展 Claude 的知识,使用 MCP 连接到外部服务,使用 hooks 自动化工作流程,以及将任务卸载到 subagents。这些扩展在核心代理循环之上形成了一层。请参阅扩展 Claude Code,获取有关选择适合您需求的扩展的指南。
克劳德可以访问什么
本指南重点介绍终端。 Claude Code 还可以在 VS Code、JetBrains IDE 和其他环境中运行。当您在目录中运行 claude 时,Claude Code 可以访问:
您的项目。 您的目录和子目录中的文件,以及经您许可的其他位置的文件。 您的终端。 您可以运行的任何命令:构建工具、git、包管理器、系统实用程序、脚本。如果您可以从命令行执行此操作,那么 Claude 也可以。 您的 git 状态。 当前分支、未提交的更改和最近的提交历史记录。 您的 CLAUDE.md。 一个 Markdown 文件,您可以在其中存储 Claude 应该了解每个会话的项目特定说明、约定和上下文。 自动记忆. Claude 会在您工作时自动保存学习内容,例如项目模式和您的偏好。 MEMORY.md 的前 200 行或 25KB(以先到者为准)在每个会话开始时加载。 **您配置的扩展。**MCP 服务器 用于外部服务,技能 用于工作流程,子代理 用于委派工作,Claude in Chrome 用于浏览器互动。
环境和接口
上述代理循环、工具和功能在您使用 Claude Code 的任何地方都是相同的。改变的是代码的执行位置以及与之交互的方式。
执行环境
Claude Code 在三种环境中运行,每种环境对于代码的执行位置都有不同的权衡。
| 环境 | 代码在哪里运行 | 使用案例 |
|---|---|---|
| 本地 | 您的机器 | 默认。对您的文件、工具和环境的完全访问权限 |
| 云 | 人工管理的虚拟机 | 卸载任务,处理本地没有的存储库 |
| 远程控制 | 您的机器,由浏览器控制 | 使用 Web UI,同时保持一切本地化 |
接口
您可以通过终端、桌面应用程序、IDE扩展、claude.ai/code、远程控制访问Claude Code, Slack 和 CI/CD 管道。界面决定了你如何看待克劳德并与克劳德互动,但底层的代理循环是相同的。有关完整列表,请参阅到处使用 Claude Code。
使用会话
Claude Code 在您工作时将您的对话保存在本地。每条消息、工具使用和结果都会被存储,从而启用倒回、恢复和分叉会话。在 Claude 进行代码更改之前,它还会对受影响的文件进行快照,以便您可以在需要时进行恢复。**会话是独立的。**每个新会话都以一个新的上下文窗口开始,没有以前会话的对话历史记录。 Claude 可以使用自动记忆 跨会话持久学习,并且您可以在 CLAUDE.md 中添加自己的持久指令。
跨分支机构工作
每个 Claude Code 对话都是与您当前目录相关的会话。当您恢复时,您只能看到该目录中的会话。Claude 可以看到您当前分支的文件。当您切换分支时,克劳德会看到新分支的文件,但您的对话历史记录保持不变。即使在切换后,Claude 也会记得您讨论的内容。由于会话与目录绑定,您可以使用 git worktrees 运行并行 Claude 会话,这会为各个分支创建单独的目录。
恢复或分叉会话
当您使用“claude --continue”或“claude --resume”恢复会话时,您可以使用相同的会话 ID 从上次中断的位置继续。新消息附加到现有对话中。您的完整对话历史记录已恢复,但会话范围的权限未恢复。您需要重新批准这些。!图 2:会话连续性:恢复继续同一会话,fork 使用新的分支创建一个新分支ID.分支并尝试不同的方法而不影响原始会话,使用 --fork-session 标志:
克劳德--继续--fork-会话
这将创建一个新的会话 ID,同时保留该点之前的对话历史记录。原来的会话保持不变。与恢复一样,分叉会话不会继承会话范围的权限。 多个终端中的同一会话:如果您在多个终端中恢复同一会话,则两个终端都会写入同一会话文件。来自两者的消息交织在一起,就像两个人在同一个笔记本上书写一样。没有任何腐败,但谈话变得混乱。每个终端在会话期间只能看到自己的消息,但如果您稍后恢复该会话,您将看到所有内容交错。对于从同一起点开始的并行工作,请使用“--fork-session”为每个终端提供自己的干净会话。
上下文窗口
Claude 的上下文窗口包含您的对话历史记录、文件内容、命令输出、CLAUDE.md、自动记忆、加载的技能和系统指令。当你工作时,上下文就会被填满。克劳德会自动进行压缩,但对话初期的指示可能会丢失。将持久性规则放入 CLAUDE.md 中,然后运行“/context”以查看哪些内容正在使用空间。有关加载内容和加载时间的交互式演练,请参阅探索上下文窗口。
当上下文填满时
使用技能和子代理管理上下文
除了压缩之外,您还可以使用其他功能来控制加载到上下文中的内容。技能 按需加载。克劳德在会话开始时看到技能描述,但完整内容仅在使用技能时加载。对于手动调用的技能,请设置“disable-model-inspiration:true”以使描述脱离上下文,直到您需要它们为止。[子代理](https://code.claude.com/docs/en/sub-agents)获得自己的新鲜上下文,与您的主要对话完全分开。他们的工作不会让你的背景变得臃肿。完成后,他们会返回一份摘要。这种隔离就是子代理帮助处理长会话的原因。请参阅上下文成本了解每个功能的成本,并减少令牌使用了解管理上下文的提示。
Stay safe with checkpoints and permissions
Claude 有两种安全机制:检查点让您撤消文件更改,权限控制 Claude 无需询问即可执行的操作。
使用检查点撤消更改
每个文件编辑都是可逆的。 在 Claude 编辑任何文件之前,它会快照当前内容。如果出现问题,请按两次“Esc”键返回到之前的状态,或者要求 Claude 撤消。检查点位于您的会话本地,与 git 分开。它们仅涵盖文件更改。影响远程系统(数据库、API、部署)的操作无法设置检查点,这就是 Claude 在运行具有外部副作用的命令之前询问的原因。
控制克劳德可以做什么
按“Shift+Tab”可循环切换权限模式:
默认:Claude 在文件编辑和 shell 命令之前询问 自动接受编辑:克劳德在没有询问的情况下编辑文件,仍然要求命令 计划模式:克劳德仅使用只读工具,创建一个您可以在执行前批准的计划 自动模式:克劳德通过后台安全检查来评估所有操作。目前是研究预览
您还可以在“.claude/settings.json”中允许特定命令,这样 Claude 就不会每次都询问。这对于像“npm test”或“git status”这样的可信命令很有用。设置的范围可以从组织范围的策略到个人偏好。有关详细信息,请参阅权限。
使用 Claude Code 高效工作
这些技巧可帮助您从 Claude Code 获得更好的结果。
向克劳德·科德寻求帮助
Claude Code可以教你如何使用它。提出诸如“如何设置挂钩?”之类的问题。或者“构建 CLAUDE.md 的最佳方式是什么?”克劳德将解释。内置命令还可以指导您完成设置:
/init 引导您为您的项目创建 CLAUDE.md
/agents 帮助您配置自定义子代理
/doctor 诊断您的安装的常见问题
这是一次对话
克劳德·科德很健谈。您不需要完美的提示。从你想要的开始,然后完善:
[克劳德调查,尝试一些事情]
这不太正确。问题在于会话处理。
[克劳德调整方法]当第一次尝试不正确时,你就不会重新开始。你迭代。
中断和引导
你可以随时打断克劳德。如果走错了路,只需输入更正内容并按 Enter 键即可。克劳德将停止正在做的事情并根据您的输入调整其方法。您不必等待它完成或重新开始。
预先具体说明
您的初始提示越精确,您需要的更正就越少。参考特定文件、提及约束并指出示例模式。
对于持有过期卡的用户,结帐流程会中断。 检查 src/ Payments/ 是否存在问题,尤其是令牌刷新。 首先编写失败的测试,然后修复它。
模糊的提示会起作用,但你会花更多的时间来指导。像上面这样的具体提示通常在第一次尝试时就会成功。
给克劳德一些东西来验证
当克劳德能够检查自己的工作时,它会表现得更好。包括测试用例、粘贴预期 UI 的屏幕截图或定义所需的输出。
实施验证电子邮件。测试用例:'user@example.com' → true, “无效”→ false,“user@.com”→ false。之后运行测试。
对于视觉工作,粘贴设计的屏幕截图并要求克劳德将其实现与它进行比较。
实施前探索
对于复杂的问题,将研究与编码分开。首先使用计划模式(两次Shift+Tab)来分析代码库:
阅读 src/auth/ 并了解我们如何处理会话。 然后创建添加 OAuth 支持的计划。
审查计划,通过对话完善它,然后让克劳德实施。这种两阶段方法比直接跳到代码产生更好的结果。
委派,不要发号施令
考虑委托给一位有能力的同事。给出背景和方向,然后相信克劳德能弄清楚细节:
对于持有过期卡的用户,结帐流程会中断。 相关代码位于 src/ payments/ 中。你能调查并修复它吗?
您不需要指定要读取哪些文件或要运行哪些命令。克劳德明白这一点。