
Demo 与生产的差距
本地 Agent 常是:单进程 + 单模型 Key + 无持久化。上线需要:
- 鉴权与多租户;
- 并发与排队;
- 可观测(trace、token 计量);
- 降级(模型不可用时的兜底)。

推荐分层
| 层 | 职责 | 常见组件 |
|---|---|---|
| 边缘 | TLS、WAF、限流 | Nginx / Cloudflare / Gateway |
| API | REST/SSE、会话 | NestJS / FastAPI |
| 执行 | Agent 循环、tool | Worker 进程 / 容器 |
| 模型 | 推理 | OpenAI 兼容网关 |
| 数据 | 会话、向量、文件 | MySQL / PG / S3 |
| 消息 | 异步任务 | RabbitMQ / Redis Stream |
| 观测 | 指标、日志、追踪 | Prometheus + Loki + Tempo |
同步 vs 异步
同步 SSE:适合聊天、短 tool 链(<30s)。
异步队列:适合报告生成、批量分析、多文件 RAG。

用户提交 job → 返回 jobId → Worker 执行 → Webhook 或轮询结果。
成本与控制
- 按用户/token 配额;
- 模型路由:简单意图用小模型;
- Prompt 缓存(供应商支持时);
- 审计日志:记录 tool 名与参数摘要(脱敏)。
与本博客基础设施对照
当前个人博客生产部署(简化):
Nginx (静态 + /api 反代)
→ NestJS (:3000)
→ MySQL / Redis
→ OpenAI 兼容网关(翻译、Agent)
RabbitMQ、Elasticsearch 在本地 profile 可关(.env RABBITMQ_ENABLED=false),体现 渐进式复杂度。
小结
生产 Agent 架构 = API + Worker + 队列 + 观测 + 预算。先保证可关停(kill switch)、可追踪(requestId),再追求多 Agent 花活。
作者基于本博客
backend/src/infrastructure与生产部署经验。