关于 cron-and-intervals
用于创建和管理 Val Town 定时任务的技能,任务按 cron 表达式周期运行。它帮助开发者处理重复工作、按 UTC 设置时间并手动测试处理函数。
主要功能
- 01使用 cron 表达式定义周期任务
- 02读取上次成功运行的时间戳
- 03读取、修改、暂停或恢复计划
- 04手动运行处理函数进行验证
适用场景
- 01定时轮询外部 API
- 02发送提醒或生成报告
- 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