从客户端到服务端,全面梳理 AI Agent 部署的工业实践。本文追求广度而非深度,力求在一篇文章中覆盖 Agent 部署的全链路关键决策点。
一、客户端 / 边缘部署
1.1 设备端部署
| 厂商 | 模型 | 架构关键点 |
|---|---|---|
| Apple Intelligence | AFM ~3B on-device | LoRA adapter 热切换(rank 16,几十 MB/adapter),2-4bit 混合量化 ~3.5 bpw,iPhone 15 Pro TTFT ~0.6s |
| Google Gemini Nano | 1.8B / 3.25B via AICore | 系统服务统一管理模型(不打包进 APK),NPU/TPU 调度,Private Compute Core 网络隔离 |
| Microsoft Copilot | 云端编排 + 本地 UI | Declarative agents(低代码)+ Custom engine agents(自编排),2025.3 GA 自主代理 |
| Cursor | 自研 MoE 编码模型 | 推理在云端,工具调用在本地,最多 8 个并行 agent 各自在独立 Git worktree |
Apple 的核心模式是运行时可切换 LoRA adapter:一个基础模型通过加载不同的 adapter(每个仅十几 MB)来服务 Siri、Writing Tools、Image Playground 等不同任务,无需重训整个模型。超出设备能力范围的查询走 Private Cloud Compute——苹果自有硅基服务器,加密认证且无数据留存。
Google 选择了系统服务模式:AICore 作为 Android 系统服务统一管理模型下载、分发和推理调度,应用通过 ML Kit GenAI API 调用,不需要在 APK 中打包模型。设备支持 Pixel 9+ 和 Samsung Galaxy S24/S25。
Cursor 的架构代表了桌面端 Agent 的典型分离模式:推理和规划在云端完成,而文件编辑、终端命令等工具调用在用户本机执行。其自托管方案(Self-Hosted Cloud Agents)通过 Helm chart 部署 worker 到客户基础设施,仅需出站 HTTPS,不开入站端口。
1.2 浏览器端推理
浏览器已经成为一个可行的 Agent 推理环境:
- Transformers.js:Hugging Face 的浏览器端 Transformer 推理库,基于 ONNX Runtime Web + WebGPU,支持
q4量化,使用 Browser Cache API 持久化模型 - WebLLM / MLC-LLM:基于 Apache TVM 编译栈,通过 WebGPU shader 运行 LLM。Chrome 扩展中需要 Service Worker + Offscreen Document 模式绕过 WebGPU 限制,模型缓存在 IndexedDB
- Chrome Prompt API:零下载直接调用设备内置 Gemini Nano
生产案例:NoAIBills Chrome 扩展同时集成了 WebLLM、Transformers.js 和 Chrome Prompt API 三种推理后端,支持 Llama 3.2、DeepSeek R1、Qwen3,全离线运行,通过 IndexedDB 缓存实现跨会话模型复用。
1.3 Edge 部署
| 平台 | 核心机制 |
|---|---|
| Cloudflare Workers AI + Agents SDK | Durable Objects 做有状态 agent(SQLite + WebSocket + 调度),休眠时 $0,Dynamic Workers 分 5 级沙箱 |
| Vercel Edge Functions + Fluid Compute | Edge 函数 <50ms 冷启动做流式响应,Fluid Compute 处理长运行 agent |
| Deno Deploy | V8 isolate,内置 KV 全球复制 ~200ms,适合轻量级 agent API |
Cloudflare 的 Agent 部署模型尤其值得关注:每个 Durable Object 就是一个有状态的 micro-server,拥有自己的 SQLite 存储、WebSocket 连接和调度能力。Agent 可以做到每用户一个实例,空闲时完全不计费,按需毫秒级唤醒。2026 年推出的 Dynamic Workers 提供 5 级逐步升级的计算沙箱:
1 | Tier 0: Workspace(V8 isolate) |
1.4 混合路由架构
生产环境中的混合架构通常在三个层级间路由:
1 | 本地(<50ms,隐私/离线) |
路由策略:
- 规则路由(最常见):按 token 数 + intent 分类。
tokens < 50 && 简单意图 → 本地,含 PII → 私有云,默认 → 公有云 - 置信度级联:本地模型先跑,输出置信度低于阈值时升级到云端
- 推测解码:边缘模型快速起草候选 token,云端模型并行验证/拒绝,减少 30-50% 云端延迟
成本效益:当 70%+ 查询为常规查询时,混合路由可实现 60-80% 云端成本降低。
二、服务端分布式部署
2.1 编排框架
| 框架 | 定位 | 部署形态 | 生产案例 |
|---|---|---|---|
| LangGraph | 有状态图执行 + checkpointing | LangGraph Platform / Self-hosted Docker/K8s | Klarna(250 万对话),Replit Agent,11x(200 万线索) |
| CrewAI | 角色制 agent 团队 | CrewAI Enterprise / Docker+K8s | Flow 编排 + @persist 状态持久化 |
| AutoGen v0.4 | Actor 模型 + 异步消息 | 自托管 | 研究/动态问题求解 |
| Dify | 低代码 LLM 平台 | Docker Compose / ACK/EKS/GKE | 6 万+开发者,银行、大型互联网企业 |
| Coze | 微服务架构(Go/Thrift) | 多服务拆分 | 字节跳动内部 |
LangGraph 已成为生产多 Agent 系统的主流选择,月 PyPI 下载量 3800 万+,近 400 家企业在 beta 期间接入 LangGraph Platform。
Klarna 基于 LangGraph + LangSmith 构建的 Agent 系统处理 250 万对话,覆盖 8500 万活跃用户,等效 700 个全职客服,解决时间缩短 80%。
Brain/Worker 分离模式是服务端部署的一个关键优化:Supervisor(Brain)跑 Lambda,Worker 跑 ECS,成本降低 5-10x。
2.2 分布式执行
生产标准:无状态 worker + 外部状态存储。
1 | Load Balancer → FastAPI Workers (stateless) → Redis/Postgres Checkpoints → 可观测性平台 |
核心原则:永远不要在 worker 内存中存储 agent 状态。所有上下文通过任务 payload 传入或从共享存储获取,任意 worker 可处理任意请求,水平扩展变得 trivial。
| 任务队列 | 特点 | 适用场景 |
|---|---|---|
| Temporal | 事件溯源 + 崩溃恢复 + checkpoint 重放 | 长运行 agent workflow(Netflix 10 万+ workflows/天) |
| Celery + Redis/RabbitMQ | 成熟、广泛采用 | 短生命周期独立任务 |
| Inngest | 事件驱动 step function | 异步工作流、定时任务 |
Temporal 的杀手特性:一个运行 15 分钟的 Agent 在 99% 处崩溃时,可以从最后一个 checkpoint 恢复,不浪费已完成的计算。
2.3 计算隔离
生产共识:LLM 生成的代码必须用 Firecracker 或 Kata Containers 隔离,禁止裸 Docker。
| 技术 | 启动时间 | 隔离级别 | 生产使用者 |
|---|---|---|---|
| Firecracker microVM | ~125ms | 硬件虚拟化(KVM) | E2B(2 亿+沙箱)、AWS Lambda、Vercel |
| Kata Containers | ~200ms | 硬件虚拟化 | GKE Agent Sandbox、Northflank |
| gVisor | ~100ms | 系统调用拦截 | Modal、GKE |
| Docker (runc) | ~10ms | 共享内核 | 仅限可信代码 |
| bubblewrap/seatbelt | ~10ms | 进程级 | Anthropic Claude Code |
Stripe Minions(每周生成 1000+ PR)的做法:每次运行启动独立 devbox VM,无网络访问 + 无生产数据访问。隔离本身就是权限系统。
Anthropic Claude Code 使用轻量级进程隔离:Linux 上用 bubblewrap,macOS 上用 Seatbelt,将文件系统访问限制在特定目录,所有网络流量经过可配置代理。开源为 anthropic-experimental/sandbox-runtime,内部使用减少了 84% 的权限提示。
K8s 原生方案:kubernetes-sigs/agent-sandbox(2025.11 启动)标准化了沙箱编排,支持 Kata Containers 和 gVisor 后端。
2.4 数据隔离 / 多租户
AI Agent 引入了传统 SaaS 之外的隔离挑战:共享模型上下文(跨租户 prompt injection)、向量库交叉污染、持久化记忆泄漏、工具执行跨租户访问。
数据库层 — Row-Level Security(黄金标准):
1 | CREATE POLICY "tenant_isolation" |
数据库层强制执行,应用层无法绕过。每张表都有 org_id 列和对应索引。
向量库隔离三种模式:
| 模式 | 隔离强度 | 运维开销 | 代表方案 |
|---|---|---|---|
| Per-tenant namespace | 最强(物理分区) | 高 | Pinecone、Weaviate |
| Metadata filtering | 中(查询级过滤) | 低 | Pinecone、pgvector |
| 独立 collection/index | 强(逻辑隔离) | 最高 | 自建方案 |
多租户检查清单:
- ✅ 所有数据库查询含
tenant_idWHERE 条件 - ✅ 主键和索引包含
tenant_id - ✅ RLS 策略已启用
- ✅ 缓存键按 tenant 命名空间划分
- ✅ 向量搜索 metadata 过滤
- ✅ 凭证 AES-256-GCM per-tenant 加密
- ✅ 每个 LLM 调用按 tenant 计费标签
三、Agent Memory 存储
3.1 三层记忆架构
| 层 | 内容 | 存储 | 延迟 | 成本 |
|---|---|---|---|---|
| L1 Working Memory | 当前对话上下文、工具调用结果 | LLM context window + Redis | <1ms | 高(token 消耗) |
| L2 Session Compressed | 会话摘要、提取的结构化事实 | Redis / PostgreSQL | 5-20ms | 低 |
| L3 Long-term Persistent | 跨会话知识、用户偏好、学到的工作流 | 向量库 + 知识图谱 | 50-200ms | 中 |
3.2 记忆类型
| 类型 | 存储内容 | 存储后端 | 场景 |
|---|---|---|---|
| 短期/工作 | 当前对话轮次 | In-memory buffer | 对话上下文连续性 |
| 情景 | 过去的交互(带时间戳) | 向量库 + 时间 metadata | “上次你问过 X” |
| 语义 | 事实、偏好、知识 | 向量库 / KV / 图数据库 | 用户个性化 |
| 程序性 | 技能、工作流、行为模式 | 结构化记录 / Prompt 更新 | Agent 应该怎么做 |
| 图谱 | 实体关系、因果链 | 图数据库(Neo4j) | 组织架构、推理链 |
生产级 Agent 至少需要两种类型(语义 + 情景)。复杂推理 Agent 需要全部五种。
3.3 专用 Memory 平台
| 平台 | 特点 | 基准表现 |
|---|---|---|
| Mem0 (48K⭐, $24M) | 向量+图+KV 混合存储,user/session/agent/app 四级作用域 | p95 搜索 0.200s,LOCOMO 67.13% |
| Zep | Neo4j 双时态知识图谱(有效时间+事务时间),追踪事实演化 | LongMemEval 63.8%,但每对话 600K tokens 开销 |
| LangMem | 情景+语义+程序性三种类型,深度 LangGraph 集成 | p95 搜索 59.82s(仅适合离线) |
| Letta (MemGPT) | LLM 自主管理三级内存(Core/Archival/Recall) | $10M 种子轮,但 LLM 有时忘记搜索/更新 |
Mem0 vs Zep 的核心权衡:Mem0 延迟低、存储效率高(1,764 tokens/对话),Zep 在时间推理上远超(LongMemEval 63.8% vs 49.0%)但内存占用巨大(600K tokens/对话)。
3.4 存储后端选型
- Redis:L1 热状态,sub-ms 延迟,必须配 TTL(没有 TTL 的短期记忆会意外变成长期记忆)
- pgvector:ACID 向量存储,适合 PostgreSQL 生态
- Qdrant(Rust,HNSW+BQ)/ Pinecone(Serverless)/ Weaviate(混合搜索):L2/L3 语义检索
- **Neo4j + Graphiti (Zep)**:双时态知识图谱,事实矛盾不丢信息,追踪”用户三月认为 X,现在认为 Y”
3.5 持久化模式
LangGraph Checkpointing 是生产主流:
1 | from langgraph.checkpoint.postgres import PostgresSaver |
三种持久化模式:sync(最安全,每步前 checkpoint)、async(更快,后台 checkpoint)、exit(仅退出时 checkpoint)。
会话压缩策略:
- 摘要压缩:将一周的情景记忆压缩为摘要
- 事实提取:从原始对话提取结构化事实(存储减 60%,检索精度提升 22%)
- Checkpoint 修剪:只保留每个 thread 最近 N 个 checkpoint
TTL 淘汰策略:
| 记忆类别 | 保留时间 | 理由 |
|---|---|---|
| 原始对话 | 7-30 天 | 调试、审计 |
| 会话摘要 | 90 天 | 用户支持、分析 |
| 提取的事实 | 永久 | 核心知识库 |
| 行为模式 | 6-12 个月 | 程序性记忆刷新 |
3.6 多 Agent 共享内存
| 模式 | 优点 | 缺点 | 适用 |
|---|---|---|---|
| 集中式黑板 | 强一致性,实现简单 | >5 agent 瓶颈,单点故障 | 小型 pipeline |
| 分布式+同步 | 可扩展 | 一致性困难 | 大规模、隐私敏感 |
| 混合模式(生产标准) | 全局状态中心 + 私有存储 | 复杂度中等 | 大多数生产系统 |
关键统计:36.9% 的多 agent 失败源于 agent 间记忆不一致——各 agent 基于不同版本的事实运行。
3.7 Memory 安全威胁
Memory Poisoning(OWASP ASI06,2026)是 Agent 记忆系统面临的头号安全风险:
- 攻击者通过正常交互注入恶意指令到长期记忆
- 跨会话持久生效,可能在注入数天/数周后触发
- NeurIPS 2025 研究显示 95% 注入成功率,70%+ 攻击成功率
防御层级:
- 记忆内容过滤(regex/ML 分类)
- 来源验证(写入前校验)
- 置信度评分
- 只读系统记忆层(不可变管理员记忆)
- 行为漂移监控:拒绝率偏移 >15% 告警、指令回显评分、工具使用异常检测、KL 散度基线检测
四、安全与防护
4.1 Prompt Injection 防御
Prompt Injection 位列 OWASP 2025 AI 安全风险 #1。生产级防御需要多层堆叠:
| 层级 | 手段 | 代表工具 |
|---|---|---|
| 模型级 | RLHF / Constitutional AI | Anthropic Claude、OpenAI GPT-4o |
| 运行时防火墙 | ML + 规则检测 | NeMo Guardrails(~500ms)、Lakera Guard(<50ms) |
| 输入/输出过滤 | 工具调用验证、SQLi/XSS 检测 | 自建 |
| 架构防御 | 双 LLM 模式、指令层级 | Stripe 分离模式 |
NeMo Guardrails:NVIDIA 的可编程 rails 框架,使用 Colang DSL 定义输入/输出规则,支持 PII 检测、越狱检测、主题控制。
Lakera Guard:<50ms 延迟,每天处理 10 万+ 对抗样本,支持 100+ 语言。
4.2 Auth & 授权
Agent 的身份管理比传统服务更复杂——它们是非确定性的、自主的、以机器速度运行。
五层身份模型:
1 | 触发者身份(谁发起) |
MCP 授权标准(OAuth 2.1):
- MCP Server 作为 OAuth Resource Server
- 强制 PKCE
- 细粒度 scope:
mcp:tools:read、mcp:tools:write - 每次工具调用时评估权限,不仅在连接时
关键原则:短命令牌(5-15 分钟)、tenant-scoped 凭证、最小权限、全量审计。
4.3 成本管控
2026 年 AI SaaS 产品将 30-50% 基础设施预算用于 LLM API。
优化栈(叠加效果约 52% 总成本降低):
| 层 | 技术 | 典型节省 |
|---|---|---|
| 语义缓存 | GPTCache、RedisVL | 20-50%(FAQ 场景高达 70%) |
| 模型路由 | 按复杂度分发到不同模型 | 40-60% |
| Provider Prompt Caching | OpenAI/Anthropic 前缀缓存 | 50-90%(重复上下文) |
| Prompt 压缩 | LLMLingua、Selective Context | 20-30% token 减少 |
| Token 预算 | 按请求/租户/用户限制 | 防止失控 |
| 批量推理 | 异步 batch | 部分 provider 50% 折扣 |
模型路由示例:
1 | Trivial → GPT-4.1-nano ($0.05/M input) |
研究发现:90% 查询走小模型 + 复杂查询升级,可实现 87% 成本降低同时维持质量。
血泪案例:某金融 Agent 循环运行 11 天无人察觉,周 API 账单从 $127 飙升至 $47,000——没有熔断器,没有花费告警。
五、可靠性模式
LLM API 运行在 99.0-99.5% 可用性——即每月 3.5-7 小时宕机。2024 Q1 到 2025 Q1 行业 API 可用性实际从 99.66% 下降到 99.46%。
弹性层级
1 | 你的应用 |
Circuit Breaker 配置:
- 故障阈值:3-5 次失败或 60 秒内 50% 错误率
- 熔断时间:30s 起,指数退避,最大 5 分钟
- 半开流量:先 10%,逐步升至 25%
重试策略:
- 可重试:429(限流)、500/502/503/504(服务端错误)、超时
- 不可重试:401(认证)、400(请求错误)、内容策略违规
- 指数退避 + jitter(防止 thundering herd)
Fallback 链:
- Provider 级:GPT-4o → Claude Sonnet → Gemini Pro → 本地模型
- Model 级:GPT-4 → GPT-3.5-turbo → 规则响应
- 数据级:实时 RAG → 缓存数据 → 通用响应
Human-in-the-Loop 升级触发:连续 N 次失败、置信度低于阈值、敏感操作。Stripe 设置了 two-round CI cap 防止 Agent 无限重试。
六、部署生命周期
6.1 四层测试
| 层 | 测试内容 | 耗时 | 触发时机 |
|---|---|---|---|
| Tool 单元测试 | 单个工具正确性 | <2 min | 每个 PR |
| 行为测试 | Agent 在测试用例上的决策 | <10 min | 每个 PR |
| Pipeline 集成 | 端到端工作流 | <30 min | 合入主干 |
| Shadow/Canary | 真实流量验证 | 数小时-数天 | 预发布 |
6.2 部署策略
Shadow Mode:新 Agent 并行处理真实流量,但只记录不返回。老 Agent 继续服务用户。新 Agent 输出用于离线对比。零用户影响的验证方式。
Canary 部署:
- 1-5% 流量切到新版本
- 监控:任务完成率、升级率、工具错误率、成本、延迟
- 逐步放量:10% → 25% → 50% → 100%
- 指标恶化超阈值时自动回滚
回滚要求:<5 分钟完成。不可变版本 + 环境指针切换(指向 “production” 的 alias 切回上一版本)。
6.3 Prompt 版本管理
Git 风格工作流:分支、review、合并 prompt 如同代码。不可变版本 + 语义化版本号。环境晋升:dev → staging → production。
工具:MLflow Prompt Registry、Agenta(开源 LLMOps)、LangSmith(metadata 标签用于 A/B 对比)。
6.4 企业实践
| 公司 | 做法 |
|---|---|
| Stripe | Minions 每周 1000+ PR,devbox 沙箱,MCP 协议权限,shadow 测试 |
| Uber | Michelangelo 平台,75%+ 关键场景走 shadow testing,四级安全评级(Bronze→Platinum) |
| Anthropic | bubblewrap/seatbelt 沙箱,分类器防护,Zero Data Retention 企业方案 |
七、可观测性
| 平台 | 类型 | 亮点 | 定价 |
|---|---|---|---|
| LangSmith | SaaS | 零配置追踪,对话聚类,LangGraph 深度集成 | Free 5K traces/月,Plus $39/seat/月 |
| Langfuse | 开源 MIT (19K⭐) | 框架无关,Prompt 版本控制,成本分析 | 自托管免费,Cloud $59/月起 |
| Arize Phoenix | 开源 ELv2 | OpenTelemetry 原生,Embedding 漂移检测,路径/收敛评估 | 自托管免费,AX Cloud $50/月起 |
LangGraph 时间旅行调试:查看 checkpoint 历史,从任意 checkpoint 重放,支持 “undo” 功能和合规审计。
八、全景速查表
关键架构决策
| 决策点 | 推荐模式 | 反模式 |
|---|---|---|
| 设备端推理 | LoRA adapter 热切换 + 云端 fallback | 在 APK 中打包完整模型 |
| 边缘 Agent | Durable Objects / Edge + 持久后端 | 无状态 Edge 处理长运行任务 |
| 服务端状态 | 无状态 worker + 外部 checkpoint | Worker 内存存储 Agent 状态 |
| 计算隔离 | Firecracker/Kata(不可信代码) | 裸 Docker 运行 LLM 生成的代码 |
| 数据隔离 | PostgreSQL RLS + 向量库 namespace | 应用层 WHERE 过滤(可绕过) |
| Memory 存储 | 三层分级(Redis → 向量库 → 图谱) | 所有记忆塞进一个向量库 |
| 成本控制 | 语义缓存 + 模型路由 + token 预算 | 所有查询走最贵模型 |
| 部署策略 | Shadow → Canary → 全量 | 直接全量发布新 Agent |
关键公司实践
| 公司 | 核心实践 |
|---|---|
| Apple | On-device 3B + LoRA 热切换 + Private Cloud Compute |
| Gemini Nano AICore 系统服务 + Private Compute Core | |
| Klarna | LangGraph,250 万对话,700 FTE 等效 |
| Stripe | Minions 1000 PR/周,devbox 隔离,MCP 权限 |
| Anthropic | bubblewrap/seatbelt 沙箱,分类器防护 |
| Uber | Michelangelo 安全部署,75% shadow testing |
| Replit | Manager+Editor+Verifier 多 Agent,LangGraph |
| E2B | 2 亿+ Firecracker 沙箱,<200ms 冷启动 |
| Cloudflare | Durable Objects Agent,5 级沙箱,休眠 $0 |