1. 先搞清楚 Codex CLI 与 VS Code 插件到底在解决什么问题很多人第一次接触 Codex会把它当成聊天框里帮我写个函数的工具用两天就放下了。真正让它变成生产力的是另一条路径把它当成一个能读项目、能跑命令、能改多文件的命令行协作者。Codex CLI 是这条路径的核心VS Code 插件则是把同一套能力搬进编辑器侧边栏。两者共享~/.codex/下的认证与配置所以你在终端里调好的参数插件里基本能复用。我先把适用人群说清楚如果你只是偶尔补全几行代码编辑器自带的补全就够了但如果你经常面对这个报错在哪个文件、这个重构要动几个模块、这个脚本能不能直接跑一遍验证这类任务Codex CLI 的--search、沙箱执行、AGENTS.md项目约定就会明显省时间。它适合后端逻辑、脚本编排、跨文件重构也适合把重复的排查动作写成可复用的命令。从零上手到高阶实际会卡在四个地方一是认证方式选错auth.json写错字段导致 401二是config.toml里模型名、审批策略、沙箱模式三者互相打架三是项目没有AGENTS.md模型每次都要重新猜你的规范四是本地网络层报local proxy failed这类错看着像代码问题其实是通道问题。这篇就按先跑通、再调优、再排障的顺序走每一步都给可复制的片段和验证动作。统一 Key 与 API 通道这部分我会用 TaoToken 作为示例接入点因为它的 Base URL 和 Key 管理比较直观适合把 CLI 和 VS Code 两条线一次配好。你完全可以在官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 完成注册后拿到 Key再回到本文按步骤填。下面所有配置都以能复制、能验证为标准不写空泛的连上就能用。2. TaoToken 前置准备Key、Base URL 与目录结构一次理清在动config.toml之前先把三样东西备齐API Key、Base URL、你要用的 Model ID。这三件套在后面 CLI、VS Code、auth.json里会反复出现先记在一个地方避免来回翻。第一步打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册并登录进入控制台。左侧找到 API Keys 入口新建一个 Key命名建议带上用途比如codex-cli-mac方便以后按设备吊销。Key 只在创建时完整显示一次复制后先存到密码管理器。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsole API Keys 页面是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keys 两个都带同一套归因参数收藏哪个都行。第二步确认 Base URL。TaoToken 的 API 根地址是https://taotoken.net/api注意这里不加任何查询参数配置里就写这个纯地址。有些工具要求带/v1后缀Codex 的wire_api走 responses 协议时Base URL 填根地址即可具体拼接由客户端完成。如果你在别的工具里看到https://taotoken.net/api/v1这种写法那是那个工具的约定不要混进 Codex 配置。第三步选 Model ID。Codex 场景常用的是编程向模型你在控制台的模型列表里能看到当前可用的名称。把它原样抄进配置大小写和连字符都不要改。模型名写错最典型的报错是返回里choices为空或者直接 404后面排障章节会细说。目录结构也要先建立认知。Codex 的用户级配置都在~/.codex/下auth.json存认证config.toml存全局参数AGENTS.md可以放全局偏好。项目级则在仓库根目录放AGENTS.md子目录还能再放一层覆盖。Windows 用户如果走 WSL2路径就是 WSL 里的家目录不要在 Windows 侧和 WSL 侧各配一份容易互相覆盖。注意Key 不要写进项目仓库里的任何文件auth.json和config.toml都在用户主目录天然不进 Git。团队共享的是AGENTS.md不是 Key。环境要求顺带确认一下Node.js 18 以上macOS 12、Ubuntu 20.04 或 Windows 11 的 WSL2。装 CLI 用npm install -g openai/codex装完codex --version能出版本号就说明二进制就位。这一步不涉及任何网络层特殊设置如果 npm 装包慢换国内镜像源即可和后面的 API 通道是两回事。3. 可复制配置config.toml、auth.json 与 AGENTS.md 模板这一节是全文的核心三个文件配好后面就是验证和排障。先给~/.codex/config.toml的完整模板字段都有注释你按需改值。# ~/.codex/config.toml # 默认模型填你在 TaoToken 控制台看到的 Model ID model gpt-5-codex # 推理力度low / medium / high复杂重构建议 high model_reasoning_effort high # 审批策略untrusted 每次执行前询问on-failure 沙箱失败时再问never 全自动 approval_policy untrusted # 沙箱模式read-only 只读workspace-write 可写工作区danger-full-access 全盘 sandbox_mode workspace-write # 关闭响应存储减少不必要的往返 disable_response_storage true # 走 responses 协议 wire_api responses # 自定义 API 通道Base URL 用纯根地址 [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY # 安全档 profile只读、低推理适合陌生仓库先摸清结构 [profiles.safe_mode] model gpt-5-codex approval_policy untrusted sandbox_mode read-only model_reasoning_effort low # 全自动档 profile信任的本地仓库做批量重构时用 [profiles.auto_mode] model gpt-5-codex approval_policy never sandbox_mode workspace-write model_reasoning_effort high这里有个容易踩的点env_key指定的是环境变量名不是 Key 本身。你需要在 shell 里export TAOTOKEN_API_KEYsk-...或者写进~/.zshrc/~/.bashrc。另一种方式是走auth.json两者选其一即可不要同时配导致来源冲突。~/.codex/auth.json模板如下字段名要和客户端预期一致{ OPENAI_API_KEY: sk-你的TaoToken密钥 }如果你更习惯环境变量方式auth.json可以只留空对象{}让客户端从TAOTOKEN_API_KEY读取。实测下来CLI 场景用环境变量更灵活切换 Key 不用改文件VS Code 插件场景用auth.json更省心因为插件进程不一定继承你终端里的 export。接着是项目根目录的AGENTS.md这是给模型看的项目说明书写得越具体它越少犯低级错# AGENTS.md ## 项目简介 Next.js TypeScript 的电商后台包管理器用 pnpmNode 20。 ## 开发规范 - 代码风格遵循 Prettier ESLint提交前必须过 lint。 - 组件与变量用驼峰命名文件名用 kebab-case。 - 提交信息遵循 Conventional Commits如 feat(cart): add coupon input。 ## 常用命令 - 启动开发pnpm dev - 跑测试pnpm test - 构建pnpm build - 类型检查pnpm tsc --noEmit ## 注意事项 - 禁止直接改 dist/ 下任何文件。 - 新增功能必须补对应单测测试文件放同目录 __tests__。 - 改动涉及数据库 schema 时先输出迁移方案再动手。子目录可以再放一份AGENTS.md覆盖局部规则比如src/server/AGENTS.md里写本目录只允许改 service 层controller 改动需在 PR 描述说明。全局偏好放~/.codex/AGENTS.md比如回答用中文、代码注释用英文。VS Code 侧插件安装后在设置里搜chatgpt.apiBase填https://taotoken.net/api再在chatgpt.config里补preferred_auth_method为apikey、model为你的 Model ID、wire_api为responses。插件和 CLI 共用~/.codex/auth.json所以 Key 只需配一次。如果你用 Cline 这类支持 MCP 的插件MCP server 配置里同样要写全 Base URL、Key、Model ID 三件套缺一个就连不上。4. 逐步验证从 codex --version 到一次真实请求的成功回显配置写完不算完要一步步验证每步都有明确的成功信号出错时才能定位到具体环节。第一步验证 CLI 就位。终端执行codex --version能打印版本号即通过。如果提示 command not found检查 npm 全局 bin 是否在 PATH 里npm bin -g看路径再补进 shell 配置。第二步验证认证读取。执行codex login --api-key sk-你的Key或者确认环境变量已 export 后直接进下一步。成功时不会有长篇输出通常只提示已保存认证。如果这里就报 401先别怀疑配置去 TaoToken 控制台确认 Key 没过期、没被吊销、额度没耗尽。第三步最小请求验证。在任意空目录执行codex -m gpt-5-codex -c model_reasoning_effortlow 用一句话说明当前目录下有哪些文件成功信号是模型返回一句描述并且没有报错堆栈。这一步故意用low推理和只读意图避免触发写操作审批。如果返回里出现choices相关错误说明模型名或协议不对如果出现连接类错误看下一节。第四步验证项目约定生效。进入你的仓库根目录执行codex 根据 AGENTS.md 的规范告诉我跑测试的命令是什么如果它答出pnpm test而不是泛泛的npm test说明AGENTS.md被正确加载。这一步很关键很多人配了文件但模型没读到就是因为文件不在仓库根目录或者启动目录不对。第五步验证沙箱与审批。执行一个会写文件的任务codex -c approval_policyuntrusted 在项目根目录新建 notes.md写入今天的日期untrusted策略下它应该先向你请求批准再写。你批准后文件出现说明沙箱写权限和审批链路都通。如果它直接写了没问检查config.toml里approval_policy是否被 profile 覆盖。第六步验证 VS Code 插件。打开命令面板让插件发一条简单请求比如解释当前打开文件的用途。成功回显说明插件侧的 Base URL、Key、Model ID 三件套都正确。插件报错时优先看输出面板里的请求日志里面会带 HTTP 状态码比界面提示有用得多。六步走完CLI 和插件两条线都通了。后面再调model_reasoning_effort、切 profile、加 MCP都是在稳定底座上做增量出问题也容易回滚。5. 常见报错排查401、local proxy failed、reading choices 与 OAuth 失败排障的核心思路是先分层再看码。Codex 的报错大致分四层认证层、网络层、协议层、权限层。下面按真实报错逐条对。401 Unauthorized。最常见原因通常是 Key 无效、Key 与 Base URL 不匹配、或者auth.json字段名写错。先确认auth.json里是OPENAI_API_KEY这个键不是api_key或token。再确认环境变量和文件不要同时存在且值不同客户端读取优先级可能让你以为改了其实没生效。最后去控制台核对 Key 状态。修完后用第 4 节的第三步最小请求复验。local proxy failed / connection refused。这类错看着吓人本质是客户端连不上你配置的 Base URL。先curl -I https://taotoken.net/api看能否拿到响应头如果 curl 通而 codex 不通多半是客户端读到了旧的代理环境变量比如HTTP_PROXY指向了一个已关闭的本地端口。清掉相关环境变量再试。如果 curl 也不通检查本机 DNS 和出站规则这一步和 Codex 配置无关。reading choices / choices 为空。说明请求发出去了、也拿到了响应但响应结构里没有预期的choices字段。三个高发原因Model ID 拼错比如把连字符写成下划线、wire_api与通道不匹配responses 协议却配了 chat 端点、Base URL 多写了/v1导致路径重复。逐个核对第 3 节模板里的三个值改完重启 CLI 再验。OAuth 相关失败。如果你之前用过浏览器登录方式auth.json里可能残留 OAuth 令牌和 API Key 方式冲突。处理方式是清空auth.json只留OPENAI_API_KEY或者删掉文件重新codex login --api-key。插件侧同理在设置里把认证方式显式设为apikey不要留自动。权限被拒 / 沙箱写入失败。报错里带 sandbox 字样时看sandbox_mode。read-only下任何写操作都会被拦这是预期行为不是 bug。需要写就切workspace-write或者用--profile auto_mode启动。反过来如果你发现它未经询问就改了文件检查是不是 profile 把approval_policy覆盖成了never。AGENTS.md 不生效。模型答非所问、忽略你的命令约定时先确认启动目录就是仓库根目录再确认文件名大小写完全一致。子目录规则只对在该子目录下发起的任务生效跨目录任务读的是根目录那份。可以用第 4 节第四步的提问法快速自测。把这几类错和对应层记住下次看到报错先归类再动手比盲目改配置快得多。每次改完只动一个变量改完立刻用最小请求复验这样能保证你始终知道是哪一处改动起了作用。6. 把配置沉淀成团队资产从单机调优到可复用工作流单机跑通之后真正拉开差距的是把配置变成团队可复用的东西。AGENTS.md天然适合进 Git它是项目规范的一部分新人 clone 下来就自带上下文。config.toml里的 profile 可以按场景固化safe_mode给陌生仓库和代码审查用auto_mode给信任的本地批量重构用日常开发用默认档。这样你不用每次记一长串命令行参数codex --profile safe_mode ...一句话切换。模型对话入口适合做方案讨论和提示词打磨地址是 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chat 你在 CLI 里调好的模型名可以直接在这里对照验证。如果你长期做编码和 Agent 类任务Coding Plan 页面 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-plan 有按周期计费的方案比逐次调用更好估算成本。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdoc 遇到协议细节以文档为准。Claude Code 用户如果要对照 Anthropic 兼容配置参考 https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecode-anthropic 。最后给一个我常用的习惯每次升级 CLI 或插件版本后重跑第 4 节的六步验证尤其是第三步最小请求和第四步AGENTS.md生效检查。版本升级偶尔会改配置字段名六步跑一遍比等出问题再回滚省事。配置文件和AGENTS.md都进版本管理Key 永远留在用户目录这条边界守住团队协作就不会因为一把 Key 泄露而返工。
阅读完成 · 觉得有帮助?