第15章:从算法到实践:构建你的 Agent

“复杂系统从来不是一次性设计出来的,它是从一个可工作的简单系统逐步演化而来。” — John Gall,《系统学》 15.1 问题引入 经过前14章的深入分析,我们已经逐一拆解了 Claude Code 的每一个核心算法思想——从工具抽象到推理循环,从权限控制到多 Agent 协调,从 MCP 协议到钩子系统,从上下文压缩到容错重试。现在,一个自然的问题摆在面前: 如果你要从零开始构建一个类似 Claude Code 的 Agent 系统,该怎么做? 这不是一个简单的问题。Claude Code 的源码体量庞大,模块之间存在复杂的依赖关系。直接照搬源码既不现实也不明智。我们需要的是一张路线图——从最小可行系统出发,逐步叠加能力层,每一步都有清晰的目标和边界。 本章将给出这张路线图。我们将按照八个递进步骤,从一个仅有50行伪代码的最小循环,逐步演化为一个功能完整的 Agent 系统。每一步都会回顾前几章的核心算法,给出可执行的伪代码框架,并对照 Claude Code 的实际实现进行验证。 15.2 算法思想 15.2.1 Agent 系统的最小可行架构 任何 Agent 系统,无论多复杂,都可以归结为三个核心组件: ┌─────────────────────────────────────────┐ │ Agent 系统 │ │ │ │ ┌───────────┐ ┌──────────┐ ┌──────┐ │ │ │ 推理循环 │←→│ 工具系统 │←→│ 权限 │ │ │ │ (大脑) │ │ (双手) │ │ 控制 │ │ │ └───────────┘ └──────────┘ └──────┘ │ │ │ └─────────────────────────────────────────┘ 推理循环是大脑,决定"做什么"和"何时停止"; 工具系统是双手,提供"怎么做"的能力; 权限控制是安全阀,确保"能不能做"。 Claude Code 的源码完美印证了这一划分。query.ts 中的 queryLoop 是推理循环,Tool.ts 定义了工具抽象,permissions.ts 实现了权限判定。三者紧密协作,但职责清晰分离。 ...

June 9, 2026