mcpField
T
trigger-cost-savings

trigger-cost-savings

github.com/triggerdotdev云与 DevOps352.3k 次安装1 周前更新
代码仓库

关于 trigger-cost-savings

用于通过源码检查和实时运行分析寻找 Trigger.dev 任务降本机会的技能。它结合与 SDK 版本匹配的指南及 Trigger.dev MCP 服务的运行数据,帮助开发者排列优化优先级。

主要功能

  1. 01检查任务源码中的成本风险
  2. 02分析运行记录与失败模式
  3. 03审查机器规格和利用率
  4. 04检查重试、等待与防抖
  5. 05生成按优先级排列的建议

适用场景

  1. 01发现任务代码中规格过高的机器
  2. 02定位成本高的失败运行与重试
  3. 03找出可改用检查点等待的轮询
  4. 04检查高频触发是否需要防抖

MCP 相关

使用 Trigger.dev MCP 服务的 `list_runs`、`get_run_details` 和 `get_current_worker` 工具检查实时运行和任务配置。工具不可用时仍可进行静态源码分析。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/triggerdotdev/skills --skill trigger-cost-savings

安装后在 Claude Code 中输入/trigger-cost-savings确认已加载。

详细介绍

Trigger.dev 成本节省分析

分析任务运行和配置,找出降低成本的机会。此技能将静态源码分析与通过 Trigger.dev MCP 服务进行的实时运行分析结合起来。

开始之前:阅读权威指南

权威且固定版本的成本指南与此技能一同提供。请先阅读,确保建议与已安装的 SDK 版本一致:

  • @trigger.dev/sdk/docs/how-to-reduce-your-spend.mdx — 权威的“降低支出”指南(机器规格、幂等去重、并行处理、重试、maxDuration、检查点等待、防抖)。
  • 配套参考资料:@trigger.dev/sdk/docs/machines.mdx、runs/max-duration.mdx、queue-concurrency.mdx、idempotency.mdx、triggering.mdx(防抖 + 批处理)、errors-retrying.mdx(AbortTaskRunError)。

前置条件:MCP 工具

实时运行分析需要 Trigger.dev MCP 服务。请确认以下工具可用:

  • list_runs — 按筛选条件列出运行(状态、任务、时间段、机器规格)
  • get_run_details — 获取运行日志、时长和状态
  • get_current_worker — 获取已注册任务及其配置

如果这些工具不可用,请告知用户安装 MCP 服务:

npx trigger.dev@latest install-mcp

没有 MCP 工具时,仍可进行下方的静态源码分析;不要编造运行数据。

分析工作流

步骤 1:静态分析(源代码)

扫描任务文件,检查以下问题:

  1. 机器规格过高 — 使用 large-1x/large-2x,但没有明确的需求。
  2. 缺少 maxDuration — 未限制执行时长(存在运行失控导致成本过高的风险)。
  3. 重试次数过多 — maxAttempts > 5,且已知的永久性故障没有使用 AbortTaskRunError。
  4. 缺少防抖 — 高频触发未进行防抖。
  5. 缺少幂等性 — 支付/关键任务没有幂等键。
  6. 使用轮询而不是等待 — 使用 setTimeout/setInterval/睡眠循环,而不是 wait.for()。
  7. 等待时间过短 — wait.for() 少于 5 秒(不会设置检查点,会浪费计算资源)。
  8. 使用顺序执行而不是批处理 — 多个 triggerAndWait() 调用本可改用 batchTriggerAndWait()。
  9. 计划任务过于频繁 — 计划触发频率高于实际需要。
步骤 2:运行分析(需要 MCP 工具)
  • 2a. 高成本任务 — 使用 list_runs 查询 period: "30d"/"7d";找出总计算量(时长 × 次数)较高、失败率较高,以及运行时长较短却使用大型机器的任务(规格过高)。
  • 2b. 失败模式 — 使用 list_runs 查询 status: "FAILED"/"CRASHED";区分瞬时故障(可重试)和永久性故障;对后者建议使用 AbortTaskRunError;估算重试浪费的计算资源。
  • 2c. 机器利用率 — 对样本运行使用 get_run_details;如果 large-2x 任务始终在一秒内完成,或属于 I/O 密集型任务(API/数据库),则说明机器规格过高。
  • 2d. 计划频率 — 使用 get_current_worker 列出 cron 模式;标记对于其用途而言过于频繁的计划。
步骤 3:生成建议

按优先级提供报告,并估算影响:

## Cost Optimization Report

### High impact
1. **Right-size `process-images`** — currently `large-2x`, average run 2s. `small-2x` could cut this task's cost by ~16x.
   `machine: { preset: "small-2x" }`  // was "large-2x"

### Medium impact
2. **Debounce `sync-user-data`** — 847 runs/day, often bursty.
   `debounce: { key: \`user-${userId}\`, delay: "5s" }`

### Low impact / best practice
3. **Add `maxDuration` to `generate-report`** — no timeout configured.
   `maxDuration: 300`  // 5 minutes

机器预设成本(相对值)

机器规格越大,每秒计算成本按比例越高:

预设vCPURAM相对成本
micro0.250.25 GB0.25x
small-1x0.50.5 GB1x(基准)
small-2x11 GB2x
medium-1x12 GB2x
medium-2x24 GB4x
large-1x48 GB8x
large-2x816 GB16x

核心原则

  • 超过 5 秒的等待不收费 — 会设置检查点,不产生计算费用。
  • 从小规格开始,再逐步扩容 — 默认的 small-1x 适用于大多数任务。
  • I/O 密集型任务不需要大型机器 — API 调用和数据库查询都在等待网络响应。
  • 防抖能为高频任务节省最多成本 — 将触发突发合并为单次运行。
  • 幂等性可避免重复计费的工作 — 尤其适用于成本高昂的操作。
  • AbortTaskRunError 可停止浪费资源的重试 — 永久性故障不应付费重试。

版本

此技能随 @trigger.dev/sdk 一同打包,并直接从 node_modules 读取,因此始终与已安装的 SDK 版本一致(请参阅旁边的 package.json)。完整的成本文档也随包附带,位于 @trigger.dev/sdk/docs/ 下。

评论

支持 Markdown