所有人都告诉你AI基础设施很贵,但有人已经用$0跑了半年生产系统——不是Demo,是7×24小时处理真实客户请求。代价是什么?没有Kubernetes,没有托管服务,单点故障随时可能炸。这到底是抠门奇迹还是技术自杀?

Oracle的"永久免费"不是陷阱,是设计约束

Oracle Cloud的Always Free tier给了AWS和GCP不愿给的东西:4核ARM64、24GB内存、200GB存储,永久免费,不是12个月试用期。我的整套多智能体基础设施就跑在圣保罗的一台Oracle实例上。

约束条件决定了所有架构选择:

  • 单区域部署,没有地理冗余
  • ARM64架构需要谨慎管理依赖
  • 出口带宽受限(10TB/月,但有节流)
  • 零托管服务,只有裸计算资源

实际资源分配如下:

多智能体系统(PM2)    :~2GB内存Redis(状态/队列)      :~500MB内存PostgreSQL(对话历史)  :~1.5GB内存Nginx(Webhook端点)    :~200MB内存系统开销               :~1.5GB内存持续使用总计           :~6GB/24GB

剩下18GB留给突发处理、模型响应缓存,以及偶尔失控的智能体内存泄漏。Node.js智能体在生产环境泄漏是常态,假装没这回事是自欺欺人。

智能体编排:PM2不是Kubernetes,但够用

没有K8s,我用PM2管理8个核心智能体进程。每个智能体有独立的重启策略:内存超1.5GB自动重启,15分钟内崩溃3次则冻结30分钟。

关键设计:智能体无状态,所有上下文扔Redis。一个智能体崩溃,PM2重启,从Redis恢复上下文,客户无感知。平均恢复时间8秒,比某些托管服务的冷启动还快。

代价?Redis单点故障等于全军覆没。我每周手动备份一次RDB到本地NAS,接受最多丢1小时数据的风险。

数据库:PostgreSQL的暴力美学

1.5GB内存跑PG听起来疯狂,但配置调优后TPS稳定在200+。秘诀:禁用fsync(接受崩溃丢几秒数据),shared_buffers压到256MB,work_mem砍到4MB。

对话历史表按客户ID分区,30天自动归档到压缩JSON文件。当前活跃数据永远小于500MB,查询永远走索引。

网络:10TB带宽的精打细算

智能体调用OpenAI API是最大开销。我的解法:本地缓存Embedding结果(相似度>0.95直接复用),模型响应按请求指纹缓存4小时。缓存命中率37%,每月省下约$200 API费用。

Webhook入口用Cloudflare Tunnel(免费层),绕过Oracle的带宽计费。延迟增加80ms,但零成本。

故障实录:当"免费"露出獠牙

第4个月,圣保罗区域网络中断4小时。我的系统彻底离线,没有多区域 failover,没有SLA可以索赔。客户收到504错误,我在Telegram群手动道歉。

第5个月,一个智能体陷入死循环,24小时内吃掉18GB内存,触发OOM killer,连带Redis一起崩溃。恢复花了2小时,丢失47个进行中的对话。

这些不是"如果",是"已经发生的代价"。

谁该尝试,谁该绕道

适合:月活<1万、数据可丢几分钟、团队能7×24小时on-call的早期项目。你的时间成本<$500/月时,这笔账才算得过来。

不适合:需要合规认证、客户要求99.9% SLA、团队没人愿意凌晨3点修服务器的场景。免费基础设施的隐性成本是睡眠和头发。

6个月零账单是真的。但账单只是成本的一种形式。