cc‑switch接入Ollama:让Codex拥有本地AI大脑
文章目录
P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看,传送门https://blog.csdn.net/HHX_01
前言
你有没有算过一笔账?
上个月我用Codex写代码,账单出来那一刻,我差点把咖啡喷在屏幕上。
两百刀?就写了几个函数?
这哪是AI编程助手,这是AI编程刺客啊。悄无声息地,一刀捅进你的钱包。
更离谱的是,我电脑里明明躺着Ollama,硬盘里塞着几十个G的模型,显卡风扇转得跟直升机似的。结果Codex一打开,请求嗖的一声飞去了OpenAI。
本地模型在家吃灰,云端账单持续增长。这感觉就像家里明明有厨子,我偏要天天点外卖,还点的是米其林三星。
于是我盯着cc‑switch陷入了沉思。这玩意儿能管Codex、Claude Code、Gemini CLI,几十家供应商开箱即用,堪称AI工具界的交通枢纽。但找了一圈,愣是没找到Ollama。
没有本地入口。一个都没有。
我当时就想,cc‑switch你是不是歧视本地模型?我Ollama差哪儿了?是长得不够可爱还是端口不够吉利?
一、本地部署的三大诱惑
先说钱。GPT‑5.5 via Codex,中等用量一个月能烧掉两百到一千五。Claude Opus更狠,三百到两千。Ollama呢?零。唯一的开销是电费,四舍五入等于白嫖。
再说速度。云端请求要经历终端、代理、TCP、TLS、CDN、API网关、LLM,再原路返回。这一圈下来,延迟五十到三百毫秒,波动大得跟心电图似的。本地呢?终端到代理再到127.0.0.1:11434,五毫秒以内,稳如你对象查你手机时的表情。
最后是隐私。代码不出本机,断网照样干活。飞机上、地铁里、客户现场没网?没关系,本地大脑照样运转。这就像带了个不需要信号的私人助理。
💡 核心优势总结
省钱:月费从四位数降到零。
快速:延迟从三位数降到个位数。
安全:代码留在本地,隐私不外流。
二、架构:请求去哪儿了
很多人好奇,cc‑switch到底在中间干了什么?
打个比方。Codex CLI是个挑食的客人,只吃OpenAI的Responses API。Ollama是个朴实的厨子,只会做Chat Completions。cc‑switch就是那个翻译兼服务员,把客人的点菜翻译成厨子能听懂的话。
具体流程是这样的:Codex发请求到cc‑switch,cc‑switch一看,哦,Ollama供应商,需要做协议转换。把Responses API转成Chat Completions,再发给Ollama的11434端口。Ollama调用本地GPU推理,流式返回token,cc‑switch再整流后送回Codex。
整个过程就像一场精心编排的接力赛,只不过跑道只有你家客厅那么大。
三、五个Commit的血泪史
我原以为改源码会是一场大手术,结果只动了五个Commit。但这五个Commit,每一个背后都藏着我想砸键盘的瞬间。
Commit 1:给Ollama一个名分
首先在类型系统里加了个"local"分类。以前供应商只有official、cloud_provider、aggregator这些,Ollama来了没地方坐。现在给它单独开了一桌,用户一眼就知道:这是本地的,不花钱。
Commit 2:预设配置一键上车
加了五个预置模型,从qwen3.5:9b到gpt‑oss:20b。关键配置是base_url指向127.0.0.1:11434/v1,apiFormat设为openai_chat。
这里有个血泪教训:outputFormat必须设成"reasoning"。Ollama的thinking tokens走delta.reasoning字段,而OpenAI走delta.thinking。配错了Codex CLI直接崩,连个报错都看不懂,仿佛在跟你玩猜谜游戏。
Commit 3:最致命的404
这是最坑的Bug。cc‑switch做协议转换时,effective_endpoint变成了"/chat/completions"。然后build_url一看,base_url已经以/v1结尾了,以为endpoint被包含了,直接返回"http://127.0.0.1:11434/v1"。
/chat/completions呢?丢了。Ollama收到POST /v1,一脸懵逼地回了404。
这Bug藏得极深。大多数供应商的base_url不以/v1结尾,所以一直没事。偏偏Ollama这个老实人用了标准格式,直接把问题暴露出来了。修复办法是在build_url之后二次校验,丢了就补回去。
Commit 4:防御三连
cc‑switch的UI层有些历史遗留行为,会在特定操作下覆盖关键配置。我的策略是:不在UI层修,在Rust层暴力兜底。
第一,三层识别Ollama。从provider id精确匹配,到name模糊匹配,再到base_url端口特征匹配。只要端口是11434,跑不掉。
第二,强制supportsEffort=false。Ollama不认识reasoning.effort参数,收到直接400。UI表单偏偏喜欢把它覆盖成true,我只能在代码层暴力关门,UI怎么改都没用。
第三,apiFormat缺失fallback。表单保存时会清空meta.apiFormat,代理层不知道要做协议转换。兜底逻辑确保Ollama永远走对协议,就像给路痴配了个导航。
Commit 5:健康检查退化
isFullUrl=true时,健康检查会把base_url当完整地址直接GET。但Ollama的base_url不含/chat/completions,结果健康检查永远404,指示灯永远红色。
修复逻辑很简单:如果配置写了isFullUrl=true但实际URL里没/chat/completions,别傻乎乎直接请求,退化回正常拼接模式。
四、踩坑全景:打地鼠式Debug
整个接入过程就像在玩打地鼠。刚按下去一个,另一个又冒出来了。
🐭 地鼠一号:502 Bad Gateway。根因是Codex路由没开启,设置里打开接管即可。
🐭 地鼠二号:400 Bad Request,reasoning.effort参数非法。Rust层暴力关门解决。
🐭 地鼠三号:404 Not Found,请求打到了/v1而不是/v1/chat/completions。URL二次校验解决。
🐭 地鼠四号:404健康检查失败,isFullUrl导致端点丢失。退化逻辑解决。
🐭 地鼠五号:表单清空apiFormat,代理不知道要做协议转换。is_ollama兜底解决。
🐭 地鼠六号:Live Config写入model_reasoning_effort=high。手动清理~/.codex/config.toml解决。
最离谱的是那个config.toml。我明明在UI里关了reasoning effort,它偷偷在配置文件里写了个high。这感觉就像你跟前女友说分手了,她还在你钱包里塞了张合照。
所以这里有个重要提示:在cc‑switch里添加Ollama供应商后,不要再编辑那个表单。编辑会触发UI覆盖meta字段,虽然代码层有兜底,但能不走钢丝就别走。
五、双平台实测:从M1到RTX 5090
我在两台机器上做了测试。一台是MacBook Pro M1 Pro,16GB统一内存。另一台是Windows工作站,RTX 5090加96GB内存。
M1 Pro跑qwen3.5:9b,ANE加GPU混合推理,16GB内存刚好够。Windows那台直接上qwen3.5:35b,32GB显存放量化模型轻轻松松,推理延迟低到几乎感知不到。
测试流程包括添加供应商、路由接管、模型列表展示、发送请求、流式响应、PPT制作完整流程。macOS和Windows行为完全一致,跨平台兼容性稳得一批。
Codex CLI里选择模型时,看到qwen3.5:9b出现在下拉菜单里,那一刻的成就感,不亚于在游戏里抽到了SSR。
🎯 最终效果
零API费用,代码不出本机,延迟降到5毫秒以内。
云端和本地模型一键切换,省钱时用本地,复杂任务切云端。
断网环境照常工作,飞机上也能写代码。
所以回到最初的问题:为什么要给Codex装本地大脑?
因为没人愿意当冤大头。本地有资源,就该用起来。cc‑switch加上Ollama,本质上就是给你的AI编程工具配了一个免费、快速、安全的本地大脑。
五个Commit,搞定一切。从此云端是备选,本地才是常态。
你的显卡,终于不用只用来打游戏了。
P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看,传送门https://blog.csdn.net/HHX_01
更多推荐

所有评论(0)