终端里的 AI 编程助手这两年冒出来一大堆,其中最能打的两个大概是 Anthropic 的 Claude Code 和 OpenAI 的 Codex CLI。它们的形态很朴素:一个跑在终端里的对话框,能读你的代码、改你的文件、跑你的命令。
问题是这两位的官方订阅对国内用户不太友好——网络要折腾,价格也不便宜。好消息是 DeepSeek 的 API 同时原生兼容了 Anthropic API 格式(喂给 Claude Code)和 Responses API 格式(喂给 Codex),也就是说,我们可以只用一个 DeepSeek API Key,把这两个工具都盘活。
这篇是我自己踩完坑之后的流水账,从装 Node 开始一路到跑通,顺便记下遇到的报错。
准备工作:安装 Node.js 环境
Claude Code 和 Codex CLI 都是通过 npm 分发的,所以第一步是把 Node.js 装上。
版本要求:Node.js 18 或更高。建议直接装 20 LTS 或 22 LTS,省心。
去 Node.js 官网 下载对应系统的安装包,一路下一步即可。装完打开终端验证:
1 | node -v |
能打印出版本号就说明装好了。
Windows 用户注意:还需要额外安装 Git for Windows。Claude Code 依赖它提供的类 Unix 环境(比如
bash、grep这些),不装的话启动时会报错。
如果 npm 下载速度感人,可以换个国内镜像源:
1 | npm config set registry https://registry.npmmirror.com |
安装 Claude Code
一条命令的事:
1 | npm install -g @anthropic-ai/claude-code |
装完验证一下,能打印版本号就算成功:
1 | claude --version |
如果这里报
EACCES权限错误(macOS / Linux 常见),不要急着上sudo。更好的做法是给 npm 换一个用户目录下的全局安装路径,或者干脆用 nvm 管理 Node,从根上避免权限问题。
安装 Codex CLI
同样是 npm 全局安装:
1 | npm install -g @openai/codex |
验证:
1 | codex --version |
这里有个坑:接下来要用的 DeepSeek 配置方案依赖 Codex 的模型目录(model catalog)特性,要求 Codex CLI 版本 ≥ 0.144.0。版本太旧的话后面配置会不生效,先
npm update -g @openai/codex升到最新。
装完之后**先随便运行一次 codex**(进去之后按 Ctrl+C 退出也行)。这一步是为了让它生成 ~/.codex 配置目录——后面的一键脚本会检查这个目录是否存在。
获取 DeepSeek API Key
- 打开 DeepSeek 开放平台,注册并登录。
- 进入左侧的 API keys 页面(直达链接:https://platform.deepseek.com/api_keys)。
- 点击「创建 API key」,起个名字,创建。
- 立刻复制保存——这个 key 只会完整显示这一次,关掉就再也看不到了。
Key 的样子是 sk- 开头的一长串字符。顺便去「充值」页面充点钱,否则调用会直接返回余额不足。
🔐 API Key 等同于你的钱包密码。不要提交到 Git 仓库,不要贴进聊天群,不要写进会被公开的配置文件。
配置 Claude Code 接入 DeepSeek
Claude Code 的接入方式非常优雅——它完全通过环境变量控制后端,所以我们只要把 base_url 指向 DeepSeek 的 Anthropic 兼容端点就行,不需要改任何配置文件。
macOS / Linux
在终端执行(把 <你的 DeepSeek API Key> 换成真实的 key):
1 | export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic |
这样设置只在当前终端窗口有效,关掉就没了。要永久生效,把上面这些写进 ~/.bashrc 或 ~/.zshrc,然后 source 一下。
Windows(PowerShell)
1 | $env:ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic" |
同样只对当前 PowerShell 会话有效。想永久写进用户环境变量,用这种写法(以 base_url 为例,其余同理):
1 | [Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "https://api.deepseek.com/anthropic", "User") |
设置完要重开一个终端才会生效。
这些变量都在干嘛
| 变量 | 作用 |
|---|---|
ANTHROPIC_BASE_URL |
把请求打到 DeepSeek 的 Anthropic 兼容端点,而不是 Anthropic 官方 |
ANTHROPIC_AUTH_TOKEN |
你的 DeepSeek API Key |
ANTHROPIC_MODEL |
默认使用的模型,[1m] 后缀表示启用 1M 上下文 |
ANTHROPIC_DEFAULT_OPUS/SONNET/HAIKU_MODEL |
Claude Code 内部会按档位选模型,这里把三档分别映射到 DeepSeek 的型号 |
CLAUDE_CODE_SUBAGENT_MODEL |
子任务(Subagent)用的模型,用 flash 更省钱更快 |
CLAUDE_CODE_EFFORT_LEVEL |
推理强度,max 是最高档 |
CLAUDE_CODE_AUTO_COMPACT_WINDOW |
自动压缩上下文的触发阈值 |
顺带一提,DeepSeek 这边还做了模型名映射:只要传进去的是 claude-opus 开头的模型名,会自动映射到 deepseek-v4-pro;claude-sonnet 和 claude-haiku 开头的则映射到 deepseek-v4-flash。传了不认识的模型名,则统一兜底到 deepseek-v4-flash。所以就算某些场景下模型名没配好,也不会直接崩掉。
跑起来
1 | cd /path/to/my-project |
配置 Codex CLI
Codex 走的是 Responses API,DeepSeek 原生支持这个格式。但 Codex 的配置比 Claude Code 麻烦一些——除了 config.toml,还需要一份 models.json 模型目录文件,用来告诉 Codex「这个模型的上下文窗口多大、支持哪些推理档位、用什么工具调用格式」。
那份 models.json 内容非常长(包含完整的 system prompt 模板),手写不现实。所以:
方式一:官方一键脚本(强烈推荐)
DeepSeek 提供了一键配置脚本,会自动备份旧配置、写入 models.json、改好 config.toml。
前提:已装好 Codex CLI 并至少运行过一次(~/.codex 目录已存在)。
macOS / Linux:
1 | bash <(curl -fsSL https://cdn.deepseek.com/api-docs/codex-deepseek-setup.sh) |
Windows(PowerShell):
1 | irm https://cdn.deepseek.com/api-docs/codex-deepseek-setup-en.ps1 | iex |
运行后会出一个菜单:
1— 使用deepseek-v4-flash(快、便宜)2— 使用deepseek-v4-pro(强、贵一点)3— 使用deepseek-v4-flash-vision-exp(额外支持图片输入)9— 恢复默认 Codex 配置,删掉所有 deepseek 相关配置
首次运行会让你输入 API Key(sk- 开头)。
这个脚本做事挺讲究的,值得夸一句:
- 先备份——把原来的
config.toml备份到~/.codex/backup-deepseek/,随时能还原; - 只改必要字段——你原有的 MCP server、项目信任级别等配置全部保留;
- 写入前校验——先验证生成的
config.toml/models.json语法合法,校验不过就中止,一个字节都不动你的文件; - 删除冲突项时会逐条打印原因,不会闷声改掉你的东西。
想换模型?再跑一次脚本选另一个数字就行。
方式二:手动编辑配置文件
如果你想知道脚本到底改了什么,或者需要自己微调,核心就是 ~/.codex/config.toml 里的这些内容:
1 | model = "deepseek-v4-pro" |
同时还需要一份 ~/.codex/models.json,声明三个 DeepSeek 模型的元数据。这份文件建议直接让上面的一键脚本生成,或者从 DeepSeek 官方文档 里复制完整内容。
⚠️ 最容易踩的坑:
wire_api必须是"responses",**不能是"chat"**。如果你之前跟着别的教程配过wire_api = "chat",Codex 会直接启动失败。官方脚本遇到这个值也会强制帮你改成responses。
配置好之后,Codex CLI、ChatGPT 桌面端、VS Code 的 Codex 插件共用同一份配置,配一次三处通用。
跑起来
1 | cd /path/to/my-project |
验证安装与配置
验证 Claude Code
先确认环境变量真的读进去了:
1 | # macOS / Linux |
应该输出 https://api.deepseek.com/anthropic。然后进任意项目目录跑 claude,随便问一句「你是谁,用的什么模型」。能正常回话就说明链路通了。
在 Claude Code 里输入 /status 可以看到当前的模型和端点配置。
验证 Codex
1 | codex |
启动后界面上应该能看到当前模型是 DeepSeek 系列。同样随便问一句测试。
直接测 API 连通性
如果工具跑不起来,先单独验证 key 和网络是否正常(把 key 换成你自己的):
1 | curl https://api.deepseek.com/anthropic/v1/messages \ |
能返回一段 JSON 就说明 key 和网络都没问题,剩下的就是工具侧的配置问题了。
常见问题排查
claude / codex 提示「不是内部或外部命令」
npm 的全局安装目录不在 PATH 里。先看看全局目录在哪:
1 | npm config get prefix |
把输出路径(Windows 下再加上 \node_modules\.bin)加进系统 PATH,重开终端。
关掉终端后配置就失效了
export 和 $env: 都只对当前会话有效。参照上文「配置 Claude Code」一节,写进 shell 配置文件或用 SetEnvironmentVariable 持久化。
报 401 / 认证失败
按顺序排查:
- API Key 有没有复制全?有没有混进空格或换行?
- 用的是
ANTHROPIC_AUTH_TOKEN吗?如果你机器上还残留着ANTHROPIC_API_KEY,两者可能打架,建议先清掉旧的。 - DeepSeek 账户余额还够吗?
- base_url 有没有写对——是
https://api.deepseek.com/anthropic(Claude Code),不是https://api.deepseek.com。
Codex 启动就崩 / 配置不生效
- 检查
wire_api是不是"responses"; - 检查 Codex CLI 版本是否 ≥ 0.144.0,
npm update -g @openai/codex; - 检查
~/.codex/models.json是否存在、model_catalog_json路径是否指对; - 实在乱了,跑一遍一键脚本选
9恢复默认,再重新配。
一键脚本报「Codex 配置目录不存在」
说明你装完 Codex 还没运行过。先执行一次 codex 让它生成 ~/.codex,再跑脚本。
Windows 上 Claude Code 启动报错
多半是没装 Git for Windows。装上它,重开终端再试。
npm 安装时 EACCES 权限错误
不要用 sudo npm install -g,那会留下一堆 root 权限的文件后患无穷。正确姿势是用 nvm 管理 Node,或者把 npm 的全局目录改到用户目录下。
请求很慢或超时
如果你挂了代理,注意某些代理会拦截或拖慢 API 请求。可以试着把 api.deepseek.com 加进代理的直连白名单——毕竟 DeepSeek 的服务器在国内,本来就不需要代理。
写在最后
配完之后的体感:Claude Code 的交互设计更成熟,规划任务和多文件改动很稳;Codex 在单文件的精细修改上手感不错,而且 CLI、桌面端、VS Code 插件共用一套配置这点很省心。
两个都装着,换着用,反正 Key 是同一个。