关于 Deferring Task Execution
Deferring Task Execution 是一项供 Claude Agent 使用的技能,可将工作推迟到指定时长之后或某个时刻。它引导 Agent 确认任务、启动后台计时器、等待计时结束,再继续执行。
主要功能
- 01支持时长和时刻输入
- 02解析自然语言时间
- 03后台计时器工作流
- 04计时结束后再执行任务
- 05提供取消与会话存续说明
适用场景
- 01延迟指定时长后启动任务
- 02安排在一天中的特定时刻执行
- 03长时间等待时保持 Agent 会话开启
- 04取消待执行的定时任务
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sammcj/ agentic-coding --skill deferring-task-execution安装后在 Claude Code 中输入/deferring-task-execution确认已加载。
附带文件scripts/wait-until.sh
详细介绍
延迟执行任务
使用后台计时器脚本,将 Agent 工作延迟到用户指定的时间,然后执行延迟的任务。
脚本位置
~/.claude/skills/deferred-task-execution/scripts/wait-until.sh
支持的输入格式
脚本接受以下任一格式的一个参数:
时长——从现在起延迟:
30s、5m、1h、90m、2h30m、1h15m30s
时钟时间——一天中的具体时间:
14:30、9:00、3pm、3:30pm- 如果今天已经过了指定时间,则等到明天的这个时间
工作流
步骤 1:确认用户的意图
确认要执行的任务和时间。将用户的自然语言解析为 wait-until 参数:
| 用户说 | 参数 |
|---|---|
| “30 分钟后” | 30m |
| “一小时后” | 1h |
| “两个半小时后” | 2h30m |
| “下午 3 点” | 3pm |
| “14:30” | 14:30 |
| “9 点半” | 9:30am |
准确告知用户将执行什么操作以及计时器何时触发。开始前请用户确认。
步骤 2:在后台启动计时器
使用 Bash 运行等待脚本,并设置 run_in_background: true:
~/.claude/skills/deferred-task-execution/scripts/wait-until.sh <argument>
记下响应中的任务 ID,下一步会用到。
步骤 3:等待计时器
使用 TaskOutput 工具阻塞,直到计时器完成:
- 设置
block: true - 设置
timeout: 600000(最长:10 分钟 / 600000ms) - 使用步骤 2 中的任务 ID
如果等待时间超过 10 分钟:由于最长超时时间为 600000ms,计时器完成前 TaskOutput 就会返回。检查输出;如果其中不包含 “Timer complete”,则使用相同的任务 ID 再次调用 TaskOutput,并设置 block: true。重复此操作,直到计时器结束。
步骤 4:执行延迟的任务
当 TaskOutput 返回的输出包含 “Timer complete. Proceed with deferred task.” 后,执行用户请求的工作。
重要说明
- 计时器运行期间,Agent 会话必须保持打开。如果用户关闭会话,延迟的任务将不会执行。请提醒用户这一点。
- 如果等待时间很长(数小时),请提醒用户会话需要保持活跃。
- 如果用户要求取消,请使用
TaskStop和后台任务 ID。 - 始终告知用户计算得出的唤醒时间,让他们知道何时可以期待执行操作。
评论
支持 Markdown