OpenAI悄然推出技能功能,现已在ChatGPT和Codex CLI中可用

摘要

OpenAI已在ChatGPT和Codex CLI中引入技能机制,技能以含Markdown文件及资源的文件夹形式存在,可处理PDF、文档等任务。ChatGPT通过特定文件夹支持技能,Codex CLI需手动安装,二者均展现出实用价值。

如果你关注AI工具的新功能,最近可能会发现一个有趣的变化:OpenAI悄悄在旗下的ChatGPT和Codex CLI中加入了“技能”(Skills)功能。这种功能最早由Anthropic推出,而OpenAI的快速跟进,让不少人好奇:这些技能到底是什么?它们能做些什么?又该怎么用呢?今天我们就来详细聊聊这个话题。

什么是“技能”?

要理解OpenAI的新功能,得先搞清楚“技能”到底是什么。其实很简单,一个技能就是一个文件夹,里面包含一个Markdown文件,可能还有一些额外的资源和脚本。

这种设计特别巧妙,因为任何能浏览和读取文件系统的大语言模型工具,理论上都能使用这些技能。也正因为如此,当Anthropic在10月推出技能机制时,就有人猜测其他平台很快会跟进——而OpenAI确实这么做了,而且速度不慢,现在ChatGPT和Codex CLI都已经支持技能功能了。

ChatGPT中的技能:藏在代码解释器里的新能力

怎么发现ChatGPT里的技能?

ChatGPT的技能功能藏在它的“代码解释器”(Code Interpreter)功能里。今年12月,有人发现代码解释器里多了一个特殊的文件夹:/home/oai/skills

想看看这个文件夹里有什么?很简单,你只需要在ChatGPT中输入这样一个提示:“Create a zip file of /home/oai/skills”(把/home/oai/skills文件夹创建成zip压缩包)。执行后,ChatGPT就会生成一个包含所有技能的压缩包,你可以下载下来查看里面的内容。

从目前的内容来看,ChatGPT的技能主要覆盖了三类任务:电子表格处理、docx文档处理和PDF处理。其中,PDF处理的技能内容尤其详细,值得我们好好看看。

PDF处理技能:不只是提取文字这么简单

skills/pdfs/skill.md文件里,详细记录了PDF处理的指南,包括阅读、创建和审核三个方面,能看出设计得相当细致。

怎么读取PDF?

读取PDF时,技能推荐了两种方法,而且强调要结合使用:

  • 先用pdftoppm -png $OUTDIR/$BASENAME.pdf $OUTDIR/$BASENAME命令把PDF转换成PNG图片。这样做的好处是能保留PDF里的布局、图表、表格等视觉信息,不会像单纯提取文字那样丢失关键内容。
  • 同时,也可以用pdfplumber工具辅助读取。但要注意,它不能替代图片转换,只能作为补充。
  • 特别提醒:尽量不要只用Python打印文字内容,因为文字提取很容易漏掉图表、表格等重要细节。

用什么工具创建PDF?

创建PDF时,技能明确了工具的优先级:

  • 首选reportlab库。大多数情况下,都应该用它来生成PDF。
  • 如果需要其他库(比如pypdf、pyMuPDF),可以使用,但可能需要先通过pip install安装。
  • 关键步骤:每次对PDF做了重要更新(比如添加内容、调整布局、修改样式)后,必须把PDF转换成图片检查格式是否正确。具体命令是pdftoppm -png $INPUT_PDF $OUTPUT_PREFIX,然后要仔细查看每一张导出的PNG图片。如果有问题,就修改源文件,重新转换检查,直到页面显示正常。

对PDF质量有什么要求?

技能对PDF的质量有明确标准,确保输出的是专业、规范的文档:

  • 视觉设计要统一:字体、间距、页边距、调色板要保持一致,章节分隔要清晰。
  • 避免明显的渲染问题:不能有文字被截断、元素重叠、黑块、表格错乱或无法识别的字符。文档看起来应该是精心制作的,而不是粗糙的模板输出。
  • 图表、表格、图片必须清晰:要对齐、有正确的标签,图例和坐标轴不用放大就能看清。
  • 文字可读性要好:正常查看时就能轻松阅读,避免大段无意义的文字或密集、无结构的项目符号列表,要善用空白分隔内容。
  • 特殊字符注意事项:不能使用U+2011非断字连字符或其他unicode短横线,因为可能会出现显示问题。

用ChatGPT的技能实战:生成一份关于鹦鹉繁殖的PDF

光说不练假把式,有人已经实际测试了ChatGPT的PDF技能。测试的任务是:“Create a PDF with a summary of the rimu tree situation right now and what it means for kakapo breeding season”(生成一份PDF,总结当前rimu树的情况及其对鸮鹦鹉繁殖季节的影响)。

整个过程很有意思,ChatGPT先是明确表示:“Reading skill.md for PDF creation guidelines”(正在阅读skill.md中的PDF创建指南),然后开始“Searching rimu mast and Kākāpō 2025 breeding status”(搜索rimu树结果情况和2025年鸮鹦鹉的繁殖状态)。

从开始到生成最终的PDF,大约花了11分钟。为什么这么久?因为ChatGPT在过程中非常严谨,会不断检查和调整自己的工作。

比如,它第一次生成PDF后,发现“kākāpō”(鸮鹦鹉)这个词中的长音符(macrons)在所选字体(Helvetica)中无法显示,出现了黑色方块。于是它马上调整:“Fixing font issues with macrons. The page is showing black squares for words like ‘kākāpō,’ probably because Helvetica can’t handle macrons. I’ll switch to a font that supports them, such as DejaVu Sans or Noto Sans. I’ll register both regular and bold fonts, then apply them to the document. I’ll update the footer to note the issue with Helvetica. Time to rebuild the PDF!”(修复长音符的字体问题。页面上“kākāpō”等词显示为黑色方块,可能是因为Helvetica不支持长音符。我会切换到支持它们的字体,比如DejaVu Sans或Noto Sans。我会注册常规和粗体两种字体,然后应用到文档中。我会在页脚注明Helvetica的问题。现在重新生成PDF!)

最终生成的PDF内容专业、格式规范,包含了关键数据:

  • 鸮鹦鹉种群数量(DOC官方统计):237只
  • 繁殖触发条件(rimu树结果):超过10%的rimu树枝梢结果
  • 2026年rimu树结果预测(DOC监测):繁殖岛屿上约50-60%的rimu树结果
  • 达到繁殖年龄的雌性数量(DOC 2025年规划数据):约87只(可能几乎所有都会筑巢)

Codex CLI中的技能:给命令行工具添“超能力”

Codex CLI的技能支持从何而来?

除了ChatGPT,OpenAI的开源工具Codex CLI也在两周前(相对于文章发布时间,即2025年12月初)通过一个名为“feat: experimental support for skills.md”的PR(拉取请求)加入了技能支持。最新的相关文档可以在Codex CLI的docs/skills.md中找到。

根据文档,Codex CLI的技能机制是这样的:任何放在~/.codex/skills文件夹里的文件夹,都会被当作一个技能。

怎么在Codex CLI中使用技能?

有人已经实际操作过,我们可以跟着学一下步骤:

  1. 创建技能:首先需要有一个技能。比如,有人用Claude Opus 4.5的技能创作功能,创建了一个“创建Datasette插件”的技能,并放在了GitHub仓库(https://github.com/datasette/skill)中。

  2. 安装技能:把技能文件夹克隆到Codex CLI的技能目录。具体命令是:

git clone https://github.com/datasette/skill \
  ~/.codex/skills/datasette-plugin
  1. 启用技能:运行Codex CLI时,需要加上--enable skills参数。比如:
cd /tmp
mkdir datasette-cowsay
cd datasette-cowsay
codex --enable skills -m gpt-5.2
  1. 查看技能:在Codex CLI的交互界面中,输入“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)
  1. 使用技能:直接提出需要完成的任务即可。比如输入:“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插件,添加一个/-/cowsay?text=hello页面,用PyPI的cowsay工具在pre标签中显示输入的文字)。

测试结果是成功的!生成的插件代码可以正常工作。如果想体验,可以用uvx工具运行:

uvx --with https://github.com/simonw/datasette-cowsay/archive/refs/heads/main.zip \
  datasette

然后访问http://127.0.0.1:8001/-/cowsay?text=This+is+pretty+fun,就能看到一个ASCII艺术风格的奶牛图案,旁边显示“This is pretty fun”。

技能:AI工具的“模块化插件”未来?

早在10月Anthropic推出技能机制时,就有人认为这可能比MCP(多模态能力)更重要。而OpenAI在12月就快速跟进,在ChatGPT和Codex CLI中加入技能支持,这进一步说明技能机制的价值。

目前来看,技能的规范还非常简单,甚至算不上正式的规范。但这种“轻量级”的设计,反而让它更容易被不同平台采纳。有人建议,新成立的Agentic AI Foundation(AAIF)或许可以牵头,把技能机制正式文档化,让它成为更通用的标准。

对于用户来说,技能的出现意味着AI工具的能力可以更灵活地扩展。不需要等待官方更新,只要有合适的技能,就能让AI做更多具体的、专业的任务——比如处理特定格式的文件、开发特定类型的插件等。

关于OpenAI技能的常见问题(FAQ)

1. 技能只能处理PDF、文档和插件开发吗?

目前ChatGPT和Codex CLI中已发现的技能主要覆盖这些领域,但技能的本质是“文件夹+Markdown+资源”,理论上可以扩展到任何任务。未来可能会有更多类型的技能出现。

2. 普通用户能自己创建技能吗?

从Codex CLI的使用案例来看,是可以的。只要按照技能的格式(包含必要的Markdown文件和资源)创建文件夹,再放到指定目录,就能被AI工具识别。比如有人用Claude的技能创作功能生成了自定义技能。

3. ChatGPT的技能文件夹/home/oai/skills能修改吗?

目前来看,普通用户无法直接修改这个文件夹里的内容,只能通过提示让ChatGPT使用其中的技能。

4. 使用Codex CLI的技能需要付费吗?

Codex CLI是开源工具,本身免费。但使用时需要指定模型(如-m gpt-5.2),这部分可能需要OpenAI的API密钥,具体费用取决于OpenAI的定价政策。

5. 技能和传统的API调用有什么区别?

技能更像是“操作指南”,告诉AI如何一步步完成任务,依赖AI对文件的读取和理解;而API调用是直接调用外部服务的接口。技能的优势在于灵活性更高,不需要依赖外部服务的接口设计。

6. 为什么处理PDF时要转换成PNG?

因为单纯的文字提取会丢失布局、图表、表格等视觉信息,而转换成PNG能让AI(尤其是支持视觉能力的模型,如GPT-5.2)完整理解PDF的内容,避免信息遗漏。

7. 技能的执行速度为什么有快有慢?

比如生成PDF用了11分钟,这是因为AI会严格按照技能中的指南检查和调整工作。像字体问题的修正、格式的反复检查等,都会增加处理时间,但能保证输出质量。

OpenAI对技能机制的采纳,让我们看到了AI工具向“模块化”“可扩展”发展的趋势。无论是ChatGPT中处理文档的实用功能,还是Codex CLI中辅助开发的便捷性,都说明技能能给用户带来实实在在的价值。随着技能规范的完善和更多技能的出现,我们或许会看到AI工具在更多专业领域发挥作用——而这一切,都始于一个简单的想法:用文件夹和Markdown来定义“怎么做”。