Agent 系统协作架构:从单体到生态
真正让 Agent 产生商业价值的,不是模型本身有多聪明,而是它如何与外部世界连接。
系统全景:四个方向的协作网络
把 Agent 置于中心,从东南西北四个方向看它的协作接口:
北向:交互层(前端/用户)
↕
西向:事件层 ←→ [ Agent 核心 ] ←→ 东向:知识层(RAG)
↕
南向:能力层(工具/API)
- 北向:Agent 怎么输出给前端
- 南向:Agent 怎么调用工具
- 西向:谁来触发 Agent
- 东向:Agent 怎么获取知识
内部协作:Agent 之间怎么配合
当任务太复杂,单个 Agent 搞不定时:
黑板模式 (Blackboard):所有 Agent 共享一个内存块。A 写下"主题定了",B 看到后去写预算,C 看到后去订场地。技术实现:共享 Context 变量池。
路由分发 (Router):主管 Agent 只负责拆解任务,然后 Call 不同的子 Agent。技术实现:Function Calling,主 Agent 的工具列表包含各子 Agent。
接力模式 (Handoff):搞不定时,把当前对话的所有 Context 完整打包,Transfer 给更高级的 Agent 或人工。
Human-in-the-loop
Agent 执行关键操作前(删除数据、发送邮件),挂起任务,向人类发送审批请求。确认后才继续执行。
南向:怎么调用工具
MCP(Model Context Protocol)
以前 Agent 连 GitHub 得写专门的 Tool 代码,连 Notion 得写 Notion 代码。MCP 制定了统一标准:所有数据源吐出统一格式。
Agent 通过 MCP Client 问 Server:"你有什么能力?" Server 回答能力列表,Agent 直接调用,无需逐个适配。核心价值:即插即用任意第三方工具。
脚本执行 (Code Sandbox)
LLM 数学差、逻辑不严密。让 Agent 在沙箱里写代码并运行,获取精确结果。适合数据清洗、画图表、数学计算。
API 直接调用
最传统的方式。Agent 根据 OpenAPI Spec 构造 HTTP 请求。
北向:怎么输出给前端
仅仅输出 Markdown 已经不够了。
结构化输出:强制 Agent 输出 JSON,前端拿到后渲染成图表、卡片、表单控件。解决"Agent 说了一堆废话,前端没法用"的问题。
生成式 UI:Agent 不仅给数据,连 UI 组件一起给。用户问"现在的股价?",Agent 推回一个 <StockCard /> 组件,前端动态渲染。
流式传输:SSE 推送。前端解析流——tool_call 类型展示"正在搜索…"动画,text 类型展示打字机效果。
西向:谁来触发 Agent
Agent 不一定是"你问它答",它可以主动响应。
定时触发:每天早上 9 点唤醒 Agent,查昨天的数据,写日报发给你。
事件驱动:GitLab Webhook 有人提交代码 → 触发 Code Review Agent 自动审查;收到新邮件 → 触发秘书 Agent 自动归类。
设计视角总结
| 方向 | 核心问题 | 关键技术 |
|---|---|---|
| 南向(工具) | Agent 怎么安全地操作外部系统 | MCP、Function Calling、沙箱 |
| 北向(前端) | 怎么让输出可被 UI 消费 | JSON Mode、Generative UI、SSE |
| 内部(协作) | 多 Agent 怎么分工配合 | 黑板模式、路由分发、Handoff |
| 西向(触发) | 谁来唤醒 Agent、什么时候唤醒 | Cron、Webhook、事件总线 |