Codex 接入指南

桌面应用与 CLI:配置一次,以后直接使用。

第一次使用,请按下面 1—6 步操作:安装客户端 → 创建密钥 → 打开配置文件 → 粘贴并保存配置 → 长期保存密钥 → 启动验证。已安装的用户可以从第 2 步开始。

核对日期:2026-10-10。本页适用于本地桌面应用和 CLI;网页端与云端任务需要另外配置。

1. 安装你要使用的客户端

下面两种选一种即可。桌面应用有图形界面;CLI 是在 PowerShell、Terminal 或 WSL 中输入命令使用的版本。安装完成后,继续第 2 步。

Codex 桌面应用

从官方入口下载 Windows 或 macOS 客户端,打开安装程序并按提示完成安装。当前官方桌面指南将 Codex 入口放在 ChatGPT 桌面应用中,打开后按提示登录并选择 Codex;已有 Codex 桌面客户端的用户按客户端提示更新。桌面用户无需安装 CLI。

官方桌面客户端下载

Codex CLI(命令行)

点击 Windows 开始菜单,搜索并打开 PowerShell。点击代码框的“复制”,在 PowerShell 中按 Ctrl + V 粘贴,再按 Enter 执行。

powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"

等待安装完成,关闭并重新打开终端,再执行下面命令。看到 codex 和版本号就表示安装成功;如果提示找不到命令,先按安装程序的提示检查是否需要重新打开终端。

codex --version

独立安装版升级时可重新运行同一安装脚本;通过其他包管理器安装的版本请使用原方式升级。Windows PowerShell 与 WSL 是两个运行环境,需要分别安装。

2. 创建并复制 AIDesk API Key

打开控制台的 API 密钥页面,创建一个密钥并复制。它通常以 sk-aidesk- 开头,第 5 步会用到;现在先保持控制台页面打开,到第 5 步时按自己的系统和客户端说明保存密钥。复制后面的命令会替换剪贴板内容,到时请回到密钥页面重新复制完整密钥。

打开 API 密钥页面

3. 在电脑上打开配置文件

config.toml 是告诉 Codex“连接哪个地址、使用哪个模型”的文本文件。下面的命令会找到这个文件;第一次使用时会创建所需目录和空文件。这一节的命令在终端执行,第 4 步的配置才粘贴到文件里。

① 从开始菜单搜索并打开 PowerShell(不要打开命令提示符 CMD)。复制下面整段命令,在 PowerShell 中粘贴并按 Enter:

$codexConfigDir = if ($env:CODEX_HOME) {
    $env:CODEX_HOME
} else {
    Join-Path $env:USERPROFILE '.codex'
}
New-Item -ItemType Directory -Force -Path $codexConfigDir | Out-Null
$codexConfigPath = Join-Path $codexConfigDir 'config.toml'
if (-not (Test-Path -LiteralPath $codexConfigPath)) {
    New-Item -ItemType File -Path $codexConfigPath | Out-Null
}
notepad $codexConfigPath

② 会弹出记事本。看到空白文件是正常的;如果已有内容,请先备份并保留原设置。暂时不要关闭记事本,回到此页面完成第 4 步。

配置文件实际保存在哪里?Windows 和 WSL 是同一份吗?

Windows 默认是 %USERPROFILE%\.codex\config.toml,即自己用户文件夹内的 .codex 目录;macOS / Linux / WSL 默认是 ~/.codex/config.toml,其中 ~ 代表当前用户的主目录。

命令会优先使用你已设置的 CODEX_HOME;没设置过就不必处理它。Windows 与 WSL 使用各自的文件和密钥,请在运行 Codex 的那个环境中配置。

4. 复制连接配置,粘贴到文件并保存

先选择模型;接口地址默认使用当前站点提供的地址。点击下方代码框的“复制”,切回刚才打开的 config.toml 文件粘贴。这段内容是文件内容,不是在终端执行的命令。

也可从模型列表复制其他 ID。模型和当前线路需支持 Codex 使用的 Responses 协议。

使用站点提供的接口地址;不要填写 /responses 或 /messages 的完整路径。

API Key 稍后在自己的电脑上长期保存,不填在这段配置里。

下方 AIDESK_API_KEY 是变量名,请保持原样,不要替换成密钥。真实密钥按第 5 步单独保存。

model = "gpt-6.1-sol"
model_provider = "aidesk"
# 网页搜索:disabled 关闭,live 实时联网
web_search = "disabled"

[model_providers.aidesk]
name = "AIDesk API"
base_url = "https://api.aideskapp.com/v1"
wire_api = "responses"
http_headers = { "x-aidesk-source" = "codex" }
env_key = "AIDESK_API_KEY"

网页搜索:上方选择 Claude 后,示例会自动设为 live(不支持 cached)。如果只是启动时用 -m 切换到 Claude,搜索设置仍沿用配置文件,需要另外将 web_search 改为 "live"。

文件是空白的:把上方配置完整粘贴进去即可。

文件里已经有内容,应该怎样合并?
  1. 先备份原文件,不要全选删除原有内容。
  2. 最上面的 model、model_provider、web_search 三行,放在文件第一个 [表名] 之前;已有同名设置就修改原行。
  3. 从 [model_providers.aidesk] 开始的整段放在文件末尾。已有这个表头时更新原表,不要添加第二个同名表;其他 provider 和设置保持原样。
  4. 如果已按完整指南配置 macOS 钥匙串,保留 [model_providers.aidesk.auth],不要重新添加 env_key。
我在测试本地服务,地址怎么填?

若 AIDesk 开发网关运行在这台电脑的 8600 端口,填写 http://localhost:8600/v1。服务运行在另一台机器时使用 Windows / macOS 客户端实际能访问的地址。浏览器打开本地文档,不代表模型请求也发往本地;请核对这里的 Base URL,并使用对应环境的 API Key。

粘贴后,按下面方式保存:

  • Windows 记事本:按 Ctrl + S 保存,再关闭记事本。上一步已经创建了正确的文件名,直接保存即可,不要另存成 config.toml.txt。
  • macOS / Linux / WSL 的 nano:macOS 按 Command + V 粘贴;Linux / WSL 通常按 Ctrl + Shift + V。粘贴后按 Ctrl + O,再按 Enter 确认文件名,最后按 Ctrl + X 退出。这里 O 是字母,保存和退出用的是 Ctrl,不是 Command。

完成后,你应该已经回到终端的命令输入界面。接下来只需长期保存一次 API Key。

5. 长期保存 API Key(只需设置一次)

按自己的系统选择下面的说明。设置完成后,新开终端或重启电脑都不需要重新粘贴密钥;只有更换、撤销密钥或换电脑时才需要更新。

适用于 Windows 桌面应用和原生 CLI。填入密钥、复制生成的整段命令,在 PowerShell 执行一次即可;不需要管理员权限。

把 API Key 粘贴到输入框,下方命令会自动替你填好;也可以自行把命令中的 sk-aidesk-YOUR_KEY 换成自己的密钥。

API Key 仅用于在你的浏览器本地生成命令,不会上传或保存。

② 复制整段命令,在 PowerShell 中粘贴并按 Enter

& {
    $ErrorActionPreference = 'Stop'
    $aideskKey = 'sk-aidesk-YOUR_KEY'
    [Environment]::SetEnvironmentVariable(
        'AIDESK_API_KEY', $aideskKey, 'User'
    )
    $env:AIDESK_API_KEY = $aideskKey
    Write-Host 'API Key 已长期保存,当前窗口也已生效。'
}

③ 看到“API Key 已长期保存,当前窗口也已生效。”后,CLI 用户可直接在这个 PowerShell 窗口继续第 6 步,输入 codex。以后新开终端或重启电脑都不需要重复设置。

桌面用户请保存工作后完全退出并重新打开应用,让它读取新密钥。已经打开的其他终端可能仍保留旧环境,需要完全退出终端程序再打开;若仍提示缺少密钥,保存工作并注销、重新登录 Windows 后再试。

可选:检查新终端是否已读取密钥

在新开的 PowerShell 中运行。这里只显示读取状态,不会显示密钥。

if ($env:AIDESK_API_KEY) {
    'API Key 已读取,可以继续第 6 步'
} else {
    '未读取到 API Key,请完全退出终端程序后重新打开'
}
macOS / Linux / WSL CLI:检查是否保存成功

在已执行 source 的当前终端,或新打开的终端中运行下方命令。看到“API Key 已读取”即可继续;检查不会显示密钥。使用上方 macOS 钥匙串方案时不需要此环境变量检查,直接启动客户端验证。

if [ -n "$AIDESK_API_KEY" ]; then
  echo 'API Key 已读取,可以继续第 6 步'
else
  echo '未读取到 API Key,请检查保存位置并新开终端'
fi

6. 启动 Codex,发送第一条消息

以后每次怎么用?

桌面用户直接打开应用、选择项目;CLI 用户打开终端、进入项目目录、输入 codex。不用重复第 2—5 步。更换模型或密钥时,再修改对应设置。

① 打开终端并进入准备测试的项目文件夹。Windows 可在文件资源管理器中打开该文件夹,右键选择“在终端中打开”;macOS / Linux 可输入 cd、一个空格和文件夹路径,再回车(路径有空格时用引号包住)。

② 在终端执行:

codex

③ 出现 Codex 对话界面后,输入 /status 并回车,核对 provider 是 AIDesk、模型与你选择的一致。再在同一个对话框发送下方测试消息。

请只回复:aidesk-ok

收到 aidesk-ok 后,还需要按下一节确认调用记录和编码工具。CLI 切换模型可使用 /model;自定义模型未出现在列表时,可新开会话显式指定:

codex -m claude-opus-5-5

-m 只选择模型,连接仍使用配置中的 AIDesk provider;所选线路需支持 Responses。

确认连接和编码工具都正常

  1. 收到 aidesk-ok 后,打开控制台调用记录,核对刚才请求的时间、模型与成功状态。客户端能回复或自报模型名,都不能单独证明请求走了 AIDesk。
  2. 在测试项目里,让 Codex 读取一个已有文件并概括内容,确认实际出现读取文件的工具调用。
  3. 让它创建一个临时测试文件,再继续对话修改该文件;按客户端提示审核操作,并检查文件内容。这能验证工具调用、结果回传和多轮续跑。

测试网页搜索:使用 Claude 时,将配置文件顶层设为 web_search = "live",重启 Codex 并新建会话,然后发送:

请使用内置网页搜索查找 Python 3.14 的正式发布日期,只回复日期和 Python 官网来源链接,不要运行终端命令。

应看到搜索过程(如 Browsing / Searched)和可点击的来源链接。当前支持实时搜索,不支持 cached 模式或完整浏览器操作。

常见问题

启动时提示 Background server has incompatible feature settings

这表示当前会话配置与已运行的共享后台服务不一致。若要先测试连接,选择第 1 项 Run without daemon this time,或在原启动命令中加入:

codex --no-daemon

原命令包含模型或 profile 参数时,请一并保留。第 2 项会重启共享后台服务并保留新的 feature 设置,可能影响其他会话;确认其他任务已保存后再使用。无需因为这条提示更改 AIDesk 的 Base URL 或密钥。

CLI 可以连接,桌面应用却提示缺少 API Key

Windows 请按第 5 步保存用户变量后完全退出并重开应用;macOS 桌面请使用第 5 步的钥匙串方案,仅设置 CLI 的 .zshrc 不会自动传给桌面应用。WSL 与 Windows 也需要分别配置密钥。

改了 config.toml,仍然使用原来的模型或 provider

核对实际使用的 CODEX_HOME、Windows / WSL 用户目录,以及命令行参数、所选 profile 和项目中的配置是否覆盖了全局设置。顶层键必须位于第一个 TOML 表之前。保存后重启客户端并新建会话,再检查状态和调用记录。

模型不在选择列表,或提示缺少模型能力信息

确认模型 ID 与 AIDesk 模型列表一致,可在配置或 CLI 的 -m 参数中显式指定。自定义模型还可能需要匹配的模型目录元数据;若客户端提示能力信息缺失,请提供版本和模型 ID 联系支持,不要通过冒用另一个模型名规避。

出现 401、网页搜索不支持或其他请求错误

401 时核对密钥和 Base URL 是否属于同一环境。Claude 网页搜索需设为 web_search = "live",并检查 profile 是否覆盖该设置;无需联网时可设为 disabled。如果提示搜索上下文已过期或线路变化,请新建会话。其他错误可携带调用记录的 request_id 联系支持,请勿发送完整 API Key。