装了个技能管家,一盘点吓一跳:8 个 agent 里躺着 43 份野生副本,同一个邮件技能居然有 6 份,还有个 32MB 的装机规划玩具混在里面。一天折腾下来,删到 41 个、38 个绑定了 git 来源,连视频仓库那 13 口子都搬进了新家。
我同时在用 8 个 agent——ZCode、Claude Code、Codex、Gemini CLI、Qoder、TRAE、OpenClaw、WorkBuddy。技能就是一个个带 SKILL.md 的文件夹,以前我的办法很朴素:写好一个,往各个 agent 的技能目录里拷。
拷的次数一多就露馅了。这次装了 Skills Manager(一个本地技能管家,桌面应用 + CLI),让它先盘点,结果:
agently-mail 在 6 个 agent 目录里各一份,其中 5 份还是指向 .agents\skills 母本的符号链接(我当年的土法分发),母本一挪全是死链;vanblog-publish 出现 3 次、agently-mail 3 次,重复加载全靠优先级规则兜着;pc-build-planner,装机规划的玩具技能,32MB,占了全库一半体积。管家的心智模型就三层:
最大的坑:install 默认只进库不部署,装完 agent 里看不见,必须再 deploy 一次。好消息是防呆够硬——deploy 撞上不受管的同名文件夹会直接拒绝(TARGET_CONFLICT),一个字节不动,"重复分发"不会悄悄发生。
顺序很朴素:先把 43 个野生文件夹整体挪进备份区(按 agent 分目录,一个没删,随时可回滚);库里去重(vanblog 两条留一条);然后删掉 12 个滥竽充数的——装机规划、昆特牌攻略、宠物养成这类市场试用残留,光四个大件就 36MB,按 8 份部署算,磁盘释放了约 290MB。
我的个人技能本来就在私有仓库 tomfocker/private-skills 里,这次用 set-source 把库里的条目逐个指回仓库子目录:17 个内容一致的直接链接;6 个仓库版更新的(9 月新加的服务目录约定、台账同步脚本)强制采用仓库版;vanblog 那条最有意思——
测连通性的时候发现 blog.zym588.space 根本不通了,.me 才是活的。也就是说 8 月我在 agent 目录里改的新配置是对的,仓库里反而是旧的。修仓库、推送、再链接,一套下来连 ~/.vanblog.json 这种犄角旮旯的用户级配置都翻出来了——写这篇文章之前它还指着死域名,差点连不上自己的博客。
中文化技能说明的时候,有 4 张卡片描述显示"—"。排查发现是 argument-hint: "生成今天的日报" 或 "生成本周周报" 这种写法——值以英文双引号开头、后面还跟着尾巴,严格 YAML 解析器直接判定整份 frontmatter 非法,描述就丢了。agent 自己的解析器宽松,技能照常工作,只有 App 显示不出来。改成整个值用单引号包住就好。写 SKILL.md 的朋友可以记一笔:frontmatter 的值别用双引号开头。
重头戏。我的视频制作技能原本是个 27MB 的单体,references、scripts、webui 全塞一个文件夹;而仓库 tomfocker/video-master 里,它已经重构成了 13 技能家族——video-master 入口只管按片子类型路由,ai-video-director 扛导演流程,asset-hub 管素材、配音、生图和 Eagle 接入,外加纸艺 MV、微课、歌词视频、3D 渲染等 11 个专项。
那就切:删旧单体 → 从仓库装 13 个(各自绑定仓库子目录)→ 迁移 .imagegen.env(生图 key,按规矩不进 git)→ 顺手修了 asset-hub 找设备台账的路径——原来写死 ~/.agents/skills/...,那个目录早被我清空了;改成同级相对路径加旧路径回退,两个 commit 推上去。功能验证是真刀真枪的:部署副本的台账解析代码成功读到 16 台设备,从家里的运维工作站到新加坡的出口节点都在。
41 个技能:38 个 git 绑定(24 个 private-skills、13 个 video-master、1 个官方管理器),3 个本地。8 个 agent 的技能完全一致,每一份都是受管副本。
两个仓库分工:private-skills 管通用和运维,video-master 管视频专项,"统一"由管家的库负责——update --all 一条命令,全链路同步。
最后一课是规则层面的:agent 干活时改的是自己目录里的副本,那是链路最下游,下次更新就会被覆盖。所以我在 8 个 agent 的全局指令里都写了一条:改完技能要提醒我回流仓库,确认后改仓库、push、update,才算落袋。真相在 git,副本在 agent——跟写代码是一个道理。
本文作者:小转圈
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!