一句话拆开
在“停止点”反向续命
runtime 触发 Stop hook。Ralph 检查任务未完成时返回 decision:"block" 和 reason,Claude Code 不结束,并把 reason 重新喂给模型。
在“外部时间”重新唤醒
不是靠 native hook,而是一个 shell/Python daemon 周期性执行 codex exec resume ...,复用 thread id,把同一份 prompt 再交给 Codex 推进。
在“应用内部”排定任务
/loop 是 bundled skill。它提示 Claude 调 CronCreate,生成 cron task;scheduler 每秒检查到期任务,并把 prompt 作为 meta notification 入队。
三条执行流
Claude Hook / Ralph Loop
- 用户启动 Ralph Loop,写入本地 state。
- Claude 正常执行任务。
- Claude 准备停止,runtime 触发
Stophook。 - hook 读 transcript 与 state,判断 completion promise 是否满足。
- 未完成则返回
decision:block和reason。 - runtime 阻止结束,reason 进入下一轮模型上下文。
Codex 外部 Daemon Loop
- 脚本启动 daemon,保存 workspace、prompt、state dir、thread id。
- daemon 进入
while/ sleep 循环。 - 每个 tick 调用
codex exec或codex exec resume。 - prompt 通过 stdin 送入 Codex。
- Codex 推进一个 bounded slice,输出 JSON/log。
- daemon 写 heartbeat、last message、thread id,等待下一次 tick。
LikeCode /loop Cron
- 用户输入
/loop 5m check tests之类命令。 - bundled skill
loop.ts生成指令,让 Claude 解析 interval 和 prompt。 - Claude 调用
CronCreate创建 cron task。 cronScheduler用setInterval每秒检查到期任务。- 到期后
useScheduledTasks把 prompt 入队。 - 任务执行后重新计算下一次 fire time,继续循环。
LikeCode /loop:像 cron,但不是 Linux crontab
src/skills/bundled/loop.tssetInterval(1000ms) 检查并 reschedule它和 Linux cron 的关系
LikeCode /loop 借用了 cron 表达式和定时任务模型,但没有写入系统级 crontab。真正循环发生在应用进程里:scheduler 持有 task,周期性检查当前时间,命中后把 prompt 重新排进 Claude Code/LikeCode 的任务队列。
所以它是 application-level cron scheduler,不是 OS-level cron daemon。
可视化:三个 loop 的触发边界
对照表
| 维度 | Claude Hook / Ralph | Codex 外部 Daemon | LikeCode /loop Cron |
|---|---|---|---|
| 触发来源 | runtime 生命周期事件 | 外部进程的时间循环 | 应用内 scheduler 时间循环 |
| 关键入口 | Stop hook | start_codex_loop.sh / Python daemon | /loop bundled skill |
| 续跑方式 | 阻止停止,回灌 reason | 恢复同一 Codex thread | 到期 prompt 入队 |
| 状态存储 | plugin/local state + transcript | .codex-loop state/log/thread id | cron task registry / app state |
| 像 Linux cron 吗 | 不像,是 lifecycle hook | 像 shell while + sleep | 像 cron 表达式,但跑在应用内 |
| 最大特点 | 能拦住“结束”这个瞬间 | 不依赖 native hook,工程可移植 | 用户体验像内置命令,定时任务可管理 |
怎么选
动手模拟:Reflective Loop Simulator
下方是交互式仿真器,可切换四种场景逐步推演一次完整的 agent loop。点击消息块查看 payload、源码定位与教学注释。