trigger.dev
用 TypeScript 几行代码构建 AI Agent 工作流,支持自托管或使用官方云端服务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 TypeScript 几行代码构建 AI Agent 工作流,支持自托管或使用官方云端服务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你的 AI 应用需要每隔一小时自动爬取竞品价格、用大语言模型分析数据,然后把结果汇总成报告发到 Slack——这类"需要持续运行、随时待命"的后台任务,传统服务器部署起来非常繁琐:你要处理进程保活、定时调度、失败重试、并发控制等一系列基础设施问题。Trigger.dev 正是为解决这个痛点而生的开源平台,它让开发者用几行代码就能定义复杂的 AI 工作流,并将其部署为完全托管(fully-managed)的后台服务,无需自建队列和调度器。
AI 应用的兴起催生了大量新型后台任务:定时调用 LLM API 处理文档、实时响应用户输入并调用外部工具、流式处理 AI 生成内容并写入数据库……这些任务与传统的 CRUD 后台任务有本质区别——它们往往需要长时间运行(AI API 响应可能很慢)、可观测性强(需要追踪每个 AI 调用的输入输出)、天然可重试(网络调用随时可能失败)。
Trigger.dev 由同名商业公司开发并维护,开源了核心框架。截至目前,该项目在 GitHub 上拥有超过 15,000 颗星,吸引了大量开发者和企业用户采用其开源版本。其技术栈为 TypeScript/Node.js,核心 SDK 通过 npm 分发,与 Next.js、Remix 等主流框架天然集成。
Trigger.dev 的使用方式非常直观:开发者用 npm 安装 SDK,定义一个 task 函数,部署到 Trigger.dev 云端(或自托管),平台自动处理调度、执行、重试和日志。整个体验类似于"Serverless 函数",但专门针对 AI 场景优化。
Trigger.dev 的任务基于 task 函数构建。一个典型的 AI 任务长这样:
import { task } from "@trigger.dev/sdk";
const myTask = task(
{ id: "analyze-pricing", queue: "pricing" },
async (payload: { productIds: string[] }) => {
const prices = await fetchPrices(payload.productIds);
const analysis = await openai.chat.completions.create({
model: "gpt-4o",
messages: [
{ role: "system", content: "你是一名价格分析师..." },
{ role: "user", content: JSON.stringify(prices) }
]
});
await saveToDatabase(analysis);
return analysis;
}
);
可以看到,任务可以是任何异步函数,支持引入 OpenAI、Anthropic 等任意 AI SDK,代码逻辑完全由开发者掌控,Trigger.dev 只负责"何时运行"和"如何可靠运行"。
Trigger.dev 支持多种触发模式:
对于 AI 工作流来说,可观测性至关重要——你需要知道每次 LLM 调用的具体 prompt、token 消耗、响应内容。Trigger.dev 内置了完整的运行日志界面:每一次任务执行记录为一个 Run,包含输入参数、执行步骤(Step)、AI 调用详情(Span)、耗时和成本。你可以在 Web UI 中清晰地看到 GPT-4o 处理了哪些数据、花费了多少 token、结果是什么。
图1:Trigger.dev Web 控制台中的 API Keys 管理页面,开发者在此创建和组织项目凭证。
Trigger.dev 采用了 monorepo + 微服务架构,使用 pnpm workspace + Turborepo 管理,代码结构非常清晰:
@trigger.dev/sdk 引入,封装了与平台后端通信的逻辑。底层依赖:PostgreSQL 14+ 存储任务元数据和运行记录,Redis 作为消息队列后端,ClickHouse 可选集成用于分析型查询。所有服务均支持 Docker 容器化部署。
值得注意的是,Trigger.dev 大量使用了 OpenTelemetry 进行分布式追踪,每个 AI SDK 调用都被自动插桩(auto-instrumentation),这是其对 AI 场景可观测性高度重视的体现。
Trigger.dev 最大的亮点之一是完全支持自托管。对于有数据隐私要求的企业,可以在自己的基础设施上运行完整平台。
项目在 hosting/ 目录下提供了两种自托管方案:
Docker Compose 方案(hosting/docker/):提供完整的一站式配置,包含 PostgreSQL、Redis、ClickHouse、Web 服务和 Worker 服务。通过 Traefik 做反向代理,通过内部 Registry 管理镜像。适合中小规模部署。
Kubernetes Helm Chart(hosting/k8s/helm/):生产级 K8s 部署配置,支持高可用、水平扩缩容。适合大规模企业使用。
自托管版本的代码与托管版完全一致,唯一的区别是计费和托管基础设施由用户自己掌控。
图2:批量操作(Bulk Actions)页面,展示对大规模 AI 任务批处理的能力。
Trigger.dev 的上手难度中等偏高,主要面向有 TypeScript/Node.js 开发经验的团队。安装 SDK 和定义任务是简单的(npm install + 几十行代码),但要本地完整运行开发环境,需要配置 Docker、PostgreSQL、Redis 等基础设施,门槛不低。
好在项目提供了 pnpm run docker:dev 一键启动本地开发栈,降低了本地调试的难度。
对于非技术用户,Trigger.dev 官方提供的托管云服务是更友好的选择——只需注册账号、创建项目、用 CLI 部署,无需管理任何基础设施。开源版本则适合:
图3:展开的批量操作面板,可对多个任务运行实例进行统一管理。
Trigger.dev 并非没有缺点:
Trigger.dev 的出现代表了 AI 应用开发的一个趋势:将 AI 特定的基础设施(重试、追踪、成本管理)从业务代码中分离出来,让开发者专注于 AI 逻辑本身。
相比 Temporal、Inngest 等通用工作流引擎,Trigger.dev 在 AI 场景做了大量深度优化:自动 token 计数、Span 级别的 AI 调用追踪、LLM 成本归因等。这些功能在通用引擎中往往需要大量定制才能实现。
随着 AI Agent 概念的持续火热,专门针对 AI 工作流的基础设施赛道正在快速发展。Trigger.dev 作为这一赛道的开源代表,兼顾了开发体验和部署灵活性,值得 AI 应用开发者密切关注。