← 返回信息流
AI 资讯Hacker News·6 小时前

软件依赖中不再包含大语言模型代码

原标题:No LLM Code in Dependencies

速览

大模型代码被认为是不可靠的,现在软件工程社区达成共识:在构建依赖时不应包含这些代码。这有助于减少供应链攻击和二进制依赖中的恶意代码风险。研究和最佳实践指南正在推动这一转变。

AI 深度解读

背景

git-annex 是一个专为处理大型文件集而设计的版本控制工具,广泛用于数据备份、协作和科学计算等领域。其核心设计哲学强调“future proofing”(未来-proofing),即确保软件能够长期、可靠地运行,避免被依赖关系拖累。

近年来,大型语言模型(LLM)开始广泛用于代码生成,但自由软件社区对包含此类代码的依赖普遍存在顾虑。Git-annex 项目决定主动防范,开发了一套严格的审查机制,并通过构建标志限制依赖库版本,以避免使用含有 LLM 生成代码的依赖。这一决定源于对版权风险和软件自由的深刻考量。

核心内容

项目维护者花费约 100 小时的工作,在过去一个月内确保 git-annex 能够在不依赖包含 LLM 生成代码的依赖库的情况下构建,至少目前如此。

他进一步详细阐述了这一工作的必要性:LLM 生成的代码在自由软件中构成潜在地雷,版权归属问题尚未明确,且未来可能发生变化。这对 git-annex 尤为重要,因为其设计高度依赖未来-proofing。

目前,git-annex 支持通过启用 NoLLMDependencies 构建标志(Stack 构建配置为 stack-NoLLMDependencies.yaml)来编译,仅使用预先引入 LLM 生成代码之前的依赖版本。该标志并非默认启用,但欢迎社区使用此类构建。

不幸的是,无法确保这一状态永远持续。新版本的依赖库可能引入 LLM 生成代码,导致旧版本构建失败。维护者计划通过持续审查依赖树来应对这一问题,并欢迎贡献者报告无法构建的情况。

具体已知问题包括:

  • GHC(编译器):9.15 版本起可能引入 LLM 生成代码(提交 a5ec467ee3d4e77c026437a545981269acde3434),git-annex 可使用旧版 9.6.6 构建,但这可能限制 Haskell 语言新改进的利用。
  • RAM(及其反向依赖):RAM 0.21.0 起引入 LLM 生成代码(提交 3a0c034648f1cb7e60e96a681fd74066ff5944fe),该提交包含大量代码变更并在 0.21.1 中被撤销。Git-annex 继续使用未维护的 memory 包(RAM 的前身),但其他依赖库(如 crypton 1.1.0、tls 2.3.1)依赖 RAM 的新版。
  • Persistent:自 2.15.0.0 起引入 LLM 生成代码(提交 ac0a8698e3b07acdacf0ce236d7fc73bb077)。
  • Yesod:自 1.7.0.0 起引入 LLM 生成代码(提交 1b033c741ce81d01070de993b285a17e71178156),其中一次提交消息长达 1489 行,代码变更超过 10,000 行(提交 1ee25122d82f8f94136bf1496a825c6c00b74fcf)。
  • Cabal:构建所需,但不直接链接到 git-annex 内,存在新版可能影响构建的问题。
  • Git:自 2.53 起引入 LLM 生成代码(提交 d7971544fe17378f44f49983010dbfc1834f7bef),git-annex 可使用旧版 2.22 构建。

此外,维护者提到,现有依赖审查机制已成为编程的日常负担。他指出曾发现一些问题:“大型 LLM 生成变更在下个发布中被撤销而无解释;一次 1489 行提交消息、涉及 10,000 行变更的 26,000 LOC 代码库;从其他项目复制代码的 LLM 提示,甚至因运气避免了版权侵权。”

这一工作为他提供了额外依赖质量信息,将深刻影响未来决策。作为仅有的正面收益,他认识到此举可能“扼制洪水”,并怀疑 Software Freedom Conservancy(SFC)和自由软件基金会(FSF)难以做得更好。他表示可能因此重新评估社区参与度,但将继续工作并支持用户。

他特别警示,快速提示 LLM(如“Add fourmolu config and restyled neat format a module”)并自称 10xer 的做法,忽视了更广泛影响:“在上述情况下,该项目将失去我的进一步协作。”

关键要点

  • git-annex 主动排除 LLM 生成代码,通过 NoLLMDependencies 标志和旧依赖版本支持,确保未来-proofing 设计不受影响。
  • 依赖审查已成为持续负担,维护者花费 100 小时审查整个依赖树,反映编程社区日益依赖第三方库的质量问题。
  • 已知问题依赖包括 GHC、RAM、persistent、yesod 和 Git 等,部分问题如 RAM 大规模代码变更被撤销,或 yesod 提交消息冗长。
  • 该决定影响未来决策,但可能限制新 Haskell 语言改进,难以“扼住潮流”。
  • 软件自由组织(如 SFC)已转向 LLM 生成 AI 政策,FSF 类似;项目维护者考虑退出社区,但坚持支持用户。
  • LLM 提示代码复制可能因运气避免版权侵权,暴露生成 AI 的局限性。

意义与影响

这一实践凸显了自由软件在 AI 时代对软件质量和独立性的坚守:通过明确排除 LLM 生成代码,git-annex 优先保障用户信任和长期维护性,防止版权不确定性成为技术债务。

它对开源生态的意义在于,提醒依赖审查已成为必要代价,迫使项目权衡短期便利与长期可靠性,影响开发者选择工具时对第三方库质量的重视。

对社区而言,这可能加速 FOSS 项目建立类似政策(如 SFC 近期发布的 LLM-gen-AI 推荐),推动透明度和审查标准,但也可能导致部分项目分化——追求质量 vs. 拥抱自动化。

对 git-annex 维护者而言,此举体现个人承诺,但“扼住潮流”的现实提醒了自由软件的脆弱性,可能引发参与者重新评估,影响生态多样性。

最终,这份工作不仅保护特定工具,也为整个社区提供借鉴:AI 辅助编程的繁荣并非必然牺牲质量,关键在于构建机制,让自由软件在技术变革中保持核心价值。

查看原文 →joeyh.name