ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Codex CLI本地部署实战:从安装到接入DeepSeek与Ollama

Codex CLI本地部署实战:从安装到接入DeepSeek与Ollama 去年我就一直在找真正能住进终端的AI编程助手试了一圈IDE插件和各类命令行工具最后停在Codex CLI上。这玩意儿最吸引我的地方是它不是那种你问一句它答一句的聊天工具而是真能在你仓库里干活读代码、改文件、跑测试、提交PR整个链路它都能参与。最近后台收到一堆关于Codex下载、安装、本地部署、接入DeepSeek和Ollama的留言正好我自己从零装过一遍也踩了不少坑索性把这套完整链路写出来从环境准备、登录认证再到配置本地模型和常见报错排查照着走基本都能跑通。1. 先搞清楚Codex 到底是什么为什么要本地部署1.1 Codex CLI 不是另一个 AI 编程助手先说清楚一个容易混淆的点。很多人把 Codex 和 GitHub Copilot、Cursor、通义灵码这类产品放在一起比实际上 Codex CLI 的定位完全不同。它是一个跑在终端里的开源编程代理agent你给它一个任务描述它自己决定先读哪个文件、改哪段代码、执行什么命令全程不需要你一步步喂指令。社区里有人叫它会自己干活的实习生这个比喻挺准确的你负责派活和review它负责跑腿。跟IDE插件相比Codex CLI 最大的优势是领域无关。你不需要把代码工程导入某个特定编辑器只要在任意终端里打开项目目录它能基于整个项目上下文干活。我自己的主力工作流是 Neovim以前想用AI辅助得来回切窗口现在直接在终端里跟 Codex 对话效率完全不同。1.2 下载、安装、本地部署分别指什么热搜词里Codex下载Codex安装和本地部署大语言模型Ollama本地部署混在一起其实说的是两件不同的事搞清楚这一点才不会绕晕。Codex CLI 是客户端工具它需要联网调用大模型的接口才能工作。默认情况下你登录 ChatGPT 账号或者配置 OpenAI API Key它就会调用官方模型。所谓的下载安装指的就是把 Codex CLI 这个客户端装到你自己电脑上这一步完全本地装好之后跑codex --version能看到版本号。而本地部署是指另一条路线不依赖任何外部API在自己电脑上用 Ollama 这类工具把开源大模型跑起来然后让 Codex CLI 去调用本地模型。这样的组合好处很明显数据不出机器没有按token计费的成本压力断网也能继续用。热词里频繁出现Codex接入DeepSeek本质也是改一行配置把 Codex 的请求指向 DeepSeek 的兼容API而已。1.3 谁适合看这篇实操我把话先放前面这篇东西不是写给只会点点鼠标的用户的但也不是只有资深工程师才配用。适合的人群大致三类第一类是已经在用 AI 编程助手、想换个更自由的终端方案的开发者第二类是公司内部有代码保密要求、不能把代码传到外部API、需要本地模型兜底的团队第三类是纯粹对本地模型 Agent这个组合好奇的技术玩家。如果你现在还在用 Copilot 这类工具并且用得很舒服那也许没必要折腾。但如果你想体验让 AI 自己动手改代码的完整流程或者想把编程助手完全掌控在自己手里这篇值得读完。2. 环境准备装好 Codex 需要哪些前提2.1 操作系统与 Node.js 版本要求Codex CLI 是 Node.js 写的官方支持 macOS、Linux 和 Windows。不管哪个系统前提都是装好 Node.js 和 npm。这里提醒一个新踩过的坑Codex 对 Node.js 版本有要求官方文档写的是 22 及以上版本。我一开始用的是系统自带的旧版 Node 18装到一半就报错升级之后才顺利通过。检查版本的命令就两行node --version npm --version如果版本低于要求建议直接用 nvm 装新版。curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash nvm install 22 nvm use 22Windows 用户注意nvm 在 Windows 上有专门的 nvm-windows 版本安装方式略有差异。不想折腾管理器的话直接去 Node 官网下载 LTS 版本安装包也行。2.2 通过 npm 安装 Codex CLI环境准备好之后安装本身只有一条命令npm install -g openai/codex装的时候加不加-g差别很大。-g的意思是全局安装装完之后你在任何目录打开终端都能直接用codex命令不用进到某个特定目录。建议一定加上不然每次还要找安装路径非常反人类。等待命令跑完的过程中可以做两件事一是确认网络状况良好npm 能把包完整拉下来二是耐心点这个包体积不小偶尔会出现卡在某个进度百分比的情况多半是网络抖动退出重试就行。安装完成之后验证一下codex --version能输出版本号就说明装好了。我建议顺手跑一下codex --help看看子命令列表后面很多操作都会用上。2.3 Windows 用户的两个选择原生终端还是 WSLWindows 上装 Codex 有两条路我两条都试过说说差别。原生终端指的是直接在 PowerShell 或 Windows Terminal 里安装使用。这条路简单直接上面的 npm 命令在 PowerShell 里一样能跑装完就能用。但它有个隐藏问题Codex 执行任务时需要调用 shell 命令PowerShell 和你在生产环境用的 bash 语法差异经常会出幺蛾子比如某些命令在 PowerShell 里解析方式不同导致 Agent 干活干到一半报错。WSLWindows Subsystem for Linux是在 Windows 里开一个完整的 Linux 环境Codex 的一切行为都更接近官方支持的原生 Linux 环境。好处是命令兼容性几乎完美坏处是得先花十分钟把 WSL 配好。我的建议是如果你主要在 Windows 上做开发WSL 一步到位更省心如果只是体验一下原生终端先跑通也没问题。2.4 关于 Windows 桌面版的说明热词里有人提到Codex安装 Windows桌面版。目前 Codex 的主推形态是 CLI 工具桌面版并不是所有平台都有稳定版本。我的建议是别急着找桌面版安装包先把命令行版本跑通实际用起来 CLI 的效率往往更高。桌面版支持比较全的后面想换再换两者配置文件的路径是互通的切换成本很低。3. 登录认证绕过新手最头疼的环节3.1 ChatGPT 账号登录与 API Key 两种认证方式Codex 装好之后第一次运行会要求你登录。目前支持两种认证方式对应不同的使用场景。第一种是 ChatGPT 账号登录在终端里执行codex login它会弹出浏览器让你登录 ChatGPT授权完成之后终端自动收到凭证。这种方式适合买了 ChatGPT Plus 或 Pro 订阅的用户不需要额外配置 API Key用量包含在订阅里。缺点是如果账号本身有组织权限限制登录之后可能还要额外处理组织设置加载的问题这个后面细说。第二种是 API Key 方式适合按量计费的用户codex login --api-key sk-xxxxxAPI Key 会存在本地的认证文件里路径是~/.codex/auth.json。这个文件很关键后面遇到登录问题第一个要检查的就是它。两种方式的对比如下对比项ChatGPT 账号登录API Key 登录适用人群ChatGPT 订阅用户独立API计费用户凭证存储~/.codex/auth.json~/.codex/auth.json计费方式订阅额度内按token计费换账号难度需要重新授权改一行配置即可我个人日常用 API Key 方式更多因为可以在多个项目之间灵活切换模型供应商后面接入 DeepSeek 时也是走这个思路。3.2 浏览器回调失败怎么办登录过程中最常见的问题就是浏览器打不开、授权页面一直转圈、或者终端提示登录超时。我遇到过的实际场景是这样的执行codex login之后终端会弹出一个本地 URL 和一个回调地址浏览器如果没能自动打开手动把终端里的 URL 复制到浏览器访问就行。如果浏览器能打开但授权完终端没反应多半是本地回调端口被占用或者防火墙拦截了检查一下终端里监听的那个 localhost 端口是不是被别的进程抢了。一个非常实用的排查思路先确认~/.codex/auth.json文件有没有生成。如果文件是空的或者压根没有说明认证流程根本没走完如果文件里有 token 但运行还是提示未登录删掉这个文件重新登录一次通常能解决。3.3 组织设置加载失败的排查热词里有一条Codex无法加载组织设置这个我也碰到过。使用 ChatGPT 账号登录、且账号关联了团队或组织时Codex 启动会尝试拉取组织配置网络请求如果失败就会弹这个提示。常见原因有三个凭证过期、组织的服务器配置变更、网络访问官方服务不稳定。处理办法也不复杂先删掉~/.codex/auth.json重新登录再看组织的访问权限是否还在如果重新登录还不行换 API Key 认证方式绕过组织设置这条链路。特别提醒一下这类能登录但不能拉配置的问题九成以上是认证凭证问题不是Codex本身坏了。4. 本地部署与模型接入配出自己的组合4.1 config.toml 到底在配什么如果你只是想跑通官方默认功能登录完就能用。但要是想接 DeepSeek、接本地 Ollama 模型就必须理解 Codex 的配置文件~/.codex/config.toml。这个文件是 Codex 的总控台里面定义了三个核心东西用哪个模型、走哪个供应商、供应商的接口地址和认证方式。本质上Codex CLI 是一个高度可配置的客户端任何兼容 OpenAI API 格式的服务都能接进来。一个最简配置长这样model gpt-5 model_provider openai [model_providers.openai] name OpenAI base_url https://api.openai.com/v1 api_key_env_var OPENAI_API_KEY看起来复杂拆开理解就不难了顶层model和model_provider决定默认用谁下面[model_providers.xxx]是注册一个供应商base_url是它的接口地址api_key_env_var是从哪个环境变量读取密钥。你自己新加一个供应商其实就是照着这个格式再抄一段。4.2 接入 Ollama 本地大模型本地部署方案里我推荐用 Ollama 作为模型运行时原因很简单安装简单、命令少、模型管理方便。安装 Ollama 之后先拉一个编程能力好的模型下来ollama pull qwen2.5-coder:14b模型拉好之后在~/.codex/config.toml里新增一个供应商model_provider ollama model qwen2.5-coder:14b [model_providers.ollama] name Ollama base_url http://localhost:11434/v1 api_key_env_var OLLAMA_API_KEY因为本地模型不需要真实密钥环境变量随便设一个占位字符串就行比如在终端里执行export OLLAMA_API_KEYollama配置完成后运行codexCodex 会通过 Ollama 的 OpenAI 兼容接口去调用本地模型。建议第一时间测试一下问它一个简单的代码问题确认整个链路是通的。这里有个关键点要讲透Ollama 的默认接口是http://localhost:11434但 Codex 要求的是 OpenAI 兼容的/v1路径。Ollama 从某个版本开始内置了/v1兼容层所以 base_url 填http://localhost:11434/v1就是正确的。如果你用的是其他本地推理服务只要它也提供 OpenAI 兼容接口同样可以照葫芦画瓢。4.3 接入 DeepSeek 线上 API要接入 DeepSeek思路和接入 Ollama 完全一样只是换了个供应商注册信息。在配置文件里加model_provider deepseek model deepseek-chat [model_providers.deepseek] name DeepSeek base_url https://api.deepseek.com/v1 api_key_env_var DEEPSEEK_API_KEY然后设置环境变量export DEEPSEEK_API_KEY你自己的key接入 DeepSeek 的好处是模型能力比本地小模型强不少又不依赖官方 OpenAI 服务。实际体验下来代码理解和生成质量在多数场景下够用尤其适合国内网络环境下不想折腾外部服务连通性问题的用户。这也是为什么Codex接入DeepSeek会成为热搜词的核心原因——质量和易用性之间取得了一个不错的平衡。4.4 16G 显存能跑什么模型给个可抄的配置热词里反复出现16g显存本地部署ai我就直接给配置参考。以一张 16G 显存的显卡为例用 Ollama 跑量化后的模型14B 参数级别如 qwen2.5-coder:14b、deepseek-coder-v2:16b是比较稳的选择量化格式选q4_K_M显存占用大概 9-12G剩余空间足够上下文计算。如果你想跑 32B 级别的大模型16G 显存就比较紧张了要么用更激进的量化要么部分层加载到内存速度会明显下降。我的建议是16G 显存老老实实用 14B编程场景响应速度和生成的准确率是可以接受的。如果你想要更流畅的体验7B 到 8B 级别如 qwen2.5-coder:7b会更跟手代价是复杂任务的理解能力弱一些。本地模型和 API 模型的取舍我自己的体会是日常小改动、补测试、写脚本用本地模型完全够大工程重构、跨文件理解复杂逻辑还是得用大模型 API。所以我的配置是本地模型和 DeepSeek 并存按需切换这也是把 Codex 用顺手的核心技巧。5. 高频问题排查从登录失败到代理报错5.1 Codex 打不开、登录不上的速查表我整理了自己遇到过的所有基础级问题统一放一张表里现象可能原因排查动作安装时报错Node.js 版本过低升级到 Node 22执行 codex 提示命令不存在全局安装路径不在 PATH检查 npm 全局 bin 目录并加入 PATH登录时浏览器没反应回调端口被占用检查本地 localhost 端口占用持续提示未登录auth.json 损坏删除 ~/.codex/auth.json 重新登录启动卡在加载页面网络请求超时检查官方服务连通性后重试中文用户问怎么设置成中文默认界面为英文用中文提问即可交互界面不影响功能其中打不开这个现象值得多说一句。如果你双击桌面快捷方式打不开先确认是不是装的是 CLI 版本——CLI 版本本来就没有图形界面它的打开方式就是终端里执行codex这一条对很多新手来说是最大的认知差。5.2 本地代理端点报错的完整分析热词里有一条很具体的报错cc switch local proxy failed while handling codex endpoint /responses。这条报错见过的人不少我详细拆一下。首先明确一点这里的proxy不是任何特殊网络工具而是 API 请求的转发层。很多开发者会在本地起一个 API 网关或者请求转发服务把各种模型请求统一导到一个出口方便记录日志、统一鉴权或者做流量管理。Codex CLI 访问服务时调用的是/responses这个端点如果你的转发服务在处理这个端点时出了问题就会抛出这条错误。按我的排查经验最常见的原因有三个一是你的本地转发服务配置的 base_url 路径不对导致/responses请求被转发到了不存在的上游路径二是转发层没有正确透传流式响应Codex 需要 SSE 流式输出某些网关默认关闭了流式透传三是认证头缺失Codex 会带上Authorization头转发层如果重新构造了请求必须把这个头原样带过去。排查顺序建议如下先确认直连是否正常把配置临时切回官方的 base_url看报错是否消失。看转发服务的请求日志确认/responses请求有没有进来。检查转发规则确认路径、认证头、流式开关三项都配置正确。如果是代码里自己写的转发层重点检查响应头里Content-Type是不是text/event-stream。说句实在话这个报错九成以上是转发配置写漏了什么Codex 本身的容错能力其实并不差你只要把直连这条链路验证通问题基本就局限在转发层那几行配置了。5.3 中文设置与使用体验优化Codex怎么设置成中文也是高频热搜词。我的回答很直接Codex 目前没有官方中文界面选项但这事儿不需要纠结因为它的核心交互就是终端对话你直接用中文提问即可。它理解中文完全没有问题生成的中文注释和代码也基本自然。我可以分享一个组合技巧在 Codex 启动时的系统提示里加入中文偏好说明让它生成的注释、提交信息、代码内文档都用中文。这样做的好处是AI 回答和你项目注释的语言风格统一代码混着中英文反而难维护。我自己的做法是在每个主力项目里放一个AGENTS.md文件里面写明语言偏好和项目规范Codex 每次干活前都会读这个文件实测非常有效。5.4 离线场景下的替代方案与硬件建议如果你所在的网络环境访问外部API服务不稳定但你又确实想稳定的使用 AI 编程助手我的建议是整套方案全部走本地化本地用 Ollama 跑模型Codex 只连 localhost完全离线运行。这套链路不依赖任何外部服务器只要模型运行起来Codex 就一直在工作。硬件方面入门级建议 16G 显存配合 14B 量化模型体验和经济性比较均衡。如果你想跑更大参数且响应快建议 24G 显存起。注意一点本地模型的运行速度由显存容量、显存带宽和模型大小共同决定内存容量反而是次要因素。别只看参数大小就盲目上 70B 模型16G 客户端跑 70B 会慢到让人抓狂。离线状态下Codex 的功能会退化为纯本地模型驱动不能访问云端知识库和在线服务但基础的代码生成、补全、重构能力是完整的。对我个人而言这种断网仍然有AI帮手的安全感才是本地部署最核心的价值。6. 配置管理与项目实践建议6.1 多模型并存时的切换技巧配好 Ollama 和 DeepSeek 之后你可能会遇到一个实际的麻烦怎么在不同模型之间快速切换难道每次都要改 config.toml不用那么麻烦。Codex 支持通过环境变量临时覆盖默认模型比如CODEX_MODELdeepseek-chat CODEX_MODEL_PROVIDERdeepseek codex这个方式在紧急切换时非常管用。比如本地模型正在跑一个重活你又想快速问另一个问题直接用环境变量拉起一个用 DeepSeek 的实例两个会话互不干扰。另一种方式是在 Codex 会话内部用斜杠命令切换模型输入/models就能查看当前可用的模型列表再用/model 模型名直接切换全程不用退出会话非常顺手。这个功能我反而是用了两周之后才发现的一提出来很多人都说居然还能这样。6.2 AGENTS.md 的作用与写法前面提到了 AGENTS.md这里展开细讲。它是 Codex 在进入项目时自动读取的项目级说明文件作用相当于给 AI 交代背景。里面可以写明代码规范、语言偏好、目录结构、常见命令、禁止事项等。AI 读完这个文件之后后续所有操作都会遵循里面的约定。我建议最少包含这几项内容项目简介和主要技术栈代码风格约定缩进、命名、注释语言构建和测试命令不让 AI 做的事比如不要自动修改锁定文件、不要碰某个目录写完之后放到项目根目录提交进 git。全组共享一份AI 的行为会非常稳定几乎不需要反复纠偏。6.3 把 Codex 接入 VS Code 的常见方式平时用 VS Code 的朋友问得也不少。Codex CLI 本身是独立的但你可以把它接入 VS Code 的终端使用本质上就是在 VS Code 内置终端里跑codex命令所有功能照常。另一种方式是安装社区做的 Codex 插件在编辑器侧边栏直接对话。我的看法是插件方式更直观适合从小窗口切换到全编辑器工作流的用户终端方式更极简适合已经习惯命令行的人。两条路不冲突实际使用中我通常在 VS Code 里开一个分屏终端给 Codex 用既不离开编辑器又能享受 CLI 的全部能力。7. 从零到一完整部署实录7.1 一条龙操作清单我把整个流程压缩成可以直接照着做的清单方便你快速复现安装 Node.js 22验证node --version执行npm install -g openai/codex执行codex --version验证安装执行codex login或codex login --api-key sk-xxx确认~/.codex/auth.json已生成按需安装 Ollama 并拉取模型ollama pull qwen2.5-coder:14b编辑~/.codex/config.toml加入本地或第三方供应商设置对应环境变量在项目目录运行codex开始第一个任务放一份AGENTS.md到项目根目录交代项目背景这份清单我重复执行过很多次顺序基本固定唯一要小心的是第 6 和第 7 步本地模型没拉起来之前配置写好了也白搭模型拉好了配置没写一样连不上。两个环节是绑在一起的。7.2 首次实测记录我第一次完整跑通是在一个旧项目上用qwen2.5-coder:14b让它完成一个不小的工作把项目里的所有moment.js调用替换成day.js并适配时区格式。结果比我预期好。Codex 自己列出了涉及的文件清单逐个替换然后停下来问我原来代码中有几处依赖moment的链式调用直接替换可能改变格式输出要不要一并处理。这个细节让我比较惊喜它不只是在机械替换而是在理解调用语义。当然整个过程中途也出错一次——它修改了一个测试文件里的断言条件导致测试跑不过我把它打印的失败信息贴回去问了一句这个断言不应该变它马上道歉并恢复了。这个实测案例说明一件事Codex 已经能承担很多机械性重构工作但最终把关还得人来尤其是那些看起来能过但其实在篡改原有逻辑的改动需要人工 review 兜底。7.3 模型配置的备份与同步配置调好之后成本很低但容易被忽略的一件事是备份~/.codex/config.toml。我建议把这份配置纳入 dotfiles 仓库做版本管理换机器时只要同步仓库再装好 Node 和 Ollama整个环境五分钟就能还原。如果你有团队也可以把配置模板放到团队文档里新人入职照着配一遍基本上不用问人。我自己就吃过一次亏换电脑后凭记忆重配结果漏了一个env_key的设置折腾了半小时。后来学乖了直接把配置放 GitHub 私有仓库里一条命令拉下来完事。以上是我从 install 到上手的完整路径。实际用下来最让我惊喜的部分不是哪一次对话写对了代码而是本地模型 Codex这套组合在断网环境下也能全程无感工作。最后再分享一个小技巧如果你试过之后觉得本地模型响应太慢别急着加钱上更好的显卡先试试在 config.toml 里降低上下文窗口长度、换更小的量化格式很多时候速度和体验的提升比你想象的明显。希望这篇能帮你少走我走过的弯路。
返回列表