用途:该技能面向 Effect 的 Schedule 类型,用于描述重试失败操作、重复成功操作、按间隔轮询以及提升弹性的退避策略。Schedule 的类型签名为 Schedule<Out, In, Requirements>,分别对应输出与输入类型。
主要能力:内置调度器包括固定间隔(Schedule.spaced、Schedule.fixed)、重复次数限制(Schedule.recurs、Schedule.once、Schedule.forever)、指数退避(Schedule.exponential,可配合 Schedule.upTo 设上限、Schedule.jittered 加抖动)、时间限制(Schedule.upTo、Schedule.recurWhile)。组合器支持 Schedule.compose、Schedule.union、Schedule.jittered、Schedule.delayed、Schedule.resetAfter。输出方面可用 Schedule.elapsed、Schedule.count、Schedule.collectAll 获取耗时、次数或收集值。还支持 Cron 调度(Cron.parse 与 Schedule.cron)。
使用方式:通过 Effect.retry 在失败时重试,Effect.repeat 在成功时重复,Effect.schedule 进行完全控制。条件重试可用 Effect.retry 的 while 与 until 选项,配合 Match.tag 判断错误类型。常见模式包括带退避的 API 重试、带超时的轮询、熔断器模式与带日志的重试。
适用场景:需要网络请求重试、任务轮询、定时执行、分布式系统退避等弹性与调度逻辑的 Effect 程序。
限制与建议:应始终添加 recurs 限制以避免无限重试;分布式系统使用 jitter 防止惊群;用 upTo 为指数退避设上限;用 tapInput 记录重试尝试;针对瞬时与永久错误使用不同调度。更完整的调度文档可查阅 ${CLAUDE_PLUGIN_ROOT}/references/llms-full.txt,其中包含 Built-In Schedules、Schedule Combinators、Repetition、Retrying、Cron 等章节。