AI Skill
今天第一次开周会 听同事分享了一些自己开发的skill,感觉是ai发展一个很重要的点,学习一下怎么开发一个简单的skill。
是什么?
Skill(技能):可被Agent重复调用的任务单元(比如各种prompt,工具接口,工作流等),相当于给agent安装上手和脚,使其具备各种各样的功能。

有什么用
- 减少重复prompt,不用每次都写一堆prompt 可以把一些系统设定规定下来
- 将复杂的流程规定好:查天气->生成穿衣建议->提示用户
- 方便传递共享: 你写的skill可以给你的同事使用,像一个npm包。
- 节省token !
有点像前端抽离组件,就是把我们在使用ai时的复杂,冗余的流程都抽离出来,方便下次调用,减少开发时间。
怎么写
大多数标准的skill是markdown形式,好处是简单易读。也有一些其它形式(json,js等) 举一个skill的目录结构:
js
my-skill/
----SKILL.md # 元数据和指令 必不可少
----scripts # 可运行脚本 可选
----references # 正文内容
----assets # 静态资源
SKILL.md
这里主要是元数据信息和正文。元数据信息一般是标明agent的人设,作用范围,可以理解为给agent限定范围和任务。正文正常就是规定任务流程,然后确定输入和输出格式
md
---
name: 'test-skill'
description: 用于正则表达式调试、测试、替换联调,支持输入文本、匹配规则、替换规则
verson: 1.0.0
trigger: "用户输入包含正则、匹配、替换等关键词"
---
// 以下都是正文
# 正则联调 Skill
## 功能说明
用于快速验证正则表达式是否匹配预期文本,支持全局匹配、忽略大小写、多行模式,并支持替换操作。
## 执行逻辑
1. 接收用户输入的原始文本、正则表达式、修饰符
2. 执行正则匹配,返回所有匹配项
3. 如果传入 replacement,则执行替换并返回结果
4. 捕获正则语法错误并返回友好提示
## 调用示例
输入:
```json
{
"text": "15672-正则联调暂存",
"pattern": "\\d+",
"flags": "g"
}
输出示例:
{
"matched": ["15672"],
"replacedText": "",
"error": ""
}
注意:因为每一次都会被带到上下文,写在skill的正文不适太长 内容最好小于500字符。如果是要写大量的正文,可以写在referce里面引用。
References
References(参考) ,可以理解为给ai举一个例子。比如我们自己写的组件,ai可能不了解这个组件的规范和写法,我们就需要把示例喂给它
- 首先在skill里标明引用的逻辑(这里是重要原因,不然的话全写在skill是一样的
md
## 基本原则
本次开发参考内部自定义组件库dt-react-component
如遇到自定义问题,请参考以下文档
### 模块
-- 状态与标签: 请参考[../refer1.tsx]
-- 消息与通知: 请参考[../reder2.tsx]
.... 省略
- 在references里面给出让agent参考示例
Scripts
交给agent运行的脚本文件,比如在ai执行完任务后,让ai跑一遍单元测试。这个就可以提取成脚本,在需要的时候调用
md
... 一系列步骤
4. 在最后,跑一遍[./test.js]脚本
5. 如不通过请按以上流程重新编写内容
Assets
存放一些静态资源,如默认配置文件、图片、数据集等资源,同样需要显式引用,也许可以将完整的静态文档放这。
md
### 输出风格
请参考以下配色方案 [./schema.json]
总结
说这么多,其实简单来说可以理解把skills成一个抽屉,按照不同的功能把不同的文件放进抽屉里,在需要的时候就可以拉开对应的抽屉拿到信息。
