Skip to content

深入剖析 OMO 与 OMX

这篇专题聚焦两条链路:

  • OpenCode -> OMO(oh-my-openagent)
  • Codex -> OMX(oh-my-codex)

正文只回答 4 件事:

  1. 宿主原生已经公开了哪些 harness 机制
  2. OMO / OMX 直接利用了哪些宿主接口
  3. OMO / OMX 在宿主之外又补了哪些 runtime 能力
  4. 用户到底在哪些命令点、决策点、恢复点参与

这里的“交互面”专指 4 类接口:

  • 触发接口
  • 输入接口
  • 授权 / 决策接口
  • 续跑 / 中断 / 恢复接口

OpenCode 作为宿主,已经公开了哪些 harness 机制

Section titled “OpenCode 作为宿主,已经公开了哪些 harness 机制”

OpenCode 的宿主层已经很厚。它不只给出一个聊天入口,也给出了委派、命令、插件、工具、规则、权限、恢复这些可以直接被外层 harness 利用的原语。

机制OpenCode 原生能力对 harness 的意义
primary / subagent主 agent 可切换,subagent 可自动调用,也可由用户显式 @ 调用harness 直接获得主控者和 specialist 单位
child session treesubagent 可创建 child session,用户能进入 child session、回 parent session、左右轮换harness 直接获得分工后的可继续状态面
plan / build mode原生就有 PlanBuild 两类 mode,Plan 默认禁写文件、禁 bashharness 可以把规划与执行压到不同阶段
agent create支持把 specialist 固化成 agent markdownharness 可以把临时分工沉淀成长期能力
机制OpenCode 原生能力对 harness 的意义
commands支持内建 /command,也支持自定义命令;命令可带参数、说明、agent、subtask、model、temperature,并可把文件或 shell 结果注入上下文harness 可以把“复杂工作协议”压成稳定命令入口
plugin system支持插件;插件可接入 command、file、permission、session、tool、TUI 等事件面harness 可以把意图路由、恢复、通知、状态治理接到宿主事件层
custom tools支持自定义工具,也支持通过插件增加工具面harness 可以把 orchestration 专用能力做成工具,把 prompt 从控制逻辑里解放出来
session commands/new/sessions/compact 直接暴露 session 操作面harness 可以把长任务恢复和上下文压缩挂到宿主命令层

3. 上下文、规则与知识注入机制

Section titled “3. 上下文、规则与知识注入机制”
机制OpenCode 原生能力对 harness 的意义
prompt + @file + !bash普通 prompt、文件引用、临时 shell 输出都能进入当前任务harness 可以直接利用宿主现有的上下文拼装面
AGENTS / instructions支持 AGENTS.mdopencode.json.instructions、project / global 级配置harness 直接获得长期规则层
skills发现 SKILL.md,支持 allow / deny / askharness 可以把工作法、知识和外部工具一起挂到 skill surface 上
MCP支持本地与远端 MCP,并能按 agent 精细启停harness 可以在宿主内扩工具边界

4. 边界、批准与结构化回问机制

Section titled “4. 边界、批准与结构化回问机制”
机制OpenCode 原生能力对 harness 的意义
permissionseditbashwebfetch、skills 都可设 ask / allow / denyharness 继续沿用宿主层的行为边界
question 工具支持结构化提问、选项与自定义回答harness 可以把澄清、访谈、分叉决策做成明确节点
机制OpenCode 原生能力对 harness 的意义
session continuity支持 session 持续、压缩、总结与切换harness 可以把长任务压在宿主已有 session life cycle 上
session tree navigation用户能进 child session、回父 sessionharness 可以继续利用多层 session 状态

OpenCode 原生已经公开给外层 harness 的核心原语包括:

  • agent / subagent
  • child sessions
  • plan / build
  • commands
  • plugin system
  • custom tools
  • prompt / file / shell context
  • AGENTS / instructions
  • skills
  • MCP
  • permissions
  • question
  • session continuity

这套宿主层已经足够支撑外层 harness 做规划、执行、恢复、委派和长期治理。

OMO 直接利用了 OpenCode 的哪些接口

Section titled “OMO 直接利用了 OpenCode 的哪些接口”

OMO 的重点是把 OpenCode 已有原语编成固定工作协议。它主要利用的是 OpenCode 的 agent、command、plugin、tool、session、question 这些宿主接口。

1. 利用 agent、subagent 与 session substrate

Section titled “1. 利用 agent、subagent 与 session substrate”
宿主接口OMO 的利用方式
agent / subagentSisyphusHephaestusPrometheusAtlas 编成固定角色系,把 oracleexplorelibrarian 等做成显式 specialist surface
child sessions把子任务结果和阶段状态继续压在 parent / child session 结构里
plan / build mode把规划与执行继续压成不同阶段,只是入口词和接力逻辑被 OMO 重写得更明确
宿主接口OMO 的利用方式
custom commands/start-work/handoff/stop-continuation/ralph-loop/ulw-loop 做成稳定协议入口
session commands继续利用宿主 session 命令面处理切换、压缩、恢复
command-bound agent routing让不同命令把任务直接导向 PrometheusAtlas 或 specialist 族群
宿主接口OMO 的利用方式
plugin / hookkeyword-detectorstart-work、continuation、recovery、notification、runtime fallback 这类 hook 接住消息流和工具流
custom toolstaskcall_omo_agentbackground_outputbackground_cancel、session 读取类能力做成 orchestration 工具
question 工具Prometheus 的 interview 直接接在宿主 Question
permissions继续沿用宿主 ask / allow / deny 作为敏感动作的最终闸门
宿主接口OMO 的利用方式
rules / AGENTS继续通过目录级 AGENTS 和规则注入塑造项目行为
skills继续使用 SKILL.md,兼容 .opencode/skills.claude/skills.agents/skills 路径
MCP继续使用宿主 MCP,也允许 skill-embedded MCP

OMO 在宿主之外又补了哪些 runtime 能力

Section titled “OMO 在宿主之外又补了哪些 runtime 能力”
扩展作用
ulw / ultrawork默认复杂任务入口,用粗粒度目标直接触发整条控制链
Prometheus负责 planning / interview / plan generation
/start-work把计划推进到执行态,并把执行入口固定下来
@oracle / @explore / @librarian提供 specialist 快速直达面
/handoff把当前状态压成交接摘要
/stop-continuation停止 continuation 与 loop
扩展作用
keyword-detector / intent gate根据 ulwsearchinvestigate 等关键词切换后续控制链
category system委派时优先给 category,把模型复杂度留在系统内部消化
subagent_type把任务直接导向某类 specialist,把模型选择留在系统内部
扩展作用
task委派子任务时要求明确给出 run_in_backgroundload_skillscategorysubagent_type
call_omo_agent提供更窄的 specialist 直连调用面
background_output拉取后台任务结果,可异步看状态,也可阻塞等结果
background_cancel取消后台任务
.sisyphus/tasks/把任务写入持久化状态
扩展作用
.sisyphus/plans/保存 plan 文件
.sisyphus/boulder.json保存执行阶段状态
/start-work基于 plan 和 boulder state 进入执行或恢复
run --session-id在 CLI 层恢复已有 session
扩展作用
hook stack把 Message、Event、PreToolUse、PostToolUse、Transform、Params 等 hook 串成治理链
session recovery处理 missing tool results、thinking block violations、JSON parse errors、context-window exceed 等失败
CLI wrapperinstalldoctorrunmcp oauthrun 会等 todos 和 background child sessions idle 后再退出

OMO 公开出来的协作主干是 controller-mediated coordination

  • 主控者分派任务
  • specialist 返回结果和 learnings
  • 状态通过 session、task、notepad、hook 回流
  • 用户通过命令和状态对象重新接手

公开材料没有给出一条 “任意 subagent 彼此直接发消息” 的独立总线。

入口用户用它来做什么重要性
ulw / ultrawork启动默认复杂任务协议关键
Prometheus / 文档中的 @plan进入规划和 interview关键
/start-work进入执行或恢复已有执行关键
@oracle / @explore / @librarian直接打到 specialist重要
task(...run_in_background...)显式拉起同步或后台子任务关键
/handoff / /stop-continuation管理交接、停止与控制权回收关键
run / run --session-id / /ralph-loop / /ulw-loop启动长时运行、持续推进或恢复既有 session重要

必须提供的信息:

  • 目标
  • 约束
  • 禁区

建议补充的信息:

  • 当前代码、文件或仓库上下文
  • 是否要立即触发搜索、探索、资料收集

可选补充的信息:

  • 详细步骤
  • 具体模型选择

必须提供的信息:

  • 目标与范围
  • 非目标
  • 必须满足的约束
  • 对 Question 的回答

建议补充的信息:

  • 测试策略偏好
  • 风险容忍度

必须提供的信息:

  • 执行哪份 plan
  • 是否 resume
  • 是否带 worktree

这里的关键输入已经从“任务目标”切成了“状态选择”。

必须提供的信息:

  • 子任务边界
  • categorysubagent_type
  • load_skills
  • run_in_background

建议补充的信息:

  • 稍后是否拉取结果
  • 是否绑定已有 session_id
节点用户要做什么重要性
permissions / skill ask允许或拒绝宿主层敏感动作关键
Prometheus interview回答结构化问题,确认 trade-off、范围与测试策略关键
specialist delegation决定子任务边界、类别、是否加载 skills、是否后台运行关键
continuation control决定继续、停止或交接关键
接口用户拿它做什么重要性
/start-work从 plan 进入执行,或基于 boulder.json 恢复关键
/handoff生成交接摘要,把状态压成下一 session 输入关键
/stop-continuation停掉 continuation关键
background_output拉取后台任务结果重要
background_cancel取消后台任务重要
run --session-id在 CLI 层继续既有 session重要

OMO 的用户参与主要集中在 4 类节点:

  • 用命令或关键词选入口协议
  • 提供目标、约束、边界、禁区和子任务边界
  • 在 interview、delegation、approval、continuation 节点做决定
  • 通过 /start-work/handoffbackground_outputrun --session-id 回到状态面继续接手

ulw 为例:OMO 的闭环执行过程

Section titled “以 ulw 为例:OMO 的闭环执行过程”

下面用一个具体输入把 OMO 的机制联动写清楚。

假设用户输入:

ulw 为 OMO / OMX 专题新增一个章节,要求写清 ulw 如何触发、规划如何生成、执行如何启动、失败如何恢复。
约束:不要泛泛而谈,要写到 command、hook、task、Question、.sisyphus 状态。
禁区:不要只写概念对比,必须写完整执行链。

这条链会按下面的顺序展开。

阶段用户在做什么宿主机制OMO 机制结果
1. 输入进入会话在当前主会话里输入一条带 ulw 的任务消息prompt 输入、当前 primary agent、session substrate无需额外命令,直接进入消息处理链系统拿到原始任务描述
2. 关键词检测用户没有额外动作plugin hook、chat.message 事件keyword-detector hook 检测到 ulw / ultrawork,把 ultrawork 指令前插进消息原始 prompt 被改写成 OMO 可执行的控制指令
3. 初始路由用户继续等待或补充约束custom tools、agent / subagent、sessionultrawork 默认链把任务导向 task(...) 委派面,后续可路由到 planexplorelibrarianoracle 等 specialist系统决定先规划、先探索还是先查证
4. 规划与澄清用户回答问题、确认边界Question 工具、permissions、child sessionsPrometheus 负责 interview 和规划;若信息不足,会用 Question 提问;规划结果写入 .sisyphus/plans/一份可执行 plan 被生成并落盘
5. 执行启动用户触发 /start-work,或在可恢复状态下继续已有执行command surface、session state、agent 切换start-work hook 读取 plan 与 .sisyphus/boulder.json,把当前执行切到 Atlas 负责的执行阶段执行态被创建,或已有执行态被恢复
6. 执行与委派用户批准敏感动作,必要时给出补充信息task 工具、child sessions、skills、MCP、permissionsAtlas 或其他主控 agent 用 task / call_omo_agent 分派子任务;每个子任务必须声明 run_in_backgroundload_skillscategorysubagent_typespecialist 开始工作,后台任务和子会话被拉起
7. 运行期治理用户按需查看结果、取消任务、回答追问hook 事件、permissions、session continuityhook 链负责 continuation、通知、runtime fallback;后台任务结果通过 background_output 拉取,取消通过 background_cancel长任务可继续推进,且保持可观察、可打断
8. 故障恢复用户只在系统无法自恢复时接手recovery hooks、session state、command surfacerecovery 逻辑处理 missing tool results、JSON parse errors、context-window exceed 等问题;必要时等待用户批准或补充信息任务恢复继续,或停在一个明确的等待点
9. 收束与闭环用户接收结果,必要时生成交接或稍后续跑final output、handoff、CLI run、session resume执行完成后,结果直接返回;如果要暂停,/handoff 会生成交接摘要;如果走 CLI,run 会等 todos 和 background child sessions idle 后退出任务以“完成”或“可恢复暂停”两种稳定状态收束

这条链里每个机制各自负责什么

Section titled “这条链里每个机制各自负责什么”
机制负责的事
keyword-detector hook识别 ulw 关键词,并把普通消息改写成 ultrawork 控制链的入口
Prompt injection把用户的自然语言目标变成带协议约束的任务描述
Prometheus + Question把模糊任务收束成 plan,必要时向用户拿到缺失信息
.sisyphus/plans/保存规划结果,给执行阶段提供稳定输入
/start-work hook读取 plan 和执行状态,正式进入或恢复执行
.sisyphus/boulder.json保存执行期状态,记录当前跑到哪一步、是否在 resume
task / call_omo_agent把执行阶段拆成 specialist 子任务
skills / MCP / permissions为子任务提供知识、工具和边界控制
background_output / background_cancel给用户一个显式的后台任务控制面
recovery hooks在运行期错误发生时优先自动恢复,把人工介入推迟到必要时刻
/handoff / run --session-id把一次长任务压缩成可交接、可恢复的状态

用户在这条链里需要参与的节点

Section titled “用户在这条链里需要参与的节点”

用户需要明确参与的地方主要有 5 个:

  • 一开始把 目标约束禁区 说清楚。
  • Prometheus 发起 Question 时,补足范围、非目标和决策条件。
  • 执行前用 /start-work 明确选择开始执行还是恢复已有状态。
  • 运行中对敏感动作做批准,必要时查看或取消后台任务。
  • 完成时决定直接结束,还是用 /handoff / run --session-id 把任务留在可恢复状态。

ulw 是一个完整控制链。入口是关键词,触发器是 hook,规划由 Prometheus 负责,执行由 /start-work 启动,specialist 通过 task 委派,状态保存在 .sisyphus,运行期故障由 recovery hooks 处理。

Codex 作为宿主,已经公开了哪些 harness 机制

Section titled “Codex 作为宿主,已经公开了哪些 harness 机制”

Codex 原生同样已经公开出一层很厚的 host substrate。它给出的是一整套 turn、thread、subagent、command、plugin、skill、hook、policy、sandbox 组合面。

机制Codex 原生能力对 harness 的意义
turn一次用户输入就是一个 turn,也是一个明确的 agent work unitharness 可以把工作阶段建立在清晰的 turn life cycle 上
thread lifecycle / persistence支持 create、resume、fork、archive threads,并持久化 event historyharness 可以把长任务压在宿主已有 thread substrate 上
subagents只有在用户明确要求时才 spawn;宿主负责 spawning、routing follow-up instructions、waiting、closing threadsharness 直接获得并行委派 runtime
custom agents支持在 ~/.codex/agents/.codex/agents/ 下定义长期 specialistharness 可以把长期角色固化到宿主里
机制Codex 原生能力对 harness 的意义
slash commandsApp、CLI、IDE 都公开了一批命令面,如 /permissions/agent/compact/status/model/review/plan-modeharness 可以把状态切换、权限治理、agent steering 压在宿主命令面上
skills as commands可显式 /skills$skill,也可按 description 隐式触发harness 可以把 workflow 直接挂到宿主 skill surface 上
plugins支持插件打包 skills、apps、MCP servers,并通过 /plugins 安装和管理harness 可以把长期扩展能力打包成可分发的宿主插件
机制Codex 原生能力对 harness 的意义
AGENTS.md做事前读取 AGENTS.md,按用户目录、repo root 到当前目录逐层加载harness 直接获得长期项目规则层
MCP支持 stdio 与 streamable HTTP server,支持 OAuth 与统一配置harness 可以扩工具边界
config / advanced policy支持 config、rules、granular approval policy、request permissions、mcp elicitationsharness 可以复用宿主政策层
机制Codex 原生能力对 harness 的意义
approvals + sandbox支持 read-onlyworkspace-writedanger-full-access 与多种 approval policyharness 继续沿用宿主层 autonomy 边界
granular policy可把 sandbox、MCP、skills、permissions 的批准面细分治理harness 可以细分不同来源的批准面
hooks支持 SessionStartPreToolUsePostToolUseUserPromptSubmitStop;hook 本身以命令脚本运行harness 可以把补上下文、阻断、审计和 continuation 接到宿主事件面上

Codex 原生已经公开给外层 harness 的核心原语包括:

  • turn / thread
  • subagents
  • custom agents
  • slash commands
  • skills
  • plugins
  • AGENTS.md
  • MCP
  • config / granular policy
  • approvals / sandbox
  • hooks

这套 substrate 已经足够支撑外层 workflow layer 做 planning、execution、recovery 和 team coordination。

OMX 的重点是利用 Codex 的 execution engine、AGENTS、skills、host commands、hooks、threads、subagents,然后在上面再加一层 workflow contract。

1. 利用执行引擎、指令层与 policy boundary

Section titled “1. 利用执行引擎、指令层与 policy boundary”
宿主接口OMX 的利用方式
Codex execution engine真正的分析、实现、验证仍由 Codex 执行
AGENTS.mdomx setup 安装 prompts、skills、AGENTS、config;项目规则继续沿 Codex 指令链生效
approvals / sandbox / MCP auth真正 load-bearing 的权限边界仍留在 Codex 宿主

2. 利用 skill、command 与 thread surface

Section titled “2. 利用 skill、command 与 thread surface”
宿主接口OMX 的利用方式
skills$plan$deep-interview$ralph$team 这类 workflow 直接挂到 Codex 的 skill surface
host commands继续利用 /permissions/agent/compact/status 这类宿主命令做 runtime steering
thread persistence长任务延续继续依赖 Codex 的 thread substrate
subagents需要并行协作时,让宿主负责 worker thread 的创建、跟进与关闭
宿主接口OMX 的利用方式
plugins安装出来的 skills、prompts、runtime 工具被组织成稳定 workflow 包
Codex hooks继续利用宿主 hook 事件面处理上下文补充、阻断与 continuation
Stop / pause points继续沿用宿主的停顿、继续和等待用户输入能力

OMX 在宿主之外又补了哪些 runtime 能力

Section titled “OMX 在宿主之外又补了哪些 runtime 能力”
扩展作用
omx setup安装 prompts、skills、AGENTS、config
omx / omx --madmax --high用 OMX 推荐方式进入更强默认工作面
/prompts:*切到明确角色视角
$plan进入规划协议
$deep-interview进入澄清协议
$ralph进入持续推进协议
$team进入并行协作协议
扩展作用
.omx/把 plans、logs、memory、runtime state 外部化到 repo 可见状态层
.omx/logs/记录 hooks 与运行日志
runtime state让恢复同时依赖 thread 和项目级状态对象
扩展作用
.omx/hooks/*.mjs支持 hooks 插件化
omx hooks init/status/validate/test提供显式 hooks 操作面
needs-inputpre-tool-usepost-tool-use 等 derived signals提供更细的可扩展事件面
omx doctoromx hud --watchomx exploreomx sparkshell提供安装治理、状态观察、只读探索和有界 shell 验证入口
扩展作用
omx team ...显式拉起 coordinated parallel execution
status / resume / shutdown提供并行任务的观察、恢复与关闭接口
lead-session side-effect policy把副作用收敛到 lead session

OMX 公开出来的协作主干是 lead-session-mediated coordination

  • worker 的创建、跟进和关闭依赖 Codex 宿主 thread / subagent substrate
  • 并行运行时由 lead session 收拢状态和副作用
  • 用户通过 $teamstatusresumeshutdown 接手控制

公开材料没有给出一条 “任意 worker 彼此直接发消息” 的独立总线。

入口用户用它来做什么重要性
omx setup装长期能力关键
omx / omx --madmax --high进入 OMX 默认工作面关键
/prompts:*选角色视角重要
$plan进入规划关键
$deep-interview进入澄清关键
$ralph进入持续推进重要
$team / omx team ...进入并行协作关键
/permissions / /agent / /status / /compact用宿主命令治理当前 session重要
omx hud --watch / status / resume / shutdown观察和恢复长任务重要

必须提供的信息:

  • 目标
  • 约束
  • 非目标
  • 选哪条 workflow

建议补充的信息:

  • 是否采用 OMX 默认启动方式
  • team 参数

可选补充的信息:

  • 低层 Codex 细节选择

必须提供的信息:

  • 目标与边界
  • 非目标
  • 需要澄清的问题

建议补充的信息:

  • 偏好的工作视角
  • 持续推进还是一次性解答

必须提供的信息:

  • 任务边界
  • 团队规模
  • 角色分工

建议补充的信息:

  • 是否升级到 durable runtime
节点用户要做什么重要性
setup / startup决定是否采用 OMX 默认工作面关键
workflow selection决定进入 /prompts:*$plan$deep-interview$ralph$team 哪条协议关键
approvals / sandbox在宿主层批准敏感动作关键
host command steering通过 /agent/permissions/compact/status 调整当前运行态重要
team runtime control通过 status / resume / shutdown 管理并行工作关键
接口用户拿它做什么重要性
.omx/看项目级状态对象关键
omx hud --watch看运行状态重要
omx team status看 team runtime 状态关键
omx team resume恢复并行 runtime关键
omx team shutdown关闭并行 runtime关键
hooks logs / runtime logs回看任务为何停在当前状态重要
Codex host commands通过宿主命令继续压缩、切换、治理线程重要

OMX 的用户参与主要集中在 4 类节点:

  • 先决定是否采用 OMX 默认工作面
  • 选 workflow 协议,并给出目标、约束、边界与 team 参数
  • 在 approvals、workflow selection、host command steering、team runtime control 节点做决定
  • 通过 .omx/hudstatusresumeshutdown 和宿主命令回到状态面继续接手
维度OMOOMX
宿主基础OpenCode 已有 agent、session、plan/build、commands、plugins、tools、question、skills、MCP、permissionsCodex 已有 turn/thread、subagents、slash commands、plugins、AGENTS、skills、MCP、approvals、sandbox、hooks
外层主要利用面command、plugin、tool、session、Question surfaceexecution engine、skills、host commands、threads、hooks、policy surface
外层主要动作把原语编成 ulw、Prometheus、/start-work、task/background、handoff、continuation把原语编成 omx setup/prompts:*$plan$deep-interview$ralph$team、team runtime
最强扩展点keyword-detector、task persistence、boulder state、故障恢复、CLI wrapper.omx/ state shell、hooks extension、team runtime、operator surface
交互面核心显式协议命令、状态选择、后台任务取回workflow 选择、宿主命令 steering、project-visible state、team runtime control
协作语义controller-mediated coordinationlead-session-mediated coordination
恢复面.sisyphus + /start-work + handoff + background/sessionthread + .omx/ + hooks + team runtime + host commands