网关兼容性验收
验证 Responses、SSE、续轮、函数调用和路由,不把文本响应视为完整兼容。
网关部署要按客户端、网关和模型的实际组合验收。支持 Chat Completions 或 Anthropic Messages 不证明兼容 Codex;健康检查和模型列表也不覆盖完整对话。
必需协议行为
| 环节 | 验证内容 |
|---|---|
| 请求 | wire_api=responses,base URL 为 /v1 时接受 POST /v1/responses,并保留客户端所需字段 |
| SSE | 逐步转发,不缓冲整段;保留事件类型、载荷、错误和最终 response.completed |
| 续轮 | 接受重放的历史消息、工具调用和结果 |
| WebSocket / 增量传输 | 使用时另验 previous_response_id;无状态 HTTP 可以用重放输入 |
| 工具 | 保留 function-call 与对应 function_call_output 的关联 ID,完成调用到最终回复整个循环 |
测试必须穿过实际负载均衡和反向代理。能接受字段不代表上游模型支持其能力,纯文本成功也不证明工具调用可用。
身份、路由与元数据
开发者到网关的身份与网关上游身份分开;上游管理员凭据保留在网关。验证用户归属、凭据过期、续签和撤销,并保存诊断所需错误层次,不把所有失败都变成通用 500。
使用已部署 Codex 版本认识的模型 slug,或为自定义 alias 提供匹配 catalog。可根据 codex --version 对照官方仓库对应 rust-v 版本的模型目录;桌面应用须匹配其捆绑 CLI 版本。元数据描述能力,不能给上游新增能力或创建路由。
数据和工具边界
模型请求中的提示、代码片段、工具参数和结果可能经过网关,应明确记录、脱敏、保留和访问政策。实际命令在客户端环境执行,MCP、插件、浏览器和应用可能使用独立网络路径与凭据。
收尾记录
为每个部署组合保存请求、stream、工具循环、续轮、路由和身份测试证据。向开发者分发连接配置前先完成这些检查;上线后更换模型或传输方式应重新验证相关项。