Featured image of post oh-my-pi 实现了 Claude Loop Engineering 的几种循环?4 种里 2 种

oh-my-pi 实现了 Claude Loop Engineering 的几种循环?4 种里 2 种

Claude 官方把 Loop Engineering 分成四种循环类型,对照本机已装的 oh-my-pi (omp) 16.3.11,逐条核对它到底实现了哪几种——结论是 4 种里的 2 种。

语速

有人在推上转了 Claude 官方那篇 Loop Engineering 的入门文章,并总结出官方把 Loop 分成了四种类型。一个很自然的问题:oh-my-pi (omp) 这个 Claude Code 的开源竞品,到底实现了其中几种?

这篇文章不谈概念本身(归藏那条推和官方文章已经讲清楚了),只做一件事:拿本机已装的 omp 16.3.11 去逐条核对,给出有证据的答案。

先对齐一下:四种循环分别是什么

#类型一句话
1回合制循环 Single-turn Loop最基本的工作方式:收集上下文 → 行动 → 检查 → 重复,直到任务完成或需要人工介入
2基于目标的循环 Goal-oriented Loop给定一个大目标后,系统多次迭代直到达成(自治/headless 模式)
3基于时间的循环 Time-based Loop定时触发任务,对应 Claude Code 的 /loop(类 cron)
4主动循环 Active Loop事件触发,例如新 Issue/PR 自动让 AI 去审核/记录

结论先放:4 种里实现了 2 种

#类型omp 实现?关键依据
1Single-turn Loop这是任何 coding agent 的基本盘,omp 的核心 agent loop 本身就是
2Goal-oriented Loop内置 /goal 命令 + goal 模式,本机包里有完整的 goals/ 子模块
3Time-based Loop没有原生调度器,是社区在追的开放 feature request
4Active Loop是终端 agent,没有 webhook / 事件驱动自动触发能力

下面逐条给依据。

第 1 类:回合制循环 —— 实现了

这条没什么可争的。回合制循环是所有 agentic coding agent 的基本工作方式:每次输入触发一轮「收集上下文 → 调用工具 → 检查结果 → 决定下一步」,循环直到任务完成或需要人工介入。

omp 自身的 README 里就明确描述了它的 agent loop(含重试循环、长工具链的自动压缩等)。这是地基,没有这一层后面三类都无从谈起。

第 2 类:基于目标的循环 —— 实现了(且是最强证据)

这是 omp 明确有的一等公民功能:内置 /goal 命令和 goal 模式

我从本机已装的 [email protected] 包里直接翻到了对应的模块:

1
2
3
4
5
dist/types/goals/runtime.d.ts
dist/types/goals/state.d.ts
dist/types/goals/tools/goal-tool.d.ts
dist/types/modes/types.d.ts          # 含 goalMode
dist/types/modes/interactive-mode.d.ts

也就是说,goal 模式不是某个第三方插件,是 omp 自带的——有专门的 runtime、有持久化的 state、有 goal 工具、在交互模式里被当一种独立的 run mode 对待。对应的官方 PR 标题就是 feat: built-in /goal command for persistent autonomous goals

这一类的本质是「给定目标后多次迭代直到达成」,omp 的 /goal 完全吻合:设定目标后,它会持续驱动 agent loop 朝目标推进,直到目标完成(过程中还有 goal 模式专属的 auto-compaction,防止长循环撑爆上下文)。

第 3 类:基于时间的循环 —— 没实现(开放 feature request)

这一类对应 Claude Code 的 /loop定时触发任务,比如「每 10 分钟跑一次某个 prompt」。

omp 目前没有原生调度器。这不是我猜的,而是社区在追的一个明确 feature request:

[FR] First-class recurring/scheduled task ("run X every N minutes") — cron-like, prior art Copilot CLI

请求里原文就承认:

“There is no native scheduler. The only way to get periodic, hands-free reporting today is a self-re-arming background-job chain: each cycle is sleep…”

也就是说,今天想做到定时循环,只能自己在后台跑一个 sleep 自循环的 workaround,没有一等公民支持。

注:omp 仓库里有个 /loop 字样的 issue(关于在循环进行中修改其 prompt),那个指的是 goal 模式的续接循环,跟定时调度不是一回事,别混淆。

第 4 类:主动循环 —— 没实现

这一类是事件驱动:设一个事件(新 Issue、新 PR、webhook 回调…),事件发生时自动触发一轮 agent loop,全程无人工介入。

omp 是一个终端 coding agent,定位上就不是事件驱动的自动化服务器,没有 webhook 接收、没有 GitHub App 自动监听那一套。

  • 最接近的功能是 robomp(代码评审),但它是在会话内按需调用的子 agent,不是「新 PR 一来自动触发」。
  • Pi 生态(注意是上游 Pi,不是 omp)在 GitHub Marketplace 有个 GitHub Action 用来做 PR review,但那是个 Action 包装层,不是 omp 内建的 Active Loop 能力。

把 issue tracker 里所有带 webhook/event-driven/auto-trigger 的搜索结果翻了一遍,全部是误命中(autocomplete 触发、token 链接、CPU 开销之类),没有一个是在描述这种事件驱动自动循环。

一个值得关注的开放项

仓库里还有一个更宽泛的 issue:Add loop engineering runtime。从命名看,omp 似乎想把第 3、4 类做成一个更完整的 Loop Engineering 子系统。但目前还没落地——已 ship 的,是 Type 1 + Type 2

一句话总结

Claude Loop Engineering 的 4 种循环里,oh-my-pi 实现了 2 种:基本的回合制循环(Type 1)和基于目标的 /goal 模式(Type 2)。定时循环(Type 3)和事件触发的主动循环(Type 4)都还没有,前者对应开放 feature request #2763,后者还停留在更宽泛的 #3534。

换句话说,omp 把「人坐在终端前、给一个目标让它跑到完成」这条路径打磨得很扎实,但「没人盯着、靠时间或事件自动跑起来」这两条还没补上。