Codex CLI 接本地模型:配置写法,和那 12 次 “expected i32”
用自定义 model_provider 把 Codex CLI 指向 llama-server。LFM2.5-24B 上 12 项全过,但工具参数类型错了 12 次,它靠重试自救,第一次修 bug 跑了 599 秒。
配置
Codex 的做法:在 ~/.codex/config.toml 里定义一个 [model_providers.<名字>],写上 base_url,再把 model_provider 指向它。自定义 provider 不能用保留的 ID:openai、ollama、lmstudio。项目级 .codex/config.toml 里写 provider 不生效,必须放在用户级配置里。
我们实测用的 config.toml:
model = "lfm25" # 与 llama-server --alias 一致
model_provider = "llamacpp"
model_context_window = 32768
model_auto_compact_token_limit = 28000
approval_policy = "never"
sandbox_mode = "workspace-write"
[model_providers.llamacpp]
name = "llama.cpp local"
base_url = "http://127.0.0.1:8080/v1"
env_key = "OPENAI_API_KEY" # 环境变量里放一个假 key 即可
wire_api = "responses"model_context_window 告诉 Codex 本地上下文只有 32K,model_auto_compact_token_limit 让它在 28K 时提前压缩。
如果只是用 Ollama 或 LM Studio,可以直接 codex --oss,配合 oss_provider = "ollama"。这个我们没试。
运行:
codex exec --skip-git-repo-check -s workspace-write "修好 calc.py 里的 bug,让 pytest 通过"服务端参数和 Claude Code 那篇一样,--jinja 必须加。
实测:能过,但慢在重试上
| 模型 | 修 bug | 计时器网页 | 鹈鹕 | 工具错误 |
|---|---|---|---|---|
| LFM2.5-24B(3 轮) | 3/3,中位 85 s | 3/3,中位 161 s | 3/3,中位 407 s | 12 |
| Qwen3.6-35B(1 轮) | 1/1,74 s | 1/1,99 s | 1/1,268 s | 0 |
错误几乎都是同一种,把整数当字符串传给工具:
failed to parse function arguments: invalid type: string "96787", expected i32Codex 会读到报错再改,最后都过了。LFM 第一次修 bug 用了 599 秒,中位 85 秒;同一题 pi 是 47 秒。
第一次请求的提示词约 6.4k tokens(pi 约 1.4k,Claude Code 约 15.8k)。后面几轮日志里的数字更小,是因为 llama.cpp 缓存了前缀,只算新增部分。
相关
常见问题
Codex 怎么接本地模型? 在 ~/.codex/config.toml 定义 [model_providers.xxx] 的 base_url,并设置 model_provider;不能写在项目级配置里。