Appearance
Claude Code 工作原理
Claude Code 是一个运行在终端里的 AI 代理,不只是简单地"回答问题",而是能够主动行动:读取你的代码、编辑文件、运行命令、搜索网络,然后根据结果调整下一步行为。
AI 代理循环(Agentic Loop)
当你给 Claude 一个任务时,它会经历三个阶段反复循环:收集上下文 → 采取行动 → 验证结果。
你的指令
↓
收集上下文(读文件、搜索代码)
↓
采取行动(编辑文件、运行命令)
↓
验证结果(运行测试、检查输出)
↓
判断是否完成?
├── 否 → 回到"收集上下文"
└── 是 → 结束每一步的结果都会反馈到下一步。Claude 会根据实际发现不断调整策略,自动处理几十个步骤,并在途中纠正错误。
你随时可以介入。如果 Claude 走错了方向,直接打字告诉它,它会立刻停下来调整。
举个例子
当你说"修复失败的测试"时,Claude 可能会:
- 运行测试套件,查看哪些在失败
- 读取错误信息
- 搜索相关源文件
- 读取这些文件理解代码
- 编辑文件修复问题
- 再次运行测试验证
每一步都给 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 test、git status),避免每次都要确认。
执行环境
Claude Code 可以在三种环境下运行:
| 环境 | 代码在哪里运行 | 适用场景 |
|---|---|---|
| 本地 | 你的机器 | 默认。完整访问文件、工具和环境 |
| 云端 | Anthropic 管理的虚拟机 | 卸载任务,处理你本地没有的仓库 |
| 远程控制 | 你的机器,由浏览器控制 | 用 Web UI 同时保持一切在本地 |
扩展能力
内置工具是基础。你可以进一步扩展 Claude 能做的事:
- Skills:给 Claude 提供额外的知识和可复用的工作流
- MCP:连接外部服务(数据库、Jira、Slack 等)
- Hooks:在 Claude 执行动作时自动运行 shell 命令
- 子代理:把任务委托给独立的代理,有独立的上下文