
1. 从一次技能失效说起Codex Agent Skills 到底解决什么问题你可能遇到过这种场景团队里有一套固定的代码审查流程每次都要在对话里重复粘贴同样的提示词步骤一多就容易漏掉某一步。Codex Agent Skills 就是为这类重复性工作流准备的机制它把「做什么、什么时候做、怎么做」写进一个标准目录让 Codex 在合适的时机自动加载并执行。简单说Skill 是给 Codex 写的标准操作流程Plugins 则是把这套流程分发给别人的打包格式。我第一次接触这套系统时最困惑的不是怎么写指令而是搞不清 SKILL.md、skill-creator、Plugins 三者的关系。实测下来可以这样理解SKILL.md 是技能的核心文件skill-creator 是帮你生成这个文件的交互式工具Plugins 是当你想把技能分享给其他开发者时的分发容器。三者串起来就是一条从编写到落地的完整路径。这套机制适合谁如果你在团队里维护固定的代码规范、部署流程、文档模板或者你希望把某个高频操作固化下来减少重复输入Agent Skills 就值得花时间配置。它同时支持 Codex CLI、IDE 扩展和 Codex App本地开发和仓库内共享都能覆盖。Codex 采用渐进式信息披露机制管理上下文窗口。启动时只加载每个技能的名称、描述和文件路径作为初始列表只有决定使用某个技能时才读取完整的 SKILL.md。初始列表的字符数被限制在模型上下文窗口的约 2%上下文窗口未知时限制在 8000 字符。这意味着技能数量多了之后description 的编写质量直接决定匹配准确率。2. TaoToken 前置准备把 API Key 和 Base URL 配到位在动手写 SKILL.md 之前需要先把 Codex 的模型调用通道配好。TaoToken 提供兼容的 API 接入方式你可以在官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 了解接入方式API 地址是 https://taotoken.net/api。这一步的目的是让 Codex 能正常调用模型否则后面技能注册了也无法验证。配置的核心是三件套Base URL、API Key、Model ID。以 Codex 的配置文件为例路径通常在~/.codex/config.toml。你需要先到控制台创建 API Key地址是 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 创建后复制保存这个 Key 只显示一次。拿到 Key 之后在 config.toml 里写入模型提供方配置。下面是一个可复制的片段注意把sk-你的实际Key替换成真实值# 文件路径~/.codex/config.toml model claude-sonnet-4-20250514 model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chat这里env_key指定的是环境变量名你需要把 Key 写进环境变量而不是硬编码在配置文件里。在终端执行export TAOTOKEN_API_KEYsk-你的实际Key如果你用的是 Windows PowerShell对应命令是$env:TAOTOKEN_API_KEYsk-你的实际Key。写入 shell 配置文件如~/.bashrc或~/.zshrc可以让它持久生效。Model ID 的选择上如果你主要做代码类任务可以选 Claude 系列中偏 coding 的型号如果只是验证技能是否触发任意可用模型都能跑通。配置完成后可以用模型对话页面 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 先确认通道正常再进入技能编写环节。这一步踩过的坑是有人把 base_url 写成了带/v1的路径结果请求 404。TaoToken 的 API 地址就是https://taotoken.net/api不要自行拼接版本号。另外wire_api字段要和实际协议匹配chat 和 responses 两种模式不能混用。3. 可复制配置SKILL.md 目录结构与 skill-creator 实战技能的本质是一个包含 SKILL.md 的目录。最小结构只需要一个文件但完整结构可以包含脚本、参考文档和资源。下面是推荐的目录布局my-skill/ ├── SKILL.md # 必备元数据 执行指引 ├── scripts/ # 可选可执行脚本 ├── references/ # 可选参考文档 ├── assets/ # 可选模板、静态资源 └── agents/ └── openai.yaml # 可选UI 元数据与调用策略SKILL.md 的头部是 YAML 格式的元数据必须包含 name 和 description 两个字段。description 的写法直接决定隐式匹配的准确率建议把核心触发词前置。下面是一个代码审查技能的完整示例--- name: code-review description: 当用户要求审查代码、检查代码质量、review PR 时触发。对指定文件执行规范检查并输出问题清单。 --- # 代码审查技能 ## 执行步骤 1. 读取用户指定的文件或目录 2. 按以下维度检查命名规范、错误处理、边界条件、性能隐患 3. 每个问题标注严重程度高/中/低和行号 4. 输出格式为 Markdown 表格 ## 输出模板 | 行号 | 严重程度 | 问题描述 | 建议修改 | |------|----------|----------|----------|如果你不想手写可以用内置的 skill-creator 交互式生成。在 Codex 中输入$skill-creator启动创建流程它会依次询问三个问题这个技能做什么、什么时候触发、纯指令还是包含脚本。回答完之后它会生成目录框架你再补充具体指令内容。对于需要声明工具依赖的技能在agents/openai.yaml里配置。下面是一个带 MCP 工具依赖的片段# 文件路径agents/openai.yaml interface: display_name: 代码审查 short_description: 对指定文件执行规范检查 brand_color: #3B82F6 policy: allow_implicit_invocation: true dependencies: tools: - type: mcp value: openaiDeveloperDocs description: OpenAI Docs MCP server transport: streamable_http url: https://developers.openai.com/mcpallow_implicit_invocation默认是 true设为 false 后 Codex 不会根据提示词自动匹配该技能但显式用$技能名调用仍然有效。这个开关适合那些不希望被误触发的技能。技能的存储位置分四个层级。仓库级别从当前工作目录向上扫描到仓库根目录查找.agents/skills目录用户级别在$HOME/.agents/skills管理员级别在/etc/codex/skills系统级别由内置打包。同名技能不会被合并两者都会出现在选择器中所以命名时要注意避免冲突。如果要临时禁用某个技能而不删除文件在~/.codex/config.toml里加配置# 文件路径~/.codex/config.toml [[skills.config]] path /path/to/skill/SKILL.md enabled false修改后需要重启 Codex 生效。4. 验证请求技能注册、调用与结果确认配置写完之后最关键的一步是验证技能是否真的被加载和触发。Codex 会自动检测技能文件的变更但如果没有立即生效重启 Codex 即可。验证分两步走。第一步确认技能出现在列表中在 CLI 或 IDE 中输入/skills命令应该能看到你刚创建的技能名称和描述。如果没出现检查 SKILL.md 的 YAML 头部格式是否正确name 和 description 字段是否都有值。第二步测试触发。显式调用最直接输入$code-review加上你要审查的文件路径比如$code-review 请审查 src/utils/parser.js显式调用时 Codex 不做匹配判断直接加载完整 SKILL.md 并执行。你应该能看到它按你定义的步骤逐条输出最后给出 Markdown 表格格式的问题清单。隐式匹配的测试方式是直接描述任务而不引用技能名比如输入「帮我检查一下 parser.js 的代码质量」。如果 description 写得准确Codex 会自动选中这个技能。实测下来description 里前置了「审查代码、检查代码质量」这些触发词之后隐式匹配的成功率明显提升。验证成功的标志有三个技能出现在/skills列表中、显式调用能按步骤执行、隐式匹配能在相关任务中被选中。三个都通过说明技能注册和调用链路是通的。如果你需要安装别人分享的精选技能可以用$skill-installer。例如安装 linear 技能# 安装 linear 技能到本地 Codex $skill-installer linearskill-installer 适合本地设置和实验如果你要把自己的技能分发给其他开发者应该用 Plugins 机制打包。一个 Plugin 可以包含一个或多个技能还可以选择性打包应用映射和 MCP 服务器配置。5. 常见报错排查401、技能不触发、列表被截断配置过程中最容易碰到的问题集中在认证和匹配两个环节。下面按真实报错对照排查。401 Unauthorized这个报错说明 API Key 没有正确传入。检查三个地方环境变量TAOTOKEN_API_KEY是否在当前终端会话中生效用echo $TAOTOKEN_API_KEY确认、config.toml 里的env_key字段名是否和实际环境变量名一致、Key 是否复制完整没有多余空格。如果是在 IDE 扩展里报 401可能是 IDE 没有继承终端的环境变量需要在 IDE 的设置里单独配置。local proxy failed / connection refused这类报错通常是 base_url 写错了。确认写的是https://taotoken.net/api不要加/v1或其他路径后缀。另外检查网络是否能正常访问该地址可以用curl https://taotoken.net/api测试连通性。技能不触发隐式匹配失败先检查 description 是否清楚描述了使用场景和边界。把核心触发词放在描述最前面避免关键信息出现在后半部分被截断。如果某个技能不需要隐式匹配在agents/openai.yaml里把allow_implicit_invocation设为 false只用显式调用。reading choices 相关报错这类问题通常出现在模型返回格式和预期不符时。检查wire_api字段是否和实际使用的协议匹配chat 模式对应wire_api chat。如果切换过模型确认新模型支持的协议类型。初始技能列表被截断当安装的技能过多初始列表超出上下文窗口 2% 的限制时Codex 会先缩短描述文字仍然超出则部分技能不显示并给出警告。解决办法是精简每个技能的 description确保最核心的触发词在最前面。对于当前任务不常用的技能用[[skills.config]]暂时禁用。OAuth 相关报错如果你在配置过程中看到 OAuth 认证失败的提示说明当前走的是 OAuth 流程而不是 API Key 流程。检查 config.toml 里是否正确设置了model_provider和对应的[model_providers.xxx]段。使用 API Key 方式时不需要走 OAuth 授权。技能更新后没生效Codex 会自动检测文件变更但有时缓存没刷新。重启 Codex 是最直接的解决办法。如果重启后仍然没出现检查文件路径是否在扫描范围内仓库级别只扫描.agents/skills目录。排查时建议按「认证 → 地址 → 技能格式 → 匹配逻辑」的顺序逐层确认不要一上来就改技能内容。大部分问题出在前两步。6. 从 Skills 到 Plugins分发路径与长期使用建议当你把技能调通之后下一步考虑的是怎么让它持续产生价值。如果只是自己用放在$HOME/.agents/skills就够了。如果要在团队仓库里共享放在仓库根目录的.agents/skills下所有子目录都能扫描到。需要分发给其他开发者、打包多个技能、或与应用集成一起发布时就该用 Plugins 格式了。Skills 是编写格式Plugins 是分发格式两者不是替代关系而是协作关系。你先用 Skills 把工作流设计好验证通过后再打包成 Plugin 分发。长期使用有几个实用建议。一个技能只做一件事职责单一便于维护和匹配。能用指令描述的流程就不要写脚本除非需要确定性行为或调用外部工具。指令用祈使句式明确每个步骤的输入和输出。写完 description 后用实际提示词测试匹配效果确保精准度。如果你需要长期跑编码类任务或 Agent 工作流可以了解 Coding Plan 的接入方式 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 它在调用配额和稳定性上做了针对性优化。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 可以查到完整的配置说明和字段解释。技能系统的价值在于把重复劳动固化下来让 Codex 在合适的时机自动执行标准流程。从写第一个 SKILL.md 开始到用 skill-creator 加速创建再到用 Plugins 分发给团队这条路径走通之后你会发现很多之前需要反复粘贴提示词的工作都可以交给技能来处理。