扩展阅读

Claude Code 工作原理 - Claude Code 文档

其他·2026/7/21·7 阅读

Claude Code 工作原理 - Claude Code 文档

来源 (中文翻译版): https://code.claude.com/docs/en/how-claude-code-works 抓取时间: 2026-07-21 16:27:01


本页面内容

  • 智能体循环
    • 模型
    • 工具
  • Claude 可以访问什么
  • 环境和接口
    • 执行环境
    • 接口
  • 使用会话工作
    • 跨分支工作
    • 恢复或分叉会话
    • 上下文窗口
    • 当上下文填满时
    • 使用技能和子智能体管理上下文
  • 使用检查点和权限保持安全
    • 使用检查点撤销更改
    • 控制 Claude 可以做什么
  • 有效地使用 Claude Code
    • 向 Claude Code 寻求帮助
    • 这是一次对话
    • 中断和引导
    • 预先明确具体需求
    • 给 Claude 一些可以验证的依据
    • 实现之前先探索
    • 委托,而不是命令
  • 下一步

核心概念

Claude Code 工作原理

复制页面 复制页面 了解智能体循环、内置工具,以及 Claude Code 如何与你的项目交互。 复制页面 复制页面 Claude Code 是一个在终端中运行的智能体助手。虽然它擅长编码,但它可以帮助你从命令行完成任何事情:编写文档、运行构建、搜索文件、研究主题等等。本指南涵盖了核心架构、内置功能和有效工作的技巧。有关分步演练,请参见常见工作流程。有关技能、MCP 和钩子等可扩展性功能,请参见扩展 Claude Code

智能体循环 当你给 Claude 一个任务时,它会经历三个阶段:收集上下文采取行动验证结果。这些阶段融合在一起。Claude 全程使用工具,无论是搜索文件来理解你的代码、编辑进行更改,还是运行测试来检查其工作。智能体循环图:你的提示导致 Claude 收集上下文、采取行动、验证结果,然后重复直到任务完成。你可以随时中断。 循环会根据你提出的要求进行调整。关于代码库的问题可能只需要收集上下文。错误修复会反复循环所有三个阶段。重构可能涉及广泛的验证。Claude 根据上一步学到的内容决定每一步需要什么,将几十个动作链接在一起,并在此过程中修正方向。你也是这个循环的一部分。你可以随时中断,将 Claude 引导到不同的方向,提供额外的上下文,或者要求它尝试不同的方法。Claude 自主工作,但始终对你的输入保持响应。智能体循环由两个组件提供动力:推理的模型和行动的工具。Claude Code 作为 Claude 周围的智能体框架:它提供工具、上下文管理和执行环境,将语言模型转变为有能力的编码智能体。

模型 Claude Code 使用 Claude 模型来理解你的代码并推理任务。Claude 可以读取任何语言的代码,理解组件如何连接,并找出需要更改什么来实现你的目标。对于复杂的任务,它将工作分解为步骤,执行它们,并根据学到的内容进行调整。多个模型具有不同的权衡。Sonnet 可以很好地处理大多数编码任务。Opus 为复杂的架构决策提供更强的推理。在会话期间使用 /model 切换,或者使用 claude --model <name> 开始。当本指南说"Claude 选择"或"Claude 决定"时,是模型在进行推理。

工具 工具是让 Claude Code 成为智能体的原因。没有工具,Claude 只能用文本回应。有了工具,Claude 可以行动:读取你的代码、编辑文件、运行命令、搜索网络以及与外部服务交互。每次工具使用都会返回反馈到循环中的信息,指导 Claude 的下一个决定。内置工具通常分为五类,每类代表不同类型的能力。

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

这些是主要功能。Claude 还有生成子智能体、向你提问和其他编排任务的工具。完整列表请参见Claude 可用的工具。Claude 根据你的提示和沿途学到的内容选择使用哪些工具。当你说"修复失败的测试"时,Claude 可能会:

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

每次工具使用都会为 Claude 提供新信息,指导下一步。这就是智能体循环的实际应用。扩展基本功能: 内置工具是基础。你可以使用技能扩展 Claude 的知识,使用MCP连接到外部服务,使用钩子自动化工作流程,并将任务卸载到子智能体。这些扩展在核心智能体循环之上形成了一个层。有关选择适合你需求的正确扩展的指导,请参见扩展 Claude Code

Claude 可以访问什么 本指南侧重于终端。Claude Code 也可以在VS CodeJetBrains IDE和其他环境中运行。当你在目录中运行 claude 时,Claude Code 可以访问:

  • 你的项目。 你的目录和子目录中的文件,以及你允许的其他地方的文件。
  • 你的终端。 你可以运行的任何命令:构建工具、git、包管理器、系统实用程序、脚本。如果你可以从命令行执行它,Claude 也可以。
  • 你的 git 状态。 当前分支、未提交的更改和最近的提交历史。
  • 你的CLAUDE.md 一个 markdown 文件,你可以在其中存储每个会话 Claude 应该知道的项目特定指令、约定和上下文。
  • 自动记忆 Claude 在你工作时自动保存的学习内容,如项目模式和你的偏好。MEMORY.md 的前 200 行或 25KB(以先到者为准)在每个会话开始时加载。
  • 你配置的扩展。 用于外部服务的MCP 服务器、用于工作流程的技能、用于委托工作的子智能体,以及用于浏览器交互的Chrome 中的 Claude

因为 Claude 看到你的整个项目,所以它可以在整个项目中工作。当你要求 Claude"修复身份验证 bug"时,它会搜索相关文件,读取多个文件以理解上下文,对它们进行协调编辑,运行测试以验证修复,如果你要求,还会提交更改。这不同于只看到当前文件的内联代码助手。

环境和接口 上述智能体循环、工具和功能在你使用 Claude Code 的任何地方都是相同的。变化的是代码执行的位置以及你如何与它交互。

执行环境 Claude Code 在三个环境中运行,每个环境在代码执行位置方面有不同的权衡。

环境代码运行位置用例
本地你的机器默认。完全访问你的文件、工具和环境
云端Anthropic 管理的虚拟机卸载任务,处理你本地没有的仓库
远程控制你的机器,从浏览器控制使用 Web UI 同时执行和你的文件保持本地

接口 你可以通过终端、桌面应用程序IDE 扩展claude.ai/code远程控制SlackCI/CD 管道访问 Claude Code。界面决定了你如何查看和与 Claude 交互,但底层智能体循环是相同的。完整列表请参见在任何地方使用 Claude Code

使用会话工作 Claude Code 在你工作时将你的对话保存在本地。每条消息、工具使用和结果都写入 ~/.claude/projects/ 下的纯文本 JSONL 文件,这启用了倒回、恢复和分叉会话。在 Claude 进行代码更改之前,它还会快照受影响的文件,以便你可以在需要时恢复。有关路径、保留和如何清除此数据的信息,请参见~/.claude 中的应用程序数据会话是独立的。 每个新会话从新的上下文窗口开始,没有来自以前会话的对话历史。Claude 可以使用自动记忆在会话之间保留学习内容,你可以在CLAUDE.md中添加你自己的持久指令。

跨分支工作 每个 Claude Code 对话都是一个与你当前目录绑定的会话。/resume 选择器默认显示当前工作树的会话,并带有键盘快捷键可以扩展列表到其他工作树或项目。有关选择器快捷键的完整列表以及名称解析如何工作,请参见管理会话。Claude 查看你当前分支的文件。当你切换分支时,Claude 查看新分支的文件,但你的对话历史保持不变。即使切换后,Claude 也记得你讨论的内容。由于会话与目录绑定,你可以通过使用git worktrees运行并行 Claude 会话,这会为各个分支创建单独的目录。

恢复或分叉会话 使用 claude --continueclaude --resume 恢复会话会在同一会话 ID 下重新打开它,并将新消息附加到现有对话。使用 --fork-session/branch 分叉会将历史复制到新的会话 ID,保持原始不变。会话连续性图:恢复继续同一会话,分叉创建带有新 ID 的新分支。 有关恢复标志、/resume 选择器、命名以及在两个终端中打开同一会话时会发生什么,请参见管理会话

上下文窗口 Claude 的上下文窗口保存你的对话历史、文件内容、命令输出、CLAUDE.md自动记忆、加载的技能和系统指令。随着你工作,上下文会填满。Claude 自动压缩,但对话早期的指令可能会丢失。将持久规则放在 CLAUDE.md 中,并运行 /context 查看什么在占用空间。有关加载内容和时间的交互式演练,请参见探索上下文窗口

当上下文填满时 Claude Code 在你接近限制时自动管理上下文。它首先清除较旧的工具输出,然后在需要时总结对话。你的请求和关键代码片段被保留;对话早期的详细指令可能会丢失。将持久规则放在 CLAUDE.md 中,而不是依赖对话历史。要控制压缩期间保留的内容,请将"压缩指令"部分添加到 CLAUDE.md 或使用焦点运行 /compact(如 /compact focus on the API changes)。如果单个文件或工具输出太大,以至于每次总结后上下文都会立即重新填满,Claude Code 会在几次尝试后停止自动压缩,并显示错误而不是循环。有关恢复步骤,请参见自动压缩停止并出现抖动错误。运行 /context 查看什么在占用空间。MCP 工具定义默认延迟加载,并通过工具搜索按需加载,所以在 Claude 使用特定工具之前,只有工具名称消耗上下文。运行 /mcp 检查每个服务器的成本。

使用技能和子智能体管理上下文 除了压缩之外,你可以使用其他功能来控制加载到上下文中的内容。技能按需加载。Claude 在会话开始时看到技能描述,但完整内容仅在使用技能时加载。对于你手动调用的技能,设置 disable-model-invocation: true 以在你需要之前将描述保留在上下文之外。对于你没有编写的技能,使用skillOverrides从设置中执行相同操作。子智能体获得自己全新的上下文,与你的主对话完全独立。它们的工作不会使你的上下文膨胀。完成后,它们返回一个摘要。这种隔离就是为什么子智能体对长会话有帮助。有关每个功能的成本,请参见上下文成本,有关管理上下文的技巧,请参见减少 Token 使用

使用检查点和权限保持安全 Claude 有两个安全机制:检查点让你可以撤销文件更改,权限控制 Claude 在没有询问的情况下可以做什么。

使用检查点撤销更改 每次文件编辑都是可逆的。 在 Claude 编辑任何文件之前,它会快照当前内容。如果出现问题,按 Esc 两次倒回到以前的状态,或者要求 Claude 撤销。检查点独立于 git,并且在你恢复对话时仍然可用。它们只覆盖文件更改。影响远程系统(数据库、API、部署)的操作无法被检查点化,这就是为什么 Claude 在运行有外部副作用的命令之前会询问。

控制 Claude 可以做什么 按 Shift+Tab 在权限模式之间循环:

  • 手动:Claude 在文件编辑和 shell 命令之前询问
  • 接受编辑:Claude 编辑文件并运行常见的文件系统命令,如 mkdirmv 而不询问,仍然询问其他命令
  • 计划:Claude 探索并提出计划,不编辑你的源文件
  • 自动:Claude 使用后台安全检查评估所有操作

你还可以在 .claude/settings.json 中允许特定命令,这样 Claude 就不会每次都询问。这对于像 npm testgit status 这样的受信任命令很有用。设置可以从组织范围的策略到个人偏好进行范围设定。详细信息请参见权限


有效地使用 Claude Code 这些技巧帮助你从 Claude Code 获得更好的结果。

向 Claude Code 寻求帮助 Claude Code 可以教你如何使用它。问诸如"我如何设置钩子?"或"构建我的 CLAUDE.md 的最佳方法是什么?"之类的问题,Claude 会解释。内置命令也会引导你完成设置:

  • /init 引导你为项目创建 CLAUDE.md
  • /doctor 运行设置检查,诊断安装和配置问题并可以修复它们

这是一次对话 Claude Code 是对话式的。你不需要完美的提示。从你想要的开始,然后完善:

修复登录 bug

[Claude 调查,尝试一些东西]

那不太对。问题在会话处理中。

[Claude 调整方法] 当第一次尝试不对时,你不必重新开始。你可以迭代。

中断和引导 你可以随时重定向 Claude,而无需等待回合结束或重新开始:

  • Esc 立即停止 Claude。正在运行的工具调用被取消,Claude 等待你的下一个指令。
  • 输入更正并按Enter 发送它而不停止正在运行的工具。Claude 在当前动作完成后立即读取它,并在决定下一步之前进行调整。

预先明确具体需求 你的初始提示越精确,你需要的修正就越少。引用特定文件,提及约束,并指向示例模式。

信用卡过期用户的结账流程已损坏。
检查 src/payments/ 中的问题,特别是令牌刷新。
先写一个失败的测试,然后修复它。

模糊的提示有效,但你会花更多时间引导。像上面这样的具体提示通常在第一次尝试时就成功。

给 Claude 一些可以验证的依据 当 Claude 可以检查自己的工作时,它表现更好。包括测试用例,粘贴预期 UI 的截图,或者定义你想要的输出。

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

对于视觉工作,粘贴设计的截图并要求 Claude 将其实现与截图进行比较。

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

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

审查计划,通过对话完善它,然后让 Claude 实现。这种两阶段方法比直接跳到代码产生更好的结果。

委托,而不是命令 想象委托给有能力的同事。给出上下文和方向,然后相信 Claude 弄清楚细节:

信用卡过期用户的结账流程已损坏。
相关代码在 src/payments/ 中。你能调查并修复它吗?

你不需要指定读取哪些文件或运行哪些命令。Claude 会弄清楚。

下一步

使用功能扩展

添加技能、MCP 连接和自定义命令

常见工作流程

典型任务的分步指南 本页面有帮助吗? 是 否 变更日志扩展 Claude Code ⌘I

评论 (0)

暂无评论,快来抢沙发吧!

91学AI

© 2026 91学AI · 按岗位学 AI 与大数据. All rights reserved.