- 仓库:
openai/codex - 上游 HEAD 阅读基线:
83d1fe0e67b1323f71febc2925817732b449f1d9 - 固定运行时 tag:
rust-v0.148.0(3ba0f711) - 产品固定运行时:
codex-cli 0.148.0 - 重点目录:
codex-rs/app-server、codex-rs/app-server-protocol - 本项目生成契约:
src/generated/codex与schemas/codex
运行时升级后必须执行 npm run protocol:generate,审查生成差异,再调整手写的产品 DTO。网页文档中的示例不是版本锁;固定二进制生成的枚举与字段才是本产品 wire contract 的依据。
- stdio transport 是每行一条 JSON;消息形状近似 JSON-RPC 2.0,但不携带
jsonrpc字段。 - 客户端先发
initialize,成功后只发一次initializednotification。 id + result/error是请求响应;id + method是 App Server 发给宿主的双向请求;只有method是通知。thread/start/thread/resume建立或恢复会话;turn/start发起一次工作;turn/completed才是回合终态。item/started → delta → item/completed是工具和消息的标准生命周期;completed item 覆盖流式临时状态。- 命令、文件、权限和用户输入由 App Server 发起 server request。未知请求必须 fail closed,Renderer 不能直接操作 RPC。
turn/interrupt的响应只表示取消已请求;宿主仍需等turn/completed的interrupted状态。- stdio 没有独立 shutdown 方法。正常退出应先结束活动回合与请求,再关闭 stdin 并等待子进程;强制信号仅作有界兜底。
dynamicTools只在thread/start注册,并随线程持久化;thread/resume不能给旧线程补装工具。- 原生
image_gen.imagegen会发出含 PNG base64 与savedPath的imageGenerationitem;宿主不能把 item 原样写日志。
- 直接把官方 App Server 作为 Harness 内核,不安装旧
codex-harness插件。 - 在 Electron main 内实现 Planner → 单 Implementer → Reviewer → 最多一次 Repair → 最终复审的宿主级游戏编排。
- Planner/Reviewer 为 ephemeral + read-only;Implementer 为 durable + workspace-write,避免并行写入冲突。
- 每项目保存 Codex thread id,Codex rollout 是会话权威;Noobi 只保存适合 UI 的事件摘要。
- 新项目永远可直接启动,不设置旧历史迁移门禁。
- Renderer 不开放任意 dynamic tool。Main 仅分发白名单
noobi_asset_list、noobi_asset_register、noobi_audio_synthesize、noobi_image_generate、noobi_audio_generate、noobi_model3d_generate,未知请求 fail closed;工具响应只含有界文本和项目相对路径。 - Harness 在每轮 Planner、Implementer、Reviewer、Repair 和复审提示中注入 animation needs contract:Planner 检查现有资产后选择
generate、reuse或not-needed;2D/2.5D 只在真实缺口/不兼容变化时通过图像生成路由生产关键帧,已有合格帧则验证复用,实际 rigged 3D 使用真实 GLB animation clip,不需要姿态变化时记录理由并验证程序运动反馈;Reviewer 对误判或不满足分支返回 repair。 - 产品不暴露跳过素材的策略:图像 API 配置存在时优先调用,没有时启用 Codex ImageGen 回退;两条路径都要求生成、登记和实际接入图片。宿主不信任可编辑 manifest 的
provider,仅在应用私有的路径/SHA-256/provider 证明与生产代码引用门禁都通过后标记完成。 - Codex 0.148.0 没有内建游戏音频或 3D 生成工具,因此这些能力通过宿主白名单 Dynamic Tools 和用户配置 API 提供;无服务时返回明确回退,不能伪造成功。音频 Dynamic Tool 显式携带
purpose:MiniMax Music 只处理music,MiniMax Speech 只处理speech/vocal-sfx;枪声、爆炸、撞击、脚步和 ambience 等通用音效不虚构为 MiniMax 原生能力,返回procedural-audio后使用内置合成、Web Audio 或导入素材。 - Skills 管理使用
skills/list与skills/config/write;MCP 管理使用config/read、config/value/write、config/mcpServer/reload、mcpServerStatus/list,并保持在应用私有CODEX_HOME。
- transport 单元测试覆盖响应、通知、server request、协议错误和非法 JSON。
- 真实二进制 smoke 覆盖 initialize、account、model、thread、turn、写文件和 terminal event。
- Electron smoke 覆盖生产构建、隔离 preload、页面加载、静态游戏预览和截图。