Skip to content
Published at:

工作原理

理解 Claude Code 的底层机制,能帮助你更高效地使用它、减少意料之外的行为、写出更好的提示。

Agent Loop:核心运转模型

Claude Code 的一切行为都围绕 Agent Loop(代理循环)展开:

flowchart TB A["理解意图"] --> B["制定计划"] B --> C["调用工具"] C --> D{"观察结果"} D -->|"未完成"| B D -->|"完成 / 需输入 / 达上限"| END["退出循环"] style A fill:#e1f5fe style B fill:#e8f5e9 style C fill:#fff3e0 style D fill:#f3e5f5 style END fill:#ffebee

Agentic Loop

flowchart LR P["你的提示"] subgraph Loop["agentic loop"] direction LR GC["收集上下文"] --> TA["执行操作"] --> VR["验证结果"] VR -."循环".-> GC end D["完成"] H["你:中断、引导<br>或补充上下文"] P --> GC VR --> D H -."介入".-> TA style P fill:#e8e8e4,stroke:#999 style D fill:#e8e8e4,stroke:#999 style GC fill:#d4e4d8,stroke:#8ab style TA fill:#d4e4d8,stroke:#8ab style VR fill:#d4e4d8,stroke:#8ab style H fill:#fdf6f2,stroke:#d4a27f

每一轮对话中,Claude Code 会:

  1. 理解意图:解析你的消息,结合当前项目上下文
  2. 制定计划:决定用什么工具、按什么顺序执行
  3. 调用工具:执行 Read / Write / Edit / Bash / Agent 等操作
  4. 观察结果:读取工具返回的结果,判断是否达到目标
  5. 迭代:如果结果不理想或需要更多操作,回到步骤 2

这个循环是 自主进行 的——你只需要在关键节点(权限确认、结果审查)介入。

工具系统

Claude Code 拥有一套完整的工具来操作你的项目。以下是核心工具及其用途:

文件工具

工具作用典型场景
Read读取文件内容理解现有代码、查看配置文件
Write创建或覆写文件新建文件、完全重写
Edit精准文本替换修改文件中特定位置
Bash执行 Shell 命令运行构建、测试、Git 操作

高级工具

工具作用典型场景
Agent启动子代理并行执行独立任务
WebFetch抓取网页内容查阅在线文档
WebSearch搜索网络获取最新信息
TodoWrite管理任务列表跟踪复杂任务进度
TaskOutput获取后台任务结果查询异步任务状态

工具调用机制

每次 Claude Code 决定使用工具时,会经历以下流程:

  1. 模型输出工具调用请求(JSON 格式)
  2. CLI/IDE 层解析请求,在本机执行
  3. 执行结果返回给模型
  4. 模型分析结果,决定下一步

对于 高风险操作(如 Bash 中的 rm -rf、Git push --force 等),系统会先弹出权限确认弹窗,由你决定是否允许。

上下文管理

Claude Code 的智能很大程度上来自它的上下文管理系统。每次对话,它都能访问:

1. System Prompt(系统提示词)

每次对话都附带一个预置的系统提示词,它定义了 Claude Code 的:

  • 行为准则(安全性、编码风格)
  • 工具使用说明
  • 当前平台信息(操作系统、Shell 类型)
  • Git 状态快照

你无法修改系统提示词,但可以通过 CLAUDE.md 追加指令。

2. CLAUDE.md(项目上下文)

项目根目录下的 CLAUDE.md 文件是 最重要的上下文来源。它在每次对话启动时被自动读取,内容可以包括:

  • 项目架构说明
  • 常用命令
  • 编码规范
  • 特定约定和注意事项
markdown
# CLAUDE.md

## Commands

- `pnpm dev` — 启动开发服务器
- `pnpm test` — 运行测试

## Architecture

- `src/` — 前端源码
- `api/` — 后端 API
- 使用 React + TypeScript + Tailwind

3. Memory(持久化记忆)

Memory 系统会在项目目录 .claude/projects/<path>/memory/ 下存储持久化信息:

  • 用户角色:你的技术背景、偏好
  • 项目上下文:当前目标、已知问题
  • 反馈记录:你之前的纠正和确认

这种记忆是跨会话的——下次打开 Claude Code 时,它会记得之前的约定。

4. 对话上下文窗口

每个模型都有上下文窗口限制

模型上下文窗口
Opus 4.7200K tokens
Sonnet 4.6200K tokens
Haiku 4.5200K tokens

当对话接近窗口上限时,Claude Code 会自动压缩(compact)历史消息,保留关键信息,释放空间。你也可以手动执行 /compact 命令。

权限模型

Claude Code 的权限系统分为三个层级:

Level 1: 自动允许 — 读文件、搜索代码(无副作用)
Level 2: 按需确认 — 写文件、执行测试命令
Level 3: 始终确认 — rm、sudo、force push(高风险)

你可以在 settings.json 中自定义权限规则:

json
{
  "permissions": {
    "allow": ["Bash(npm:*)", "Bash(git:status)", "Bash(git:diff)"],
    "deny": ["Bash(rm:*)", "Bash(sudo:*)", "Bash(curl:*)"]
  }
}

安全沙箱

Claude Code 默认运行在一个受限环境中:

  • 文件访问:限制在项目目录内
  • 网络请求:需要通过 WebFetch/WebSearch 工具(可审核)
  • Shell 命令:在子进程中执行,不影响主 Shell 状态
  • 环境变量:不会自动读取 .env 等敏感文件

模型选择与 Thinking 机制

可用模型

Claude Code 使用 Claude 4 系列模型:

  • Opus 4.7:最强推理能力,适合复杂重构和架构设计
  • Sonnet 4.6:平衡性能与速度,日常开发首选
  • Haiku 4.5:最快响应,适合轻量任务

Thinking 模式

Claude Code 支持 Extended Thinking(深度思考模式),模型在进行复杂操作前会进行额外的推理:

  • 默认自动激活,当任务需要深度分析时
  • 你可以在指令中明确要求:"用 thinking 模式分析这个架构"
  • 思考过程不占用输出 token

Fast Mode

VSCode 扩展支持 Fast Mode——在 Opus 模型上获得更快的输出速度,适合需要 Opus 推理能力又不想等待的场景。通过 /fast 命令切换。

关键设计原则

了解 Claude Code 的几条设计原则,有助于预测它的行为:

  1. 宁可不做也不错做:对于高风险操作,默认需要确认
  2. 上下文优先:先读文件理解,再动手修改
  3. 渐进式变更:倾向于小步迭代而非一次性大改
  4. 可逆性考量:优先选择可撤销的操作路径
  5. 透明化:所有工具调用和结果对你可见