先说个场景。我在一个项目里同时维护前端仓库和后端服务,平时写代码最烦的就是来回切工具、记各种命令。后来把 Claude Code 和 Codex 同时装进工作流之后,事情变得简单很多——一个负责代码库内的深度重构和长上下文理解,另一个负责快速生成补丁和执行命令行任务。这篇就围绕这两个工具,从官方配置讲到如何使用第三方模型,把我实际踩过的坑和验证过的配置方式都写清楚。
1. Claude Code与Codex到底是什么
1.1 两个工具的定位差异
Claude Code 是 Anthropic 出品的终端编程助手,核心能力是在你的仓库目录里直接运行,读取项目结构、搜索代码、修改文件、执行测试,把“和AI对话”变成了“让AI直接动手改代码”。它最突出的点是对长上下文的处理,官方宣传的 1M token 上下文窗口在大仓库场景下优势很明显,你可以把整个核心模块丢给它做全局重构。
Codex 则是 OpenAI 开源的命令行编程工具,定位更偏向“极速执行”。它的工作方式是codex exec这种命令驱动模式,你给一句任务描述,它自动规划、写代码、跑测试,然后输出diff。它和 Claude Code 在体验上的最大区别是:Codex 更适合短平快的补丁生成和自动化任务,Claude Code 更适合需要持续多轮交互的复杂工程。
1.2 为什么值得同时掌握两个工具
两个工具都装,不是因为“小孩子才做选择”,而是它们在不同场景下各有优势。
我在实践中发现,Claude Code 的对话式开发体验特别适合架构调整类任务。比如“把这个模块里的所有回调改成async/await,同时更新所有调用点”,它会把整个关联链路都梳理清楚再做修改,很少出现遗漏。Codex 则适合高频率小任务,比如“给这个函数补单元测试”、“修复lint报错”、“将这段代码从jQuery迁移到原生API”,一条命令完事,不拖泥带水。
另外,这两个工具的配置机制有共通之处:都支持通过环境变量指定 API 端点,也都支持第三方模型接入。这意味着你完全可以只买一个官方订阅,或者统一使用第三方模型账号,把它俩的请求都指向同一个兼容网关。这一点对个人开发者特别实用,能节省不少开支。
2. 安装与官方配置
2.1 环境准备
两个工具目前都以 Node.js 生态为主,所以第一步是确认本机有可用的 Node.js 运行时。建议版本不低于 18.17,因为新版 CLI 依赖较新的原生模块,版本太老会出现安装后命令无法解析的诡异问题。
顺手把 npm 也更新到最新版,避免安装时走旧 registry 导致包不完整。在终端里执行:
node -v npm -v如果 npm 版本偏低,可以用npm install -g npm@latest升级。然后是下载渠道的问题,我建议从官方 registry 或官方发布的安装脚本安装,不要用来路不明的打包版本。命令行工具更新频率高,官方源能保证第一时间拿到修复版。
2.2 基于npm的安装流程
Claude Code 的安装相对简单,一条全局安装命令即可:
npm install -g @anthropic-ai/claude-code装完以后执行claude --version,能输出版本号就说明成功。如果碰到权限错误,在 Linux/macOS 上别急着用 sudo,优先检查 npm 的全局目录权限,用npm config get prefix看路径,然后调整目录归属。
Codex 同样走 npm:
npm install -g @openai/codex安装完成后运行codex --version验证。这里有个细节:Codex 的 CLI 和它的 VS Code 扩展是分开的,哪怕你不用终端版,只装扩展,扩展内部也会自动拉取 CLI 二进制,所以网络环境对安装过程有要求。
2.3 官方API凭证配置与验证
安装只是第一步,让工具能用起来需要配置凭证。Claude Code 官方推荐使用订阅登录方式:
claude login这个命令会打开浏览器,引导你完成 OAuth 授权。授权成功后,凭证会存在本地配置里,之后启动claude就能直接进入对话。如果你使用的是 Anthropic API 的密钥,也可以通过环境变量注入:
export ANTHROPIC_API_KEY="sk-ant-..."Codex 的官方登录则通过 ChatGPT 账号体系:
codex login登录后同样会在本地写入凭证。对团队用户来说,更常见的做法是使用 API Key,Codex 通过OPENAI_API_KEY环境变量读取:
export OPENAI_API_KEY="sk-..."验证凭证是否生效有个简单办法:Claude Code 里直接问它“当前模型的版本信息”,Codex 则跑一条最简单的任务:
codex exec "输出 hello"能正常返回就说明凭证链路是通的。我自己习惯把 API Key 放在~/.bashrc或~/.zshrc里,而不是每次手动 export,但注意不要让密钥进入 Git 仓库。
3. 接入第三方模型:原理与实操
3.1 为什么需要第三方模型
官方模型的体验确实好,但有一个现实问题:如果你日常只是改配置、写脚本、做简单 CRUD,官方订阅成本并不低。我碰到不少开发者都希望在保留 Claude Code 或 Codex 工作流的前提下,把模型切换到 DeepSeek、通义千问这类价格更低的第三方服务上。
这类工具在设计上确实留了扩展口。它们启动时会读取一组环境变量,其中一个关键变量是“基础地址(Base URL)”。CLI 会在基础地址后拼接具体的 API 路径,比如 Codex 默认请求{base_url}/responses,Claude Code 默认请求{base_url}/v1/messages。只要第三方服务提供了兼容的 HTTP 接口,把基础地址指过去,工具就能像调用官方模型一样调用第三方模型。
3.2 环境变量方式配置DeepSeek
以 DeepSeek 为例,它的 API 兼容 OpenAI 的调用格式,因此可以接入 Codex。实际配置时先获取 DeepSeek 平台的 API Key,然后在终端里设置环境变量:
export OPENAI_BASE_URL="https://api.deepseek.com" export OPENAI_API_KEY="sk-你的deepseek密钥"Codex 支持通过--model参数指定模型,DeepSeek 当前可用的对话模型是deepseek-chat:
codex exec --model deepseek-chat "给这个函数写单元测试"Claude Code 接入 DeepSeek 也类似,它读取的是 Anthropic 系列的环境变量:
export ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic" export ANTHROPIC_API_KEY="sk-你的deepseek密钥" export ANTHROPIC_MODEL="deepseek-chat"注意这里 DeepSeek 提供了/anthropic这个兼容路径,专门用于对接 Anthropic 客户端,很多第三方服务也有类似设计,配置前先看服务商的文档确认路径。
配置完成后进入claude,对话里输入/model查看当前模型名,确认是 deepseek-chat 就表示切换成功。
3.3 使用CC Switch管理多供应商配置
环境变量的方式有一个痛点:换模型时要反复修改 shell 配置,容易乱。如果你同时使用多个第三方模型,推荐用 CC Switch 这类配置管理工具。它本质是一个本地配置管理面板,把不同供应商的基础地址、密钥、模型名集中管理,启动 Claude Code 或 Codex 的时候由它统一注入环境变量,免去手动 export。
我在实际使用 CC Switch 时遇到过一条报错,信息里有“local proxy failed while handling codex endpoint /responses”的字样。这个“local proxy”指的是 CC Switch 自带的本地转发服务组件,每次启动 Codex 时它会先在本地起一个服务,再转发到目标供应商端点。
这个报错的排查路径很固定。先用lsof -i查看本地端口占用,如果 8080 或自定义端口被其他服务占了,转发服务起不来就会报这个错。解决办法是换端口或停掉冲突进程。其次检查供应商端点配置,如果你在 CC Switch 里填的基础地址多打了个/v1,而 Codex 本身又会拼/responses,拼接后路径变成/v1/responses,很多兼容服务不接受这种双重路径,也会触发该错误。正确做法是严格按供应商文档给的基础地址填写,不额外加路径。
3.4 模型选择与参数适配
接入第三方模型后,不能只改地址就完事,还要考虑模型能力和工具调用兼容性。
Claude Code 依赖模型具备 tool use(工具调用)能力,也就是模型需要能理解结构化的函数调用协议。目前主流的第三方模型大多支持 Anthropic 或 OpenAI 格式的 tool use,但支持质量差异大。我的体感是:简单任务没啥问题,复杂多步任务如果模型工具调用不稳定,容易出现“改了文件但忘了跑测试”这类半途而废的情况。遇到这种情况,把任务拆小一点,一次让 AI 只完成一个明确目标。
还有上下文窗口参数。Claude Code 默认按 1M token 处理上下文,但第三方模型未必支持那么长。如果你发送的内容超过模型上限,会直接报错或截断。配置时在/model命令里手动设置一个合理值,比如 64K 或 128K,别让 CLI 按超大上下文去分配。
/model 128kCodex 侧也有类似设置,第三方模型接入时建议先确认它支持的 max tokens,避免生成过程被硬中断。
4. 高频操作与工作流实战
4.1 日常对话与项目模式的入门命令
Claude Code 使用的最基本方式是在项目根目录运行:
claude进入交互式界面后,你可以把它当作一个“能改代码的同事”。举个例子,你说“帮我看看src/utils/format.js里为什么日期格式不对”,它会先读文件、再定位问题、给出修复建议并直接修改。如果你想让它只给建议不动文件,回复里带上“只解释不要改”之类的限制就行。
Codex 的日常用法更偏向执行单次任务:
codex exec "解释一下这个仓库的目录结构"我更常用的是它的--full-auto模式,这个模式下 Codex 会自主执行整个任务链条,不需要逐步确认:
codex exec --full-auto "将项目中的所有console.log替换为结构化logger调用"注意全面自动模式有风险,建议只在测试分支或你完全信任的目录里使用,否则它一条命令改几十个文件后,你要 review 的成本会很高。
4.2 会话恢复与上下文延续
Claude Code 和 Codex 都支持会话恢复,这是应对长任务的关键功能。Claude Code 里用:
claude --continue它会自动恢复最近的对话上下文,接着上次的思路继续处理。Codex 则通过--resume参数加上会话 ID 恢复:
codex exec --resume 你的会话ID "继续优化刚才的代码"不少用户第一次用时不知道这个功能,重新开启一个会话说“继续”,AI 一脸茫然。其实只要带上简历参数,上下文无缝衔接。这里我还建议养成随手记会话 ID 的习惯,Codex 每次任务结束会打印会话 ID,复制到一个本地笔记文件里,后续追踪问题会方便很多。
4.3 权限控制与操作授权配置
Claude Code 默认对文件修改有确认机制,但如果你觉得每次弹确认烦,可以调整权限策略。启动时用:
claude --permission-mode acceptEdits这会跳过单次编辑确认,但保留危险操作(比如执行 shell 命令)的确认。更细粒度的控制可以修改~/.claude/settings.json,比如在permissions.allow列表里加上允许的命令白名单,在deny列表里写上禁止项。
Codex 类似,通过--sandbox参数可以不让它执行危险系统命令,建议在第三方模型接入时开启沙箱模式,防止模型在工具调用不稳定时执行了超出预期的命令。
4.4 与VSCode的无缝集成
在编辑器里使用比纯终端直观很多。Claude Code 在 VSCode 中有官方扩展,安装后在命令面板输入“Claude Code”就能调出侧边栏对话,而且它能自动读取当前打开项目的文件结构和编辑缓存——这意味着你不用重新描述“哪个文件在哪个目录”,直接问“当前打开的文件为什么报错”即可。
Codex 的 VSCode 扩展同样成熟。安装后界面里有一个对话面板和一个 diff 预览区,Codex 的每次修改都会以 diff 形式呈现,你可以逐行接受或拒绝。我通常的工作流是:用 Codex 做批量代码修改,然后在 diff 预览里筛选保留有意义的改动,最后用 Claude Code 做一次全局代码 review,双工具配合效率非常明显。
5. 常见问题与排查实录
5.1 凭证与认证类错误
Codex 常见报错之一是codex auth token is unavailable。这个错误出现在凭证信息缺失或过期时。解决方案优先级如下:先执行codex login重新登录;如果你用的是 API Key,确认OPENAI_API_KEY已正确设置;最后检查环境变量是否被 shell 配置覆盖,比如导出后又紧接着定义了空值。
Claude Code 报auth token unavailable的排查路径也差不多,重新执行claude login或重新设置ANTHROPIC_API_KEY。我在一次升级后遇到凭证突然失效,是因为新版 CLI 改了配置存储路径,旧的配置没有被迁移。解决办法是把老的~/.claude/.credentials.json缓存删掉,重新登录。
5.2 模型不存在或不受支持类错误
接入第三方模型时最常见的报错是类似的:
{"detail":"the 'gpt-5.6-sol' model is not supported when using codex with a..."}这类问题的根源是模型名不匹配。Codex 在请求时会加上模型参数,如果你设置的模型名在供应商那边不存在,或者供应商的网关不支持该模型,就会返回这种错误。
排查时先确认供应商文档上最新可用的模型 ID。接着在配置界面里检查模型名是否拼写完整,比如deepseek-chat不是deepseek-v3,gpt-5不是gpt5。还有一点容易被忽视:部分兼容网关要求模型名和供应商内部的“路由名”一致,在 CC Switch 这类工具里可以单独设置模型映射,把界面上显示的模型名映射到供应商实际支持的 ID。
5.3 本地转发服务报错
前面提过的cc switch local proxy failed while handling codex endpoint /responses,我再补充几个具体排查点。
第一步看日志。CC Switch 的日志文件通常在用户目录的.cc-switch/logs下,打开后能看到请求去向的完整 URL,这样能判断是路径拼接问题还是密钥问题。
第二步验证眼皮子底下的细节。当我看到这种报错时,会先检查配置的完整 URL 是否和供应商文档完全一致。有些服务商要求填https://api.xxx.com,但你在后面加了/chat/completions,导致拼接后变成https://api.xxx.com/chat/completions/responses,Codex 路径直接 404。
第三步就是端口。lsof -i :端口号查占用,必要时换一个新端口。
5.4 模型接入后效果不理想的排查
接入第三方模型后表现不佳,并不一定是模型能力问题,也可能是配置不对。我的经验是优先确认两个地方:第一看模型请求的基础路径是否符合工具的 API 规范,第二看使用的模型是否支持 tool use。可以在对话里直接问模型“你支持函数调用吗”,如果回答含糊,大概率这个模型走不完多步任务。
如果模型支持工具调用但频繁失败,还可以尝试把回复格式强制改成严格 JSON,很多兼容模型默认输出带 markdown 包裹,工具解析器提取时会出现偶然失败。Claude Code 侧,遇到这种情况我经常选用更小的上下文窗口,减少指令漂移的概率;Codex 侧则建议降低自动执行等级,改为每步确认。
5.5 高频问题速查表
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| 安装后 claude/codex 命令找不到 | npm 全局目录不在 PATH 中 | 检查npm config get prefix,将对应 bin 目录加入 PATH |
| 登录时提示服务不可用 | 当前账号状态或环境不满足官方支持条件 | 核实下载来源与登录方式是否来自官方渠道,以官方支持文档为准 |
| API Key 配置后仍报认证失败 | 环境变量顺序错误被覆盖 | 在 shell 配置末尾 export,或使用 dotenv 文件统一加载 |
| 修改文件时模型执行了多余操作 | 权限放得太宽 | 使用acceptEdits或沙箱模式收紧权限 |
/model切换模型不起作用 | 第三方端点不支持该模型 | 查看供应商实际支持的模型列表,重新设置 |
| 上下文太长导致生成中断 | 模型上下文窗口有限 | 在工具内把 context 限制调小,或分批提问 |
最后分享一个亲身经验。刚开始切换第三方模型时,我不建议直接拿生产仓库练手,先在临时目录里跑通完整链路,确认基本对话、文件编辑、命令执行这三件事都正常,再回到真实项目。原因是第三方模型的工具调用质量波动比较大,如果在真实项目里出现“改了不该改的文件”这类事故,回滚的成本比配置成本高多了。等链路稳定后,这套配置带给你的自由度还是很值的——官方模型负责重活,第三方模型负责轻量任务,成本和质量都兼顾了。