最近后台收到一大堆关于Codex的私信:怎么安装、怎么登录、为什么一直报错、能不能接DeepSeek、Windows是不是装不上……能看出来很多人是真的想学,但卡在了第一步。我自己从Codex还在alpha阶段就开始折腾,一路踩坑踩到怀疑人生,现在基本每天都会在终端里用它处理开发任务。这篇教程我干脆按零基础的路径来写:先讲清楚Codex是什么、能干什么,再一步步把环境装好、登录好、配置好,接着跑通一个真实任务,最后把接入DeepSeek的方法和高频报错的排查方案完整给出来。没基础也完全能跟上,全程不用理解太深的理论,照着复制命令就行。
1. 认识Codex:它到底能帮你干什么
1.1 从一个例子看Codex的工作方式
先说明白:Codex不是一个聊天网站,也不是一个非要装在编辑器里的插件(虽然它确实有配套插件)。它是OpenAI开源的一个终端命令行编程助手,官方叫Codex CLI,底层调用GPT系列模型,靠自然语言指令驱动它干活。
举个最直观的例子。你在项目目录下输入这么一句:
codex exec "统计一下这个项目里所有Python文件总共有多少行"Codex会先拆解需求,然后自己去找文件、执行shell命令、统计结果、整理输出。它不是“你问一句它答一句”,而是真的会动手:读文件、改代码、跑命令、看报错,再决定下一步干什么。这种感觉更像带了一个实习生,你交代任务,它执行,再把结果反馈给你,哪里有问题还会尝试自己修。
1.2 Codex能干的四类典型任务
用了一段时间之后,我把Codex的实用场景归纳成四类,新手先把这几类搞清楚,后面就不迷茫。
- 代码库问答:让Codex读整个项目,回答“这个模块是干嘛的”“登录逻辑在哪里”“为什么这里报空指针”这类问题。它像个24小时在线的代码陪读,比你自己翻文件快得多。
- 自动改代码:直接下修改指令,比如“把支付接口的超时时间从30秒改成60秒,并补上对应的单元测试”。它会自己定位相关文件、改动代码、跑测试确认结果。这类活占我日常使用的一半以上。
- 执行终端命令:批量重命名文件、查日志、跑脚本、统计数据,只要是终端里能做的操作,都能丢给它。尤其适合那些你懒得手敲的长命令。
- 写文档和整理杂活:生成README、整理变更记录、把一段报错翻译成人话、把聊天记录提炼成会议纪要,这些琐事它处理得很稳。
1.3 它和Cursor、Copilot这类工具的区别
很多朋友问:我都在用Cursor了,为什么还要学Codex?我的看法是,它们不是替代关系。Cursor和Copilot的核心体验是在编辑器里补全代码、对话修改,而Codex的主场是终端和命令行,强调的是“Agent式自主执行”。
Codex有三个其他工具不好替代的优势:一是轻,一个CLI工具,SSH到服务器上也能用,不用开图形界面;二是透明,每一步做了什么都在终端里实时显示,你可以随时叫停;三是可配置模型来源,官方通过model_provider机制支持接入不同的兼容服务,这就引出了后面要讲的DeepSeek玩法。如果你是命令行重度用户,或者经常需要远程操作服务器,Codex会顺手得多;如果你只想要IDE里的代码提示,继续用Cursor和Copilot完全没问题。
2. 零基础安装全流程:从Node.js到Codex
2.1 先说系统环境
安装之前先确认你用的是哪套系统。Codex官方对macOS和Linux的支持最顺滑,Windows用户我不建议直接在PowerShell里硬装——虽然新版已经能跑,但依赖环境很容易缺这缺那,后面会专门说Windows怎么处理。
建议的路线是这样:macOS直接用自带终端;Linux服务器或桌面直接用终端;Windows装一个WSL 2再装Ubuntu,在Ubuntu环境里操作,体验和Linux完全一致。
先跑两个命令确认基础情况:
uname -a node -v如果node命令报不存在,看下面的安装步骤。
2.2 安装Node.js与npm
Codex是用npm分发的全局工具,所以Node.js和npm是前置条件。版本上建议Node.js 18以上,我目前用的是20的LTS版本,用起来一直很省心。
macOS用户装了Homebrew的话一行搞定:
brew install nodeLinux用户按系统来。Ubuntu/Debian可以用apt安装,但系统源里的Node版本经常偏老,我更推荐用nvm来装,版本随时能切:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash nvm install 20 nvm use 20装完验证一下:
node -v npm -v能打印出版本号,这一步就算过了。
2.3 安装Codex本体
环境就绪后,安装Codex就是一条命令的事:
npm install -g @openai/codex如果npm拉包很慢,可以把registry临时切到国内的npmmirror镜像源,装完再切回来。这不是什么特殊操作,就是普通的npm镜像配置:
npm config set registry https://registry.npmmirror.com npm install -g @openai/codex除了npm安装,官方在GitHub Releases页面也提供预编译的安装包,下载对应系统的压缩包,解压后把codex二进制放到PATH路径里就行。日常建议用npm方式,升级方便;如果你的网络环境不适合走npm,再考虑下载安装包。以后升级只需要:
npm update -g @openai/codex2.4 验证安装是否成功
装完第一步先看版本号:
codex --version能看到版本号就说明装上了。接着建议跑一下:
codex --help这里会列出所有子命令和参数,不用全看懂,先有个印象,后面讲到哪个就回来看哪个。
这里有一个新手最容易踩的坑:终端提示command not found。原因通常是npm的全局bin目录不在PATH里。用npm prefix -g查看目录位置,把这个目录加到~/.zshrc或~/.bashrc的PATH里,重新打开终端就好了。
2.5 Windows用户的“设置未完成”问题
现在专门说Windows。很多人搜到“codex windows设置未完成”这个报错,多半是在Windows原生环境里安装时,Codex依赖的一些Unix工具和权限环境没有就绪。我的建议很直接:别在原生Windows里较劲,直接上WSL 2。
步骤不复杂。先以管理员身份打开PowerShell,执行:
wsl --install重启后安装Ubuntu发行版,打开Ubuntu终端,然后在里面按2.2和2.3的步骤装Node.js和Codex。之后把Windows Terminal切换到WSL会话,就能像在Linux里一样使用Codex了。如果你平时用VS Code,再装一个Remote - WSL插件,直接打开WSL里的项目文件夹,终端自动就是WSL环境,体验很顺。
这个过程中唯一要留意的是:WSL里执行codex login时,浏览器授权会用到本地回调端口,如果杀毒软件拦截了要放行。
3. 登录与配置:让Codex认识你的账号
3.1 用ChatGPT账号登录
安装只是第一步,登录才是真正能用的开始。如果你用ChatGPT账号授权,运行:
codex login它会尝试拉起浏览器,进入授权页面,同意之后凭证会自动写到~/.codex/auth.json。这个过程完成后,Codex就拥有你账号对应的模型调用权限了。
这里有个关键前提:Codex所在的环境必须能正常访问OpenAI的服务页面。如果你当前网络访问不了,登录这关就会卡住。遇到这种情况,先把网络连通性问题处理掉再继续,注意不要去手动改auth.json,那个文件有格式校验,改坏了反而更难排查。
登录成功的判断标准很直接,随便让Codex说句话:
codex exec "用一句话介绍你自己"它能正常回复,就说明登录和接口调用全部通了。
3.2 用API Key登录
如果你不想绑定ChatGPT账号,或者想走独立计费的API方式,可以用API Key登录:
codex login --api-key按提示粘贴你的key就行。也可以用环境变量的方式,在shell配置里加一行:
export OPENAI_API_KEY=sk-你的key两种方式等价,看个人习惯。我推荐环境变量方式,因为key不落在Codex自己的凭证文件里,服务器部署时更灵活,多项目切换不至于互相污染。
3.3 看懂config.toml:Codex的“大脑配置”
Codex的配置文件在~/.codex/config.toml,这是Codex的“大脑配置”。零基础朋友第一次打开它可能会懵,但核心键没几个,我贴一个带注释的常用骨架:
model = "gpt-5" model_provider = "openai" [model_providers.openai] name = "OpenAI" base_url = "https://api.openai.com/v1" env_key = "OPENAI_API_KEY" wire_api = "responses"这个文件里,model决定用哪个模型,model_provider决定路由到哪个服务方。下面的[model_providers.xxx]区域就是在自定义服务方,后面接DeepSeek就是在这个地方动手。除了这两个核心键,还有organization_id用来指定组织,sandbox_mode设置默认沙箱级别,approval_policy控制审批策略。新手先保持最小可用,别一股脑堆配置,改错了后面会讲怎么排查。
3.4 登录不上与“无法加载组织设置”怎么排查
登录环节的问题集中在两类。
第一类是登录不上,浏览器打不开,或者授权完没反应。最常见的原因有三个:浏览器没被正确唤起、授权页网络不通、本机时间不同步导致OAuth校验失败。排查建议:先检查系统时间是否准确,再用浏览器手工打开授权地址试试,最后看命令行输出的错误码,去官方仓库或社区搜索。
第二类是登录完成了,但使用时报“无法加载组织设置”或类似提示。这种一般是获取组织信息的接口调用失败,原因要么是凭证过期,要么是网络请求没发出去,要么是环境变量里配了一个不存在的组织ID。处理顺序建议:先重新登录一次刷新凭证;再检查有没有设置OPENAI_ORGANIZATION,临时清掉;最后确认网络能正常访问服务。如果还是不行,在配置里显式指定organization_id再试。
4. 核心操作:exec、chat与沙箱机制
4.1 codex exec:一次性任务就靠它
Codex最常用的子命令是exec,含义是“执行”。用法就是一句话加一个任务描述:
codex exec "找出当前目录下最大的三个文件并打印它们的路径和大小"Codex收到任务后会先规划,然后一步步读取目录、执行命令、收集结果。这个过程中你可以清楚看到它准备跑什么命令,默认情况下敏感操作会等你确认。
如果你确定任务安全,想让它一口气干完,加一个参数:
codex exec --full-auto "把src目录里所有console.log都删除"full-auto的意思是自动批准它发起的操作,不用每次点确认。但要提醒一句:full-auto不等于无限制,它仍然受沙箱约束,默认只能改当前工作区内的内容,读不了你系统里的其他隐私文件。
有人问有没有汉化版,其实CLI界面就是英文的,但命令和选项就那么几十个,照着教程用几次就熟了,真不需要汉化。
4.2 codex chat:交互式连续对话
难度更高一点的任务,推荐用chat模式。运行:
codex chat你会进入一个交互式对话界面,可以连续追问。比如先让它解释一段代码,再接着让它“帮我把这个函数拆成两个”,它会在同一个上下文里回你,并且展示每次操作的状态。这种模式很适合“先探索后修改”的工作流,我调试复杂问题基本都用chat。
如果你只是想快速验证一个问题,直接输入codex回车,也能进入类似的交互界面,效果差不多,看个人习惯。
4.3 沙箱机制:Codex的安全护栏
沙箱是Codex安全设计的核心,零基础阶段必须搞懂。它的本质是给Codex“能干什么”划边界,默认有三种级别:
- read-only:只能读文件,不能写任何文件,也不能执行可能产生副作用的命令。适合让Codex解释代码、分析项目。
- workspace-write:可以读写当前工作区内的文件,但触及工作区之外的目录会被拦住。这是默认级别,日常开发最常用。
- dangerous:不受限制,可以读写任意路径、执行任意命令。这是最后一个选项,真要用就自己承担后果。
跑任务时用--sandbox指定级别:
codex exec --sandbox read-only "分析一下这个项目的模块结构"我见过不少新手一上来就开dangerous,然后Codex稀里糊涂删了一堆文件,心态直接崩溃。原则很简单:默认用workspace-write,只有你自己完全清楚风险时才用dangerous。
4.4 常用参数速查表
我把日常最常用的参数整理成一张表,新手存下来对照着用就行。
| 参数 | 作用 | 示例 |
|---|---|---|
| --full-auto | 自动批准操作,不用逐个确认 | codex exec --full-auto "修复构建错误" |
| --sandbox | 指定沙箱级别 | codex exec --sandbox read-only "读一下README" |
| --model | 指定模型名 | codex exec --model deepseek-chat "写一个脚本" |
| --model-provider | 指定模型服务方 | codex exec --model-provider deepseek "..." |
| -C | 切换到指定目录执行 | codex exec -C /path/to/project "..." |
| --json | 以JSON格式输出结果 | codex exec --json "..." |
| --continue | 延续之前会话的上下文 | codex exec --continue "继续刚才的任务" |
用熟了会发现,多数时候只需要记住exec、--full-auto和--sandbox这三个,其他用到再查就行。
5. 进阶玩法:把Codex接入DeepSeek
5.1 为什么要接第三方模型
OpenAI账号和API Key不是每个人都有,也不是谁都方便开通支付。这时候“给Codex换一个模型来源”就成了刚需。Codex本身支持多模型服务商,只要服务商提供OpenAI兼容接口,就能接进来。
DeepSeek是目前社区里最热的选择:它提供兼容OpenAI格式的API,模型调用费用低,中文环境下生成代码的口碑很好。所以“Codex接入DeepSeek”这个玩法,本质就是给Codex换了一个更便宜、更方便的“大脑”。
5.2 先理解model_provider与wire_api
接之前要理解两个概念。model_provider是Codex里对“模型服务方”的抽象,一个provider由几个字段描述:name是显示名,base_url是接口地址,env_key指定从哪个环境变量读API Key,wire_api是接口协议类型。
第二个概念wire_api,它有两个值:responses和chat。OpenAI自己最新的接口走responses协议,而绝大多数兼容服务(包括DeepSeek)走的是chat/completions协议。接DeepSeek时,wire_api一定要设成chat,这是最容易翻车的地方。
5.3 一份可以直接抄的DeepSeek配置
先在DeepSeek开放平台注册并创建一个API Key,记下那串sk开头的key。然后打开~/.codex/config.toml,在文件里加一个provider,同时把默认模型指向它:
model = "deepseek-chat" model_provider = "deepseek" [model_providers.deepseek] name = "DeepSeek" base_url = "https://api.deepseek.com/v1" env_key = "DEEPSEEK_API_KEY" wire_api = "chat"然后在shell配置里导出DeepSeek Key:
export DEEPSEEK_API_KEY=sk-你的DeepSeek密钥保存配置后验证一下:
codex exec --model-provider deepseek --model deepseek-chat "写一个Python函数计算斐波那契数列"能正常输出代码,就说明接入成功了。之后默认配置里model已经是deepseek-chat,如果不指定provider,Codex就会优先用DeepSeek干活。OpenAI的provider还在配置里保留着,想切回去就改model_provider,或者用命令行参数临时覆盖。
5.4 模型选择、费用对比与实操建议
DeepSeek主要提供两个模型:deepseek-chat适合日常对话和写代码,速度快、成本低;deepseek-reasoner带深度推理,适合难题拆解、算法设计,速度慢一点,价格也更高。我的日常习惯是:默认用deepseek-chat,遇到复杂逻辑才临时换reasoner。
费用方面最直观:Codex默认用官网模型是按账号或API独立计费,DeepSeek的token价格明显更低,日常写脚本、改代码这种小任务,单次花费几乎可以忽略。每个人用量不同,我的建议是先小额充值,跑一周统计下每天消耗多少token,心里有数之后再定长期方案。
另一个实操建议:把DeepSeek的base_url和Key统一放在环境变量里管理,配置文件里只写名字和env_key。这样换环境部署时不用改toml,只改环境变量就行。
5.5 遇到“模型不支持”的报错别慌
接第三方模型时常见一个报错,大意是“the 'gpt-5.6-sol' model is not supported when using codex with a ...”,翻译成人话就是:你让Codex用的模型名,在当前的模型服务方里根本不存在。
原因往往是配置里的model抄错了,或者网上看到的配置里写了个臆造的模型名。解决思路就三步:第一,确认provider的base_url对应的服务商实际提供哪些模型名;第二,把配置或命令行里的--model改成真实存在的模型名;第三,注意wire_api要和服务商支持的接口匹配。所有报错信息里,模型名是最值得逐字检查的,大小写和连字符都不能错。
6. 实战演示:用Codex从零完成一个小工具
6.1 一个典型的“交给Codex”任务
理论讲再多,不如跑一个真实任务。假设你是一个刚装好Codex、接好DeepSeek的零基础用户,我们要让它在当前目录下完成这样一个需求:写一个Python脚本,把当前目录下所有的.png图片按时间顺序批量重命名为photo_0001.png、photo_0002.png这样的格式,同时生成一个包含新旧文件名对应关系的JSON清单。
这个需求很典型,它涉及文件扫描、排序、重命名、写文件、生成文档,正好能体现Codex的Agent能力。
6.2 提示词怎么写更靠谱
很多人让Codex干活不理想,问题大多出在提示词上。我给一个适用于所有Codex场景的通用写法:背景加目标加约束。背景告诉它在哪里干活,目标说清楚最终要什么,约束说明哪些事不能做。
上面的需求可以这样描述:
codex exec "在当前目录下写一个Python脚本:扫描当前目录所有.png文件,按修改时间排序后,重命名为photo_0001.png、photo_0002.png这样的连续编号,同时生成rename_map.json,里面记录每个文件旧名字到新名字的对应关系。注意不要改动其他类型的文件,脚本要能在Python 3环境下直接运行。"如果你想让Codex更谨慎,可以在最后加一句“先给我脚本内容,不要直接执行重命名”,等你看过脚本再让它跑。
6.3 分步观察与结果确认
执行上面的命令后,你会看到Codex先列出计划,然后创建脚本文件、检查文件列表、运行脚本、打印结果。重点关注两个时刻:写文件前有没有展示脚本内容,运行前有没有让你确认。如果之前加了“先不要执行”,那就先自己把脚本打开看一遍,确认逻辑没问题后,再告诉它“现在运行脚本”。
运行完检查三样东西:目录里是不是出现了photo开头的文件;rename_map.json是不是只包含png条目;非png文件有没有被动过。只要这三样都对,任务就算完成。
这整个流程走下来你会发现,Codex不是简单聊天,而是真的在替你操作文件系统,所以执行前的确认是对自己负责。复杂任务建议拆成两到三步,让Codex做完一步再下一步,比一口气给一大段需求更容易得到靠谱结果。
7. 常见问题速查表与避坑心得
7.1 网络请求失败的排查思路
Codex使用中最高频的报错就是请求失败类。根据社区反馈,有一类报错开头类似“cc switch local ... failed while handling codex endpoint /responses”,很多人看到一大段英文就慌了。从我的实际排查经验看,这类错误的根因基本都在网络链路:本地环境访问模型服务商接口失败,请求根本没发出去。
排查顺序总结为四步:第一步,先用curl单独测试接口连通性,比如curl https://api.deepseek.com/v1/models,看能不能通;第二步,确认当前网络是否有特别限制,比如公司网络、公共WiFi的防火墙策略;第三步,重启Codex进程,有时候是长连接异常;第四步,升级到最新版Codex,这类网络修复代码更新频繁。注意这四步都是在检查网络本身,不要想当然去改什么“绕过访问”的配置,那些操作既不稳定也没有必要。
7.2 配置文件报错unrecognized configuration setting
如果启动或执行命令时看到“codex is ignoring 1 unrecognized configuration setting. check for typos or ...”,意思是config.toml里有一个不认识的配置项。常见两个原因:你抄了网上老版本的配置,里面某个键在新版本被改名或删除了;或者你手滑打错了键名。
处理方式:打开config.toml,把不是核心的键前面加#注释掉,再启动Codex,逐条排除。看到这个提示时Codex其实还在运行,只是忽略了你配的这项,表现就是某项功能不生效。排查到问题键后,要么去掉,要么换成新版本支持的写法。
7.3 Windows环境设置未完成的最终方案
这个问题我在2.5节详细说过,这里补充一个心态建议:不要在原生Windows环境里反复重试安装,把精力放到WSL 2上,一次配好长久省心。配好WSL后,Codex所有操作都和Linux一致,教程里任何命令都能直接跑。
7.4 MCP扩展与插件生态
Codex已经支持MCP,也就是模型上下文协议。看到“插件”相关问题的朋友,其实很多问的就是MCP服务器。简单理解,MCP是给Codex扩展“外部工具”的标准接口,比如让它能操作数据库、访问浏览器、读本地文档,都可以通过配置MCP Server实现。
在config.toml里增加一个[某个MCP服务器名]的配置段,指定command和args,Codex启动时就会自动加载它。新手阶段不用急着配MCP,先把核心玩法跑通,等需要外接工具时再回来研究,官方仓库的文档里有完整的server列表和示例。
另外,Codex官方在VS Code里也发布了同名扩展插件,装好后能在编辑器侧边栏里用同一套Codex能力,和CLI共享配置。喜欢图形界面的朋友可以先从插件入手,配置文件、登录凭证都是同一套,不用重复配置。
最后再分享一点我自己的体会。Codex这种工具,用熟了以后最大的价值不是替你写代码,而是把你从执行细节里解放出来:你不用再手敲一长串shell命令去做文件批处理,不用为了找一个配置项翻遍整个项目,只要把任务说清楚,剩下的执行交给它,你只需要审查结果。
我踩过最大的坑,是早期太相信它的自动操作,放着默认的workspace-write不用,非要去开dangerous模式,结果它把我临时目录里没提交的文件清理了。从那以后我的原则就两条:默认沙箱级别不动,执行敏感操作前一定让它先给我看命令。还有一个小技巧:让Codex先解释再动手,比直接让它闷头改代码更容易定位问题。这套组合我用了很久,踩过坑之后基本没再翻车,希望对你也管用。