☰
零成本!用本地 Ollama 跑通 Codex CLI,不用花一分钱 API 费(新手踩坑实录)
2026/9/29 15:32:29 网站建设 项目流程

本文是我从 0 到 1 踩了一下午坑的完整记录,所有报错都亲测解决,照着做就能成功。 最终效果:在自己电脑上用 Codex CLI,完全本地运行大模型,不花 API 钱,隐私安全,随时切换云端/本地模型。


一、为什么要这么做?

  1. 省钱:不用买 OpenAI API 额度,不用中转站,完全免费

  2. 隐私:代码和数据都在自己电脑上,不上传

  3. 灵活:用 CC Switch 一键切换云端模型(写复杂代码)和本地模型(日常简单任务)


二、准备工作

你需要提前装好:

  1. Docker Desktop(Windows/Mac 都行)

  2. Codex CLI(OpenAI 官方的命令行 AI 编程工具)

  3. CC Switch(Codex 模型切换工具,用来一键切换不同供应商)


三、第一步:用 Docker 跑 Ollama

1. 启动 Ollama 容器

打开终端(Windows 用 PowerShell 或 WSL 都行),执行:

docker run -d \ --name ollama \ -p 11434:11434 \ -v ollama_data:/root/.ollama \ --restart always \ ollama/ollama

💡 说明:

  • -v ollama_data:/root/.ollama一定要加!不然删容器模型就没了

  • --restart always开机自动启动,不用每次手动开

2. 拉模型

我们选deepseek-r1:7b,带思考能力,适合 Codex:

docker exec -it ollama ollama pull deepseek-r1:7b

模型大小约 4.7GB,根据网速等几分钟。


四、第二步:给模型改大上下文(关键!90% 的人卡在这里)

❌ 为什么会报错?

Codex 一启动就会发 8000+ token 的系统提示词,但 Ollama 默认上下文只有 4096,直接报错:

request (8643 tokens) exceeds the available context size (4096 tokens)

✅ 正确解决方法:创建自定义模型

不要改环境变量!不要改请求参数!直接把上下文写进模型文件里,一劳永逸:

# 1. 在容器里创建 Modelfile docker exec ollama sh -c 'echo "FROM deepseek-r1:7b PARAMETER num_ctx 32768" > /tmp/Modelfile' ​ # 2. 用这个 Modelfile 创建新模型 docker exec ollama ollama create deepseek-r1-codex -f /tmp/Modelfile

💡 为什么这么做?

  • Ollama 的 OpenAI 兼容接口不读请求里传的 num_ctx 参数

  • OLLAMA_NUM_CTX 环境变量对 OpenAI 接口不生效

  • 只有把参数写进模型本身,不管用什么接口调用都生效


五、第三步:在 CC Switch 里配置本地供应商

  1. 打开 CC Switch,点右上角+添加供应商

  2. 选择「自定义」,填写:

    • 供应商名称:Ollama 本地

    • API 地址:http://localhost:11434/v1

    • API Key:随便填,比如ollama

    • 模型名称:deepseek-r1-codex(就是我们刚才创建的那个)

  3. 高级设置里:

    • 开启「需要本地路由映射」

    • 模型映射里的上下文窗口填1000000(告诉 Codex 模型支持大上下文)

    • Body 覆盖里可以加:

      { "temperature": 0.2 }
  4. 保存,点「启用」


六、第四步:重启 Codex 测试

  1. 关掉 Codex 重新打开

  2. 发一句"你好"测试

  3. 等待模型思考(7B 纯 CPU 跑会比较慢,第一次可能要几分钟)


七、我们踩过的所有坑(避坑指南)

坑 1:WSL 里找不到 docker/ollama 命令

原因:你是在 WSL 里跑的,但 Ollama 和 Docker 都装在 Windows 上解决:要么在 Windows PowerShell 里跑命令,要么在 Docker Desktop → Settings → WSL Integration 里把 Ubuntu 的开关打开

坑 2:报错"xxx" does not support thinking

原因:你用的模型不带思考能力,Codex 默认开了思考模式解决:换 deepseek-r1 这种带 thinking 能力的模型

坑 3:报错request exceeds the available context size (4096 tokens)

原因:Ollama 默认上下文太小,装不下 Codex 的系统提示词解决:就是我们第四步的方法,创建自定义模型写死 32768 上下文

坑 4:改了 OLLAMA_NUM_CTX 环境变量还是没用

原因:新版 Ollama 的 OpenAI 兼容接口不读这个环境变量解决:别折腾环境变量了,直接创建自定义模型改 num_ctx

坑 5:在请求里传 options.num_ctx 还是没用

原因:Ollama 的 OpenAI 接口不读请求里的 num_ctx 参数解决:同上,写进模型文件里最靠谱

坑 6:删了容器模型就没了

原因:没挂载数据卷解决:一定要加-v ollama_data:/root/.ollama


八、日常使用技巧

1. 切换模型

想切回云端模型?直接在 CC Switch 里点原来的供应商启用就行,一秒切换,配置都存着。

2. 释放内存

本地模型不用的时候,Ollama 会 5 分钟自动卸载模型释放内存。 想立刻释放就跑:

curl http://localhost:11434/api/generate -d '{"model":"deepseek-r1-codex","keep_alive":0}'

3. 速度优化

纯 CPU 跑 7B 模型就是慢,嫌慢可以拉更小的模型:

docker exec -it ollama ollama pull qwen2.5-coder:3b

然后重复第四步,创建一个 3b 的自定义模型,速度会快好几倍。


九、最终效果

✅ 完全本地运行,不花 API 钱 ✅ 隐私安全,代码不上传 ✅ 一键切换云端/本地模型 ✅ 支持思考模式,支持工具调用


最后提醒:7B 小模型能力有限,复杂的多文件代码任务还是建议切回云端大模型,本地模型适合简单的问答、写小脚本、日常学习用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询