Gemma 4 接入 OpenAI Codex CLI:零成本本地 AI 编程助手搭建指南(2026)
OpenAI 在 2026 年 4 月初发布了 Codex CLI,开发者社区立刻炸锅了——能不能别用 OpenAI 的付费 API,直接换成本地模型来跑?
答案是可以。Gemma 4 能够直接替代 OpenAI 模型接入 Codex CLI,给你一个完全在本地运行的 AI 编程助手:不花一分钱、代码不出本机、断网也能用。
这篇指南会从头带你走一遍完整流程——从安装 Ollama 到用 Gemma 4 26B 或 31B 跑通第一个 Codex 命令。如果你一直在等一个不用把公司代码发到云端的 Codex 使用方案,这就是了。
OpenAI Codex CLI 是什么?
Codex CLI 是 OpenAI 推出的终端 AI 编程工具,可以理解成"命令行版的 GitHub Copilot"——不在编辑器里用,而是直接在终端里对话式写代码。它能做什么:
- 自然语言生成代码:
codex "创建一个带 JWT 鉴权的 REST API" - 解释复杂代码:
codex explain app/main.py - 重构函数:
codex refactor --improve-performance - 调试报错:
codex fix --error "TypeError: undefined is not a function"
默认情况下,Codex CLI 会调用 OpenAI 的云端 API(GPT-4 或同级模型)。但它底层是一个标准的 OpenAI 格式 HTTP 客户端——这意味着任何兼容 OpenAI 接口的后端(Ollama、LM Studio、vLLM 都行)都能接。整个方案的关键就在这里。
为什么要用 Gemma 4 替代 OpenAI?
三个实打实的理由。
第一,隐私。 你的代码一行都不会离开本机。没有任何供应商能看到你的业务逻辑、API 密钥或数据库结构。对数据合规要求严格的公司来说,这是硬性需求,不是加分项。
第二,成本。 OpenAI 按 token 收费,而 Codex 习惯把整个文件喂进上下文。一次中等规模项目的重构可能就烧掉 5-10 美元。Gemma 4 在本地跑永久免费,Agent 挂一宿也不花一分钱。
第三,离线。 本地模型在飞机上、山里、公司内网防火墙后面都能用。如果你经常出差或在受限环境下工作,本地方案是唯一选择。
以前本地模型的短板是质量——太笨了,写不了正经代码。Gemma 4 改变了这一点。26B 和 31B 在多步推理、function calling 和结构化输出方面的能力已经够用,能胜任真实的开发工作。
准备工作
开始之前,你需要:
- Ollama:已安装(ollama.com)
- Gemma 4:26B 或 31B 模型(下面会教你下载)
- OpenAI Codex CLI:通过 npm 安装
- Node.js 20+ 工具链
- 硬件要求:26B 至少 16GB 内存,31B 至少 24GB
不确定该选哪个模型?简单说:26B MoE 是笔记本的最佳选择,因为单 token 只激活约 4B 参数;如果你有台式机或 24GB+ 内存,31B Dense 在长链路任务上更聪明。
第一步:安装 Ollama 并下载 Gemma 4
Ollama 是跑本地模型最简单的方式,它帮你搞定模型下载、量化和 API 服务。
安装 Ollama
# macOS
brew install ollama
# Linux
curl -fsSL https://ollama.com/install.sh | sh
# Windows:去 ollama.com 下载安装程序双击即可下载 Gemma 4
对大多数编程任务,Gemma 4 26B(MoE 版) 是性价比最高的选择。它比 31B 快,且同一时刻只激活 4B 参数,在 16GB 内存的 MacBook 上就能流畅运行:
ollama pull gemma4:26b-a4b如果你内存更大(24GB 以上)且追求最佳质量,用 31B:
ollama pull gemma4:31b等下载完成(模型文件约 15-20GB)。下载好后测试:
ollama run gemma4:26b-a4b "写一个 Python 函数反转字符串"如果看到合理的回复,说明安装成功。
第二步:启动 Ollama API 服务
Ollama 默认在 http://localhost:11434/v1 提供 OpenAI 兼容 API。在终端启动它:
ollama serve保持这个终端窗口打开。打开另一个终端,验证服务正常:
curl http://localhost:11434/v1/models你应该能看到一个 JSON 响应,列出已下载的模型(包括 gemma4:26b-a4b)。如果 curl 卡住或拒绝连接,说明服务没起来——检查 11434 端口是否被占用。
第三步:安装 OpenAI Codex CLI
Codex CLI 通过 npm(Node.js 包管理器)分发:
npm install -g @openai/codex-cli
codex --version应该看到 1.x.x 或更高的版本号。如果安装失败,确认 Node.js 是 20 或更新版本——Codex 用到了较新的 fetch API。
第四步:把 Codex CLI 指向 Gemma 4
Codex CLI 遵循标准的 OpenAI SDK 环境变量约定,覆盖三个就能把它重定向到 Ollama。
macOS / Linux
编辑 ~/.zshrc 或 ~/.bashrc:
export OPENAI_API_BASE="http://localhost:11434/v1"
export OPENAI_API_KEY="ollama" # 随便填个非空字符串
export CODEX_MODEL="gemma4:26b-a4b"重新加载:source ~/.zshrc。
Windows(PowerShell)
$env:OPENAI_API_BASE = "http://localhost:11434/v1"
$env:OPENAI_API_KEY = "ollama"
$env:CODEX_MODEL = "gemma4:26b-a4b"冒烟测试
codex "用 Python 打印 hello world"期望输出:
print("Hello, World!")如果报错 "Model not found" 或 "Connection refused",跳到下方常见问题排查。
第五步:四个实战任务
Hello World 太简单,下面是真实开发中用得上的四个场景。
1. 生成 REST 端点
codex "创建一个 FastAPI 端点,接收 POST 请求(email 和 password),校验后返回 JWT token"Gemma 4 26B 会生成类似:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, EmailStr
from datetime import datetime, timedelta
import jwt
app = FastAPI()
SECRET_KEY = "your-secret-key"
class UserLogin(BaseModel):
email: EmailStr
password: str
@app.post("/login")
def login(user: UserLogin):
if user.email == "user@example.com" and user.password == "password123":
token = jwt.encode(
{"sub": user.email, "exp": datetime.utcnow() + timedelta(hours=1)},
SECRET_KEY, algorithm="HS256",
)
return {"access_token": token, "token_type": "bearer"}
raise HTTPException(status_code=401, detail="Invalid credentials")2. 解释陌生代码
存为 complex.py:
def f(n): return n if n < 2 else f(n-1) + f(n-2)运行:
codex explain complex.pyGemma 4 会识别出这是朴素递归版斐波那契,指出时间复杂度 O(2^n),并建议用记忆化优化。
3. 重构提升性能
codex refactor complex.py --goal "optimize for speed"输出:
from functools import lru_cache
@lru_cache(maxsize=None)
def f(n):
return n if n < 2 else f(n-1) + f(n-2)加一个装饰器,O(2^n) 降到 O(n)——教科书式答案。
4. 自动修 Bug
codex fix --error "TypeError: 'NoneType' object is not subscriptable" --file app.pyGemma 4 会扫描 app.py,定位那行对可能为 None 的返回值做下标访问的代码,然后给出加空值守卫的 patch。
本地 Gemma 4 vs 云端 OpenAI:差多少?
| 维度 | Gemma 4 26B(本地) | Gemma 4 31B(本地) | GPT-4 级(云端) |
|---|---|---|---|
| 代码生成质量 | 接近 GPT-3.5 | 接近 GPT-4 | 最强 |
| 吞吐速度 | 20-40 t/s(M1/M2) | 15-30 t/s | 100+ t/s |
| 网络延迟 | 0ms | 0ms | 200-500ms |
| 单次任务成本 | $0 | $0 | $0.15-0.30 |
| 月费用(每周 100 次) | $0 | $0 | $60-120 |
| 隐私 | 完全本地 | 完全本地 | 上传云端 |
| 离线可用 | 是 | 是 | 否 |
纸面吞吐差距看着吓人,但没有网络延迟的情况下,短任务的总耗时几乎一样。云端真正的优势场景是在大仓库上跑多步 Agent 循环——那时 100+ t/s 的优势会被放大。
硬件实测数据详见《Gemma 4 Mac 性能实测:M1 到 M4》和《NVIDIA RTX 跑 Gemma 4 指南》。
常见问题排查
"Connection refused"
Ollama 没启动,或端口被占了。执行 curl http://localhost:11434/v1/models 确认。失败就重新 ollama serve,同时检查 11434 端口是否被占用。
"Model not found"
ollama list 会显示你装的确切标签名。CODEX_MODEL 必须和它完全一致(gemma4:26b-a4b 而不是 gemma4-26b)。
Codex 卡住或超时
大概率是内存不够在疯狂换页。把 31B 换成 26B,或者用 Q4 量化版本。也可以给 Codex 命令加 --timeout 120。
输出质量差
模糊的 prompt 对本地模型的伤害比对 GPT-4 大得多。别写"让代码更好",写"把这个函数改为 async/await 并加上结构化错误处理"。
进阶:Function Calling
Gemma 4 支持 OpenAI 风格的工具调用,这意味着 Codex CLI 能驱动真实的外部动作——查 GitHub Issues、跑测试套件、查生产数据库慢查询。用 JSON Schema 定义工具,通过 --tools tools.json 传给 Codex,Gemma 4 会自动选合适的函数并在返回结果上继续推理。完整实战见《Gemma 4 Function Calling 实战》。
常见问题(FAQ)
Q:可以用 Gemma 4 E2B 或 E4B 代替 26B 吗? A:理论上可以,实际不行。小模型只能写简单片段,稍有上下文就崩。Codex 场景请坚持 26B 或 31B。
Q:Windows 能用吗?
A:可以。Ollama 原生支持 Windows 11,Codex CLI 是 Node.js 应用。唯一差别是用 PowerShell 的 $env: 语法设置环境变量。
Q:能把 Gemma 4 接到 Cursor、Continue、Aider 里吗?
A:任何支持 OpenAI 格式 API 的工具都行。Base URL 指向 http://localhost:11434/v1,模型名填好,收工。我们还有专门的 Aider 接入 和 Claude Code Router 接入 指南。
Q:这套方案总共花多少钱? A:0 元。Ollama 免费、Gemma 4 开源、Codex CLI 免费。唯一成本是电费。
Q:编程场景下 Gemma 4 和 Qwen 3 哪个更好? A:Gemma 4 在指令跟随和结构化 JSON 输出上更强;Qwen 3 在相同硬件上有时更快,中文场景略有优势。详见《Gemma 4 vs Qwen 3 全面对比》。
Q:树莓派能跑吗? A:只能跑最小的 E2B,而且只能当玩具用。真正做开发需要 16GB+ 内存的笔记本。
Q:如果 Gemma 4 31B 的质量还是不够用怎么办?
A:取消 OPENAI_API_BASE 环境变量就切回 OpenAI 云端了。很多团队用混合方案:日常小任务走本地,每周一两个难题走云端。
相关文章
- Ollama 运行 Gemma 4 完全指南(2026) — Ollama 的深度玩法,含 GPU 参数和上下文窗口调优
- 2026 年最佳本地 AI 模型盘点 — Gemma 4 与 Qwen 3、DeepSeek、Llama 等全面对比
- Gemma 4 vs Qwen 3 全面对比 — 挑选本地默认模型时的参考对照
Stop reading. Start building.
~/gemma4 $ Get hands-on with the models discussed in this guide. No deployment, no friction, 100% free playground.
Launch Playground />


