本地模型编了 162 个不存在的包:我重跑一遍,161 个又回来了
来源:dev.to — 2026-11-01
📋 概述
作者让三个本地开源小模型(gemma4:e4b、qwen3:4b-instruct、phi4-mini)在两百个编码任务上写了 1199 个 Python 脚本,然后把每一条 pip install 建议拿去 PyPI 核对:1410 条里有 212 条(15.0%)指向从未有人发布过的包名,冷门任务上这个比例高达 30%。更值得警惕的是稳定性——整个研究清空重跑后,162 个「幽灵包名」回来了 161 个,而且没有冒出新的。作者用 TabPFN 训练了一个只看包名与生成方式、不查注册表的判别器(AUROC 0.975),并做成 Claude Code hook 挡在代理与 pip install 之间:回放全量数据,212 个幽灵安装全被拦住,1165 个真实安装只误伤 13 个。
🔑 核心要点
坏建议有稳定的指纹 :1,199 条输出里 1,183 条逐字相同(98.7%),幽灵名几乎原样复现,说明这不是随机幻觉而是可预测的失败模式。
冷门任务才是重灾区 :整体 15.0%,日常任务只有 1.7%,冷门任务飙到 30.0%;按模型分,qwen3 20.7%、phi4-mini 16.7%、gemma4 8.1%。
不联网也能判 :TabPFN 只吃包名与它的生成方式,离线状态仍能抓住 90.1% 的幽灵安装,这正是供应链攻击最需要的性质。
闸门必须够快才有人用 :拦一个幽灵 2.2 秒、放一个真包 1.7 秒;作者也诚实写了:在 90% 召回下梯度提升的精确率其实更好。
💡 金句
The guard has one job: stand between your agent and pip install, say no to packages that were never written, and let real ones through.译:这道闸门只有一个职责:站在你的代理和 pip install 之间,对从未被写出来的包说不行,让真的包通过。
👍 0
❤️ 点赞
👎 0
沉底
← 返回 dev.to 首页