AI Agent 架构形态详解:从单 Agent 到 Claude Code 与 Codex 式系统

作者:Codex 整理时间:2026-04-23 02:45:00 CST 来源:基于 AI Agent 全景指南:从基础认知到工程化落地 的第四章扩展,并结合 Anthropic Claude Code 与 OpenAI Codex 的官方公开能力做架构抽象。 主题:把“架构形态”“工作机制”“核心模块”三组概念拆开讲清,再系统展开 Single Agent、Workflow Agent、Planner-Executor、ReAct、Memory Agent、Multi-Agent,以及更接近 Claude Code / Codex 这类系统的运行时编排型 Coding Agent。 说明:文中涉及 Claude Code / Codex 的部分,区分为“官方公开能力”与“合理架构抽象”,后者用于理解系统设计,不代表厂商披露的内部实现。

关联总文:AI Agent 全景指南:从基础认知到工程化落地

运行时展开:Claude Code 与 Codex 式 Coding Agent 运行时详解:一次真实任务如何被推进

为什么这篇要单独写:很多人把三件事混成了一件事

很多关于 Agent 的文章,一谈到“架构”,就会把 ReAct、Memory、Planner、Tool Calling、Multi-Agent 全部堆在同一层。 这样写虽然热闹,但读者很容易越看越乱,因为这些概念本来就不在同一个分析层级上。

更稳的分法是:

  • 架构形态:回答“系统是怎么搭起来的”
  • 工作机制:回答“系统是怎么跑起来的”
  • 核心模块:回答“系统由哪些积木组成”

如果只记一句话,可以直接记成:

架构形态 = 组织方式,工作机制 = 运行流程,核心模块 = 实现积木。

这也解释了为什么你在总文里会感觉第四章和第二、三章有耦合:

  • 第二章的重点其实是“闭环怎么运行”
  • 第三章的重点其实是“有哪些可复用模块”
  • 第四章真正该回答的是“这些模块和机制,被组织成了什么系统形态”

所以这篇文章的任务不是把原来的第四章写得更长,而是把它从“总览性介绍”升级成一篇真正的系统设计文章

一、先建立观察框架:以后看任何 Agent,都先问这三层

为了避免概念继续打架,我们先给所有架构套同一个观察模板。

1. 先看它属于什么架构形态

也就是看它到底是:

  • 一个 Agent 自己全包
  • 一个固定工作流包着 Agent
  • 一个 Planner 管规划、一个 Executor 管执行
  • 一个或多个 Agent 在协作
  • 还是已经演进成“带环境、权限、记忆、验证与治理层的代理运行时”

这一层关注的是角色分工、控制流拓扑、状态边界和系统边界

2. 再看它用什么工作机制跑任务

工作机制是任务执行时真正发生的动态过程。 例如:

  • 目标理解
  • 规划拆解
  • Thought / Action / Observation 循环
  • 记忆读写
  • 并行探索
  • 验证与交付

同一种架构,可以采用不同工作机制; 不同架构,也可能共享相似机制。

例如 ReAct 更像一种运行机制,而不是一种足以独立解释整个系统边界的完整架构。

3. 最后看它由哪些核心模块拼起来

模块层看的是“这个系统到底用什么东西实现出来”。 常见模块包括:

  • 模型
  • Planner
  • Executor
  • Tool Router
  • Memory
  • Context Manager
  • Permission / Sandbox
  • Verifier
  • Subagent Orchestrator
  • Environment Runtime

模块是积木,机制是积木的动作组合,架构是积木和动作被组织起来后的整体形态。

二、最小可用形态:单 Agent 为什么总是起点

单 Agent 是最容易理解、也最容易落地的起始形态。 它通常表现为:一个模型面对一个任务,读取上下文,调用有限工具,然后返回结果。

1. 架构上长什么样

单 Agent 的基本拓扑通常是:

  • 用户输入
  • 主模型
  • 若干工具
  • 结果返回

整个系统里没有明显的角色拆分,也没有独立的子任务执行单元。 即使内部做了“先想再做”,外部看起来仍然是一条较短的闭环。

2. 它的典型工作机制

单 Agent 最常见的机制是:

  • 理解任务
  • 判断是否要用工具
  • 调用一两个工具
  • 整理结果
  • 直接交付

如果任务简单,这种机制非常高效。 但只要任务开始变长,单 Agent 就容易暴露三个问题:

  • 上下文越来越长
  • 决策和执行耦合得太紧
  • 错误恢复能力有限

3. 它依赖哪些核心模块

最小可用版本通常只需要:

  • 模型
  • 基础上下文管理
  • 工具接口
  • 很薄的一层状态记录

这也是为什么很多 Agent Demo 看起来很容易做出来。 但问题也恰恰在这里:它很容易“能演示”,却不容易“能持续运行”。

三、把流程外显:Workflow Agent 与 Planner-Executor 为什么是第一轮升级

当任务复杂度上升,系统的第一反应往往不是马上上 Multi-Agent,而是先把“隐式做事方式”变成“显式流程”。

1. Workflow Agent:把 Agent 放进可治理的流程状态机

Workflow Agent 的思路是: 把原本让模型临场决定的一部分路径,提前固化成一个稳定流程。

例如:

  • 先检索资料
  • 再提炼要点
  • 再生成执行结果
  • 最后做格式化输出

但如果只讲到这里,它还只是概念,不是架构。 真正的 Workflow Agent 架构,至少要包含下面这些角色:

  • Workflow Orchestrator:流程编排器,决定当前任务走到哪个节点
  • State Machine:状态机,记录任务处于待处理、执行中、待审批、失败、完成等状态
  • LLM Decision Node:智能判断节点,负责分类、总结、生成、选择策略等开放判断
  • Tool Action Node:工具执行节点,负责调用 API、查询数据库、创建工单、写文件等动作
  • Human Approval Node:人工确认节点,拦截高风险动作
  • Retry / Compensation Node:重试与补偿节点,处理失败、撤销、回滚和降级路径
  • Audit Log:审计日志,记录每一步为什么执行、谁批准、工具返回了什么

它的典型控制流不是“模型想一步做一步”,而是:

用户目标
  -> 流程入口
  -> 状态机创建任务状态
  -> 固定节点 1:收集输入
  -> LLM 节点:判断任务类型
  -> 条件分支:进入不同流程
  -> 工具节点:执行外部动作
  -> 风险节点:是否需要人工确认
  -> 验证节点:检查结果是否满足条件
  -> 完成 / 重试 / 补偿 / 转人工

这里最重要的设计点是:核心控制权在流程状态机,而不在模型的自由发挥。 模型不是没有决策权,而是被放在有限节点里做局部判断。

这种形态适合:

  • 客服工单流转
  • 报销审批
  • 销售线索分级
  • 内容审核
  • 数据报表生成
  • 企业内部标准流程自动化

它的优势很明确:

  • 稳定
  • 可控
  • 好审计
  • 容易接企业流程
  • 方便设置权限和人工确认

但缺点也很清楚: 如果任务变化太大,固定流程会开始显得僵硬。 所以 Workflow Agent 的设计重点,不是让它“无限智能”,而是明确哪些地方必须固定,哪些地方允许 Agent 判断。

一个比较成熟的设计原则是:

  • 高风险路径固定化
  • 低风险判断智能化
  • 关键节点可审计
  • 外部动作可回滚
  • 异常路径能转人工

2. Planner-Executor:把目标拆成可执行、可验证、可回滚的任务链

Planner-Executor 比 Workflow Agent 更进一步。 它不是把路径完全写死,而是把“规划能力”和“执行能力”分开。

  • Planner 负责理解任务、生成步骤、排序优先级
  • Executor 负责按步骤动工具、取结果、推进状态

如果把它写成架构,最小可用版本通常包括:

  • Goal Interpreter:把用户自然语言目标转成任务定义
  • Planner:生成计划、依赖关系、优先级、成功标准
  • Plan Store:保存计划,让计划可展示、可修改、可恢复
  • Task Queue:把计划拆成可执行任务
  • Executor:逐步执行任务,调用文件、终端、浏览器、API 等工具
  • Observation Collector:收集工具返回、错误信息、环境状态
  • Verifier:检查执行结果是否满足计划要求
  • Replanner:在失败或新信息出现时修改计划
  • Human Gate:在高风险步骤前请求人工确认
  • Final Reporter:整理最终结果、过程说明和残留风险

它的典型控制流是:

用户目标
  -> Goal Interpreter 明确成功标准
  -> Planner 生成结构化计划
  -> Plan Store 保存计划
  -> Task Queue 拆分可执行步骤
  -> Executor 执行第 N 步
  -> Observation Collector 收集反馈
  -> Verifier 判断是否通过
  -> 通过:进入下一步
  -> 不通过:Replanner 修改计划或回滚
  -> 所有步骤完成后 Final Reporter 交付

这种架构的关键价值,不只是“多了一个 Planner”,而是:

让系统第一次拥有了相对独立的规划层。

这会带来几个直接好处:

  • 复杂任务更容易拆分
  • 失败后更容易回到某一步重试
  • 计划本身可以被展示、审查和修订

它特别适合目标明确但路径不确定的任务,例如:

  • “修复这个测试失败”
  • “把这个功能接入现有权限系统”
  • “分析日志并定位根因”
  • “整理某个主题的研究报告”
  • “把一个脚本迁移到新框架”

但 Planner-Executor 也有自己的失败模式:

  • Planner 计划过粗,Executor 不知道怎么落地
  • Planner 计划过细,遇到变化就频繁失效
  • Executor 执行偏航,但反馈没有及时回到 Planner
  • Verifier 太弱,导致“看似完成,其实没通过”
  • Replanner 过于频繁,任务陷入反复改计划

所以它的架构重点是:计划必须可执行,执行必须可观察,观察必须能回流,验证必须有硬标准。

3. Workflow Agent 与 Planner-Executor 的本质区别

它们都在做“流程外显”,但不是一回事。

  • Workflow Agent 更像“预定义流水线”
  • Planner-Executor 更像“规划层 + 执行层”的职责拆分

更系统地看:

  • Workflow Agent 的控制权在预定义流程 / 状态机
  • Planner-Executor 的控制权在动态生成的计划
  • Workflow Agent 适合“路径稳定但局部需要智能判断”
  • Planner-Executor 适合“目标稳定但路径需要临场生成”
  • Workflow Agent 的失败处理更像流程补偿
  • Planner-Executor 的失败处理更像重新规划
  • Workflow Agent 更容易审计
  • Planner-Executor 更容易适应新问题

前者的核心是稳定,后者的核心是弹性。 所以在真实系统里,常见组合其实是:

  • 骨架用 Workflow
  • 某些开放节点内部用 Planner-Executor

例如一个企业研发助手可以这样设计:

外层 Workflow:
  接收需求 -> 判断风险 -> 创建任务 -> 执行 -> 验证 -> 人工确认 -> 合并

内部 Planner-Executor:
  在“执行”节点里动态拆解:
  读代码 -> 定位问题 -> 修改文件 -> 运行测试 -> 根据失败重新规划

这也是现代 coding agent 常见的方向: 外层要可治理,内层要有弹性。

四、把推理嵌入动作:为什么 ReAct 更像机制,不该直接等同于架构

很多人学 Agent 的时候第一次接触到的就是 ReAct,于是很容易把它误认为“一种完整架构”。 但更准确地说,ReAct 首先是一种运行机制

它最核心的循环是:

  • Thought
  • Action
  • Observation

也就是:

  • 先想一步
  • 再做一步
  • 再看世界给了什么反馈
  • 然后继续下一轮

1. 为什么 ReAct 很重要

因为它把 Agent 从“先生成完整方案再执行”变成了“边做边看边修”。 这非常适合开放环境,尤其是:

  • 搜索型任务
  • 浏览器任务
  • 代码排障任务
  • 文档分析任务

2. 为什么它又不够解释整个系统

ReAct 只解释了“循环怎么跑”,却没完全回答:

  • 角色怎么分工
  • 状态放在哪里
  • 验证由谁负责
  • 权限和审批怎么进系统
  • 长任务怎么切分
  • 并行任务怎么治理

换句话说,ReAct 很像一台发动机的工作原理, 但架构文章还必须说明车身、底盘、油路、刹车和仪表盘。

3. 它在现代 Agent 里通常以什么方式存在

今天很多看起来很不同的 Agent,底层仍然共享 ReAct 式闭环,只是外面套上了更多系统层:

  • 规划层
  • 验证层
  • 记忆层
  • 审批层
  • 多代理协作层

所以更合理的说法不是“某系统是 ReAct 架构”,而是:

该系统内部包含 ReAct 式运行机制。

五、把状态带出单轮:Memory Agent 真正改变的是什么

Memory Agent 常被写成一种“新的 Agent 类型”,但更严谨地说,它本质上是在架构里引入了持久状态层

1. 它为什么重要

只靠当前对话窗口的 Agent,做短任务没问题; 一旦任务横跨多轮、多天、多项目,就会立刻暴露失忆问题。

所以 Memory 的价值在于让系统开始记住:

  • 当前任务的中间状态
  • 项目级规则
  • 用户偏好
  • 历史决策
  • 已验证过的事实

2. 它通常分几层

比较实用的分法是:

  • 短期上下文:当前轮和当前会话
  • 会话记忆:最近若干轮任务状态
  • 项目记忆:仓库规则、团队约定、项目说明
  • 长期偏好:用户风格、习惯、常用路径

3. 它带来的收益与新风险

收益很直观:

  • 连续性更强
  • 个性化更好
  • 重复解释更少
  • 长任务恢复能力更强

但风险也同样明显:

  • 错误信息会被“记牢”
  • 旧结论可能污染新任务
  • 记忆过多会拖慢和扰乱决策

所以 Memory 不是“存得越多越高级”,而是“存得越准、越分层、越可治理越好”。

六、把复杂任务拆开:Multi-Agent 什么时候真的有价值

Multi-Agent 是最容易被神化的形态。 很多人一听“多个 Agent 协作”,就自动联想到更高级。 但现实里它是否值得上,关键看并发收益能不能覆盖协调成本。

1. 它解决的根本问题是什么

不是“让画面更像科幻片”,而是解决这些真实工程问题:

  • 一个上下文装不下所有内容
  • 一个 Agent 同时兼顾探索、执行、审查太累
  • 某些子任务天然可以并行
  • 不同子任务需要不同角色视角

2. 常见的协作拓扑

常见形式包括:

  • Manager - Worker
  • Planner - Coder - Reviewer
  • Researcher - Executor - Synthesizer

这些形态的共同点,是把原本塞在一个 Agent 脑子里的事情,拆给多个角色单元。

3. 它必须新增哪些系统模块

只要进入 Multi-Agent,系统就几乎一定要补上:

  • 代理编排器
  • 消息或任务协议
  • 共享状态
  • 结果合并器
  • 冲突消解策略

否则看起来是多代理,实际只是在放大混乱。

4. 什么时候不该上 Multi-Agent

如果任务:

  • 很短
  • 很直接
  • 没什么可并行
  • 上下文也不大

那一个设计良好的单 Agent 往往更划算。 Multi-Agent 最怕的不是“不够聪明”,而是“协调开销比任务本身还贵”。

七、更接近 Claude Code 与 Codex 的先进形态:运行时编排型 Coding Agent 系统

到这里,前面的几种形态已经足以解释很多 Agent。 但像 Claude Code、Codex 这类现代 coding agent,通常已经不再适合被简单叫成“更强的单 Agent”。

更合适的抽象是:

运行时编排型 Coding Agent 系统。

这个名字的重点有两个:

  • 它是一个系统,而不是单个会说话的模型
  • 它有运行时,也就是能持续感知环境、调用能力、治理风险并维持任务状态的执行底座

1. 先说边界:什么是官方公开能力,什么是合理架构抽象

对于 Claude Code 与 Codex 这类产品,最稳妥的写法应该始终区分两层:

  • 官方公开能力
  • 合理架构抽象

官方公开能力通常能看到的是:

  • 读写代码与文件
  • 运行终端命令
  • 接入外部工具或 MCP
  • 使用项目级指令、规则或记忆
  • 权限审批与环境限制
  • 代码验证、检查或审查相关能力
  • 子任务、并行任务或后台任务能力
  • 本地或云端运行环境

而“内部到底是不是固定三代理协作、是不是某种专有调度器、是不是某个具体记忆图谱”,如果厂商没有公开说,就不该写成事实。

2. 为什么这类系统已经超出传统单 Agent

因为它们往往同时具备下面几层能力:

  • 一个主代理负责理解任务和总体推进
  • 一个运行时负责连接文件、终端、网络、工具和环境
  • 一层上下文治理负责限制提示词膨胀和规则污染
  • 一层权限治理负责审批、沙箱、边界控制
  • 一层验证闭环负责测试、审查、diff 检查和结果确认
  • 在某些场景下,还会有并行探索或子代理拆分

这说明它们真正先进的地方,不只是模型更强,而是:

把模型、工具、环境、权限、记忆、验证和编排做成了一个可以持续运行的代理系统。

3. 用架构语言怎么描述它们

如果做一个不冒进的抽象,可以把这类系统拆成五层:

  • 用户任务入口层
  • Agent Runtime 层
  • 工具与能力层
  • 状态与环境层
  • 治理与安全层

这五层之间的关键闭环通常是:

  • 任务进入
  • 理解与规划
  • 行动与观察
  • 验证与修正
  • 交付与状态沉淀

这已经不是传统“问一次答一次”的产品逻辑,而是明显的“代理运行时”逻辑。

4. 它和前面几种形态是什么关系

这类先进系统并不是把旧形态推翻,而是把它们组合起来。

  • 它内部可能仍有 ReAct 式循环
  • 某些任务可能使用 Planner-Executor 分层
  • 某些复杂任务可能演进成 Multi-Agent 或子代理
  • 项目规则和用户偏好让它具备 Memory 层
  • 高风险动作又会被 Workflow / Approval 骨架约束

也就是说,它不是“第七种完全无关的新物种”,而是多种架构与机制的系统级叠加

5. 为什么 coding agent 特别容易推动架构升级

因为代码任务天然满足几件事:

  • 任务链路长
  • 工具多
  • 环境强依赖
  • 结果可验证
  • 失败代价真实存在

这迫使系统不能只做“语言输出”,而必须补齐:

  • 规划
  • 执行
  • 观察
  • 记忆
  • 权限
  • 验证
  • 审计

所以 Claude Code / Codex 这类系统之所以值得单独讨论,不是因为它们只是“又一个 Agent 产品”,而是因为它们让 Agent 从概念演示走向了具备运行时与治理层的系统工程

最后把三者重新扣回去:以后怎么判断一篇 Agent 文章有没有讲清楚

看完这一篇,再回头看很多常见文章,你会发现最常见的问题其实很明确:

  • 把 ReAct 当成完整架构
  • 把 Memory 当成独立物种
  • 把 Multi-Agent 当成天然高级
  • 把 Claude Code / Codex 误解成“更强的单 Agent”

更合理的理解应该是:

  • 单 Agent、Workflow、Planner-Executor、Multi-Agent 属于组织形态
  • ReAct、规划-执行-验证闭环、并行探索属于运行机制
  • Planner、Memory、Tool Router、Sandbox、Verifier、Subagent Orchestrator 属于系统模块

所以一篇真正讲清楚 Agent 的文章,至少应该同时回答三件事:

  • 系统是怎么搭的
  • 任务是怎么跑的
  • 能力是由什么模块实现的

如果只讲其中一件事,就很容易产生“明明看了很多名词,脑子里却没有系统图”的感觉。

回到总文:AI Agent 全景指南:从基础认知到工程化落地 如果你想把大图重新串回去,可以把这篇当成第四章的展开版,再配合总文里的第二章“工作机制”和第三章“核心模块”一起看,三块就能真正扣上。