Codex 接入 Kimi、GLM 等兼容 API 模型怎么配
Codex 自定义模型,指的是不走默认官方模型,而是在 Codex 的配置文件里加一个自定义 provider(指向第三方的 base_url 和 API key),让 Codex 改用 Kimi、GLM 等任意”兼容 OpenAI API”的模型来干活。 只要对方提供的是 OpenAI 格式的接口,Codex 就能接上。这篇带你搞懂原理、给出配置步骤,并把常见的连不上问题一次讲清。
为什么要折腾这件事?三个现实痛点:省钱(国产模型单价通常更友好)、长上下文(Kimi 的长上下文适合啃大文件、整仓库阅读)、性价比与可用性(GLM 主打性价比,国内访问稳定不绕路)。如果你已经在用 Codex 教程 跑过默认流程,这篇就是下一步:把”用谁的模型”换成你说了算。
原理:Codex 为什么能换模型
Codex 本身是一个命令行编程代理,它负责”理解任务、读写文件、跑命令、规划多步操作”。真正生成代码和决策的,是它背后调用的大模型。Codex 与模型之间通过一套标准的 API 协议对话——主流是 OpenAI 的 chat/completions 格式。
关键机制只有一句话:只要某个模型服务对外暴露的是”兼容 OpenAI 的接口”,Codex 就能把请求发给它,而不必发给官方。 Kimi、GLM、DeepSeek 这些国产模型,绝大多数都提供了 OpenAI 兼容端点,这就是接入能成立的根基。
所以”换模型”本质上是改三样东西:
- base_url:把请求地址从官方换成第三方的兼容端点。
- api_key:换成你在第三方平台申请的密钥。
- 模型标识(model):填第三方规定的模型名字符串。
机制不变,会变的只是各家的具体地址和模型名——所以这篇讲方法,具体端点和模型名一律以官方文档为准。
这里有个细节容易被忽略:wire_api 不是随便填的摆设,它决定 Codex 用哪套协议格式打包请求。目前主流兼容端点分两种风格——老一点的 chat(对应 chat/completions)和更新的 responses(对应 responses 接口)。绝大多数国产模型的兼容层只实现了 chat 这一种,所以本文默认都用 chat。如果你接的服务商在文档里明确说支持 responses,才考虑切过去,否则贸然改成 responses 只会收到一堆 400 或者字段不认的报错——先按 chat 跑通,再折腾风格切换,别本末倒置。
通用配置三步
Codex 的配置集中在用户目录下的配置文件里(通常是 ~/.codex/config.toml,具体文件名与路径以官方文档为准)。核心是定义一个自定义 provider,再让 Codex 指向它。
第一步:定义一个自定义 provider。 在配置文件里加一段,告诉 Codex 第三方服务的地址和接口风格:
[model_providers.kimi]
name = "Kimi (Moonshot)"
base_url = "https://以官方文档为准/v1"
env_key = "KIMI_API_KEY"
wire_api = "chat"
base_url:填第三方的 OpenAI 兼容端点,结尾是否带/v1以官方为准。env_key:指定从哪个环境变量读取 API key(推荐用环境变量,别把密钥硬写进配置)。wire_api:声明走哪种接口风格(chat即chat/completions),字段名以官方为准。
第二步:把密钥放进环境变量。
export KIMI_API_KEY="你在平台申请的key"
Windows 用 setx 或在系统环境变量里加。密钥不要提交进 git。
第三步:让 Codex 用这个 provider 和对应模型。 可以在配置文件里设默认,也可以在启动时用命令行参数临时指定:
model_provider = "kimi"
model = "以官方文档为准的模型标识"
model 必须填第三方规定的精确模型名(比如 Kimi、GLM 各自的型号字符串),填错会直接报”模型不存在”。
进阶一步:用 profile 管理多套配置,不用来回改文件。 如果你会在 Kimi、GLM、官方模型之间频繁切换(比如平时用便宜模型写活儿,遇到难啃的 bug 再切一个能力更强的),别每次都手动改 model_provider。Codex 支持在配置文件里定义多个 profiles,每个 profile 绑定一套 provider + model + 参数组合,启动时用命令行参数指定用哪个 profile 即可,一条命令切换,不用改文件也不怕手滑改错:
[profiles.kimi-daily]
model_provider = "kimi"
model = "以官方文档为准的模型标识"
[profiles.glm-cheap]
model_provider = "glm"
model = "以官方文档为准的模型标识"
具体的 profile 字段名和调用参数以 Codex 官方文档为准,但思路是通用的:把”选哪个模型”这件事从”改配置文件”降级为”敲一个参数”,团队协作时也方便统一分发同一份配置文件、各自用不同 profile。
各家差别:Kimi 与 GLM 怎么填
接法相同,差别只在 base_url、模型标识和定位。下面这张表帮你对号入座(具体地址/型号以各家官方文档为准):
| 模型 | 适合场景 | base_url | 模型标识 |
|---|---|---|---|
| Kimi | 长上下文、读大文件/整仓库、长文档理解 | 以官方为准 | 以官方为准 |
| GLM | 性价比优先、日常编码、国内访问稳定 | 以官方为准 | 以官方为准 |
| DeepSeek | 推理与代码能力强、单价友好 | 以官方为准 | 以官方为准 |
选型建议直给:
- 要啃大文件、做整仓库级理解 → 选 Kimi,它的长上下文是核心优势,想深入了解可看 Kimi 工具页。
- 图省钱、日常小步快跑写代码 → 选 GLM,性价比定位明确。
- 看重推理深度和代码质量 → 试 DeepSeek,参考 Codex 接入 DeepSeek(规划中)的配置细节。
三者都是 OpenAI 兼容接入,配置结构一模一样,换的只是那几行参数。
费用与效果的取舍,说句实在话: 别迷信”越贵越好”,也别为了省钱一味压低模型档位。我自己的经验是分场景用不同档:写常规 CRUD、改小 bug、跑重复性的脚手架代码,用便宜档模型就够了,跑得快、成本低,出错了重跑一次也不心疼;但遇到复杂重构、跨文件的架构调整、或者需要模型”理解意图”而不是”照葫芦画瓢”的活儿,该上贵一档的模型就上,省下来的钱远不如省下来的返工时间划算。具体到 Kimi 和 GLM,二者单价都比官方模型友好,但别只看单价数字——还要看实际跑一个任务要吃掉的 token 数量:便宜但啰嗦的模型,跑同一个任务可能比贵但精炼的模型花更多总成本,这个只能自己拿真实任务跑几次、看账单对比,别信一次性的宣传数字。
怎么验证接入成功
配置完别急着干大活,先做最小验证:
- 跑一个最简单的任务,比如让 Codex 在一个空目录里”创建一个 hello world 脚本”。能正常生成 = 链路通了。
- 观察是否真的用了新模型:看 Codex 启动时打印的 provider/model 信息,或在响应里确认没有回退到默认。
- 试一个稍长的任务(读一个几百行的文件并总结),确认长上下文模型确实吃下了内容、没被截断。
只要这三步都过,说明 base_url、key、模型标识三者都对上了。
常见坑与排查
把报错按”现象 → 原因 → 解法”列清,照着对就行:
| 现象 | 可能原因 | 解法 |
|---|---|---|
401 / 认证失败 | API key 错、环境变量没生效 | 重开终端让 export 生效;核对 key 没多空格;确认 env_key 名字和环境变量一致 |
404 / 模型不存在 | 模型标识填错 | 用官方文档里的精确型号字符串,区分大小写 |
连接超时 / 拒绝 | base_url 写错、漏/多了 /v1 | 对照官方端点,确认协议头和路径;用 curl 直接打这个端点验证网络可达 |
| 回答异常短或截断 | 上下文/输出长度受限 | 确认选的是长上下文型号(如 Kimi);检查是否有 max_tokens 类限制 |
| Codex 仍用默认模型 | provider/model 没指定到 | 确认 model_provider 和 model 都已设;命令行临时参数会覆盖配置 |
400 / 参数不被支持 | 某些 OpenAI 字段第三方不认 | 减少非必要参数;wire_api 风格选对(chat);以第三方兼容范围为准 |
排查口诀:先证网络(curl 打端点)→ 再证密钥(401 看 key)→ 再证模型名(404 看型号)→ 最后看 Codex 有没有真用上它。 四步定位,基本逃不掉。
常见问题
Codex 能接 Kimi 和 GLM 吗? 能。只要这些模型提供 OpenAI 兼容接口(Kimi、GLM 都有),在 Codex 配置里加一个自定义 provider 指过去即可,接法完全一样。
接国产模型主要为了省钱吗? 省钱是一方面,但不止。Kimi 的长上下文适合处理大文件和整仓库,GLM 主打性价比,国内访问还更稳定、不用绕路——按你的活儿选,不只看价格。
配置文件在哪、叫什么?
通常在用户目录下的 ~/.codex/ 里(如 config.toml),但确切路径和字段名以官方文档为准,不同版本可能有差异,别照搬别人的旧配置。
为什么 base_url 配了还是连不上?
最常见是 /v1 路径多了或少了,其次是密钥环境变量没生效(改完没重开终端)。先用 curl 直接打那个端点确认网络和地址对,再回头查 key。
换了模型,Codex 的能力会变差吗? 代理能力(读写文件、跑命令、多步规划)是 Codex 自己的,不随模型变;变的是”写代码和决策的脑子”。模型越强、上下文越长,复杂任务表现越好,所以按任务难度选型即可。
👉 看看我们的 AI 编程实战体系课,或逛 AI 编程教程大全 把基本功打扎实。