Week 23 复习——5 种 Agent 模式总结与决策树
整合 Day 149-154 的 5 种 agent 模式(Anthropic 5+1 + 自定义维度);明确每种的"判定信号"
日期: 2026-10-03 方向: AI系统工程 / Agent 阶段: Phase 3 - Agent架构与多Agent (Day 149-162) 标签: #Review #AgentPatterns #DecisionTree #AntiPatterns
今日目标
| 类型 | 内容 |
|---|---|
| 学习 | 整合 Day 149-154 的 5 种 agent 模式(Anthropic 5+1 + 自定义维度);明确每种的"判定信号" |
| 实操 | 把 5 种模式画成决策树;列每种的"反例";写 agent_patterns.md |
| 产出 | agent_patterns.md(约 600 行 markdown)+ 决策表 |
一、本周学到了什么
| Day | 主题 | 关键收获 |
|---|---|---|
| 149 | Agent 定义 | Workflow vs Agent vs Chatbot 严格区分;Anthropic 5+1 pattern |
| 150 | ReAct | 裸 SDK 实现 tool-use loop;thinking + tool_use 模式 |
| 151 | Plan-Execute | 分离 planner/executor;DAG 并行;replan 机制 |
| 152 | Tool design | Description 决定 80% 行为;schema/error/parallel |
| 153 | MCP | resources/prompts/tools 三类原语;Claude Desktop 接入 |
| 154 | A2A | 双 agent 通信、轮次/终止/角色 collapse |
二、5 种核心 agent 模式(重新组织)
把 Anthropic 5+1 pattern 与本周代码对应:
模式 1: Workflow(非 agent)
定义:LLM + 代码 if/else 编排,没有 LLM 自主决定下一步。 子类:Prompt chaining / Routing / Parallelization / Evaluator-optimizer。 何时用:步骤明确、失败成本低、需要可预测。
# 例: 信贷审批 workflow
def credit_workflow(application):
docs = parse_docs(application) # tool
summary = llm_summarize(docs) # LLM
risk = llm_classify(summary, schema=RISK) # LLM, structured
if risk == "HIGH":
return escalate_to_human(summary, risk)
decision = llm_decide(summary, rules=POLICY) # LLM
return decision
模式 2: ReAct Agent(Day 150)
定义:单 LLM + tools + loop(Thought → Act → Observe)。
判定信号:探索式任务、tool 集合明确、步骤数 ≤ 10。
典型代码:react.py + tools.py。
模式 3: Plan-Execute Agent(Day 151)
定义:Planner LLM + Executor LLM + Synthesizer LLM。
判定信号:长任务(5+ steps)、可分解、有 DAG 依赖、希望 model-route 省钱。
典型代码:plan_agent.py。
模式 4: Multi-Agent(Day 154 + 159)
定义:N≥2 个 agent,各有不同 role,通过通信协议协作。 子类:双 agent 对话 / Hierarchical / Sequential / Network。 判定信号:角色冲突明显、需要 different perspectives、单 agent 易陷入 echo chamber。
模式 5: MCP-Based Agent(Day 153)
定义:客户端 agent + 1+ MCP servers。Tools/resources/prompts 通过协议解耦。
判定信号:跨厂商互通、希望工具复用、企业级权限隔离。
典型代码:mcp_server.py + Claude Desktop 配置。
注意:MCP-based 不与 ReAct/Plan-Execute 互斥。一个 ReAct agent 完全可以通过 MCP 拿 tools。MCP 是"工具来源"维度,ReAct 是"loop 模式"维度。
三、决策树(新建项目时怎么选)
┌────────────────────────────────────────────────┐
│ Q1: 任务步骤可预先列出且固定吗? │
└────────────────┬───────────────────────────────┘
│
┌────────┴────────┐
│ │
Yes ▼ No ▼
┌──────────┐ ┌────────────────────────────┐
│ Workflow │ │ Q2: 任务步骤数 vs 探索性? │
│ │ └─────┬──────────────────────┘
│ • prompt │ │
│ chain │ ┌──────┴──────┐
│ • routing│ │ │
│ • parallel│ ≤3, 探索式 长 + 可分解
│ • eval- │ ▼ ▼
│ opt │┌──────────┐ ┌──────────────┐
└──────────┘│ ReAct │ │ Plan-Execute │
│ Agent │ │ │
└──────────┘ └──────────────┘
│
│ 有多个差异化角色?
▼
┌────────────────┐
│ Multi-Agent │
│ (hierarchical /│
│ sequential / │
│ network) │
└────────────────┘
另一维度(与上述正交):
Q3: 需要跨客户端复用工具 / 多 MCP server?
Yes → 把工具层换成 MCP(Day 153)
No → 工具内嵌在 agent 代码里
四、判定信号 cheat sheet
| 信号 | → 模式 |
|---|---|
| 步骤固定,每步 0-1 个 LLM call | Workflow |
| 任务用一句话描述,无明显步骤 | ReAct |
| 任务有 5+ 子任务,可并行 | Plan-Execute |
| 需要冲突视角(generator vs critic) | Multi-Agent (双) |
| 需要专业分工(writer/reviewer/researcher) | Multi-Agent (hier) |
| 跨产品复用相同工具 | + MCP |
| 实时延迟敏感(< 5s) | Workflow(agent 太慢) |
| 失败一次成本 > $1k | Workflow + human-in-loop |
| 决策需可审计 | Workflow 或 Plan-Execute(plan 可审) |
| 任务高度开放(research) | ReAct / Multi-Agent |
五、典型反例(哪些场景反而不该上 agent)
反例 1: 实时风控
为什么:要求 < 100ms 决策,agent loop 30s。 应该:纯 ML 模型 + 规则引擎;LLM 只用来做事后归因解释。
反例 2: 高频交易
为什么:μs 级敏感,LLM 慢且不确定。 应该:纯量化代码。LLM 只给 strategy idea,不参与实时决策。
反例 3: 已知 SOP 的报送
为什么:步骤完全固定,agent 增加变数和成本。 应该:Workflow + LLM 用来填模板/抽取字段。
反例 4: 简单 FAQ
为什么:单轮 RAG 就够,没必要 agent loop。 应该:RAG + 单次 LLM。
反例 5: 用户确认型操作("删账户吗?")
为什么:deterministic UI flow 更安全。 应该:Workflow + 显式 confirmation modal。
反例 6: 数学计算
为什么:LLM 算术不可靠。 应该:LLM → tool(calculator)→ LLM 解读。本质是 workflow。
六、agent_patterns.md 内容大纲
这部分是今天的产出文档大纲,可作为团队 onboarding 文档。
# Agent Patterns at [Company] — 内部决策手册
## 1. 词汇统一
- Workflow / ReAct / Plan-Execute / Multi-Agent / MCP
## 2. 决策树(见上)
## 3. 每种模式的标准结构 + 代码骨架
### 3.1 Workflow
- when to use
- 代码模板(routing example)
- 监控指标
### 3.2 ReAct
- when to use
- 代码模板(来自 Day 150)
- 监控指标(iter count, tool err rate)
### 3.3 Plan-Execute
- when to use
- 代码模板(来自 Day 151)
- 监控指标(plan length, replan rate)
### 3.4 Multi-Agent
- when to use
- 代码模板
- 监控(rounds, role collapse)
### 3.5 MCP layer
- when to integrate
- 配置示例
## 4. 反例集
(见上)
## 5. 评估清单
- ✅ Token cost / run
- ✅ Latency p50/p95
- ✅ Accuracy on golden set
- ✅ Tool error rate
- ✅ Human override rate
## 6. Postmortem 模板
当 agent 在生产出问题,按这个结构调查
七、对比表——5 种模式各项指标
| 维度 | Workflow | ReAct | Plan-Execute | Multi-Agent | + MCP |
|---|---|---|---|---|---|
| 复杂度 | 低 | 中 | 高 | 极高 | (正交) |
| LLM call/run | 1-3 | 3-15 | 5-12 | 6-30+ | (正交) |
| Cost/run | $0.005-0.02 | $0.02-0.10 | $0.02-0.06 | $0.10-0.50 | - |
| Latency | 1-5s | 10-30s | 8-25s | 30-120s | + 50ms/call |
| 可预测性 | 高 | 中 | 中 | 低 | - |
| 可审计性 | 高 | 中 | 高(plan 可审) | 中 | - |
| 调试难度 | 低 | 中 | 中 | 高 | + |
| 适合任务 | 步骤明确 | 探索性 | 分解性长任务 | 多角色 | 跨客户端 |
八、生产经验集锦(本周再总结)
8.1 普适经验
- 永远从 workflow 开始——只有数据证明不够再升级
- Cost 监控是必须,不是可选
- 永远有 max_iter / max_rounds / max_cost 三道闸
- Tool description 是高 ROI 优化点,比改 system prompt 收益大
- Cache 是 agent 经济性的关键(5-10x 差距)
- Human-in-the-loop 不是失败信号,是设计
8.2 反模式
- ❌ 直接上多 agent 框架而没跑过单 agent
- ❌ Tool description 写一行
- ❌ 没 cost cap 跑生产
- ❌ destructive tool 没 confirm
- ❌ 把 ReAct + Plan-Execute + Multi-Agent 全用上(炫技)
- ❌ 不区分"失败 retry" vs "失败停止"
- ❌ 不写 trace 直接发 prod
九、Web3 角度——本周复盘
适合 Web3 的模式
| 场景 | 模式 |
|---|---|
| 链上数据查询 + 解读 | ReAct (read-only) |
| Portfolio rebalancing | Plan-Execute(可审 plan) |
| 自动化 DeFi 操作 | Plan-Execute + 双 agent(trader + risk) |
| DeFi research / 协议对比 | Multi-Agent (researcher + critic) |
| 跨钱包/跨协议工具集成 | MCP-based |
Web3 特有约束(每种模式都要叠加)
- 写链动作必须 simulate first
- 用 session keys 限制权限
- destructive 必须 user 签
- 成本含 gas
- 错误含 revert reason
十、自我测试题(如果作为面试官,本周内容怎么考)
T1: 给定一个业务需求 "我希望 LLM 帮我做日终对账",应该用什么 agent 模式?为什么?
A: Workflow(步骤固定:取数 → 比对 → 异常列表 → 通知)。LLM 只做"异常归因"环节,不需要 agent loop。
T2: 给定一个业务需求 "客户经理对一个上市公司做尽调",应该用什么 agent 模式?
A: Plan-Execute 或 Multi-Agent。任务长且可分解(基本面 / 财务 / 治理 / 风险 / 同业)。如果想强化质量加 reviewer agent。
T3: 公司想标准化内部所有 agent 用的工具,应该选什么?
A: MCP。每个业务域一个 server,所有客户端(Claude Desktop / 自建 chat)都接入。权限/audit 集中。
T4: ReAct agent 经常 tool 选错,先怎么排查?
A: ① 先看 tool description 长度和清晰度;② 看 input_schema 是否够严;③ 看 system prompt 是否暗示选 tool 偏好;④ 检查 thinking 内容;⑤ 把不必要的 tool 去掉减少干扰。
T5: Multi-agent 系统跑了几个月,发现 cost 比单 agent 高 5x 但准确率只高 5%,怎么办?
A: ROI 不划算。降级到单 agent + self-reflect。或保留 multi-agent 但只在高价值任务(dollar value > X)启用,低价值任务降级。
十一、本周代码索引
| 文件 | 行数(含注释) | 核心功能 |
|---|---|---|
base_agent.py (149) | ~150 | BaseAgent 接口 + EchoAgent 测试 |
react.py (150) | ~280 | 裸 SDK ReAct loop |
plan_agent.py (151) | ~320 | Planner + Executor + Synthesizer |
tools.py (152) | ~480 | 10 个金融工具 + execute_tool framework |
mcp_server.py (153) | ~250 | MCP server with 3 tools/1 resource/2 prompts |
a2a.py (154) | ~280 | 双 agent 对话 |
| 总计 | ~1760 | 自实现的可运行 agent 基础设施 |
关键认知:1760 行 + 14 天 ≈ 一个工程师能掌握的最小 agent stack。再往后是产品化、评估、运维(Day 156+)。
十二、对照 Anthropic 5+1 vs 自家代码
| Anthropic Pattern | 本周对应代码 | 是否真的是 Agent? |
|---|---|---|
| Prompt chaining | (未单独写,类似 plan_agent 的 sequential 结构) | ❌ Workflow |
| Routing | (未单独写,需要时几行代码即可) | ❌ Workflow |
| Parallelization | tools.py 的 parallel demo | ❌ Workflow |
| Orchestrator-workers | plan_agent.py | 半-Agent |
| Evaluator-optimizer | a2a.py 的 reviewer 反复让 analyst 改 | 半-Agent |
| Agents (autonomous) | react.py | ✅ Agent |
看完这张表能解决面试官最常追问:"你这个项目里哪些是 agent 哪些是 workflow?"
十三、与生产系统的差距清单
本周写的代码距离"能给 1000 用户用"还差什么?
| 维度 | 当前 | 生产需要 |
|---|---|---|
| Persistence | 无(in-mem) | Postgres/Redis |
| Authn/Authz | 无 | OAuth + tenant 隔离 |
| Multi-tenancy | 无 | 按 tenant 分流 |
| Rate limiting | 无 | per-user / per-tenant |
| Observability | OTel + LangSmith / Helicone | |
| Cost FinOps | trace 里印 | 预算 + 报警 + 抑制 |
| Eval 自动化 | 手动 | CI 集成 |
| Failure handling | retry / max | circuit breaker / fallback |
| Deploy | python file | k8s + helm + canary |
| Docs / runbook | 无 | runbook + on-call |
| Security review | 无 | threat model + pen test |
这些是 Day 163-208 的内容预告(Phase 3 后半段会展开 observability / eval automation / production ops)。
十四、扩展练习(家庭作业 / 巩固)
- 改写
react.py加入 cost guardrail——超过 $0.50 自动停。 - 给
plan_agent.py加 DAG-aware parallel execution——独立 step 真正并发。 - 给
tools.py写tool_test.py——每个 tool 至少 3 个 unit test。 - 写 MCP client——不通过 Claude Desktop,直接 Python
mcp.client.stdio调你的mcp_server.py。 - 改
a2a.py加 evaluator agent——三方对话,evaluator 强制收敛。 - 设计一个"什么时候上多 agent" SOP 文档给团队用。
- 跑一遍真实金融案例:从 SEC 拉一份 10-K,跑 ReAct vs Plan-Execute,对比结果质量与成本。
十五、复习题集——本周 14 个核心问题
把这些问题的简短答案默写一遍,下次面试不用临时翻笔记:
-
Workflow 与 agent 的本质区别? 控制流:workflow 由代码决定下一步,agent 由 LLM 决定下一步。
-
Anthropic 5+1 pattern 是哪几种? Prompt chaining / Routing / Parallelization / Orchestrator-workers / Evaluator-optimizer / Agents。前 5 是 workflow 变体,最后一个才是真 agent。
-
ReAct 为什么比 Act-only 好? Thought 提供推理空间 + self-correct 余地。HotpotQA 上 +5pp。
-
Plan-Execute 适合什么场景? 长任务(5+ steps)、可分解、有 DAG 依赖、想 model-route 省钱。
-
Tool description 写多长合适? 100-200 字含 USE WHEN / DON'T USE FOR / 例子。Sweet spot。
-
MCP 三类原语? Resources(user 加载数据)/ Prompts(UI 模板)/ Tools(LLM 自主调)。
-
A2A 通信的 4 种范式? Message passing / Shared state / Orchestrator / Pub-Sub。
-
多 agent 系统最常见的 bug? 角色 collapse / 死锁 / token 爆炸 / 状态合并冲突 / prompt injection 横向扩散。
-
Anthropic stop_reason 的 5 个值? end_turn / tool_use / max_tokens / stop_sequence / pause_turn。
-
prompt caching 能省多少钱? 重复输入只算 0.1×。系统 prompt + tool schema 可省 80-90% 输入 cost。
-
Tool 错误的三类? USER_INPUT_ERROR(改参数 retry)/ TRANSIENT(backoff retry)/ FATAL(停止 escalate)。
-
MCP server 的 stdout 污染问题? 所有日志走 stderr / file,stdout 仅 JSON-RPC。print 任何东西破坏协议。
-
Anthropic 角色 alternation 限制? messages 必须 user/assistant 严格交替,否则 API 报错。多 agent 转译时要 coalesce。
-
何时不该上 agent? 实时风控、HFT、固定 SOP 报送、简单 FAQ、destructive 一锤子操作。
十六、本周复习——金融场景对应表
| 业务场景 | 推荐模式 | 备注 |
|---|---|---|
| 信贷尽调备忘录 | Plan-Execute(5+ steps) | Day 151 |
| 客户经理 copilot | ReAct 起步,复杂化加 Memory | Day 150 + 158 |
| 投资委员会 dry-run | 双 agent (analyst + reviewer) | Day 154 |
| 合规自动化 | Workflow 优先;复杂时 Plan-Execute | Day 155 |
| 内部知识库 | MCP server + Claude Desktop | Day 153 |
| 反洗钱调查 | ReAct(多源链路追踪) | Day 150 |
| 监管报送 | Workflow(步骤固定) | 反例 |
| HFT | 不上 agent | 反例 |
十七、Web3 视角的本周复习
| Web3 场景 | 推荐模式 |
|---|---|
| 链上数据查询 | ReAct(read-only) |
| Portfolio rebalancing | Plan-Execute(plan 可审) |
| DeFi automation | Plan-Execute + 双 agent (trader + risk) |
| 跨协议工具集成 | MCP server |
| DeFi research | Multi-Agent(researcher + critic) |
链上场景普遍偏好 plan-execute——因为 plan 是可审计的"将要发生的清单",而 ReAct 的探索式让人不安。
十八、本周复盘 self-assessment
打分 1-5:
- 我能不看任何资料、白板默写 ReAct loop 核心代码(target ≥ 4)
- 我能解释 ReAct vs Plan-Execute trade-off(target = 5)
- 我能写一个 tool description,让 LLM 选用率 > 90%(target ≥ 4)
- 我能设计一个 MCP server schema 给团队(target ≥ 4)
- 我能在 30 分钟内说服 PM 不上 agent,应该用 workflow(target = 5)
- 我能识别一段代码哪里是 workflow 哪里是 agent(target = 5)
- 我了解多 agent 系统的 5 种常见 bug 模式(target ≥ 4)
打分低于 4 的项目,回去补 Day 149-154 对应章节。
明日预告
Day 156: LangGraph 深度——StateGraph / Conditional Edges / Cycles / Checkpoint
- 把 Day 150 的裸 ReAct 重写成 LangGraph 版本
- StateGraph 的状态合并语义
- checkpoint + human-in-the-loop 的真实用法