Codex CLI 使用 Ollama 本地模型完整教程(2026)

AI 编程助手的兴起让越来越多的开发者开始关心一个问题:代码会不会被发送到云端?对于企业内网项目、含有敏感逻辑的代码库,或者仅仅是不想为 API 费用担忧的个人开发者,本地大模型是一个越来越成熟的替代方案。

Codex CLI 的设计非常灵活——它并不强绑 OpenAI 服务器,而是支持任何兼容 OpenAI Chat Completions API 格式的后端。Ollama 正好提供这个接口:它在本机启动一个轻量级 HTTP 服务,暴露 /v1/chat/completions 端点,让你像使用 OpenAI 一样使用本地模型。

本文将完整介绍从安装 Ollama、选择合适的编程模型,到配置 Codex CLI 接入本地服务的全部步骤,并附上常见问题排查和进阶用法。

适用版本:本文基于 Codex CLI v0.4+ 和 Ollama 0.6+,2026 年 5 月更新。所有命令均在 macOS、Linux、Windows(WSL2)下验证通过。

1. 为什么选择 Ollama + Codex CLI

在决定投入时间配置本地模型之前,先了解清楚它的优势和局限,能帮你做出更合适的技术选型。

核心优势

需要了解的局限

最佳实践建议:可以在同一项目中按需切换——日常快速迭代用本地模型节省成本,关键重构或复杂算法任务切换到 OpenAI o4-mini 获得最佳质量。Codex CLI 的多配置支持让这种切换非常方便。

2. 安装 Ollama

Ollama 支持 macOS、Linux 和 Windows,安装过程非常简单。

macOS

推荐使用 Homebrew 安装,方便后续升级:

# 使用 Homebrew(推荐)
brew install ollama

# 或者直接下载 .dmg 安装包
# 访问 https://ollama.com/download/mac 下载并安装

macOS 上 Ollama 安装后会作为菜单栏应用运行,默认自动启动服务。Apple Silicon(M1/M2/M3/M4)芯片会自动使用 Metal GPU 加速,性能表现出色。

Linux

# 官方一键安装脚本
curl -fsSL https://ollama.com/install.sh | sh

# 安装完成后服务会自动注册为 systemd 服务
sudo systemctl enable --now ollama

Linux 用户需要确保已安装 NVIDIA 驱动(CUDA 12+)或 AMD ROCm 驱动,Ollama 会自动检测并使用 GPU。

Windows

访问 ollama.com/download/windows 下载 OllamaSetup.exe 安装包,双击安装即可。安装后 Ollama 会在系统托盘运行,支持 NVIDIA GPU 加速。

Windows 用户注意:建议在 WSL2 环境下使用 Codex CLI,在 WSL2 内按 Linux 方式安装 Ollama,可以获得最佳兼容性。

启动服务并验证

# 手动启动 Ollama 服务(macOS 菜单栏应用已自动启动则可跳过)
ollama serve

# 验证服务是否正常运行
curl http://localhost:11434/api/tags

# 正常响应示例(未下载任何模型时)
# {"models":[]}

如果 curl 命令返回 JSON 响应,说明 Ollama 服务已正常运行在 11434 端口。

3. 推荐模型及下载命令

并非所有 Ollama 模型都适合代码任务。以下是专门针对编程场景优化的主流模型,按综合性能排序:

模型 大小 显存需求 代码能力 适合场景
qwen2.5-coder:32b 推荐 20GB 24GB+ ⭐⭐⭐⭐⭐ 高质量代码生成、复杂重构
deepseek-coder-v2:16b 推荐 9GB 16GB ⭐⭐⭐⭐ 日常开发、平衡性能与速度
codestral:22b 13GB 16GB ⭐⭐⭐⭐ 快速补全、Mistral 系列
qwen2.5-coder:7b 低显存 4.7GB 8GB ⭐⭐⭐ 入门体验、16GB 统一内存 Mac
deepseek-coder:6.7b 4.1GB 8GB ⭐⭐⭐ 轻量、CPU 可用(速度慢)
codellama:13b 8GB 12GB ⭐⭐⭐ Meta 开源模型、社区资源丰富

下载模型

# 推荐:最佳代码质量(需要 24GB+ 显存)
ollama pull qwen2.5-coder:32b

# 推荐:平衡性能,16GB 显存可用
ollama pull deepseek-coder-v2:16b

# 低显存方案,8GB 显存可用
ollama pull qwen2.5-coder:7b

# 查看已下载的模型
ollama list

# 测试模型是否可用
ollama run qwen2.5-coder:7b "写一个 Python 冒泡排序"
Apple Silicon 用户:M1 Pro/Max(16-32GB 统一内存)推荐使用 qwen2.5-coder:14b;M2 Max/Ultra 或 M3 Pro/Max(36-128GB)可以流畅运行 qwen2.5-coder:32b。统一内存架构使 GPU 和 CPU 共享内存,效率远高于独立显卡。

4. 配置 Codex CLI 接入 Ollama

Codex CLI 提供三种方式接入 Ollama,分别适合不同使用场景。

方法一:环境变量(临时,适合快速测试)

在终端会话中设置环境变量,关闭终端后失效。适合临时切换或快速验证配置:

export OPENAI_BASE_URL=http://localhost:11434/v1
export OPENAI_API_KEY=ollama
export CODEX_MODEL=qwen2.5-coder:32b

# 现在运行 Codex CLI 会自动使用本地模型
codex "重构 src/auth.ts,提取 JWT 验证逻辑到独立函数"
关键说明:OPENAI_API_KEY 必须设置为字面量 ollama(不是真实的 API Key)。Ollama 不验证 Key 的内容,但 Codex CLI 要求该变量存在且非空。

方法二:config.toml(持久,推荐)

将配置写入 ~/.codex/config.toml,每次启动 Codex CLI 都会自动加载:

# ~/.codex/config.toml
model = "qwen2.5-coder:32b"
provider = "ollama"

[providers.ollama]
name = "Ollama"
baseURL = "http://localhost:11434/v1"
envKey = "OPENAI_API_KEY"

同时在你的 shell 配置文件(~/.zshrc~/.bashrc)中添加:

# 添加到 ~/.zshrc 或 ~/.bashrc
export OPENAI_API_KEY=ollama

保存后执行 source ~/.zshrc 使配置生效。之后直接运行 codex 命令即可使用本地模型。

方法三:命令行参数(单次覆盖)

不修改配置文件,通过命令行参数临时指定模型和 provider,适合在已有配置基础上做单次切换:

codex --model qwen2.5-coder:32b \
      --provider ollama \
      "解释这段代码的时间复杂度"

多环境配置技巧

如果你需要在 Ollama 本地模型和 OpenAI 云端模型之间频繁切换,可以在 shell 配置文件中定义别名:

# ~/.zshrc

# 使用 Ollama 本地模型
alias codex-local='OPENAI_BASE_URL=http://localhost:11434/v1 OPENAI_API_KEY=ollama CODEX_MODEL=qwen2.5-coder:32b codex'

# 使用 OpenAI 云端模型(需要真实 API Key)
alias codex-cloud='OPENAI_BASE_URL="" OPENAI_API_KEY=$REAL_OPENAI_KEY CODEX_MODEL=o4-mini codex'

5. 验证配置是否生效

配置完成后,通过以下方式确认 Codex CLI 正确使用了本地模型:

# 查看版本和当前配置
codex --version

# 测试简单任务,观察响应速度(本地模型通常首 token 延迟 0.5-2s)
codex "用 Python 写一个快速排序函数,带类型注解"

# 检查 Ollama 请求日志(另开一个终端)
OLLAMA_DEBUG=1 ollama serve

# 查看 Ollama 当前正在运行哪些模型
ollama ps

# 查看 Ollama 服务健康状态
curl http://localhost:11434/api/tags | python3 -m json.tool

如果在 Ollama 的调试日志中看到类似 POST /v1/chat/completions 的请求记录,说明 Codex CLI 正在成功调用本地模型。

性能监控:运行 ollama ps 可以看到模型的加载状态和 VRAM 占用。如果显示 100% GPU,说明模型完全跑在 GPU 上,速度最快;如果显示 CPU,说明需要检查 GPU 驱动配置。

6. 与 OpenAI 云端模型对比

在选择使用本地模型还是云端模型时,以下对比表可以帮助你做出决策:

维度 Ollama 本地(32B) OpenAI o4-mini
成本 零(硬件折旧除外) 按 token 计费,约 $0.15/百万输入 token
代码生成质量 ⭐⭐⭐(7B)/ ⭐⭐⭐⭐(32B) ⭐⭐⭐⭐⭐
首 token 延迟 0.5-3s(GPU)/ 5-20s(CPU) 1-5s(网络依赖)
隐私安全 数据完全不出本地 代码发送至 OpenAI 服务器
离线可用 ✅ 完全离线 ❌ 需要互联网
上下文窗口 4K-32K(模型依赖) 128K
多模态(图像理解) 部分模型支持(llava 等) ✅ 原生支持
推理能力(复杂逻辑) 有限 强(o 系列专为推理优化)
速率限制 有(Tier 依赖)
硬件要求 8GB+ 显存(7B)/ 24GB+(32B) 仅需网络连接

综合来看,如果你的项目对隐私要求高、网络条件受限,或者需要大量批量处理代码任务,本地模型是合理的选择。对于关键业务逻辑、需要高精度的代码重构,建议仍使用 OpenAI o4-mini。

7. AGENTS.md 本地模型专用配置

在项目根目录放置 AGENTS.md 文件,可以给 Codex CLI 提供项目上下文和行为约束。针对本地模型的特点(上下文较短、响应速度较慢),建议使用更精简的指令格式:

# AGENTS.md(项目根目录)

# Coding Assistant

You are a coding assistant running on a local Ollama model.

## Constraints
- Keep responses concise (local models have limited context)
- Prefer showing code over long explanations
- Use Chinese for comments unless asked otherwise
- Limit file reads to directly relevant files only
- When generating code, include type annotations by default

## Project Stack
- Backend: Python 3.12, FastAPI, SQLAlchemy 2.0
- Frontend: TypeScript, React 19, Tailwind CSS v4
- Database: PostgreSQL 17
- Test: pytest, vitest

## Allowed Operations
- Read any file in this project
- Write to src/, tests/, docs/
- Run: npm test, pytest, go test, make build

## Code Style
- Follow existing naming conventions in the codebase
- Do not introduce new dependencies without asking
- Always run formatter after editing: black (Python) / prettier (TS)
为什么本地模型更需要 AGENTS.md:与 GPT-4/o4-mini 相比,本地 7B-32B 模型更容易"跑偏"或忽略隐式上下文。通过 AGENTS.md 明确约束可以显著提升输出质量,减少需要二次修正的次数。

8. 常见问题排查

以下是接入 Ollama 时最常遇到的错误及解决方案:

错误信息 原因 解决方案
connection refused localhost:11434 Ollama 服务未启动 运行 ollama serve 或检查系统托盘应用是否在运行
model not found 模型未下载到本地 运行 ollama pull 模型名,使用 ollama list 确认已下载
context length exceeded 输入超出模型支持的最大上下文长度 缩小任务范围,或拉取支持 32K 上下文的模型版本
响应速度极慢(>30s/token) GPU 未被使用,模型在 CPU 上运行 安装/更新 CUDA 驱动,运行 nvidia-smi 检查 GPU 状态;macOS 确认 Metal 已启用
生成代码质量差、答非所问 使用了通用模型而非代码专用模型,或模型参数量太小 切换到 qwen2.5-coderdeepseek-coder 系列;升级到 14B+ 模型
invalid API key 错误 环境变量格式问题或未设置 确保 export OPENAI_API_KEY=ollama(字面量 "ollama",不加引号)
OLLAMA_ORIGINS 跨域错误 Ollama 默认限制请求来源 设置 OLLAMA_ORIGINS=* 后重启 Ollama 服务
模型加载后立即 OOM 崩溃 显存不足 使用更小的量化版本(如 :q4_K_M),或改用更小参数量的模型

调试技巧

# 检查 Ollama 服务详细日志
OLLAMA_DEBUG=1 ollama serve 2>&1 | tee /tmp/ollama.log

# 直接测试 API 接口(绕过 Codex CLI)
curl http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ollama" \
  -d '{"model":"qwen2.5-coder:7b","messages":[{"role":"user","content":"hello"}]}'

# 检查 GPU 使用情况(NVIDIA)
watch -n 1 nvidia-smi

# 检查 GPU 使用情况(Apple Silicon)
sudo powermetrics --samplers gpu_power -n 1

9. 进阶:团队共享远程 Ollama 服务器

如果你的团队有一台配备高端 GPU 的工作站或服务器,可以让所有人共用一个 Ollama 实例,避免每人都需要高端显卡。

服务端配置

# 服务器端:允许来自任意 IP 的请求(默认只监听 127.0.0.1)
OLLAMA_HOST=0.0.0.0 ollama serve

# 或者通过 systemd 永久设置(Linux)
sudo systemctl edit ollama

# 在打开的编辑器中添加:
# [Service]
# Environment="OLLAMA_HOST=0.0.0.0"

sudo systemctl daemon-reload && sudo systemctl restart ollama

客户端配置

# 将 localhost 替换为服务器的局域网 IP
export OPENAI_BASE_URL=http://192.168.1.100:11434/v1
export OPENAI_API_KEY=ollama
codex "分析这个函数的性能瓶颈"

安全加固建议

不要将 Ollama 暴露到公网:Ollama 原生不支持认证,直接暴露到公网任何人都可以调用你的模型。如果必须远程访问,请务必配置 VPN 或添加认证层。

性能调优

# 设置并发请求数(默认 1,增大可服务多个客户端)
OLLAMA_NUM_PARALLEL=4 ollama serve

# 设置模型在内存中保留时间(默认 5 分钟,设为 0 立即卸载)
OLLAMA_KEEP_ALIVE=30m ollama serve

# 限制最大加载模型数量
OLLAMA_MAX_LOADED_MODELS=2 ollama serve

10. 常见问题解答(FAQ)

Codex CLI 可以使用 Ollama 本地模型吗?

可以。Codex CLI 支持任何兼容 OpenAI API 格式的后端,包括 Ollama。核心原理是:Ollama 在 http://localhost:11434/v1 提供一个与 OpenAI Chat Completions 完全兼容的 HTTP 接口。只需设置 OPENAI_BASE_URL=http://localhost:11434/v1OPENAI_API_KEY=ollama,Codex CLI 就会将所有请求发送到本地 Ollama 服务,而不是 OpenAI 的服务器。

Ollama 哪个模型最适合 Codex CLI?

取决于你的硬件配置:

本地模型和 OpenAI o4-mini 哪个更好?

这个问题没有绝对的答案,取决于你的优先级。OpenAI o4-mini 在代码生成质量、多步骤推理、跨文件理解等方面明显优于本地 32B 模型,特别是 o 系列的专用推理能力是本地模型目前难以企及的。但本地模型的优势也很实在:零成本、完全离线、代码数据不出本地,对于隐私敏感的企业项目或想要节省 API 费用的个人开发者,本地模型是合理的权衡选择。实际上许多团队采用混合策略:日常快速任务用本地模型,关键代码审查和复杂重构调用 OpenAI。

Codex CLI 接入 Ollama 需要什么硬件?

最低配置:8GB 显存(或 Apple Silicon 16GB 统一内存)可以运行 7B 模型,能够完成基本的代码补全和简单重构。推荐配置:16GB 显存支持 14B-16B 模型,可以处理中等复杂度的编程任务。高端配置:24GB+ 显存可运行 32B 模型,代码质量接近云端服务。纯 CPU 运行也可以(任何 RAM 16GB+ 的机器),但速度会比 GPU 慢 5-10 倍,实际使用体验较差。