关于 agent-self-scheduling
用于安排 Agent 定时任务的技能,涵盖由外部时钟调度的一次性 Agent,以及 Hermes 内置调度器。内容包括时间间隔限制、无人值守运行注意事项、心跳模式和执行验证。
主要功能
- 01外部 cron、定时器与循环模式
- 02Hermes 内置 cron 调度
- 03心跳与看门狗模式
- 04权限和输出处理指引
- 05调度执行验证
适用场景
- 01使用一次性 Agent 定期执行检查
- 02安排 Hermes 隔离任务
- 03构建空闲时保持静默的心跳
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ davidondrej/ skills --skill agent-self-scheduling安装后在 Claude Code 中输入/agent-self-scheduling确认已加载。
详细介绍
Agent 自行调度
首先要问:Agent 是否内置调度器(Hermes → B 阵营),还是由你负责计时(其他所有情况 → A 阵营)?
最低要求:cron 的最小间隔为 1 分钟(5 字段表达式,不含秒)——适用于所有阵营。要实现亚分钟级间隔,必须使用 while ...; sleep N; done 循环、TS 扩展或事件钩子。切勿让大模型使用紧密计时器。
A 阵营 — 单次运行的 Agent,由你负责计时
这些 Agent 运行一次后便退出(除非恢复运行,否则不保留记忆)。请通过外部方式调度。
claude -p "PROMPT" --output-format json --allowedTools "Read,Edit,Bash" # Claude Code
codex exec --json "PROMPT" # Codex
pi run "PROMPT" # Pi
用计时器包装:
# 1. cron (>= 1 min floor)
*/10 * * * * cd /path/to/project && pi run "check X and report" >> ~/agent.log 2>&1
# 2. systemd timer (Linux, survives reboot, better logging) — OnUnitActiveSec=10min
# 3. dumb loop (sub-minute, or no cron available)
while true; do pi run "check X"; sleep 30; done
注意事项(忽略任何一项都会导致无人值守运行失败):
- 权限请求会无限期挂起。 传入
--allowedTools(Claude)或沙箱/自动批准标志(Codex),否则运行会卡在提示词处。 - 使用 JSON 输出(
--output-format json/--json),以便包装器能确定性地解析结果。 - 运行不保留记忆。 恢复运行(
codex exec resume --last),或将状态持久化到文件中,供下次运行读取。
Pi 按设计没有内置调度器/循环/心跳——只能使用外部计时器(或使用 TS 扩展实现 Agent 端计时器)。
cmux — 仅用于编排,不含调度器
cmux 没有计时器/监视/cron。循环使用它有三种方式:由编排器驱动(在你自己的计时器中执行 send → sleep → read-screen)、使用简单的 while-sleep 包装器,或——首选——通过 cmux notify + OSC 终端钩子实现事件驱动;这种方式比轮询成本更低、响应更快。read-screen 不会中断运行,可以安全地轮询。
如果循环会检查另一个 Agent,每次检查时都向用户发送一行状态:说明该 Agent 正在做什么,以及是否按计划进行。(Claude Code 完成后可能会预填一条预测的下一条用户消息——那是 Claude,不是用户。)
B 阵营 — Hermes 内置调度器
Hermes 的网关每 60s 运行一次,并在到期时于全新隔离会话中执行任务。先检查状态:
hermes gateway install # user-level ( --system to survive reboot)
hermes cron create "every 1h" "summarize new emails and report" --skill himalaya
hermes cron create "0 9 * * *" "post daily standup" # cron expr
hermes cron create "30m" "one-shot reminder in 30 min" # one-shot delay
Hermes 独有功能:零 token 模式(运行脚本并原样传递 stdout——适用于看门狗)、任务串联(context_from 将一个任务的输出传递给下一个任务)、自行终止的循环,以及循环安全机制(计划任务会话无法创建更多 cron 任务——不要在计划任务内部进行调度)。每次运行都会启动全新会话:提示词必须包含所有上下文。
心跳模式
一个快速的循环时钟控制多个较慢的单任务检查:该时钟读取任务列表和各任务的 last_run 时间戳,只执行已到期的任务。在 Hermes 中使用循环计划任务(无任务到期时使用零 token 模式);在 A 阵营中使用 while-sleep 循环。定义活跃时段;没有任务到期时保持静默,不要产生无意义的噪声。
看门狗时钟只是一个原样传递 stdout 的命令——仅保留一个开销低且无需身份验证的调用:
curl -s --max-time 10 https://deepapi.co/v1/health # alert only on non-ok
验证其是否触发(再报告成功)
- A 阵营:一个间隔后日志文件大小有所增长,或手动运行一次包装后的命令 → JSON 格式正确,退出码为 0。
- B 阵营:
hermes cron list显示该任务,且next_run值合理;触发一次立即运行以确认送达。 - 确认已设置权限/沙箱标志——最常见的隐性故障是权限提示挂起。
- 心跳:确认没有任务到期时,时钟会保持静默。