Octo 上手系列(四):Loop 实战——让 octo 在会话里帮你盯一件事

前三篇分别解决了“装好它”“让它生成文件”“让它接外部工具”。这一篇解决一种很具体的无聊:等一件事跑完,但你不想每隔几分钟自己去看一眼。


手动重复和 /loop 的区别

不用 /loop 的话,正常流程是:你问一句“CI 跑得怎么样了”,它查一次告诉你,然后你自己记着两分钟后再问一次,如此反复,直到跑完。整个“什么时候该再问一次”的责任在你身上。

/loop 把这个责任交给 octo 自己:它会用一个叫 schedule_wakeup 的机制,在当前这次对话里给自己安排下一次醒来的时间,醒来后自动把任务当成一条新消息重新跑一次——不需要你再敲一遍。

sequenceDiagram
    participant 你
    participant octo
    你->>octo: /loop 2m 查一下 PR #123 的 CI 状态
    loop 每 2 分钟自动重跑
        octo->>octo: 查询 CI 状态
        octo->>你: 还没跑完 / 跑绿了 / 挂了,是哪个 job
    end
    octo->>你: 判断完成,不再安排下一次

两种模式:固定节奏 vs 自己判断节奏

给一个具体间隔——固定节奏,跑到你叫停:

/loop 2m 帮我查一下 PR #123 的 CI 状态,跑绿了告诉我;
如果失败了,看看是哪个 job 挂了,贴一下报错。

2m 也可以换成 30s1h——延迟会被限制在 60 秒到 1 小时之间。

不给间隔——交给模型自己判断该多久看一次、该什么时候算完成:

/loop 帮我反复润色这段 slogan:「Octo,让 AI 真正把事情干完」,
读起来顺了、没有歧义了就停,每次改完把新版本发我。

这种“动态模式”下,模型自己决定节奏,也自己决定什么时候不再安排下一轮——不需要你说“停”。


Loop 不会把你锁在这个任务里

/loop 跑着的时候,你可以照常在同一个会话里问别的问题、给别的指令——一条普通消息不会打断 loop,它会在后台继续按自己的节奏醒来检查。

怎么停

  • 动态模式自己会停:模型判断任务完成(或者发现卡住了)之后,就不再安排下一次醒来,并告诉你原因。
  • 固定间隔模式每次都会重新安排下一轮,所以要显式说“停”或者“不用再查了”才会结束。
  • TUI 里按 Ctrl+C 能立刻硬停任何 loop。
  • 每个 loop 有大约 12 小时的运行上限兜底——这是防止忘记关掉的安全网,不是让你依赖的机制,该停的时候还是自己说停。

什么时候该用 cron,不该用 loop

/loop 活在这一次对话里——关掉这个 session,它就没了,本质上是“临时的、廉价的、只要你还在这儿”的重复。如果你要的是“每天早上 9 点自动跑一次,不管有没有人盯着”“服务器重启也要接着跑”,那种跨 session、需要长期存活的定时任务,交给下一篇要讲的 cron 任务——那是完全独立的一套持久化机制,不是靠 /loop 硬撑出来的。


系列上一篇Octo 上手系列(三):MCP 实战——接上 GitHub,让 octo 帮你理 issue 系列下一篇Octo 上手系列(五):Cron 实战——定时任务,人不在也在跑