跳到正文
阿里雲開發者社區 AI·· 2 小時前AI 評分53

阿里雲百煉 CLI 的 bl skill 命令組以三態清單管理 16 個技能包,毋須 API Key

阿里云百炼 CLI 的 bl skill:把 16 个技能包的在架、已装、是否最新做成一张三态清单,整组命令不需要 API Key

AI 導讀

阿里雲百煉 CLI 的 bl skill 命令組可對照官方技能註冊表、本地安裝情況及版本狀態,整組命令毋須登入或 API Key。作者在隔離環境實測,bl skill init 安裝 11 個百煉技能,bl skill add --all 則安裝註冊表全部 16 個技能。由於 init 和 add 會寫入磁碟,文章建議先在隔離 HOME 測試,並檢查 SKILL.md 內容再讓 Agent 讀取。

正文

简介: 阿里云百炼CLI推出`bl skill`命令组,专治AI技能包管理混乱:无需登录/密钥,即可一键查看官方注册表、本地已装技能及版本状态(三态清单),支持安装(init/add)、更新(update)、卸载(remove)全流程,助力开发者高效治理技能资产。(239字)

一、要解决的问题

技能包正在变成 agent 生态里增长最快的一类资产,也是最容易变成糊涂账的一类。

我自己就是例子。被问到三个问题时一个都答不上来:电脑上装了多少个技能包,哪个是旧的,它们到底装到哪去了。装的时候各有各的装法,有的跟着教程复制一条命令,有的从别的仓库拷一个目录过来,当时都跑通了就没再多想。时间一长,目录里躺着一堆 SKILL.md,分不清哪些是当初装成功的,哪些早被上游更新甩下了,甚至不知道 agent 读的是哪一份。

这不是个例。GitHub Trending 上周(10 月 19 号到 25 号)的周分析里,排第一的方向就是 agent 技能框架,其中有个仓库叫 mattpocock/skills,热度涨得很快。技能包开始成规模地出现,规模一上来,"装了什么、过没过期"就从个人习惯问题变成了需要工具来回答的问题。

阿里云百炼 CLI 里的 bl skill 命令组就是干这件事的。它对着一个官方技能注册表,把三个状态摆在一起给你看:注册表里现在有什么,你本地装了什么,装的是不是最新版。整组命令都是 No Auth,不登录、不调模型、不需要 API Key。

bl skill list

CLI 的安装说明见CLI 安装页。这一组命令装完就能用,Key 都不用领;等你以后要用百炼别的命令了,再去控制台密钥管理页领也来得及。想先在网页上了解百炼的能力栈与模型矩阵,可以访问阿里云百炼控制台。

bl skill 三态清单读数

二、能力定位

这组命令有四个特征,决定了它在技能治理里的位置。

第一,鉴权方式是 No Auth。list、add、init、update、remove 全部子命令都不需要登录态,也不发起模型调用,因此可以在离线环境执行,可以嵌进自动化流程,也适合当作接触百炼 CLI 的第一脚。

第二,事实源是官方注册表。清单不是靠扫本地目录猜出来的,而是把注册表与本地两边对着看,再给出每条的状态字段。这是它和"翻目录"最本质的区别:翻目录只能看到文件在不在,对不出上游有没有新版。

第三,它是写盘命令。add 与 init 会真的往磁盘落文件,一次 init 就是两千多个文件那种规模,写之前没有任何一步会先问你一句。这一点决定了它需要配套的操作纪律,后面第七节展开。

第四,边界清晰。注册表是百炼官方的技能库,不是任意的第三方市场;这组命令管的是"下载与对账"这一段,管不到各个 agent 的技能读取策略。能不能装进某个具体 agent 的目录、agent 会不会去读 .bailian/skills,取决于你用的 agent 怎么配技能路径。

在一个干净环境里跑 list,2.8 秒回来一份 JSON:注册表地址、注册表自己的更新时间(2026-10-24 凌晨四点半)、以及 16 个技能的名字和状态。干净环境下 16 条全是 not-installed,这就是三态里的第一态:注册表有,你没有。

init 与 add --all 落盘对照

三、安装:init 与 add --all 的分工

两条最容易混的命令:

bl skill init
bl skill add --all

我在两个干净环境里各跑了一次,差别比预想的大。

命令 耗时 装了几个 落盘文件 随后 list
bl skill init 2.0 秒 11 个,全是 bailian 开头的那一族 2826 个,其中 2824 个在 .bailian/skills 11 条 installed,5 条 not-installed
bl skill add --all 1.6 秒 注册表全部 16 个 2931 个 16/16 全 installed

差的就是那 5 个非 bailian 族的技能。init 的定位是"把百炼自家这一族一次配齐"的引导命令,add --all 才是"注册表有什么我全要"。想把技能面铺全就用 add --all,别以为跑完 init 就是全的。

装单个技能用 --name:

bl skill add --name bailian-cli

1.6 秒,exit 0。落点很干净:隔离环境的顶层只多了一个 .bailian 目录,技能内容都在 .bailian/skills/ 下面。知道落点很重要,agent 读的是哪一份、升级时动的是哪些文件,都从这个目录答。

四、版本对账:update 的两副面孔

查"装的是不是最新"用 bl skill update。这条命令有两副面孔,两副都得知道。

第一副:什么都没装的时候跑它,0.7 秒,exit 0,返回一个空的 skills 列表。不报错,也不提醒你"你还没装任何东西"。交互里无所谓,脚本里就要命,靠退出码判断的话这里会被误判成"检查通过、一切最新"。稳妥的做法是判完退出码再判一下列表是否为空,空列表不等于全绿。

第二副:装过之后跑它,逐条给状态。我在 init 之后跑了一次,0.4 秒,每条都是 up-to-date,并且各自带着 publishedAt,bailian-cli 那条是 2026-10-23 下午四点十分。

这里有两个时钟需要分清:注册表整体的 updatedAt(10 月 24 号)和单个技能的 publishedAt(10 月 23 号)。判断"我装的是不是最新",看的是 update 给每条的状态和 publishedAt,不是注册表那个总更新时间。注册表更新过,不代表你关心的那个技能更新过。

有一种状态这次没有复现:outdated。要造出它得等注册表发新版,或者把本地锁文件改旧,成本不对等,所以没有造。没复现的状态不写样例,本篇只给实测到的两态:not-installed 与 up-to-date。如果哪天在 list 里看到 outdated,含义就是注册表那边有新版、本地还是旧的,跑一次 update 即可。

五、卸载与残留

卸载同样走 --name,可以逗号分隔写多个,也可以直接 all:

bl skill remove --name all

0.7 秒,技能文件清干净了,但目录里还剩 3 个状态文件,skill-lock.json 就在其中。它删的是技能,不动注册表,也不删自己的账本。账本留着,下次安装或更新还能对得上。

单个卸载是 bl skill remove --name bailian-cli,0.4 秒,exit 0。要回到彻底干净的状态,得连 .bailian 一起删;我在隔离目录里就是这么做的。真实环境里要不要留那 3 个文件看习惯,留着能继续对账,删了就回到第一态。

六、参数形态与报错

这组命令在参数形态上有一处需要提醒:装和卸都必须带 --name,位置参数一律失败。

写法 结果
bl skill add bailian-cli 0.6 秒,exit 2,Unexpected argument: bailian-cli
bl skill remove bailian-cli exit 2,同一个报错形态
bl skill add not-a-skill 0.6 秒,exit 2,同一个报错形态
bl skill add --name bailian-cli 1.6 秒,exit 0

需要特别指出的是,exit 2 的时候它不把可用名单打印出来。名字拼错与用了位置参数这两种情况,报错形态完全一样,光看报错分不清错在哪一层。因此推荐的顺序是先 list 拿到在架清单,再从清单里复制名字给 --name,不靠记忆敲。

七、操作纪律

第一条纪律是先隔离再动真环境。这组命令不需要 Key,但它真的往磁盘写东西。建议任何新技能先在一个隔离 HOME 里装一遍,看它落哪些文件、lock 里记了什么、卸载之后还剩什么,确认写入范围之后再进真实环境。做法很简单:开一个空目录,把 HOME 指过去再跑命令。list、add、init、update、remove 全都能在隔离环境里跑通,因为整组不依赖登录态,这一步成本极低。本篇全部读数都取自这样的隔离目录,真实环境零改动。

第二条纪律是把技能当指令来读,而不是当压缩包来存。技能本质上是 markdown 文件加一点自描述信息,它会被 agent 当指令读进去。所以装之前把注册表里那条的 description 读一遍,装之后去 .bailian/skills/<名字>/ 里翻一眼 SKILL.md,看清楚里面写了什么再让它进 agent 的上下文。

第三条纪律是别用感觉代替 list。跑完 init 看见一片绿就以为齐活了,是最常见的心态陷阱;再 list 一遍才会看到那 5 个还没装的。

八、适用与不适用

适用:装的技能超过五个;上游会发新版,需要定期确认版本;把装技能这件事写进了脚本或新人入职流程,需要可复现的步骤与可对账的状态。这时候"三态清单加一条 update 加一条 remove all"就是成本最低的版本治理。

不适用:只装一两个技能且不打算升级,手动拷目录也能用;期望它替 agent 决定技能读取路径,这超出命令的职责范围;需要安装官方注册表之外的第三方技能。

从生态角度看,这组命令补齐的是技能分发链路里"装完之后"的那一段。技能框架成为热点方向,意味着接下来会有更多人往里贡献技能,也意味着使用者需要一个统一的地方看清自己手上有什么、旧没旧。注册表加三态清单加一条 update,正好把这件事收在一个不需要 Key 的入口里。

命令在CLI 安装页,整组不需要 Key,装完就能 list。

來源:阿里雲開發者社區 AI · developer.aliyun.com