- protocol/ bundles re-derived from official 0.166.0 binary (generate-json-schema); v1 83 defs, v2 665 -> 677 defs, 0 removals; all 21 host methods present, params refs unchanged - README pin + start.sh comment follow the verified binary - docs/upstream-166-alignment.md: 0.166.0 alignment record - tests/test_host_protocol_mapping.py: 21 host methods pinned against protocol/ bundles (corrects alignment table's 17-count: 18 requests incl. initialize + 3 inbound notifications) - config.example.toml: [[skills.config]] disable semantics doc comment only (no effective config change) - No production binary touched; no push, merge, or deploy.
131 lines
9.1 KiB
Markdown
131 lines
9.1 KiB
Markdown
# 上游对齐:openai/codex 稳定版 0.166.0(核查日 2026-11-05)
|
||
|
||
结论先说:**已用 0.166.0 官方二进制重导 schema 并验证通过;本批只改
|
||
宿主侧 pin、文档、schema 与映射测试,不动任何生产二进制。**
|
||
|
||
生产二进制更换(/usr/local/bin/codex、172、170、Docker 镜像内
|
||
二进制)是部署动作,需要用户另外点头 + 窗口,不在本批;本批的
|
||
验证边界是本地 scratch 验证(见下文“验证”),不是生产换装实证。
|
||
|
||
## 基线与上游位置
|
||
|
||
- 本项目此前锚定:`codex-cli 0.164.0-alpha.9`(2026-10-25 实测,
|
||
`protocol/` 的 schema 就是从它用
|
||
`codex app-server generate-json-schema` 导出的;见
|
||
`docs/upstream-164-alignment.md`)。
|
||
- 上游稳定版:`0.165.0`(2026-10-27)、`0.166.0`(2026-10-29,
|
||
当前最新稳定版)。本批一次跨两个稳定版锚定到 0.166.0,不
|
||
在 0.165.0 停留(0.165.0 的内容已全含在 0.166.0 里)。
|
||
- 上游 alpha 线(不作为目标):0.167.0-alpha.5 与 0.168.0-alpha.1
|
||
(均 2026-11-03),无 0.167/0.168 稳定版。按 164 文档立过的
|
||
原则只记录、不跟进;alpha 跟踪办法见批总结,不进本文档。
|
||
- 上游来源:https://github.com/openai/codex/releases(npm 官方包
|
||
`@openai/codex@0.166.0` + 平台包 `@openai/codex@0.166.0-linux-x64`,
|
||
npm integrity sha512 已验)。
|
||
|
||
## 稳定版 0.166.0 改动 → 本项目状态
|
||
|
||
| 上游改动 | 对宿主层的影响 | 结论 |
|
||
|---|---|---|
|
||
| app-server 线程启动/关闭竞态修复、已完成 runtime 及时释放(#57787、#57788) | 宿主 host.py 是长循环、一个 app-server 进程托管多 thread,直接受益 | 升级收益,无需改代码;重测 thread 生命周期一项(已做,见验证) |
|
||
| resume/fork 时保留已确认的 approval 与权限设置(#57227) | 宿主 resume/fork 流程不再被重置坑绊 | 升级收益,无需改代码 |
|
||
| 独立 executor 随规范 CLI 与 app-server 发布包一起发(#57837) | 实查:不是新文件,是二进制内 `exec-server` 子命令;三件套文件形态不变,宿主只驱动 `app-server` | 不影响安装形态,无需改代码 |
|
||
| GPT-6.1 Terra 进入 bundled、Vertex AI、Bedrock 三个目录(#57293);Vertex AI provider(0.165.0 #56265) | 宿主模型走中转路由,引擎版本不卡 Terra 可用性;内置列表回退路径 0.165+ 才含 Terra | 不相关,无需改代码 |
|
||
| `codex queue --resume`(0.165.0 #57232) | 宿主任务队列自建(host.py 循环 + worker_sweep admin CLI),不依赖上游 queue | 不相关,功能等价但实现无关 |
|
||
| `codex doctor --network-only`(#57606) | 运维诊断工具,不是宿主运行路径 | 观察项,不接 |
|
||
| 键盘 transcript 选择、Markdown 渲染一致化、安全拦截说明 | 都是 TUI 交互面,app-server 协议与宿主层不依赖它们 | 不相关,无需改代码 |
|
||
| memory v2 对新 profile 默认开启 + 外部记忆导入(0.165.0) | 宿主 auto_memory 为自建租户记忆,未对齐上游 memory v2 格式/导入 | 不对齐,见对齐表 A10;本批不动 |
|
||
| 实验性 attached thread forks(0.165.0 #56351) | 只在 `--experimental` schema 里出现(`ThreadForkParams.attachToSource`),默认 schema 无;且 attached fork 在普通 thread/list 里不可见,与宿主“fork 即新建 worktree 的可见线程”模型冲突 | 不接,评估见批总结;本批不写代码 |
|
||
| 构建基线 Node.js 24.22.1、Rust 1.95.0 | 与本机 Node 24.22.1 一致;宿主是 Python,不编译 Rust | 不相关 |
|
||
|
||
## schema 重导结果(0.166.0 二进制实导,非树对比)
|
||
|
||
导出方式:`codex app-server generate-json-schema --out <dir>`,
|
||
原样取其中两 bundle 替换 `protocol/`(v1 + v2,与旧形态一致,
|
||
不引入 per-type 散文件)。
|
||
|
||
| 对比项 | alpha.9 时代 bundle | 0.166.0 重导 bundle | 结论 |
|
||
|---|---|---|---|
|
||
| v1 bundle 定义数 | 83 | 83 | 仅 ClientRequest 变(新增 feedback/save 一个方法) |
|
||
| v2 bundle 定义数 | 665 | 677 | +12 定义、0 删除、16 个定义有改动 |
|
||
| v2 新增定义 | — | AccountSession、AccountSessionWorkspace(Kind)、ApplicationStorageRequirements、FeedbackSaveParams/Response、ModelProviderError、OtelExporter、OtelHttpProtocol、OtelRequirements、OtelTlsConfig、OtelToolResultLogConfig | 均为新能力/新遥测,无 host 用项 |
|
||
| v2 改动定义 | — | Account、AdditionalContextEntry、ApplicationRequirements、ClientRequest、CodexErrorInfo、ConfigRequirements、HookMetadata、HookRunSummary、HooksListParams、NetworkRequirements、ProcessExitedNotification、ReviewDelivery、ReviewStartParams、ReviewStartResponse、ThreadItem、ThreadUsage | 除 ReviewDelivery 外全是新增可选字段或描述改动(见下) |
|
||
| 方法集 | ClientRequest 105 | ClientRequest 106(+feedback/save) | 0 删除;ServerRequest 10→10、通知 85→85 全不变 |
|
||
| host 方法 params 引用 | — | 21 个 host 方法的 params 引用全部未变 | 零漂移 |
|
||
|
||
唯一语义变化:`ReviewDelivery` 枚举从 `["inline", "detached"]`
|
||
变为 `["inline"]`(detached 已移除),`ReviewStartParams.delivery`
|
||
与 `ReviewStartResponse.reviewThreadId` 的描述同步改写。宿主早已
|
||
不发 detached(`host.py start_review` 注释“不发 detached(已废弃)”、
|
||
`cloud/review.py` 同款说明),故无影响;其余改动如
|
||
`ThreadItem` 新增 `completedAtMs`/`startedAtMs`(可空)、
|
||
`ThreadUsage` 新增 `nativeUsageUsdMicros`(可空)、
|
||
`CodexErrorInfo` 新增 `modelNotFound`/`policyCapacityUnavailable`
|
||
均为向后兼容加法。
|
||
|
||
方法数勘误:2026-11-05 对齐表写“17 个方法/通知”并不准确。
|
||
实查 host.py 触及 21 个方法字符串:18 个发出请求(含
|
||
initialize 握手)+ 3 个入站通知;对齐表列出的 18 项漏了
|
||
initialize、app/list、mcpServerStatus/list 三个。
|
||
`tests/test_host_protocol_mapping.py` 以实查 21 项为准钉死。
|
||
|
||
## 三件套核对(0.166.0 linux-x64 平台包实查)
|
||
|
||
- `bin/codex`(319,346,888 字节,`codex-cli 0.166.0`)、
|
||
`bin/codex-code-mode-host`(77,997,328 字节)、
|
||
`codex-resources/bwrap`(529,776 字节)三件齐全,成套。
|
||
- 包内另有 voice bundle(`codex-voice-host` 及 gstreamer 库,
|
||
语音为刻意不做项,不理会)与 `codex-path/rg`,均不影响三件套。
|
||
- 0.166.0 发布包不改变安装形态:宿主的 `bin/codex` 优先、
|
||
`CODEX_BIN` 环境变量、`PATH` 回退三档逻辑(`host.py
|
||
default_codex_bin`、`start.sh`)无需改动。
|
||
|
||
## 验证(本地 scratch 验证,无模型调用)
|
||
|
||
- 沙箱 smoke:scratch 三件套布局下 `codex sandbox echo`
|
||
成功返回,exit 0(bwrap 配对工作)。
|
||
- app-server smoke:仓库自带 `client.py --list-threads` 对
|
||
scratch 0.166.0 二进制跑通:initialize 成功(codexHome 为
|
||
scratch 目录、platform=linux)、thread/list 返回空数据,exit 0。
|
||
- 技能发现复核:0.166.0 下 `<codex-home>/skills/`(我方播种
|
||
位置)与 `$HOME/.agents/skills/`(文档 USER 位置)放的测试
|
||
技能均被 `skills/list` 发现(scope=user、enabled=true),
|
||
故播种机制无需改动;系统技能(skill-creator 等 5 个)照常出现。
|
||
- 方法映射重测:`tests/test_host_protocol_mapping.py`(21 项
|
||
钉死)+ 完整三套件(数见批总结)。
|
||
|
||
## 本批实际改动(只改宿主侧,不动官方二进制)
|
||
|
||
1. `protocol/`:两 bundle 替换为 0.166.0 二进制原样导出
|
||
(749,825 + 646,070 字节)。
|
||
2. `README.md`:实测版本 pin 从 `0.164.0-alpha.9` 改为
|
||
`0.166.0`(验证通过后才改,见批总结;不是提前改 pin 充数)。
|
||
3. `start.sh`:三件套注释版本号同步为 0.166.0(仅注释)。
|
||
4. `config.example.toml`:补 `[[skills.config]]` 禁用语义的
|
||
注释示例(仅注释,不改任何生效配置)。
|
||
5. `tests/test_host_protocol_mapping.py`:新增,21 项钉死。
|
||
6. 本文件:作为 0.166.0 的对齐记录,后续每次上游稳定版发布时
|
||
按同一张表复核。
|
||
|
||
## 明确不做的事(诚实边界)
|
||
|
||
- **不换任何生产/服务器二进制。** `/usr/local/bin/codex`、
|
||
172、170、Docker 镜像内二进制一律不动;本批二进制只活在
|
||
scratch 目录,批后清理。
|
||
- **不追 alpha。** 0.167/0.168 alpha 只记录、不采用。
|
||
- **不改播种机制。** 0.166.0 下 `<codex-home>/skills/` 仍被
|
||
发现,无需改 `skill_seed.py`。
|
||
- **不接 attached forks。** 实验性、仅 `--experimental`
|
||
schema、与宿主可观测模型冲突;重估触发条件见批总结。
|
||
- **不改阈值、不改 #238 auto_apply、不改 #247 语义、不改
|
||
v1.1 契约、不改 SKILL.md 第五项。**
|
||
- **不合并、不部署、不推送。** 本批留在隔离 worktree 的
|
||
`codex-opensource-align2` 分支上;live 仍是 aba06d9,不碰。
|
||
|
||
## 下一步(需要用户定)
|
||
|
||
1. 是否把生产二进制从 alpha.9 换到 0.166.0(主机部署动作,
|
||
需窗口 + 重跑 resume / goal / 成本实弹)?那一步与控制面
|
||
部署是两件分开的决策,不可悄悄混进一次部署。
|
||
2. gapfill2 线是否合并(B1)仍待用户;本批不替用户定。
|