📚 首页 / architecture-exercises / scenarios-agents-orchestration.md

架构决策训练 — agent/编排类(EX17–EX24)

主题:Workflow or agent、Agent or deterministic code、Single or multi-agent、synchronous or asynchronous、停止条件与编排模式。题目三要素在前,答案在文末。核心依据:Building Effective Agents(https://www.anthropic.com/engineering/building-effective-agents,访问于 2026-08-30)与多智能体研究系统实践(https://www.anthropic.com/engineering/multi-agent-research-system,访问于 2026-08-30)。

EX17 — 日均 5000 份合同审查(★☆☆)

核心张力:Workflow or agent?

Scenario 法务 SaaS 审查供应商合同:流程固定三步——合同分类(NDA/服务协议/采购合同)→ 抽取关键条款(金额/期限/违约条款)→ 按规则库生成风险清单。输入输出模式高度一致,日均 5000 份,夜间批处理为主,单份成本要压到最低。

Constraints

Options A. 开放式 agent:给 Claude 合同库访问工具 + 风险规则工具,自主循环完成审查 B. Prompt chaining workflow:三步固定管线(分类 → 抽取 → 风险),每步单次调用 + 结构化输出,Batch API 批处理 C. 单次调用:一个 prompt 完成全部三步 D. 多 agent:分类 agent、抽取 agent、风险 agent 各一个,主 agent 协调


EX18 — 退款审批的灰区判断(★★☆)

核心张力:Agent or deterministic code?

Scenario 平台退款审批:小额(<100 元)走纯规则自动通过;大额(>1000 元)走人审;中间灰区(100–1000 元)需要综合判断——用户历史信用、订单上下文、欺诈信号、政策例外条款。判断需要灵活推理(每个案例的权重不同),但执行退款必须走账务系统固定代码路径。

Constraints

Options A. 全规则引擎(把灰区也写成规则树) B. Claude 做灰区判断(输入:用户历史/订单/欺诈信号/政策 → 输出:结构化决策 + 理由),确定性代码执行退款与限额,边缘案例升级人审 C. 全交给 agent:给 Claude 账务系统工具,判断完自己执行退款 D. 灰区全走人审


EX19 — 每日并购尽调报告(★★☆)

核心张力:Single or multi-agent?

Scenario 咨询团队每日产出并购尽调摘要:需综合约 40 类信源(财报、监管公告、新闻、行业数据库、内部专家笔记),信源集合动态变化,子课题彼此独立(财务/法务/技术/人力各自成章),信息总量远超单一上下文窗口。单 agent 顺序处理耗时 4 小时且常漏关键信源。报告对客户价值高(六位数合同级)。

Constraints

Options A. 更强的单个 agent + 更大上下文(1M 窗口硬塞) B. Orchestrator-worker 多 agent:主 agent 分解子课题、并行拉起 subagent(各自独立上下文检索压缩)、汇总成稿并决定是否追加研究 C. 固定四路 prompt chaining(财务→法务→技术→人力顺序管线) D. 全部预建 RAG,单次调用生成报告


EX20 — 跨模块代码重构(★★☆)

核心张力:Single or multi-agent?(反例)

Scenario 大型单体仓库的重构:把过时的回调 API 改成 async/await。改动跨 8 个模块,且子任务强依赖——改 A 模块的签名会连锁影响 B/C 的调用点;每个决策都需要共享同一份「当前架构状态」的完整理解。团队想上多 agent 并行加速。

Constraints

Options A. 单 agent(长上下文 + 分阶段工具调用),按依赖顺序推进 B. Multi-agent:8 个模块各派一个 subagent 并行重构,主 agent 最后合并 C. Multi-agent + 频繁的上下文同步会议(subagent 互相广播改动) D. 每个模块独立建一个小 agent 团队


EX21 — 十分钟后要的文档摘要(★☆☆)

核心张力:synchronous or asynchronous?

Scenario 内部工具:用户上传会议纪要/长文档,选择「生成摘要并邮件发送」。用户不需要立即看到结果——他提交后就关闭页面去干别的。每天约 3000 次提交,高峰在下午。当前实现是同步等待 API 返回再发邮件,高峰期常超时。

Constraints

Options A. 保持同步,加大超时与并发配额 B. 异步队列 + Message Batches API(提交即入队,批量处理,完成后发邮件) C. 同步但换成最小最快的模型硬扛高峰 D. 限流排队,把高峰流量匀到夜间


EX22 — 实时客服 + 疑难工单分层(★★☆)

核心张力:synchronous or asynchronous?

Scenario 客服系统两层:① 在线对话——用户在聊天窗口等回复,首响 P95 < 5 秒,问题大多是订单状态/政策咨询(RAG 可答);② 疑难工单——用户提交后接受「24 小时内答复」,需要跨物流/支付/风控系统多步调查,调查步数不可预知。

Constraints

Options A. 全部同步实时处理(①②都用在线 agent loop) B. 分层异步:①同步单次调用(小模型 + RAG + 缓存),未解决时转人工;②入异步队列,agent 带全量工具 + 步数/token 预算慢慢跑,完成后通知用户 C. 全部异步(连在线聊天也排队) D. ①用同步、②也用同步但砍掉工具循环(只做单次 RAG 回答)


EX23 — 研究型 agent 不收敛(★★☆)

核心张力:stopping conditions & budgets

Scenario 深度研究 agent 上线后监控发现:约 8% 的会话超过 30 步工具调用仍不收敛(反复搜索、绕圈、二次验证已有结论),单会话 token 消耗是均值的 6 倍,且最终产出质量并不比 15 步收敛的会话好。当前唯一的「停止机制」是 system prompt 里写了「完成任务后请尽快总结」。

Constraints

Options A. 加强 prompt 措辞:「绝对不要超过 20 步」 B. 应用层硬约束:最大步数 + token 预算双闸(触顶强制收尾并要求交付当前最优结论);叠加重复检测(相同工具+相似参数连续出现即注入「你已查过此内容」信号) C. 直接全局砍 max_steps 到 15 D. 换更小的模型(便宜了就不心疼)


EX24 — 千条评论双视角分析(★★☆)

核心张力:parallelization pattern(fan-out/voting)

Scenario 产品团队要分析 1000 条应用商店评论:① 每条做情感分类 + 主题分类;② 最后要统计整体情感分布、Top 主题、以及「情感与主题的交叉结论」。单条评论独立可并行;但逐条调用 1000 次慢且贵,一次全塞又会超窗口且质量下降。

Constraints

Options A. 单次调用塞全部 1000 条(1M 窗口硬扛) B. Fan-out 分段:按 50 条/批并行调用做分类(结构化输出),确定性代码聚合成统计表,再一次调用做交叉结论分析 C. 1000 次逐条调用 D. 抽样 100 条分析后外推



答案与解析

EX17 — Best choice: B

Why

Why other choices are weaker

Tradeoffs

What would change the answer

EX18 — Best choice: B

Why

Why other choices are weaker

Tradeoffs

What would change the answer

EX19 — Best choice: B

Why

Why other choices are weaker

Tradeoffs

What would change the answer

EX20 — Best choice: A

Why

Why other choices are weaker

Tradeoffs

What would change the answer

EX21 — Best choice: B

Why

Why other choices are weaker

Tradeoffs

What would change the answer

EX22 — Best choice: B

Why

Why other choices are weaker

Tradeoffs

What would change the answer

EX23 — Best choice: B

Why

Why other choices are weaker

Tradeoffs

What would change the answer

EX24 — Best choice: B

Why

Why other choices are weaker

Tradeoffs

What would change the answer

📚 目录