Lesson 7: 部署和运维
学习目标
- 掌握 Agent 工作流的部署方案选择
- 理解生产环境中 Agent 的运维要点
- 学会设置可靠的错误恢复机制
部署方案比较
方案 1: n8n Cloud
最快上手的方案。 n8n 提供托管服务,你只需要导入 workflow JSON,配置 credentials,点击激活。
- 优点: 零运维、内置监控、可视化编辑器
- 缺点: 月费 $20+、数据在第三方、执行次数有限制
- 适合: 中小规模(每天 <1000 次执行)、快速验证 MVP
方案 2: 自建 n8n
在自己的服务器上跑 n8n。
# Docker 部署
docker run -d --name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
-e N8N_BASIC_AUTH_ACTIVE=true \
-e N8N_BASIC_AUTH_USER=admin \
-e N8N_BASIC_AUTH_PASSWORD=your-password \
n8nio/n8n- 优点: 数据自控、无执行限制、可深度定制
- 缺点: 需要运维、自己处理备份和更新
- 适合: 生产环境、数据敏感场景、大规模执行
方案 3: 纯代码部署
用 TypeScript/Python 直接写 Agent 逻辑,部署到任何平台。
- 优点: 最灵活、版本控制友好、可单元测试
- 缺点: 开发成本高、没有可视化界面
- 适合: 复杂 Agent 逻辑、需要深度集成的场景
选择建议
验证想法 → n8n Cloud(1-2 周搭建)
小规模生产 → n8n Cloud 或自建 n8n
大规模/复杂 → 自建 n8n + 纯代码混合生产环境检查清单
上线前必须确认:
可靠性
安全
成本
数据
错误恢复策略
级别 1: 自动重试
const retryWithBackoff = async <T>(
fn: () => Promise<T>,
maxRetries: number = 3
): Promise<T> => {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
try {
return await fn()
} catch (error) {
if (attempt === maxRetries) throw error
const delay = Math.pow(2, attempt) * 1000
await new Promise(resolve => setTimeout(resolve, delay))
}
}
throw new Error('Unreachable')
}级别 2: 降级处理
主服务不可用时,用备选方案:
- Claude API 超时 → 用缓存的模板回复
- 邮件发送失败 → 加入队列稍后重试
- CRM 不可达 → 本地记录,恢复后同步
级别 3: 人工接管
系统检测到异常模式时自动通知人类:
- 连续 5 次失败
- 异常高的 API 费用
- 输出与历史模式显著不同
关键收获
- 从 n8n Cloud 开始验证,确认有效后考虑自建
- 生产环境检查清单涵盖可靠性、安全、成本、数据四个维度
- 错误恢复分三级:自动重试 → 降级处理 → 人工接管
- 上线不是终点,持续监控和优化是日常工作