Codex CLI 接入
OpenAI Codex CLI 在 API key 模式下走 /v1/responses(wire_api = "responses")。TokenHouse 网关原生实现该协议,并把请求无状态桥接到 Claude / GLM 模型。
Codex 的 model 要指向 TokenHouse 实际可调用的模型(如 claude-opus-4-8)。gpt-* 系列当前网关不可调用。
配置
编辑 ~/.codex/config.toml:
model = "claude-opus-4-8"
model_provider = "tokenhouse"
model_reasoning_effort = "high" # 可选
[model_providers.tokenhouse]
name = "TokenHouse"
base_url = "https://api.tokenhouse.ai/v1"
wire_api = "responses"
env_key = "TOKENHOUSE_API_KEY"设置 Key 环境变量并运行(Key 在 /account/keys 创建,明文只在创建时显示一次):
export TOKENHOUSE_API_KEY=<your-key>
codexmodel_reasoning_effort 是可选项:Codex 会把它写进 Responses 请求的 reasoning.effort,网关桥接时自动映射到 Claude 的自适应思考档位。注意 reasoning(思考)token 计入输出 token,按输出价计费,费率见 /pricing。
配置项说明
| 配置项 | 说明 |
|---|---|
model | 必须是 TokenHouse 可调用的模型:claude-* / glm-* 别名,或 anthropic.claude-* / zai.glm-* 规范键,两种写法都接受;gpt-* 不可用 |
model_provider | 指向下方 [model_providers.<id>] 块的 id,本例为 tokenhouse |
name | provider 的显示名,任意字符串 |
base_url | 必须是 https://api.tokenhouse.ai/v1(带 /v1) |
wire_api | 必须是 "responses"——网关在 /v1/responses 实现 OpenAI Responses 协议 |
env_key | Codex 从该环境变量读取 API Key,并以 Authorization: Bearer <key> 头发送(网关同样接受 x-api-key) |
选择模型
- 复杂任务 / 深度推理:
claude-opus-4-8 - 日常编码:
claude-sonnet-4-6 - 轻量 / 低成本:
glm-4.7
完整模型列表见 /models,各模型费率见 /pricing;也可以带鉴权调用 GET /v1/models 查看当前账号可调用的模型。
已知限制(无状态网关)
- 不支持
previous_response_id——网关不做服务端会话存储,请求里带上该字段会直接返回 400(invalid_request_error)。 - 不支持 OpenAI 专属工具:
web_search/file_search/computer_use/ 图像工具。 - 对话、shell / patch 等 function 工具调用、reasoning、流式 SSE 均正常工作。
故障排查
错误响应统一为 { "error": { "type", "code", "message" } } 结构:
| 状态码 / 类型 | 常见 code | 处理 |
|---|---|---|
401 auth_error | missing_or_malformed / invalid_api_key / key_revoked_or_disabled | 确认 env_key 指向的环境变量已导出且值完整;Key 撤销后立即失效,去 /account/keys 新建并替换 |
400 invalid_request_error | unknown_model | model 不是网关可调用的模型(如 gpt-*);改为 claude-* / glm-*,可用 GET /v1/models 核对 |
402 insufficient_funds_error | strict_reserve_failed / flex_threshold_breached | 组织余额不足:Strict 模式预扣失败,或 Flex 模式余额跌破阈值;到 /account/billing 充值。失败请求不扣费 |