Codex

Codex 是一线接入对象。它使用 OpenAI Responses 协议,网关暴露在 /v1/responses

Codex 的策略 ID 在后端是 codex_direct / codex_auto(与 Chat 风格 OpenAI 分属不同 app family)。UI 显示成 Direct / Auto。只有用 HTTP 直接签发 key 时你才会注意到下划线形式。

ATM 自动检测什么

ATM 通过这两个文件识别 Codex:

  • ~/.codex/auth.json — 存 API key。
  • ~/.codex/config.toml — Codex 主配置。

ATM 读取激活的 model_providermodel、以及自定义的 [model_providers.*]

最简方案

桌面 UI 的 Codex 一键启用 是最稳的路径。Agents 页 → Codex → Enable ATM for Codex。ATM 会:

  1. 签发 agentType: codexpolicyId: codex_directatm-… key。
  2. 写到 ~/.codex/auth.jsonOPENAI_API_KEY
  3. ~/.codex/config.toml 里追加 [model_providers.ATM] 块。
  4. model_provider 切到 "ATM"

之后重启 Codex(或开新终端会话——Codex 会话启动时重读 config.toml)。

手动接入

要手工配,两份文件都得改。

~/.codex/auth.json

{
  "OPENAI_API_KEY": "atm-xxxxxxxxxxxx"
}

~/.codex/config.toml

model_provider = "ATM"
model = "<your-model-id>"

[model_providers.ATM]
name = "ATM"
base_url = "http://127.0.0.1:4317/v1"
wire_api = "responses"
requires_openai_auth = true

注意:

  • model_provider[model_providers.<key>] 大小写要一致 —— ATM 匹配 ATMatm 不匹配 ATM
  • wire_api = "responses" 必填。写成 chat 会被 ATM 拒绝,因为 Codex 实际发的是 Responses 形状的请求体。
  • requires_openai_auth = true 让 Codex 用 Authorization: Bearer <key>,而不是它老的自定义 header。

手动签发 key

curl -s -X POST http://127.0.0.1:4317/api/keys/issue \
  -H 'Content-Type: application/json' \
  -d '{
    "employeeName": "Alice Example",
    "employeeContact": "alice@example.com",
    "agentName": "Codex General",
    "agentType": "codex",
    "sourceTool": "Codex",
    "configPath": "~/.codex/config.toml",
    "policyId": "codex_direct"
  }'

验证

  1. 发一次真实 Codex 命令。
  2. 打开 GET http://127.0.0.1:4317/api/logs?agent_type=codex&limit=5(或 Overview → Recent Requests 按 Codex 筛选)。
  3. 确认日志行存在,resolved_provider 是预期值。

如果没行 → Codex 还在直连 OpenAI,回头检查 model_providerbase_url

切换模型

改顶层 model = "..."。不动 model_provider[model_providers.ATM]

Direct 策略下,model 就是用的 model。codex_auto 下,ATM 可能根据意图选 Codex 家族里的别的目标。

Chat / Responses 模型列表分离

Codex Provider 端的模型配置拆成两张表:

  • chat — 走 /v1/chat/completions 的模型。
  • responses — 走 /v1/responses 的模型。

避免把 Codex(永远 Responses 形状)的请求路由到只支持 Chat 的模型。

如果你在 Routing 页写自定义 Codex 策略,target 编辑器里能看到这个分离——从 responses 列表选。

故障排查

现象 原因 处理
Codex 启动了但每个请求超时 model_provider 还指向旧上游。 检查 config.toml,从终端 head -1 ~/.codex/config.toml
Codex 报 "no such model" model 不在策略 responses target 列表里。 在 Routing 页加,或换 model
Codex 返回 400 "model_provider response check failed" 早期 ATM 版本的 model 匹配过严。 升级到当前版本。
Codex Auto 策略不挑 coding target codex_auto 绑定了,但策略没配 coding target。 编辑策略,给 coding 意图加一个 (provider, model)

results matching ""

    No results matching ""