2025 年 12 月,OpenAI 在 ChatGPT 和 Codex CLI 中悄悄引入了技能系统,这一举措标志着 AI 代理工具生态的重要演进。技能系统最初由 Anthropic 在 10 月推出,OpenAI 在短短两个月内快速跟进,展现了这一架构模式在 AI 工具链中的普适价值。本文将深入分析 OpenAI 技能系统的实现架构,从 ChatGPT 的代码解释器到 Codex CLI 的命令行工具,揭示其背后的设计哲学与工程实现。
技能系统的起源:从 Anthropic 到 OpenAI 的快速演进
技能系统的概念源于一个简单的观察:大型语言模型需要访问特定领域的专业知识和工具,但将这些能力硬编码到模型中既不灵活也难以扩展。Anthropic 在 2025 年 10 月率先提出了技能机制,其核心思想异常简洁 —— 一个技能就是一个包含 Markdown 文档的文件夹,可选地包含脚本和资源文件。
Simon Willison 在分析这一设计时指出:“技能只是包含 Markdown 文件和一些可选额外资源与脚本的文件夹,因此任何能够导航和读取文件系统的 LLM 工具都应该能够使用它们。” 这一轻量级设计使得技能系统具有极高的可移植性。
OpenAI 的快速跟进验证了这一架构的普适性。在 Anthropic 推出技能系统仅两个月后,OpenAI 就在 ChatGPT 的代码解释器和 Codex CLI 中实现了类似机制。这种快速迭代反映了 AI 工具生态的竞争态势,也表明技能系统确实解决了 AI 代理工具的核心痛点:如何在保持安全性的同时提供可扩展的专业能力。
ChatGPT 中的技能实现:/home/oai/skills 文件夹架构
在 ChatGPT 中,技能系统通过代码解释器功能实现。用户可以通过简单的提示访问技能文件夹:
> Create a zip file of /home/oai/skills
这一命令会返回一个包含所有可用技能的 ZIP 文件。当前 ChatGPT 中的技能主要集中在文档处理领域,包括:
- PDF 处理技能:将 PDF 转换为 PNG 图像,通过视觉模型读取布局信息
- 文档处理技能:处理 DOCX 等文档格式
- 电子表格技能:处理 Excel 和 CSV 文件
PDF 处理的独特实现
OpenAI 在 PDF 处理技能中采用了一种独特的方法。传统的 PDF 文本提取会丢失布局、图形和格式信息,而 OpenAI 的解决方案是将 PDF 的每一页渲染为 PNG 图像,然后通过支持视觉的 GPT 模型读取这些图像。
技能文档中明确指导模型:
"Use pdftoppm -png $OUTDIR/$BASENAME.pdf $OUTDIR/$BASENAME to convert PDFs to PNGs. Then open the PNGs and read the images."
这种方法虽然计算成本较高,但能完整保留文档的视觉信息。在实际使用中,当用户要求创建关于特定主题的 PDF 时,ChatGPT 会首先读取技能文档,然后按照指导执行 PDF 创建流程。例如,在创建关于 rimu 树和 kākāpō繁殖季节的 PDF 时,模型花费了 11 分钟时间,期间多次检查渲染结果,甚至因为字体不支持 macron 字符而切换字体。
这种对细节的关注体现了技能系统的价值:它不仅提供工具,还提供最佳实践和工作流程指导。
Codex CLI 技能架构:动态加载与执行环境
Codex CLI 的技能实现更加开放和可扩展。用户可以在~/.codex/skills文件夹中安装自定义技能,并通过--enable skills标志启用技能支持。
技能发现机制
当 Codex CLI 启动并启用技能支持时,它会扫描技能文件夹,识别所有包含 SKILL.md 文件的子文件夹。用户可以通过list skills命令查看所有可用技能:
> list skills
- datasette-plugins — Writing Datasette plugins using Python + pluggy (file: /Users/simon/.codex/skills/datasette-plugin/SKILL.md)
- Discovery — How to find/identify available skills (no SKILL.md path provided in the list)
技能执行流程
Codex CLI 基于单代理 ReAct 循环架构运行。当模型需要执行特定任务时,它会:
- 检查可用技能列表
- 读取相关技能的 SKILL.md 文件
- 按照技能文档中的指导执行操作
- 在需要时调用技能文件夹中的脚本和资源
例如,当用户要求编写 Datasette 插件时,Codex 会:
> Write a Datasette plugin in this folder adding a /-/cowsay?text=hello page that displays a pre with cowsay from PyPI saying that text
模型首先读取 datasette-plugin 技能的 SKILL.md 文件,了解 Datasette 插件开发的最佳实践,然后生成相应的 Python 代码。整个执行过程在隔离的沙箱环境中进行,确保安全性。
技能开发实践:从创建到部署的完整工作流
技能创建规范
一个标准的技能包含以下结构:
skill-name/
├── SKILL.md # 技能文档,包含使用指导和最佳实践
├── scripts/ # 可选:辅助脚本
├── templates/ # 可选:代码模板
└── resources/ # 可选:资源文件
SKILL.md 文档通常包含:
- 技能描述和用途
- 工具使用指导
- 最佳实践和工作流程
- 常见问题和解决方案
- 质量标准和验收标准
实际开发示例
Simon Willison 使用 Claude Opus 4.5 的技能创作技能创建了一个 Datasette 插件开发技能。该技能被安装到 Codex CLI 中:
git clone https://github.com/datasette/skill \
~/.codex/skills/datasette-plugin
技能文档指导开发者如何使用 pluggy 框架创建 Datasette 插件,包括模板代码、测试方法和部署流程。当用户请求创建插件时,Codex 会参考这些指导生成符合 Datasette 生态标准的代码。
技能共享与分发
技能的轻量级特性使其易于共享。开发者可以将技能仓库推送到 GitHub,其他用户只需克隆到本地技能文件夹即可使用。这种基于 Git 的分发机制与开发者的现有工作流无缝集成。
架构优势与工程考量
轻量级规范的威力
技能系统的最大优势在于其极简的设计哲学。与复杂的 API 规范或协议相比,基于文件系统的技能机制具有:
- 零学习成本:开发者熟悉文件系统操作
- 向后兼容:任何能读取文件的工具都能使用技能
- 易于调试:技能内容完全透明,可手动检查和修改
- 灵活扩展:可以包含任意类型的辅助文件
安全与权限控制
技能系统在提供灵活性的同时,也需要严格的安全控制:
- 沙箱执行:Codex CLI 在隔离环境中执行技能操作
- 权限边界:技能只能访问指定文件夹内的资源
- 审核机制:用户可以在执行前审查技能建议的操作
- 资源限制:对执行时间和资源使用设置上限
性能优化策略
技能系统的性能考虑包括:
- 懒加载:只在需要时读取技能文档
- 缓存机制:缓存已解析的技能元数据
- 并行处理:支持多个技能同时准备
- 增量更新:只重新加载修改过的技能
未来展望与标准化需求
跨平台兼容性挑战
随着 Anthropic 和 OpenAI 都实现了技能系统,跨平台兼容性成为重要议题。虽然当前实现相似,但细节差异可能导致技能在不同平台上的行为不一致。
标准化倡议
Simon Willison 指出:“技能基于一个非常轻量的规范(如果这甚至能称为规范的话),但我仍然认为应该在某处正式记录这些规范。” 新成立的 Agentic AI Foundation 可能承担这一标准化工作。
标准化应考虑:
- 技能元数据格式:统一的技能描述规范
- 依赖管理:技能所需工具和库的声明
- 版本兼容性:技能与平台版本的匹配规则
- 安全声明:技能的安全权限要求
企业级应用场景
在企业环境中,技能系统可以:
- 封装内部工具:将公司专用工具封装为技能
- 标准化工作流:确保团队遵循最佳实践
- 知识传承:将专家经验编码为可执行的技能
- 合规审计:记录所有技能使用情况
实施建议与最佳实践
技能设计原则
- 单一职责:每个技能专注于一个特定领域
- 渐进式披露:从简单用例开始,逐步增加复杂性
- 错误处理:提供清晰的错误恢复指导
- 示例驱动:包含完整的端到端示例
开发工作流优化
- 本地测试:在部署前在本地环境中测试技能
- 版本控制:使用 Git 管理技能版本
- 文档优先:先编写完整的技能文档,再实现功能
- 社区反馈:在开源社区中分享和收集反馈
监控与维护
- 使用统计:跟踪技能的使用频率和成功率
- 错误报告:收集技能执行中的错误信息
- 定期更新:根据用户反馈和技术演进更新技能
- 弃用策略:为过时技能提供迁移路径
结论
OpenAI 在 ChatGPT 和 Codex CLI 中实现技能系统的举措,标志着 AI 代理工具从封闭系统向开放生态的转变。技能系统的轻量级设计、基于文件系统的实现、以及跨平台的兼容性潜力,使其成为 AI 工具链演进的重要里程碑。
从工程角度看,技能系统展示了如何通过极简设计解决复杂问题。它不依赖于复杂的协议或中间件,而是利用现有的文件系统抽象,为 AI 模型提供可扩展的专业能力。这种设计哲学值得其他 AI 工具开发者借鉴。
随着技能系统的普及和标准化,我们可以预见一个更加丰富和互操作的 AI 工具生态。开发者可以创建和共享专业技能,企业可以封装内部工具和流程,用户可以获得更加个性化和专业化的 AI 助手体验。
技能系统的成功不仅在于技术实现,更在于其背后的设计理念:信任开发者的创造力,提供最小可行的抽象,让生态自然生长。在 AI 快速发展的今天,这种开放和务实的态度可能是推动技术普及的关键因素。
资料来源:
- Simon Willison, "OpenAI are quietly adopting skills, now available in ChatGPT and Codex CLI", December 12, 2025
- OpenAI Codex CLI documentation and GitHub repository
- Anthropic skills implementation and specification