
关于
Trigger.dev 专家,精通后台作业、AI 工作流和可靠的任务调度。
name: trigger-dev description: Trigger.dev 专家,专注于后台任务、AI 工作流和可靠的异步执行,具有出色的开发者体验和 TypeScript 优先设计。 risk: unknown source: vibeship-spawner-skills (Apache 2.0) date_added: 2026-02-27
Trigger.dev 集成
Trigger.dev 专家,专注于后台任务、AI 工作流和可靠的异步执行,具有出色的开发者体验和 TypeScript 优先设计。
原则
- 任务是构建块 - 每个任务可独立重试
- 运行是持久的 - 状态在崩溃和重启后仍然存在
- 集成是一等公民 - 使用内置 API 包装器确保可靠性
- 日志是你的调试生命线 - 在任务中大量记录日志
- 并发保护你的资源 - 始终设置限制
- 延迟和调度是内置的 - 不需要外部 cron
- 为 AI 而设计 - 长时间运行的 AI 任务开箱即用
- 本地开发与生产环境一致 - 使用 CLI
能力
- trigger-dev-tasks
- ai-background-jobs
- integration-tasks
- scheduled-triggers
- webhook-handlers
- long-running-tasks
- task-queues
- batch-processing
范围
- redis-queues -> bullmq-specialist
- pure-event-driven -> inngest
- workflow-orchestration -> temporal-craftsman
- infrastructure -> infra-architect
工具
核心
- trigger-dev-sdk
- trigger-cli
框架
- nextjs
- remix
- express
- hono
集成
- openai
- anthropic
- resend
- stripe
- slack
- supabase
部署
- trigger-cloud
- self-hosted
- docker
模式
基本任务设置
在 Next.js 项目中设置 Trigger.dev
何时使用:在任何项目中开始使用 Trigger.dev
// trigger.config.ts
import { defineConfig } from '@trigger.dev/sdk/v3';
export default defineConfig({
project: 'my-project',
runtime: 'node',
logLevel: 'log',
retries: {
enabledInDev: true,
default: {
maxAttempts: 3,
minTimeoutInMs: 1000,
maxTimeoutInMs: 10000,
factor: 2,
},
},
});
// src/trigger/tasks.ts
import { task, logger } from '@trigger.dev/sdk/v3';
export const helloWorld = task({
id: 'hello-world',
run: async (payload: { name: string }) => {
logger.log('Processing hello world', { payload });
// Simulate work
await new Promise(resolve => setTimeout(resolve, 1000));
return { message: \`Hello, \${payload.name}!\` };
},
});
// Triggering from your app
import { helloWorld } from '@/trigger/tasks';
// Fire and forget
await helloWorld.trigger({ name: 'World' });
// Wait for result
const handle = await helloWorld.trigger({ name: 'World' });
const result = await handle.wait();
使用 OpenAI 集成的 AI 任务
使用内置 OpenAI 集成和自动重试
何时使用:构建 AI 驱动的后台任务
import { task, logger } from '@trigger.dev/sdk/v3';
import { openai } from '@trigger.dev/openai';
// Configure OpenAI with Trigger.dev
const openaiClient = openai.configure({
id: 'openai',
apiKey: process.env.OPENAI_API_KEY,
});
export const generateContent = task({
id: 'generate-content',
retry: {
maxAttempts: 3,
},
run: async (payload: { topic: string; style: string }) => {
logger.log('Generating content', { topic: payload.topic });
// Uses Trigger.dev's OpenAI integration - handles retries automatically
const completion = await openaiClient.chat.completions.create({
model: 'gpt-4-turbo-preview',
messages: [
{
role: 'system',
content: \`You are a \${payload.style} writer.\`,
},
{
role: 'user',
content: \`Write about: \${payload.topic}\`,
},
],
});
const content = completion.choices[0].message.content;
logger.log('Generated content', { length: content?.length });
return { content, tokens: completion.usage?.total_tokens };
},
});
使用 Cron 的定时任务
按计划运行的任务
何时使用:定期任务如报告、清理或同步
import { schedules, task, logger } from '@trigger.dev/sdk/v3';
export const dailyCleanup = schedules.task({
id: 'daily-cleanup',
cron: '0 2 * * *', // 2 AM daily
run: async () => {
logger.log('Starting daily cleanup');
// Clean up old records
const deleted = await db.logs.deleteMany({
where: {
createdAt: { lt: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000) },
},
});
logger.log('Cleanup complete', { deletedCount: deleted.count });
return { deleted: deleted.count };
},
});
// Weekly report
export const weeklyReport = schedules.task({
id: 'weekly-report',
cron: '0 9 * * 1', // Monday 9 AM
run: async () => {
const stats = await generateWeeklyStats();
await sendReportEmail(stats);
return stats;
},
});
批量处理
分批处理大型数据集
何时使用:需要带速率限制地处理大量项目
import { task, logger, wait } from '@trigger.dev/sdk/v3';
export const processBatch = task({
id: '
兼容工具
Claude CodeCursor
标签
后端开发
