SuperAPI AI 工具集

schedule-recurring-agent

智能体与模型

查看项目

更新于 10-16 06:27

技能介绍

用途

schedule-recurring-agent 用于搭建一个周期性运行的定时智能体,处理「常设」性质的重复工作,例如问题分诊、监控、审计与摘要(digest)。它强调:让简报与边界设置正确,才是一个有用的例程与一个会刷屏、空转或越权的例程之间的分界。

主要能力

  • 阶段 0:确认应为周期性例程:判断工作是否确实为反复按自身时间线到来的「常设工作」,而非一次性任务;若涉及需用户授权的自主行为,需先通过 AskUserQuestion 确认范围(尤其是读写/报告以外的动作)。成功标准为确认属于周期性且获得用户授权的自主范围。
  • 阶段 1:编写自包含、幂等的简报:例程在零记忆下被唤醒,简报须完整且可安全重复,包含:做什么、精确地做、在哪里做(仓库/路径/查询),不依赖会话上下文;幂等规则(如何识别并跳过已完成工作,如标记标签、状态文件、「自上次运行以来」查询、去重键);每次运行上限(预算护栏,如最大条目数、token/时间上限);报告与升级(报告渠道,以及遇到不可逆/模糊/高量时停止并询问人的触发条件);拆除条件(工作完成、连续 N 次空跑、某个日期、用户取消)。
  • 阶段 2:选择节奏与机制并创建例程:按工作真实到达频率选择 cron 节奏(问题分诊→工作日早晨;CVE 监控→每周;PR 看护→每天数次;夜间审计→每天一次),优先选择仍能及时捕捉工作的最不频繁节奏。机制选择分为:持久化/无人值守(通过 /schedule 技能、由 RemoteTrigger API 支持的 claude.ai Routine,运行在 Anthropic 基础设施上,按 cron 调度,跨会话持久,运行计入计划的用量/速率限制,是唯一真正实现「无人触发也能运行」的机制)与会话内(CronCreate,仅在会话 REPL 空闲时运行,退出即消失,7 天后自动过期)。创建后需确认注册(Routine 用 /schedule list,会话内 cron 用 CronList)。
  • 校验任务 schema(关卡):脚本 scripts/validate-job.mjs 确定性地强制执行简报与创建。任务为 JSON 对象,必须声明九个字段,缺失/为空则关卡以非零退出并指明字段:key(稳定的幂等与注册键,形如 [A-Za-z0-9][A-Za-z0-9_-]*)、repo(操作位置,字符串)、cadence(带时区的循环,{ timezone, cron|expression })、prompt(无记忆运行执行的自包含简报,字符串 ≥20 字符)、dedup(幂等规则,字符串或对象)、perRunCap(正数上限 { maxItems|maxTokens|maxMinutes|maxActions } 或正数)、reporting(每次运行的报告渠道,含「无事可做」)、escalation(不可逆/模糊/高量工作的停止询问规则)、teardown(关闭开关)。
  • 能力阶梯(诚实创建):创建经同一关卡以 create 模式运行,顺序关键:先校验 schema(无效则 created:false、退出 2、不注册任何东西);再列出并先去重(在任何能力检查前,用 key 在注册表中查找,匹配即为正确的幂等 NO-OP:created:false、reason:duplicate、回显已有 id、退出 0);能力与授权(仅当同时具备受支持的能力与显式 --authorize 时才铸造可验证的自动化 id <capability>:<key>,RemoteTrigger 与 CronCreate 均仅限 Claude Code;其他平台无能力,返回 created:false、registered:false、退出 3,并提供供手动/其他平台注册的现成简报,绝不虚报注册)。成功时 id 追加到 --existing 注册表,使 id 可验证而非编造。
  • 阶段 3:管理生命周期:创建近似重复前先列出/检查已有例程,扩展已有而非叠加重叠调度;拆除条件满足或用户要求时拆除(Routine 用 /schedule 禁用/移除,会话内 cron 用 CronDelete)。

执行机制约束

  • claude.ai Routine(/schedule · RemoteTrigger):离线运行(是,Anthropic 基础设施);关闭 Claude 后仍存活(是,持久);生命周期为直至禁用/移除;无原生每次运行 token 预算,上限由简报+budget-guard 强制。
  • 会话内 cron(CronCreate):离线不运行(仅当会话 REPL 空闲);关闭后不存活(内存中,会话退出即消失);7 天后自动过期(最后一次触发后删除);同样无原生 token 预算。

两者均无原生每次运行 token 预算,每次运行边界由简报 + budget-guard 强制执行,而非平台参数。

使用方式

  • 校验任务:node schedule-recurring-agent/scripts/validate-job.mjs validate <job.json>
  • 创建任务:node schedule-recurring-agent/scripts/validate-job.mjs create <job.json> [--capability RemoteTrigger|CronCreate] [--authorize] [--existing <registry.json>]

适用场景

夜间审计、CVE 监控、工作日问题分诊、PR 看护、摘要生成等需要按自身时间线反复自动运行的工作。对于一次性会话内等待,应使用 watch-and-act 技能。

限制与注意事项

  • 例程每次运行无记忆,简报必须自包含并含幂等规则,否则每次重复执行/重复刷屏。
  • 绝不写依赖上次运行记忆的简报。
  • 绝不安排过密;cron 节奏须匹配工作到达率。
  • 未经显式授权,绝不让例程执行不可逆/外部动作。
  • 绝不创建无界的每次运行任务;必须声明每次运行上限。
  • 绝不留下已完成/重复的例程运行;须拆除。
  • 在 Claude Code 上,简报本身应采用目标形态(像 /goal 那样陈述每次运行的完成条件)。

可加载参考

scripts/validate-job.mjs(任务 schema 与诚实创建关卡)、budget-guard 技能(每次运行边界与升级契约)、watch-and-act 技能(一次性会话内等待)、phase/loop 技能(auto-*、converge-loop 等,例程简报实际调用的工作)。