
1. 为什么 GPT-5-Codex 的提示词要“反着写”GPT-5-Codex 是专门为代理式编码任务训练的模型它和通用 GPT-5 最大的区别在于很多过去必须写进提示词的最佳实践已经被内置进模型本身。这意味着你如果继续用写 GPT-5 的思路去堆提示词反而会拖慢它、甚至让它提前停止任务。我实测下来最直观的感受是给 GPT-5-Codex 写提示词核心动作不是“加”而是“减”。它只支持 Responses API不支持verbosity这类细粒度参数所以控制输出风格要靠提示词本身而不是靠 API 参数。同时它被训练成优先使用apply_patch做文件编辑而不是让你在提示词里教它怎么改文件。这篇指南解决的就是一个具体问题如何在本地搭一套可复现的 Codex CLI 配置让 GPT-5-Codex 通过 Responses API 稳定地生成代码并用 apply_patch 落盘。适合两类人一是用 API 直接调 GPT-5-Codex 的开发者二是想搞懂 Codex CLI 里config.toml到底该怎么写的人。如果你只是想体验 Codex 工具本身可以直接用现成客户端但如果你想自己控制提示词、模型通道和补丁流程那这套配置就是给你准备的。下面我会先讲清楚 TaoToken 这条统一通道怎么接再给出完整的config.toml骨架、提示词模板最后跑一次端到端验证把常见的报错也一并排掉。2. 用 TaoToken 统一 Key 与 API 通道在动手写配置之前先把模型通道理顺。GPT-5-Codex 只走 Responses API所以你的接入点必须支持这个协议。TaoToken 提供统一的 Key 和 API 通道把模型对话、编码计划、密钥管理都收在一个入口里省得你在多个平台之间来回切。官网入口在这里https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。API 基址是 https://taotoken.net/api 注意这个地址不带 UTM 参数配置里直接写它就行。你需要提前准备好两样东西一个可用的 API Key以及确认你的调用走的是 Responses 协议而不是老的 Chat Completions。Key 的创建和管理在控制台完成具体路径是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 密钥列表页在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。如果你还没决定用哪个模型可以先在模型对话页试一下手感https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。注意GPT-5-Codex 仅支持 Responses API。如果你的客户端或 SDK 默认发的是/v1/chat/completions请求会失败或行为异常配置时务必确认协议。对于长期跑编码任务、或者要接 Agent 的场景用 Coding Plan 会更省心额度和管理都集中处理https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。接入细节和协议说明统一看文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。3. 可复制的 config.toml 骨架Codex CLI 的配置核心是config.toml。下面这份骨架是我实际跑通后整理出来的你可以直接复制把 Key 换成自己的。重点看三块模型与协议、沙箱与审批、以及工具约束。# ~/.codex/config.toml # 模型与通道 model gpt-5-codex model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api responses # 关键必须走 Responses API # 沙箱与审批 [sandbox] mode workspace-write # 允许读写 cwd 与 writable_roots network_access restricted # 需要联网时走审批 [approval] policy on-request # 默认沙箱内执行必要时申请提权 # 工具约束只保留终端与 apply_patch [tools] enabled [shell, apply_patch]几个参数值得单独说清楚。wire_api responses是整份配置里最容易写错的一行写成chat或留空都会导致协议不匹配。sandbox.mode建议先用workspace-write它允许模型改你当前工作目录里的文件但动到目录外的东西要审批安全边界比较清楚。approval.policy用on-request日常读操作直接跑写操作和联网再弹审批。工具数量这块要克制。GPT-5-Codex 的训练分布里终端工具加apply_patch就是主力组合你塞进去一堆自定义工具反而会稀释它的判断。所以enabled里只留shell和apply_patch两个。环境变量单独设别把 Key 写进配置文件export TAOTOKEN_API_KEYsk-你的key如果你用的是 Claude Code 那套 Anthropic 风格的接入通道和 Key 是同一套参考页在 https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 但 GPT-5-Codex 本身还是走 Responses别混用协议。4. 提示词模板从最小系统提示开始配置搭好后提示词才是决定输出质量的关键。GPT-5-Codex 的原则是“少即是多”从 Codex CLI 系统提示能给出的最小提示开始只加你真正需要的指导。删掉所有提示前言的提示因为模型不支持它们要求前言会导致它在完成任务前提前停止。下面这份系统提示可以直接作为模板注意它刻意保持精简You are Codex, based on GPT-5. You are running as a coding agent in the Codex CLI on a users computer. ## General - The arguments to shell will be passed to execvp(). Most terminal commands should be prefixed with [bash, -lc]. - Always set the workdir param when using the shell function. Do not use cd unless absolutely necessary. - When searching for text or files, prefer using rg or rg --files. ## Editing constraints - Default to ASCII when editing or creating files. - Add succinct code comments only when code is not self-explanatory. - You may be in a dirty git worktree. NEVER revert existing changes you did not make unless explicitly requested. - If you notice unexpected changes you didnt make, STOP and ask the user how to proceed. ## apply_patch - Use apply_patch for file edits to match the training distribution.这份模板里没有“请深入思考”“请一步步来”这类话。原因很直接GPT-5-Codex 的自适应推理已经是默认功能它会根据任务复杂度自己调整推理时间。你手动加“更深入思考”反而可能干扰它的节奏。同理规划工具的使用也不需要你在提示词里教模型经过训练可以自己生成高质量计划你只要在 CLI 里提供规划工具即可。前端任务是个例外值得单独加一小段引导因为默认审美和你的项目栈可能不一致## Frontend Guidance Use the following libraries unless the user or repo specifies otherwise: Framework: React TypeScript Styling: Tailwind CSS Components: shadcn/ui Icons: lucide-react除了前端这种明确需要覆盖的场景其他领域尽量别加章节。你加得越多模型越容易在任务中途停下来等你确认。5. 端到端验证一次 apply_patch 落盘配置和提示词都就位后跑一次完整验证。我选一个最小但能覆盖全流程的任务让模型新建一个工具函数文件并用 apply_patch 落盘。先确认环境变量和配置生效echo $TAOTOKEN_API_KEY | head -c 8 codex --version然后发起一次请求。这里用 curl 直接打 Responses 接口方便你看清请求体结构curl https://taotoken.net/api/responses \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: gpt-5-codex, input: Create a file src/sum.ts with a function sum(a: number, b: number): number that returns a b. Use apply_patch. }预期结果是模型返回一段apply_patch格式的补丁形如*** Begin Patch *** Add File: src/sum.ts export function sum(a: number, b: number): number { return a b; } *** End Patch在 Codex CLI 里这个补丁会被自动应用你随后用git diff就能看到src/sum.ts已经落盘。验证成功有三个标志返回体里带补丁结构、文件真实写入、git status显示新增文件。如果补丁没应用先检查sandbox.mode是不是read-only只读模式下写操作会被拦下来。再补一个交互式验证确认自适应推理在工作codex How do I undo my last commit but keep all changes?这个问题不需要你提示“快速响应”模型会自己判断这是轻量任务直接给出git reset --soft HEAD~1这类答案。如果它反而长篇大论说明你的提示词里可能混进了多余的引导回去删掉。6. 本篇常见错排查报错一unsupported wire api: chat说明config.toml里wire_api写成了chat或没写。GPT-5-Codex 只支持 Responses改成wire_api responses即可。报错二请求返回 401 或invalid api key先确认TAOTOKEN_API_KEY在当前 shell 里真的存在echo一下看有没有值。如果 Key 是在别的终端设的新开的窗口不会继承。密钥状态可以在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 核对。报错三补丁生成了但文件没变九成是沙箱模式问题。read-only只允许读写操作会被静默拦下或走审批。把sandbox.mode改成workspace-write并确认目标文件在cwd或writable_roots范围内。报错四模型任务做到一半停了检查提示词里有没有“前言”类要求比如“先解释你的思路再动手”。GPT-5-Codex 不支持这类前言要求它会导致提前停止。删掉前言让它直接进入执行。报错五工具调用混乱如果你在enabled里加了自定义工具先砍到只剩shell和apply_patch。工具越多模型在训练分布外的选择越不稳定。报错六联网安装依赖被卡network_access restricted下联网要审批这是预期行为。如果任务确实需要装包在审批弹窗里放行或者临时把策略调宽但别长期开着。7. 把通道和提示词固定下来整套流程跑通后真正要固化的是两件事通道和提示词。通道用 TaoToken 统一 Key 和 API 基址配置里只认https://taotoken.net/api加wire_api responses这样换模型或换任务时不用重配。提示词则保持最小化除了前端这类需要覆盖默认栈的场景其余一律不加章节。如果你要长期跑编码任务或接 Agent建议直接上 Coding Plan把额度和调用集中管理https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。接入过程中遇到协议或参数问题文档里有完整的 Responses 说明https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。想先验证模型对某个提示词的反应模型对话页是最快的试验场https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。最后留一个我踩过的坑config.toml改完记得重启 Codex CLI热加载不一定生效尤其是wire_api这种协议级参数。改完先跑一次codex --version加一个最小请求确认通道通了再上复杂任务能省掉很多“以为是提示词问题、其实是配置没生效”的排查时间。