📌标签:
#Agent原理#架构解析#智能体循环#进阶必读
大多数 AI 编程工具只会“回答”,而 Claude Code 会“行动”。这背后的核心差异,就是 Agentic 闭环。
1. 为什么 Agent 比对话助手更强大?
传统的 AI 编程助手(如 ChatGPT 网页版、Copilot Chat)本质上是对话助手:
- 你描述问题 → AI 生成文本(代码/解释)→ 你手动复制、执行、验证
- AI 没有“手”,无法真正操作系统、文件、命令行
- 每次行动都需要人类作为中间的“搬运工”
而Agent(智能体)则是:
- 你描述目标 → AI 自主规划 → 调用工具执行 → 观察结果 → 调整计划 → 继续执行……直到完成
- AI 拥有“数字之手”:读文件、写代码、运行测试、搜索、调用 API
- 人类从“指令下发者”变成“目标设定者”和“最终把关者”
Claude Code 是 Anthropic 将 Claude 模型封装为完整 Agent的终端实现。它不是简单的“模型+工具调用”,而是一个精心设计的感知-思考-行动闭环(Agent Loop)。
2. Agent Loop 的三大阶段
Agent Loop 是 Claude Code 的核心运行机制,每个完整循环包含三个连续阶段:
┌─────────────────────────────────────────────────────────┐ │ Agent Loop │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 感知 │ → │ 思考 │ → │ 行动 │ │ │ │Perceive │ │ Think │ │ Act │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ ↑ │ │ │ └────────── 观察 Observe ────────┘ │ └─────────────────────────────────────────────────────────┘阶段一:感知(Perceive)
Claude Code 收集当前可获取的所有信息:
- 用户输入:你刚刚输入的自然语言指令
- 对话历史:之前的所有消息和 AI 回复
- 项目文件:通过
Read工具读取的文件内容 - 目录结构:通过
LS工具获取的文件列表 - 命令输出:之前执行 shell 命令的 stdout/stderr
- 系统状态:Git 分支、未提交变更、环境变量等
- CLAUDE.md:项目的持久化说明
这一阶段构建了 AI 的“工作记忆”。
阶段二:思考(Think)
Claude 模型(当前为 Claude 3.5 Sonnet)在超长上下文(200K token)基础上进行推理:
- 任务拆解:将用户目标分解为若干子任务
- 工具选择:决定下一步调用哪个工具(Read、Write、Edit、Run、Bash 等)
- 参数生成:为工具调用生成精确参数(如文件路径、搜索模式、命令字符串)
- 风险评估:判断操作是否危险(修改生产配置、删除文件等),必要时请求用户确认
- 计划调整:如果上一步行动失败,生成替代方案
这个阶段不执行任何实际操作,只输出一个“工具调用请求”。
阶段三:行动(Act)
Claude Code 的执行器(Executor)接收工具调用请求,并实际执行:
- 文件操作(读/写/编辑/删除)
- Shell 命令执行(带超时和安全限制)
- 搜索(grep 风格的内容搜索)
- MCP 工具调用(如访问数据库、调用外部 API)
每个工具执行后会返回结果(成功/失败 + 输出数据),这个结果会作为新的“感知”信息,进入下一轮循环。
3. 一个真实例子:Agent Loop 的逐轮解析
假设你对 Claude Code 说:“把项目中所有的 console.log 替换为 logger.debug,并保留原有的日志消息。”
第 1 轮
- 感知:用户指令 + 当前目录是
/my-app - 思考:需要先找到所有包含
console.log的文件。工具:Grep(搜索工具) - 行动:执行
Grep搜索console.log,返回文件列表(如src/utils.js:23,src/api.js:45……)
第 2 轮
- 感知:搜索结果文件列表(10 个文件,共 23 处匹配)
- 思考:需要读取这些文件的内容,确认上下文。对每个文件调用
Read。 - 行动:依次读取 10 个文件,返回每处
console.log的代码行及周围代码。
第 3 轮
- 感知:10 个文件的源码片段
- 思考:生成替换方案——将
console.log(替换为logger.debug(,并确保logger已导入。如果文件未导入 logger,需要先添加 import 语句。 - 行动:调用
Edit工具批量替换(或逐个文件编辑)。
第 4 轮
- 感知:编辑操作成功,文件已修改
- 思考:验证修改结果。可以运行 lint 检查,或再次 grep 确认没有残留的 console.log。
- 行动:运行
npm run lint(如果在 CLAUDE.md 中定义了)。如果失败,修复。
第 5 轮
- 感知:lint 通过,grep 无残留
- 思考:任务完成。向用户报告结果。
- 行动:输出总结信息:“已替换 23 处 console.log 为 logger.debug,涉及 10 个文件。”
整个过程中,你只需输入一次指令,Claude Code 自己完成了5 轮闭环。
4. 关键技术点:如何保证闭环不跑偏?
4.1 工具集(Tool Set)
Claude Code 内置了 10+ 种工具,每个工具都有清晰的输入输出规范:
| 工具名 | 功能 | 示例参数 |
|---|---|---|
Read | 读取文件内容 | {"file_path": "src/index.js"} |
Write | 创建/覆盖文件 | {"file_path": "new.js", "content": "..."} |
Edit | 基于行的精确替换 | {"file_path": "a.js", "old_string": "...", "new_string": "..."} |
Grep | 正则搜索内容 | {"pattern": "TODO", "path": "src/"} |
LS | 列出目录 | {"path": "src/components"} |
Bash | 执行 shell 命令 | {"command": "npm test", "timeout": 30000} |
MCP_* | 动态 MCP 工具 | 取决于配置(如Slack_send) |
4.2 权限系统(Permission Guard)
为防止 AI 误操作,Claude Code 实现了分级权限:
- Default(默认):读操作自动执行,写/执行操作需用户确认(显示 diff,等待 y/n)。
- Plan(计划模式):AI 只输出计划,不执行任何写操作。适合先审核再执行。
- Bypass(绕过):自动批准所有操作(仅用于可信环境)。
- Auto(自动):在 CI 等非交互环境中自动批准所有操作。
你可以在会话中随时通过/mode命令切换。
4.3 循环终止条件
Agent Loop 不是无限循环的。Claude Code 在以下情况会停止:
- 模型输出“最终答案”(没有新的工具调用请求)
- 达到最大步数限制(默认为 50 轮,可配置)
- 用户按
Ctrl+C打断 - 遇到无法自动解决的错误(如缺失依赖、权限拒绝)
5. 与 ReAct、Toolformer 等范式的对比
Claude Code 的 Agent Loop 本质上是一种ReAct(Reasoning + Acting)模式的工程实现,但做了大量优化:
| 范式 | 特点 | Claude Code 的优化 |
|---|---|---|
| ReAct | 交替生成“思考”和“行动”文本 | 将思考和行动结构化,而非自由文本,更可靠 |
| Toolformer | 模型学习调用 API,但需大量微调 | Claude 本身已具备工具调用能力,无需微调 |
| AutoGPT | 自主目标分解,但常失控 | 严格限制步数 + 权限系统 + 人类介入点 |
| Claude Code | 专为开发者终端优化,工具集围绕文件系统、Shell、Git | 内置压缩、缓存、成本透明、安全性 |
6. 你可以如何利用 Agent Loop?
- 设置清晰的目标:告诉 AI “做什么”而不是“怎么做”。例如“添加用户登录功能”比“写一个 /login 路由,然后在 auth.js 里加 JWT 验证”更能发挥 Agent 的规划能力。
- 允许失败与重试:AI 可能在第一轮行动中犯错(比如运行了错误的命令),观察它会如何自我纠正。
- 适时介入:当你发现 AI 在循环中浪费步骤(比如反复读取同一个文件),可以直接打断,给出更具体的指令。
- 使用 Plan 模式审核:对高风险任务(如数据库迁移、重构核心模块),先
/mode plan,让 AI 输出计划,你批准后再执行。
7. 局限与挑战
Agent 模式并非万能:
- 成本:多轮闭环意味着多次调用模型,
/cost可能高于单轮对话。 - 长任务容易迷路:超过 30 轮的复杂重构,AI 可能忘记最初的约束。此时用
/compact压缩上下文或/clear重置。 - 工具能力边界:无法操作 GUI、无法与 Figma 等设计工具直接交互(除非通过 MCP 桥接)。
- 安全责任:即使有权限系统,AI 仍可能执行非预期操作。重要生产环境建议用 Plan 模式 + 人工审查。
8. 下篇预告
你已经理解了 Claude Code 的智能体内核。下一篇文章将深入它的“长时记忆”机制:200K 超长上下文是如何工作的?它如何一次性读完整个项目并保持连贯推理?
👉下一篇:200K超长上下文:一次读遍整个项目的技术秘密
思考题(自测理解)
- 假设你让 Claude Code “重构整个项目的状态管理(从 Redux 换到 Zustand)”,它可能会经历多少轮 Agent Loop?哪些环节最容易出错?
- 如果 Claude Code 在执行
Bash命令时返回了错误(比如npm run build失败),它会如何处理?这与人类开发者的调试习惯有何相似之处? - 在 Plan 模式下,Claude Code 不会执行任何写操作。你仍然可以在对话中让它“展示”代码变更方案吗?如何操作?
Agent Loop 是 Claude Code 的引擎,而下一步我们将探索它的“油箱”——超长上下文如何让引擎持续运转。