我们使用 Git 的 --author 标志阻止了 GitHub 仓库中的 AI 机器人垃圾信息

Hacker News Top 工具

摘要

Archestra 团队描述了他们是怎样通过构建信誉工具,并最终使用 Git 的 --author 标志来阻止未经验证账户的贡献,从而打击 GitHub 仓库中的 AI 机器人垃圾信息的,目的是为合法贡献者保留一个安全的空间。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/05/18 15:56

# 聊聊AI垃圾 来源:https://archestra.ai/blog/only-responsible-ai ## https://archestra.ai/blog/only-responsible-ai#the-end-of-open-source-as-we-know-it 我们所知的开源之终结 几个月前,GitHub 分享了统计数据显示 AI 在其产品指标中贡献巨大(https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/?utm_source=web-k2k-octoverse-cta&utm_medium=web&utm_campaign=universe25),完全忽略了贡献质量下降的问题——那时我们就感觉到情况不妙。第一个令人担忧的时刻是我们发布的一个带有 900 美元赏金的 issue(https://github.com/archestra-ai/archestra/issues/1301)。我们原本希望激励某人贡献,为我们的平台带来闪亮的新“MCP Apps”支持。很快我们获得了合法贡献者的关注,他们提出方案、提问、提交尝试——但很快……AI 机器人涌入并引爆了这个 issue,将其推至 **253 条评论**,用毫无意义的“实施计划”甚至对维护者的人身攻击毒害了对话!AI 账号不仅淹没了这个 issue,还淹没了整个仓库。每条草率的评论都会触发通知,推送给每个关注仓库的团队成员。我们的 GitHub 通知变成了一堆噪音。来自 @ethanwater、@developerfred 和 @Geetk172 等贡献者的真实对话——这些人在积极处理赏金任务——都被埋没了。随后,问题演变成了一场流行病。例如,仅为了给 Archestra 添加 x.ai 供应商支持这一 issue,我们就收到了 **27 个 Pull Request(https://github.com/archestra-ai/archestra/pulls?page=1&q=is%3Apr+is%3Aclosed+is%3Aunmerged+x.ai)**,其中大多数 **贡献者甚至没有尝试测试**。我们的一位团队成员每周要花掉 **半天时间清理仓库中的 AI 垃圾**,移除未经测试的 PR,关闭被幻觉出的 issue。一旦我们忘记清理,仓库很快就变成了对合法贡献者完全不友好的地方。 ## https://archestra.ai/blog/only-responsible-ai#fighting-back 反击 起初,我们尝试计算贡献者的“声誉”,并构建了 **London-Cat**(https://github.com/archestra-ai/reputation-bot),一个小型机器人,根据合并的 PR 和其他一些信号来计算贡献者的声誉(示例见 https://github.com/archestra-ai/archestra/issues/1301#issuecomment-3725798117)。它显然无法阻止垃圾信息,但有助于我们区分“谁是谁”。下一步,我们构建了一个 **AI 警长**(示例见 https://github.com/archestra-ai/archestra/pull/2843#issuecomment-3916574928),结果它关掉了一些合法的 PR,真是令人无语 🤦。源源不断的无用 AI 评论和建议只会越来越糟,吓跑了合法贡献者,让我们重新思考:我们是否应该停止用赏金激励贡献(https://github.com/archestra-ai/archestra/issues?q=is%3Aissue%20state%3Aclosed%20label%3A%22%F0%9F%92%8E%20Bounty%22)?是否应该停止给求职候选人布置有趣的测试任务(https://archestra.ai/careers)?我们决定要反击,坚持让我们的仓库成为合法贡献者、负责任 AI 用户、新手和资深工程师舒适且安全的空间。今天,我们 **阻止那些未完成入门流程的人创建 issue、开启 PR 和发表评论**。 贡献者入门:五步获得白名单 贡献者入门:五步获得白名单 是的,这是一种核选项。尤其对于一家被 GitHub 活动彻底评估的 VC 支持的初创公司来说,这很敏感,但我们必须扣下扳机:**我们重视质量胜过数量。我们不被 AI 垃圾推高指标所左右。** 我们希望 Archestra 成为一款优秀的软件,每个人都能贡献,而不被 AI 机器人吞噬。 ## https://archestra.ai/blog/only-responsible-ai#doing-it-in-github 在 GitHub 中实现 没有直接的方法可以在开源仓库中白名单那些可以评论或创建 PR 的用户,因此我们不得不绕道而行。有一个名为“限制为先前的贡献者”的设置。简单规则:如果你之前没有在 `main` 分支上提交过,你就不能对 issue 或 PR 发表评论。 先前的贡献者设置 先前的贡献者设置 该设置无法区分 AI 机器人和注册了赏金任务的真正开发者。两者都属于“非先前贡献者”。两者都会被封锁。GitHub 将“先前贡献者”定义为其 GitHub 账号是 `main` 分支上某次提交的 **作者** 的用户。Git 提交有两个身份字段——**作者**和 **提交者**——它们可以是不同的人。你可以使用 Git 的 `--author` 标志创建一条归属于他人的提交。如果邮箱与他们的 GitHub 账号匹配,GitHub 就会将该提交链接到他们的个人资料,并授予他们贡献者身份。每个 GitHub 账号都有一个 noreply 邮箱:`<ID>+<用户名>@users.noreply.github.com`。通过 API 查找 ID 并提交: ``` gh api users/他们的用户名 --jq '.id' git commit \ --author="他们的用户名 <ID+他们的用户名@users.noreply.github.com>" \ -m "chore: add 他们的用户名 to external contributors" ``` 推送到 `main` 后,他们立即可以评论。 归属于外部用户的提交 归属于外部用户的提交 外部用户显示为 **作者**,我们的账号显示为 **提交者**。这就是 GitHub 将他们视为先前贡献者所需的全部。完整流程如下: 1. 在我们的网站上进行入门流程,包含道德 AI 规则和 CAPTCHA:https://archestra.ai/contributor-onboard 2. 一个 GitHub Action 在提交时触发,查找用户的 GitHub ID,将其用户名添加到一个 `EXTERNAL_CONTRIBUTORS.md` 文件中,并以该用户的身份向 `main` 推进一条提交。 3. 用户即被列入白名单,获得仓库访问权限。 ## https://archestra.ai/blog/only-responsible-ai#final-words 最后的话 尽管 GitHub 报告了大规模指标增长——其中很大一部分是 AI 生成的——我们作为开源项目团队,却不得不承担清理仓库中 AI 垃圾的重任,并想出晦涩的变通方法来维持开源受众的合法性。垃圾不仅使那些想花时间做好事却不得不冲破噪音墙的贡献者失去动力,还带来了重大的安全风险,就像在 LiteLLM 仓库(https://github.com/BerriAI/litellm/issues/24512)中发生的那样——攻击者试图利用 AI 机器人引导对话。亲爱的社区,是时候认真讨论 AI 对开源的影响了。

相似文章

应对大型代码托管平台碎片化

Hacker News Top

本文探讨了项目离开GitHub导致的代码仓库碎片化问题,介绍了一种跨平台统一git活动热力图的工具,并讨论了抵御AI生成垃圾贡献的信任系统。

Zig 项目坚持严格反 AI 贡献政策的理由

Simon Willison's Blog

本文探讨了 Zig 项目对 AI 生成内容的严格禁令,引用了 Loris Cro 提出的“贡献者扑克”理念,该理念强调培养人类贡献者优先于处理代码数量。文章还阐述了这一政策如何影响使用 Zig AI 辅助分支的 Bun 运行时。