ARTICLE DETAIL

资讯详情

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

Codex 本地部署实战指南:接入 DeepSeek 与 Ollama 的完整流程

Codex 本地部署实战指南:接入 DeepSeek 与 Ollama 的完整流程 把 Codex 装到本地这件事听起来不过是“下载一个安装包”的功夫但真正动过手的人都知道从下载完成到让它老老实实在你的项目里干活中间隔着 Node 环境、模型供应商配置、登录认证、权限控制还有一长串五花八门的报错。我最近把 Codex 从零到一部署到了自己的开发机上并且成功接入了 DeepSeek 和本地 Ollama 模型跑通了几个真实任务踩了不少网上资料语焉不详的坑。这篇文章就是我个人完整过程的复盘不绕弯子适合刚接触 Codex 本地部署、想把它当成日常 AI 编程助手的开发者。哪怕你之前完全没用过命令行 AI 工具照着下面的步骤也能搭起来。1. 先别急着装Codex 本地部署到底在部署什么1.1 你装的不是“大模型”是命令行助手很多人第一次听到“Codex 本地部署”第一反应是要把一个大语言模型下载到自己的电脑上如果是这个预期那要先纠正一下——Codex 发布时包含两种形态一种是网页版和桌面应用另一种是开源、可本地安装的命令行工具官方叫 Codex CLI。我们常说的“本地部署”指的是在你自己电脑上安装并运行这个 CLI让它能读取你本地项目里的文件、调用大模型的能力、自动修改代码并执行命令。模型本体并不在你电脑上。你通过 Codex CLI 发出的请求默认会发到 OpenAI 的接口由云端模型推理后再把结果返回给本地进程。这套架构的好处很明显代码和文件上下文在本地不用担心把整个项目传到网页端而计算量大的推理部分仍然交给云端个人电脑也能跑得很流畅。搞清楚这一点后面所有配置就都说得通了你要准备的不是显卡和显存而是 Node.js 运行环境、一个 API Key以及一台能联网的机器。1.2 为什么“本地部署”仍然值得做有朋友问我网页版 Codex 不也能用吗为什么非要折腾本地部署我的回答是使用场景完全不同。网页版适合临时问问题、写点独立的小脚本但当你面对的是一个多目录、有依赖关系、有测试用例的工程时网页版很难帮上忙。Codex CLI 的优势在于它直接运行在你的项目目录里可以看到完整的文件树能自己打开文件、分析报错、改动代码然后跑测试验证。这种“在项目内部工作”的能力才是 AI 编程助手的核心价值也是我折腾本地部署的根本原因。另外一个很实际的理由是隐私和可控性。代码不出本机目录你决定哪些文件允许它读、允许它改权限边界清晰。配合版本管理它改坏了你随时可以回滚风险完全可控。2. 环境准备Node.js、Git 和 API Key 这三个坑2.1 Node.js 版本决定了一半的安装成败Codex CLI 是用 Node.js 写的所以电脑上必须先有 Node 环境。官方要求 Node 18 以上但我实际安装时发现低版本的 Node 在运行某些依赖编译时会出幺蛾子。我自己的机器上是 Node 20 LTS整个过程没有遇到兼容问题另一个同事用 Node 22 也很稳。如果你电脑里同时有好几个 Node 版本建议用 nvm 切换到一个长期支持版本再装避免 npm 全局目录权限的各种破事。检查环境的命令很简单node --version npm --version两个命令都有输出且版本号不低于 18就可以进入下一步。如果你从来没装过 Node直接去官网下载 LTS 版本安装包一路默认选项装完就行。2.2 Git 和终端Windows 用户最容易翻车的地方Codex CLI 在操作文件时依赖 Git 来做变更追踪和回滚所以 Git 也是必须的。Windows 用户我强烈建议用 Git Bash 或者 Windows Terminal 搭配 PowerShell 来操作不要用老的 cmd否则后面很多命令的路径解析行为不一致会让人误以为是 Codex 的问题。macOS 和 Linux 用户就好办得多系统自带或者包管理器装一下就行。这步没什么技术含量但确实是我见过“安装失败”案例里占比最高的一类原因——环境里根本没有 Git或者 Git 版本太老。2.3 API Key 到底怎么准备官方与第三方两条路Codex CLI 支持多种模型供应商不一定非要 OpenAI 官方的 Key。这正是它作为开源工具最实用的地方。你可以准备三种类型的密钥按需选择OpenAI 官方 API Key或者 ChatGPT 登录授权适合直接使用官方模型。DeepSeek 等提供 OpenAI 兼容接口的第三方服务 Key适合国内网络环境下稳定访问。Ollama 本地模型的访问地址适合完全离线、或者对数据隐私要求极高的场景。我建议第一次安装的人先用 DeepSeek 或官方 Key 把流程跑通之后再尝试本地模型一次只引入一个变量排查问题会容易得多。后面第 4 章我会把三种模式的具体配置都写出来。3. 下载安装CLI 的两种安装方式与验证3.1 用 npm 全局安装最省事的一条路环境准备好之后安装本身非常简单就是一条命令npm install -g openai/codex这里加-g表示全局安装。装完之后Codex 的可执行文件会出现在 PATH 里意味着你在任何目录下都能直接敲codex命令。这一步耗时取决于网络状况几十秒到几分钟不等。如果 npm 下载速度不理想可以考虑配置 npm 镜像源这是 Node 生态的常规操作和 Codex 本身无关。安装完成后我的建议是立刻开一个新终端确认命令可用codex --version能看到版本号就说明安装成功了。如果没有多半是 npm 全局 bin 目录没有加进 PATHWindows 用户可以检查一下%APPDATA%\npm这个路径是否在系统环境变量里。3.2 用原生安装器不想碰 npm 时的备选如果你对 Node 生态非常陌生或者 npm 在你的机器上有历史遗留问题Codex 官方也提供了原生安装包和安装脚本下载对应平台的二进制文件解压后同样能得到codex可执行文件。这种方式的好处是独立于 Node 环境缺点是后续升级不如 npm 方便得手动重新下载。我个人的建议是能用 npm 就用 npm。因为 Codex CLI 更新频率不低npm 一行命令就能升级原生包每次都要重新去下载长期使用差别挺大。3.3 安装之后先别急着用初始化配置安装成功只是第一步。第一次运行codex时它会自动创建一个配置文件路径在~/.codex/config.toml。这个文件是后面所有模型接入、权限控制的核心我后面会用一整章讲它。你可以先跑一下codex --help看看有哪些子命令对整体能力有个印象再进入登录配置阶段。4. 登录认证与模型接入官方账号、DeepSeek、Ollama 三种模式4.1 官方登录浏览器授权一条龙用官方模型最简单在终端执行codex login命令会拉起浏览器你登录 OpenAI 账号并授权即可。CLI 会拿到一个访问令牌存在本地之后调用接口时自动携带。这个过程非常顺滑唯一要注意的是账号需要开通 API 权限否则后续请求会报 401。登录完成之后Codex 默认就会使用 OpenAI 的模型了。但这里有个隐藏细节ChatGPT 账号授权和 API Key 授权在计费、限流策略上不完全相同如果你只是临时体验用登录授权没问题如果打算高频使用建议单独创建一个 API Key 并配置计费上限避免意外产生高额费用。4.2 接入 DeepSeek修改 config.toml 实现“模型搬家”官方模型确实强但考虑到接口稳定性和资费很多国内开发者会选择把 Codex 接到 DeepSeek 上。这件事实现起来远比想象中简单因为 DeepSeek 提供了 OpenAI 兼容接口Codex CLI 又允许自定义模型供应商两边一拍即合。打开~/.codex/config.toml写入下面的内容model deepseek-chat model_provider deepseek [model_providers.deepseek] name DeepSeek base_url https://api.deepseek.com/v1 env_key DEEPSEEK_API_KEY然后设置环境变量export DEEPSEEK_API_KEY你的密钥这里有几个字段必须解释清楚不然你会踩坑model字段决定用哪个模型名。DeepSeek 的deepseek-chat对应通用对话模型如果要用更强的推理模型可以改deepseek-reasoner。base_url必须写成兼容 OpenAI 格式的路径结尾的/v1不能省略。很多配置失败的人就是漏了这个路径后缀。env_key指定从哪个环境变量读取密钥Codex CLI 不会在配置文件里直接存密钥这是安全设计也是大家容易忽略的一点。配置完成后运行codex就已经是在用 DeepSeek 的能力了界面和交互完全一样。我自己实测下来响应速度很理想日常重构、写测试、修 bug 都够用。4.3 接 Ollama 本地模型完全离线也能跑如果你的需求是数据不出本地那就用 Ollama 跑一个开源模型然后让 Codex 指向它。前提是你先用 Ollama 拉取了一个支持工具调用的模型比如ollama pull qwen2.5-coder:14b ollama serve然后在config.toml里新增一个 local 供应商[model_providers.local] name Local Ollama base_url http://localhost:11434/v1 env_key OLLAMA_API_KEYOllama 的 OpenAI 兼容接口不需要真实密钥随便填一个环境变量占位即可。老实说14B 模型的代码能力跟云端大模型还有差距但它胜在完全免费、完全离线、隐私无忧。我一般把它用来做一些简单脚本的生成和格式整理涉及复杂逻辑还是切回 DeepSeek 或官方模型。4.4 模型供应商切换一个配置文件随时换大脑配置好多个供应商之后切换模型不需要重新安装任何东西只需要修改config.toml里的model和model_provider两行或者通过环境变量覆盖。我习惯把常用模型都配好需要时随时切换。这个设计是 Codex CLI 最让我喜欢的一点——底层大模型像插拔式的组件今天用这个、明天换那个完全不绑架你的选择。5. 第一次实战让 Codex 修掉一个真实的 Bug5.1 用 AGENTS.md 给 Codex 写“项目说明书”工具装好、模型配好接下来才是最有意思的部分让 Codex 在一个真实项目里干活。直接开干之前我强烈建议你为项目写一个AGENTS.md文件放在项目根目录。Codex CLI 会自动读取这个文件作为项目说明里面的内容会大幅影响它理解项目的准确度。我自己的模板大概是这样的# 项目说明 这是一个 Python 3.11 的 FastAPI 服务采用若干第三方库管理依赖。 - 构建命令uv sync uv run fastapi dev - 测试命令uv run pytest tests/ - 代码风格遵循 PEP 8类型注解必须完整 - 禁止改动migrations/ 目录下的数据库迁移文件 ## 常见任务 修改接口逻辑后必须同步更新 tests/ 下对应的测试用例。写这个文件时把你希望 AI 遵守的规则、常用命令、禁区都写清楚。实测效果差异非常大没写之前Codex 可能会用错误的方式安装依赖写了之后它会直接用项目既定的命令来执行行为像“一个熟悉这个项目的同事”。5.2 拿一个时区问题跑完整闭环我用一个小 demo 来演示完整工作流。项目里有一个函数把 UTC 时间转成北京时间但代码写死了8小时没有考虑夏令时和时区数据库。我在项目目录执行codex src/utils.py 里的时间转换函数处理时区有问题帮忙修一下并补充测试Codex 会进入一个交互式会话它会先扫描目录结构、读懂相关文件然后给出修改计划。这个过程你能看到它输出了哪些操作意图读取哪个文件、编辑哪个函数、用的是什么库。确认计划后它会直接改代码然后运行测试验证。整个过程的体验相当接近“有一个工程师坐在你旁边干活”。因为模型用的是 DeepSeek整个过程响应流畅没有网络卡顿。改完之后 code review 它的 diff逻辑是对的它用zoneinfo.ZoneInfo(Asia/Shanghai)替换了硬编码偏移测试也覆盖了。最后我把它改动同步到 Git任务闭环。5.3 权限控制别让它乱来默认情况下Codex 会请求执行命令的权限比如安装依赖、跑测试、git 操作等。你可以在配置里约束这些能力[permissions] allow [pytest, git status, git diff, uv sync, uv run]只放行你希望它执行的命令其余一律逐次询问。还有一个危险操作开关是--dangerously-bypass-approvals-and-sandbox俗称 YOLO 模式中文社区管它叫“全自动模式”。这个模式会让 Codex 不用征求同意直接执行所有操作。我的建议是除非你在一个完全隔离的容器或虚拟机里否则永远不要对一个正式项目开这个模式。我测试时开过一次它顺手执行了清理缓存命令虽然没造成损失但那种“失去控制感”相当难受。5.4 工作目录与多项目隔离Codex CLI 默认只在当前目录下活动但你可以在配置里指定它读取的额外目录也可以显式告知它忽略某个目录。比如[workspace] ignore [node_modules, .git, dist]忽略目录一定要配置好不然它会花大量 token 去扫描依赖目录响应速度明显变慢还容易在无关文件里“自作主张”。6. 高频报错排查登录、模型名、代理转发这些绕不开的问题6.1 “codex 登录不上”和“无法加载组织设置”的常见原因这两个问题在社区里出现频率很高我逐个拆解。先说登录不上。绝大多数情况是令牌刷新失败。Codex CLI 的登录态存放在本地有过期时间过期后需要重新执行codex login。如果重新登录还是在转圈检查两件事一是本机系统时间是否准确token 校验对时间偏差非常敏感二是网络能否正常访问 OpenAI 的认证域名这一步属于基础网络问题和服务商无关排查思路和解决任何“某个网站打不开”的问题一致。如果确认是网络可达性导致那就直接改用第三方兼容模型没必要耗在这上面。再说“无法加载组织设置”。这个报错通常出现在使用 ChatGPT 账号登录、且账号属于某个组织工作区的情况下。Codex 启动时会尝试拉取组织配置如果组织侧的接口响应超时或数据格式异常就会失败。多数时候不影响核心功能可以先忽略等网络稳定后自动恢复。我遇到过一次后来发现是账号里同时挂了多个组织Codex 拉取组织列表时出现了兼容问题新开终端重试后解决。6.2 “model is not supported”你在配置里写了一个不存在的模型名这个报错我专门提一下因为它特别误导人。我最初在config.toml里把model字段写成了当时网上某篇文章提到的模型名结果 Codex 直接报了一个类似the xxx model is not supported when using codex的错误。后来才搞清楚Codex CLI 能用的模型不是看你的想象力而是看两件事一是你选的模型供应商是否真实提供该模型二是 Codex 的工具调用协议是否与该模型兼容。报错里那个模型名根本不存在于供应商的模型列表里自然无法使用。解决办法很简单去你配置的model_provider官网查一下当前可用的模型名填一个真实存在的即可。DeepSeek 就是deepseek-chatOpenAI 就是gpt-5系列里的具体型号不要道听途说填奇怪的名称。6.3 “cc switch local proxy failed while handling codex endpoint /responses”的排查思路这个报错看起来吓人其实问题出在请求链路上和 Codex 本身关系不大。Codex CLI 在向/responses接口发请求时会遵循终端里的代理环境变量。如果你配置了本地代理工具但那个工具的监听端口没在运行或者端口号写错请求就会被转发到一个“不存在的人”手里自然无法完成。排查路径按顺序走先检查环境变量里是否有HTTP_PROXY、HTTPS_PROXY、ALL_PROXY如果有临时清掉再跑一次看是否恢复。注意 macOS 默认终端不会继承系统代理如果你在图形界面工具里配了代理终端里未必生效这反而容易造成配置不一致。如果确认环境变量没问题再检查代理工具的监听端口是否真的活着用netstat或lsof看端口状态。最后检查config.toml里有没有多余的自定义base_url有些用户会在配置里误写一个本地转发地址导致请求被导到错误的地方。我最终是通过清掉终端里残留的代理环境变量解决的这个报错。之前那个代理进程早就退出了但环境变量一直留着Codex 每次请求都被发往一个不存在的本地端口白白超时。遇到这类问题我的习惯是先问自己请求从发出到到达模型服务中间经过了几跳每一跳是否稳定绝大多数连接问题都能用这个思路定位。6.4 关于接口稳定性的实在话Codex CLI 本身只是一个壳真正的服务能力取决于你接入的模型供应商。如果你在的网络环境访问 OpenAI 官方接口不稳定那并不代表 Codex 不好用只是你的网络路径决定了一切。我自己的选择是日常使用 DeepSeek理由很简单接口响应稳定、价格亲民、OpenAI 兼容格式让 Codex 完全无感切换。本地局域网内也可以用 Ollama做到完全离线开发。工具是死的接入方式可以灵活调整。7. 进阶使用把 Codex 沉淀成日常开发流程的一部分7.1 把它变成项目里的“结对工程师”Codex 最简单的用法是一次性问答但真正有价值的是把它接入工作流。我现在的做法是每个新需求先让 Codex 帮我列出改动涉及的文件清单再让它给出实现方案我确认后才让它动手写代码。遇到测试失败时直接把报错粘贴给 Codex让它分析原因并修复。这比“重新生成整个项目”要高效得多因为问题聚焦上下文小模型的输出质量也更高。我的一个实际体会是Codex 最擅长的是改代码和查问题而不是从零设计架构。让它在已有代码基础上做增量和修复效果远好于让它凭空写一个大模块。这和人类工程师的协作方式其实很像——在清晰的上下文里工作产出才可靠。7.2 用 Codex 写自动化脚本和运维批处理除了写业务代码我还经常让 Codex 处理一些零碎的自动化任务比如批量重命名文件、生成数据清洗脚本、写日志分析的 awk 命令、整理文档目录结构。这些事情谈不上多复杂但自己做费时间让 Codex 做往往几十秒就搞定了而且它还会顺手写点错误处理比我手工敲命令更稳妥。配合定时任务使用效果更好。我让它写过一个每周自动归档日志的脚本然后配置 cron 执行。整个过程从提出需求到脚本上线不超过十分钟。Codex 在这里的角色更像一个“会写代码的运维助手”而不只是编程助手。7.3 代码审查与学习辅助把 Codex 当代码审查工具也很好用。提交 PR 之前让它在 diff 上看一圈找找潜在的边界问题和风格问题能提前拦掉不少低级错误。我自己有时候也会在一个陌生项目里直接问它 “这个项目的核心数据流是什么”它能很快帮我梳理出模块关系比人肉读代码快得多。坦白说这种用法效果取决于项目注释和文档的完善程度。所以我前面才强调AGENTS.md的价值——你给 Codex 的上下文越清晰它反馈的质量就越高。这不只是一句口号而是我连续使用两周后最深刻的感受。7.4 关于配置文件的最后提醒config.toml是你控制 Codex 行为的总开关花点时间读懂它绝对值回票价。除了前面提到的模型供应商和权限控制还有temperature、max_tokens等参数可以调。我的建议是保持默认不要一开始就到处改参数跑熟之后再根据具体需求微调。另一件值得做的事是写一个.gitignore忽略掉 Codex 的本地状态目录防止登录态和审计日志被提交进仓库。一些使用习惯上的体会整套从零搭建下来我最想分享的经验有两条。第一条是不要在第一次配置时就追求“完美全家桶”。先把官方模型或 DeepSeek 跑通再逐步加 Ollama、调权限、写 AGENTS.md每一步都确认有效再进下一步。一次引入太多变量出了问题根本不知道是哪一步导致的。第二条是AI 编程助手是协作工具不是自动化替代品。Codex 能把我们从“写代码”的重复劳动里解放出来一部分但它写的每一行代码最终责任都在你自己身上。保持 review 的习惯保持对项目整体架构的把控它才能成为你的助力而不是埋雷的工具。如果看完这篇文章你也想搭一套自己的 Codex 环境建议按第 2 章的环境准备开始遇到报错回来看第 6 章。现在就去终端里试试吧第一句codex跑通的时候那种“我也有 AI 结对程序员了”的感觉还挺上头的。
返回列表