Agent参考架构

Agent 参考架构

定位 :将 05-architecture/architecture-views 六视图方法论 扩展为 Agent 系统的 七视图 (业务 / 应用 / 数据 / 部署 / 安全 / 集成 / 演进),供 Staff / Architect 白板、评审与落地对齐。

0. 面试前 30 分钟 Checklist(Staff / Architect)

时间盒 动作 产出
5 min 七视图一句话(§1.2) 能按序点名 7 张图
5 min 白板 应用视图 七块(§3) 控制面/数据面/护栏/观测/记忆/工具/路由
5 min 演进阶梯(§8) 单 Agent → 多 Agent → +Workflow → Mesh
5 min 口述 集成三板斧(§7) API 同步 + Kafka 异步 + Outbox 写副作用
5 min 准备 1 个 STAR-M-P(§12) 含 M(机制修复)与 P(指标)
5 min Master P0(§13)标红 3 项 知道回哪篇补课

开场金句(90s)

「Agent 不是 Chatbot 加长上下文,而是 带副作用的多步控制器 。我会用 七视图 讲清楚:业务上解决什么能力、应用上控制面与数据面怎么分、数据上 checkpoint 与向量库怎么分、部署上模型 Serving 与 Agent Runtime 怎么扩、安全上四层防御横切、集成上怎么接微服务与 Saga/Outbox、演进上从单 Agent 到 Agent Mesh 怎么分期。」

1. 七视图方法论与六视图映射

1.1 为什么 Agent 需要第七视图「演进」

传统 architecture-views 六视图描述 稳态系统 ;Agent 在 2024--2026 快速迭代------框架、MCP、多 Agent、低代码 Workflow、未来 AI Gateway 并存。演进视图 单独回答:

  • 现在 跑什么形态(单循环 / 图 / 多角色)?
  • 下一季 迁移路径与兼容契约?
  • 技术债 如何量化(prompt 版本、tool schema 漂移、eval 回归)?

其余六视图与 TOGAF Phase C/D 对齐;安全视图横切 所有视图(同母版 §6)。

1.2 七视图一句话速记

# 视图 核心问题 Agent 特化关键词
1 业务 做什么、价值在哪 能力域、HITL 边界、可验收任务
2 应用 谁来做、怎么组合 控制面/数据面、Planner、Tool Router
3 数据 存什么、怎么流 Checkpoint、向量库、Artifact、Audit
4 部署 怎么跑、怎么扩 Runtime Pod、vLLM、GPU/CPU 池、多租户
5 安全 怎么防、怎么审 注入、工具滥用、PII、策略即代码
6 集成 怎么接存量系统 BFF、Mesh、Outbox、Saga、IDP
7 演进 怎么分期上 单 Agent → 多 Agent → Workflow → Mesh

1.3 视图依赖关系(总图)

#mermaid-svg-kH9vMXWCOvExmUWk{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-kH9vMXWCOvExmUWk .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-kH9vMXWCOvExmUWk .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-kH9vMXWCOvExmUWk .error-icon{fill:#552222;}#mermaid-svg-kH9vMXWCOvExmUWk .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kH9vMXWCOvExmUWk .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-kH9vMXWCOvExmUWk .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kH9vMXWCOvExmUWk .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kH9vMXWCOvExmUWk .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-kH9vMXWCOvExmUWk .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kH9vMXWCOvExmUWk .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kH9vMXWCOvExmUWk .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kH9vMXWCOvExmUWk .marker.cross{stroke:#333333;}#mermaid-svg-kH9vMXWCOvExmUWk svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kH9vMXWCOvExmUWk p{margin:0;}#mermaid-svg-kH9vMXWCOvExmUWk .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-kH9vMXWCOvExmUWk .cluster-label text{fill:#333;}#mermaid-svg-kH9vMXWCOvExmUWk .cluster-label span{color:#333;}#mermaid-svg-kH9vMXWCOvExmUWk .cluster-label span p{background-color:transparent;}#mermaid-svg-kH9vMXWCOvExmUWk .label text,#mermaid-svg-kH9vMXWCOvExmUWk span{fill:#333;color:#333;}#mermaid-svg-kH9vMXWCOvExmUWk .node rect,#mermaid-svg-kH9vMXWCOvExmUWk .node circle,#mermaid-svg-kH9vMXWCOvExmUWk .node ellipse,#mermaid-svg-kH9vMXWCOvExmUWk .node polygon,#mermaid-svg-kH9vMXWCOvExmUWk .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-kH9vMXWCOvExmUWk .rough-node .label text,#mermaid-svg-kH9vMXWCOvExmUWk .node .label text,#mermaid-svg-kH9vMXWCOvExmUWk .image-shape .label,#mermaid-svg-kH9vMXWCOvExmUWk .icon-shape .label{text-anchor:middle;}#mermaid-svg-kH9vMXWCOvExmUWk .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-kH9vMXWCOvExmUWk .rough-node .label,#mermaid-svg-kH9vMXWCOvExmUWk .node .label,#mermaid-svg-kH9vMXWCOvExmUWk .image-shape .label,#mermaid-svg-kH9vMXWCOvExmUWk .icon-shape .label{text-align:center;}#mermaid-svg-kH9vMXWCOvExmUWk .node.clickable{cursor:pointer;}#mermaid-svg-kH9vMXWCOvExmUWk .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-kH9vMXWCOvExmUWk .arrowheadPath{fill:#333333;}#mermaid-svg-kH9vMXWCOvExmUWk .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-kH9vMXWCOvExmUWk .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-kH9vMXWCOvExmUWk .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kH9vMXWCOvExmUWk .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-kH9vMXWCOvExmUWk .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kH9vMXWCOvExmUWk .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-kH9vMXWCOvExmUWk .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-kH9vMXWCOvExmUWk .cluster text{fill:#333;}#mermaid-svg-kH9vMXWCOvExmUWk .cluster span{color:#333;}#mermaid-svg-kH9vMXWCOvExmUWk div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-kH9vMXWCOvExmUWk .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-kH9vMXWCOvExmUWk rect.text{fill:none;stroke-width:0;}#mermaid-svg-kH9vMXWCOvExmUWk .icon-shape,#mermaid-svg-kH9vMXWCOvExmUWk .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kH9vMXWCOvExmUWk .icon-shape p,#mermaid-svg-kH9vMXWCOvExmUWk .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-kH9vMXWCOvExmUWk .icon-shape .label rect,#mermaid-svg-kH9vMXWCOvExmUWk .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kH9vMXWCOvExmUWk .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-kH9vMXWCOvExmUWk .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-kH9vMXWCOvExmUWk :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 约束迁移
约束迁移
约束迁移
贯穿
贯穿
贯穿
贯穿
贯穿
贯穿
业务视图

能力 / 价值流 / 验收
应用视图

控制面 + 数据面
数据视图

Checkpoint / RAG / Audit
部署视图

Runtime + Serving
集成视图

微服务 / MQ / Gateway
演进视图

分期 / 兼容 / 技术债
安全视图

横切 STRIDE + Guardrails

Staff 画法顺序(45min 白板推荐):业务(5m) → 应用(10m) → 数据(5m) → 集成(8m) → 部署(5m) → 安全(5m) → 演进(5m) → 风险收尾(2m)。

2. 业务视图(Business View)

2.1 能力地图 L1--L3(Agent 平台视角)

#mermaid-svg-nfUETCjyT5x1ntJl{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-nfUETCjyT5x1ntJl .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-nfUETCjyT5x1ntJl .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-nfUETCjyT5x1ntJl .error-icon{fill:#552222;}#mermaid-svg-nfUETCjyT5x1ntJl .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-nfUETCjyT5x1ntJl .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-nfUETCjyT5x1ntJl .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-nfUETCjyT5x1ntJl .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-nfUETCjyT5x1ntJl .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-nfUETCjyT5x1ntJl .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-nfUETCjyT5x1ntJl .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-nfUETCjyT5x1ntJl .marker{fill:#333333;stroke:#333333;}#mermaid-svg-nfUETCjyT5x1ntJl .marker.cross{stroke:#333333;}#mermaid-svg-nfUETCjyT5x1ntJl svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-nfUETCjyT5x1ntJl p{margin:0;}#mermaid-svg-nfUETCjyT5x1ntJl .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-nfUETCjyT5x1ntJl .cluster-label text{fill:#333;}#mermaid-svg-nfUETCjyT5x1ntJl .cluster-label span{color:#333;}#mermaid-svg-nfUETCjyT5x1ntJl .cluster-label span p{background-color:transparent;}#mermaid-svg-nfUETCjyT5x1ntJl .label text,#mermaid-svg-nfUETCjyT5x1ntJl span{fill:#333;color:#333;}#mermaid-svg-nfUETCjyT5x1ntJl .node rect,#mermaid-svg-nfUETCjyT5x1ntJl .node circle,#mermaid-svg-nfUETCjyT5x1ntJl .node ellipse,#mermaid-svg-nfUETCjyT5x1ntJl .node polygon,#mermaid-svg-nfUETCjyT5x1ntJl .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-nfUETCjyT5x1ntJl .rough-node .label text,#mermaid-svg-nfUETCjyT5x1ntJl .node .label text,#mermaid-svg-nfUETCjyT5x1ntJl .image-shape .label,#mermaid-svg-nfUETCjyT5x1ntJl .icon-shape .label{text-anchor:middle;}#mermaid-svg-nfUETCjyT5x1ntJl .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-nfUETCjyT5x1ntJl .rough-node .label,#mermaid-svg-nfUETCjyT5x1ntJl .node .label,#mermaid-svg-nfUETCjyT5x1ntJl .image-shape .label,#mermaid-svg-nfUETCjyT5x1ntJl .icon-shape .label{text-align:center;}#mermaid-svg-nfUETCjyT5x1ntJl .node.clickable{cursor:pointer;}#mermaid-svg-nfUETCjyT5x1ntJl .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-nfUETCjyT5x1ntJl .arrowheadPath{fill:#333333;}#mermaid-svg-nfUETCjyT5x1ntJl .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-nfUETCjyT5x1ntJl .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-nfUETCjyT5x1ntJl .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-nfUETCjyT5x1ntJl .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-nfUETCjyT5x1ntJl .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-nfUETCjyT5x1ntJl .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-nfUETCjyT5x1ntJl .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-nfUETCjyT5x1ntJl .cluster text{fill:#333;}#mermaid-svg-nfUETCjyT5x1ntJl .cluster span{color:#333;}#mermaid-svg-nfUETCjyT5x1ntJl div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-nfUETCjyT5x1ntJl .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-nfUETCjyT5x1ntJl rect.text{fill:none;stroke-width:0;}#mermaid-svg-nfUETCjyT5x1ntJl .icon-shape,#mermaid-svg-nfUETCjyT5x1ntJl .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-nfUETCjyT5x1ntJl .icon-shape p,#mermaid-svg-nfUETCjyT5x1ntJl .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-nfUETCjyT5x1ntJl .icon-shape .label rect,#mermaid-svg-nfUETCjyT5x1ntJl .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-nfUETCjyT5x1ntJl .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-nfUETCjyT5x1ntJl .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-nfUETCjyT5x1ntJl :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} L3 支撑能力
L2 核心 Agent 能力
L1 战略能力
客户体验智能化
运营与风控智能化
工程效能智能化
客服 / 商家助手
告警 Triage / SRE
Buy / 导购 / 定价建议
数据迁移 / 报表生成
策略与合规
评估与红队
观测与 FinOps

L2 能力 典型用户 副作用级别 默认 HITL 深链
客服问答 C 端 / 商家 低(只读为主) 写操作必审 18 §场景 CS
告警 Triage On-call 中(ack/resolve) critical resolve 必审 13 §20
Buy 导购 店员 / App 中(券/库存读) 定价/支付禁自动 18
离线批处理 数据平台 高(DDL/DML) 全批准入 + checkpoint 21 §6

2.2 价值流与验收标准

价值流(客服 Agent 示例)
人工坐席 RAG/订单API Agent 用户 人工坐席 RAG/订单API Agent 用户 #mermaid-svg-VYTEQHjWsf9FoKz9{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-VYTEQHjWsf9FoKz9 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-VYTEQHjWsf9FoKz9 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-VYTEQHjWsf9FoKz9 .error-icon{fill:#552222;}#mermaid-svg-VYTEQHjWsf9FoKz9 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-VYTEQHjWsf9FoKz9 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-VYTEQHjWsf9FoKz9 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-VYTEQHjWsf9FoKz9 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-VYTEQHjWsf9FoKz9 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-VYTEQHjWsf9FoKz9 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-VYTEQHjWsf9FoKz9 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-VYTEQHjWsf9FoKz9 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-VYTEQHjWsf9FoKz9 .marker.cross{stroke:#333333;}#mermaid-svg-VYTEQHjWsf9FoKz9 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-VYTEQHjWsf9FoKz9 p{margin:0;}#mermaid-svg-VYTEQHjWsf9FoKz9 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-VYTEQHjWsf9FoKz9 text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-VYTEQHjWsf9FoKz9 .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-VYTEQHjWsf9FoKz9 .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-VYTEQHjWsf9FoKz9 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-VYTEQHjWsf9FoKz9 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-VYTEQHjWsf9FoKz9 #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-VYTEQHjWsf9FoKz9 .sequenceNumber{fill:white;}#mermaid-svg-VYTEQHjWsf9FoKz9 #sequencenumber{fill:#333;}#mermaid-svg-VYTEQHjWsf9FoKz9 #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-VYTEQHjWsf9FoKz9 .messageText{fill:#333;stroke:none;}#mermaid-svg-VYTEQHjWsf9FoKz9 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-VYTEQHjWsf9FoKz9 .labelText,#mermaid-svg-VYTEQHjWsf9FoKz9 .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-VYTEQHjWsf9FoKz9 .loopText,#mermaid-svg-VYTEQHjWsf9FoKz9 .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-VYTEQHjWsf9FoKz9 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-VYTEQHjWsf9FoKz9 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-VYTEQHjWsf9FoKz9 .noteText,#mermaid-svg-VYTEQHjWsf9FoKz9 .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-VYTEQHjWsf9FoKz9 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-VYTEQHjWsf9FoKz9 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-VYTEQHjWsf9FoKz9 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-VYTEQHjWsf9FoKz9 .actorPopupMenu{position:absolute;}#mermaid-svg-VYTEQHjWsf9FoKz9 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-VYTEQHjWsf9FoKz9 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-VYTEQHjWsf9FoKz9 .actor-man circle,#mermaid-svg-VYTEQHjWsf9FoKz9 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-VYTEQHjWsf9FoKz9 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} alt 需写操作 只读可答 意图(退款进度) 只读 tool 查订单 observation 生成工单草案 + 证据 人审后执行 带引用回答

验收维度 机器可验 人工可验 反模式
任务完成 success_criteria 全绿 抽检对话 「感觉答完了」无标准
业务正确 tool JSON 与回答一致 政策抽检 模型编造金额
合规 Guardrails pass 审计日志 仅靠 system prompt
成本 $/task ≤ 预算 FinOps 周报 无 token 上限

→ 边界决策树详见 04 §113 §1

2.3 业务视图反模式

反模式 现象 正确做法
万物 Agent FAQ 也上 ReAct RAG + 模板;固定流用 Workflow
无 Owner 能力 谁都能加一个 tool 能力域注册表 + ADR
验收不可测 「用户满意」无指标 completion_rate + citation_rate
忽视人工链路 Agent 直接改生产 HITL 分级写入控制面

3. 应用视图(Application View)

核心 :应用视图是 Staff 面试 停留时间最长 的视图。必须能画 控制面 / 数据面 / 护栏 / 观测 / 记忆 / 工具 / 路由 七组件及 组件契约、SLA、降级

3.1 参考架构总图

#mermaid-svg-XpxuBpfM6Opt375I{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-XpxuBpfM6Opt375I .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-XpxuBpfM6Opt375I .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-XpxuBpfM6Opt375I .error-icon{fill:#552222;}#mermaid-svg-XpxuBpfM6Opt375I .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-XpxuBpfM6Opt375I .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-XpxuBpfM6Opt375I .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-XpxuBpfM6Opt375I .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-XpxuBpfM6Opt375I .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-XpxuBpfM6Opt375I .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-XpxuBpfM6Opt375I .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-XpxuBpfM6Opt375I .marker{fill:#333333;stroke:#333333;}#mermaid-svg-XpxuBpfM6Opt375I .marker.cross{stroke:#333333;}#mermaid-svg-XpxuBpfM6Opt375I svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-XpxuBpfM6Opt375I p{margin:0;}#mermaid-svg-XpxuBpfM6Opt375I .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-XpxuBpfM6Opt375I .cluster-label text{fill:#333;}#mermaid-svg-XpxuBpfM6Opt375I .cluster-label span{color:#333;}#mermaid-svg-XpxuBpfM6Opt375I .cluster-label span p{background-color:transparent;}#mermaid-svg-XpxuBpfM6Opt375I .label text,#mermaid-svg-XpxuBpfM6Opt375I span{fill:#333;color:#333;}#mermaid-svg-XpxuBpfM6Opt375I .node rect,#mermaid-svg-XpxuBpfM6Opt375I .node circle,#mermaid-svg-XpxuBpfM6Opt375I .node ellipse,#mermaid-svg-XpxuBpfM6Opt375I .node polygon,#mermaid-svg-XpxuBpfM6Opt375I .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-XpxuBpfM6Opt375I .rough-node .label text,#mermaid-svg-XpxuBpfM6Opt375I .node .label text,#mermaid-svg-XpxuBpfM6Opt375I .image-shape .label,#mermaid-svg-XpxuBpfM6Opt375I .icon-shape .label{text-anchor:middle;}#mermaid-svg-XpxuBpfM6Opt375I .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-XpxuBpfM6Opt375I .rough-node .label,#mermaid-svg-XpxuBpfM6Opt375I .node .label,#mermaid-svg-XpxuBpfM6Opt375I .image-shape .label,#mermaid-svg-XpxuBpfM6Opt375I .icon-shape .label{text-align:center;}#mermaid-svg-XpxuBpfM6Opt375I .node.clickable{cursor:pointer;}#mermaid-svg-XpxuBpfM6Opt375I .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-XpxuBpfM6Opt375I .arrowheadPath{fill:#333333;}#mermaid-svg-XpxuBpfM6Opt375I .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-XpxuBpfM6Opt375I .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-XpxuBpfM6Opt375I .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-XpxuBpfM6Opt375I .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-XpxuBpfM6Opt375I .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-XpxuBpfM6Opt375I .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-XpxuBpfM6Opt375I .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-XpxuBpfM6Opt375I .cluster text{fill:#333;}#mermaid-svg-XpxuBpfM6Opt375I .cluster span{color:#333;}#mermaid-svg-XpxuBpfM6Opt375I div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-XpxuBpfM6Opt375I .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-XpxuBpfM6Opt375I rect.text{fill:none;stroke-width:0;}#mermaid-svg-XpxuBpfM6Opt375I .icon-shape,#mermaid-svg-XpxuBpfM6Opt375I .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-XpxuBpfM6Opt375I .icon-shape p,#mermaid-svg-XpxuBpfM6Opt375I .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-XpxuBpfM6Opt375I .icon-shape .label rect,#mermaid-svg-XpxuBpfM6Opt375I .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-XpxuBpfM6Opt375I .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-XpxuBpfM6Opt375I .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-XpxuBpfM6Opt375I :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 横切
数据面 Data Plane
控制面 Control Plane
接入
API Gateway / BFF
Webhook / Cron
身份 / 租户
Policy / OPA
预算 / 熔断
HITL 审批队列
幂等 / 任务登记
Agent Runtime

LangGraph / Spring AI
Planner
Executor
Tool Router
LLM Router

LiteLLM
Guardrails 输出/输入
Observability

Trace / Metrics / Audit
Memory Service
RAG Service

3.2 组件契约与 SLA

组件 职责边界 可用性 SLA 延迟 SLA 降级策略 反模式
控制面 Control Plane AUTH+POL+BUD+HITL+IDEM 99.99% p99 <50ms 拒绝未授权/超预算任务入队 策略放 prompt;无幂等登记
Agent Runtime RT 99.9% 单任务 wall p99 <120s 队列积压→降级为只读 FAQ 与 LLM 同进程无隔离
Planner PL 99.5% plan 生成 <8s 超时→固定 SOP 模板 plan 一次生成 50 步大 plan
Executor EX 99.9% 单步 tool p99 <3s 步级 verify 失败→replan≤2 无 verify 闸门
Tool Router TR 99.95% 路由 <20ms tool 不可用→备选 tool/缓存 任意 tool 无 schema 校验
LLM Router LLM 99.5% TTFT p99 <2s 降级小模型/缩短上下文 无 model fallback
Guardrails GR 99.99% 校验 <100ms block→模板拒答+工单 仅 system prompt
Observability OBS 99.9% trace 完整率 >99% 采样降档不断 trace_id 无 step 级 replay
Memory MEM 99.9% 读 p99 <50ms 向量超时→跳过长期记忆 checkpoint 放 Pod 内存
RAG RAG 99.5% 检索 p99 <200ms 超时→关键词检索 与 checkpoint 混表

3.3 控制面 · 工程细节

能力 实现要点 21 对齐
身份/租户 JWT + tenant_id 贯穿 trace §3.1 Gateway
Policy-as-Code OPA/Rego:risk_level(write) → HITL 17 §5
预算 max_steps / max_cost_usd / token cap 13 §2.2
幂等 idempotency_key = entity:op:generation 21 §4.2
HITL 队列 + 超时升级;审批写回 checkpoint 13 §8

#mermaid-svg-5Q1DUB7U6JCOqg46{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-5Q1DUB7U6JCOqg46 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5Q1DUB7U6JCOqg46 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5Q1DUB7U6JCOqg46 .error-icon{fill:#552222;}#mermaid-svg-5Q1DUB7U6JCOqg46 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5Q1DUB7U6JCOqg46 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5Q1DUB7U6JCOqg46 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5Q1DUB7U6JCOqg46 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5Q1DUB7U6JCOqg46 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5Q1DUB7U6JCOqg46 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5Q1DUB7U6JCOqg46 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5Q1DUB7U6JCOqg46 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5Q1DUB7U6JCOqg46 .marker.cross{stroke:#333333;}#mermaid-svg-5Q1DUB7U6JCOqg46 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5Q1DUB7U6JCOqg46 p{margin:0;}#mermaid-svg-5Q1DUB7U6JCOqg46 defs #statediagram-barbEnd{fill:#333333;stroke:#333333;}#mermaid-svg-5Q1DUB7U6JCOqg46 g.stateGroup text{fill:#9370DB;stroke:none;font-size:10px;}#mermaid-svg-5Q1DUB7U6JCOqg46 g.stateGroup text{fill:#333;stroke:none;font-size:10px;}#mermaid-svg-5Q1DUB7U6JCOqg46 g.stateGroup .state-title{font-weight:bolder;fill:#131300;}#mermaid-svg-5Q1DUB7U6JCOqg46 g.stateGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-5Q1DUB7U6JCOqg46 g.stateGroup line{stroke:#333333;stroke-width:1;}#mermaid-svg-5Q1DUB7U6JCOqg46 .transition{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-5Q1DUB7U6JCOqg46 .stateGroup .composit{fill:white;border-bottom:1px;}#mermaid-svg-5Q1DUB7U6JCOqg46 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px;}#mermaid-svg-5Q1DUB7U6JCOqg46 .state-note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-5Q1DUB7U6JCOqg46 .state-note text{fill:black;stroke:none;font-size:10px;}#mermaid-svg-5Q1DUB7U6JCOqg46 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-5Q1DUB7U6JCOqg46 .edgeLabel .label rect{fill:#ECECFF;opacity:0.5;}#mermaid-svg-5Q1DUB7U6JCOqg46 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5Q1DUB7U6JCOqg46 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-5Q1DUB7U6JCOqg46 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5Q1DUB7U6JCOqg46 .edgeLabel .label text{fill:#333;}#mermaid-svg-5Q1DUB7U6JCOqg46 .label div .edgeLabel{color:#333;}#mermaid-svg-5Q1DUB7U6JCOqg46 .stateLabel text{fill:#131300;font-size:10px;font-weight:bold;}#mermaid-svg-5Q1DUB7U6JCOqg46 .node circle.state-start{fill:#333333;stroke:#333333;}#mermaid-svg-5Q1DUB7U6JCOqg46 .node .fork-join{fill:#333333;stroke:#333333;}#mermaid-svg-5Q1DUB7U6JCOqg46 .node circle.state-end{fill:#9370DB;stroke:white;stroke-width:1.5;}#mermaid-svg-5Q1DUB7U6JCOqg46 .end-state-inner{fill:white;stroke-width:1.5;}#mermaid-svg-5Q1DUB7U6JCOqg46 .node rect{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5Q1DUB7U6JCOqg46 .node polygon{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5Q1DUB7U6JCOqg46 #statediagram-barbEnd{fill:#333333;}#mermaid-svg-5Q1DUB7U6JCOqg46 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5Q1DUB7U6JCOqg46 .cluster-label,#mermaid-svg-5Q1DUB7U6JCOqg46 .nodeLabel{color:#131300;}#mermaid-svg-5Q1DUB7U6JCOqg46 .statediagram-cluster rect.outer{rx:5px;ry:5px;}#mermaid-svg-5Q1DUB7U6JCOqg46 .statediagram-state .divider{stroke:#9370DB;}#mermaid-svg-5Q1DUB7U6JCOqg46 .statediagram-state .title-state{rx:5px;ry:5px;}#mermaid-svg-5Q1DUB7U6JCOqg46 .statediagram-cluster.statediagram-cluster .inner{fill:white;}#mermaid-svg-5Q1DUB7U6JCOqg46 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#f0f0f0;}#mermaid-svg-5Q1DUB7U6JCOqg46 .statediagram-cluster .inner{rx:0;ry:0;}#mermaid-svg-5Q1DUB7U6JCOqg46 .statediagram-state rect.basic{rx:5px;ry:5px;}#mermaid-svg-5Q1DUB7U6JCOqg46 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#f0f0f0;}#mermaid-svg-5Q1DUB7U6JCOqg46 .note-edge{stroke-dasharray:5;}#mermaid-svg-5Q1DUB7U6JCOqg46 .statediagram-note rect{fill:#fff5ad;stroke:#aaaa33;stroke-width:1px;rx:0;ry:0;}#mermaid-svg-5Q1DUB7U6JCOqg46 .statediagram-note rect{fill:#fff5ad;stroke:#aaaa33;stroke-width:1px;rx:0;ry:0;}#mermaid-svg-5Q1DUB7U6JCOqg46 .statediagram-note text{fill:black;}#mermaid-svg-5Q1DUB7U6JCOqg46 .statediagram-note .nodeLabel{color:black;}#mermaid-svg-5Q1DUB7U6JCOqg46 .statediagram .edgeLabel{color:red;}#mermaid-svg-5Q1DUB7U6JCOqg46 #dependencyStart,#mermaid-svg-5Q1DUB7U6JCOqg46 #dependencyEnd{fill:#333333;stroke:#333333;stroke-width:1;}#mermaid-svg-5Q1DUB7U6JCOqg46 .statediagramTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-5Q1DUB7U6JCOqg46 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} pass auth
deny
pass
budget OK
write+risk
approved
success_criteria
budget exhausted
unrecoverable
Submitted
PolicyCheck
Rejected
Queued
Running
WaitingHITL
Completed
Degraded
Failed

3.4 数据面 · Planner / Executor / 有界循环

推荐生产默认:DAG 骨架 + 局部 ReAct(非纯 ReAct 无限循环)。

模式 状态机 适用
ReAct 单环 Think→Act→Observe 探索型 PoC 04 §4
Plan-Execute plan 一次→逐步执行 步骤稳定 13 §2
DAG+有界环 阶段 DAG;阶段内 ≤N 步 生产默认 本篇 + 21 §6

Executor 契约(每步)

text 复制代码
Input:  { step_id, tool_name, args, context_digest, version_pin }
Output: { observation, status, verify_result, artifacts?, error? }
Invariant:
  - 同 (tool,args) 连续失败 ≥3 → circuit_break
  - verify 失败 → replan 或 HITL(按 risk)
  - 写操作必须带 idempotency_key(控制面签发)

3.5 工具平面 Tool Router + MCP

#mermaid-svg-v5gPIKb5hizgxARj{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-v5gPIKb5hizgxARj .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-v5gPIKb5hizgxARj .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-v5gPIKb5hizgxARj .error-icon{fill:#552222;}#mermaid-svg-v5gPIKb5hizgxARj .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-v5gPIKb5hizgxARj .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-v5gPIKb5hizgxARj .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-v5gPIKb5hizgxARj .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-v5gPIKb5hizgxARj .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-v5gPIKb5hizgxARj .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-v5gPIKb5hizgxARj .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-v5gPIKb5hizgxARj .marker{fill:#333333;stroke:#333333;}#mermaid-svg-v5gPIKb5hizgxARj .marker.cross{stroke:#333333;}#mermaid-svg-v5gPIKb5hizgxARj svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-v5gPIKb5hizgxARj p{margin:0;}#mermaid-svg-v5gPIKb5hizgxARj .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-v5gPIKb5hizgxARj .cluster-label text{fill:#333;}#mermaid-svg-v5gPIKb5hizgxARj .cluster-label span{color:#333;}#mermaid-svg-v5gPIKb5hizgxARj .cluster-label span p{background-color:transparent;}#mermaid-svg-v5gPIKb5hizgxARj .label text,#mermaid-svg-v5gPIKb5hizgxARj span{fill:#333;color:#333;}#mermaid-svg-v5gPIKb5hizgxARj .node rect,#mermaid-svg-v5gPIKb5hizgxARj .node circle,#mermaid-svg-v5gPIKb5hizgxARj .node ellipse,#mermaid-svg-v5gPIKb5hizgxARj .node polygon,#mermaid-svg-v5gPIKb5hizgxARj .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-v5gPIKb5hizgxARj .rough-node .label text,#mermaid-svg-v5gPIKb5hizgxARj .node .label text,#mermaid-svg-v5gPIKb5hizgxARj .image-shape .label,#mermaid-svg-v5gPIKb5hizgxARj .icon-shape .label{text-anchor:middle;}#mermaid-svg-v5gPIKb5hizgxARj .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-v5gPIKb5hizgxARj .rough-node .label,#mermaid-svg-v5gPIKb5hizgxARj .node .label,#mermaid-svg-v5gPIKb5hizgxARj .image-shape .label,#mermaid-svg-v5gPIKb5hizgxARj .icon-shape .label{text-align:center;}#mermaid-svg-v5gPIKb5hizgxARj .node.clickable{cursor:pointer;}#mermaid-svg-v5gPIKb5hizgxARj .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-v5gPIKb5hizgxARj .arrowheadPath{fill:#333333;}#mermaid-svg-v5gPIKb5hizgxARj .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-v5gPIKb5hizgxARj .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-v5gPIKb5hizgxARj .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-v5gPIKb5hizgxARj .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-v5gPIKb5hizgxARj .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-v5gPIKb5hizgxARj .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-v5gPIKb5hizgxARj .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-v5gPIKb5hizgxARj .cluster text{fill:#333;}#mermaid-svg-v5gPIKb5hizgxARj .cluster span{color:#333;}#mermaid-svg-v5gPIKb5hizgxARj div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-v5gPIKb5hizgxARj .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-v5gPIKb5hizgxARj rect.text{fill:none;stroke-width:0;}#mermaid-svg-v5gPIKb5hizgxARj .icon-shape,#mermaid-svg-v5gPIKb5hizgxARj .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-v5gPIKb5hizgxARj .icon-shape p,#mermaid-svg-v5gPIKb5hizgxARj .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-v5gPIKb5hizgxARj .icon-shape .label rect,#mermaid-svg-v5gPIKb5hizgxARj .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-v5gPIKb5hizgxARj .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-v5gPIKb5hizgxARj .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-v5gPIKb5hizgxARj :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Executor
Tool Router
同步 REST/gRPC
MCP Server 池
代码沙箱
人类工具 HITL
订单 MCP
监控 MCP
知识库 MCP

契约项 要求
Schema OpenAPI / JSON Schema 版本化 tool_schema_rev
分类 read / write / admin 标签;write 走 HITL
超时 读 3s / 写 10s;可配置 per tool
结果大小 >32KB → Artifact Store URI 引用
审计 参数摘要入 Audit(非全量 PII)

→ MCP/A2A 详见 04 §12

3.6 记忆平面 Memory

类型 存储 生命周期 禁止
Working Runtime state 单任务 把整段 history 塞 prompt
Checkpoint PostgreSQL 任务级持久 用 trace_id 当写幂等键
Session Redis 24h TTL 跨租户共享 key
Semantic pgvector 长期 与 checkpoint 混表
Episodic Redis + PG 摘要 30d 无版本的政策 chunk

→ Context Engineering 详见 04 §1313 §3

3.7 路由平面 LLM Router

路由维度 策略 配置源
任务类型 分类用小模型 → 路由大模型 LiteLLM alias
成本 超预算 → 降级 Haiku 级 07 §10
延迟 TTFT 恶化 → 缩短 max_tokens Serving 指标
合规 区域数据 → 指定 endpoint 控制面 tenant policy

降级矩阵

级别 触发 行为
L0 正常 --- 全功能
L1 成本 80% 日预算 禁 Multi-Agent 并行
L2 延迟 TTFT p99>3s 强制短上下文 + 小模型
L3 依赖 LLM 5xx 模板 FAQ + 人工排队
L4 事故 Guardrails 大规模 fail 只读模式全局开关

3.8 护栏 Guardrails

阶段 检查 失败动作
输入 注入检测、PII 扫描 拒答 / 脱敏
工具前 参数 schema + 风险 block write
输出 JSON schema、引用、citation 重试一次 → 拒答
事后 抽检 + 红队 版本回滚

→ 技术栈 17 §4;Spring AI Advisor 18 §0.2

3.9 可观测 Observability

信号 最小字段 SLO
Trace trace_id, task_id, step_id, tool, model_rev 99% 完整
Metrics $/task, steps, tool_errors, completion_rate 仪表盘 24h
Audit 谁批准 HITL、写了什么实体 7 年留存(合规域)
Eval 版本对比 golden set 发布门禁

#mermaid-svg-oMSTfsaCpPFGtY3P{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-oMSTfsaCpPFGtY3P .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-oMSTfsaCpPFGtY3P .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-oMSTfsaCpPFGtY3P .error-icon{fill:#552222;}#mermaid-svg-oMSTfsaCpPFGtY3P .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-oMSTfsaCpPFGtY3P .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-oMSTfsaCpPFGtY3P .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-oMSTfsaCpPFGtY3P .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-oMSTfsaCpPFGtY3P .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-oMSTfsaCpPFGtY3P .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-oMSTfsaCpPFGtY3P .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-oMSTfsaCpPFGtY3P .marker{fill:#333333;stroke:#333333;}#mermaid-svg-oMSTfsaCpPFGtY3P .marker.cross{stroke:#333333;}#mermaid-svg-oMSTfsaCpPFGtY3P svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-oMSTfsaCpPFGtY3P p{margin:0;}#mermaid-svg-oMSTfsaCpPFGtY3P .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-oMSTfsaCpPFGtY3P .cluster-label text{fill:#333;}#mermaid-svg-oMSTfsaCpPFGtY3P .cluster-label span{color:#333;}#mermaid-svg-oMSTfsaCpPFGtY3P .cluster-label span p{background-color:transparent;}#mermaid-svg-oMSTfsaCpPFGtY3P .label text,#mermaid-svg-oMSTfsaCpPFGtY3P span{fill:#333;color:#333;}#mermaid-svg-oMSTfsaCpPFGtY3P .node rect,#mermaid-svg-oMSTfsaCpPFGtY3P .node circle,#mermaid-svg-oMSTfsaCpPFGtY3P .node ellipse,#mermaid-svg-oMSTfsaCpPFGtY3P .node polygon,#mermaid-svg-oMSTfsaCpPFGtY3P .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-oMSTfsaCpPFGtY3P .rough-node .label text,#mermaid-svg-oMSTfsaCpPFGtY3P .node .label text,#mermaid-svg-oMSTfsaCpPFGtY3P .image-shape .label,#mermaid-svg-oMSTfsaCpPFGtY3P .icon-shape .label{text-anchor:middle;}#mermaid-svg-oMSTfsaCpPFGtY3P .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-oMSTfsaCpPFGtY3P .rough-node .label,#mermaid-svg-oMSTfsaCpPFGtY3P .node .label,#mermaid-svg-oMSTfsaCpPFGtY3P .image-shape .label,#mermaid-svg-oMSTfsaCpPFGtY3P .icon-shape .label{text-align:center;}#mermaid-svg-oMSTfsaCpPFGtY3P .node.clickable{cursor:pointer;}#mermaid-svg-oMSTfsaCpPFGtY3P .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-oMSTfsaCpPFGtY3P .arrowheadPath{fill:#333333;}#mermaid-svg-oMSTfsaCpPFGtY3P .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-oMSTfsaCpPFGtY3P .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-oMSTfsaCpPFGtY3P .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-oMSTfsaCpPFGtY3P .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-oMSTfsaCpPFGtY3P .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-oMSTfsaCpPFGtY3P .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-oMSTfsaCpPFGtY3P .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-oMSTfsaCpPFGtY3P .cluster text{fill:#333;}#mermaid-svg-oMSTfsaCpPFGtY3P .cluster span{color:#333;}#mermaid-svg-oMSTfsaCpPFGtY3P div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-oMSTfsaCpPFGtY3P .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-oMSTfsaCpPFGtY3P rect.text{fill:none;stroke-width:0;}#mermaid-svg-oMSTfsaCpPFGtY3P .icon-shape,#mermaid-svg-oMSTfsaCpPFGtY3P .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-oMSTfsaCpPFGtY3P .icon-shape p,#mermaid-svg-oMSTfsaCpPFGtY3P .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-oMSTfsaCpPFGtY3P .icon-shape .label rect,#mermaid-svg-oMSTfsaCpPFGtY3P .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-oMSTfsaCpPFGtY3P .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-oMSTfsaCpPFGtY3P .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-oMSTfsaCpPFGtY3P :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Runtime
OpenTelemetry
Tempo/Jaeger
Prometheus
Loki
Dashboard $/task
Step Replay UI

3.10 应用视图反模式

反模式 风险 修复
控制面空心化 prompt 里写「不要退款」 Policy + tool 标签 + HITL
数据面有状态 Pod 重启丢进度 Checkpoint 外置 PG
护栏后置 有害内容已返回用户 输出 schema 校验
观测只有日志 无法 replay 第 N 步 step 级 span
工具无版本 schema 漂移导致参数幻觉 version_pin

4. 数据视图(Data View)

4.1 逻辑数据模型

#mermaid-svg-VqYxjAYwAQM7uRMY{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-VqYxjAYwAQM7uRMY .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-VqYxjAYwAQM7uRMY .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-VqYxjAYwAQM7uRMY .error-icon{fill:#552222;}#mermaid-svg-VqYxjAYwAQM7uRMY .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-VqYxjAYwAQM7uRMY .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-VqYxjAYwAQM7uRMY .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-VqYxjAYwAQM7uRMY .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-VqYxjAYwAQM7uRMY .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-VqYxjAYwAQM7uRMY .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-VqYxjAYwAQM7uRMY .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-VqYxjAYwAQM7uRMY .marker{fill:#333333;stroke:#333333;}#mermaid-svg-VqYxjAYwAQM7uRMY .marker.cross{stroke:#333333;}#mermaid-svg-VqYxjAYwAQM7uRMY svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-VqYxjAYwAQM7uRMY p{margin:0;}#mermaid-svg-VqYxjAYwAQM7uRMY .entityBox{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-VqYxjAYwAQM7uRMY .relationshipLabelBox{fill:hsl(80, 100%, 96.2745098039%);opacity:0.7;background-color:hsl(80, 100%, 96.2745098039%);}#mermaid-svg-VqYxjAYwAQM7uRMY .relationshipLabelBox rect{opacity:0.5;}#mermaid-svg-VqYxjAYwAQM7uRMY .labelBkg{background-color:rgba(248.6666666666, 255, 235.9999999999, 0.5);}#mermaid-svg-VqYxjAYwAQM7uRMY .edgeLabel .label{fill:#9370DB;font-size:14px;}#mermaid-svg-VqYxjAYwAQM7uRMY .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-VqYxjAYwAQM7uRMY .edge-pattern-dashed{stroke-dasharray:8,8;}#mermaid-svg-VqYxjAYwAQM7uRMY .node rect,#mermaid-svg-VqYxjAYwAQM7uRMY .node circle,#mermaid-svg-VqYxjAYwAQM7uRMY .node ellipse,#mermaid-svg-VqYxjAYwAQM7uRMY .node polygon{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-VqYxjAYwAQM7uRMY .relationshipLine{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-VqYxjAYwAQM7uRMY .marker{fill:none!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-VqYxjAYwAQM7uRMY .edgeLabel{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-VqYxjAYwAQM7uRMY .edgeLabel .label rect{fill:rgba(232,232,232, 0.8);}#mermaid-svg-VqYxjAYwAQM7uRMY .edgeLabel .label text{fill:#333;}#mermaid-svg-VqYxjAYwAQM7uRMY :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} has
contains
produces
belongs
summarizes
versioned
ephemeral
TASK
string
task_id
PK
string
trace_id
string
goal
json
success_criteria
string
status
CHECKPOINT
string
task_id
FK
int
rev
json
plan
json
completed_steps
json
version_pin
STEP_LOG
ARTIFACT
TENANT
TOOL_DIGEST
KB_INDEX
CHUNK
SESSION
MESSAGE

4.2 存储选型矩阵

数据类 技术 一致性 分区键 非 Agent 常见误区
Checkpoint PostgreSQL 强一致 task_id 误用 Redis 无持久
Artifact S3/OSS 最终 task_id/step_id 塞 PG BLOB
Session Redis 最终 tenant:session 无 TTL
向量索引 pgvector/Milvus 最终 tenant+kb kb_version
Audit ClickHouse/ES append day+tenant 与 trace 未关联
Eval 集 PG + 对象存储 --- suite_rev 无版本 pin

→ RAG 管线 03;checkpoint 字段 21 §4

4.3 数据流(在线任务)

#mermaid-svg-8BDQgHgyjmcSVmmR{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-8BDQgHgyjmcSVmmR .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-8BDQgHgyjmcSVmmR .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-8BDQgHgyjmcSVmmR .error-icon{fill:#552222;}#mermaid-svg-8BDQgHgyjmcSVmmR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-8BDQgHgyjmcSVmmR .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-8BDQgHgyjmcSVmmR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-8BDQgHgyjmcSVmmR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-8BDQgHgyjmcSVmmR .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-8BDQgHgyjmcSVmmR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-8BDQgHgyjmcSVmmR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-8BDQgHgyjmcSVmmR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-8BDQgHgyjmcSVmmR .marker.cross{stroke:#333333;}#mermaid-svg-8BDQgHgyjmcSVmmR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-8BDQgHgyjmcSVmmR p{margin:0;}#mermaid-svg-8BDQgHgyjmcSVmmR .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-8BDQgHgyjmcSVmmR .cluster-label text{fill:#333;}#mermaid-svg-8BDQgHgyjmcSVmmR .cluster-label span{color:#333;}#mermaid-svg-8BDQgHgyjmcSVmmR .cluster-label span p{background-color:transparent;}#mermaid-svg-8BDQgHgyjmcSVmmR .label text,#mermaid-svg-8BDQgHgyjmcSVmmR span{fill:#333;color:#333;}#mermaid-svg-8BDQgHgyjmcSVmmR .node rect,#mermaid-svg-8BDQgHgyjmcSVmmR .node circle,#mermaid-svg-8BDQgHgyjmcSVmmR .node ellipse,#mermaid-svg-8BDQgHgyjmcSVmmR .node polygon,#mermaid-svg-8BDQgHgyjmcSVmmR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-8BDQgHgyjmcSVmmR .rough-node .label text,#mermaid-svg-8BDQgHgyjmcSVmmR .node .label text,#mermaid-svg-8BDQgHgyjmcSVmmR .image-shape .label,#mermaid-svg-8BDQgHgyjmcSVmmR .icon-shape .label{text-anchor:middle;}#mermaid-svg-8BDQgHgyjmcSVmmR .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-8BDQgHgyjmcSVmmR .rough-node .label,#mermaid-svg-8BDQgHgyjmcSVmmR .node .label,#mermaid-svg-8BDQgHgyjmcSVmmR .image-shape .label,#mermaid-svg-8BDQgHgyjmcSVmmR .icon-shape .label{text-align:center;}#mermaid-svg-8BDQgHgyjmcSVmmR .node.clickable{cursor:pointer;}#mermaid-svg-8BDQgHgyjmcSVmmR .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-8BDQgHgyjmcSVmmR .arrowheadPath{fill:#333333;}#mermaid-svg-8BDQgHgyjmcSVmmR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-8BDQgHgyjmcSVmmR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-8BDQgHgyjmcSVmmR .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-8BDQgHgyjmcSVmmR .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-8BDQgHgyjmcSVmmR .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-8BDQgHgyjmcSVmmR .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-8BDQgHgyjmcSVmmR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-8BDQgHgyjmcSVmmR .cluster text{fill:#333;}#mermaid-svg-8BDQgHgyjmcSVmmR .cluster span{color:#333;}#mermaid-svg-8BDQgHgyjmcSVmmR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-8BDQgHgyjmcSVmmR .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-8BDQgHgyjmcSVmmR rect.text{fill:none;stroke-width:0;}#mermaid-svg-8BDQgHgyjmcSVmmR .icon-shape,#mermaid-svg-8BDQgHgyjmcSVmmR .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-8BDQgHgyjmcSVmmR .icon-shape p,#mermaid-svg-8BDQgHgyjmcSVmmR .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-8BDQgHgyjmcSVmmR .icon-shape .label rect,#mermaid-svg-8BDQgHgyjmcSVmmR .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-8BDQgHgyjmcSVmmR .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-8BDQgHgyjmcSVmmR .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-8BDQgHgyjmcSVmmR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 用户
Gateway
控制面登记 Task
Runtime 加载 Checkpoint
RAG 检索
Vector DB
LLM
Tools
微服务 API
Checkpoint PG
Artifact S3
Audit

写路径原则 :业务副作用 只通过 Tool 调微服务 ;Agent 侧 不直写业务库(防腐层)。

4.4 数据治理

维度 Agent 特化要求
分类分级 conversation=P2;audit=P3;tool 结果含 PII 脱敏
留存 session 30d;audit 按合规;checkpoint 任务完成后 90d 归档
质量 citation_rate, faithfulness 入质量仪表盘
血缘 version_pin: prompt+model+kb+tool_schema
删除权 用户删号 → 向量+session+checkpoint 级联擦除

反模式:向量库无租户隔离;checkpoint 存全量 tool JSON 撑爆 PG。

5. 部署视图(Deployment View)

5.1 部署拓扑

#mermaid-svg-jZhZJhxjPddRhIWc{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-jZhZJhxjPddRhIWc .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-jZhZJhxjPddRhIWc .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-jZhZJhxjPddRhIWc .error-icon{fill:#552222;}#mermaid-svg-jZhZJhxjPddRhIWc .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-jZhZJhxjPddRhIWc .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-jZhZJhxjPddRhIWc .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-jZhZJhxjPddRhIWc .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-jZhZJhxjPddRhIWc .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-jZhZJhxjPddRhIWc .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-jZhZJhxjPddRhIWc .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-jZhZJhxjPddRhIWc .marker{fill:#333333;stroke:#333333;}#mermaid-svg-jZhZJhxjPddRhIWc .marker.cross{stroke:#333333;}#mermaid-svg-jZhZJhxjPddRhIWc svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-jZhZJhxjPddRhIWc p{margin:0;}#mermaid-svg-jZhZJhxjPddRhIWc .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-jZhZJhxjPddRhIWc .cluster-label text{fill:#333;}#mermaid-svg-jZhZJhxjPddRhIWc .cluster-label span{color:#333;}#mermaid-svg-jZhZJhxjPddRhIWc .cluster-label span p{background-color:transparent;}#mermaid-svg-jZhZJhxjPddRhIWc .label text,#mermaid-svg-jZhZJhxjPddRhIWc span{fill:#333;color:#333;}#mermaid-svg-jZhZJhxjPddRhIWc .node rect,#mermaid-svg-jZhZJhxjPddRhIWc .node circle,#mermaid-svg-jZhZJhxjPddRhIWc .node ellipse,#mermaid-svg-jZhZJhxjPddRhIWc .node polygon,#mermaid-svg-jZhZJhxjPddRhIWc .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-jZhZJhxjPddRhIWc .rough-node .label text,#mermaid-svg-jZhZJhxjPddRhIWc .node .label text,#mermaid-svg-jZhZJhxjPddRhIWc .image-shape .label,#mermaid-svg-jZhZJhxjPddRhIWc .icon-shape .label{text-anchor:middle;}#mermaid-svg-jZhZJhxjPddRhIWc .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-jZhZJhxjPddRhIWc .rough-node .label,#mermaid-svg-jZhZJhxjPddRhIWc .node .label,#mermaid-svg-jZhZJhxjPddRhIWc .image-shape .label,#mermaid-svg-jZhZJhxjPddRhIWc .icon-shape .label{text-align:center;}#mermaid-svg-jZhZJhxjPddRhIWc .node.clickable{cursor:pointer;}#mermaid-svg-jZhZJhxjPddRhIWc .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-jZhZJhxjPddRhIWc .arrowheadPath{fill:#333333;}#mermaid-svg-jZhZJhxjPddRhIWc .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-jZhZJhxjPddRhIWc .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-jZhZJhxjPddRhIWc .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-jZhZJhxjPddRhIWc .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-jZhZJhxjPddRhIWc .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-jZhZJhxjPddRhIWc .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-jZhZJhxjPddRhIWc .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-jZhZJhxjPddRhIWc .cluster text{fill:#333;}#mermaid-svg-jZhZJhxjPddRhIWc .cluster span{color:#333;}#mermaid-svg-jZhZJhxjPddRhIWc div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-jZhZJhxjPddRhIWc .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-jZhZJhxjPddRhIWc rect.text{fill:none;stroke-width:0;}#mermaid-svg-jZhZJhxjPddRhIWc .icon-shape,#mermaid-svg-jZhZJhxjPddRhIWc .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-jZhZJhxjPddRhIWc .icon-shape p,#mermaid-svg-jZhZJhxjPddRhIWc .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-jZhZJhxjPddRhIWc .icon-shape .label rect,#mermaid-svg-jZhZJhxjPddRhIWc .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-jZhZJhxjPddRhIWc .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-jZhZJhxjPddRhIWc .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-jZhZJhxjPddRhIWc :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 模型层
数据层 Multi-AZ
EKS / 内网 K8s
AZ-b
AZ-a
Agent Gateway x3
Agent Runtime xN HPA
Agent Gateway x3
Agent Runtime xN HPA
RDS PG Checkpoint
Redis Session
pgvector
Artifact
LiteLLM Proxy
vLLM GPU Pool

组件 副本策略 HPA 信号
Gateway min 3 跨 AZ QPS / 429 07
Runtime CPU 60% 或队列深度 自定义 queue_depth 21 §8
LiteLLM 无状态 2+ 延迟 07 §10
vLLM GPU 占满率 TTFT / KV 利用率 07 §3

5.2 环境策略

环境 LLM 数据 发布
dev 共享 cheap 模型 脱敏副本 任意
staging 生产同 schema 小流量 合成+抽样真数据 eval gate
prod 多模型路由 真数据分级 金丝雀 + prompt rev

反模式 :staging 无 eval gate;prod 直接改 prompt 无 version_pin 回滚。

5.3 多租户与隔离

层级 隔离方式
网络 Namespace per 大租户 / Mesh AuthorizationPolicy
数据 tenant_id 行级 + 向量 metadata 过滤
算力 预算配额 + 独立 queue
模型 LiteLLM key per tenant

6. 安全视图(Security View · 横切)

6.1 STRIDE 映射(Agent 特化)

STRIDE Agent 威胁 控制
S 伪造 Webhook 触发任务 mTLS + HMAC 签名
T 篡改 tool 响应 TLS + 响应签名(高敏)
R 普通用户提权调 admin tool RBAC + OPA
I 注入泄露其他租户 session 租户隔离 + 最小上下文
D 疯狂调 LLM 打穿预算 限流 + 预算熔断
E 审计日志被删 append-only + SIEM

→ 四层防御 17 §2

6.2 纵深防御(Agent 栈)

#mermaid-svg-MuK2IYOMxozEh64s{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-MuK2IYOMxozEh64s .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-MuK2IYOMxozEh64s .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-MuK2IYOMxozEh64s .error-icon{fill:#552222;}#mermaid-svg-MuK2IYOMxozEh64s .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-MuK2IYOMxozEh64s .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-MuK2IYOMxozEh64s .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-MuK2IYOMxozEh64s .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-MuK2IYOMxozEh64s .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-MuK2IYOMxozEh64s .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-MuK2IYOMxozEh64s .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-MuK2IYOMxozEh64s .marker{fill:#333333;stroke:#333333;}#mermaid-svg-MuK2IYOMxozEh64s .marker.cross{stroke:#333333;}#mermaid-svg-MuK2IYOMxozEh64s svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-MuK2IYOMxozEh64s p{margin:0;}#mermaid-svg-MuK2IYOMxozEh64s .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-MuK2IYOMxozEh64s .cluster-label text{fill:#333;}#mermaid-svg-MuK2IYOMxozEh64s .cluster-label span{color:#333;}#mermaid-svg-MuK2IYOMxozEh64s .cluster-label span p{background-color:transparent;}#mermaid-svg-MuK2IYOMxozEh64s .label text,#mermaid-svg-MuK2IYOMxozEh64s span{fill:#333;color:#333;}#mermaid-svg-MuK2IYOMxozEh64s .node rect,#mermaid-svg-MuK2IYOMxozEh64s .node circle,#mermaid-svg-MuK2IYOMxozEh64s .node ellipse,#mermaid-svg-MuK2IYOMxozEh64s .node polygon,#mermaid-svg-MuK2IYOMxozEh64s .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-MuK2IYOMxozEh64s .rough-node .label text,#mermaid-svg-MuK2IYOMxozEh64s .node .label text,#mermaid-svg-MuK2IYOMxozEh64s .image-shape .label,#mermaid-svg-MuK2IYOMxozEh64s .icon-shape .label{text-anchor:middle;}#mermaid-svg-MuK2IYOMxozEh64s .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-MuK2IYOMxozEh64s .rough-node .label,#mermaid-svg-MuK2IYOMxozEh64s .node .label,#mermaid-svg-MuK2IYOMxozEh64s .image-shape .label,#mermaid-svg-MuK2IYOMxozEh64s .icon-shape .label{text-align:center;}#mermaid-svg-MuK2IYOMxozEh64s .node.clickable{cursor:pointer;}#mermaid-svg-MuK2IYOMxozEh64s .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-MuK2IYOMxozEh64s .arrowheadPath{fill:#333333;}#mermaid-svg-MuK2IYOMxozEh64s .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-MuK2IYOMxozEh64s .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-MuK2IYOMxozEh64s .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-MuK2IYOMxozEh64s .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-MuK2IYOMxozEh64s .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-MuK2IYOMxozEh64s .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-MuK2IYOMxozEh64s .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-MuK2IYOMxozEh64s .cluster text{fill:#333;}#mermaid-svg-MuK2IYOMxozEh64s .cluster span{color:#333;}#mermaid-svg-MuK2IYOMxozEh64s div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-MuK2IYOMxozEh64s .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-MuK2IYOMxozEh64s rect.text{fill:none;stroke-width:0;}#mermaid-svg-MuK2IYOMxozEh64s .icon-shape,#mermaid-svg-MuK2IYOMxozEh64s .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-MuK2IYOMxozEh64s .icon-shape p,#mermaid-svg-MuK2IYOMxozEh64s .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-MuK2IYOMxozEh64s .icon-shape .label rect,#mermaid-svg-MuK2IYOMxozEh64s .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-MuK2IYOMxozEh64s .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-MuK2IYOMxozEh64s .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-MuK2IYOMxozEh64s :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 边界 WAF / Bot 检测
Gateway JWT / 限流
控制面 Policy / HITL
输入 Guardrails / 注入
Tool schema + 最小权限
输出 Guardrails / citation
Audit + 红队 + SIEM

必答面试点
L3 写操作不能只在 prompt 禁止
L5 MCP server 也要鉴权
L6 金额/库存必须来自 tool JSON

6.3 安全视图反模式

反模式 案例锚点
prompt 当防火墙 13 §15.1 误退款
trace_id 幂等 04 §8 退款重试
工具过度授权 客服 Agent 带 admin_* tool

7. 集成视图(Integration View)

7.1 与企业架构对齐

#mermaid-svg-56SmONAbF3BLt2Yq{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-56SmONAbF3BLt2Yq .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-56SmONAbF3BLt2Yq .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-56SmONAbF3BLt2Yq .error-icon{fill:#552222;}#mermaid-svg-56SmONAbF3BLt2Yq .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-56SmONAbF3BLt2Yq .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-56SmONAbF3BLt2Yq .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-56SmONAbF3BLt2Yq .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-56SmONAbF3BLt2Yq .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-56SmONAbF3BLt2Yq .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-56SmONAbF3BLt2Yq .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-56SmONAbF3BLt2Yq .marker{fill:#333333;stroke:#333333;}#mermaid-svg-56SmONAbF3BLt2Yq .marker.cross{stroke:#333333;}#mermaid-svg-56SmONAbF3BLt2Yq svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-56SmONAbF3BLt2Yq p{margin:0;}#mermaid-svg-56SmONAbF3BLt2Yq .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-56SmONAbF3BLt2Yq .cluster-label text{fill:#333;}#mermaid-svg-56SmONAbF3BLt2Yq .cluster-label span{color:#333;}#mermaid-svg-56SmONAbF3BLt2Yq .cluster-label span p{background-color:transparent;}#mermaid-svg-56SmONAbF3BLt2Yq .label text,#mermaid-svg-56SmONAbF3BLt2Yq span{fill:#333;color:#333;}#mermaid-svg-56SmONAbF3BLt2Yq .node rect,#mermaid-svg-56SmONAbF3BLt2Yq .node circle,#mermaid-svg-56SmONAbF3BLt2Yq .node ellipse,#mermaid-svg-56SmONAbF3BLt2Yq .node polygon,#mermaid-svg-56SmONAbF3BLt2Yq .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-56SmONAbF3BLt2Yq .rough-node .label text,#mermaid-svg-56SmONAbF3BLt2Yq .node .label text,#mermaid-svg-56SmONAbF3BLt2Yq .image-shape .label,#mermaid-svg-56SmONAbF3BLt2Yq .icon-shape .label{text-anchor:middle;}#mermaid-svg-56SmONAbF3BLt2Yq .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-56SmONAbF3BLt2Yq .rough-node .label,#mermaid-svg-56SmONAbF3BLt2Yq .node .label,#mermaid-svg-56SmONAbF3BLt2Yq .image-shape .label,#mermaid-svg-56SmONAbF3BLt2Yq .icon-shape .label{text-align:center;}#mermaid-svg-56SmONAbF3BLt2Yq .node.clickable{cursor:pointer;}#mermaid-svg-56SmONAbF3BLt2Yq .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-56SmONAbF3BLt2Yq .arrowheadPath{fill:#333333;}#mermaid-svg-56SmONAbF3BLt2Yq .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-56SmONAbF3BLt2Yq .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-56SmONAbF3BLt2Yq .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-56SmONAbF3BLt2Yq .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-56SmONAbF3BLt2Yq .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-56SmONAbF3BLt2Yq .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-56SmONAbF3BLt2Yq .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-56SmONAbF3BLt2Yq .cluster text{fill:#333;}#mermaid-svg-56SmONAbF3BLt2Yq .cluster span{color:#333;}#mermaid-svg-56SmONAbF3BLt2Yq div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-56SmONAbF3BLt2Yq .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-56SmONAbF3BLt2Yq rect.text{fill:none;stroke-width:0;}#mermaid-svg-56SmONAbF3BLt2Yq .icon-shape,#mermaid-svg-56SmONAbF3BLt2Yq .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-56SmONAbF3BLt2Yq .icon-shape p,#mermaid-svg-56SmONAbF3BLt2Yq .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-56SmONAbF3BLt2Yq .icon-shape .label rect,#mermaid-svg-56SmONAbF3BLt2Yq .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-56SmONAbF3BLt2Yq .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-56SmONAbF3BLt2Yq .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-56SmONAbF3BLt2Yq :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 演进预留
企业存量
Agent 平台
Channels
App / Web
Ops Webhook
AI BFF
Agent Platform
微服务域
Workflow Camunda/Temporal
Kafka
Istio Mesh
Internal Developer Platform
AI Gateway 24

集成模式 用于 Agent 注意点
同步 API 读多写少、低延迟 超时 + 熔断;缓存读
异步事件 状态通知、解耦 消费幂等;与 Agent 任务 id 关联
Outbox Agent 触发业务写 业务库与 outbox 同事务
Saga 多步写跨服务 补偿步骤人审或脚本
Workflow 固定审批链 Agent 生成草案,Workflow 执行

7.2 微服务与 Service Mesh

能力 Mesh 提供 Agent 用法
mTLS 服务间加密 Tool 调域内 gRPC
流量 金丝雀 Runtime 新版本 5%
授权 AuthorizationPolicy 限制 Runtime→支付域
观测 trace 传播 跨 Agent→订单服务

meshgovernance

7.3 AI Gateway(规划 24)契约预留

能力 统一入口价值 本篇占位
模型路由 租户级 quota Header X-Model-Route
Prompt 注册 版本化 prompt_rev in version_pin
Tool 注册 中心化 schema Tool Router 拉取
策略 全链路 Guardrails 17 合并

7.4 IDP 与平台工程

IDP 能力 Agent 团队消费
模板仓库 agent-service-springai golden path
密钥 Vault 注入 LITELLM_API_KEY
观测 自动注册 dashboard
发布 ArgoCD + eval gate

microservices-governance §07 IDP

7.5 Saga + Outbox 与 Agent 写操作

原则 :Agent 不充当 分布式事务协调器;长事务用 Saga ,单服务写用 Outbox
库存服务 Kafka Outbox 订单服务 Agent Executor 库存服务 Kafka Outbox 订单服务 Agent Executor #mermaid-svg-Rpy1i8R1U1lNtImT{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Rpy1i8R1U1lNtImT .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Rpy1i8R1U1lNtImT .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Rpy1i8R1U1lNtImT .error-icon{fill:#552222;}#mermaid-svg-Rpy1i8R1U1lNtImT .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Rpy1i8R1U1lNtImT .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Rpy1i8R1U1lNtImT .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Rpy1i8R1U1lNtImT .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Rpy1i8R1U1lNtImT .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Rpy1i8R1U1lNtImT .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Rpy1i8R1U1lNtImT .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Rpy1i8R1U1lNtImT .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Rpy1i8R1U1lNtImT .marker.cross{stroke:#333333;}#mermaid-svg-Rpy1i8R1U1lNtImT svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Rpy1i8R1U1lNtImT p{margin:0;}#mermaid-svg-Rpy1i8R1U1lNtImT .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-Rpy1i8R1U1lNtImT text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-Rpy1i8R1U1lNtImT .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-Rpy1i8R1U1lNtImT .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-Rpy1i8R1U1lNtImT .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-Rpy1i8R1U1lNtImT .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-Rpy1i8R1U1lNtImT #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-Rpy1i8R1U1lNtImT .sequenceNumber{fill:white;}#mermaid-svg-Rpy1i8R1U1lNtImT #sequencenumber{fill:#333;}#mermaid-svg-Rpy1i8R1U1lNtImT #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-Rpy1i8R1U1lNtImT .messageText{fill:#333;stroke:none;}#mermaid-svg-Rpy1i8R1U1lNtImT .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-Rpy1i8R1U1lNtImT .labelText,#mermaid-svg-Rpy1i8R1U1lNtImT .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-Rpy1i8R1U1lNtImT .loopText,#mermaid-svg-Rpy1i8R1U1lNtImT .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-Rpy1i8R1U1lNtImT .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-Rpy1i8R1U1lNtImT .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-Rpy1i8R1U1lNtImT .noteText,#mermaid-svg-Rpy1i8R1U1lNtImT .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-Rpy1i8R1U1lNtImT .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-Rpy1i8R1U1lNtImT .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-Rpy1i8R1U1lNtImT .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-Rpy1i8R1U1lNtImT .actorPopupMenu{position:absolute;}#mermaid-svg-Rpy1i8R1U1lNtImT .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-Rpy1i8R1U1lNtImT .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-Rpy1i8R1U1lNtImT .actor-man circle,#mermaid-svg-Rpy1i8R1U1lNtImT line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-Rpy1i8R1U1lNtImT :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 失败补偿由 Saga 定义,非 LLM 即兴 create_refund (idempotency_key) 业务表 + Outbox 同事务 202 accepted CDC 投递 RefundCreated 消费恢复库存

步骤 谁编排 Agent 角色
提议退款 Agent 生成参数 + 证据
执行退款 订单服务 API 调用一次;不循环重试乱改 key
后续库存 Saga 订阅者 让 LLM 直接调库存写

反模式:Agent 逐步调 5 个写 API 无 Saga;Outbox 未用导致双写不一致。

7.6 集成视图反模式

反模式 后果
Agent 直连核心库 绕过领域边界
无防腐层 schema 变更击穿 prompt
用 Chat 接口做批处理 无 checkpoint 巨贵

8. 演进视图(Evolution View · 第七视图)

8.1 四阶段 maturity ladder

#mermaid-svg-83aL6dDkCVcNbWNG{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-83aL6dDkCVcNbWNG .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-83aL6dDkCVcNbWNG .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-83aL6dDkCVcNbWNG .error-icon{fill:#552222;}#mermaid-svg-83aL6dDkCVcNbWNG .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-83aL6dDkCVcNbWNG .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-83aL6dDkCVcNbWNG .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-83aL6dDkCVcNbWNG .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-83aL6dDkCVcNbWNG .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-83aL6dDkCVcNbWNG .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-83aL6dDkCVcNbWNG .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-83aL6dDkCVcNbWNG .marker{fill:#333333;stroke:#333333;}#mermaid-svg-83aL6dDkCVcNbWNG .marker.cross{stroke:#333333;}#mermaid-svg-83aL6dDkCVcNbWNG svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-83aL6dDkCVcNbWNG p{margin:0;}#mermaid-svg-83aL6dDkCVcNbWNG .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-83aL6dDkCVcNbWNG .cluster-label text{fill:#333;}#mermaid-svg-83aL6dDkCVcNbWNG .cluster-label span{color:#333;}#mermaid-svg-83aL6dDkCVcNbWNG .cluster-label span p{background-color:transparent;}#mermaid-svg-83aL6dDkCVcNbWNG .label text,#mermaid-svg-83aL6dDkCVcNbWNG span{fill:#333;color:#333;}#mermaid-svg-83aL6dDkCVcNbWNG .node rect,#mermaid-svg-83aL6dDkCVcNbWNG .node circle,#mermaid-svg-83aL6dDkCVcNbWNG .node ellipse,#mermaid-svg-83aL6dDkCVcNbWNG .node polygon,#mermaid-svg-83aL6dDkCVcNbWNG .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-83aL6dDkCVcNbWNG .rough-node .label text,#mermaid-svg-83aL6dDkCVcNbWNG .node .label text,#mermaid-svg-83aL6dDkCVcNbWNG .image-shape .label,#mermaid-svg-83aL6dDkCVcNbWNG .icon-shape .label{text-anchor:middle;}#mermaid-svg-83aL6dDkCVcNbWNG .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-83aL6dDkCVcNbWNG .rough-node .label,#mermaid-svg-83aL6dDkCVcNbWNG .node .label,#mermaid-svg-83aL6dDkCVcNbWNG .image-shape .label,#mermaid-svg-83aL6dDkCVcNbWNG .icon-shape .label{text-align:center;}#mermaid-svg-83aL6dDkCVcNbWNG .node.clickable{cursor:pointer;}#mermaid-svg-83aL6dDkCVcNbWNG .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-83aL6dDkCVcNbWNG .arrowheadPath{fill:#333333;}#mermaid-svg-83aL6dDkCVcNbWNG .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-83aL6dDkCVcNbWNG .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-83aL6dDkCVcNbWNG .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-83aL6dDkCVcNbWNG .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-83aL6dDkCVcNbWNG .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-83aL6dDkCVcNbWNG .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-83aL6dDkCVcNbWNG .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-83aL6dDkCVcNbWNG .cluster text{fill:#333;}#mermaid-svg-83aL6dDkCVcNbWNG .cluster span{color:#333;}#mermaid-svg-83aL6dDkCVcNbWNG div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-83aL6dDkCVcNbWNG .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-83aL6dDkCVcNbWNG rect.text{fill:none;stroke-width:0;}#mermaid-svg-83aL6dDkCVcNbWNG .icon-shape,#mermaid-svg-83aL6dDkCVcNbWNG .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-83aL6dDkCVcNbWNG .icon-shape p,#mermaid-svg-83aL6dDkCVcNbWNG .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-83aL6dDkCVcNbWNG .icon-shape .label rect,#mermaid-svg-83aL6dDkCVcNbWNG .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-83aL6dDkCVcNbWNG .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-83aL6dDkCVcNbWNG .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-83aL6dDkCVcNbWNG :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} eval≥80% 再进
写操作 Saga 化
企业治理就绪
Stage 1

单 Agent 有界循环
Stage 2

多 Agent 角色分工
Stage 3

Agent + Workflow 混合
Stage 4

Agent Mesh 联邦

阶段 特征 准入门槛 典型技术债
1 单 Agent 一个 Runtime;DAG+≤8 步 有 checkpoint+trace prompt 散落代码
2 多 Agent Planner+Worker+Verifier 单 Agent completion≥80% 协调者 token 爆炸
3 +Workflow 固定段 Camunda;可变段 Agent 写操作全 HITL 或 Saga 双编排打架
4 Agent Mesh 跨域 Agent 注册发现;策略联邦 AI Gateway+统一 eval 无租户策略

→ 分期与 16 原型到生产 对齐。

8.2 迁移策略(Strangler for Agent)

遗留 目标 手法
规则客服 Agent 只读辅助 并行流量 5% shadow
单体会话 独立 Agent Svc BFF 路由切换
Dify 工作流 Spring AI 导出 DAG → 代码化
直连 OpenAI LiteLLM 改 base-url

#mermaid-svg-FhvqNuLeyx5G4Ykp{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-FhvqNuLeyx5G4Ykp .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-FhvqNuLeyx5G4Ykp .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-FhvqNuLeyx5G4Ykp .error-icon{fill:#552222;}#mermaid-svg-FhvqNuLeyx5G4Ykp .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-FhvqNuLeyx5G4Ykp .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-FhvqNuLeyx5G4Ykp .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-FhvqNuLeyx5G4Ykp .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-FhvqNuLeyx5G4Ykp .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-FhvqNuLeyx5G4Ykp .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-FhvqNuLeyx5G4Ykp .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-FhvqNuLeyx5G4Ykp .marker{fill:#333333;stroke:#333333;}#mermaid-svg-FhvqNuLeyx5G4Ykp .marker.cross{stroke:#333333;}#mermaid-svg-FhvqNuLeyx5G4Ykp svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-FhvqNuLeyx5G4Ykp p{margin:0;}#mermaid-svg-FhvqNuLeyx5G4Ykp .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-FhvqNuLeyx5G4Ykp .cluster-label text{fill:#333;}#mermaid-svg-FhvqNuLeyx5G4Ykp .cluster-label span{color:#333;}#mermaid-svg-FhvqNuLeyx5G4Ykp .cluster-label span p{background-color:transparent;}#mermaid-svg-FhvqNuLeyx5G4Ykp .label text,#mermaid-svg-FhvqNuLeyx5G4Ykp span{fill:#333;color:#333;}#mermaid-svg-FhvqNuLeyx5G4Ykp .node rect,#mermaid-svg-FhvqNuLeyx5G4Ykp .node circle,#mermaid-svg-FhvqNuLeyx5G4Ykp .node ellipse,#mermaid-svg-FhvqNuLeyx5G4Ykp .node polygon,#mermaid-svg-FhvqNuLeyx5G4Ykp .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-FhvqNuLeyx5G4Ykp .rough-node .label text,#mermaid-svg-FhvqNuLeyx5G4Ykp .node .label text,#mermaid-svg-FhvqNuLeyx5G4Ykp .image-shape .label,#mermaid-svg-FhvqNuLeyx5G4Ykp .icon-shape .label{text-anchor:middle;}#mermaid-svg-FhvqNuLeyx5G4Ykp .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-FhvqNuLeyx5G4Ykp .rough-node .label,#mermaid-svg-FhvqNuLeyx5G4Ykp .node .label,#mermaid-svg-FhvqNuLeyx5G4Ykp .image-shape .label,#mermaid-svg-FhvqNuLeyx5G4Ykp .icon-shape .label{text-align:center;}#mermaid-svg-FhvqNuLeyx5G4Ykp .node.clickable{cursor:pointer;}#mermaid-svg-FhvqNuLeyx5G4Ykp .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-FhvqNuLeyx5G4Ykp .arrowheadPath{fill:#333333;}#mermaid-svg-FhvqNuLeyx5G4Ykp .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-FhvqNuLeyx5G4Ykp .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-FhvqNuLeyx5G4Ykp .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-FhvqNuLeyx5G4Ykp .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-FhvqNuLeyx5G4Ykp .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-FhvqNuLeyx5G4Ykp .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-FhvqNuLeyx5G4Ykp .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-FhvqNuLeyx5G4Ykp .cluster text{fill:#333;}#mermaid-svg-FhvqNuLeyx5G4Ykp .cluster span{color:#333;}#mermaid-svg-FhvqNuLeyx5G4Ykp div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-FhvqNuLeyx5G4Ykp .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-FhvqNuLeyx5G4Ykp rect.text{fill:none;stroke-width:0;}#mermaid-svg-FhvqNuLeyx5G4Ykp .icon-shape,#mermaid-svg-FhvqNuLeyx5G4Ykp .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-FhvqNuLeyx5G4Ykp .icon-shape p,#mermaid-svg-FhvqNuLeyx5G4Ykp .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-FhvqNuLeyx5G4Ykp .icon-shape .label rect,#mermaid-svg-FhvqNuLeyx5G4Ykp .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-FhvqNuLeyx5G4Ykp .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-FhvqNuLeyx5G4Ykp .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-FhvqNuLeyx5G4Ykp :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 95%
5%
优于
用户
路由%
遗留 FAQ
Agent 只读
Eval 对比
扩量 30%

8.3 版本与兼容契约

工件 版本策略 破坏兼容时
prompt_rev semver eval 回归才升 major
tool_schema_rev 并存 2 版 30d Agent 路由旧 schema
kb_index_rev 蓝绿索引 双读验证 citation
model_alias LiteLLM 配置 灰度 10% 流量

8.4 演进视图反模式

反模式 后果
跳 Stage 2 上 Multi-Agent 成本翻倍、completion 下降
无 eval gate 全量 线上幻觉事故
Mesh 前无统一 trace 跨域不可追

9. 跨视图一致性矩阵

决策 业务 应用 数据 部署 安全 集成 演进
上线写操作 Agent HITL 必审 控制面 policy audit 全量 独立队列 write tool 标签 Saga Stage≥2
只读 FAQ 无 HITL 可纯 RAG 无 checkpoint 小副本 标准护栏 同步读 API Stage 1
多 Agent 角色清晰 Coordinator 共享 checkpoint 租户隔离 HPA 按队列 跨 Agent 策略 事件总线 Stage 2+

10. 45 分钟白板模拟题 · 满分参考答案

10.1 题目(面试官念)

设计一套 企业级客服 + 订单查询 Agent 平台 ,支持 App 与商家后台;可读订单/物流;退款/改址必须可控;日活 500 万,峰值 QPS 2 万(含非 Agent 流量);要可观测、可审计、可渐进从 FAQ 演进到 Agent。45 分钟。

10.2 时间盒

#mermaid-svg-5iqDlOo7PWrQ1hI9{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-5iqDlOo7PWrQ1hI9 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .error-icon{fill:#552222;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .marker.cross{stroke:#333333;}#mermaid-svg-5iqDlOo7PWrQ1hI9 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5iqDlOo7PWrQ1hI9 p{margin:0;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .mermaid-main-font{font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .exclude-range{fill:#eeeeee;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .section{stroke:none;opacity:0.2;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .section0{fill:rgba(102, 102, 255, 0.49);}#mermaid-svg-5iqDlOo7PWrQ1hI9 .section2{fill:#fff400;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .section1,#mermaid-svg-5iqDlOo7PWrQ1hI9 .section3{fill:white;opacity:0.2;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .sectionTitle0{fill:#333;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .sectionTitle1{fill:#333;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .sectionTitle2{fill:#333;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .sectionTitle3{fill:#333;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .sectionTitle{text-anchor:start;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .grid .tick{stroke:lightgrey;opacity:0.8;shape-rendering:crispEdges;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .grid .tick text{font-family:"trebuchet ms",verdana,arial,sans-serif;fill:#333;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .grid path{stroke-width:0;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .today{fill:none;stroke:red;stroke-width:2px;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .task{stroke-width:2;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .taskText{text-anchor:middle;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .taskTextOutsideRight{fill:black;text-anchor:start;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .taskTextOutsideLeft{fill:black;text-anchor:end;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .task.clickable{cursor:pointer;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .taskText.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .taskText0,#mermaid-svg-5iqDlOo7PWrQ1hI9 .taskText1,#mermaid-svg-5iqDlOo7PWrQ1hI9 .taskText2,#mermaid-svg-5iqDlOo7PWrQ1hI9 .taskText3{fill:white;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .task0,#mermaid-svg-5iqDlOo7PWrQ1hI9 .task1,#mermaid-svg-5iqDlOo7PWrQ1hI9 .task2,#mermaid-svg-5iqDlOo7PWrQ1hI9 .task3{fill:#8a90dd;stroke:#534fbc;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .taskTextOutside0,#mermaid-svg-5iqDlOo7PWrQ1hI9 .taskTextOutside2{fill:black;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .taskTextOutside1,#mermaid-svg-5iqDlOo7PWrQ1hI9 .taskTextOutside3{fill:black;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .active0,#mermaid-svg-5iqDlOo7PWrQ1hI9 .active1,#mermaid-svg-5iqDlOo7PWrQ1hI9 .active2,#mermaid-svg-5iqDlOo7PWrQ1hI9 .active3{fill:#bfc7ff;stroke:#534fbc;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .activeText0,#mermaid-svg-5iqDlOo7PWrQ1hI9 .activeText1,#mermaid-svg-5iqDlOo7PWrQ1hI9 .activeText2,#mermaid-svg-5iqDlOo7PWrQ1hI9 .activeText3{fill:black!important;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .done0,#mermaid-svg-5iqDlOo7PWrQ1hI9 .done1,#mermaid-svg-5iqDlOo7PWrQ1hI9 .done2,#mermaid-svg-5iqDlOo7PWrQ1hI9 .done3{stroke:grey;fill:lightgrey;stroke-width:2;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneText0,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneText1,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneText2,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneText3{fill:black!important;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneText0.taskTextOutsideLeft,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneText0.taskTextOutsideRight,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneText1.taskTextOutsideLeft,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneText1.taskTextOutsideRight,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneText2.taskTextOutsideLeft,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneText2.taskTextOutsideRight,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneText3.taskTextOutsideLeft,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneText3.taskTextOutsideRight{fill:black!important;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .crit0,#mermaid-svg-5iqDlOo7PWrQ1hI9 .crit1,#mermaid-svg-5iqDlOo7PWrQ1hI9 .crit2,#mermaid-svg-5iqDlOo7PWrQ1hI9 .crit3{stroke:#ff8888;fill:red;stroke-width:2;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .activeCrit0,#mermaid-svg-5iqDlOo7PWrQ1hI9 .activeCrit1,#mermaid-svg-5iqDlOo7PWrQ1hI9 .activeCrit2,#mermaid-svg-5iqDlOo7PWrQ1hI9 .activeCrit3{stroke:#ff8888;fill:#bfc7ff;stroke-width:2;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCrit0,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCrit1,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCrit2,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCrit3{stroke:#ff8888;fill:lightgrey;stroke-width:2;cursor:pointer;shape-rendering:crispEdges;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .milestone{transform:rotate(45deg) scale(0.8,0.8);}#mermaid-svg-5iqDlOo7PWrQ1hI9 .milestoneText{font-style:italic;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCritText0,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCritText1,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCritText2,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCritText3{fill:black!important;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCritText0.taskTextOutsideLeft,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCritText0.taskTextOutsideRight,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCritText1.taskTextOutsideLeft,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCritText1.taskTextOutsideRight,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCritText2.taskTextOutsideLeft,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCritText2.taskTextOutsideRight,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCritText3.taskTextOutsideLeft,#mermaid-svg-5iqDlOo7PWrQ1hI9 .doneCritText3.taskTextOutsideRight{fill:black!important;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .vert{stroke:navy;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .vertText{font-size:15px;text-anchor:middle;fill:navy!important;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .activeCritText0,#mermaid-svg-5iqDlOo7PWrQ1hI9 .activeCritText1,#mermaid-svg-5iqDlOo7PWrQ1hI9 .activeCritText2,#mermaid-svg-5iqDlOo7PWrQ1hI9 .activeCritText3{fill:black!important;}#mermaid-svg-5iqDlOo7PWrQ1hI9 .titleText{text-anchor:middle;font-size:18px;fill:#333;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-5iqDlOo7PWrQ1hI9 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 00:00 05:00 10:00 15:00 20:00 25:00 30:00 35:00 40:00 45:00 需求与范围 业务+验收 应用架构 数据+集成 部署+安全 演进+风险 Agent 平台 45min

10.3 需求澄清(5 min)--- 必问

问题 假设(写下来)
Agent 流量占比? 峰值 2k QPS Agent(10%)
写操作? 退款/改址 禁止自动执行 → HITL
延迟? 读链路 p99 <3s(含 RAG+1 次 tool)
多租户? 平台商家 + 自营;tenant_id 隔离
合规? 对话留存 30d;audit 1y

范围切割:做 Agent 平台 + BFF;不做订单核心重构;支付引用支付域 API。

10.4 满分答 · 业务视图(5 min)

L2 能力:查询 (订单/物流)、建议 (退款原因分析)、执行 (仅 HITL 后)。

价值流:意图识别 → 只读 tool → 带 citation 回答;写意图 → 工单 + 人工。

验收completion_ratecitation_rate≥80%;写操作 hitl_rate=100%

10.5 满分答 · 应用视图(12 min)

§3.1 总图,强调:

  1. 控制面 :JWT、OPA、max_cost_usd、幂等登记、HITL 队列。
  2. 数据面:LangGraph/Spring AI;DAG 骨架;Planner 滚动 3--5 步。
  3. Tool Router :订单/物流 readsuggest_refund 只出草案;execute_refund disabled 除非 HITL token。
  4. Guardrails:金额只信 tool JSON。
  5. Obstrace_id step 级;$/task 大盘。

口述 SLA:Gateway 99.99%;Runtime 99.9%;LLM 降级 L2/L3。

10.6 满分答 · 数据 + 集成(10 min)

  • Checkpoint PG ;Session Redis ;向量 pgvector kb_version
  • 集成:BFF → Mesh → 订单 gRPC;异步 OutboxRefundRequested(非 Agent 直写库存)。
  • Saga:退款编排由 订单域 消费事件驱动,Agent 不协调多写。

容量粗算:2000 QPS * 3k tokens * $0.003/1k ≈ $18/s 峰值 → 需缓存命中 + 小模型路由 + 预算熔断。

10.7 满分答 · 部署 + 安全 + 演进(13 min)

  • 部署:K8s 双 AZ;Runtime HPA;LiteLLM → vLLM;staging eval gate。
  • 安全:四层防御;STRIDE 表;客服 tool 最小权限。
  • 演进:Stage1 只读 Agent 5% 流量 → eval 优于 FAQ 再扩;Stage3 退款走 Workflow+HITL。

收尾风险:LLM 超时、RAG 旧政策、tool 重试幂等 ------ 各给一条降级。

11. 高频口述题 · 60--90 秒满分答(12 题)

11.1 Agent 和 Chatbot 架构本质区别?

Q1:Agent 和 Chatbot 架构本质区别?

答(60--90s) :Chatbot 以 单轮生成 为中心,状态主要是会话历史;Agent 是 带副作用的多步控制器,必须有 tool、验收标准、checkpoint、控制面策略。生产上 Agent 需要 step 级 trace、幂等写、HITL,成本模型按 /task 而不是 /message。

11.2 控制面和数据面为什么要分?

Q2:控制面和数据面为什么要分?

答(60--90s) :控制面处理 能不能做 (身份、预算、风险、审批、幂等登记),要快、要确定性;数据面处理 怎么做(plan、LLM、tool),可以弹性扩缩。混在一起会导致策略散落 prompt、无法审计、无法对写操作做统一熔断。

11.3 生产默认为什么推荐 DAG+有界循环而不是纯 ReAct?

Q3:生产默认为什么推荐 DAG+有界循环而不是纯 ReAct?

答(60--90s) :纯 ReAct 容易 死循环、短视、成本不可控 ;DAG 把确定性业务流程固化,只在局部用 ReAct 处理观测异常。配合 max_steps、同 tool 熔断、verify 闸门,SLO 可签。见 13 §2

11.4 Checkpoint 和向量库有什么区别?

Q4:Checkpoint 和向量库有什么区别?

答(60--90s) :Checkpoint 存 任务状态机 (plan、completed_steps、version_pin),PostgreSQL 强一致;向量库存 语义记忆和 RAG ,最终一致。混用会导致续跑失败或检索慢拖垮主路径。见 21 §3.2

11.5 Agent 写操作为什么必须 HITL 或 Saga?

Q5:Agent 写操作为什么必须 HITL 或 Saga?

答(60--90s) :LLM 非确定性,不能作为分布式事务协调器。写操作要么 人审 (客服退款),要么 领域服务+Outbox/Saga (订单域编排)。Agent 只应提交 幂等、可审计 的一次请求。

11.6 如何定义和度量 Agent 完成率?

Q6:如何定义和度量 Agent 完成率?

答(60--90s) :先定义 success_criteria(机器可验优先),如「订单号已返回且状态=已发货」。指标:completion_rate、平均 steps$/task、人工接手率。发布用 golden set + 回归 eval,见 06

11.7 Multi-Agent 什么时候值得上?

Q7:Multi-Agent 什么时候值得上?

答(60--90s) :当 子任务可并行、上下文可隔离、角色 skill 差异大 且单 Agent completion<目标;否则 Coordinator token 开销会让成本上升。准入:单 Agent eval≥80%。见 04 §5

11.8 Guardrails 和 system prompt 边界?

Q8:Guardrails 和 system prompt 边界?

答(60--90s) :system prompt 是 软约束 ,模型可能违反;Guardrails 是 硬校验 (schema、注入检测、PII、引用来源)。金额/库存/政策必须 tool JSON + citation ,失败拒答。见 17 §4

11.9 Agent 平台怎么做多租户?

Q9:Agent 平台怎么做多租户?

答(60--90s) :链路贯穿 tenant_id:Gateway、checkpoint 行级、向量 metadata 过滤、LiteLLM key 配额、Mesh AuthorizationPolicy。删除权要级联擦除 session+向量+checkpoint。

11.10 和微服务集成时防腐层怎么画?

Q10:和微服务集成时防腐层怎么画?

答(60--90s) :Agent 只调 BFF/领域 API ,不直连库。API schema 版本进 version_pin;下游变更由适配层吸收,避免 prompt 里塞 SQL/表结构。

11.11 演进 Stage 1→2 的最大风险?

Q11:演进 Stage 1→2 的最大风险?

答(60--90s) :多 Agent 协调成本与一致性:重复规划、互相矛盾 observation。治理上要有单一 Coordinator、共享 checkpoint、统一 eval,否则 completion 和成本双恶化。

11.12 AI Gateway(24)上线后 Agent 架构怎么变?

Q12:AI Gateway(24)上线后 Agent 架构怎么变?

答(60--90s) :模型路由、prompt 注册、tool 注册、全局策略 外提到 Gateway;Runtime 变薄,专注编排与状态。迁移期双写路由头,灰度租户。

12. STAR-M-P 事故复盘:Agent 平台跨租户记忆泄漏

字段 内容
S 某多租户客服 Agent 上线 3 天后,商家 A 会话出现商家 B 的订单尾号与金额片段,客服截图外传,监管问询。
T 24h 内止血并证明影响面;7 天内修复机制防复发。
A 立即关闭跨 session 语义记忆召回;按 tenant_id 扫 audit 影响 127 会话;trace 显示 pgvector 检索 未带 tenant filter ,且 Mem0 同步 job 写入了错误 namespace;回滚 mem_sync job,热修 Router 强制 metadata filter;补 eval 用例「跨租户泄露」100 条。
R 0 新增泄漏 72h;对外公告影响 127 会话;商家补偿流程启动。
P cross_tenant_retrieval_rate 实时告警;周级红队;租户隔离纳入 P0 发布门禁。
M ① 向量检索 API 强制 tenant_id 入参,缺失则拒绝;② Checkpoint/Session key 加租户前缀;③ 记忆写入双写校验 namespace;④ CI 集成跨租户 eval。

根因链:应用视图 Memory 组件契约缺失 → 数据视图向量 metadata 未治理 → 安全视图 I 威胁未测。

→ 类似事故 13 §1504 §8

13. Master Checklist(P0 / P1 / P2)

13.1 P0 --- 上线阻断(必须全绿)

  • P0-01 控制面:写操作 risk 标签 + HITL/Policy
  • P0-02 幂等:写 API 用 business idempotency_key(非 trace_id)
  • P0-03 Checkpoint:PostgreSQL 外置,任务可 resume
  • P0-04 护栏:输出 schema + 金额/库存仅 tool JSON
  • P0-05 观测:trace_id + step 级 span 完整率>99%
  • P0-06 租户:向量/ session / checkpoint 全链路 tenant_id
  • P0-07 预算:max_steps + max_cost_usd 硬熔断
  • P0-08 工具:schema 版本化;write tool 默认禁或 HITL
  • P0-09 集成:不直连业务库;写走领域 API/Outbox
  • P0-10 eval:发布门禁 golden set 无回归
  • P0-11 安全:注入检测 + audit append-only
  • P0-12 降级:LLM 5xx / RAG 超时 / tool 熔断有 L1--L3

13.2 P1 --- Staff 答辩强加分

  • P1-01 能画七视图总图与依赖
  • P1-02 能口述应用视图七组件 SLA
  • P1-03 能讲 Stage1→4 演进与准入
  • P1-04 能白板 Saga/Outbox 与 Agent 边界
  • P1-05 有真实 $/task、completion_rate 数字
  • P1-06 version_pin 含 prompt+model+kb+tool
  • P1-07 Multi-Agent 有 Coordinator 与 eval 准入
  • P1-08 Mesh mTLS + 授权策略示例
  • P1-09 IDP golden path 与 eval gate
  • P1-10 STAR-M-P 事故含 M 机制与 P 指标

13.3 P2 --- 架构卓越(可选)

  • P2-01 AI Gateway 24 契约已评审
  • P2-02 Agent Mesh 联邦策略草案
  • P2-03 跨域统一 eval 平台
  • P2-04 FinOps 模型路由自动优化
  • P2-05 红队季度化 + 自动化注入集
  • P2-06 GraphRAG 与 Agent 规划结合 POC
  • P2-07 A2A 跨组织 Agent 互操作试点

14. 附录 A:应用组件接口草案(OpenAPI 片段)

yaml 复制代码
# Agent Control Plane - Task Submit (concept)
post /v1/agent/tasks:
  headers:
    Authorization: Bearer
    X-Tenant-Id: required
    X-Idempotency-Key: required-for-write-intent
  body:
    goal: string
    success_criteria: string[]
    scene: enum [cs, ops, buy]
    risk_profile: enum [read_only, suggest_write, execute_write]
  responses:
    202: { task_id, trace_id, status: queued }
    403: policy_denied
    429: budget_exceeded

15. 附录 B:数据表 DDL 摘要(Checkpoint)

sql 复制代码
CREATE TABLE agent_checkpoint (
  task_id       VARCHAR(64) PRIMARY KEY,
  tenant_id     VARCHAR(32) NOT NULL,
  rev           INT NOT NULL DEFAULT 1,
  trace_id      VARCHAR(64) NOT NULL,
  goal          TEXT NOT NULL,
  success_criteria JSONB NOT NULL,
  plan          JSONB,
  completed_steps JSONB DEFAULT '[]',
  version_pin   JSONB NOT NULL,
  status        VARCHAR(24) NOT NULL,
  wall_time_spent_s INT DEFAULT 0,
  updated_at    TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX idx_checkpoint_tenant_updated ON agent_checkpoint(tenant_id, updated_at DESC);

16. 附录 C:与 05-architecture 六视图对照速查

05-architecture 视图 本篇 Agent 章节 增量
业务架构 01 §2 验收标准、HITL 边界
应用架构 05 §3 控制面/数据面七组件
数据架构 04 §4 Checkpoint vs 向量
部署架构 03 §5 Runtime + vLLM
安全架构 06 §6 注入/工具滥用
技术架构 02 §3.7/§5 LiteLLM/路由
--- §7 集成 Outbox/Saga/Mesh/IDP
--- §8 演进 四阶段 maturity

17. 附录 D:七视图面试追问矩阵(35 格)

视图 追问维度 锚点章节 准备要点
业务 容量 §2 准备 1 个数字或策略
业务 一致性 §2 准备 1 个数字或策略
业务 失败 §2 准备 1 个数字或策略
业务 成本 §2 准备 1 个数字或策略
业务 合规 §2 准备 1 个数字或策略
应用 容量 §3 准备 1 个数字或策略
应用 一致性 §3 准备 1 个数字或策略
应用 失败 §3 准备 1 个数字或策略
应用 成本 §3 准备 1 个数字或策略
应用 合规 §3 准备 1 个数字或策略
数据 容量 §4 准备 1 个数字或策略
数据 一致性 §4 准备 1 个数字或策略
数据 失败 §4 准备 1 个数字或策略
数据 成本 §4 准备 1 个数字或策略
数据 合规 §4 准备 1 个数字或策略
部署 容量 §5 准备 1 个数字或策略
部署 一致性 §5 准备 1 个数字或策略
部署 失败 §5 准备 1 个数字或策略
部署 成本 §5 准备 1 个数字或策略
部署 合规 §5 准备 1 个数字或策略
安全 容量 §6 准备 1 个数字或策略
安全 一致性 §6 准备 1 个数字或策略
安全 失败 §6 准备 1 个数字或策略
安全 成本 §6 准备 1 个数字或策略
安全 合规 §6 准备 1 个数字或策略
集成 容量 §7 准备 1 个数字或策略
集成 一致性 §7 准备 1 个数字或策略
集成 失败 §7 准备 1 个数字或策略
集成 成本 §7 准备 1 个数字或策略
集成 合规 §7 准备 1 个数字或策略
演进 容量 §8 准备 1 个数字或策略
演进 一致性 §8 准备 1 个数字或策略
演进 失败 §8 准备 1 个数字或策略
演进 成本 §8 准备 1 个数字或策略
演进 合规 §8 准备 1 个数字或策略

18. 附录 E:术语表(中英)

术语 定义
Agent Runtime 执行 Plan/Tool/LLM 的有状态或无状态运行时
Control Plane 策略、预算、审批、幂等登记
Data Plane 规划与工具执行面
Checkpoint 任务状态持久化点,非向量库
version_pin prompt/model/kb/tool 版本快照
HITL Human-in-the-loop 人工审批
Guardrails 硬校验护栏,非 prompt
Agent Mesh 跨域 Agent 注册、发现、策略联邦
Outbox 业务与消息同事务可靠投递
North Star goal + success_criteria 锚点

19. 附录 F:深度阅读路径(按岗位)

岗位 本周 下周
Applied AI 本篇 §3+§4 + 13 04
AI Infra 本篇 §5+§7 + 07 mesh
Java 架构 本篇 §3+§7 + 18 14
安全/合规 本篇 §6 + 17 红队 §6.2

99. 章节导航

内容
§0 30 分钟 Checklist
§1 七视图方法论
§2 业务视图
§3 应用视图(核心)
§4 数据视图
§5 部署视图
§6 安全视图
§7 集成视图
§8 演进视图
§9 跨视图矩阵
§10 45min 白板满分答
§11 12 道口述题
§12 STAR-M-P
§13 Master P0/P1/P2
§14--19 附录
§99 导航

下一步 :若时间紧,先 §0 → §3 → §10 → §11 任选 5 题 → §13 P0 ;若冲 Architect,补 §7 Saga/Outbox + §8 演进 + 13 §19

20. 附录 G:应用视图组件详表(扩展)

20.1 Gateway

属性 Gateway 说明
Owner 平台团队 / 域团队
SLA 见 §3.2
Scale 水平扩展
State 无状态优先
Failure 熔断 + 降级
Metrics RED + 业务 KPI
Dependency 见深链章节

20.2 ControlPlane

属性 ControlPlane 说明
Owner 平台团队 / 域团队
SLA 见 §3.2
Scale 水平扩展
State 无状态优先
Failure 熔断 + 降级
Metrics RED + 业务 KPI
Dependency 见深链章节

20.3 Runtime

属性 Runtime 说明
Owner 平台团队 / 域团队
SLA 见 §3.2
Scale 水平扩展
State 外置状态
Failure 熔断 + 降级
Metrics RED + 业务 KPI
Dependency 见深链章节

20.4 Planner

属性 Planner 说明
Owner 平台团队 / 域团队
SLA 见 §3.2
Scale 水平扩展
State 无状态优先
Failure 熔断 + 降级
Metrics RED + 业务 KPI
Dependency 见深链章节

20.5 Executor

属性 Executor 说明
Owner 平台团队 / 域团队
SLA 见 §3.2
Scale 水平扩展
State 无状态优先
Failure 熔断 + 降级
Metrics RED + 业务 KPI
Dependency 见深链章节

20.6 ToolRouter

属性 ToolRouter 说明
Owner 平台团队 / 域团队
SLA 见 §3.2
Scale 水平扩展
State 无状态优先
Failure 熔断 + 降级
Metrics RED + 业务 KPI
Dependency 见深链章节

20.7 LLMRouter

属性 LLMRouter 说明
Owner 平台团队 / 域团队
SLA 见 §3.2
Scale 水平扩展
State 无状态优先
Failure 熔断 + 降级
Metrics RED + 业务 KPI
Dependency 见深链章节

20.8 Guardrails

属性 Guardrails 说明
Owner 平台团队 / 域团队
SLA 见 §3.2
Scale 水平扩展
State 无状态优先
Failure 熔断 + 降级
Metrics RED + 业务 KPI
Dependency 见深链章节

20.9 Memory

属性 Memory 说明
Owner 平台团队 / 域团队
SLA 见 §3.2
Scale 水平扩展
State 外置状态
Failure 熔断 + 降级
Metrics RED + 业务 KPI
Dependency 见深链章节

20.10 RAG

属性 RAG 说明
Owner 平台团队 / 域团队
SLA 见 §3.2
Scale 水平扩展
State 无状态优先
Failure 熔断 + 降级
Metrics RED + 业务 KPI
Dependency 见深链章节

20.11 Observability

属性 Observability 说明
Owner 平台团队 / 域团队
SLA 见 §3.2
Scale 水平扩展
State 无状态优先
Failure 熔断 + 降级
Metrics RED + 业务 KPI
Dependency 见深链章节

21. 附录 H:业务场景模式库(10 模式)

模式 risk 工具 HITL
客服只读 read_only RAG+订单查询 tool 无 HITL
客服建议写 suggest_write 生成工单草案 人执行
SRE Triage read+ack MCP 监控 tool critical resolve HITL
Buy 导购 read 商品/库存 read 定价 tool 禁用
数据迁移 batch_write 分区 checkpoint 全准入评审
代码助手 sandbox 隔离执行 无 prod 网络
报表生成 read+export Artifact S3 大数据外置
审批助手 workflow Camunda 衔接 Agent 不执行写
多 Agent 研究 internal 并行 Worker 无外部写
Red Team offline 合成攻击集 隔离环境

22. 附录 I:七视图反模式全集(42 条)

  • AP-01 业务 无验收标准
  • AP-02 业务 万物 Agent
  • AP-03 业务 能力无 Owner
  • AP-04 业务 忽视合规场景
  • AP-05 业务 ROI 无度量
  • AP-06 业务 与 BPM 重复建设
  • AP-07 应用 控制面空心
  • AP-08 应用 纯 ReAct 在线
  • AP-09 应用 无 verify 闸门
  • AP-10 应用 Coordinator 过多
  • AP-11 应用 护栏后置
  • AP-12 应用 工具无 schema
  • AP-13 数据 checkpoint 在 Pod
  • AP-14 数据 向量无租户
  • AP-15 数据 artifact 塞 PG
  • AP-16 数据 无 version_pin
  • AP-17 数据 audit 缺失
  • AP-18 数据 eval 无版本
  • AP-19 部署 单 AZ
  • AP-20 部署 无 HPA
  • AP-21 部署 staging 无 gate
  • AP-22 部署 GPU 无利用率监控
  • AP-23 部署 LLM 与 Runtime 同扩
  • AP-24 部署 无降级开关
  • AP-25 安全 prompt 防火墙
  • AP-26 安全 工具过度授权
  • AP-27 安全 无注入检测
  • AP-28 安全 audit 可篡改
  • AP-29 安全 密钥进 prompt
  • AP-30 安全 跨租户 session
  • AP-31 集成 直连数据库
  • AP-32 集成 无 Outbox
  • AP-33 集成 Agent 协调 Saga
  • AP-34 集成 无防腐层
  • AP-35 集成 Webhook 无签名
  • AP-36 集成 批处理走 Chat
  • AP-37 演进 跳阶段 Multi-Agent
  • AP-38 演进 无 eval 扩量
  • AP-39 演进 双编排打架
  • AP-40 演进 无兼容期
  • AP-41 演进 技术债无 ADR
  • AP-42 演进 Mesh 前无 trace

23. 附录 J:容量估算公式(Agent 专用)

text 复制代码
峰值 Agent QPS = 总峰值 QPS × Agent 流量占比
Token/s ≈ QPS × avg_tokens_per_task / avg_task_duration_s
$/hour ≈ Token/s × 3600 × blended_price_per_1k / 1000

Runtime 副本 ≈ ceil(峰值并发任务 / 每 Pod 并发任务数)
GPU 卡数 ≈ ceil(峰值 Token/s / 每卡 Token/s)   # 见 07 Serving

Checkpoint 写 QPS ≈ 峰值任务 QPS × avg_steps × checkpoint_every_step
PG 连接池 ≥ Runtime 副本 × 每副本连接数

面试要带一个你自己的估算例子(替换数字即可)。

官方文档与源码(一级依据)

AI Engineering · 正文机制应来自下方 官方文档(L1)官方源码仓库(L2)

禁止用教程站/博客充当机制依据。本章 QPS/延迟/STAR 为面试示意。

写作规范:docs/official-sources-registry.md §0

L1 · 官方文档

L2 · 官方源码

L3 · 论文 / 开放规范

相关推荐
程序员魔丸2 小时前
AI领域智能体(Agent)详细介绍
架构·agent
@insist1232 小时前
系统架构设计师-特定领域软件架构与软件产品线
架构·系统架构·软考·系统架构设计师·软件水平考试
春天花会开1312 小时前
PDSG架构/五步法深度解析
架构
张忠琳2 小时前
【kubevirt】(virt-launcher Part 6)virt-launcher 设备/网络/存储/外设层
云原生·架构·kubernetes·kubevirt
szxinmai主板定制专家3 小时前
基于 ARM+FPGA精密多轴实时运动控制卡设计方案,适用于半导体设备等高精度领域(一)
arm开发·人工智能·嵌入式硬件·fpga开发·架构·语音识别
达达尼昂4 小时前
AI Native 工程实践 : agent 自动化测试
前端·后端·架构
誰能久伴不乏4 小时前
工业级 Modbus 上位机架构:基于滴答引擎与状态锁的高并发调度器
c++·qt·架构
小小王app小程序开发4 小时前
陪诊小程序开发功能深度分析:功能架构、业务逻辑与落地要点
大数据·架构