一套完整生产落地的 Agent 技术栈

0 阅读3分钟

一套完整生产落地的 Agent 技术栈。

分享给做独立开发,以及正在做 Agent 产品的人。

stack.png

项目是我开发的一个 Multi-Agent 数学建模系统。两年前我开源过一个版本,但真正做到生产后,会发现有非常多 dirty work,所以这次我直接用 TypeScript 全重写了一版。

我目前最大的感受是:

现在做 Agent Demo、桌面端、玩具产品的人很多,但真正能稳定跑生产、持续产生效益的产品,其实非常少。

因为: Agent 真正难的部分,不是 prompt,而是工程化。

而我本人平时还在上班,整个项目基本是我一个人开发,所以技术选型上,我会非常偏向:

  • 熟悉
  • 开发效率高
  • 文档完整
  • 能快速上线迭代

基本就是一套“独立开发友好”的技术栈。


技术选型:

前后端:Next.js 16 + TypeScript

我对这套比较熟,页面、API、鉴权、SSE 流式响应都能放在一个工程里,开发效率非常高。

但 Next.js 的缺点也很明显:

太慢了。

尤其是:

  • hot reload 慢
  • 内存占用大
  • 工程稍微复杂一点 dev server 就开始卡

下次如果重做,我大概率不会再选 SSR,可能会直接转: Vite + SSG


Agent:AI SDK v6

现在我基本已经离不开 AI SDK 了。

它做:

  • SSE
  • 多模型切换
  • tool calling
  • stream UI

都非常顺手。

配合 Next.js 写 Agent 几乎是当前最舒服的方案之一。


LLM:OpenAI Compatible + Anthropic

我不希望系统锁死单一模型厂商。

所以统一走 OpenAI Compatible 协议,再补 Anthropic。

这样:

  • 用户可以 BYOK(Bring Your Own Key)
  • 模型可以动态切换
  • 成本更容易控制
  • 也方便以后接私有模型

Sandbox:E2B Code Interpreter

这个是生产里非常关键的一层。

因为我的场景是: 运行 Python 代码求解数学建模问题。

E2B 的好处是:

  • 沙箱隔离稳定
  • 文件处理方便
  • Python 环境成熟
  • 更适合生产环境

相比自己维护 Docker Sandbox,省了很多精力。


Database:PostgreSQL + Drizzle ORM

负责:

  • 聊天记录
  • 消息状态
  • Token 消耗
  • 用户配置
  • 计费状态

Drizzle 在 TypeScript 生态里我挺喜欢的:

类型安全做得很好,而且没有 Prisma 那种很重的感觉。


鉴权:Better Auth

登录、注册、找回密码这些能力接得很快。

我现在越来越倾向: 能不自己造 auth 轮子,就绝不自己造。


UI:shadcn/ui + Tailwind + AI Elements

这套组合真的非常适合 AI 产品。

尤其: AI SDK + AI Elements

配合起来写 Agent UI 的速度非常夸张。

很多:

  • 消息流
  • Tool 状态
  • Thinking 过程
  • Agent Steps

基本很快就能搭出来。


观测:OpenTelemetry + Langfuse

Agent 系统如果没有 observability,后期基本没法排查问题。

尤其:

  • 模型调用
  • Tool 链路
  • Token 消耗
  • 错误回溯

这些必须可观测。

Langfuse 现在我觉得已经是 AI 产品里的基础设施了。


计费:支付宝 + 服务端预扣

接支付宝是真麻烦,但是合规就很好。

否则非常容易出现:

  • 漏单
  • 并发问题
  • Token 被刷

预扣虽然麻烦一点,但生产稳定性高很多。


包管理:pnpm

安装快、占用小。

大项目之后你会明显感觉比 npm/yarn 更舒服。


可以发现:

我整个技术栈其实非常 “Vercel 系”。

几乎全是海外独立开发者最喜欢的那套。

国内可能反而偏冷门。

但实话说:

这套东西写起来真的非常爽。

尤其: AI SDK + AI Elements

几乎把 Agent UI 开发效率拉满了。


目前这套栈里,

我唯一真正不满意的技术,其实就是:

Next.js

生态确实强,但开发体验已经越来越重了。

如果下次重构,我大概率会:

  • 放弃 SSR
  • 放弃大一统 Fullstack
  • 转向 Vite + 纯 API Backend

可能整体会轻很多。