Skip to content

Claude Code 工作原理

Claude Code 是一个运行在终端里的 AI 代理,不只是简单地"回答问题",而是能够主动行动:读取你的代码、编辑文件、运行命令、搜索网络,然后根据结果调整下一步行为。

AI 代理循环(Agentic Loop)

当你给 Claude 一个任务时,它会经历三个阶段反复循环:收集上下文 → 采取行动 → 验证结果

你的指令

收集上下文(读文件、搜索代码)

采取行动(编辑文件、运行命令)

验证结果(运行测试、检查输出)

判断是否完成?
   ├── 否 → 回到"收集上下文"
   └── 是 → 结束

每一步的结果都会反馈到下一步。Claude 会根据实际发现不断调整策略,自动处理几十个步骤,并在途中纠正错误。

你随时可以介入。如果 Claude 走错了方向,直接打字告诉它,它会立刻停下来调整。

举个例子

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

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

每一步都给 Claude 提供新信息,用于决定下一步该做什么。这就是代理循环的实际运作。

内置工具

工具让 Claude Code 从"只能说话"变成了"可以行动"。Claude 使用工具读取代码、编辑文件、运行命令,每次工具调用的结果都会反馈回循环。

内置工具分为五大类:

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

Claude 能访问什么

在项目目录下运行 claude 后,Claude Code 可以访问:

  • 你的项目:目录和子目录中的所有文件
  • 你的终端:你能运行的任何命令——构建工具、git、包管理器、系统工具、脚本
  • 你的 git 状态:当前分支、未提交的改动、最近的提交历史
  • CLAUDE.md:你在项目根目录放置的说明文件,每次会话开始时都会读取
  • 自动记忆:Claude 在工作过程中自动保存的知识,如项目模式和你的偏好
  • 你配置的扩展:MCP 服务器、Skills、子代理、Chrome 集成

因为 Claude 能看到整个项目,所以当你说"修复认证 bug"时,它可以跨多个文件搜索、阅读相关上下文、协调编辑多个文件、运行测试验证修复、并提交改动——这与只能看当前文件的代码补全工具有本质区别。

会话管理

会话是持久的

Claude Code 在工作时会将对话保存到本地。每条消息、工具调用和结果都被存储,这使得回退、恢复和分叉会话成为可能。Claude 编辑文件前还会对受影响的文件打快照,方便回滚。

会话是独立的。每个新会话从一个干净的上下文开始,没有之前会话的对话历史。Claude 可以通过自动记忆跨会话保持知识,你也可以在 CLAUDE.md 中写入永久性说明。

恢复或分叉会话

恢复会话:

bash
claude --continue    # 继续最近的对话
claude --resume      # 选择一个历史对话

从同一起点尝试不同方案:

bash
claude --continue --fork-session    # 创建分叉,保留历史但生成新会话 ID

上下文窗口

Claude 的上下文窗口保存着整个对话历史、文件内容、命令输出、CLAUDE.md、自动记忆等内容。随着工作的进行,上下文会逐渐填满。

Claude 会自动压缩,但早期对话中的指令可能丢失。建议把持久规则写进 CLAUDE.md,用 /context 查看上下文占用情况。

上下文管理技巧

  • /compact 手动压缩,可指定重点:/compact 专注于 API 改动
  • /clear 在无关任务之间重置上下文
  • 子代理有独立的上下文窗口,调查工作不会污染主对话

安全机制

检查点(Checkpoints)

每次文件编辑都可以回退。Claude 编辑任何文件之前都会先打快照。如果出了问题:

  • 按两次 Esc 打开回退菜单
  • 或者告诉 Claude "撤销那个改动"

检查点是会话本地的,与 git 无关。它们只覆盖文件改动,对数据库、API、部署等远程系统的操作无法检查点,所以 Claude 在运行有外部副作用的命令前会先问你。

权限控制

Shift+Tab 在三种权限模式之间循环:

模式行为
默认模式文件编辑和 shell 命令前都会征求确认
自动接受编辑文件编辑无需确认,命令仍需确认
计划模式只使用只读工具,先创建计划,你批准后再执行

你也可以在 .claude/settings.json 中允许特定命令(如 npm testgit status),避免每次都要确认。

执行环境

Claude Code 可以在三种环境下运行:

环境代码在哪里运行适用场景
本地你的机器默认。完整访问文件、工具和环境
云端Anthropic 管理的虚拟机卸载任务,处理你本地没有的仓库
远程控制你的机器,由浏览器控制用 Web UI 同时保持一切在本地

扩展能力

内置工具是基础。你可以进一步扩展 Claude 能做的事:

  • Skills:给 Claude 提供额外的知识和可复用的工作流
  • MCP:连接外部服务(数据库、Jira、Slack 等)
  • Hooks:在 Claude 执行动作时自动运行 shell 命令
  • 子代理:把任务委托给独立的代理,有独立的上下文

下一步