Files
codex-app-server/docs/upstream-164-alignment.md
T
host 972203c38f feat(cloud): MCP 云端任务入口 + 上游 0.164 对齐配置
- cloud/mcp_server.py:stdio MCP 服务,把云端任务 REST 翻成
  tools/list / tools/call(health、list_projects、list_tasks、
  get_task、create_task、cancel_task、get_task_cost、
  get_task_trace),底层只走已有 REST,不另开任务逻辑;
  鉴权只认调用方自己的 CODEX_CLOUD_API_KEY(缺了启动失败,
  绝不打印),服务端权限 403 原样透传;create_task 只传已知
  字段,未知字段丢弃;REST 报错时 isError=true。
  单测 test_mcp_server 9 项(假 transport,不联网、不碰真 key)。
- 上游对齐 #80 的可合部分:config.example.toml 加
  [features] daemon_auto_start = false(防 managed daemon 绕过
  版本 pin)+ docs/upstream-164-alignment.md 对齐表;换稳定版
  二进制是另一次主机侧部署动作,本批不做、不谎称已升级。
2026-10-30 01:41:34 +08:00

81 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 上游对齐:openai/codex 稳定版 0.164.0(核查日 2026-10-27)
结论先说:**有更新,但本项目不追 alpha,只锚定稳定版。**
## 基线与上游位置
- 本项目此前锚定:`codex-cli 0.164.0-alpha.9`(2026-10-25 实测,`protocol/` 的
schema 就是从它用 `codex app-server generate-json-schema` 导出的)。
- 上游稳定版:`0.164.0`,2026-10-23 发布,由 `0.164.0-alpha.11` 加一个发布提交
切出,相对 0.163.0 约 330 个提交。也就是说本地 alpha.9 比稳定版落后
alpha.10、alpha.11 两个 alpha 切片加稳定提交,不是落后一个大版本。
- 上游 alpha 线(不作为目标):0.165.0-alpha.1(2026-10-23,含
`reasoning_effort_override` 转 stable)→ 0.165.0-alpha.3 → 0.166.0-alpha.1。
alpha 线 4 天内连跳两个小版本,追它等于每几天重 pin 一次,
与宿主“版本由部署显式控制”的原则冲突,故只记录、不跟进。
- 上游来源:https://github.com/openai/codex/releases
## 稳定版 0.164.0 改动 → 本项目状态
| 上游改动 | 对宿主层的影响 | 结论 |
|---|---|---|
| `/presets` 十个可复用提示槽、`/model` 与 `/permissions` 行内参数、终端图片预览 | 都是 TUI 交互面,app-server 协议与宿主层不依赖它们;控制台已有模型/强度下拉(#59) | 不相关,无需改代码 |
| 恢复会话时找回压缩历史、恢复已保存的线程设置(不再被全局默认覆盖) | 宿主每次回合都显式传 model/effort/sandbox,`thread/resume` 本就存在;上游修的是“恢复后被重置”这一坑 | 已兼容,换稳定版二进制后需重测 resume 一项,不改代码 |
| 排队提示等挂起的权限选择解决后再继续 | 宿主后续消息本来就是排队语义(#65:排队不打断当前轮,跑完按序再跑;direct 优先于排队) | 已覆盖,语义与上游一致 |
| 后台服务磁盘清理:剪掉未用的 daemon 发布、给 daemon 日志设上限、修 daemon 更新器 socket | 本项目不用 managed daemon:`start.sh` 直接拉起 app-server,worker 也是显式拉起 | 需防“被动启用”:见下文配置改动 |
| 远程 Bash / Zsh 会话中的凭据掩码、企业 MCP 认证 | 宿主走中继 provider,不用企业 MCP;远程 exec-server 不是生产路径 | 不相关,列为观察项 |
| 沙箱加固:macOS 大小写变体元数据路径、可替换 symlink 定位可执行文件 | 生产是 Linux + Docker 外层隔离 + 容器内 danger-full-access,macOS 沙箱路径不适用 | 不相关 |
| `worktrees` / `realtime_conversation` 等 feature flag 被移除、功能保持开启 | 宿主的 git worktree 编排不依赖这些 flag | 无需改代码 |
| Bedrock 设置向导默认开启 | 宿主不走 Bedrock | 不相关 |
| Windows HTTPS / WebSocket 代理认证、CLI 多层 `-c` 覆盖保留 | 宿主跑在 Linux,Windows 路径不适用 | 不相关 |
## 更早已覆盖的上游能力(不是本次新发现的缺口)
- 0.159:app-server 客户端可从指定 item 分页拉线程历史。
alpha.9 的 schema 里已有 `thread/turns/list`、`thread/items/list`、
`ThreadItemsListCursor`,且 `ThreadReadParams` 明确写着“完整历史
hydration 已废弃,优先元数据读取 + 分页”。宿主用的是实时事件流 +
`thread/list`,不做全量历史 hydration,这是有意的设计,不是缺口。
- 0.163:运行中发后续消息 steering、中断同时停 Code Mode 单元、
并行只读工具。宿主 #65 的 followup/direct、#65 的 fork、host 的
`turn/interrupt` 跨进程中断已覆盖对应语义。
- 0.165 alpha:`reasoning_effort_override` 转 stable。宿主每任务已有
effort 档位校验(low/medium/high/xhigh/max)并透传给 turn,
不需要为这个 flag 改代码。
## 本批实际改动(只改宿主侧,不动官方二进制)
1. `config.example.toml`:新增 `[features] daemon_auto_start = false`,
并写明原因。自 0.157 起交互式 codex 默认启动 managed daemon,
5 分钟后首次检查、每小时检查更新并重启服务,可在回合进行中
中断任务,还会把版本控制权从宿主手里拿走。宿主托管的机器上
绝不能让一次交互式 `codex` 启动悄悄换掉 pin 住的版本。
这是本次对齐里唯一“不改就会在未来某天出事”的项。
2. `README.md` / `CHANGELOG.md`:把“锚定 alpha.9”改成“锚定稳定版
0.164.0,alpha 线只记录不追”,并说明 `protocol/` 的 schema
仍以 alpha.9 导出为准——没有新二进制就声称 schema 已更新是假话。
3. 本文件:作为 0.164.0 的对齐记录,后续每次上游稳定版发布时
按同一张表复核。
## 明确不做的事(诚实边界)
- **不把 bin/ 或生产主机的 codex 二进制换成稳定版 0.164.0。**
bin/ 在 `.gitignore` 里,生产主机的 codex 是主机侧 npm 安装,
都不在本仓库的提交里;换二进制是部署动作,需要在主机侧
显式执行并重跑 resume / goal / 成本实弹,不是改几行文档就能宣称的。
- **不追 0.165 / 0.166 alpha。** 等它们出稳定版再按本文件复核。
- **不重导 `protocol/` schema。** 本地二进制仍是 alpha.9,
用它重导只会得到同一份 schema;等稳定版二进制到位后再重导并
diff,diff 为空或只有新增字段时才能合并。
- **不合并、不部署。** 本批留在隔离 worktree 的 `feat-upstream-164`
分支上;主 checkout 当时是脏的 feat-repo-picker 分支,绝不能
从它推;生产仍在 0a862c1(#74),#75/#76/#77 也还没上生产,
上游对齐与生产部署是两件分开的决策。
## 下一步(需要用户定)
1. 是否把本批提 PR(只含文档 + 配置示例 + 本文件,不含二进制变更)?
2. 是否另起一次主机侧部署,把 codex 从 alpha.9 升到稳定版 0.164.0,
并重跑 resume / goal / 成本实弹?那一步需要主机部署凭证,
且应与 #75/#76/#77 的生产部署放在同一批决策里看,而不是悄悄混进去。