这篇指南解决什么问题
你已经在本地跑通了一个 Agent Demo——可能是跟着 AI 编程趋势日报 Agent 做的,也可能是自己的项目。现在你想让它每天自动运行、或者让团队成员通过 API 调用。
Agent 部署与生产化指南 讲的是生产化决策框架(监控、版本、成本、安全)。本文讲的是更前置的问题:具体选哪种部署方式、怎么配、多少钱、踩什么坑。
如果你正在学 Agent 开发路线,本文是 学习路线图 Phase 3 的必读篇。
部署前先回答三个问题
选方案之前,先明确:
| 问题 | 选项 | 影响 |
|---|---|---|
| 谁会使用? | 自己 / 团队 / 外部用户 | 自己用→本地;团队→Serverless/容器;外部用户→需要认证和监控 |
| 每次任务运行多久? | < 30 秒 / 几分钟 / 长期运行 | 短任务→Serverless;长任务→容器 |
| 需要持久状态吗? | 无状态 / 需要数据库 | 无状态→Serverless 足够;有状态→需要数据库+容器 |
决策矩阵
你的 Agent 做什么?
│
├─ 定时任务(每天/每小时跑一次)
│ → Option 2: Serverless(Cloudflare Workers Cron)
│
├─ 通过 API 被调用(短任务)
│ → Option 2: Serverless(Workers / Vercel)
│
├─ 持续运行(如客服 Agent、长任务处理)
│ → Option 3: 容器化(Docker + Fly.io / Railway)
│
├─ 企业环境、敏感数据
│ → Option 4: 生产级(私有环境 + 监控 + 队列)
│
└─ 还在开发调试
→ Option 1: 本地运行
Option 1:本地运行
适合个人脚本和调试。零成本,零部署。
# 用 cron 每天早上 9 点运行
crontab -e
# 添加:
0 9 * * * cd /path/to/ai-coding-trends-agent && /usr/bin/python agent.py >> logs/cron.log 2>&1
或者用 Python 自带的 schedule 库:
import schedule
import time
schedule.every().day.at("09:00").do(main)
while True:
schedule.run_pending()
time.sleep(60)
成本:0 元(只需 OpenAI API 费用)。
限制:电脑关机就不跑;没有错误告警;不适合给其他人用。
Option 2:Serverless 部署
推荐短任务(< 30 秒)优先选 Serverless。按调用计费、自动扩缩、无需维护服务器。
Cloudflare Workers + Cron Trigger
适合定时触发的 Agent 任务。免费计划每天 10 万次请求。
wrangler.toml:
name = "my-agent"
main = "src/index.ts"
compatibility_date = "2026-06-01"
[triggers]
crons = ["0 1 * * *"] # UTC 01:00 = 北京时间 09:00
[vars]
MODEL = "gpt-4o-mini"
src/index.ts(TypeScript 版骨架):
export default {
async scheduled(event: ScheduledEvent, env: Env): Promise<void> {
const apiKey = env.OPENAI_API_KEY;
if (!apiKey) throw new Error("OPENAI_API_KEY not set");
// 在这里调用 Agent 逻辑
const result = await runAgent(apiKey, env.MODEL);
console.log("Agent result:", result);
},
async fetch(): Promise<Response> {
return new Response("Agent is running on schedule. Check logs for output.");
},
};
部署:
npx wrangler secret put OPENAI_API_KEY
npx wrangler deploy
Vercel / Railway(对比)
| 平台 | 适合 | 免费额度 | 超时限制 |
|---|---|---|---|
| Cloudflare Workers | 定时任务、短 API | 10 万次/天 | CPU 10ms-30s(按计划) |
| Vercel Serverless | HTTP API 触发 | 100 GB-hours/月 | 10 秒(Hobby)/ 60 秒(Pro) |
| Railway | 长时间容器 | $5/月试用额度 | 无硬性超时 |
短任务选 Workers,HTTP API 触发选 Vercel,需要长时间运行选 Railway。
成本:Cloudflare Workers 免费计划覆盖大多数个人项目;Vercel Hobby 免费但超时 10 秒;超出后按用量计费($0.30/百万请求级别)。
Option 3:容器化部署
适合长时运行、需要状态持久化、或 Agent 依赖不适合 Serverless 环境的库(如 Playwright、Selenium)。
Dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "-m", "agent"]
构建和本地测试:
docker build -t ai-coding-trends-agent .
docker run --env-file .env ai-coding-trends-agent
部署到 Fly.io
# 安装 flyctl
curl -L https://fly.io/install.sh | sh
# 初始化项目(生成 fly.toml)
fly launch
# 设置密钥
fly secrets set OPENAI_API_KEY=sk-... GITHUB_TOKEN=ghp_...
# 部署
fly deploy
Fly.io 按实例计费:最小 VM 约 $1.94/月(256MB RAM,共享 CPU)。适合 7x24 运行的 Agent。
部署到 Railway
railway init
railway up
Railway 检测到 Dockerfile 后自动构建。在 Dashboard 设置环境变量即可。
成本:Fly.io 最小实例 ~$2/月;Railway 按用量计费,试用额度 $5;自建 VM 取决于云厂商($3-10/月区间)。
Option 4:生产级部署(概览)
企业环境或有合规要求时,需要更完整的架构。本文只做概览——详细决策框架参见 Agent 部署与生产化指南。
| 维度 | 生产级要求 | 参考文章 |
|---|---|---|
| 监控 | 日志聚合、指标告警、链路追踪 | Agent 测试与评估 |
| 安全隔离 | 沙箱执行、权限分级 | Agent 沙箱实战 |
| 成本控制 | Token 预算、用量监控 | Agent 落地成本对比 |
| 队列与重试 | 任务队列、指数退避、死信队列 | — |
| 版本管理 | 灰度发布、回滚机制 | — |
常见故障排查
| 症状 | 可能原因 | 排查方向 |
|---|---|---|
| Worker 超时 | 任务超过 CPU 时间限制 | 拆分任务,或改用容器部署 |
| 环境变量未生效 | secret 未设置或名称不匹配 | wrangler secret list 确认;检查 .toml 中 [vars] vs secret |
| 状态丢失 | Serverless 无持久存储 | 用 D1 / KV / 外部数据库存状态 |
| Cold start 延迟 | 容器首次启动慢 | 预热实例或改用 Serverless |
| API key 泄露 | key 写入代码或日志 | 只用 secret/环境变量;日志中脱敏 |
| 日志缺失 | Worker 日志未持久化 | 配置 wrangler tail 或日志导出到外部服务 |
遇到平台限制变化时,去对应官方文档确认最新值:
- Workers 限制:https://developers.cloudflare.com/workers/platform/limits/
- Docker 文档:https://docs.docker.com/
- Fly.io 限制:https://fly.io/docs/about/pricing/
决策树总结
| 你的场景 | 推荐方案 | 理由 |
|---|---|---|
| 定时日报 / 定时抓取 | Cloudflare Workers Cron | 免费、定时、无需维护 |
| 短任务 HTTP API | Cloudflare Workers / Vercel | 按调用计费、自动扩缩 |
| 长时运行 Agent | Docker + Fly.io / Railway | 无超时限制、支持状态 |
| 敏感数据 / 合规要求 | 私有环境 + 监控 | 数据不出内网 |
| 还在开发 | 本地 cron / schedule | 零成本、快速迭代 |
一句话原则:先用最简单的方案跑起来(本地 → Serverless → 容器 → 生产级),只在当前方案遇到瓶颈时才升级。不要一开始就上 K8s。