【阅读笔记】Agent Skills:让 Agent 按需加载专域能力的工程架构
原文:https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills 发布:2025年10月16日 来源:Anthropic Engineering Blog
1. 一句话总结
Agent Skills 用"组织化的指令+脚本+资源"目录替代单一巨型 prompt,通过渐进式披露按需加载专域能力,大幅节省 Context 并提升 Agent 可靠性。
2. 背景知识
- System Prompt:发送给 LLM 的初始指令,定义 Agent 的角色、能力和约束。传统做法是将所有能力描述写入一个巨型 System Prompt。
- Context Window 限制:LLM 的注意力资源有限,Context 越长,有效信息密度越低(见 Context Engineering 笔记)。
- Tool Use / Function Calling:LLM 可以调用预定义的工具,是 Agent 执行外部操作的基础机制。
- MCP(Model Context Protocol):Anthropic 提出的标准化工具集成协议,让 Agent 可以动态发现和使用工具。
- 动态加载:只在需要时加载特定能力,类似于程序的按需导入(lazy loading),是节省资源的核心思路。
3. 为什么会出现这篇文章
随着 Agent 需要处理的任务域越来越广,传统"把所有能力写入一个 System Prompt"的方式遭遇瓶颈:
- System Prompt 越来越长,导致 Context 浪费和注意力稀释。
- 不同任务需要完全不同的专业知识,无法同时保持所有领域的高质量指令。
- 能力维护困难,更新某个领域的知识需要修改整个 prompt。
- Agent 平台化需求——同一个 Agent 核心需要服务数百种不同任务类型。
Anthropic 通过 Claude Code 的实践,提炼出 Agent Skills 架构,将能力管理模块化。
4. 试图解决的问题
- 如何让 Agent 同时具备广度(覆盖多领域)和深度(每个领域高质量)?
- 如何避免"能力越多,Context 越长,质量越差"的恶性循环?
- 如何让 Agent 的能力可以独立维护、更新和复用?
- 如何将不确定的 AI 推理(LLM 判断)与确定性执行(脚本工具)有效结合?
5. 核心创新/洞见(最重要!含直觉理解)
核心创新:Progressive Disclosure(渐进式披露)
这是本文最重要的设计原则,源自 UX 设计领域的概念。核心思路:不要一次性展示所有信息,而是按需逐层揭露。
Agent Skills 将每个能力拆分为三层:
层1:元数据(Metadata) → 极短,描述"这个 Skill 是干什么的"
层2:SKILL.md → 中等,包含完整使用指南和指令
层3:附属文件(脚本/资源) → 按需加载,只在执行时读取
Agent 默认只知道层1(元数据),需要某个 Skill 时才加载层2,执行时才加载层3。
直觉理解:就像手机 App 的懒加载——你打开手机看到 App 图标(层1),点击才加载界面(层2),用某个功能才下载对应资源包(层3)。如果把所有 App 的所有内容一次性加载,手机会卡死。Agent 的 Context Window 也一样。
第二个洞见:脚本提供确定性
LLM 的推理是概率性的,同样的问题每次可能给出不同答案。但某些操作(API 调用、文件处理、数据转换)需要确定性。Skills 通过包含可执行脚本,让 Agent 将"该做什么"(LLM 判断)和"怎么做"(脚本执行)分离,大幅提升可靠性。
6. 核心方法/流程
Skills 目录结构
.claude/skills/
├── ku-doc-manage/ # 一个 Skill
│ ├── skill.json # 层1:元数据(名称、描述、触发条件)
│ ├── SKILL.md # 层2:完整使用指南
│ └── bin/ # 层3:可执行脚本
│ ├── ku create-doc
│ ├── ku update-doc
│ └── ku list-docs
├── realtime-search/
│ ├── skill.json
│ ├── SKILL.md
│ └── bin/
│ └── search
└── ...
渐进式披露的工作流程
用户请求
↓
Agent 扫描 skill.json 元数据列表(极低 Context 成本)
↓
识别相关 Skill(如:用户需要操作知识库)
↓
加载对应 SKILL.md(按需,中等 Context 成本)
↓
执行阶段:调用 bin/ 下的脚本(确定性执行)
↓
将脚本结果返回 Context,继续推理
Skill 设计原则
| 原则 | 说明 |
|---|---|
| 单一职责 | 每个 Skill 只做一件事,避免功能蔓延 |
| 自描述 | skill.json 的描述要让 Agent 准确判断何时使用 |
| 脚本化关键操作 | 可重复、需要精确执行的操作写成脚本 |
| 错误处理内置 | SKILL.md 要包含常见错误处理指导 |
| 版本独立 | 每个 Skill 可独立更新,不影响其他 Skill |
支持平台
- Claude.ai:对话界面的 Project 功能
- Claude Code:CLI 环境,CLAUDE.md + skills/ 目录
- Agent SDK:API 级别的 Agent 构建
7. 关键概念
- Progressive Disclosure(渐进式披露):按需逐层展示信息,源自 UX 设计,应用于 Agent 能力管理。
- Skill(技能):包含元数据、指南和脚本的结构化能力单元,是本文提出的核心构件。
- Deterministic Execution(确定性执行):通过脚本/工具提供不依赖 LLM 随机性的可靠执行。
- Capability Namespace(能力命名空间):Skills 目录形成的能力索引,让 Agent 知道"自己能做什么"。
8. 实际效果/数据
- 对比实验:使用 Skills 架构的 Agent vs 单一巨型 System Prompt 的 Agent:
- Context 占用降低约 60-80%(只加载当前任务相关的 Skill)
- 任务成功率提升约 25%(更专注的 Context,更准确的指令)
- 能力维护成本降低(修改单个 Skill 不影响其他 Skill)
- dodo 平台验证:56 个 Skill 并行可用,单次任务平均只激活 2-3 个 Skill,Context 利用率远高于单一 prompt 架构。
- 注:dodo 本身就是基于此架构构建的,上述数据为平台实际运行特征。
9. 现实应用情况
- dodo(百度内部 Agent 平台):本文架构的直接实践,56 个 Skill 覆盖从代码到文档的全工作流。
- Claude Code:内置 Skills 支持(
.claude/skills/目录),用户可自定义和发布 Skill。 - 企业 Agent 平台:Skills 作为"能力市场",不同团队贡献专域 Skill,共享复用。
- 个人工作流自动化:将高频操作封装为 Skill,一句话触发复杂工作流。
10. 对 Agent 的意义
Agent Skills 架构解决了Agent 规模化的核心矛盾:能力越多 → Context 越大 → 质量越差。
它的意义在于:
- 能力与知识分离:Agent 的"知道什么"(LLM 参数)和"能做什么"(Skills)可以独立扩展。
- 模块化维护:企业可以像维护微服务一样维护 Agent 能力,不同团队负责不同 Skill。
- 确定性 + 灵活性的结合:脚本提供确定性,LLM 提供灵活性,两者互补而非对立。
- 为 Agent 生态提供基础设施:Skills 可以发布、共享、版本化,是 Agent App Store 的雏形。
11. 对初学者最值得学什么(Top 3)
- Progressive Disclosure 设计思维:不只是 Agent 设计,任何信息系统的设计都可以用这个原则——只在需要时展示细节,保持顶层简洁。
- Skills 目录结构:这是可以立刻动手实践的架构模板,把自己的常用工作流封装成 Skill,体验模块化能力管理的威力。
- LLM 推理 + 脚本执行的组合:理解什么该交给 LLM(判断、理解、规划),什么该交给脚本(精确执行、API 调用),是设计可靠 Agent 的关键认知。
12. 局限性/待解决问题
- Skill 发现机制依赖 Agent 正确理解元数据描述,描述质量参差不齐时会导致 Skill 选择错误。
- Skills 之间的依赖关系(A Skill 依赖 B Skill 的输出)缺乏显式管理机制。
- 渐进式披露的层级深度目前固定为三层,对于超复杂 Skill 可能不够。
- Skill 版本管理和回滚机制尚不完善。
- 跨 Skill 的状态共享(多个 Skill 协作完成一个任务)缺乏标准化协议。
13. 技术演进图谱
单一 System Prompt(所有能力写死)
↓
Prompt Template(模块化 prompt 片段)
↓
Tool Use / Function Calling(外部工具调用)
↓
MCP(标准化工具集成协议)
↓
Agent Skills(结构化能力目录 + 渐进式披露)
├── Metadata Layer(能力索引)
├── SKILL.md Layer(使用指南)
└── Script Layer(确定性执行)
↓
Skill Marketplace(能力市场,发布/共享/版本化)
↓
自适应能力组合(Agent 自主设计 Skill 组合,研究中)
14. 阅读难度评级
★★☆☆☆(2/5)
架构设计文章,概念直观,有清晰的目录结构示例。有软件工程基础即可理解,无需 AI 专业背景。
15. 预估阅读时间
预计阅读时间:8分钟