1. 为什么 Codex 直连 llama.cpp 会翻车本地 AI 编程的协议鸿沟Codex 是 OpenAI 开源的终端 AI 编程智能体能读懂整个代码库、跨文件改代码、跑命令、调测试和 Claude Code 属于同一赛道。llama.cpp 是本地大模型推理框架主打 GGUF 量化、CPU/GPU 混合卸载、MoE 优化硬件门槛低还自带 OpenAI 兼容的 Chat Completions API。Qwen3.6-35B-A3B 是通义千问开源的 MoE 模型总参数 35B、激活仅 3B原生 262K 上下文代码能力接近 Claude 4.5 水平。这三者凑一起理论上就是一套零成本、数据不出本地的 AI 编程链路。但真上手你会发现一个硬伤Codex 走的是 OpenAI 的 Responses API/v1/responses而 llama.cpp 提供的是 Chat Completions API/v1/chat/completions。这俩不是一套协议。你把 Codex 的base_url直接指向http://localhost:8080/v1得到的不是补全结果而是一个冷冰冰的 404。就像电话拨通了你说中文、对面只懂法语号码对得上也聊不下去。所以中间必须有个翻译层。CC Switch 的本地路由功能就是干这个的它在你机器上起一个轻量代理把 Codex 发出的 Responses API 请求转成 Chat Completions 请求再转发给 llama.cpp回来的时候再转回去。整条链路是Codex → CC Switch协议转换→ llama.cpp → Qwen3.6-35B → CC Switch → Codex对 Codex 来说它以为自己还在访问 OpenAI 官方接口完全无感。这套方案适合谁手上有 8GB 以上显存的开发者、想彻底断网跑编程助手的人、以及被官方 API 额度和封号折腾烦了的同学。下面我把整套流程拆成可复制的步骤包括模型加载参数、Codex 侧配置片段和一次端到端验证。2. 前置准备llama.cpp 编译、Qwen3.6-35B 量化选择与 CC Switch 安装这一节把三件套装齐。先说硬件底线最低 8GB 显存如 RTX 3070 64GB 内存MoE 的专家层靠内存扛推荐 16GB 显存如 RTX 4080 SUPER 64GB 内存能跑 200K 上下文加 IQ3 量化速度 15–25 token/s。内存别省Qwen3.6-35B 的专家层卸载到 CPU 内存后64GB 是舒服线32GB 会频繁换页。装 llama.cpp带 CUDA。Linux/macOS 下git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp make CUDA1 -j$(nproc)macOS 用户把CUDA1换成Metal1Apple Silicon 上 Metal 后端性能很好不需要 CUDA。Windows 用户推荐直接下载编译好的llama-server.exe省去 Visual Studio 配置的麻烦。下载 Qwen3.6-35B GGUF 模型。推荐 Q4_K_M均衡或 IQ3_XXS8GB 显存专用。文件名示例Qwen3.6-35B-A3B-UD-Q4_K_M.gguf约 22GBIQ3_XXS 约 18GB。量化选择直接决定你能不能跑起来8GB 显存优先 IQ3_XXS16GB 显存可以上 Q4_K_M。装 Codex CLI。确保 Node.js 18npm install -g openai/codex装好后输入codex能进对话界面。首次启动会要求登录 OpenAI 账号没有账号也无所谓下一步我们用 CC Switch 把它接到本地。装 CC Switch。这是一个免费开源的跨平台桌面工具用可视化界面统一管理 Codex、Claude Code 等多个 AI 编程工具的配置。Mac 用户brew install --cask cc-switchWindows 用户从 GitHub Releases 下载.msi双击安装Linux 选.deb、.rpm或.AppImage。装完先别急着配把 llama.cpp 服务跑起来再说。3. 可复制配置llama-server 启动参数、Codex auth.json 与 CC Switch 路由设置这一节是全文核心配置片段可以直接抄。先启动 llama.cpp 服务8GB 显存RTX 3070专用命令./llama-server \ -m /path/to/Qwen3.6-35B-A3B-UD-Q4_K_M.gguf \ -c 131072 \ -ngl 99 \ --n-cpu-moe 40 \ --cache-type-k q8_0 \ --cache-type-v q8_0 \ --cache-ram 8192 \ --no-mmap --mlock \ --ctx-checkpoints 64 \ --kv-unified \ --api-key sk-123456参数逐个解释-c 131072是 128K 上下文-ngl 99把能卸载的层全丢给 GPU--n-cpu-moe 40让专家层走 CPU 内存8GB 显存必加不加直接爆--cache-type-k/v q8_0是 KV 缓存量化省显存--no-mmap --mlock锁住内存避免换页。服务地址是http://localhost:8080兼容 OpenAI Chat Completions API。看到日志输出Server listening就绪。接着配 Codex 侧。Codex 的配置文件在~/.codex/config.toml手动配置片段如下[model] name qwen3.6-35b [api] base_url http://localhost:8080/v1 api_key sk-123456同时 Codex 的凭据文件~/.codex/auth.json里要保证 key 一致{ OPENAI_API_KEY: sk-123456 }注意光配这两处直接跑还是会 404因为协议不兼容。所以必须用 CC Switch 做协议转换。打开 CC Switch顶部应用栏切到 Codex点「添加供应商」不要选预设的云服务选「自定义供应商」填字段值供应商名称llama-localBase URLhttp://localhost:8080/v1API Keysk-123456模型名称qwen3.6-35b划重点必须开启「本地路由映射」这就是协议翻译功能没有它 Codex 报 404。保存后回主页启用该供应商再进设置页把本地路由的「路由总开关」打开勾选启用 Codex 路由。三件套齐了Base URL 指向本地、Key 与 llama.cpp 一致、Model ID 填qwen3.6-35b。4. 验证请求一次端到端代码补全与成功结果确认配置完别急着写业务代码先做一次最小验证。第一步确认 llama.cpp 服务活着curl http://localhost:8080/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-123456 \ -d { model: qwen3.6-35b, messages: [{role: user, content: 用 Python 写一个快速排序}] }如果返回带choices字段的 JSON说明 llama.cpp 侧没问题。第二步确认 CC Switch 路由开着然后新开终端输入codex启动 CLI。进入后问它你是什么模型它会回答自己基于 GPT因为 Codex 注入了系统提示词但实际干活的底层已经是本地 Qwen3.6-35B。第三步做一次真实的代码补全验证。在 Codex 里输入在当前目录创建一个 utils.py实现一个带类型注解的 LRU 缓存装饰器并写两个 pytest 用例观察 Codex 是否自动创建文件、写入代码、并尝试运行测试。成功的话你会看到它跨文件操作、执行pytest命令、根据报错自我修正。这一步跑通说明整条链路——Codex 发请求、CC Switch 转协议、llama.cpp 推理、结果回传——全部打通。性能实测RTX 3070 8GB 64GB RAMQ4_K_M 量化下生成速度 5–8 token/sprompt 处理 80–100 token/s显存占用稳定在 7.2–7.8GB 不爆。日常写 CRUD、改 Bug、补测试完全够用5–8 token/s 看着慢但 Codex 的 Agent 模式在后台自己跑你不用盯着等。真正卡的是大范围重构这种超长上下文场景。5. 常见报错排查401、local proxy failed、reading choices 与 OAuth 问题跑这套链路报错基本集中在几个地方我按真实遇到的顺序列出来。401 Unauthorized。九成是 Key 不一致。检查三处llama.cpp 启动时的--api-key、CC Switch 里填的 API Key、~/.codex/auth.json里的OPENAI_API_KEY三者必须完全相同。改完记得重启 llama-server 和 Codex。local proxy failed / 本地路由未生效。这是 CC Switch 的协议转换没起来。检查路由总开关是否打开、Codex 路由是否勾选、llama.cpp 是否在 8080 端口正常监听。如果端口被占在 llama-server 后加--port 8081同步改 CC Switch 的 Base URL。reading choices 报错 / 返回体解析失败。说明请求到了 llama.cpp 但返回格式对不上通常是模型名或路径写错。确认-m指向的 GGUF 文件真实存在CC Switch 里模型名填qwen3.6-35b即可llama.cpp 不校验模型名但字段不能空。OAuth 登录卡住。Codex 首次启动会尝试登录 OpenAI 账号如果你已经用 CC Switch 接管了本地供应商可以在 Codex 设置里跳过登录或直接忽略这个提示。它不影响本地链路。显存溢出CUDA out of memory。换 IQ3_XXS 量化或把-c降到 32768--n-cpu-moe提到 50./llama-server \ -m /path/to/Qwen3.6-35B-A3B-UD-IQ3_XXS.gguf \ -c 32768 \ -ngl 80 \ --n-cpu-moe 50 \ --cache-type-k q6_k \ --cache-type-v q6_k \ --cache-ram 4096 \ --no-mmap --mlock \ --kv-unified \ --api-key sk-123456速度慢。开--flash-attn新版 llama.cpp 支持--n-cpu-moe在 30–50 之间找平衡点数值越小 GPU 扛得越多、越快但显存压力越大。macOS 编译报错。Apple Silicon 用make Metal1而不是CUDA1Metal 后端在 M 系列芯片上性能很好。6. 从本地链路到云端兜底TaoToken 接入与 Coding Plan 选择本地链路跑通后你会发现它有个天然边界机器一关服务就停出门在外没法用遇到超大上下文重构时 8GB 显存也吃力。这时候可以准备一套云端兜底方案和本地链路形成互补。TaoToken 提供 OpenAI 兼容接口可以直接作为 Codex 的另一个供应商接进来。在 CC Switch 里再添加一个供应商Base URL 填https://taotoken.net/apiAPI Key 从控制台生成模型 ID 按文档填。这样你在 CC Switch 里一键切换在家用llama-local跑本地零成本出门切到云端供应商继续干活Codex 侧配置不用动。具体操作路径先到 API Keys 管理页 生成 Key再对照 接入文档 确认 Base URL 和模型 ID 的填法。想先验证模型效果可以直接在 模型对话 里试一轮确认返回正常再写进配置。如果你长期用 Codex 做 Agent 编码、跑长任务Coding Plan 比按量计费更划算适合高频场景。配置片段和本地那套结构一致只是把 Base URL 和 Key 换掉[model] name 你的云端模型ID [api] base_url https://taotoken.net/api api_key 你的TaoToken KeyCC Switch 里同样开启本地路由映射Codex 侧无感切换。这样一套 CC Switch 管两套配置本地和云端各司其职才是完整的零成本本地 AI 编程方案。
阅读完成 · 觉得有帮助?