Plugins 导读

Codex harness runtime 说明 Codex 和 OpenClaw 谁负责哪一层

Codex mode 不是 PI 换一个模型请求。Codex 掌握原生线程、native model loop、工具续跑和原生压缩;OpenClaw 负责频道路由、session 文件、可见消息、动态工具、审批、媒体和 transcript mirror。读这页时,先抓住 owner 边界,再看 hook、权限、队列、诊断和 compaction。

先讲这一页到底在解决什么

Codex harness runtime 说明 Codex 和 OpenClaw 谁负责哪一层

Codex mode 不是 PI 换一个模型请求。Codex 掌握原生线程、native model loop、工具续跑和原生压缩;OpenClaw 负责频道路由、session 文件、可见消息、动态工具、审批、媒体和 transcript mirror。读这页时,先抓住 owner 边界,再看 hook、权限、队列、诊断和 compaction。

原文共 12 节,先看 Start Here 路径:/plugins/codex-harness-runtime 查看官方原文

总边界

Codex 不是 OpenClaw 造出来的小模型盒子,它有自己的原生线程

OpenClaw 仍然负责频道路由、session 文件、可见消息、OpenClaw 动态工具、审批、媒体和 transcript mirror。Codex 负责 canonical native thread、native model loop、native tool continuation 和 native compaction。

Native thread

像 Codex 自己的作业本。模型切换时,OpenClaw 会把当前 model、approval policy、sandbox 和 service tier 再发给 app-server。

Transcript mirror

像 OpenClaw 留的一份外层影印本,用于频道历史、搜索、/new/reset 和未来切换。

模型变化

openai/gpt-5.5 切到 openai/gpt-5.2,可以保留 thread binding,同时要求 Codex 用新模型继续。

不是 PI 换皮

很多 lifecycle 和 hook 只能投影或观察,不能把 Codex 原生记录当成 OpenClaw 自己的记录随意改写。

可见回复

Codex 可以私下完成 turn,是否发到聊天要看 OpenClaw 消息工具

默认情况下,源聊天里的可见回复走 OpenClaw message 工具。Agent 可以结束 Codex turn,但只有调用 message(action="send") 时才发到频道。

message

像“把结果贴到聊天窗口”的按钮。没有按按钮,Codex turn 可以完成但不一定发言。

visibleReplies

设成 "automatic" 时,可以保留 direct-chat final reply 的旧自动发送路径。

heartbeat_respond

Heartbeat turn 默认也能看到这个工具,用来说明这次唤醒要安静记录还是通知用户。

Collaboration mode

Heartbeat 的主动性指导只在 heartbeat turn 注入,普通聊天会回到 Codex Default mode。

Hook 边界

有些 hook 是 OpenClaw 能执行的,有些只是 Codex 原生世界的影子

OpenClaw 不用项目或全局 Codex hooks.json 来路由 OpenClaw 插件行为。它会为支持的 native tool 和 permission bridge 注入每个线程的 Codex config。

1

动态工具

Codex 请求 OpenClaw dynamic tool 后,由 OpenClaw 执行,因此 OpenClaw 能跑自己拥有的 plugin 和 middleware 行为。

2

Codex-native tools

Codex 掌握 canonical tool record。OpenClaw 可以镜像部分事件,但不能随意重写原生线程。

3

PermissionRequest

app-server approvals 开启时,默认让 Codex reviewer 和 OpenClaw approval bridge 处理真实 escalations。

4

Telemetry

native hook started/completed 通知会投影成 agent events,主要用于 trajectory 和调试。

权限和询问

没有明确 allow 就不是 allow,问用户也要走原聊天

对 Codex native permission request,OpenClaw 只有在策略决定时才返回明确 allow 或 deny。没有决定并不等于允许,而是让 Codex 继续走自己的 guardian 或用户审批路径。

Exact match

allow-always 只记住同一 provider、session、tool input 和 cwd 指纹;命令或参数变了就要重新判断。

MCP approval

Codex MCP tool approval elicitation 会在标记为 mcp_tool_call 时路由到 OpenClaw 插件审批流。

request_user_input

Codex 发起的问题会回到原聊天,下一条排队 follow-up 会作为回答,而不是普通补充上下文。

其他 elicitation

没有被支持的 MCP elicitation 请求会失败关闭。

队列和诊断

正在跑时的新消息,可以变成 Codex 的 turn/steer

默认 messages.queue.mode: "steer" 时,OpenClaw 会把安静窗口里的 steer-mode 消息按顺序合成一条 turn/steer 发给 app-server。review 和手动压缩 turn 可能拒绝 same-turn steering。

/queue followup

希望默认排队而不是 steer 时,用 queue 命令表达。

/diagnostics

获得批准后,Codex harness session 还能把相关 Codex thread 的反馈上传给 app-server。

/codex diagnostics

只想上传当前 Codex thread 反馈,而不是完整 Gateway diagnostics bundle 时使用。

隐私边界

如果你拒绝或忽略审批,OpenClaw 不会打印 Codex ids,也不会发送 Codex feedback。

最后记住

Runtime 页是在保护一条清楚边界:Codex 原生负责原生,OpenClaw 外层负责外层

线程、工具、hook、权限、媒体、诊断、compaction 都要先问“这件事的 canonical owner 是谁”。问清楚了,很多看似奇怪的行为就能解释。