实战:路径与工作流

Agent 部署与生产化指南

把 Agent 从本地 Demo 推到生产环境,需要解决五个问题:在哪里运行、怎么监控、怎么控制成本、怎么管理版本、怎么保障安全。本篇不讲特定框架的部署步骤(那些看官方文档就行),而是梳理通用的生产化决策框架。

来源:LangGraph Deployment · Google ADK Deployment · Anthropic Agent SDK | 整理时间:2026-05-14


概述

把 Agent 从本地 Demo 推到生产环境,需要解决五个问题:在哪里运行、怎么监控、怎么控制成本、怎么管理版本、怎么保障安全。本篇不讲特定框架的部署步骤(那些看官方文档就行),而是梳理通用的生产化决策框架。


部署模式选择

三种主流模式

模式 适合场景 成本 复杂度
Serverless 函数 事件驱动、短任务、低并发 低(按调用计费)
容器化服务 长时运行、需要状态、中等并发 中(按实例计费)
自托管集群 高并发、数据敏感、需要完全控制 高(固定成本)

按场景推荐

你的 Agent 做什么?
│
├─ 响应 Webhook / 定时任务
│  → Serverless(Cloudflare Workers / AWS Lambda)
│
├─ 持续运行、维护状态(如客服 Agent)
│  → 容器化(Docker + K8s / Cloud Run / Fargate)
│
├─ 处理敏感数据、合规要求
│  → 自托管(私有云 / 本地机房)
│
└─ 内部工具、团队使用
   → 容器化或 Serverless 都可以,取决于并发量

成本控制

Agent 的成本主要来自两个地方:LLM API 调用基础设施

LLM 成本优化

策略 效果 实现方式
缓存重复查询 减少 30-50% 调用 缓存 LLM 响应,相同输入直接返回
分级模型 降低 40-60% 成本 简单任务用 Haiku,复杂任务用 Sonnet/Opus
限制 Token 预算 控制单次调用上限 设置 max_tokens,监控实际使用
Prompt 压缩 减少 20-30% 输入 精简系统提示、移除不必要上下文
批量处理 提高吞吐量 积累请求后批量发送

监控指标

// 每次调用记录这些指标
{
  "agent_id": "customer-support-v2",
  "model": "claude-sonnet-4-6",
  "input_tokens": 2847,
  "output_tokens": 432,
  "latency_ms": 3200,
  "cost_usd": 0.023,
  "tool_calls": 3,
  "success": true,
  "timestamp": "2026-05-14T10:30:00Z"
}

成本告警

  • 单日支出上限:设置硬限制,超限自动停止
  • 单次调用上限:超过阈值的调用记录告警
  • 异常模式检测:Agent 进入循环时快速检测和终止

监控与可观测性

三层监控

层级 监控什么 工具
基础设施 CPU、内存、网络、容器状态 CloudWatch / Grafana / Prometheus
Agent 行为 调用次数、延迟、成功率、Token 用量 自定义 metrics + LLM 可观测平台
业务指标 任务完成率、用户满意度、错误类型 业务 dashboard

关键告警规则

告警 条件 动作
Agent 循环 同一任务连续 5+ 次 tool call 无进展 终止任务,通知值班
Token 爆炸 单次调用 input > 50K tokens 告警 + 记录上下文快照
错误率飙升 10 分钟内失败率 > 30% 告警 + 自动降级到备用模型
成本异常 小时支出 > 日均 3x 告警 + 暂停非关键 Agent

日志设计

// 结构化日志示例
logger.info("agent_task_completed", {
  task_id: "task_abc",
  agent_version: "2.1.0",
  duration_ms: 4500,
  tool_calls: [
    { name: "search_issues", latency_ms: 800 },
    { name: "create_issue", latency_ms: 1200 },
  ],
  tokens: { input: 2847, output: 432 },
  result: "success",
});

版本管理

Agent 版本策略

策略 说明 适合
蓝绿部署 两套环境,切流量 需要零停机
金丝雀发布 5% → 20% → 100% 流量 需要渐进验证
功能标志 按用户/请求开启新版本 需要精细控制
API 版本 URL 路径包含版本号 对外服务

Prompt 版本管理

Prompt 是 Agent 的"代码",必须版本化:

prompts/
├── v1/
│   ├── system.md          # 系统提示
│   └── tools-spec.json    # 工具定义
├── v2/
│   ├── system.md
│   └── tools-spec.json
└── current → v2/          # 软链接指向当前版本

原则

  • Prompt 变更 = 版本变更
  • 每个版本有对应的测试用例
  • 回滚 = 切回上一个版本目录

安全保障

生产环境安全清单

类别 检查项 状态
认证 Agent 调用需要认证 token
授权 Agent 只能访问必要的 API 和数据
输入过滤 过滤用户输入中的注入攻击
输出过滤 检查 Agent 输出不泄露敏感信息
速率限制 单用户 / 单 IP 调用频率限制
审计日志 记录所有 Agent 操作用于审计
回滚能力 Agent 的操作可以回退
成本上限 硬性成本限制,超限自动停止

Agent 操作安全

// 危险操作需要人工确认
const dangerousActions = [
  "delete_record",
  "send_email",
  "modify_permissions",
  "execute_sql",
];

async function executeTool(name: string, params: any) {
  if (dangerousActions.includes(name)) {
    await notifyHuman(`Agent wants to execute ${name}`, params);
    const approved = await waitForApproval();
    if (!approved) return { error: "Operation cancelled by human" };
  }
  return await tools[name].execute(params);
}

部署架构示例

中小规模:Cloudflare Workers + KV

用户请求
    ↓
Cloudflare Workers (Agent 入口)
    ↓
┌──────────────────────────┐
│  Agent Logic             │
│  - Prompt 组装            │
│  - LLM 调用 (Claude API) │
│  - 工具执行              │
│  - 状态管理 (KV)         │
└──────────────────────────┘
    ↓
外部 API (GitHub / Slack / DB)

适合:单 Agent、事件驱动、中等并发、成本敏感。

企业规模:K8s + 多 Agent

负载均衡
    ↓
┌──────────────────────────────┐
│  Agent Orchestrator          │
│  - 路由请求到合适的 Agent     │
│  - A2A 协议处理              │
│  - 全局状态管理              │
└──────────────────────────────┘
    ↓         ↓         ↓
Agent A    Agent B    Agent C
(MCP)      (MCP)      (MCP)

适合:多 Agent 协作、高并发、需要精细控制和合规要求。


从 Demo 到生产的检查清单

阶段 必须完成 验证方式
功能验证 所有核心路径测试通过 自动化测试套件
成本评估 预估单次调用成本和月度预算 压测 + Token 统计
安全审计 输入/输出过滤、权限最小化 安全扫描 + 人工 review
监控就绪 关键指标有 dashboard、告警配置完成 模拟故障验证告警
回滚方案 有明确的版本回滚流程 实际演练一次
文档 API 文档、运维手册、应急预案 新人能独立操作