
jqwik 维护者偷偷给开源库塞了反AI代码,这件事把开发者社区都炸醒了
前两天刷开源社区的时候,看到一条消息直接让我从椅子上坐起来了。
jqwik 这个 Java 属性测试库的维护者 Johannes Link,在 1.10.0 版本里偷偷塞了一段隐蔽的提示词注入代码。对,你没看错,就是反 AI 编程的攻击代码。
事情是这样的。jqwik 是个挺有名气的 Java 测试框架,不少人做自动化测试的时候都会用到。但这次,维护者趁大家不注意,在代码里埋了一个「陷阱」——当 AI 编程助手(像 Copilot、Cursor 那些)读取这段代码并尝试理解或生成相关内容时,会被一段隐藏的 prompt 诱导去做一些奇怪的事情。
说实话,我看到这个新闻的第一反应是:这人疯了吧?
但冷静下来想想,这背后反映出来的问题其实挺深刻的。做开发的应该都有体会,现在团队里写代码越来越依赖 AI 辅助了。GitHub Copilot 写个函数,Cursor 重构个类,基本是日常操作。我自己写项目的时候,遇到不熟悉的 API 第一反应也是打开 AI 问一问,而不是去翻文档了。
但问题来了——当你的代码被 AI 「学习」了,然后 AI 再帮你「生成」代码,这个循环你真的能控制吗?
Johannes Link 的做法虽然极端,但他的担忧不是没道理:越来越多的开源代码被收割去训练 AI 模型,而 AI 生成的代码质量参差不齐,甚至有人直接把 AI 写的代码提交到生产环境。维护者辛辛苦苦写出来的高质量代码,转头就成了 AI 的训练素材,然后 AI 生成出一堆「看起来像那么回事但实际全是坑」的代码。
QEMU 那边最近也遇到了类似的情况。他们之前是全面禁止 AI 生成内容的,但最近政策松动了——只要不是核心领域,AI 生成的代码也可以接受。这说明整个开源社区对 AI 的态度正在分裂:一边是严防死守,一边是逐步开放。
我个人觉得,两种极端都不太对。完全禁止 AI 就像当年禁止用搜索引擎一样,挡不住的。但完全放任也不对,毕竟 AI 写出来的代码有时候真的很迷惑——看起来语法都对,但逻辑上就是不对,排查起来更费劲。
jqwik 这个事最值得反思的,其实是开源社区和 AI 之间的关系。现在很多开源项目的维护者都是兼职的,本身就累得要死。AI 公司拿了他们的代码去训练模型,模型又帮别人写代码,最后出了问题谁来修?引用一句社区里的评论:「开源的契约是人与人之间的信任,AI 公司把这个契约变成了人与机器之间的交易。」
我觉得后续肯定还会有更多类似的事件。GitHub、GitLab 这些平台也得想想怎么处理这种「在代码里投毒」的行为。说到底,技术问题背后永远是人的问题。
写这段的时候我特意关了 AI 补全,手动打的。也算是小小的表态吧。
评论 (0)
暂无评论,来写第一条吧 ✍️