附录 B:模式选择指南

面对一个真实需求时,该用哪个模式?这份指南帮你快速决策。原则贯穿全书:能简单就别复杂,能单 Agent 就别多 Agent。

决策一:要不要上 Agent?

先问最根本的问题——这事真的需要 Agent 吗?

  • 一次 LLM 调用能解决(翻译、改写、分类)→ 不需要 Agent,直接调模型。
  • 需要调用外部工具、多步骤、看结果再决定 → 需要 Agent(第 1 章)。
  • 只是固定流程的自动化,步骤完全确定 → 考虑普通脚本,Agent 的不确定性反而是负担。

Agent 的价值在“自主决策”。流程越确定,越不需要 Agent。

决策二:单 Agent 还是多 Agent?

情况选择
职责单一、上下文装得下单 Agent(Part 1–4)
职责很杂、一个 prompt 塞不下多个角色多 Agent
上下文会被大量子任务塞爆多 Agent(隔离上下文)
需要独立视角(生成者 vs 批评者)多 Agent
能单 Agent 解决就用单 Agent——多 Agent 成本/复杂度高得多

决策三:单 Agent 用哪个增强?

  • 复杂任务、易遗漏步骤 → Planning 规划(第 13 章)
  • 输出容易出错、需要纠正 → Reflection 反思(第 14 章),优先用真实反馈
  • 复杂推理、算数/逻辑 → Chain-of-Thought(第 15 章)或推理模型
  • 需要探索多种方案、会走进死路 → Tree-of-Thoughts(第 20 章,很贵)

决策四:多 Agent 用哪种编排?

任务特征模式章节
结构清晰、有中心协调Supervisor(主管)第 16 章
任务间有明确依赖、要并行DAG 工作流第 17 章
开放/对话式、流程无法预排Swarm(去中心交接)第 18 章
有明确对错、要提升可靠性Debate(辩论)第 21 章
又广又深的调研Research-Synthesis第 22 章

一句话记忆:结构化任务 → 主管/DAG;动态任务 → Swarm;要可靠 → Debate;要调研 → Research-Synthesis。

决策五:工具、技能还是扩展?

pi 里三个扩展面容易混,按“你要注入什么”选:

你要…章节
给 Agent 一个原子动作能力Tool 工具第 4 章
接入别人做好的通用能力MCP第 5 章
封装一套领域工作流/方法论Skill 技能第 7 章
注入规则、拦截、控制循环Extension/Hook 扩展第 8 章

记忆口诀:Tool = 动作,MCP = 接现成,Skill = 工作流,Hook = 控制点。

决策六:上下文与记忆怎么管?

先把四个概念分清。它们经常被混用,但在 pi 这种 harness 视角下,职责并不一样:

概念解决的问题pi 里通常对应生命周期常见误用
Storage(存储)信息放在哪里、如何持久化?会话文件、数据库、对象存储、向量库、外部系统由业务决定,可长期保存以为“存下来了”就等于模型会自动记得
Memory(记忆)哪些信息值得跨会话回忆?memory 扩展提炼出的偏好、事实、经验,再按需注入 context跨会话,需提炼和遗忘把原始聊天记录当记忆,导致噪声越来越多
State(状态)当前任务跑到哪一步?session tree、pending tool calls、计划进度、工作目录、分支、运行中任务状态一次 run、一个 session 或一个后台任务把临时进度写进长期记忆,后续反而误导 Agent
Context(上下文)这一次模型调用能看到什么?当前 messages、system prompt、工具结果、检索片段、压缩摘要单次调用或当前会话窗口把所有历史都塞进窗口,直到 token 爆掉

一句话区分:

  • Storage 是存放介质:它只回答“东西在哪里”。
  • Memory 是可回忆的长期信息:它回答“下次还值得记住什么”。
  • State 是运行中的机器状态:它回答“这件事进行到哪了”。
  • Context 是喂给模型的窗口内容:它回答“这一次模型实际看见什么”。

做决策时按场景选:

  • 单次会话内快满了 → Compaction 压缩 Context(第 9 章),保重点、丢细节
  • 需要跨会话记住偏好/事实 → Memory 记忆(第 10 章),先提炼再注入
  • 需要恢复/回溯/分支 → State + 会话树(第 12 章),保存任务进度而不是塞进记忆
  • 需要长期保存原始资料/日志/向量 → Storage,再通过工具、MCP、RAG 或 memory 扩展取回

决策七:生产化清单

上生产前,逐项过(详见第 35 章清单):

  • 成本 → 预算控制 + 分层模型(第 25、33 章)
  • 知识 → RAG 来源引用 + 版本更新(第 11 章)
  • 可观测 → 持久化会话 + 成本归因(第 25 章)
  • 质量 → 任务集 + 会话回放 + RAG 评测(附录 D)
  • 安全 → 隔离 + 确认门(第 7、27 章)
  • 治理 → 策略 + 审计(第 27 章)
  • 部署 → RPC/后台/多租户 + 回滚降级(第 23、32、28 章,附录 E)

决策八:隔离用哪种强度?

信任程度隔离章节
自己用、跑自己代码进程级 + 危险命令确认第 8 章
处理不可信输入容器级(Docker)第 28 章
多租户、面向公网微 VM(Gondolin)+ 每租户隔离第 27、28 章

别过度隔离(慢、重),也别隔离不足(一次事故就够受)。

一条总原则

从最简单的方案开始,只在确实撞到墙时才升级到更复杂的模式。每加一层复杂度,都要问:“这值得吗?”