PandaAI最近新增强大的Agent功能,要指挥好Agent为我们所用,好的Skills必不可少。因此我们一起来看下吧。
What
Skills来源
“Skills” 这个概念最早由 Anthropic 公司提出,作为其大模型 Claude 的一种能力扩展机制。简单来说,它允许用户为 Claude 添加自定义的功能和工具。随着这套做法越来越成熟,并被社区广泛接受,Skills 如今已成为大多数 Agent 开发工具和 IDE 都支持的一种标准扩展规范。
Skills内容
一个 Skills 通常以一个文件夹的形式存在,里面主要装着三样东西:一份说明书(SKILL.md)、一堆操作脚本(Script)、以及一些参考资料(Reference)。
以上是截图,可以参考看看效果
| 内容 | 作用 |
|---|---|
| SKILL.md | 通过自然语言描述清楚(使用场景、使用方式、使用步骤、及注意事项等上下文补充信息) |
| Script 脚本 | Agent 可以执行的具体脚本代码 |
| Reference 引用 | 参考文档,引用的模板,相关关联上下文的文件信息 |
你可以把一个 Skill 想象成一个打包好的“技能包”。它把完成某个特定任务所需的领域知识、操作流程、要用到的工具、以及最佳实践全都封装在了一起。当 AI 面对相应请求时,就能像一位经验丰富的专家那样,有条不紊地自主执行。
!!! summary 一句话总结:
要是把 Agent 比作一个有很大潜力的大脑,那 Skills 就像是给这个大脑的一套套能反复用的“高级武功秘籍”。有了它,Agent 能从一个“什么都略知一二”的通才,变成在特定领域“什么都擅长”的专家。
Skills与其他概念区别
为了更清晰地理解 Skills 的独特价值,我们把它和另外两个容易混淆的概念——快捷指令(Command)和原子工具(MCP)——放在一起做个对比。引入一个厨房的例子就好理解了:
| 概念 | 好比是…… | 核心特点 | 适用场景 |
|---|---|---|---|
| 斜杠命令 Command | 微波炉上的"指定按钮"(如:/解冻、/爆米花) | 由用户主动触发的、固定的、单一功能的命令。简单直接,但不够智能和灵活。 | 作为主动复用 prompt 的快捷方式,让用户快速复用模板 prompt |
| 模型上下文协议 MCP | 厨房里的"单一厨具"(如:一把刀、一个烤箱) | 为 AI 提供调用外部 API 或脚本的基础能力。模型知道有这个工具,但不知道具体在什么菜谱里、什么步骤下使用,以及怎么更好的使用。 | 通过标准协议链接外部系统获取信息或完成任务 |
| 技能 Skills | 一本完整的"菜谱"(如:“如何制作法式焗蜗牛”) | 由模型根据任务自动匹配和驱动。它定义了制作这道菜(完成这个任务)需要用到哪些厨具(原子工具)、遵循哪些步骤、注意什么火候(最佳实践),是流程化、场景化的。 | 由模型驱动意图理解,通过渐进式加载补充上下文,并根据 SOP 完成指定任务 |
How
好用的Skills
Good vs Bad
| 评判维度 | Good Skills | Bad Skills |
|---|---|---|
| 单一职责原则 | 每个 Skill 只做一件事,且把它做好。例如,可以分解为2个独立的 Skill:query_data、generate_chart。 |
一个 Skill 试图做太多事,比如"既负责数据查询,又负责图表生成"就容易都做不好。 |
| 描述清晰度 | 描述清晰、具体,使用自然语言,明确说明输入、输出和核心功能。例如:“根据用户提供的城市名和日期范围,查询并返回该城市的天气数据。” | 描述模糊,充满技术术语,智能体难以理解。例如:“一个用于数据处理的工具。” |
| 参数设计 | 参数精简、命名语义化(如 city_name、date_range),并为每个参数提供清晰的描述和示例。明确使用 Skill 需要的参数如何获取,以及参数如何使用。 |
参数过多、命名不规范(如 arg1、p2),缺少详细的注释说明。 |
| 可组合性 | 设计时就考虑到了可组合性,其输出可以作为其他 Skill 的输入,方便构建更复杂的任务流(Workflow),可以尝试通过单一职责完成原子 Skill 的开发,并通过某项具体任务 SOP Skill 完成协调。 | 设计上是"一锤子买卖",难以与其他 Skill 联动。 |
如何写好Skills
- 原子性(Atomicity):坚持单一职责,让每个 Skill 都像一块积木,小而美,专注于解决一个具体问题,便于日后的复用和组合。
- 给例子(Few-Shot Prompting):这是最关键的一点,与其费尽口舌解释,不如直接给出几个清晰的输入输出示例。榜样的力量是无穷的,模型能通过具体例子,秒懂你想要的格式、风格和行为。
- 立规矩(Structured Instructions):
- 定角色:给它一个明确的专家人设,比如“你现在是一个资深的市场分析师”。
- 拆步骤:把任务流程拆解成一步步的具体指令,引导它“思考”。
- 画红线:明确告诉它“不能做什么”,防止它天马行空地“幻觉”。
- 造接口(Interface Design):像设计软件 API 一样,明确定义 Skill 的输入参数和输出格式(比如固定输出 JSON 或 Markdown)。这让你的 Skill 可以被其他程序稳定调用和集成。
- 勤复盘(Iterative Refinement):把 Skills 当作一个产品来迭代。在实际使用中留心那些不尽如人意的“Bad Case”,然后把它们变成新的规则或反例,补充到你的 Skills 定义里,让它持续进化,越来越聪明、越来越靠谱。