fecify 如何制作自己的工作流
对AI模型和龙虾智能体的理解
fecify skill已经支持了基本常用的工作流,您也可以制作自己的skill工作流,来满足自己的需求,
首先,您先要了解清楚AI模型和龙虾智能体的关系,逻辑,需要先理解一下为什么有了AI模型,还需要龙虾智能体?
1.AI模型,代表着一种算力,需要用户提供上下文,然后AI进行计算,返回数据。为了更好的结果,用户提供的上下文信息,除了自己输入的内容,还有文档,图片,pdf等内容 ,如果将这些都作为上下文输入给AI就不可以的,因为AI有一定的上下文长度限制,因此就需要进行信息的提炼,提炼后在发给AI模型,否则AI模型拒绝执行
2.上下文的内容太多,无法一口塞给AI模型,因此就需要做上下文的提炼,然后发给AI,这就是龙虾等智能体要做的工作,
- 文档内容太多,现做内容搜索,提炼,缩减内容
- 对任务做切割成子任务
- 最终将上下文的长度,控制在AI模型要求的长度内,这就是龙虾智能体做的事情
3.流程管控
- 除了对发给AI模型的上下文内容做提炼,得到用户需求相关的精炼内容发给AI模型,龙虾智能体还会对返回的结果进行分析,做出判断
- 因此,需要有一个类似于操作系统的流程管理,对AI模型返回的信息进行分析,然后做整体管控,进一步分析,测试,完善等
4.大脑和手脚
- AI模型相当于大脑
- 龙虾智能体具有理解js代码的能力,可以操作本地文件等,相当于安装了手和脚
- 最终形成可以自动化执行的智能体,可以查阅,推理,测试,反馈,优化等步骤自动执行任务
5.目前市场上有很多的智能体
- 但是每家对上下文的理解,推理,提炼,以及流程的管控是不同的
- 因此,不同的智能体,使用同样的AI模型,得到的结果也是很不同,甚至差距很大,原因就是:对上下文的提炼能力,流程管控能力的差距
- 2026年由openai提出harness概念,本质就是一个AI管理的操作系统,可以从多个层面对工作流进行高质量的管控
6.skill
- 为了让龙虾智能体更加专注的根据我们的需求做事情,那么我们就需要提供相关的详细信息,做更严格的限制
- 如果操作的是fecify,那么,我们就需要将fecify的api,全部写入skill,并做出来路由指向(类似于字典),可以高效的找到相应的模块
- 如果我们做的是一个复杂的功能,需要多个api按照逻辑完成,那么,我们就需要基于基本的api,做成工作流,有的部分为了稳定还会写成js代码,进而让其稳定安全的文档特定的任务
- skill本质,还是上下文这个层面,就是为了让龙虾智能体更加高效的提炼出来上下文,然后发给AI模型,然后按照skill说明进行工作流的执行
- 为了稳定,一些基础的功能做成js脚本。为了高效,我们让其进行并发。为了高质量,我们可以让龙虾使用更高级的AI模型来计算,生成图片等
如何制作自己的工作流
通过上面,我们可以了解到,skill是为了提供更精准的上下文,以及帮助龙虾做控制逻辑,让其完成我们的任务,因此,我们尽量提供:
- 更多,更精准的信息
- 更详细的逻辑,对于复杂的逻辑可以加入示例说明逻辑
- 对过程加入控制铁律,对于高敏感的操作必须做询问(譬如:删除数据)
下面我们以例子做说明, 我们会做一个工作流:博客专辑批量创建/更新/添加文章
- 可以批量创建博客专辑
- 可以批量更新博客专辑
- 可以批量删除博客文章
- 给博客专辑添加多个文章,建议专辑和文章的关联关系
1.首先我们需要清楚,进行这些操作的api:创建博客专辑api,更新博客专辑api,删除博客专辑api
- 通过查阅:fecify-基础 API 索引(上)
- 通过查阅:fecify-基础 API 索引(下)
- 通过查阅上面,得到api
- 创建博客专辑api:
docs/blog-collection/blog-collection-create.md - 更新博客专辑api:
docs/blog-collection/blog-collection-update.md - 删除博客专辑api:
docs/blog-collection/blog-collection-delete.md - 博客文章-列表api:
docs\blog-article\blog-article-list.md - 博客专辑-已关联的文章列表:
docs\blog-collection\blog-collection-get-article-list.md - 博客专辑-添加/删除专辑文章:
docs\blog-collection\blog-collection-update-articles.md - 刷新缓存api:
docs/shop-info/refresh-cache.md
查阅,您可以让AI给你查找对应的文件路径,然后你确认,也可以手动查找这几个需要的api
2.确定工作流放到那个文件夹下面,以及命名
- 博客专辑,可以放到文件夹
docs/blog-collection/, 文件命名尽量以workflow开头,譬如:workflow-blog-collection-batch-edit.md - 完整路径:
docs/blog-collection/workflow-blog-collection-batch-edit.md - 工作流名称:博客专辑批量创建/更新/添加文章-工作流
3.整理指令逻辑,如下:
skill:博客专辑批量创建/更新/添加文章-工作流
1.整理指令
skill:博客专辑批量创建/更新/添加文章-工作流
工作流文件路径:docs/blog-collection/workflow-blog-collection-batch-edit.md
根据用户给与的信息,进行多个博客专辑的创建或者编辑
1.需要支持批量进行博客专辑的创建,更新,删除
- 用户给与的内容分为多个部分,每个部分对应一个博客专辑,博客专辑可能是创建,也可能是更新,也可能是删除
- 创建博客专辑,对应:docs/blog-collection/blog-collection-create.md
- 更新博客专辑,对应:docs/blog-collection/blog-collection-update.md
- 删除博客专辑,对应:docs/blog-collection/blog-collection-delete.md
- 博客文章-列表api:docs\blog-article\blog-article-list.md
- 博客专辑-已关联的文章列表:docs\blog-collection\blog-collection-get-article-list.md
- 博客专辑-添加/删除专辑文章:docs\blog-collection\blog-collection-update-articles.md
- 刷新缓存api:docs/shop-info/refresh-cache.md
说明:
- 如果是博客专辑的创建,那么博客专辑的标题是必填的,博客专辑的描述和meta信息如果用户没有提交,那么可以由AI进行生成
- 如果是商品专辑的更新,那么需要用户指定更新的商品专辑的id,以及更新的字段以及值
- 如果是商品专辑的删除,那么需要用户指定删除的商品专辑的id列表
2.博客专辑,添加文章
- 博客专辑如果添加文章,那么需要指定条件,譬如:文章id列表,或者,按照文章标题搜索等
- 如果是按照条件,那么需要使用api,详细参看api:docs\products\product-list.md,得到商品id列表
参阅api:docs\products\product-list.md,即可看到,支持按照下面这些字段进行文章的搜索
| 参数 | 类型 | 必填 | 说明 |
|------|------|:---:|------|
| `title` | string | 否 | 标题模糊搜索 |
| `is_published` | int | 否 | `1` 已发布 / `2` 未发布 |
另外文章数据是分页的,需要依次分页读取数据,得到文章id列表
| `pageNum` | int | 选填 | 页码,不填默认第 1 页 |
| `pageSize` | int | 选填 | 每页数据个数,不填使用系统默认值 |
最终得到文章id列表
3.有了博客专辑id,文章id列表,就可以进行将文章添加到专辑
详细参看api:docs\blog-collection\blog-collection-update-articles.md
| 字段 | 类型 | 必填 | 说明 |
|------|------|:---:|------|
| `collection_id` | int | ✅ | 专辑 ID |
| `add_article_ids` | int[] | 否 | 要添加的文章 ID |
| `del_article_ids` | int[] | 否 | 要移除的文章 ID |
对于文章id列表数据,如果比较多,建议通过分页的方式添加,add_product_ids参数每次添加的博客id,建议不要超过200
4.对于商品专辑的创建和编辑,如果用户指定了语言,那么需要先进行多语言的翻译,然后再进行创建专辑或者更新专辑,这是铁律
5.执行完成后,需要询问用户是否刷新缓存,如果用户回复需要刷新缓存,则进行刷新缓存,使用:docs/shop-info/refresh-cache.md
,进行缓存的刷新
6.下面是一个提交数据例子,您只需要参考实现工作流逻辑,不需要执行
---------------------------
博客专辑的语言:英文
#1
创建博客专辑
博客专辑-标题为:Comfort Stretch Bikini Wholesale
博客专辑-描述为:Comfort Stretch Bikini Wholesale from China Factory - OEM Custom Swimsuit Bikini Set
添加文章id:7092,7091
#2
博客专辑id:375
添加文章:标题包含字符串:Comfort
#3
创建博客专辑
博客专辑-标题为:Denim Jacket Shirt
博客专辑-描述为:任何设计精良的服装,其基础都在于面料和做工。型号 w-0053 采用优质涤纶绉纱制成,这种面料以其出色的悬垂性、抗皱性和持久耐用性而闻名。涤纶绉纱的质地具有微妙的哑光效果
添加文章,标题包含字符串(任意一个满足即可):
- cotton shirt
- china factory
- wholesale
#4
创建博客专辑
博客专辑-标题为:Comfort Wholesale
#5
删除博客专辑
博客专辑id:15
------------------------------------
通过上面,可以看到每一个部分都是一个博客专辑的说明,对博客专辑以及专辑绑定多个文章做说明,然后按照逻辑实现
如果可以,您可以写成可以重复使用的js代码,部分写成js代码也行,为了减少运行过程中现写js代码的工作量
指令发给智能体,将进行工作流的创建
2.加入二段式提交
skill:商品专辑批量创建/更新/添加商品-工作流
需要二段式提交,先根据用户提交的信息进行检查,是否存在问题,如果存在问题则指出,如果不存在问题,则将信息列出,询问用户是否执行
用户确定执行,则正式执行工作流,这是铁律
如果您还有其他要补充的,可以继续补充,譬如:加入并发处理
skill:商品专辑批量创建/更新/添加商品-工作流
需要支持并发,每个博客专辑的创建更新,是异步并发,最大数为5个
每个专辑内部的逻辑是同步的,专辑内容生成,以及专辑保存,添加文章这些都是同步执行。
3.skill检查一遍
指令
skill:博客专辑批量创建/更新/添加文章-工作流
检查一下是否存在逻辑问题,检查一下,发现问题进行修复和优化
4.完善skill路由
fecify的路由结构,是3层结构:skill.md --> docs/blog-collection.md --> docs/blog-collection/workflow-blog-collection-batch-edit.md
指令:
skill:博客专辑批量创建/更新/添加文章-工作流
1. 对skill 进行检查工作流:docs/blog-collection/workflow-blog-collection-batch-edit.md 发现问题,进行优化处理。
2. 入口文件:docs/blog-collection.md 对工作流进行说明,描述,以及其他的检查,发现问题进行修复
3. 对docs/blog-collection.md的内容进行归纳,然后写入skill.md
4. 从skill架构进行优化
5.进行测试:
指令:
博客专辑批量创建/更新/添加文章-工作流
博客专辑的语言:英文
#1
创建博客专辑
博客专辑-标题为:Comfort Stretch Bikini Wholesale
博客专辑-描述为:Comfort Stretch Bikini Wholesale from China Factory - OEM Custom Swimsuit Bikini Set
添加文章id:7092,7091
#2
博客专辑id:375
添加文章:标题包含字符串:Comfort
#3
创建博客专辑
博客专辑-标题为:Denim Jacket Shirt
博客专辑-描述为:任何设计精良的服装,其基础都在于面料和做工。型号 w-0053 采用优质涤纶绉纱制成,这种面料以其出色的悬垂性、抗皱性和持久耐用性而闻名。涤纶绉纱的质地具有微妙的哑光效果
添加文章,标题包含字符串(任意一个满足即可):
- cotton shirt
- china factory
- wholesale
#4
创建博客专辑
博客专辑-标题为:Comfort Wholesale
#5
删除博客专辑
博客专辑id:15
注意,如果指定博客专辑id,文章id,那么这个id一定要存在,否则将无法找到数据
执行完成后,进行数据检验,如果发现问题,则通过指令进行告知,让其完善
如果使用过程中还有问题需要让他完善,那么可以继续给他指令,不过需要注意,进行该工作流的更新,第一句需要加上
skill:博客专辑批量创建/更新/添加文章-工作流
加上这句话,代表让智能体进行skill的功能更新,然后在后面加上你的要求和逻辑
工作流的制作,需要多试多练,因此,建议您找一个店铺进行测试,多使用几次就熟悉了
6.如果要做跨系统的工作流多个系统完成
- fecify skill已经把基本的api加入,譬如:fecify-基础 API 索引(上) 和 fecify-基础 API 索引(下)
- 对于其他系统的api,您首先需要有文档,然后把该api加入skill里面,然后再制作工作流