代理循环
当您给 Claude 一个任务时,它会经历三个阶段:收集上下文、采取行动和验证结果。这些阶段相互融合。Claude 始终使用工具,无论是搜索文件以了解您的代码、编辑以进行更改,还是运行测试以检查其工作。模型
Claude Code 使用 Claude 模型来理解您的代码并推理任务。Claude 可以读取任何语言的代码、理解组件如何连接,以及找出需要改变什么来实现您的目标。对于复杂的任务,它将工作分解为步骤、执行它们,并根据学到的内容进行调整。 多个模型可用,具有不同的权衡。Sonnet 可以很好地处理大多数编码任务。Opus 为复杂的架构决策提供更强的推理能力。在会话期间使用/model 切换或使用 claude --model <name> 启动。
当本指南说”Claude 选择”或”Claude 决定”时,是模型在进行推理。
工具
工具是使 Claude Code 成为代理的原因。没有工具,Claude 只能用文本回应。有了工具,Claude 可以采取行动:读取您的代码、编辑文件、运行命令、搜索网络并与外部服务交互。每个工具使用都会返回信息,反馈到循环中,告知 Claude 的下一个决定。 内置工具通常分为五个类别,每个类别代表不同类型的代理能力。| 类别 | Claude 可以做什么 |
|---|---|
| 文件操作 | 读取文件、编辑代码、创建新文件、重命名和重新组织 |
| 搜索 | 按模式查找文件、使用正则表达式搜索内容、探索代码库 |
| 执行 | 运行 shell 命令、启动服务器、运行测试、使用 git |
| 网络 | 搜索网络、获取文档、查找错误消息 |
| 代码智能 | 编辑后查看类型错误和警告、跳转到定义、查找引用(需要代码智能插件) |
- 运行测试套件以查看失败的内容
- 读取错误输出
- 搜索相关的源文件
- 读取这些文件以理解代码
- 编辑文件以修复问题
- 再次运行测试以验证
Claude 可以访问什么
本指南重点关注终端。Claude Code 也在 VS Code、JetBrains IDE 和其他环境中运行。 当您在目录中运行claude 时,Claude Code 可以访问:
- 您的项目。 您目录和子目录中的文件,以及其他地方有您许可的文件。
- 您的终端。 您可以运行的任何命令:构建工具、git、包管理器、系统实用程序、脚本。如果您可以从命令行做到,Claude 也可以。
- 您的 git 状态。 当前分支、未提交的更改和最近的提交历史。
- 您的 CLAUDE.md。 一个 markdown 文件,您可以在其中存储项目特定的说明、约定和 Claude 应该在每个会话中了解的上下文。
- 自动内存。 Claude 在您工作时自动保存的学习内容,如项目模式和您的偏好。MEMORY.md 的前 200 行在每个会话开始时加载。
- 您配置的扩展。 用于外部服务的 MCP servers、用于工作流的 skills、用于委派工作的 subagents 和用于浏览器交互的 Claude in Chrome。
环境和界面
上面描述的代理循环、工具和功能在您使用 Claude Code 的任何地方都是相同的。改变的是代码执行的位置以及您与它交互的方式。执行环境
Claude Code 在三个环境中运行,每个环境对代码执行位置有不同的权衡。| 环境 | 代码运行位置 | 用例 |
|---|---|---|
| 本地 | 您的机器 | 默认。完全访问您的文件、工具和环境 |
| 云 | Anthropic 管理的虚拟机 | 卸载任务、处理您本地没有的仓库 |
| 远程控制 | 您的机器,从浏览器控制 | 使用网络 UI 同时保持一切本地 |
界面
您可以通过终端、桌面应用、IDE 扩展、claude.ai/code、远程控制、Slack 和 CI/CD 管道访问 Claude Code。界面决定了您如何看到和与 Claude 交互,但底层的代理循环是相同的。有关完整列表,请参阅在任何地方使用 Claude Code。使用会话
Claude Code 在您工作时将您的对话保存在本地。每条消息、工具使用和结果都被存储,这使得回退、恢复和分叉会话成为可能。在 Claude 进行代码更改之前,它还会对受影响的文件进行快照,以便您在需要时可以恢复。 会话是独立的。 每个新会话都以新的上下文窗口开始,没有来自以前会话的对话历史。Claude 可以使用自动内存跨会话保持学习,您可以在 CLAUDE.md 中添加您自己的持久说明。跨分支工作
每个 Claude Code 对话都是一个与您当前目录相关的会话。当您恢复时,您只会看到来自该目录的会话。 Claude 看到您当前分支的文件。当您切换分支时,Claude 看到新分支的文件,但您的对话历史保持不变。Claude 记得您讨论过的内容,即使在切换后也是如此。 由于会话与目录相关,您可以通过使用 git worktrees 运行并行 Claude 会话,这为各个分支创建单独的目录。恢复或分叉会话
当您使用claude --continue 或 claude --resume 恢复会话时,您使用相同的会话 ID 从中断处继续。新消息附加到现有对话。您的完整对话历史被恢复,但会话范围的权限不会。您需要重新批准这些。
--fork-session 标志:
--fork-session 为每个终端提供自己的干净会话。
上下文窗口
Claude 的上下文窗口保存您的对话历史、文件内容、命令输出、CLAUDE.md、自动内存、加载的 skills 和系统说明。当您工作时,上下文填满。Claude 自动压缩,但对话早期的说明可能会丢失。将持久规则放在 CLAUDE.md 中,并运行/context 以查看什么在占用空间。
当上下文填满时
Claude Code 在您接近限制时自动管理上下文。它首先清除较旧的工具输出,然后在需要时总结对话。您的请求和关键代码片段被保留;对话早期的详细说明可能会丢失。将持久规则放在 CLAUDE.md 中,而不是依赖对话历史。 要控制在压缩期间保留的内容,请在 CLAUDE.md 中添加”Compact Instructions”部分或使用焦点运行/compact(如 /compact focus on the API changes)。
运行 /context 以查看什么在占用空间。MCP servers 在每个请求中添加工具定义,因此几个服务器可以在您开始工作之前消耗大量上下文。运行 /mcp 以检查每个服务器的成本。
使用 skills 和 subagents 管理上下文
除了压缩,您可以使用其他功能来控制什么加载到上下文中。 Skills 按需加载。Claude 在会话开始时看到 skill 描述,但完整内容仅在使用 skill 时加载。对于您手动调用的 skills,设置disable-model-invocation: true 以将描述保留在上下文之外,直到您需要它们。
Subagents 获得自己的新上下文,完全独立于您的主对话。他们的工作不会使您的上下文膨胀。完成后,他们返回一个摘要。这种隔离是为什么 subagents 有助于长会话。
有关每个功能的成本,请参阅上下文成本,有关管理上下文的提示,请参阅减少令牌使用。
使用检查点和权限保持安全
Claude 有两个安全机制:检查点让您撤销文件更改,权限控制 Claude 可以在不询问的情况下做什么。使用检查点撤销更改
每个文件编辑都是可逆的。 在 Claude 编辑任何文件之前,它会对当前内容进行快照。如果出现问题,按两次Esc 以回退到之前的状态,或要求 Claude 撤销。
检查点是会话本地的,独立于 git。它们仅涵盖文件更改。影响远程系统的操作(数据库、API、部署)无法进行检查点,这就是为什么 Claude 在运行具有外部副作用的命令之前询问。
控制 Claude 可以做什么
按Shift+Tab 循环通过权限模式:
- 默认:Claude 在文件编辑和 shell 命令之前询问
- 自动接受编辑:Claude 编辑文件而不询问,仍然询问命令
- Plan Mode:Claude 仅使用只读工具,创建您可以在执行前批准的计划
- 自动模式:Claude 使用后台安全检查评估所有操作。目前是研究预览
.claude/settings.json 中允许特定命令,以便 Claude 不会每次都询问。这对于受信任的命令(如 npm test 或 git status)很有用。设置可以从组织范围的策略范围到个人偏好。有关详细信息,请参阅权限。
有效使用 Claude Code
这些提示可以帮助您从 Claude Code 获得更好的结果。向 Claude Code 寻求帮助
Claude Code 可以教您如何使用它。提出问题,如”我如何设置 hooks?“或”构建我的 CLAUDE.md 的最佳方式是什么?“,Claude 会解释。 内置命令也会指导您完成设置:/init引导您为项目创建 CLAUDE.md/agents帮助您配置自定义 subagents/doctor诊断您的安装的常见问题
这是一个对话
Claude Code 是对话式的。您不需要完美的提示。从您想要的开始,然后细化:中断和引导
您可以在任何时刻中断 Claude。如果它走错了路,只需输入您的更正并按 Enter。Claude 将停止正在做的事情并根据您的输入调整其方法。您不必等待它完成或重新开始。预先具体
您的初始提示越精确,您需要的更正就越少。参考特定文件、提及约束并指出示例模式。给 Claude 一些东西来验证
Claude 在能够检查自己的工作时表现更好。包括测试用例、粘贴预期 UI 的屏幕截图或定义您想要的输出。在实现之前探索
对于复杂的问题,将研究与编码分开。使用 plan mode(按Shift+Tab 两次)首先分析代码库:
委派,不要指示
想象委派给一个有能力的同事。提供上下文和方向,然后相信 Claude 会弄清楚细节:接下来是什么
使用功能扩展
添加 Skills、MCP 连接和自定义命令
常见工作流
典型任务的分步指南