哈喽,今天来聊聊这个Blueprint Skills包
平时写博客其实挺随性的,想到啥写啥。最近在折腾项目脚手架的时候,发现了一个有趣的小工具——Blueprint Skills包。虽然名字听起来有点正式,但用起来还挺接地气的。它其实就是一套现成的代码模板和配置,帮你快速搭起一个技能项目的架子。你可能会问,啥是“技能项目”?嗯……可以理解成一种能在某个平台上运行的交互模块,比如聊天机器人插件、自动化脚本啥的。这个包就是帮你省去从零配置的麻烦。
说实话,我第一次看到的时候也挺懵的。GitHub上是一个叫nimitbhargava/blueprint的仓库,里面有个packages/skill目录。点进去一看,有examples、prompts、SKILL.md、package.json这些文件。当时就想,这不就是标准的Node项目配置嘛。但仔细研究了一下,才发现它背后有一套专门用于快速开发技能组件的约定。比如SKILL.md里有技能名称、描述、入口文件等元数据;prompts目录放着对话提示词,如果你要做一个带AI对话的技能,直接用现成的提示词模板改一改就行;examples里有两个示例,一个是简单的“Hello World”,另一个是带表单交互的稍微复杂点的demo。
安装体验:一行命令解决所有
安装过程贼简单,只要你本地装了Node.js,然后打开终端,敲一行命令:
npx skills add https://github.com/nimitbhargava/blueprint --skill skill
注意啊,这里的--skill参数后面跟着的是目录名skill,因为整个包就放在仓库的packages/skill下面。npx会自动下载整个仓库并提取那个目录。第一次运行可能会提示你安装一些依赖,跟着走就行。
安装完以后,你会发现当前目录下多了个blueprint-skill文件夹(名字可能略有不同)。进去一看,嗯,跟GitHub上看到的结构一模一样。这时候你就可以开始玩耍了。想直接跑起来看看效果?先确保你装了 CLI(这个CLI是运行技能的环境),然后直接敲npx skills run skill就能启动。或者你也可以在项目根目录下执行astro run(反正我记得支持)。界面上会显示一个简单的交互页面,你可以输入点啥、点按钮啥的……具体看你选的示例。
里面都有啥?拆开看一看
打开文件夹,我大概列几个值得关注的部分:
- examples/:两个示例目录,每个里面都有
index.html和app.js。一个是最基础的消息显示,另一个是带输入框和按钮的表单。代码风格很干净,注释也友好,适合新手参考。 - prompts/:这里是技能的灵魂部分——如果你要让技能具备对话能力,可以把提示词(prompt)放在这里。我看了下,目前有一个默认的system prompt和一个user prompt模板。你可以根据自己的场景修改,比如加一些角色设定、任务描述啥的。
- SKILL.md:这是技能的“身份证”,记录名称、作者、版本、入口文件等信息。发布技能的时候必须维护好。
- package.json:常规的Node项目配置,依赖很少,基本就一个
astro-sdk之类的东西。你可以自己加其他库。
最让我惊喜的是prompts/里的提示词设计。它用了比较通用的结构,你可以直接拿来接大模型。比如我想做个“旅游攻略助手”技能,只需要修改system prompt,把角色定义成“资深导游”,然后把user prompt里的占位符改成用户提问,就基本能用了。省掉了我自己从头写prompt的试错时间。
实际使用中的小技巧
用了几次之后,总结几个可能会坑的地方(我第一次就踩雷了):
第一,别忘了先安装 CLI。虽然npx命令会拉代码,但本地没有运行环境的话,跑不起来的。安装命令很简单:npm install -g @/cli(具体包名可能有出入,建议看官方文档)。
第二,修改examples里的代码后,需要重新运行。不像有些框架有热更新,这个包目前还是手动模式。不过对于学习阶段来说,重启也不麻烦。
第三,prompts文件支持JSON格式,我在编辑的时候一开始写成了纯文本,结果技能加载报错。后来看了SKILL.md才发现,prompts目录下的文件需要是JSON,里面包含role和content字段。所以写prompt的时候注意格式哈。
它解决什么问题?
说白了,这个Skills包就是为了让技能开发变得模块化、可复用。以前我想做一个对话式小工具,得从零搭项目结构、写入口文件、配置API……现在直接clone这个包,把示例替换成自己的逻辑,几分钟就能搞个原型。尤其是那些对提示词工程感兴趣的小伙伴,这个包里的prompts目录简直就是宝藏,你可以直接拿来做A/B测试——把不同prompt放在不同子目录里,快速切换看看效果。
我还试着把原来的“Hello World”改成“每日新闻摘要”技能,只需要改examples里的API调用部分(因为要用到外部新闻API),然后更新一下SKILL.md里的名称和描述,就搞定。整个过程不到半小时,比我之前写一个完整的Node服务快多了。
最后吐个槽
这个包目前还在早期阶段吧,文档不多,就靠GitHub上那个README(其实Repo根目录有个Readme,但技能目录下没有单独的说明)。所以如果遇到问题,只能去翻source code。不过好在代码量不大,直接读也读得懂。还有一点,npx skills add命令的--skill参数是必须的,我一开始忘了加,结果下载了整个仓库,乱糟糟的。所以一定要带上参数。
好了,今天就聊到这儿。如果你最近也在捣鼓技能开发,不妨试试这个Blueprint Skills包,说不定能给你省不少事。有啥新发现欢迎留言交流~