mcpField
C
cron-and-intervals

cron-and-intervals

github.com/val-town开发1041 次安装5 周前更新
代码仓库

关于 cron-and-intervals

用于创建和管理 Val Town 定时任务的技能,任务按 cron 表达式周期运行。它帮助开发者处理重复工作、按 UTC 设置时间并手动测试处理函数。

主要功能

  1. 01使用 cron 表达式定义周期任务
  2. 02读取上次成功运行的时间戳
  3. 03读取、修改、暂停或恢复计划
  4. 04手动运行处理函数进行验证

适用场景

  1. 01定时轮询外部 API
  2. 02发送提醒或生成报告
  3. 03仅处理上次运行后新增的项目

安装

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

$npx skills add https://github.com/val-town/plugins --skill cron-and-intervals

安装后在 Claude Code 中输入/cron-and-intervals确认已加载。

详细介绍

Cron / 间隔 Vals

间隔 val(fileType: "interval")会按 cron 表达式定义的周期性计划运行。可用于轮询外部 API、发送提醒、执行清理、生成报告,或任何应按时运行而非响应请求执行的工作。

基本处理程序

// Learn more: https://docs.val.town/vals/cron/
export default async function (interval: Interval) {
  // interval.lastRunAt: Date | undefined
  console.log(interval);
}

文件必须包含一个 export——处理程序应使用 export default。

时区

Cron 表达式使用 UTC 运行。 在编写 cron 表达式之前,请先将任何易读的计划时间(例如“美国东部时间上午 9 点”)转换为 UTC。系统不会处理夏令时,因此请选择一个全年都足够接近的 UTC 时间。

lastRunAt 模式

interval.lastRunAt 是上一次成功运行的时间戳(首次运行时为 undefined)。使用它只获取上次运行后创建的项目,而不是重新扫描全部内容:

export default async function (interval: Interval) {
  const since = interval.lastRunAt ?? new Date(Date.now() - 24 * 60 * 60 * 1000);
  const newItems = await fetchItemsSince(since);
  for (const item of newItems) {
    await handle(item);
  }
}

这样,即使有运行遗漏,val 也能保持幂等,并避免重复处理。

读取和更新计划

  • read_interval_settings — 获取间隔文件当前的 cron 表达式和启用状态。
  • write_interval_settings — 更改 cron 表达式,或暂停/恢复间隔任务。

何时跳过模板

对于简单的计划任务,可直接创建一个仅包含单个 interval 类型文件的新 val,无需模板。模板适用于更复杂的结构(仪表板、AI Agent、Webhook + UI 组合)。

验证更改

编辑间隔 val 后,请使用 run_file 手动调用处理程序,而不是等待下一次计划运行。

评论

支持 Markdown