如何创建自己的Skills?——以mooSQL为例

大模型现在火热,在氛围编程的主导下,很多人甚至不再去关注代码实现细节。在这样的情况下,如何让大模型认识自己项目内的类库?相信很多人都有这方面的需求。

若是代码库本身就在项目的代码目录下,大模型现在可以全局按关键字自动进行代码检索,从而理解涉及的代码。然而,如果这个库已被抽离出项目文件夹,形成独立的包,作为包引入,那么大模型就比较难以理解,只能从项目中已存在的用法进行模仿。

那么,现在Skills来了!

现在trae、cursor等大模型编程工具陆续都已支持skills!

什么是Skill?下面概念来自cursor官方

Agent Skills 是一个用于为 AI 智能体扩展专门能力的开放标准。Skills 将特定领域的知识和工作流封装起来,智能体可以调用这些 Skills 来执行特定任务。

Cursor 启动时,会自动从技能目录中发现并加载技能,并将它们提供给 Agent 使用。Agent 会看到所有可用技能,并根据当前上下文决定何时调用它们。

你也可以在 Agent 对话中输入 / 并搜索技能名称来手动调用技能

在我理解后,Skill就是一个markdown格式的文档文件!

内容如下:(格式为官方demo)

---
name: moosql-skill
description: 简要描述此技能的功能及使用时机。
---

# 我的技能

为 Agent 提供的详细指令。

## 使用时机

- 在以下情况使用此技能...
- 此技能适用于...

## 指令

- 为 Agent 提供的分步指导
- 特定领域的约定
- 最佳实践和模式
- 如需向用户澄清需求,请使用提问工具

确定Skills的目标和功能

我们现在的目标是,让大模型能够认识mooSQL,就像认识efcore一样。

开始创建

我们现在知道了skill是个什么,也知道了格式,那么需要开始手写吗?不!用大模型自己来写。

这里有一个前提,我们先要告诉大模型mooSQL到底是什么,怎么用。

这个就没有什么玄机了,有一条很明显的路——由于平时在使用时已经积累了一些文档,一方面,可以基于现有文档,让大模型直接参考,然后创建一个SKILL。

但是我没有,众所周知,文档总难免存在更新不及时的问题,于是我决定,让大模型直接基于源码项目,先生成一个完整、最新的API文档,然后再基于API文档,进行人工核定后,用大模型再写一个SKILL

创建API文档

这里操作比较简单,不赘述,直接用大模型代码编辑软件,打开项目,然后生成。

这里以mooSQL为例,mooSQL的核心用户侧工作类,主要是SQLBuilder这一SQL构建器和SQLClip这一实体构建器、以及仓储、工作单元等。分别要求大模型生成这些类的API文档,并要求它进行二次代码比对、参数比对、要求严禁擅自杜撰方法。人工核定后,然后追加设计理念提示词,要求大模型进行二次修正。

到这里API文档完成。

创建SKILL

这里比较简单,直接把上面生成的文档文件夹引用告诉大模型,然后提示词要求:创建一份为大模型使用的SKILL文档。

同样经过人工核对,大模型修正,如此几轮后,一个SKILL文档就写好了。

集成到项目

这里会有一点小小的坑。由于SKILL是后续才支持的,以cursor为例,版本2.4以后才会直接支持,可以按照教程在 设置→Rules,Skill,Subagents下找到SKILL,不然的话,看不到

我们可以把生成的skill文件夹,放在平时习惯用cursor打开的根目录的.cursor\skills文件夹下,形成类似如下的目录

验证和使用

在放置好后,用cursor打开项目,然后在提示词输入,“什么是mooSQL”。然后可以发现思考过程有一个leaning的动作,然后就吧啦吧啦说出来了!

使用和优化

在后面的实际使用中,和之前未配置SKILL时相比,生成代码时对mooSQL的正确率大幅提升,基本上没有再出现不存在的api“幻想”问题。这时mooSQL的体验已基本追平被大模型训练时内置好的其他库。

发布和维护

现在,mooSQL的skill已上传到gitee,可以拉取使用。

迭代

后续,根据持续改进的情况,更新skill。

项目主地址:mooSQL主仓库

欢迎Star!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐