第1章 Agent 的本质

“任何足够先进的技术都与魔法无异。” —— 阿瑟·克拉克 当你在终端中输入 claude "帮我重构这个函数",然后看着屏幕上的文字流动——它读取文件、思考方案、编辑代码、运行测试、发现错误、再次修改——这一切看似自然,却隐含着一个深刻的架构问题:这个程序,究竟是什么? 它不是传统意义上的 CLI 工具。grep 不会在搜索失败后决定换一个关键词再试;sed 不会在替换出错后自行回退并尝试另一种方案。Claude Code 做的事情本质上不同——它在循环中推理,在不确定性中决策,在反馈中调整行为。 这就是 Agent。 1.1 当我们说"AI Agent"时,我们在说什么 传统 CLI 工具:确定性的管道 Unix 哲学塑造了我们对命令行工具的基本认知:一个程序接受输入,执行固定的计算,产生输出。整个过程是确定性的——相同的输入必然产生相同的输出,执行路径在编写代码时就已完全确定。 输入 → 固定算法 → 输出 这是一种开环系统(Open-loop System)。程序不观察自己行为的后果,不根据执行结果调整策略。rm -rf 不会在删除一半文件后想:“也许我该先备份。” AI Agent:不确定性中的自主决策者 Agent 的本质区别在于引入了一个闭环:它的输出会变成下一步决策的输入。 输入 → 推理 → 行动 → 观察结果 → 推理 → 行动 → ... → 最终输出 这个循环有三个关键特征: 行为不可完全预测。同样的用户请求,Agent 可能选择不同的工具组合、不同的执行顺序。这不是缺陷,而是面对复杂任务时的合理应对——正如同一位程序员面对相同需求,每次编码过程也不会完全一致。 执行路径由运行时决定。传统程序的控制流在编译时已知;Agent 的控制流在运行时由 LLM 动态生成。每一次工具调用都是 LLM 基于当前上下文做出的决策,而非预编程的固定序列。 具备反馈修正能力。当一个工具调用失败(文件不存在、命令报错、测试不通过),Agent 能够观察错误信息,推理失败原因,并调整后续行为。这种闭环反馈机制是 Agent 与简单的"LLM + 工具调用"之间的本质分水岭。 为什么 Claude Code 选择 Agent 架构 软件工程任务天然适合 Agent 架构,原因在于任务分解的不确定性。 ...

June 9, 2026