Hotdry.
ai-systems

OpenAI技能系统在ChatGPT与Codex CLI中的架构实现

分析OpenAI如何快速跟进Anthropic技能机制,在ChatGPT和Codex CLI中实现轻量级技能系统,包括技能发现、动态加载与执行沙箱架构。

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 中的技能主要集中在文档处理领域,包括:

  1. PDF 处理技能:将 PDF 转换为 PNG 图像,通过视觉模型读取布局信息
  2. 文档处理技能:处理 DOCX 等文档格式
  3. 电子表格技能:处理 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 循环架构运行。当模型需要执行特定任务时,它会:

  1. 检查可用技能列表
  2. 读取相关技能的 SKILL.md 文件
  3. 按照技能文档中的指导执行操作
  4. 在需要时调用技能文件夹中的脚本和资源

例如,当用户要求编写 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 规范或协议相比,基于文件系统的技能机制具有:

  1. 零学习成本:开发者熟悉文件系统操作
  2. 向后兼容:任何能读取文件的工具都能使用技能
  3. 易于调试:技能内容完全透明,可手动检查和修改
  4. 灵活扩展:可以包含任意类型的辅助文件

安全与权限控制

技能系统在提供灵活性的同时,也需要严格的安全控制:

  1. 沙箱执行:Codex CLI 在隔离环境中执行技能操作
  2. 权限边界:技能只能访问指定文件夹内的资源
  3. 审核机制:用户可以在执行前审查技能建议的操作
  4. 资源限制:对执行时间和资源使用设置上限

性能优化策略

技能系统的性能考虑包括:

  1. 懒加载:只在需要时读取技能文档
  2. 缓存机制:缓存已解析的技能元数据
  3. 并行处理:支持多个技能同时准备
  4. 增量更新:只重新加载修改过的技能

未来展望与标准化需求

跨平台兼容性挑战

随着 Anthropic 和 OpenAI 都实现了技能系统,跨平台兼容性成为重要议题。虽然当前实现相似,但细节差异可能导致技能在不同平台上的行为不一致。

标准化倡议

Simon Willison 指出:“技能基于一个非常轻量的规范(如果这甚至能称为规范的话),但我仍然认为应该在某处正式记录这些规范。” 新成立的 Agentic AI Foundation 可能承担这一标准化工作。

标准化应考虑:

  1. 技能元数据格式:统一的技能描述规范
  2. 依赖管理:技能所需工具和库的声明
  3. 版本兼容性:技能与平台版本的匹配规则
  4. 安全声明:技能的安全权限要求

企业级应用场景

在企业环境中,技能系统可以:

  1. 封装内部工具:将公司专用工具封装为技能
  2. 标准化工作流:确保团队遵循最佳实践
  3. 知识传承:将专家经验编码为可执行的技能
  4. 合规审计:记录所有技能使用情况

实施建议与最佳实践

技能设计原则

  1. 单一职责:每个技能专注于一个特定领域
  2. 渐进式披露:从简单用例开始,逐步增加复杂性
  3. 错误处理:提供清晰的错误恢复指导
  4. 示例驱动:包含完整的端到端示例

开发工作流优化

  1. 本地测试:在部署前在本地环境中测试技能
  2. 版本控制:使用 Git 管理技能版本
  3. 文档优先:先编写完整的技能文档,再实现功能
  4. 社区反馈:在开源社区中分享和收集反馈

监控与维护

  1. 使用统计:跟踪技能的使用频率和成功率
  2. 错误报告:收集技能执行中的错误信息
  3. 定期更新:根据用户反馈和技术演进更新技能
  4. 弃用策略:为过时技能提供迁移路径

结论

OpenAI 在 ChatGPT 和 Codex CLI 中实现技能系统的举措,标志着 AI 代理工具从封闭系统向开放生态的转变。技能系统的轻量级设计、基于文件系统的实现、以及跨平台的兼容性潜力,使其成为 AI 工具链演进的重要里程碑。

从工程角度看,技能系统展示了如何通过极简设计解决复杂问题。它不依赖于复杂的协议或中间件,而是利用现有的文件系统抽象,为 AI 模型提供可扩展的专业能力。这种设计哲学值得其他 AI 工具开发者借鉴。

随着技能系统的普及和标准化,我们可以预见一个更加丰富和互操作的 AI 工具生态。开发者可以创建和共享专业技能,企业可以封装内部工具和流程,用户可以获得更加个性化和专业化的 AI 助手体验。

技能系统的成功不仅在于技术实现,更在于其背后的设计理念:信任开发者的创造力,提供最小可行的抽象,让生态自然生长。在 AI 快速发展的今天,这种开放和务实的态度可能是推动技术普及的关键因素。


资料来源

  1. Simon Willison, "OpenAI are quietly adopting skills, now available in ChatGPT and Codex CLI", December 12, 2025
  2. OpenAI Codex CLI documentation and GitHub repository
  3. Anthropic skills implementation and specification
查看归档