青蛙小白

Agent Skills

Agent Skills 是 Anthropic 提出的、后来开放为跨 Agent 客户端标准的技能格式。它把某类任务需要的专项知识、流程、脚本、模板和参考材料放进一个目录,让 Agent 在任务相关时再按需加载,而不是把所有组织知识长期塞进上下文窗口。

这个词条描述的是 Anthropic / agentskills.io 规范里的具体格式;更泛化的工程概念见 Skill(技能)

OpenAI API 的 Skills 功能声明兼容 Agent Skills 开放标准,但它讨论的是另一层:如何把 Skill bundle 上传、版本化,并挂载到 Responses API 的 Shell 工具环境。具体 API 实现细节归入 Skill(技能)Responses API(响应 API)

基本结构

一个 Agent Skill 至少包含一个 SKILL.md 文件,也可以包含脚本、参考文档和静态资产:

my-skill/
├── SKILL.md
├── scripts/
├── references/
└── assets/

SKILL.md 必须包含 YAML frontmatter 和 Markdown 正文。规范要求的最小字段是 namedescription:前者是技能标识,后者同时说明技能做什么、什么时候该用。可选字段包括 licensecompatibilitymetadata 和实验性的 allowed-tools

这套格式的关键不是文件扩展名,而是把“触发信号”和“执行细节”分层:启动时只让 Agent 看到名称和描述,命中任务后再读取完整说明,必要时继续读取引用文件或执行脚本。

渐进披露流程

Agent Skills 把 Context Engineering(上下文工程)中的 渐进披露 落成了一个文件系统协议:

flowchart TB
    S[Agent 启动] --> M[加载所有 Skill 的 name + description]
    M --> D{"当前任务是否匹配某个 Skill?"}
    D -- "否" --> B[保持轻量上下文]
    D -- "是" --> A[读取该 Skill 的 SKILL.md 正文]
    A --> R{"是否需要更多材料?"}
    R -- "引用资料" --> F[读取 references / assets]
    R -- "确定性操作" --> C[运行 scripts 中的代码]
    F --> W[执行任务]
    C --> W
    R -- "不需要" --> W

这解释了为什么 Skill 能比“一个超长系统提示”更可扩展:大量低频知识可以安装在环境里,但不会在每次请求中消耗注意力预算。Anthropic 的文章用 PDF 表单处理举例:主文件只保留触发和总流程,表单填写细节拆到单独文件,字段提取交给脚本完成。

Deep Agents也是这一开放格式的宿主:启动时读取 SKILL.md frontmatter,任务命中后才加载正文及脚本、模板、参考资料等支持文件。它同时把 memory 与 Skill 明确分开——AGENTS.md memory 始终加载,Skill 则按需披露。

Pi 也是 Agent Skills 的宿主,并允许直接读取 Codex 或 Claude Code 的 Skill 目录。它启动时只扫描名称与描述,匹配任务后由模型读取完整 SKILL.md;也提供 /skill:name 强制触发。Pi 对多数规范偏差采取“警告但继续加载”的宽松策略,但缺少 description 的 Skill 不会加载,因此跨 harness 复用时仍需留意验证严格度差异。

与工具和 MCP 的边界

Agent Skills、Function Calling(函数调用)Model Context Protocol(模型上下文协议)都在扩展 Agent 能力,但边界不同:

对象主要解决的问题进入上下文的方式
Agent Skills任务流程、组织知识、参考资料、可执行辅助脚本如何打包先加载元数据,触发后读 SKILL.md 和支持文件
Function Calling模型如何表达一次结构化工具调用工具 schema 通常随请求提供
MCP外部工具和数据源如何被客户端发现与调用客户端列举 server 能力,再映射到模型工具层

Anthropic 在文章中把 Skills 视为 MCP 的互补层:MCP 更像连接外部系统的协议,Skills 更像教 Agent 如何完成跨工具、跨文件、跨组织约定的复杂流程。一个生产 Agent 可以同时使用两者:通过 MCP 连接 Jira、数据库或浏览器,通过 Agent Skills 规定“如何做一次发布审查”。

代码作为技能的一部分

Agent Skills 不只保存自然语言说明。目录里的脚本可以作为确定性工具被 Agent 调用,用来处理模型不擅长或不该靠 token 生成完成的步骤,例如排序、解析 PDF、抽取表单字段、生成图表或校验输出。

这让 Skill 更接近 Harness Engineering(驾驭工程)里的可复用工作单元:模型负责判断何时使用、如何解释结果;脚本负责可重复、可测试的机械步骤。好的 Skill 通常会明确哪些文件应被读取为参考,哪些脚本应被直接运行,避免 Agent 把大段源码误塞进上下文。

安全边界

Agent Skills 会把新指令和新代码带进执行环境,因此也形成供应链风险。安装第三方 Skill 时,应像审查依赖包和 MCP server 一样审查它:

  • 先读 SKILL.md,确认触发条件、禁止事项和外部连接是否合理
  • 检查 scripts/ 中的代码、依赖和网络访问
  • 检查 references/assets/ 是否夹带 prompt injection 或敏感数据外传指令
  • 对写入、删除、联网、凭证访问等能力继续依赖 Agent Guardrails(Agent 护栏)Agent Sandbox(Agent 沙箱)

换句话说,Skill 是能力扩展,不是信任扩展。allowed-tools 之类字段只能降低低风险流程的摩擦,不能替代权限边界、人工审批和审计。

相关概念

参考来源
  1. 1. https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills
  2. 2. https://agentskills.io/home
  3. 3. https://agentskills.io/specification
  4. 4. https://developers.openai.com/api/docs/guides/tools-skills
  5. 5. https://docs.langchain.com/oss/python/deepagents/overview
  6. 6. https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/skills.md
评论