Loopify 是一个用于在 Claude Code 中设置智能体循环(agent loop)、cron 定时任务或周期性工作流的向导型技能。它的目标是把“这个任务应该定期运行”的想法,转化为一个具备合适节奏、幂等性和退出条件的可用循环。
用途
Loopify 适用于需要让任务在 Claude Code 中自主、周期性地运行的场景。它提供了一层判断逻辑,帮助用户在 ScheduleWakeup(动态节奏)、CronCreate(固定计划)和内置的 /loop(动态自定节奏重入)之间做出选择,并确保循环设计合理、可控。
主要能力
Loopify 通过分步向导引导用户完成循环设置:
- 第 0 步 — 确认循环内容:明确每次迭代要执行的任务,并收集关键信息,包括运行频率、停止条件、循环体在做什么、输出到哪里、以及重复运行时的失败模式。
- 第 1 步 — 选择模式:根据“多久运行一次”的答案,在三种主要模式中路由:
- 模式 A — Cron(固定计划):适用于可预测间隔的任务,如每天上午 8 点、每周五、每小时整点。使用 CronCreate 工具,通过 cron 表达式安排周期性任务。
- 模式 B — 动态节奏(自调度):适用于任务应对状态而非时钟的场景,如监控直到条件满足、等待外部事件。使用 ScheduleWakeup 工具,由当前运行自行安排下一次唤醒。
- 模式 C — 一次性循环(直到条件满足):适用于任务运行到条件满足后停止、不再重复的场景。使用内置 /loop 并在提示中写入退出条件。
- 第 2 步 — 为幂等性设计循环体:幂等意味着循环运行两次与运行一次产生相同结果。对于 cron 和动态模式,这是不可妥协的,因为它们会在上一次迭代仍在运行或部分完成时触发。Loopify 提供幂等模式,如“已完成”标记、去重键、事务、先查询后变更,并展示循环体草稿、突出幂等检查。
- 第 3 步 — 退出条件:每个循环都需要一个退出条件。选项包括最大迭代次数、基于状态、基于时间、基于错误。即使是真正无限期的循环,也应通过 CronDelete 添加手动退出,并在技能/循环笔记中记录。
- 第 4 步 — 设置计划:根据第 1 步选择的模式,使用 CronCreate 注册 cron 并报告返回的 cron_id,或包装循环体提示使其以 ScheduleWakeup 调用结尾,或直接运行 /loop 并附带退出条件。
- 第 5 步 — 验证首次运行:等待第一次迭代(或通过 /loop 手动触发干跑),确认输出落在预期位置、幂等检查有效(运行两次,第二次应为无操作)、退出条件能正确触发、日志/通知按配置出现。
- 第 6 步 — 报告与后续:报告所选模式及原因、注册的 cron ID 或唤醒模式、设置的退出条件、幂等机制、以及如何停止循环。并提供后续选项,如将循环配置保存为技能、注册每周回顾或每日启动循环、循环运行时是否写入 second-brain 输出。
使用方式
Loopify 以向导形式运行,通过提问收集必要信息,然后按步骤引导用户完成模式选择、循环体设计、退出条件设置、计划配置和首次运行验证。它提供了常见循环配方模板,如每日简报、每周回顾、上游检查、vault 编译、指标监控等。
适用场景
- 需要定期运行的任务,如每日简报、每周回顾、周期性检查上游技能变更、周期性 raw/ 到 wiki/ 编译、轮询指标直到越过阈值后告警。
- 需要监控直到条件满足的场景。
- 需要等待外部事件的场景。
限制与注意事项
- 永远不要为 delaySeconds 选择 300 秒,这是最差的选择;要么降到 270 秒(缓存保持温暖),要么承诺 1200 秒以上(缓存未命中换取更长等待)。
- 每个循环都需要退出条件,即使是无限期循环也需要有文档化的手动停止方式。
- 对于 cron 和动态模式,幂等性不可妥协,应假设循环会在上一次迭代运行时再次触发。
- 优先使用动态节奏而非过于频繁的 cron。
- 记录 cron_id,否则循环会成为孤儿且难以停止。
- 每次迭代都应简要记录日志,便于调试漂移。
- 触及外部 API 的循环需要尊重速率限制。
- 不确定时,有界优于无界。
与其他技能的组合
- 与 skillify 组合:skillify 用于编写新的 SKILL.md,loopify 用于目标是计划任务而非技能的场景。
- 与 toolify 组合:toolify 用于添加集成,loopify 用于在已集成工具之上按计划运行某些内容的场景。
- 与 second-brain 组合:许多循环写入 vault(raw/ 或 outputs/),适用 vault 自动提交模式。
- 与 pm 组合:每日简报和每周回顾循环通常在生成输出前从 pm 读取。