📚 首页 / ARCHITECTURE_CHEATSHEET.md

ARCHITECTURE_CHEATSHEET — 架构决策速查表

一页浓缩全部决策规则。每条规则的完整论证在对应模块;Capstone 全景应用见 13-capstone-project/。易变数字标注「截至 2026-08-30」。

① Workflow vs Agent(何时用哪个)

定义(Building Effective Agents):工作流 = LLM+工具按预定义代码路径编排;智能体 (agent) = LLM 动态指挥自己的流程与工具使用。

信号选择
一次调用 + 检索/few-shot 就够单次调用(不上 agentic 系统)——很多应用到此为止
输入有清晰类别,处理方式各异Routing(可配便宜模型)
任务可分解为固定顺序子步骤Prompt chaining(延迟换准确率;中间加程序化 gate)
子任务独立 / 需多视角Parallelization(分段/投票)
有清晰评估标准且迭代有可测收益Evaluator-optimizer
步骤不可预知但可现场分解Orchestrator-workers
开放式、步数不可预测、路径无法硬编码Agent(须有停止条件+步数上限+人审检查点)
长时程异步、不想自建 loop/沙箱Managed Agents(beta,截至 2026-08-30)

反模式:为 agentic 而 agentic——「只在能证明改善结果时才增加复杂度」;反向反模式:开放式任务硬编 pipeline。经验值:客服类先分诊(简单单次调用 → 任务 workflow → 疑难 agent)。

② MCP vs 直接 API

倾向 直接 API 集成倾向 MCP
1–2 个系统、工具 <10、单应用消费多 server、工具几十上百、多 host 复用
延迟敏感、要精细重试/熔断已有现成 server(GitHub/Slack/DB…)或平台团队供给
凭证必须留在自己服务里需要运行时发现(tools/list)

混合是常态:核心链路 direct + 长尾 MCP。MCP 改变的是「模型如何发现与调用工具」,不改变「系统如何实现」。工具描述视为不可信输入(第三方 server);工具定义吃上下文,超窗口 1%–5% 再上 progressive discovery / tool search。

③ RAG vs 更大上下文

知识体量选择
< 200k token(约 500 页)且高频复用塞上下文 + prompt caching(断点放稳定前缀末尾)
大库、按需取片段RAG:hybrid(embeddings+BM25, RRF 融合)→ rerank(Top-150→Top-20)→ metadata pre-filter
Agent 要现场探索、索引会过时Agentic search(搜索工具交给模型;慢、步数不定)

任何窗口都有 context rot(塞得下≠答得准)。精确 token(错误码/SKU/编号)靠 BM25,语义改写靠 embeddings——官方默认 hybrid。权限与新鲜度用 pre-filter 解决(tenant/valid_until 在候选集形成前过滤),不是生成后检查。

④ 何时人审

触发动作
不可逆/高价值动作(退款>阈值、账户变更、删除、对外发送)审批门:模型只创建冻结申请,人批准才执行
低置信 / 无充分证据 / 合规敏感话题会话升级人工
用户显式要求 / 情绪负面会话升级人工
降级链打穿 / 熔断全开系统级升级

人审是架构一等公民:结构化交接(摘要+已执行动作+证据+建议),处置结果回写评估集。高危动作在审批门故障时冻结排队,绝不「临时绕过」。

⑤ 缓存与 Batch 省成本

⑥ 权限放应用层(不是 prompt)

LLM 指令 ≠ 应用层强制。翻译规则:每个「模型不该做 X」都要变成「系统使 X 不可能」:

能力级控制点
读(低危)服务端以用户身份调用 + 字段脱敏
读(租户敏感)数据范围硬过滤(pre-filter / 行级安全)——物理隔离,非 prompt 承诺
写服务端参数校验 + 策略引擎 + 审计
执行(不可逆)模型无此工具;申请→审批→执行三段式,执行通道在代码里

Prompt 级加固(角色边界、防注入指令)是纵深防御的一层,永远不是边界。能力面 = 攻击面:最小工具清单本身就是安全设计。注入防御五层:入口筛查 → 检索内容=数据(非指令)→ 权限过滤 → 最小工具面 → 出口检测(PII/敏感)。

⑦ 失败处理选择树

错误发生
├─ 4xx 参数/鉴权类 ──────────── 不重试;记日志;修调用方
├─ 429 限流 ─────────────────── 读 Retry-After → 退避重试(计入预算)
├─ 5xx / 超时 ───────────────── 指数退避+jitter 重试 ×≤2(计入预算)
│   └─ 仍失败 → 熔断器计数
│       └─ 熔断开 → 新请求走降级链:
│           强模型→弱模型→缓存模板+表单收集→人工队列
├─ 工具业务错误(订单不存在)── is_error 回传模型,让它自我修正
├─ 工具/检索基础设施挂 ──────── 该依赖独立熔断;全局不倒
│   └─ 检索挂 + 需要证据 ────── 无证据不回答 → 直转人工
└─ 预算耗尽 / 链打穿 ────────── 会话挂起 → 升级队列 + 用户明确告知

三条不变式:①预算之内才有资格重试;②无证据不回答(宁可升级不出编造);③每次降级都是可观测事件(降级率异常=事故信号)。审计必须能回放「谁在哪个策略依据下做了什么」。

⑧ 成本-延迟-可靠性三角

              /\
             /  \   降本:缓存+Batches+分层路由+top-k 收紧
            /    \  —— 多轮缓存命中可把输入成本压到 1/10
           / LLM  \
          / 系统   \  提速:streaming、小模型、并行化、
         /__________\     缓存(首字延迟)、精简上下文
   延迟 ↓(快)    可靠性 ↑(稳)
优先谁手段付出
成本分层路由、缓存、Batches、收紧 top-k/输出预算延迟(批处理)或质量风险(降档)
延迟streaming、小模型、并行工具、缓存成本(并行/缓存写溢价)、复杂度
可靠性降级链、熔断、人审、多级 fallback成本(冗余)、延迟(审批等待)

没有三角全优:明确 SLA(如首字 p50≤5s)、预算($/会话)、可用性目标(99.5%),再排优先级。灰度发布(1%→5%→25%→100%)+ 分标签指标 + 自动回滚是三角的「安全网」。


规则出处与完整论证:01–12 各模块(仓库目录);全景应用案例:13-capstone-project/。关键官方锚点:Building Effective Agents、Contextual Retrieval、Prompt Caching、Batch Processing、MCP Specification、Mitigating Jailbreaks(均于 2026-08-30 核验,清单见 sources/sources-13-capstone.csv)。
📚 目录