代码 → 数据 → Agent:系统架构的三个时代

探索 AI 时代下,属于 2027 年的新一代智能体架构范式。

三个不可逆的趋势

我花了三天在 3 台 2GB 的虚拟机上搭了一套东西:PostgREST 当 API 层、Knative 做 Serverless、CopilotKit 对接 LLM、LangGraph 编排业务、全链路跑在离线 K8s 上。

搭完之后我发现:这不像任何一套主流架构

主流(2025):Next.js + Vercel AI SDK + OpenAI API + Supabase
我的(2025):CopilotKit + PostgREST + LangGraph + llama.cpp + 离线 K8s

但我越琢磨越觉得——我踩中的不是"另一种架构",而是下一代的架构


第一时代:代码 = 价值(2010–2022)

GitHub 仓库越大 → 公司估值越高
代码行数 = 竞争壁垒

这个时代的标准系统长这样:

┌── 前端(React/Vue)──────────────┐
├── BFF 层(Node.js/SpringBoot)────┤
├── 业务服务(SpringBoot × 20)─────┤
├── 数据访问层(MyBatis/JPA)───────┤
├── 缓存(Redis)───────────────────┤
├── 消息队列(Kafka)───────────────┤
└── 数据库(MySQL/PostgreSQL)──────┘
          ↓
      代码 50 万行
      微服务 30 个
      团队 50 人

核心信仰:把业务逻辑写成代码,部署成服务,服务越多系统越健壮。

这个时代的成就:SpringBoot、微服务、DDD、Clean Architecture——全是教你怎么把代码组织得更好


第二时代:数据 = 价值(2023–现在)

转折点不是 AI,是数据库本身的能力跃迁

PostgreSQL 14 → 17:
  - JSONB 性能提升 40%
  - SQL/JSON 查询语法标准化
  - 逻辑复制支持原生发布/订阅

PostgREST 12:
  - SQL 表 → REST API(零代码)
  - 自动生成 OpenAPI schema
  - 行级安全(RLS)替代应用层鉴权

这意味着什么? 你不再需要写一个 DeviceController + DeviceService + DeviceRepository,加起来 300 行代码,就为了把数据库里的一张表暴露成 REST 接口。

PostgREST 的做法是:SQL 就是 API。建表即上线。

第二时代架构:

┌── 前端 ──────────────────────────┐
├── 复杂业务(LangGraph)───────────┤ ← 只写真正需要编排的
├── PostgREST(SQL → REST)────────┤ ← 替代 80% 的微服务
└── PostgreSQL + TimescaleDB ──────┘
          ↓
      代码 5000 行(原 50 万行的 1%)
      服务 3 个(原 30 个的 10%)
      团队 5 人(原 50 人的 10%)

但这个时代的局限性:用户仍然需要手动操作 UI——点按钮、填表单、翻页查数据。API 是给前端用的,不是给用户用的。


第三时代:Agent = 价值(2026——∞)

Agent 时代的核心命题变了:

第一时代:用户 → 前端 → API → 数据       (人在操作)
第二时代:用户 → 前端 → SQL → 数据       (数据在简化)
第三时代:用户 → 自然语言 → Agent → 数据  (AI 在操作)

用户不再需要知道"筛选条件怎么写""报表怎么配置"。 用户只需要说一句话:

"上个月锅炉房温度有几天异常?"

Agent 自己知道:

  1. 调用 PostgREST 查设备表,找到锅炉房传感器的 ID
  2. 查遥测表,过滤最近 30 天数据
  3. 计算均值和标准差,标记超过 2σ 的数据点
  4. 返回结果,附带"建议检查冷却系统"

整个过程:用户没碰过一个按钮,开发者没写过一个 SQL。

第三时代架构(你的架构):

┌── CopilotKit 前端 ─────────────┐
│   用户: "查异常设备"              │
├── CopilotKit Runtime ──────────┤
│   LLM 决策 → 调 Tool            │
├── PostgREST ───────────────────┤  ← 简单查询
├── LangGraph ──────────────────┤  ← 复杂编排
├── llama.cpp (Mac M4) ──────────┤  ← 本地推理,离线
└── PostgreSQL ─────────────────┘
          ↓
      代码: 200 行(CopilotKit 配置 + LangGraph)
      服务: 2 个(缩零)
      用户操作: 1 句自然语言

三代对比

第一代:代码第二代:数据第三代:Agent
时间2010–20222023–20252026–
核心资产代码行数SQL 能力LLM + Tool 组合
API 层SpringBoot 手写PostgREST 自动Agent 动态调用
扩缩HPA(分钟级)Knative(秒级)缩零(0→N in 300ms)
用户界面按钮+表单可视化仪表盘自然语言对话
改需求改代码→CI/CD→部署改 SQL→即时生效说句话→Agent 执行
部署依赖K8s + 云服务PostgREST + K8s离线 K8s + 本地 LLM
代表案例Netflix OSSSupabaseCopilotKit + PostgREST

为什么现在还不是主流

不是技术问题,是惯性问题

  1. 技能栈锁定:SpringBoot 开发者市场上是 PostgREST 用户的 100 倍
  2. AI SDK 绑定:Vercel AI SDK + OpenAI 形成事实标准,替代有迁移成本
  3. 认知鸿沟:99% 后端开发者不知道 SQL 能直接变 API(PostgREST 12 年历史,GitHub 才 24k stars)
  4. 离线推理刚起步:大部分人还在 curl https://api.openai.com

但惯性终将被成本打穿:

传统方案:
  30 个微服务 × 512MB × 24h × 30d = 需要 12 台 8GB 云服务器
  月成本 ≈ $800+

本方案:
  3 台 ARM64 VM × 4GB = Mac 上跑
  月成本 ≈ $0(除了电费)
  
  80% CRUD 用 PostgREST = 省掉 24 个微服务
  离线 llama.cpp 推理 = 0 API 费用
  Knative 缩零 = 闲时 0 资源消耗

你现在站在哪里

2025 ┌─────────────────────────────────────────┐
     │ 主流:Next.js + Vercel AI SDK + OpenAI   │
     │ 少数派:PostgREST + llama.cpp + 离线 K8s│ ← 你在这
     ├─────────────────────────────────────────┤
2026 │ 主流:Agent 框架混战                      │
     │  CopilotKit vs Mastra vs CrewAI          │
     │  PostgREST 开始被注意                    │
     ├─────────────────────────────────────────┤
2027 │ 主流:SQL-驱动 Agent + 离线推理标配       │
     │  Apple Silicon 跑 LLM 成为默认           │
     │  Knative + PostgREST 成为新 LAMP         │
     └─────────────────────────────────────────┘

你不是在追赶 2025 年的趋势——你是在定义 2027 年的趋势。

这不是鸡汤。从第一代代码驱动到第二代数据驱动到第三代 Agent 驱动,每次演进都有一个特征:上一代的"最佳实践"恰好是下一代的"技术债务"

30 个 SpringBoot 微服务是 2020 年的骄傲,是 2027 年的累赘。

这套 200 行代码的 CopilotKit + PostgREST + LangGraph 架构,可能是 2025 年的异类,却是 2027 年的范式。


前篇:本文是 K8s 部署实录Serverless 平台AI 应用架构架构演进趋势 完整系列第四篇。