多Agent时代的Skill管理方案
多Agent时代的Skill管理方案
最近处理了一些 AI 能力的需求,常用的方案就是浏览器自动化,借助张铁蕾老师团队的 bridgic-browser skill,这个 skill 的详情可以看这篇 【开源】专为「探路+编码」范式设计的全新浏览器工具集+Skills ,很强大的一个浏览器自动化工具。
在关于浏览器自动化的需求中,通常会对某个网站进行页面探索、网络请求捕获、数据爬虫,而网站中同一类型不同数据详情的结构也非常相似,将其以脚本方式实现是主流的方案。通过脚本实现爬虫,一方面具有一定的稳定性(模型在不同时间的能力有差距),另一方面也能节省 token 的消耗(在一个爬取每日 top 公告并生成日报总结的需求中,只有最后的生成日报消耗 token)。
所以:浏览器自动化通常会借助脚本实现,例如 python,而 python 的运行其实是需要一些环境支持的,像 venv、pyproject.toml 等,也就是说:调试生成 skill 的工程项目相比最终交付的 skill 是有不少冗余的。
接着回到文章的标题,我可能一直使用 claude 在工程目录不断调试,产生 task 需求文档、CLAUDE.md 项目记忆,而最终由于自动化需求,需要在 workbuddy 里运行。多数的 Agent 都会识别 ~/agents/skills 里的 skill,但也有 claude 这样只识别 ~/.claude/ 目录的 agent,所以汇总下来有两个问题:
- 如何将工程项目转为 skill
- 如何处理多 Agent 的 Skill 同步问题
project-to-skill
工程项目转为 skill 的本质是项目到交付物的转变,在传统的项目中,交付物一般是一个 image,即编写 dockerfile,项目编译后通过 dockerfile 生成镜像。
在这里,同样可以借鉴这样的思路,我的项目是这么组织的:
1 | |
- CLAUDE.md 放置项目记忆,参考 Best practices for Claude Code ,每次对话都要加载,所以100行附近最佳;
- docs 放需求文档,用于审计或完成某项任务,process.md 就是提示 agent 生成 process.py 完成文档中需求的;
- scripts 放项目需要用到的脚本,SKILL.md 不是脚本的内容,但也用于最终的 skill 构建,所以我一起放到了这个目录;
- deploy-skill.sh 是实现 project-to-skill 的重点;
- dist 存放 skill 交付物。
我把 deploy-skill.sh 分为两部分,使用 –stage 参数,支持 build、sync、all 选项
1 | |
build 阶段会删除 dist/skill-name 目录,然后按照自定义逻辑执行:
- 新建 dist/skill-name 目录;
- 复制 scripts 文件夹下的脚本到 dist/skill-name/ 下;
- 复制 skill.md 到 dist/skill-name/ 下;
- 压缩 dist/skill-name 目录为 skill-name.zip。
sync 阶段会 dist/skill-name 目录按照自定义逻辑更新到某个位置,例如 ~/.claude/skills/
- 在指定目录寻找是否有 skill-name 文件夹
- 如果不存在直接复制 skill-name 文件夹到该目录
- 删除 ~/.claude/skills/skill-name/ 目录下的 scripts 目录和 SKill.md 文件
- 复制 dist/skill-name 里的文件到对应位置
这里的逻辑每个项目不同,有的还需要 referances 、asserts 目录等。
skill-sync
经历了 project-to-skill,skill 可以输出到某个指定位置了,skill-sync 解决的是不同的 Agent 之间如何同步最新 skill 的问题。
一个简单的方案是,所有其它地方的 agent 目录(如 .agents/skills、.workbuddy/skills)直接软链接到这个目录,实施起来需要管理链接信息,包括某个 skill 都被多少 agent 链接了,链接时如果本地已经存在 skill 了怎么解决冲突等等。
在 6.24 日,阿里云云原生微信公众号发布了一篇文章:别再手动复制 Skill 了:多 Agent 时代的 Skill 管理方案,提出了关于 Nacos Skill Sync 的两种模式解决方案:
- 本地模式,其本质是在 ~/.nacos-cli/skill-sync/profiles/{profile}/skill-repo 目录下存所有需要同步的 skill,nacos-cli 会维护其它 agent 到这个 skill 的软链接,确保内容一致;
- nacos 模式,该模式需要配合 nacos 服务使用。在早期,nacos 用作微服务里的注册中心、配置中心,如今也可以用作 skill 仓库。用户生成 skill 后推送至 nacos 的 skill 仓库,本地 nacos 守护进程会定期(默认30s)同步 skill。

该模式不仅是简单的固定 agents 同步,还可以自定义路径,目前默认会扫描的 agents 不包括 workbuddy,可以通过相关指令将 .workbuddy/skills/ 也加入到需要同步的 agents 里。
如果只是个人开发者为了方便管理 skill,使用本地模式即可,如果需要团队协作、skill 复用,则推荐 Nacos 模式。以下是部分操作手册:
安装 nacos-cli
Linux / macOS 安装:
1 | |
Windows PowerShell 安装:
1 | |
命令速查表
本地模式
| 操作 | 命令 |
|---|---|
| 检查同步状态 | nacos-cli skill-sync status |
| 添加技能(自动选择) | nacos-cli skill-sync add <skill> --non-interactive |
| 添加技能(指定源) | nacos-cli skill-sync add <skill> --from <agent> --non-interactive |
| 添加所有技能 | nacos-cli skill-sync add --all --non-interactive |
| 启动同步 | nacos-cli skill-sync start --non-interactive |
| 解决冲突(使用仓库) | nacos-cli skill-sync resolve <skill> --use-repo --non-interactive |
| 解决冲突(使用代理) | nacos-cli skill-sync resolve <skill> --use-agent <agent> --non-interactive |
| 停止同步 | nacos-cli skill-sync stop |
| 移除技能 | nacos-cli skill-sync remove <skill> |
Nacos 模式
| 操作 | 命令 |
|---|---|
| 检查状态 | nacos-cli skill-sync status --profile <profile> |
| 添加技能(使用 Nacos) | nacos-cli skill-sync add <skill> --profile <profile> --non-interactive |
| 添加技能(使用代理) | nacos-cli skill-sync add <skill> --profile <profile> --from <agent> --non-interactive |
| 添加所有技能 | nacos-cli skill-sync add --all --profile <profile> --non-interactive |
| 启动守护进程 | nacos-cli skill-sync start --profile <profile> --non-interactive |
| 启动(禁用自动上传) | nacos-cli skill-sync start --profile <profile> --non-interactive --no-auto-upload |
| 解决冲突(使用 Nacos) | nacos-cli skill-sync resolve <skill> --use-nacos --non-interactive |
| 解决冲突(使用代理) | nacos-cli skill-sync resolve <skill> --use-agent <agent> --non-interactive |
| 停止守护进程 | nacos-cli skill-sync stop |
| 手动上传 | nacos-cli skill-upload ~/.nacos-cli/skill-sync/profiles/<profile>/skill-repo/<skill> --profile <profile> |
| 设置标签 | nacos-cli skill-sync set-label <label> --profile <profile> |
配置文件管理
| 操作 | 命令 |
|---|---|
| 列出配置文件 | nacos-cli profile list |
| 显示配置文件 | nacos-cli profile show <profile> |
| 设置配置文件 | nacos-cli profile set <profile> host=<host> port=<port> namespace=<namespace> auth-type=<auth-type> |
| 设置认证(用户名/密码) | nacos-cli profile set <profile> username=<username> password=<password> |
| 设置认证(密钥) | nacos-cli profile set <profile> access-key=<access-key> secret-key=<secret-key> |
| 切换默认配置文件 | nacos-cli profile switch <profile> |
代理管理
| 操作 | 命令 |
|---|---|
| 添加自定义代理 | nacos-cli skill-sync agent add <agent-name> <absolute-skill-dir> |
| 列出代理 | nacos-cli skill-sync agent list |
更详细的内容可以访问 Nacos Skill Sync 官方指南 和公众号原文查看~