用途
delay 用于在当前 Claude Code 会话中,把一段指令安排到未来某个时间点仅执行一次。它的核心目标是防止一种失败模式:任务在调度当轮就被立即(部分)执行,到触发时间又执行一次,造成重复运行。因此调度本身就是这一轮的全部工作,技能明确禁止在调度当轮启动指令的任何部分,包括看似无害的预处理。
主要能力
- 解析参数:以第一个逗号分隔,逗号前是时间描述,逗号后是稍后要执行的指令,指令原样传递,可包含 /x-wt-teams foo bar 这类斜杠命令。
- 时间计算:运行 date '+%Y-%m-%d %H:%M' 获取当前本地时间,再按相对或绝对时间推算目标;若绝对时间今天已过,则视为下一次(明天);处理跨午夜、跨月边界。
- 创建一次性任务:使用 CronCreate,cron 为完全固定的 "M H DOM MON *",使用精确计算出的分钟,不取整到 :00/:30;recurring 设为 false,使任务触发后自动删除,避免默认的周期性任务再次触发。
- 提示词包装:在指令前加上说明,让未来的回合知道这是一次计划内的触发,而不是新的调度请求,不应再次改期。
- 确认与停止:向用户报告确切触发时间和任务 ID(可通过 CronDelete 按 ID 取消),之后不再调用其他工具。
使用方式
调用 /delay 并给出参数,例如时间描述加逗号加指令。若任一部分缺失或时间含糊,技能会询问而不是猜测。每次调用只创建恰好一个 CronCreate 任务,不额外添加唤醒、循环或 Monitor 任务。
适用场景
适合需要在同一会话内稍后执行一次的任务,如延时提醒、定时执行某条命令或工作流。若需要周期性执行,应改用 /loop;若需要终端关闭后仍然存活,应改用云端 Routine(Claude Code Remote 的 create_trigger / send_later MCP 工具),其在服务端持久化而不随会话消亡。
限制
任务保存在内存中,会话必须保持打开,Claude Code 退出后任务会静默失效。任务只在会话空闲时触发,目标时间若有工作在进行可能稍晚开始。harness 可能提前最多 90 秒触发,因此不应使用取整的分钟标记。