For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /zh/docs/web/setup-jobs.md (or send Accept: text/markdown).
设置后台任务
通过 Trigger.dev 执行持久化任务,并在本地运行调度 tick。
安装与配置
在执行任何步骤之前,请阅读开始之前 和终端基础知识。这些说明假设您在 VS Code 中打开了完整的 supastack monorepo;它的根 package.json 标记存储库根。在 pnpm 命令中,工作区包是应用程序或共享代码文件夹;在产品中,工作空间是团队的数据容器和安全边界。 corepack pnpm --filter ... 从 monorepo 选择一个包,同时从其根运行命令。如果您仅打开同步的移动或桌面文件夹,则它不包含 Web 后端、Docker 设置或根脚本:从此 monorepo 或可访问的托管服务器运行后端,并使用平台文件夹自己的脚本。环境变量是存储在本地 .env 文件或托管仪表板中的命名设置;更改后重新启动相关应用程序,并将服务器机密保留在 NEXT_PUBLIC_ 和 EXPO_PUBLIC_ 值之外。
1.在VS Code中打开apps/web/src/job-handlers.ts和apps/web/src/scheduler-runtime.ts。工作是后台工作;调度程序决定何时将其排队。
2. 对于本地tick,在apps/web/.env.local和repository-root .env中设置相同的SCHEDULER_TICK_SECRET; tick 脚本读取根 .env,而 Web 端点读取其应用程序设置。
3. 使用 corepack pnpm --filter @supastack/web dev 启动 Web,然后运行 corepack pnpm jobs:tick 从根开始。预期:终端显示 localhost:3000 的 POST 结果。 Trigger.dev 是一个独立的提供商,需要自己的帐户和服务器密钥。
为生产任务提交设置 JOB_PROVIDER=trigger,以及仅服务端的 TRIGGER_SECRET_KEY 与 TRIGGER_PROJECT_REF。配置目标项目前,先看 apps/web/trigger.config.ts 与 apps/web/trigger 中的 ai.generate 任务。
JOB_PROVIDER=trigger
TRIGGER_PROJECT_REF=your-project-reference
# Provide TRIGGER_SECRET_KEY through the server secret store.
# Local/self-hosted scheduler tick:
# SCHEDULER_TICK_SECRET=…
# SCHEDULER_TICK_URL=http://localhost:3000要复制的命令
按照注释查看命令在哪个文件夹中运行。如果标记了两个终端,请打开两个终端窗口,并在使用第二个命令时保持第一个命令运行。
# Terminal 1 — start the Web app from the monorepo root:
corepack pnpm --filter @supastack/web dev
# Terminal 2 — run one scheduler tick from the monorepo root:
corepack pnpm jobs:tick实现流程
共享的 JobRunner 契约承诺 enqueue、status 与 cancel。工作流专有语义归 Trigger.dev 所有;不要从通用接口推断调度、重试或持久性保证。
持久的应用任务 ID 把派发、worker 执行、用量记录与结果串起来。已确认入队后,供应商运行元数据挂载失败不得导致再次入队,也不得让已接受的工作失效。
验证与排障
如果勾选返回 404,请确认两个设置文件中都存在该密钥并且完全匹配,然后重新启动 Web。如果终端显示连接被拒绝,请先启动Web。如果没有作业运行,请检查计划是否已启用且到期;勾选一次不会立即运行未来的计划。
验证已部署的任务标识与项目同配置环境一致。把入队接受、工作流完成与邮件投递分开。手动重试之前,先读 docs/production-ai-runtime.md 中的恢复与安全诊断说明。
如果你想继续完成设置,可以阅读《设置文件存储》。