欢迎光临
我们一直在努力

用六个工程问题重构《Agentic Design Patterns》

六个工程问题重构《Agentic Design Patterns》

    • 一、先判断是否真的需要 Agent
      • 1.1 四级复杂度
      • 1.2 升级原则
    • 二、问题一:如何拆任务和控制流程
      • 2.1 控制流的复杂度阶梯
      • 2.2 五个关键选择
      • 2.3 流程控制的底线
    • 三、问题二:如何安全连接外部世界
      • 3.1 五类能力不要混用
      • 3.2 证据与动作必须受控
      • 3.3 外部连接的底线
    • 四、问题三:如何管理概率性错误
      • 4.1 先分类,再恢复
      • 4.2 Reflection 必须依赖外部标准
      • 4.3 恢复必须是有界状态机
    • 五、问题四:如何管理状态
      • 5.1 五层状态
      • 5.2 任务状态必须显式、可恢复
      • 5.3 记忆与学习是数据治理
    • 六、问题五:如何约束自主性
      • 6.1 先定义自治包络
      • 6.2 四个确定性边界
      • 6.3 自主性的底线
    • 七、问题六:如何证明系统值得上线
      • 7.1 从正确的基线开始
      • 7.2 六层评估
      • 7.3 用消融实验删除伪价值
      • 7.4 Level 3 的准入门槛
      • 7.5 上线最低门槛
    • 八、贯穿案例:退款系统如何逐级演进
      • 8.1 五个阶段
    • 九、21 个模式的工程定位
      • 9.1 模式不是功能清单
    • 十、架构评审清单
      • 10.1 六问即可筛掉大部分伪复杂度
    • 十一、总结:Agent 工程的本质是约束复杂度
      • 11.1 六个问题组成同一个控制闭环
      • 11.2 生产 Agent 的正确心智模型
      • 11.3 六条生产不变量
      • 11.4 六个工程问题的最终答案
      • 11.5 复杂度升级的最终边界

《Agentic Design Patterns》学习地址

《Agentic Design Patterns》提供了 21 个模式,但模式目录并不等于工程决策顺序。如果把 Prompt Chaining、Planning、Reflection、Memory、MCP、A2A 等能力全部装进系统,常见结果不是更智能,而是更贵、更慢、更难排障。

更有效的读法,是把全书压缩为六个生产问题:

  • 问题一:如何拆任务和控制流程?
  • 问题二:如何安全连接外部世界?
  • 问题三:如何管理概率性错误?
  • 问题四:如何管理状态?
  • 问题五:如何约束自主性?
  • 问题六:如何证明系统值得上线?
  • 它们对应一条更自然的研发主线:

    控制流程 → 连接事实与动作 → 验证和恢复 → 管理状态 → 约束自主性 → 评估上线价值


    一、先判断是否真的需要 Agent

    1.1 四级复杂度

    Level系统形态适用问题新增代价
    Level 0 单次或少量 LLM 推理 摘要、抽取、分类、改写 输出不确定性
    Level 1 LLM + Tool / RAG / MCP 实时事实、精确计算、外部动作 权限、数据与工具故障
    Level 2 Planning + Reflection + Memory 多步骤、动态路径、失败恢复 状态、循环、恢复与评估
    Level 3 Multi-Agent + A2A 独立权限、组织或生命周期边界 通信、交接、一致性与治理

    1.2 升级原则

    1)始终选择最低有效复杂度

  • 确定性代码能解决,就不用 LLM。

  • 一次调用能解决,就停在 Level 0。

  • 需要外部事实或动作,才进入 Level 1。

  • 需要动态计划、任务状态和恢复循环,才进入 Level 2。

  • 只有存在独立责任主体,才考虑 Level 3。

  • 每次升级都必须通过评估证明净收益。

  • 核心判断

  • 绝大多数企业应用的合理终点是 Level 2:单 Agent + 显式工作流 + 工具 + 状态 + 验证 + 人工审批。

    多 Agent 是组织和系统边界带来的结果,不是角色提示词越多越高级。


    二、问题一:如何拆任务和控制流程

    所有 Agent 首先都是控制流系统。工程上真正要回答的是:下一步做什么、依据是什么、失败后去哪里、何时停止。

    2.1 控制流的复杂度阶梯

    一次调用

    固定顺序:Prompt Chaining

    条件分支:Routing

    独立任务:Parallelization

    动态路径:Planning

    资源竞争:Prioritization

    2.2 五个关键选择

    1)固定路径优先使用 Prompt Chaining 步骤可预先确定时,用分阶段流水线即可:

    抽取事实 → 校验结构 → 执行分析 → 生成结果

    关键不是多调用几次模型,而是单一职责、结构化传递、逐步校验和局部重试。 2)出现分支时再增加 Routing 路由优先级通常是:业务规则 → 轻量分类器 → Embedding → 通用 LLM。LLM 可以判断用户意图,但身份、权限、金额和安全等级必须由确定性系统裁决。 3)只有无数据依赖的任务才能并行 并行的难点在 Join,而不在 Fork。必须提前定义 Reducer、超时、并发上限、冲突处理和部分成功语义;否则只会把单点问题变成分布式问题。 4)路径无法预先枚举时才使用 Planning 推荐受约束的 Planner–Executor:

    目标、约束、预算

    Planner 生成结构化计划

    Executor 执行当前步骤

    验证器检查结果
    ├─ 通过:继续
    ├─ 环境变化:局部重规划
    ├─ 可恢复错误:恢复
    └─ 高风险或预算耗尽:停止或转人工

    计划至少应包含步骤、依赖、预期输出、验收条件、风险和状态,而不是一段自然语言愿望。 5)Prioritization 本质是资源调度 优先级应综合安全与合规、截止时间、业务价值、依赖、执行成本和 Aging,不能只让 LLM 输出“高、中、低”。

    2.3 流程控制的底线

    控制流尽量掌握在确定性系统中,模型只负责需要语义理解和动态决策的节点。所有循环都必须设置次数、时间、Token、费用和工具调用上限。

    重点监控端到端成功率、无效步骤率、重规划次数、关键路径 p95、单任务调用数和预算耗尽率。


    三、问题二:如何安全连接外部世界

    LLM 不能仅凭文本获知实时状态,也不能真正完成业务动作。外部连接要区分“获取证据”“执行动作”和“跨主体协作”。

    3.1 五类能力不要混用

    需求能力核心定位
    查询文档和政策 RAG 提供可追溯证据
    计算或调用业务 API Tool Use 执行结构化动作
    标准化暴露资源和工具 MCP Agent 与外部能力的接入协议
    委派给独立 Agent A2A Agent 间发现、任务和状态协议
    操作无 API 的遗留系统 GUI / 浏览器自动化 最后手段,风险最高

    3.2 证据与动作必须受控

    1)RAG 解决“依据什么回答” 可靠链路是:权限过滤 → 检索 → 重排 → 证据筛选 → 基于证据生成 → 引用校验。没有足够证据时应拒答;引用不支持结论,只是给幻觉附上链接。 2)Tool Use 解决“如何执行动作” 模型只能提出结构化调用意图,执行权属于运行时:

    模型提出调用

    Schema 与参数白名单

    身份、权限和业务策略

    风险门或人工审批

    执行工具

    读取真实状态验证

    记录回执、审计和检查点

    必须区分:模型建议、运行时接受、工具技术成功、业务最终生效。HTTP 200 不代表资金已经到账,模型说“退款成功”更不代表退款发生过。 3)MCP 解决接入,A2A 解决独立主体协作 MCP 像通用插座,不会自动提供权限、幂等、事务、真实性和审计。A2A 只适合拥有独立身份、权限、部署和责任的 Agent;同一应用中的不同 Prompt,通常只是函数、工具或工作流节点。

    3.3 外部连接的底线

    网页、文档、用户文件、工具结果、MCP Server 和其他 Agent 消息都应视为不可信数据。有副作用的工具至少需要最小权限、参数白名单、幂等键、限流熔断、写前确认、写后验证、审计和补偿。

    模型可以提出动作,但不能自行获得执行权。


    四、问题三:如何管理概率性错误

    传统程序会抛异常,Agent 还会“正常返回错误答案”。因此,可靠性不能只依赖 try/catch。

    4.1 先分类,再恢复

    错误类型示例正确策略
    模型质量错误 遗漏约束、错误归纳 外部验证、Reflection、局部修订
    瞬时系统错误 超时、限流 有界重试、指数退避
    永久系统错误 接口不存在、能力不支持 停止或切换方案
    业务错误 库存或订单状态变化 刷新事实、局部重规划
    安全错误 越权、注入、危险操作 立即阻断并审计
    部分成功 一项成功、另一项失败 Checkpoint、Saga 补偿或人工接管

    对非幂等写操作盲目重试,可能把一次故障升级为重复扣款或重复下单。

    4.2 Reflection 必须依赖外部标准

    1)可靠闭环

    生成候选 → 测试、事实或 Rubric 验证 → 定位缺陷 → 局部修改 → 重新验证 → 达标或预算耗尽

    算术、Schema、权限、SQL 和业务规则交给程序校验。Generator 与 Critic 若只是同一模型在相同上下文中互相认同,增加的往往只有 Token。 2)推理技巧按需启用 ReAct 适合工具循环,PAL 适合把计算交给程序,Tree of Thoughts 适合高价值小规模搜索,Self-consistency 适合多候选投票。它们都在用成本和延迟换质量,必须通过消融实验验证。

    4.3 恢复必须是有界状态机

    发现异常 → 分类
    ├─ 瞬时错误:退避重试
    ├─ 能力不可用:降级或 Fallback
    ├─ 计划失效:局部重规划
    ├─ 部分副作用:补偿
    ├─ 安全错误:阻断
    └─ 无法处理:HITL
    → 验证恢复结果 → 继续、降级或受控终止

    可靠性来自错误分类、外部验证、检查点和有界恢复,而不是对模型智力的乐观预期。


    五、问题四:如何管理状态

    Context、State、Session、Memory 和 Learning Data 不是同一件事。

    5.1 五层状态

    层次内容生命周期
    Context 当前提示、消息和工具结果 单次模型调用
    Task State 目标、计划、进度、预算、错误 单次任务
    Session State 会话内结构化信息 会话级
    Long-term Memory 已确认偏好和历史事实 跨会话
    Learning Data 轨迹、反馈、标签和评估 离线迭代

    5.2 任务状态必须显式、可恢复

    一个最小任务状态应包含:

    task_id、goal、constraints、plan_version、current_step
    verified_facts + provenance、tool_receipts、approvals
    budget_remaining、errors、checkpoint_version、final_status

    把所有内容塞进聊天历史,无法可靠支持版本、并发、审计和恢复。

    5.3 记忆与学习是数据治理

    1)长期记忆必须可追溯 记忆需要来源、置信度、用户确认、版本、可见范围、过期时间和删除机制。未经验证的结论、敏感属性推断和一次性细节不应自动沉淀。

    RAG 访问外部权威知识,Memory 召回历史经验,State 保存当前执行事实,Context 是本次模型实际看到的内容;不要把四者混进同一个向量库。 2)生产学习优先走离线闭环

    收集轨迹 → 脱敏筛选 → 标注 → 离线评估
    → 更新提示、路由、检索或模型 → 灰度发布 → 监控与回滚

    未经筛选的在线反馈可能造成反馈投毒和错误放大。Memory 的目标不是让模型“记得更多”,而是让信息有来源、权限和生命周期。


    六、问题五:如何约束自主性

    自主性不是模型性格,而是一组明确授权。系统必须能说明 Agent 可以决定什么、访问什么、花费多少,以及何时必须停机或转人工。

    6.1 先定义自治包络

    自治包络包括:目标范围、数据权限、可用工具、允许的副作用、时间与费用预算、人工审核阈值,以及停止、降级和回滚条件。

    6.2 四个确定性边界

    1)Goal 必须可验证 “帮用户完成退款”过于模糊。工程化目标应同时包含成功指标、约束、预算、截止时间、非目标、停止条件和最终责任主体。

  • 一个可执行目标
  • 仅在订单满足政策、金额经程序计算、身份验证通过并获得用户确认后,提交一次带幂等键的退款请求;任何权限、金额或状态异常都转人工。

    2)Guardrails 必须纵深部署

    输入检测 → 身份与权限 → 租户隔离 → 工具策略网关
    → 执行沙箱 → 输出与事实校验 → 人工审批 → 审计与应急停机

    System Prompt 中的“不要执行危险动作”不是安全边界。 3)HITL 必须提供可决策证据 人工节点应明确触发条件、审核人、证据包、批准/修改/拒绝选项、超时转派、恢复 Checkpoint 和审计记录。只展示“是否允许继续”,是在让人替黑箱背书。 4)资源预算也是权限 简单任务用小模型,复杂任务按质量门升级;稳定结果可缓存,独立 I/O 可受限并行。安全任务不能降级到不满足能力下限的模型,预算耗尽后必须停止或转人工。

    6.3 自主性的底线

    自主性越高,确定性约束越要前置。


    七、问题六:如何证明系统值得上线

    Demo 能跑通,不代表系统比更简单的方案更好。上线评估必须同时覆盖质量、成本、延迟、风险和业务收益。

    7.1 从正确的基线开始

    确定性程序 → Level 0 → Level 1 → Level 2 → Level 3

    只把新 Agent 与“完全没有系统”比较,无法证明新增复杂度有价值。

    7.2 六层评估

    层次关键指标
    组件 路由准确率、Recall@K、工具参数合法率
    轨迹 无效步骤率、循环率、恢复路径正确率
    结果 正确性、忠实度、完整性、引用正确率
    系统 p95 延迟、成本、可用性、超时率
    安全 越权、泄漏、注入成功率、危险动作数
    业务 解决率、转化率、节省工时、风险下降

    最终答案正确但执行过危险副作用,仍然失败;轨迹合理但没有解决业务问题,也没有价值。

    7.3 用消融实验删除伪价值

    逐一关闭 RAG、Reflection、Planner、Memory 或 Multi-Agent,比较质量、成本和延迟变化。无法在代表性任务集上证明贡献的模式,不应因为“更 Agentic”而保留。

    7.4 Level 3 的准入门槛

    1)这些情况应停在 Level 2 能力属于同一系统,权限和状态可集中管理,子任务可表达为工具或节点,多个角色只是不同 Prompt,且编排器能够掌握完整过程。 2)这些情况才考虑 Level 3 Agent 由不同组织或供应商拥有,数据与权限不能合并,独立部署和演进,任务异步且生命周期长,或必须支持运行时发现、协商、拒绝和跨框架互操作。

    有多个角色不是 Multi-Agent;存在多个独立责任主体,才是 Multi-Agent。

    7.5 上线最低门槛

    核心评估集、失败长尾集和红队集通过;关键动作可审计;超时、限流、部分成功和补偿经过演练;成本与延迟满足 SLO;HITL 有 SLA;支持灰度与回滚;相对更简单基线存在可量化净收益。


    八、贯穿案例:退款系统如何逐级演进

    8.1 五个阶段

    1)普通程序 订单查询、资格判断和金额计算都由规则完成。规则稳定、输入明确时,这就是最优方案。 2)Level 0:LLM 只负责语言 LLM 理解意图、抽取订单信息、解释规则结果;业务真相仍由程序负责。 3)Level 1:连接知识与动作 RAG 检索当前政策,Tool 查询订单和支付状态,程序计算金额,Tool 创建退款单。此时重点是证据、权限、幂等、写后验证和审计。 4)Level 2:处理动态异常路径

    理解目标 → 查询事实 → 生成结构化计划 → 分步执行并保存检查点
    → 规则验证 → 局部恢复或重规划 → 高风险节点 HITL → 验证最终状态

    跨供应商订单、部分退款和状态变化需要显式 State、预算、Reflection 和恢复策略;一个状态图通常已经足够。 5)Level 3:跨越真实组织边界 只有当支付 Agent、供应商 Agent 等由不同团队独立运营,并拥有独立认证、权限、部署和长任务状态时,A2A 才有实际价值。否则,把订单、政策和支付分别命名为三个 Agent,只是一次多余的分布式改造。


    九、21 个模式的工程定位

    9.1 模式不是功能清单

    原书模式主要问题生产定位
    Prompt Chaining 流程 固定分阶段流水线
    Routing 流程 按意图、状态或风险选择路径
    Parallelization 流程 无依赖任务的受限 Fork/Join
    Planning 流程 无法预先枚举步骤时动态计划
    Prioritization 流程 / 自主性 资源竞争下的任务调度
    Tool Use 外部连接 结构化行动接口
    RAG 外部连接 带证据的知识访问
    MCP 外部连接 资源与工具接入协议
    A2A 外部连接 / 评估 独立 Agent 间任务协议
    Reflection 错误 基于标准或证据局部修订
    Exception Recovery 错误 重试、回退、补偿和恢复
    Reasoning Techniques 错误 节点内部按需启用的推理策略
    Memory Management 状态 跨步骤、跨会话的信息治理
    Learning and Adaptation 状态 / 评估 基于轨迹与反馈的离线改进
    Goal Monitoring 自主性 成功标准、进度和停机条件
    Human-in-the-Loop 自主性 风险、责任和人工审批边界
    Guardrails 自主性 输入、执行和输出的纵深防御
    Resource Optimization 自主性 / 评估 质量、成本和延迟调度
    Evaluation and Monitoring 评估 发布门禁与持续运营基础
    Multi-Agent Collaboration 评估 需要数据证明的特殊升级
    Exploration and Discovery 评估 预算受限、可复现的沙箱搜索

    十、架构评审清单

    10.1 六问即可筛掉大部分伪复杂度

    维度关键问题
    流程 固定代码是否足够?分支、并行、循环和停止条件是否显式?
    外部连接 事实是否有来源和权限?副作用是否幂等、可验证、可审计、可补偿?
    错误 是否分类错误?重试是否有界?是否支持部分成功和 Checkpoint?
    状态 Context、State、Session、Memory 是否分层并具备版本与生命周期?
    自主性 权限、预算、HITL、Kill Switch、降级和回滚是否明确?
    评估 是否与简单基线比较?每项模式是否通过消融实验证明贡献?

    十一、总结:Agent 工程的本质是约束复杂度

    11.1 六个问题组成同一个控制闭环

    六个问题不是六组可以自由堆叠的功能,而是一条从能力到责任的因果链:

    目标与约束

    确定性编排决定流程

    LLM 处理语义理解、候选生成和动态决策

    RAG / Tool / MCP 获取事实并执行动作

    验证、Reflection 与 Recovery 处理偏差

    State / Checkpoint 支撑连续执行与故障恢复

    Guardrails / HITL 限制权限、预算和风险

    Evaluation 用质量、成本、延迟、安全和业务价值决定是否保留

    缺少流程控制,系统会随机游走;缺少外部事实,答案会停留在语言幻觉;缺少验证与恢复,错误会沿链路放大;缺少显式状态,任务无法审计和续跑;缺少自治边界,模型建议可能直接变成危险动作;缺少评估,复杂度就只剩演示价值。

    11.2 生产 Agent 的正确心智模型

    生产 Agent 更准确的定义是:受确定性运行时约束的概率性控制器。模型负责处理语义不确定性,但执行权、事实源、状态转移和安全策略仍属于软件系统。

    层次主要职责工程底线
    模型层 理解意图、生成候选、辅助规划与综合 输出永远视为待验证建议
    编排层 路由、状态转移、预算、重试、停止和恢复 控制流显式且可重放
    知识与工具层 提供权威事实、精确计算和业务动作 权限、Schema、幂等、写后验证
    策略与安全层 身份、租户、风险门、审批和沙箱 模型不能自行扩大权限
    观测与评估层 记录轨迹、成本、质量、安全和业务结果 能定位失败,也能证明收益

    框架可以帮助实现链、图、工具和多 Agent 通信,但不会自动解决数据可信度、事务语义、权限治理、失败恢复和业务验收。这些仍然是架构本身的责任。

    11.3 六条生产不变量

    1)结构化契约优先于自然语言传递 步骤之间传递类型化状态,明确字段、来源、版本和验收条件。自然语言适合表达语义,不适合承担稳定 API 契约。 2)事实、动作和结论必须可追溯 每个关键结论都能回到证据,每次工具调用都保留参数与回执,每个副作用都能确认是否真正生效。 3)所有循环和副作用必须有边界 循环要有次数、时间、Token、费用和调用预算;写操作要有最小权限、幂等键、审批、补偿和审计。 4)状态必须支持恢复,而不只是“记住” 任务状态应记录计划版本、当前步骤、已验证事实、工具回执、审批、预算和 Checkpoint,确保超时或中断后可以安全续跑。 5)高风险决策必须绑定责任主体 权限、金额、安全和合规由确定性策略裁决;HITL 要提供证据、选项、SLA 和恢复点,而不是让人替一句黑箱结论背书。 6)每一层复杂度都必须证明净收益 以确定性程序和低 Level 方案为基线,通过离线集、红队集、消融实验和线上指标证明质量收益高于新增成本、延迟与风险。

    11.4 六个工程问题的最终答案

    工程问题核心答案最常见误区
    如何控制流程 固定流程优先;分支、并行、规划按真实动态性逐级增加 把普通状态机包装成自由规划
    如何连接外部世界 RAG 提供证据,Tool 执行动作,MCP 标准化接入,A2A 连接独立主体 把接入协议误当安全与信任机制
    如何管理错误 先分类,再验证、重试、降级、补偿、重规划或转人工 用“再想一次”替代外部验证
    如何管理状态 Context、Task State、Session、Memory 和 Learning Data 分层治理 把聊天历史或向量库当万能状态库
    如何约束自主性 用 Goal、权限、预算、Guardrails、HITL 和 Kill Switch 定义自治包络 只靠 System Prompt 约束危险行为
    如何证明上线价值 比较简单基线,评估组件、轨迹、结果、系统、安全和业务六层指标 只展示成功 Demo,不评估长尾与副作用

    11.5 复杂度升级的最终边界

    确定性代码
    ↓ 只有语义理解不确定
    Level 0:单次 LLM
    ↓ 只有外部事实或动作需求
    Level 1:RAG / Tool / MCP
    ↓ 只有动态多步、状态和恢复需求
    Level 2:单 Agent + 显式工作流
    ↓ 只有独立组织、权限、部署或生命周期边界
    Level 3:Multi-Agent + A2A

    Level 2 通常已经是企业 Agent 的合理终点。只有被委派方拥有独立身份和责任,能够拒绝、延期、要求补充信息并独立演进时,Multi-Agent 才不是角色扮演,而是真正的分布式协作。

    经典软件工程并未因 Agent 出现而失效。模块化、类型契约、状态机、事务、容错、安全、测试和可观测性,反而因为模型具有概率性而变得更重要。

    不要追求最 Agentic 的架构,要追求在真实约束下能够被证明有效的最低复杂度架构。

    赞(0)
    未经允许不得转载:171主机测评 » 用六个工程问题重构《Agentic Design Patterns》
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址