# Codex App Web Search 接入计划 ## 目标 让设置中的 `enableSearch` 驱动 Codex App/app-server 原生 Web Search,保持旧 `codex exec` 路径禁用搜索,并用协议回归证明参数形状、关闭语义和事件展示均正确。 ## 验收标准 - 开启 Web Search 后,Codex App 的官方协议字段收到明确启用值。 - 关闭 Web Search 后,协议字段为禁用值或按官方语义省略,不影响普通 turn。 - 设置保存与读取不再把 Codex App 搜索能力硬编码为不可用。 - `webSearch` item 继续按 `web_search` 工具事件展示。 - 不新增“上下文超限后客户端 compact + 重放”逻辑;文档结论明确区分上游原生自动压缩与 cc-web 额外失败兜底。 - 回归、语法检查和差异检查通过,且不覆盖 Goal 生命周期的并行改动。 ## 阶段 1. [完成] 确认 Codex App Web Search 官方协议与现有链路 2. [完成] 编写 Web Search 配置与协议回归断言 3. [完成] 接入 Codex App 原生 Web Search 参数 4. [完成] 更新设置界面与配置保存语义 5. [完成] 验证 Web Search 事件展示与自动 compact 现状 6. [完成] 运行回归、语法与差异检查 7. [完成] 汇总兼容性结论并清理跟踪文件 ## 决策 - 以本机 Codex app-server 生成 schema 为参数形状的直接证据,并用 hapi 实现交叉核对。 - Web Search 只接 Codex App 原生协议,不重新启用旧 `codex exec --search` 路径。 - 原生自动 compact 已存在;客户端“最终超限后 compact 并重放”不是本轮实现目标。 ## 错误记录 | 错误 | 尝试 | 处理 | |---|---:|---| | `developers.openai.com` 返回 Forbidden | 1 | 改查同为官方域名的 `platform.openai.com` | | `platform.openai.com` 被 Cloudflare 拦截 | 2 | 按 `openai-docs` 降级,读取官方文档参考并转用本机协议 schema 交叉验证 |