Agent Skills 允许你在托管和本地 shell 环境中上传并复用带有版本控制的文件包。
我们支持两种形式的 Skills:本地执行和基于托管容器的执行。要在你自己的机器上运行代码,请使用以下工具的本地执行模式: shell 工具.
什么是 skill
一个 skill 是一个带有版本控制的文件包以及一个 SKILL.md 清单(前置元数据 + 指令)。Skills 是模块化的指令,您可以使用它们将流程和约定编纂成文,涵盖从公司风格指南到多步骤工作流的各个方面。
Skills 兼容开放的 Agent Skills 标准.
1
2
3
4
5
6
---
name: basic-math
description: Add or multiply numbers.
---
Use this skill when you need a quick sum or product of numbers.创建一个 skill
您可以将目录作为 multipart 表单数据上传,或者上传一个包含单个顶级文件夹的 .zip 其中包含一个顶级文件夹。
选项 1:目录上传 (multipart)
上传多个 files[] 部分。每个部分包含单个顶层文件夹内的路径。
1
2
3
4
curl -X POST 'https://api.openai.com/v1/skills' \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F 'files[]=@./basic_math/SKILL.md;filename=basic_math/SKILL.md;type=text/markdown' \
-F 'files[]=@./basic_math/calculate.py;filename=basic_math/calculate.py;type=text/plain'选项 2:Zip 上传
将顶层文件夹压缩为 Zip 并上传该 Zip 文件。
1
2
3
curl -X POST 'https://api.openai.com/v1/skills' \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F 'files=@./basic_math.zip;type=application/zip'在托管 Shell 中使用技能
要在托管 Shell 环境中挂载技能,请通过以下方式进行附加 tools[].environment.skills 在调用 Shell 工具时。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
curl -L 'https://api.openai.com/v1/responses' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-5.5",
"tools": [
{
"type": "shell",
"environment": {
"type": "container_auto",
"skills": [
{ "type": "skill_reference", "skill_id": "<skill_id>" },
{ "type": "skill_reference", "skill_id": "<skill_id>", "version": 2 }
]
}
}
],
"input": "Use the skills to add 144 and 377, then compute triangle area with base 9 height 13."
}'提示行为
技能挂载后,模型可自行决定何时使用。若需更具确定性的行为,请明确指示模型在适当时“使用该 <skill name> 技能”。
在本地 Shell 模式下使用技能
技能也可在本地 Shell 模式下使用,但本地 Shell 和托管 Shell 不支持相同的技能附加格式。
- 托管的 shell 支持上传的
skill_reference附件,包括经过筛选的技能和显式版本。 - 本地 shell 不支持
skill_reference附件。相反,请在您控制的运行时环境中通过本地文件路径提供技能文件。
使用 Shell 指南 以了解本地 shell 执行的详细信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
curl -L 'https://api.openai.com/v1/responses' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-5.5",
"tools": [
{
"type": "shell",
"environment": {
"type": "local",
"skills": [
{
"name": "csv-insights",
"description": "Summarize CSV files and produce a markdown report.",
"path": "<path-to-skill-folder>"
}
]
}
}
],
"input": "Use the csv-insights skill and run locally to summarize today\'s CSV reports in this repo."
}'用户提示词中的技能
当技能可用于该工具时,平台会将每个技能的 name, description,且 path 添加到用户提示词上下文中,以便模型知道该技能的存在。
模型会根据此元数据决定是否调用技能。如果模型调用技能,它会使用 path 从 读取完整的 Markdown 指令 SKILL.md.
技能指令属于用户提示词输入(而非系统提示词输入),因此它们会与其他用户提供的指令享有相同的处理优先级。为了进行显式控制,您仍然可以指示模型“使用 <skill name> 技能”。
限制与验证
SKILL.md文件匹配不区分大小写。- 每个技能包中恰好只允许包含一个
skill.md/SKILL.md文件。 - 技能前置数据验证遵循 代理技能规范.
- ZIP 压缩包的最大上传大小为
50 MB. - 每个技能版本的最大文件数量为
500. - 未压缩文件的最大大小为
25 MB.
网络访问的安全性
检查与 Responses API 配合使用的任何技能至关重要。技能会带来安全风险,例如由提示词注入驱动的数据泄露。请仔细审查 风险与安全 部分。
版本控制与管理
版本指针
default_version在未提供版本时使用。latest_version追踪最新上传的内容。skill_reference.version接受整数或"latest".
创建新版本
1
2
3
curl -X POST 'https://api.openai.com/v1/skills/<skill_id>/versions' \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F 'files=@./geometry.zip;type=application/zip'设置默认版本
1
2
3
4
curl -X POST 'https://api.openai.com/v1/skills/<skill_id>' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{"default_version": 2}'删除规则
- 您无法删除默认版本;请先设置另一个默认版本。
- 删除最后剩余的版本将删除该技能。
- 删除某项技能会级联移除其所有版本。
精选技能
OpenAI 维护着一组第一方技能,可以通过 id 引用(例如, openai-spreadsheets).
{ "type": "skill_reference", "skill_id": "openai-spreadsheets", "version": "latest" }内联技能
如果您不想创建托管技能,可以在环境的 skills array.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
INLINE_ZIP=$(base64 -i ./basic_math.zip)
curl -L 'https://api.openai.com/v1/containers' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"name": "inline-skill-container",
"skills": [
{
"type": "inline",
"name": "basic_math",
"description": "Add or multiply numbers.",
"source": {
"type": "base64",
"media_type": "application/zip",
"data": "'"$INLINE_ZIP"'"
}
}
]
}'风险与安全
检查与 Responses API 配合使用的任何 Skill 非常重要。技能会引入安全风险,例如由提示注入驱动的数据泄露。
对于与网络访问结合使用的技能,请仔细查看 网络风险与安全部分.
将技能视为特权代码和指令
技能内容可以影响规划、工具使用和命令执行。任何技能在开发者验证之前,都应被视为潜在的不可信输入加以审查。
不要向最终用户暴露开放的技能库
避免让消费者最终用户能够从开放目录中自由浏览、选择或附加任意技能的产品设计。这会显著增加以下风险:
- 通过恶意 SKILL.md 指令进行提示注入和绕过策略。
- 由未审查的自动化触发的数据泄露或破坏性操作。
在开发者层面集成技能
技能应由开发者检查和集成,然后仅通过有边界的产品体验暴露给最终用户。在实践中:
- 将技能映射到特定的产品工作流/用例。
- 防止最终用户控制任意技能的选择。
- 对写入或高影响的操作进行把关,要求其经过明确的批准和策略检查。
要求批准敏感操作
对于可以执行写入或高影响操作的工作流,要求在执行前获得明确批准。
验证数据驻留和保留要求
我们支持两种形式的 Skill:本地执行和基于托管容器的执行。托管技能遵循与托管 shell 相同的容器生命周期:已挂载的技能和容器文件在容器处于活动状态时保持可用,并在容器过期或被删除时被丢弃。如果您希望执行完全在您管理的基础设施上进行,请使用本地 shell 模式。了解更多关于我们的 数据控制.