Microsoft Agent Framework (MAF) 迎来重要更新,其最新预览版已支持 Agent Skills,这为 AI 智能体提供了一种全新的领域知识管理方式。它通过模块化知识包和“渐进式披露”机制,解决了传统方法中 Token 浪费、维护困难等痛点,让开发者能够高效地为 Agent 注入专业能力,构建更强大的企业级应用。
智能速览
Agent Skills 通过模块化知识包为 AI 注入领域专长。
渐进式披露机制显著降低 Token 消耗,提升响应效率。
SKILL.md 文件采用 YAML Frontmatter 与 Markdown Body 组合结构。
内置安全机制,防止路径穿越和恶意资源访问。
实战演示了如何构建费用报销 Agent,验证了完整工作流程。
精华内容
Agent Skills 的核心在于其创新的模块化知识管理模式。接下来将深入其设计规范、技术架构与实战应用,揭示如何让 AI 智能体按需获取专业领域知识。
渐进式披露设计
Agent Skills 的核心设计理念是“渐进式披露”,旨在解决传统知识注入方式导致的 Token 浪费问题。该机制将知识加载分为三个阶段:摘要展示、按需加载和读取资源。
在摘要展示阶段,Agent 仅加载每个技能的名称和描述,开销约为 100 tokens/skill。当 Agent 判断需要某个技能的完整知识时,才会触发加载阶段,读取完整的 SKILL.md 指令内容。若需要参考模板、FAQ 等补充文件,则进入读取资源阶段,按需获取具体文件。这种设计使得一个拥有 20 个 Skills 的 Agent,初始开销可控制在约 2000 tokens,远低于全量加载的数万 tokens,大幅提升了响应效率并降低了成本。
技能文件规范
一个 Agent Skill 对应一个文件夹,其核心是 SKILL.md 文件,该文件由 YAML Frontmatter 和 Markdown Body 两部分组成。
Frontmatter 部分定义了技能的元数据,包含必需的 `name` 和 `description` 字段。`name` 必须是小写字母、数字和连字符的组合,且不超过 64 字符,用于唯一标识和调用技能。Markdown Body 部分则包含具体的领域指令,如规则、流程或指南,并可通过 Markdown 链接引用目录下的 `references`(参考资料)和 `assets`(资产文件)。文件加载器内置安全机制,会验证名称格式、防范路径穿越攻击和符号链接逃逸,确保资源读取的安全性。
核心架构实现
Agent Skills 的功能主要由 `FileAgentSkillsProvider` 和 `FileAgentSkillLoader` 两个核心类实现。
`FileAgentSkillsProvider` 继承自 `AIContextProvider`,它在初始化时会扫描指定目录,通过 `FileAgentSkillLoader` 发现并解析所有 SKILL.md 文件。随后,它会构建一个包含所有技能摘要的系统提示,并自动注册 `load_skill` 和 `read_skill_resource` 两个 AI 工具。当 Agent 需要知识时,会调用这些工具,由 Provider 触发相应的加载或读取操作。`FileAgentSkillLoader` 则负责底层的文件解析,使用正则表达式匹配 YAML Frontmatter 和 Markdown Body 中的资源链接,并执行严格的安全检查,确保所有操作都在允许的范围内进行。
费用报销实战
通过构建一个处理费用报销的 Agent,可以完整验证 Agent Skills 的工作流程。首先,创建 `expense-report` 技能目录,包含定义报销规则和流程的 SKILL.md 文件,以及作为补充材料的 FAQ 文档和报销模板。
然后,使用 `FileAgentSkillsProvider` 加载该技能目录,并将其注入到 MAF Agent 中。在测试中,当用户询问“小费是否可以报销”时,Agent 会智能识别问题与 `expense-report` 技能相关,自动调用 `load_skill` 获取完整规则,并进一步调用 `read_skill_resource` 读取 FAQ 文件,最终根据“小费20%以内可报销”的规则给出准确回答。在多轮对话中,Agent 还能加载报销模板,引导用户填写信息,并按规则检查费用限额,展示了从知识获取到任务执行的闭环能力。
Agent Skills 为 MAF 生态带来了高效、安全的领域知识管理方案,它降低了开发门槛,提升了应用的智能化水平。随着 1.0 正式版的临近,这一功能将赋能开发者构建更多专业、可靠的 AI 智能体,未来值得期待。