1. 从 /review 只回“看起来没问题”说起:生产级检查点缺了什么
Codex 里/review跑出来只有一句“看起来没问题”,通常不是命令输错,而是模型入口、Skill 安装和检查点没有对齐。我现在的做法是先去 TaoToken 官网(https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=codex_review_intro)拿 Key,把 Base URLhttps://taotoken.net/api写进 Codex 的config.toml,再把 agent-skills 里的 production-grade 检查点接进/review流程。
很多团队都有类似经历:需求丢给 Codex 或 Claude Code,模型很快补出实现,语法没错、单测也能跑,但真正上线前才发现鉴权漏了一个分支、回滚步骤没写、日志里没有可追踪的 request id。问题不在模型能力,而在交付流程没有把“完成证据”定义清楚。agent-skills 这类项目的价值,是把资深工程师脑子里的隐性步骤写成可调用的 Skill:先定义需求,再拆计划,然后进入实现、验证、评审和发布。每个阶段都有停止条件和验收要求,模型不能靠一句“稍后补测试”跳过去。对生产级交付负责人来说,这比让模型多写几行代码重要得多。
本文按站外底稿重新拆解,给出四类产出:检查点列表、Codex 接入 TaoToken 的配置、/review输出模板、发布前确认项。目标很明确:让 Codex Agent 消耗 Token 去读 diff、跑测试、查依赖、分析风险,而不是在评审阶段只给出一段泛泛而谈的总结。
2. agent-skills 的 production-grade 检查点:六个阶段与证据链
agent-skills 把软件开发整理成六个阶段:定义需求、制定计划、编写代码、验证结果、审查质量、准备发布。仓库里准备了一组 Skill,其中一个负责判断当前任务该调用哪一个,其余 Skill 覆盖需求访谈、规格驱动、计划拆解、测试驱动、调试、接口设计、前端工程、安全加固、性能优化、CI/CD、可观测性等具体任务。它还提供了若干工作流入口,把/spec、/plan、/build、/test、/review、/ship映射到研发阶段。在支持这些命令的宿主中,/build auto可以在用户批准计划后继续拆解并实现,但遇到失败或高风险操作仍会暂停。
这些内容听起来像“流程文档”,但真正决定 production-grade 的不是阶段名称,而是每个 Skill 是否要求 Agent 交出证据。每份SKILL.md通常包含适用时机、操作步骤、常见借口与反驳、异常信号、最终验收要求。普通提示词只说“请帮我写一个功能”,Skill 会进一步规定:先写什么、后写什么、什么时候必须停下来、什么情况下不能继续。
下面这张表是我在生产级交付视角下整理的检查点列表。它不是仓库 README 的复述,而是把 Skill 约束转成可验收项,方便你在 Codex 里逐条要求/review输出证据。
| 阶段 | 检查点 | Agent 必须给出的证据 | 常见失败信号 |
|---|---|---|---|
| 定义需求 | 需求是否被复述并确认 | 用户原话、边界条件、不做清单 | 直接进入实现,未确认歧义 |
| 定义需求 | 是否有可验收规格 | spec 文档、验收条件、错误场景 | 只有一句“实现登录功能” |
| 制定计划 | 是否拆成可验证小步骤 | 任务列表、依赖关系、风险点 | 一次性生成大量文件 |
| 制定计划 | 是否标注停止条件 | 何时需要人工确认、何时回滚 | 失败后继续改,不暂停 |
| 编写代码 | 是否测试先行 | Red-Green-Refactor 记录、测试命令 | 先写实现,后补测试 |
| 编写代码 | 接口契约是否明确 | 输入校验、错误码、返回结构 | 只写 happy path |
| 验证结果 | 失败是否先复现 | 复现步骤、最小案例、日志 | 直接猜测原因并修改 |
| 验证结果 | 性能是否先测量 | benchmark、火焰图、基线数据 | 未测量就优化 |
| 审查质量 | 是否触发专业评审角色 | 代码质量、测试、安全、Web 性能结论 | 只看语法和风格 |
| 审查质量 | 是否引用检查清单 | 完成定义、测试、安全、性能、无障碍、可观测性 | 跳过 references 清单 |
| 准备发布 | 是否有回滚与监控方案 | 回滚步骤、告警、指标、日志字段 | 只给合并请求,不给发布步骤 |
| 全流程 | Skill 是否被正确触发 | evals 记录、路由判断、执行结果 | Skill 未命中,退回普通对话 |
这张表里最容易被忽略的是“常见借口与反驳”。比如测试 Skill 要求按 Red-Green-Refactor 推进,Agent 如果说“先实现,稍后补测试”,Skill 里的反驳规则会阻止它绕过步骤。调试 Skill 要求先复现问题,再定位、缩小范围、修复并增加防护。性能优化要求先测量,再决定改哪里。这些规则看起来啰嗦,但正是它们把“模型生成实现”变成“工程交付”。
项目还带有多个专业评审角色,分别关注代码质量、测试、安全和 Web 性能;references/中准备了完成定义、测试、安全、性能、无障碍与可观测性等检查清单;evals/用于检查 Skill 能否被正确触发、路由和执行。换句话说,production-grade 不是一句形容词,而是由这些检查点、清单和评估共同组成的证据链。
3. 把 TaoToken Base URL 写进 Codex 模型入口
检查点有了,下一步是让 Codex 能稳定消耗 Token 跑评审。你需要先准备三样东西:TaoToken 的 API Key、Base URL、以及 Codex 的config.toml。Key 去 TaoToken 官网创建或复制:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=codex_config 。注意,Codex 的模型入口不要套用 Claude Code 的ANTHROPIC_*环境变量,Codex 走的是自己的 provider 配置。
Codex 常见配置文件路径是~/.codex/config.toml。下面是一份可复制示例。把YOUR_MODEL_ID换成你在 TaoToken 模型列表里看到的模型 ID,把YOUR_API_KEY放到环境变量里,而不是硬编码进仓库。
# ~/.codex/config.toml model = "YOUR_MODEL_ID" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY" [profiles.review] model = "YOUR_MODEL_ID" model_provider = "taotoken" approval_policy = "on-request"然后在 shell 里设置 Key。不要把 Key 提交到 Git,也不要把 Key 写进项目内的.env后推送到远程仓库。
export TAOTOKEN_API_KEY="YOUR_API_KEY"验证 Codex 是否读到配置:
codex --version codex --profile review如果 Codex 提示找不到 provider 或认证失败,按这个顺序排查:
base_url是否写成了https://taotoken.net/api,不要多加/v1或尾部斜杠,除非 TaoToken 文档明确要求。env_key是否与 shell 里的环境变量名完全一致,大小写敏感。model_provider是否指向taotoken,而不是默认 provider。model是否填了当前 Key 可用的模型 ID。- 是否在错误的配置文件里写了
ANTHROPIC_BASE_URL。Codex 不认这套变量。
如果你用 Codex 的原生插件方式安装 agent-skills,要注意 CLI 版本要求。部分能力需要较新的 Codex CLI,升级后重开会话,再通过@spec-driven-development这类名称调用 Skill。README 中的斜杠命令主要由 Claude Code 等适配层提供,Codex 里的调用方式可能不同。有用户反馈在 VS Code 版 GitHub Copilot 安装后找不到/spec等命令,后续文档已经区分 Copilot CLI 与 VS Code 的安装及调用方式。跨工具不等于界面一致,先确认宿主支持哪种入口,再决定用斜杠命令还是@调用。
4. 让 Codex 消耗 Token 跑 /review:提示词、输出与证据链
配置好模型入口后,/review不应该只是“请 review 这段代码”。它应该是一次有明确输入、明确输出、明确停止条件的评审任务。下面是一段可直接放进 Codex 会话的提示词模板。它会消耗 Token 去读文件、跑测试、分析 diff,所以建议在独立分支或干净工作区里执行。
你正在以生产级交付负责人视角执行 /review。 输入: - 当前 git diff - 相关 spec / 需求描述 - 测试命令与最近一次测试输出 请按以下检查点输出,不要直接改代码: 1. 需求一致性:变更是否覆盖 spec,是否有未实现或超范围实现。 2. 测试证据:列出执行的测试命令、通过/失败结果、未覆盖路径。 3. 安全:输入校验、鉴权、密钥管理、依赖风险、注入风险。 4. 性能:是否先测量后优化,是否引入 N+1、重复计算或大对象拷贝。 5. 可观测性:日志、指标、追踪、告警是否覆盖关键路径。 6. 回滚与发布:回滚步骤、数据迁移、开关、灰度策略。 7. 阻塞项:区分 must-fix、should-fix、follow-up。 8. 人工确认项:列出必须由人复核的文件、命令或输出。 约束: - 不要连接生产数据库。 - 不要执行破坏性命令。 - SQL 和部署命令只输出建议,由我本地执行。 - 找不到证据时,写“缺少证据”,不要猜测。这段提示词的关键是“找不到证据时写缺少证据”。很多/review输出看起来很长,但其实是模型在补全合理故事。生产级评审要的是可验证事实:命令是什么、输出是什么、diff 里哪一行、风险对应哪个检查点。
/review输出可以固定成下面这个结构,方便贴到合并请求或发布单里:
## Review 结论 ### 1. 需求一致性 - 结论: - 证据: - 缺口: ### 2. 测试证据 - 已执行命令: - 通过结果: - 未覆盖路径: - 缺少证据: ### 3. 安全 - 输入校验: - 鉴权: - 密钥与依赖: - 风险等级: ### 4. 性能 - 是否先测量: - 基线数据: - 变更影响: - 风险等级: ### 5. 可观测性 - 日志: - 指标: - 追踪: - 告警: ### 6. 回滚与发布 - 回滚步骤: - 数据迁移: - 灰度/开关: - 人工确认: ### 7. 阻塞项 - must-fix: - should-fix: - follow-up:这份输出不是终点,而是发布前确认项的输入。作为生产级交付负责人,你要检查的不是“模型说没问题”,而是“模型是否给出了能被人复核的证据”。测试输出、代码差异、安全检查仍要由人确认。Skill 能要求 Agent 先写规范、运行测试并提供证据,却不能代替代码审查,也无法保证所有模型都同样严格地遵循步骤。
如果你准备让 Codex 持续跑这类评审,建议把/review拆成两种模式:
- 快速模式:只读 diff 和测试输出,输出阻塞项,适合每次 push 后跑。
- 完整模式:读 spec、跑测试、查依赖、分析安全与性能,适合合并前和发布前跑。
完整模式会消耗更多 Token,但换来的是更完整的证据链。TaoToken 的模型对话入口适合先验证提示词和输出结构,Coding Plan 更适合把评审流程放进日常开发循环。相关入口放在文末 CTA。
5. Claude Code、CC Switch、Codex:配置边界与三件套
很多团队同时用 Codex 和 Claude Code,最容易踩的坑是把 Claude Code 的配置复制到 Codex。两者协议和变量不同:Claude Code 常用settings.json和ANTHROPIC_*,Codex 用config.toml和model_providers。不要把ANTHROPIC_BASE_URL、ANTHROPIC_API_KEY写进 Codex 配置,也不要把 Codex 的base_url写到 Claude Code 的ANTHROPIC_BASE_URL之外的位置。
Claude Code 的settings.json可以这样写。再次提醒,YOUR_API_KEY要替换成你在 TaoToken 官网创建的真实 Key,YOUR_MODEL_ID按模型列表填写。
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "YOUR_API_KEY", "ANTHROPIC_MODEL": "YOUR_MODEL_ID" } }Codex 继续使用上一节的config.toml:
model = "YOUR_MODEL_ID" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY"如果你用 CC Switch 管理多套配置,建议准备“三件套”:
| 组件 | 用途 | 注意点 |
|---|---|---|
Claude Codesettings.json | 管理 Claude Code 的 Base URL、Key、模型 | 使用ANTHROPIC_* |
Codexconfig.toml | 管理 Codex 的 provider、模型、审批策略 | 使用model_providers,不要套ANTHROPIC_* |
| TaoToken API Keys 页面 | 创建、轮换、禁用 Key | 去官网控制台操作,不要写进仓库 |
CC Switch 解决的是“切换配置”的问题,不改变工具本身的协议。Claude Code 仍然读settings.json,Codex 仍然读config.toml。把两者混在一起,最常见的结果是 Claude Code 能跑,Codex 报认证失败,或者 Codex 能跑,Claude Code 提示模型不存在。
创建和轮换 Key 的入口在 TaoToken 官网:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=cc_switch_keys 。生产环境建议按项目拆 Key,不要多个工具共用一个长期 Key。需要撤销时,先在控制台禁用旧 Key,再更新本地配置,最后重开会话验证。
6. 发布前确认项:从 /review 结论到上线门禁
/review跑完不代表可以发布。它只是把风险摆到桌面上,最终门禁仍然要由人确认。下面是我在生产级交付里常用的发布前确认项。你可以把它复制到发布单,逐项打勾。
| 确认项 | 负责人 | 通过标准 | 证据位置 |
|---|---|---|---|
| 需求与 spec 一致 | 交付负责人 | 无未确认歧义,无超范围实现 | spec 链接、diff |
| 计划已拆解并可验证 | 开发 | 每个任务有验收条件 | 任务列表 |
| 测试命令已执行 | 开发 | 关键路径测试通过,失败项有解释 | CI 日志、本地输出 |
| 安全审查完成 | 安全/开发 | 无 must-fix 安全项 | 依赖扫描、鉴权检查 |
| 性能有基线 | 开发 | 变更前后有可对比数据 | benchmark 输出 |
| 可观测性覆盖 | 开发/运维 | 日志、指标、追踪、告警可定位问题 | dashboard、日志字段 |
| 回滚方案可执行 | 运维/开发 | 回滚步骤经过演练或评审 | 发布单 |
| 人工复核 diff | 交付负责人 | 关键文件逐行确认 | 合并请求 |
| 发布后验证 | 运维/开发 | 有明确成功指标和观察窗口 | 监控面板 |
这张表里最容易被跳过的是“回滚方案可执行”和“发布后验证”。模型可以在/review里写出回滚步骤,但步骤是否真的能执行,需要人在隔离环境里验证。不要让 Agent 直接连接生产数据库,也不要让它执行破坏性命令。SQL、迁移命令、部署命令由读者在本地或隔离环境执行,Agent 只输出建议和检查清单。
另外,安装 Skill 时要注意两个边界:
第一,用npx单独安装一个 Skill 时,通常只会复制对应的skills/<name>/目录,不会同时带上仓库根目录里的共享references/。Skill 仍能运行,但引用到补充检查清单的路径可能失效。需要完整材料时,应采用整仓集成、克隆仓库,或把需要的清单复制到 Skill 自己的references/目录。
第二,Skill 能要求 Agent 先写规范、运行测试并提供证据,却不能代替代码审查。准备合并或上线时,测试输出、代码差异和安全检查仍要由人确认。把/review输出当成“必须处理的清单”,而不是“自动通过的证书”。
如果你还没有 Key,可以先去 TaoToken 官网创建:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=review_checklist 。拿到 Key 后,把 Base URLhttps://taotoken.net/api写进 Codex 的config.toml,再按本文的提示词跑一次完整/review。重点观察三件事:它是否给出了测试命令和输出,是否把缺失证据标出来,是否把 must-fix 和 follow-up 分开。如果这三点都做到,说明你的 production-grade 检查点已经接上了。
7. 文末 CTA:模型对话、Coding Plan、创建 Key、Claude Code 文档
如果你准备把上面的流程跑通,建议按这个顺序走:
先到模型对话入口验证提示词和
/review输出结构:
https://taotoken.net/models/detail/chat?utm_source=taotoken_aicg_blog_end&utm_content=codex_review_chat如果要把评审放进日常开发循环,查看 Coding Plan:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=codex_review_plan创建或轮换 API Key,按项目拆分 Key:
https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=codex_review_keys如果你同时使用 Claude Code,参考 Claude Code 文档配置
settings.json和ANTHROPIC_*:
https://taotoken.net/doc/ClaudeCodeAnthropic?utm_source=taotoken_aicg_blog_end&utm_content=codex_review_claude_code
Codex 侧记住三件事:config.toml里写base_url = "https://taotoken.net/api",Key 用环境变量TAOTOKEN_API_KEY,不要把ANTHROPIC_*套到 Codex。配置完成后,用codex --profile review启动评审会话,让 Agent 消耗 Token 去读 diff、跑测试、查风险,最后由你按发布前确认项逐条签字。