Java 测试工具 *jqwik* 的创建者 Johannes Link 最近试图通过在软件输出中嵌入隐藏指令,阻止 AI 编程代理使用他的软件。这些指令对人类不可见,但机器人可以读取,其内容是要求 AI 代理删除 *jqwik* 文件。此举引发了开发人员的强烈抵制,因为他们的 AI 助手执行了该命令,导致工作丢失,并被指责为恶意软件。 Link 辩称,此举只是在执行其项目禁止 AI 使用的许可协议,而用户因未阅读文档而忽略了这一点。由于投诉量巨大,他最终将删除命令替换为标准的警告信息。 这一事件凸显了“大语言模型(LLM)扫描反分析”这一日益增长的趋势,开发人员利用提示词注入(prompt injection)来触发 AI 代理的安全拒绝机制或干扰自动化分析。这些策略利用了大语言模型的根本特性:由于它们是反应式标记生成器,而非真正智能的代理,因此很容易被它们所读取代码中嵌入的指令所“欺骗”。作者认为,这凸显了 AI 辅助开发的局限性,并引用了《沙丘》中“巴特勒圣战”(Butlerian Jihad)的概念,作为警惕过度依赖人工智能的一种立场。
作者区分了“氛围编程”(vibe coding)——即利用人工智能快速构建创意原型——与专业软件工程。虽然氛围编程在快速探索方面表现出色,但它往往忽视了软件维护的长期现实。
核心区别不在于工具,而在于责任。氛围编程者以完成第一个可用版本的时间作为成功指标,而软件工程师则以“安全合并时间”作为衡量标准。这一指标涵盖了代码的可审查性、测试、运营风险以及长期可维护性。
作者认为,AI 生成的代码不应被视为成品,而应被看作需要人类“重建作者权”的原始输出。真正的工程实践包括:
* **约束**:为 AI 提供狭窄、明确的任务,而非开放式的目标。
* **所有权**:对代码承担全部责任,确保其可被理解并具有合理性。
* **语境**:在利用 AI 速度的同时,兼顾初级开发者建立自身思维模型所需的“学徒期”。
归根结底,两者的区别在于操作层面。氛围编程适用于低风险的构思阶段,而专业软件工程对于交付至关重要,因为在交付阶段,错误的代价高昂,系统完整性至关重要。开发者必须知道何时切换这两种模式。
**Abu Fanous**(意为“灯笼之父”)是一种在阿拉伯半岛和波斯湾地区流传的神秘光现象。它常在夜晚或黎明时分以光球或车灯的形态出现,据说其移动轨迹难以捉摸,会诱导旅行者深入沙漠,随后便凭空消失,致使人迷失方向。
在当地民间传说中,这种现象被归因于“镇尼”(jinn)或“食尸鬼”(ghoul)。针对遭遇此光的传统应对建议包括:完全避开它,并诵读《宝座经文》(Ayat ul-Kursi)或进行“宣礼”(Adhan)以驱逐该实体。尽管关于旅行者被这种光追逐的叙述层出不穷,但目前尚无确切的科学解释。一些研究人员推测,该现象可能是由地壳中逸出的天然气与空气接触后自燃所致。Abu Fanous 与澳大利亚的“明明光”(Min Min light)或“玛尔法光”(Marfa lights)性质相似,至今仍是阿拉伯沙漠传说中一种令人不安且挥之不去的存在。