国内配置 codex 和 code++

国内环境配置 Codex + Codex++(CodexPlusPlus)

说明:

  • Codex:OpenAI官方编程Agent桌面客户端,国内无法直连官方接口,需要对接兼容OpenAI协议的国内大模型API(DeepSeek‑Coder、智谱GLM、通义千问等)
  • Codex++(CodexPlusPlus):开源第三方增强启动器,不修改Codex原始文件,CDP注入,用来对接国内模型、免OpenAI账号登录、中文界面、会话管理
  • ⚠️ Codex++本身不是大模型,只是桥接工具,需要自己准备国内大模型API‑Key。
  • 仓库地址:https://github.com/BigPizzaV3/CodexPlusPlus

两种路径:

  1. 图形化:Codex++管理工具(Windows/macOS,推荐,零手写配置文件)
  2. 手动:直接修改 config.toml(适合CLI、服务器)

前置准备

  1. 下载官方Codex桌面客户端(ChatGPT桌面内置Codex)
  2. 获取国内代码大模型API Key(任选其一)
模型 Base URL 示例模型名
DeepSeek [https://api.deepseek.com](https://api.deepseek.com) deepseek‑coder‑v2‑instruct
智谱GLM [https://open.bigmodel.cn/api/paas/v4](https://open.bigmodel.cn/api/paas/v4) glm‑4‑code
阿里云通义 [https://dashscope.aliyuncs.com/compatible-mode/v1](https://dashscope.aliyuncs.com/compatible-mode/v1) qwen2.5‑coder‑32b‑instruct

注册开放平台,实名认证,创建API Key,少量充值。

方案1:Codex++图形化配置(Windows优先,推荐)

1)安装

  1. 打开GitHub Release页面下载对应系统安装包:CodexPlusPlus‑xxx‑setup.exe
  2. 安装到非中文无空格路径,不要放C:\Program Files这类带空格目录
  3. 安装完成出现两个程序:
    • Codex++管理工具:做配置
    • Codex++:必须从这个启动Codex,不要双击原版Codex图标

2)供应商配置(核心)

  1. 打开「Codex++管理工具」→【供应商配置】→【添加供应商】
  2. 参数填写示例(DeepSeek):
名称:DeepSeek‑Coder
接入模式:纯API模型(无需OpenAI账号)
BaseURL:[https://api.deepseek.com](https://api.deepseek.com)
API Key:粘贴你的sk‑xxx
上游协议:Chat Completions(国内绝大多数模型只支持这个,Responses API只有少数支持)
测试模型:deepseek‑coder‑v2‑instruct
勾选混入API‑Key
  1. 保存,设置为默认启用供应商

3)启动使用

  1. 在管理工具点【重启Codex】,或者双击桌面Codex++快捷方式
  2. 右上角出现绿色圆点代表增强注入成功
  3. Codex内不需要登录OpenAI账号,直接对话写代码,底层走国内API

macOS额外修复:打开终端执行,解除系统隔离

sudo xattr -rd com.apple.quarantine "/Applications/Codex++.app"
sudo xattr -rd com.apple.quarantine "/Applications/Codex++ 管理工具.app"

方案2:手动修改Codex配置文件(CLI / 不想装Codex++GUI)

Codex会读取用户目录隐藏文件夹 .codex/config.toml

  • Windows路径:C:\Users\你的用户名\.codex\config.toml

如果没有 .codex 文件夹,手动新建,注意开启系统显示隐藏项目。

# config.toml示例:对接DeepSeek
model_provider = "deepseek"
model = "deepseek‑coder‑v2‑instruct"

[model_providers.deepseek]
name = "DeepSeek"
base_url = "[https://api.deepseek.com/v1](https://api.deepseek.com/v1)"
env_key = "DEEPSEEK_API_KEY"
wire_api = "chat_completions"

设置环境变量(Windows PowerShell)

[Environment]::SetEnvironmentVariable("DEEPSEEK_API_KEY","sk‑xxxx","User")

重启终端/重启Codex客户端生效。

Codex++重要限制与坑

  1. 必须使用Codex++启动器打开程序;直接原版Codex图标打开,增强配置全部失效。
  2. 国内大模型绝大多数不支持 Responses API,上游协议务必选Chat Completions,否则报400错误。
  3. 报错model not found:模型名字写错,去对应开放平台文档复制准确模型ID。
  4. 401鉴权失败:检查API Key,注意不要带多余空格换行。
  5. 部分Codex原生Agent高级功能(Computer Use)依赖OpenAI私有协议,接入国产模型后会不可用,基础代码生成、重构、调试、文件读写正常。
  6. 网络:国内大模型API公网可访问,不需要代理。

备选方案:CC‑Switch(本地代理网关,适合同时给Codex CLI、Claude Code、Cline使用)

  • 本地运行代理,自动做协议转换 Responses ↔ ChatCompletions
  • 图形界面添加DeepSeek、Qwen、GLM,一键开启路由,所有AI工具统一走本地网关,不用每个工具单独配置。适合开发者同时使用多个Agent工具。

本地离线替代(无API,本地跑代码大模型)

如果你不想调用云端API,可使用Ollama本地部署代码模型,例如 deepseek‑coder、qwen2.5‑coder。
然后Codex/Codex++把base_url指向 Ollama本地地址 [http://127.0.0.1:11434/v1](http://127.0.0.1:11434/v1),本地完全离线运行。

排查问题清单

  1. Codex++管理工具日志面板看请求返回;
  2. 先在Postman测试API Key是否通,确认密钥本身没问题;
  3. 模型名称复制官方文档,不要自己随便起名;
  4. 重启Codex++,不要直接启动原版Codex。

如果你需要,我可以给你一份可直接复制的config.toml模板,分别适配DeepSeek、Qwen、GLM。


给一份可直接复制的 config.toml 模板,分别适配 DeepSeek、Qwen、GLM

config.toml 完整模板(Codex++ 适用,直接复制使用)

⚠️ 重要前置说明

  1. Windows路径:C:\Users\你的用户名\.codex\config.toml,.codex是隐藏文件夹,需要开启「显示隐藏的项目」
  2. 三选一使用,不要同时保留多个provider配置,注释掉不用的,只保留当前想用那一组
  3. 所有 sk-xxx 替换成你自己申请的密钥,不要保留引号内示例文本
  4. 国内模型只支持 chat_completions,不要改成 responses,否则会报错
  5. 修改保存后,必须通过 Codex++ 启动器重启Codex 才生效
# ====================== 全局基础配置(共用,不用改)======================
# 选择启用哪个模型供应商:deepseek / qwen / glm4
model_provider = "deepseek"

# 模型名称,与上面provider对应
model = "deepseek-coder-v2-instruct"

# API协议类型,国内大模型统一用 chat_completions
wire_api = "chat_completions"

# ====================== 1. DeepSeek 深度求索 配置 ======================
[model_providers.deepseek]
name = "DeepSeek-Coder"
base_url = "[https://api.deepseek.com/v1](https://api.deepseek.com/v1)"
env_key = "DEEPSEEK_API_KEY"
# 密钥也可以直接写在这里(不推荐,明文风险),优先使用系统环境变量
# api_key = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# ====================== 2. Qwen 通义千问(阿里)配置 ======================
[model_providers.qwen]
name = "Qwen2.5-Coder"
base_url = "[https://dashscope.aliyuncs.com/compatible-mode/v1](https://dashscope.aliyuncs.com/compatible-mode/v1)"
env_key = "QWEN_API_KEY"

# ====================== 3. GLM-4-Code 智谱清言配置 ======================
[model_providers.glm4]
name = "GLM4-Code"
base_url = "[https://open.bigmodel.cn/api/paas/v4](https://open.bigmodel.cn/api/paas/v4)"
env_key = "GLM_API_KEY"

切换模型示例

示例1:切换到阿里通义Qwen2.5-Coder

修改头部两行:

model_provider = "qwen"
model = "qwen2.5-coder-32b-instruct"

示例2:切换到智谱GLM4-Code

model_provider = "glm4"
model = "glm-4-code"

Windows 配置环境变量(PowerShell,管理员可选,用户级变量)

推荐用环境变量存放密钥,避免config.toml明文保存API Key,安全更好

# DeepSeek密钥
[Environment]::SetEnvironmentVariable("DEEPSEEK_API_KEY","sk-你的deepseek密钥","User")

# 通义千问密钥
[Environment]::SetEnvironmentVariable("QWEN_API_KEY","sk-你的dashscope密钥","User")

# 智谱GLM密钥
[Environment]::SetEnvironmentVariable("GLM_API_KEY","sk-你的bigmodel密钥","User")

执行完,关闭所有cmd/powershell、重启Codex++,环境变量才加载。

备选:直接写api_key明文(快速测试,不建议长期使用)

如果你不想配置环境变量,可以直接在对应provider内增加一行api_key,示例DeepSeek:

[model_providers.deepseek]
name = "DeepSeek-Coder"
base_url = "[https://api.deepseek.com/v1](https://api.deepseek.com/v1)"
api_key = "sk-xxxxxxxxxxxxxxxxxxxx"

常见踩坑

  1. base_url 末尾 /v1 不要丢,很多人漏写导致404
  2. 模型名称严格复制官方文档,拼写大小写敏感,写错直接报model不存在
  3. 智谱的key格式是 sk-xxx,在智谱开放平台控制台获取
  4. 阿里云dashscope的key也是sk开头,要在阿里云百炼控制台申请
  5. 保存toml文件编码:UTF-8,不要GBK,否则Codex++读取配置乱码

可选扩展:Ollama本地离线模型配置片段(追加到文件末尾)

如果你本地Ollama跑代码模型,可以新增这个provider,切换 model_provider = "ollama"

[model_providers.ollama]
name = "Ollama-Local"
base_url = "[http://127.0.0.1:11434/v1](http://127.0.0.1:11434/v1)"
env_key = "OLLAMA_API_KEY"
# ollama本地默认不需要密钥,可以填任意字符串

示例头部:

model_provider = "ollama"
model = "deepseek-coder:6.7b"
wire_api = "chat_completions"

需要我顺便给你写一个一键设置环境变量的 .ps1 脚本吗?直接右键运行即可。


写一个一键设置环境变量的 .ps1 脚本

脚本说明

  1. 用户级环境变量,仅对当前Windows用户生效,不需要管理员权限
  2. 不会硬编码密钥,运行时交互式输入sk密钥
  3. 自动检测、写入3个环境变量:DEEPSEEK_API_KEY、QWEN_API_KEY、GLM_API_KEY
  4. 输出提示:设置完成后需要重启终端 / 重启Codex++才能加载新环境变量
  5. 文件保存为 set_codex_env.ps1,编码使用 UTF‑8 with BOM
<#
.SYNOPSIS
一键配置Codex++所需API密钥环境变量(用户级别,无需管理员)
#>

Write-Host "=====================================" -ForegroundColor Cyan
Write-Host " Codex++ API Key 环境变量配置脚本 " -ForegroundColor Cyan
Write-Host "=====================================" -ForegroundColor Cyan
Write-Host "`n提示:直接回车代表跳过该密钥设置`n" -ForegroundColor Gray

# 交互式输入密钥
$deepseekKey = Read-Host "请输入 DeepSeek API_KEY (sk-xxx)"
$qwenKey     = Read-Host "请输入 通义千问Qwen API_KEY (sk-xxx)"
$glmKey      = Read-Host "请输入 智谱GLM API_KEY (sk-xxx)"

# 设置用户环境变量
if (-not [string]::IsNullOrWhiteSpace($deepseekKey)) {
    [Environment]::SetEnvironmentVariable("DEEPSEEK_API_KEY", $deepseekKey, "User")
    Write-Host "✅ DEEPSEEK_API_KEY 已写入用户环境变量" -ForegroundColor Green
} else {
    Write-Host "⏭️ 跳过 DeepSeek 密钥" -ForegroundColor Yellow
}

if (-not [string]::IsNullOrWhiteSpace($qwenKey)) {
    [Environment]::SetEnvironmentVariable("QWEN_API_KEY", $qwenKey, "User")
    Write-Host "✅ QWEN_API_KEY 已写入用户环境变量" -ForegroundColor Green
} else {
    Write-Host "⏭️ 跳过 Qwen 密钥" -ForegroundColor Yellow
}

if (-not [string]::IsNullOrWhiteSpace($glmKey)) {
    [Environment]::SetEnvironmentVariable("GLM_API_KEY", $glmKey, "User")
    Write-Host "✅ GLM_API_KEY 已写入用户环境变量" -ForegroundColor Green
} else {
    Write-Host "⏭️ 跳过 GLM 密钥" -ForegroundColor Yellow
}

Write-Host "`n================ 重要提醒 ================" -ForegroundColor Red
Write-Host "1. 环境变量已经写入系统,但当前PowerShell会话不会自动生效"
Write-Host "2. 请:关闭全部终端窗口,重启 Codex++ 启动器!"
Write-Host "3. 验证命令示例:`$env:DEEPSEEK_API_KEY"
Write-Host "==========================================" -ForegroundColor Red

Read-Host "`n按回车退出脚本"

使用步骤

  1. 将以上全部内容复制,新建文本,粘贴,另存为 set_codex_env.ps1
  2. 在文件所在文件夹,Shift+鼠标右键 → 在此处打开PowerShell窗口
  3. 执行:
.\set_codex_env.ps1
  1. 根据提示粘贴对应 sk‑ 密钥,不需要的直接回车跳过。

执行报错:禁止运行脚本

PowerShell默认策略阻止ps1脚本,执行一次放行:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

输入 Y 确认,之后就可以运行脚本。

验证是否生效

关闭旧PowerShell,新开一个窗口执行:

$env:DEEPSEEK_API_KEY
$env:QWEN_API_KEY
$env:GLM_API_KEY

能打印出sk‑开头字符串代表环境变量写入成功。

⚠️ 安全提示:不要把ps1脚本保存密钥,本脚本内存读取,不会将密钥写进脚本文件本身。

如果你需要,我再给一个清除这三个环境变量的ps1清理脚本。

posted @ 2026-09-25 18:25  念槐聚  阅读(31)  评论(0)    收藏  举报