文章总结: 文章系统阐释了AIAgentSkill的本质、工作原理及安全风险。AgentSkill是一种封装任务工作流、指令和资源的可复用模块,通过结构化工作流指导智能体推理,需与MCP等执行工具协作。文章对比了Skill与提示词、RAG、工具的区别,指出其位于推理与执行层之间。同时强调技能可能存在恶意代码风险,需谨慎对待来源。 综合评分: 82 文章分类: AI安全,安全工具,技术标准,安全运营,安全开发
Agent Skill:给AI智能体装上可插拔的“技能包”
幻泉之洲
2026年4月28日 15:31 北京
在小说阅读器读本章
去阅读
这篇文章说清楚了AI Agent技能(Agent Skill)到底是什么。它不是工具,也不是简单的提示词,而是一种封装了任务工作流程、指令和资源的可复用模块。文章拆解了它的工作原理、在智能体栈中的定位,以及伴随而来的安全挑战。
给大模型“开挂”的另一种思路
想让大模型学会新东西,上下文学习是最简单的办法。给它几个例子,它就能照着样子生成答案。后来有了函数调用和MCP这样的标准化工具,智能体几乎能实现你能想到的任何操作。再后来,RAG和GraphRAG加上了信息检索能力。 这些都很好,但今天要说的是另一种思路:Agent Skill。Claude Code、OpenClaw、Codex都在用。这玩意儿到底是啥?它跟我们熟悉的提示词、工具、RAG有什么不同?
Skill的本质:不调参的“操作手册”
Anthropic提出来这概念,是想在不改动模型参数的情况下,给智能体增加“程序性知识”。你不用去调整模型权重,而是在推理时,用一些模块化的、可复用的“技能包”去指导它。这些技能包封装了特定任务的工作流、指令、参考资料或者资产,智能体觉得需要的时候,就动态加载。
name: analyzing-campaign-attribution-evidence description: Campaign attribution analysis involves systematically evaluating evidence to determine which threat actor or group is responsible for a cyber operation. This skill covers collecting and weighting attr domain: cybersecurity subdomain: threat-intelligence tags:
- threat-intelligence
- cti
- ioc
- mitre-attack
- stix
- attribution
- campaign-analysis version: ‘1.0’ author: mahipal
license: Apache-2.0
说白了,一个技能就是一个可以分享的“物件”。最简单的形式,就是一个包含SKILL.md文件的目录,里面封装了针对某个领域任务的专业知识和操作指南,比如代码分析。上面那段YAML frontmatter是必须有的,用来定义技能元数据。目录里还可以放脚本、资源,需要时动态加载。
最关键的一点:技能本身不具备执行能力,它只定义任务应该怎么做。就像给你一本菜谱,你得有锅有灶才能炒出菜。技能需要底层工具的配合(比如能执行.py文件的工具),否则就是个摆设。
Skill、RAG和MCP,别再傻傻分不清
这三位在智能体的世界里各司其职,容易搞混,得捋清楚。
- 提示词(Prompt):静态的,非模块化的。每次都得塞进上下文。
- 技能(Skill):按需加载。智能体启动时只预加载技能的名字和描述到系统提示里,避免重复注入,省tokens。它通过结构化工作流来指导智能体的推理和行为。
- RAG:专注于信息检索和基于检索内容的回复生成。
- 工具(包括MCP):提供具体的“执行”能力(比如调用API、运行脚本)。
所以,Skill其实是介于推理和执行之间的一层。你可以把它看作智能体的“标准作业程序”。它跟MCP工具不是竞争关系,而是协作关系。技能说“去把这个菜炒了”,MCP工具提供了“开火”和“颠勺”的能力。
天降的技能包,可能是“毒药”
安全问题不容忽视。技能继承用户环境的权限级别。这意味着,一个恶意技能能造成的破坏,跟用户自己运行恶意脚本差不多。
GitHub等公共库上已经出现了各种各样的技能,有些可能包藏祸心。比如它们可以定义数据窃取指令,或者在执行脚本里埋下后门。最近的两篇论文[1]就讨论了相关风险。
结论很直接:必须把所有技能都当作不可信的代码来对待,尤其是在它们包含可执行资源的时候。跟安装第三方软件包一个道理,你得知道来源是否可靠。
探秘智能体内部:Skill如何工作
我们扒一扒OpenAI智能体SDK里的Skills模块代码,看看这东西在运行时是怎么玩的。
首先,初始化的时候,智能体把可用的技能名称和描述列表读进系统提示:
…
_SKILLS_SECTION_INTRO = (
“A skill is a set of local instructions to follow that is stored in a SKILL.md file. ”
“Below is the list of skills that can be used. Each entry includes a name, description, ”
“and file path so you can open the source for full instructions when using a specific skill.”
)
…
系统提示明确告诉模型:技能是放在SKILL.md里的本地指令集。一开始只有元数据是可见的,你必须先显式加载一个技能,才能读取它的完整内容。这叫“懒加载”,只加载任务需要的,省钱(token)。
技能发现依赖于从本地目录解析元数据。每个技能必须在一个文件夹里,包含一个带YAML frontmatter的SKILL.md文件。智能体代码会遍历目录,提取前文里那些name、description信息。
当智能体决定使用某个技能时,它会调用一个特定的加载工具(load_skill),把这个技能“实体化”到工作区。一旦加载,技能就在工作区内暴露一个目录路径。智能体就可以去读SKILL.md获取具体指令,访问相关脚本或其他资源。
整个过程可以简单总结:
- 系统提示里列出可用技能的名字和描述。
- 智能体根据用户查询,判断该用哪个。
- 调用
load_skill工具加载对应技能。 - 读取
SKILL.md里的指令。 - 根据指令,安排和调用具体的工具去执行。
再强调一遍:技能定义“做什么”,工具定义“怎么做”。工作区(workspace)则是连接两者的接口。
当你有成百上千个技能时,用语义搜索来匹配可能更高效(例如将技能描述向量化)。否则,把所有技能描述都塞进提示词,开销太大了。这在开源社区也有讨论[2]。
动手一试与实践差异
目前似乎还没有一个广为流行的开源智能体SDK原生支持Skill这种概念。为了弄明白,我写了个简单的示例来演示怎么集成,代码在这:https://github.com/mouadk/ai-agent-skills 。这个示例里,智能体会先读取技能,然后按照技能的指示去执行Python代码。
当然,不同厂商的智能体实现细节肯定有差异。比如微软的Agent Framework[3],集成方式就有所不同。
最后说句实在话,现在并没有确凿证据表明,加了技能就一定能系统性地提升智能体的性能[4]。它更像是一种工程上的抽象,让复杂任务的管理和复用变得更模块化、更清晰。至于效果到底好不好,还得看具体的任务和实现。它可能不是“银弹”,但确实提供了一个有趣的新工具箱。
参考资料
[1] https://arxiv.org/html/2602.06547v1, https://arxiv.org/html/2604.15415v1
[2] https://github.com/anthropics/claude-code/issues/24730
[3] https://github.com/microsoft/agent-framework/blob/main/dotnet/samples/02-agents/AgentSkills/Agent_Step01_FileBasedSkills/Program.cs
[4] https://arxiv.org/html/2602.12670v1
[5] https://www.deep-kondah.com/extending-agent-capabilities-with-agent-skills/
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:幻泉之洲 《Agent Skill:给AI智能体装上可插拔的“技能包”》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论