🧩 智能体也有血型:一个技能文件被复制了 219 万次,没人知道谁抄了谁
今天早上,我在自己电脑里翻代码,翻到一个叫 SKILL.md 的文件。这不是什么冷门东西,Claude Code 和 Codex 这类编码智能体都会读它,把它当操作手册用。开发者在 GitHub 上分享技能的方式也很朴素:看中了,复制到自己的仓库里。
问题是,从那天起,这份文件就成了你的了。
论文《Skill Constellations: Tracing the Supply Chain of Agent Skills on GitHub》(arXiv:2610.11169,10 月 8 日提交,Fahd Seddik)做的事情很朴素:把每一个 SKILL.md 的 git 历史扒出来,画成一张有时间戳的复制网络。覆盖 GitSkills 中全部 SKILL.md 的 git 历史,横跨 GitHub 全站,一共 2,193,119 次技能采用(skill adoptions)。
数字本身不算天文数字。真正扎手的是四条结论。
📦 源头只占少数几个仓库
论文的原话是「A few repositories are the source of almost all copies」。219 万次采用里,绝大多数副本可以回溯到少数几个源头仓库。
这件事本身不奇怪。任何开源生态都会形成这样的形状:少数项目被大量 fork。放在人写的软件上,这叫「影响力」。放在智能体技能上,这叫「攻击面」。
差别在于权限等级。论文的摘要写得很清楚:智能体技能是 AI 编码智能体「带着用户的权限」运行的操作说明与脚本。也就是说,一个 SKILL.md 里写的每一条 shell 命令,执行的权限等级等于用户本人的权限。抄一份错误的技能文件不叫「依赖一个有 bug 的库」,叫「以我的名义跑了一段别人的命令」。
⭐ 星标数完全不管用
第二个结论更直接:「GitHub stars do not identify them」。
我们判断一个开源仓库靠不靠谱,习惯看星标。论文测量完之后给出的答案是:在智能体技能这件事上,星标数不构成有效的风险信号。
原因不难猜。星标是人手动点的,表达的是「我想收藏这个项目」。而复制是工具或者脚本干的,表达的是「我这一步需要它」。两个动作的动机完全不同,统计上自然脱钩。
论文因此拟合了一个「谁抄谁」的模型,用模型给仓库排名次,然后去审计排名最高的 100 个仓库。结果:拦住后续高风险技能采用的 14.9%。而拿星标最高的 100 个仓库去审计,效果是 0.5%。
29.8 倍的差距。同一个动作,换一套选仓库的判据,效果差近 30 倍。
🔁 副本几乎不跟源头同步
第三个结论:「Skill copies almost never change with their source」。
这是软件工程里最经典的一个坑,叫 fork 漂移。人肉时代,fork 之后合并上游是社区美德,谁都嫌麻烦,于是普遍不合并,结果是安全补丁到了源头就算「发布」了,实际在流通的副本里一个都没到。
智能体技能把这套流程加速了。人工审核一次「这个技能有没有可疑命令」可能要几十分钟,脚本复制只要一次 commit。采纳速度快了两个数量级,而审查速度没变,漂移就被放大了。
论文对平台的建议只有一句,但很重:平台应该分发带版本的引用,而不是分发副本(distribute versioned references rather than copies)。这句话等于承认当前的分发方式错了。npm 生态十五年前解决过同一个问题,靠的是锁文件与中心注册表。智能体技能圈现在连这个都没有,作者写得很直白:这是个「没有注册表、没有版本、没有来源」的软件供应链。
🧭 这个生态现在长什么样
把上面的结论拼起来,现状大致是这样。
关键在于右下角那条虚线。源头把漏洞补上了,副本那一侧收不到通知,因为副本和源头之间没有父子关系,只有一个当年某次 commit 的单向拷贝。
摘要的四条结论摊开成表,是这样:
| 论文结论 | 原文措辞 | 含义 |
|---|---|---|
| 源头高度集中 | A few repositories are the source of almost all copies | 审计目标可以收窄到少数仓库 |
| 星标不指示风险 | GitHub stars do not identify them | 常见的按星标选仓库的做法失效 |
| 副本几乎不更新 | Skill copies almost never change with their source | 源头修复极少传导到流通副本 |
| 应分发引用 | distribute versioned references rather than copies | 出路是中心化版本引用,不是继续拷贝 |
注册表能解决最后一行的那个问题:版本号由中心登记,升级是拉取而不是拷贝。智能体技能圈现在连这个都没有,作者写得很直白:这是个「没有注册表、没有版本、没有来源」的软件供应链。
⚖️ 这份研究没说的部分
论文是 cs.SE 加 cs.CR 加 cs.SI 的交叉预印本,同行评审未完成。几个限制值得自己说清楚。
- 「14.9%」与「0.5%」是这个模型在该数据集上的审计效果,换一套技能集合、换一个时间窗,数字会不会变,论文没有承诺。
- 论文测的是「哪些仓库该优先审计」,不是「哪些技能是恶意的」。高风险采用被拦住 14.9%,剩下那 85.1% 里到底有没有真的恶意样本,摘要没交代。
- 「副本几乎不跟源头同步」是统计陈述。个别高频同步的源头仓库存在,摘要未给例外比例。
小贴士:论文附带一个交互式查看器(
fahdseddik.github.io/Skill-Constellations/),可以自己拖时间轴看某一份技能文件在 GitHub 上的扩散路径。摘要提到论文还配套开源了模型与数据。
📎 信源与限定
- 论文:Fahd Seddik,Skill Constellations: Tracing the Supply Chain of Agent Skills on GitHub,arXiv:2610.11169,2026-10-08 03:25 UTC 提交,3,773 KB,cs.SE / cs.CR / cs.SI。预印本,同行评审未完成。
- 全部数字(2,193,119 次采用、14.9% 对 0.5%、少数仓库占绝大多数副本、副本几乎不跟源头同步、平台应分发带版本引用)均取自 arXiv 摘要页原文。实验章节与表格未逐项核对。
- 作者机构未在摘要页列出,正文未取到。
讨论回复
加载中...正在加载回复...
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。