起因:本地 AI 编程 Agent 终于能用了
2026年5月,OpenAI Codex CLI 全面免费,Ollama 0.24 正式适配 Codex App。这意味着你本地跑的大模型可以直接变成 AI 编程 Agent——全程离线、零 Token 消耗。
作为一个在 M4 Mac mini 16GB 上跑本地模型的人,我之前尝试过用 Continue + Ollama 做本地代码补全,体验还算能用。但让本地模型做完整的 Agent 任务(分析项目→修改代码→自动测试),之前基本不现实。工具调用成功率太低,多轮对话很快就偏了。
这次决定认真测一下 Codex + Ollama 到底到了什么水平。
先搞清楚 Codex CLI 是什么
Codex CLI 是 OpenAI 今年开源的终端 AI 编程 Agent,Apache 2.0 协议,GitHub 87k+ stars。它跟 ChatGPT 网页版里的代码解释不同——这是一个真正的Agent 框架:
- Rust 重写的 CLI:性能远好于 Python 系 Agent 工具
- 原生沙箱:macOS 走 Seatbelt 框架,Linux 走 bubblewrap,Windows 走 Windows Sandbox。不是 Docker 那种重量级隔离,而是 OS 级轻量沙箱
- 三层安全模式:read-only / workspace-write / danger-full-access,可按项目配置
- Hooks 系统:6 种事件钩子(SessionStart / PreToolUse / PostToolUse / PermissionRequest / SubagentStart 等),可以拦截和修改工具调用
- Subagent 并行架构:支持多子代理并行处理任务
- 审批策略:untrusted / on-request / never 三种,还有 Auto-review 自动审批
跟 Claude Code、Aider、Cursor Agent 相比,Codex CLI 最独特的是它的沙箱和 Hooks 系统——其他工具基本没有这层防护。
macOS 部署实战
1. 安装 Codex CLI
# macOS 三种方式任选
brew install codex
# 或
curl -fsSL https://openai.com/codex/install.sh | sh
# 或直接下载二进制
# https://openai.com/zh-Hans-CN/codex/
2. 升级 Ollama 到 0.24+
这一步必须做。只有 0.24 版本才完全适配 Codex App(2026年5月14日发布)。旧版的 ollama launch codex-app 会报错或行为异常。
brew upgrade ollama
# 确认版本
ollama --version # 应显示 0.24 或更高
3. 选模型
这是最关键的一步。我测试了三个模型的实际表现:
| 模型 | 参数量 | 工具调用成功率 | 代码质量 | 内存占用 |
|---|---|---|---|---|
| Qwen3.6:27b-mlx | 27B | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ~16GB |
| Gemma4:26b-mlx | 26B (3.8B活跃MoE) | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ~12GB |
| gpt-oss:20b | 20B | ⭐⭐⭐ | ⭐⭐⭐ | ~14GB |
我最终选择了 Gemma4:26b-mlx。理由:
- LiveCodeBench v6 得分 77.1(Qwen3.6 27B 无公开可比数据,但实际体感 Gemma 4 在代码补全一致性上略好)
- Codeforces ELO 1718,已经达到人类竞赛选手水平
- MoE 架构:26B 总参数但每次推理只激活 3.8B,12GB 就能跑,M4 16GB 绰绰有余
- 原生 function-calling 支持,对 Agent 场景优化过
macOS Apple Silicon 用户记得选 -mlx 后缀版本,MLX 加速在 M4 上的 token 生成速度比 llama.cpp 后端快 30-50%。
4. 启动
ollama launch codex-app --model gemma4:26b-mlx
然后 Codex App 桌面窗口就出来了。注意 --restore 参数可以恢复之前用过的模型配置,不需要每次都重新指定。
实测:三个任务看真实能力
任务一:让它读一个陌生的开源项目
我给它一个我之前没看过代码的 Rust CLI 工具(~3000 行代码),让它:
- 分析项目结构
- 找出所有 CLI 子命令和参数
- 画调用流程图
- 找出可能的性能瓶颈
结果:前3步完成得很好——项目结构分析准确,子命令识别完整,Mermaid 流程图可以直接用。第4步比较水,给了几个泛泛的建议(”考虑用 async IO” 之类),没有真正定位到具体代码行。这暴露了本地模型的典型局限:分析性任务还行,深度优化建议仍需大模型。
任务二:从零写一个 p5.js 交互可视化
让它写一个带粒子效果的音乐可视化页面。Agent 自动创建了 HTML + JS,能跑。粒子运动轨迹正确,颜色渐变也对。
但处理音频输入时直接用了 Web Audio API 的默认 FFT 设置,没有做频率加权——如果你给专业音频工程师看,会觉得太简陋。这就是本地 Agent 和 Claude 这种大模型的质量差距:功能能跑,但细节打磨不够。
任务三:给这个博客写一个 Python 脚本,自动备份 WordPress 到本地
这是我故意设的陷阱题——它需要:理解 WordPress 文件结构、写 mysqldump 命令、处理密码安全、加错误处理。
Agent 写了 80 行 Python,逻辑正确,mysqldump 命令也对。但它把数据库密码硬编码在脚本里了(我故意没在 prompt 里提醒安全问题)。这再次说明:让本地 Agent 写生产级代码,安全审查不能省略。
踩过的坑
在用 Ollama + Codex 的过程中,遇到了几个值得一提的问题:
- 模型 metadata 缺失:Gemma4:26b-mlx 的模型元数据不完整,Codex 有时会降级到 fallback metadata,导致工具调用格式不匹配。重启 Ollama 服务可以临时缓解
- 上下文窗口膨胀:长会话中 Agent 会忽略
num_ctx设置,生成过大的 context_window,导致 M4 16GB 内存压力爆增。建议长任务分多次会话 - MCP 工具不兼容:Codex 包装 MCP tools 为 namespace 格式,本地模型后端经常解析不了。目前 MCP + Ollama 的组合还不稳定
- 无限循环:遇到过 1 次 Agent 陷入修补→报错→修补的死循环。按 Esc 中断后手动引导可以恢复
建议关注 openai/codex issues 和 ollama/ollama issues 跟踪最新兼容性状态。这个生态还在快速迭代中。
本地 Agent 的能力边界
根据我这几天的测试和 GitHub issues 的反馈,可以总结出当前的能力边界:
| 任务类型 | 本地 20-30B 模型 | 云端 GPT-5/Claude |
|---|---|---|
| 简单 CRUD 代码生成 | ✅ 够用 | ✅ 完美 |
| 项目结构分析 | ✅ 靠谱 | ✅ 靠谱 |
| Bug 定位(有明确报错) | ✅ 基本够用 | ✅ 更准确 |
| 架构设计建议 | ⚠️ 泛泛而谈 | ✅ 有深度 |
| 安全审计 | ❌ 不可靠 | ⚠️ 需人审 |
| 复杂多文件重构 | ❌ 容易偏 | ✅ 相对稳定 |
| 从零建项目 | ⚠️ 能跑但不精致 | ✅ 质量高 |
简单说:20B 级别的本地模型,能做 70% 的日常编程辅助任务,但剩下 30% 的复杂场景还是需要云端大模型。这不是贬低本地 AI——恰恰相反,能靠一台 M4 Mac mini 完成 70% 的任务,而且零成本、断网可用,这已经很惊人了。
Ollama 正在成为本地 AI Agent 的操作系统
Ollama 0.24 的一个关键变化是 ollama launch 命令的扩展。以前它只是一个模型加载器,现在它正在变成本地 Agent 的统一入口:
# 目前支持的 Agent 工具
ollama launch codex-app # OpenAI Codex 桌面版
ollama launch claude # Claude Code 对接
ollama launch codex # Codex CLI
ollama launch opencode # OpenCode
ollama launch openclaw # OpenClaw
ollama launch hermes # Hermes Agent
这意味着模型和 Agent 工具的绑定关系正在被解耦——你可以在同一个模型上切换不同的 Agent 前端,也可以在不同模型之间切换同一个 Agent。5月28日刚发布的 OpenJarvis v1.0(Stanford 出品)也是这个趋势的代表:local-first 的个人 AI Agent 框架,直接内置 Ollama 支持。
总结
如果把 AI 编程工具的发展分成三个阶段:
- 代码补全(Copilot 时代)—— AI 帮你写下一行
- 对话式编程(ChatGPT/Claude 时代)—— AI 回答你的问题
- Agent 执行(现在)—— AI 真正开始干活
我们现在正处在 2→3 的过渡期。Ollama + Codex 的组合让这个过渡可以在本地、免费、离线地发生。虽然还有很多粗糙的地方,但这已经是普通人用一台普通电脑就能跑起来的 AI Agent 了。
下一步我会持续测试:llama.cpp 直接对接 Codex(绕过 Ollama)、越狱版模型在 Agent 场景的表现、以及能不能把 Codex Agent 接入我的博客自动发布流程。如果有什么新发现,会继续记录在这里。