Codex CLI 接入

OpenAI Codex CLI 在 API key 模式下走 /v1/responseswire_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>
codex

model_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
nameprovider 的显示名,任意字符串
base_url必须是 https://api.tokenhouse.ai/v1(带 /v1
wire_api必须是 "responses"——网关在 /v1/responses 实现 OpenAI Responses 协议
env_keyCodex 从该环境变量读取 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——网关不做服务端会话存储,请求里带上该字段会直接返回 400invalid_request_error)。
  • 不支持 OpenAI 专属工具:web_search / file_search / computer_use / 图像工具。
  • 对话、shell / patch 等 function 工具调用、reasoning、流式 SSE 均正常工作。

故障排查

错误响应统一为 { "error": { "type", "code", "message" } } 结构:

状态码 / 类型常见 code处理
401 auth_errormissing_or_malformed / invalid_api_key / key_revoked_or_disabled确认 env_key 指向的环境变量已导出且值完整;Key 撤销后立即失效,去 /account/keys 新建并替换
400 invalid_request_errorunknown_modelmodel 不是网关可调用的模型(如 gpt-*);改为 claude-* / glm-*,可用 GET /v1/models 核对
402 insufficient_funds_errorstrict_reserve_failed / flex_threshold_breached组织余额不足:Strict 模式预扣失败,或 Flex 模式余额跌破阈值;到 /account/billing 充值。失败请求不扣费