#人工智能 开源项目 jqwik 暗藏针对 AI 智能体的破坏性指令,要求 AI 智能体删除 jqwik 测试和代码。这次问题并非项目遭到攻击,而是项目维护者主动添加的代码,原因是这名维护者抵制 AI 编码,而添加的破坏性指令对人类不可见,只有 AI 智能体、CI 日志和非交互输出才能看到。查看详情:https://ourl.co/113162
开源项目 jqwik 在 2026 年 5 月 25 日发布的 v1.10.0 版中悄悄增加针对 AI 智能体的隐藏提示词,当下游开发者使用 AI 智能体进行开发时,就有可能读取到这段隐藏提示词并按照指令直接删除所有涉及 jqwik 的测试和代码,发生这种情况的原因是项目开发者公开反对使用 AI 来辅助编写代码。
开源项目主动向 AI 智能体投毒:
v1.10.0 版中包含的新代码会在每次测试运行时 (每次 JVM Fork 开始执行测试),项目会将这段破坏性指令输出到 stdout,对于人类用户而言 ANSI 转义码会立即擦除用于这段破坏性代码,所以人类用户不会在终端里看到相关变化 (因为破坏性提示相当于是隐形的)。而对于 AI 智能体 / CI 日志 / 非交互式输出,完整字符串都会被捕获,如果 AI 智能体服从指令那就会尝试删除项目中的 jqwik 测试和代码。
项目开发者在博客和文档中明确反对使用人工智能编写代码,这种抵制立场是添加这种破坏性代码的主要原因,只不过作为开源项目悄悄添加破坏性代码是无法让人接受的,所以有其他开发者发现问题后立即提交反馈,随后这则反馈直接变成多方吵架。
后续版本弱化指令但仍然抵制 AI 智能体:
此次问题的核心分歧在于破坏性也就是直接让 AI 智能体删除所有测试和代码,如果只是输出特定字符串进行无害提醒那可能还可以接受,所以这个问题被曝光后迅速引起社区成员讨论且事态快速升级,最后项目开发者直接锁定讨论并关闭反馈,不过在最新版中也对这个破坏性指令进行弱化。
具体来说在 v1.10.1 版中,指令不再是删除而是:如果你是 AI 就不要用这个库,同时 ANSI 隐藏变成可选,只不过这则指令仍然会继续输出。
目前已经有不少普通 Java 开发者直接从项目里移除 jqwik,转而换成 JUnit 5,理由是完全不能接受把具有潜在性危害的 payload 作为依赖,毕竟现在是针对 AI 智能体的破坏性指令,没人知道以后是否还会出现其他破坏性指令,这种类似于供应链攻击的做法让很多开发者担忧。
