news 2026/10/26 1:49:01

5个信号识别垃圾账号:anti-slop用户检查如何过滤AI slop贡献者

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5个信号识别垃圾账号:anti-slop用户检查如何过滤AI slop贡献者

【免费下载链接】anti-slop

A GitHub action that detects and automatically closes low-quality and AI slop PRs.

项目地址:https://gitcode.com/gh_mirrors/an/anti-slop
点击查看免费下载

开源维护者正被大量低质量 PR 淹没,其中不少是 AI 自动生成的 "slop" 贡献。anti-slop 是一个 GitHub Action,内置 34 条检查规则,其中**用户检查(User Checks)**专门通过分析贡献者账号的 5 个信号来识别垃圾账号,把 AI slop 贡献者挡在评审队列之外。本文带你快速看懂这 5 个垃圾账号识别信号如何工作、默认值怎么设置,以及如何一键接入你的仓库。

为什么"用户检查"比检查 PR 内容更重要?

垃圾 PR 的描述可以伪装得很漂亮,但账号本身很难伪装:批量注册的账号往往用户名像乱码、注册没几天、一天 fork 几十个仓库、资料页一片空白。

anti-slop 的用户检查正是围绕这些行为特征设计,实现位于 src/checks/user-checks.ts。它和 PR 内容检查(标题、描述、模板等)并行运行,共同汇入同一套失败计数:当失败项达到max-failures(默认 4 项)时,action 才会自动关闭 PR——单个信号亮红灯并不会误伤正常贡献者。

📋 5 个用户检查信号一览

#信号配置项默认值识别目标
1垃圾用户名detect-spam-usernamestrue机器批量注册的账号
2账号年龄min-account-age30天一次性"用完即弃"账号
3每日 fork 数max-daily-forks6个自动化 fork 轰炸
4公开资料require-public-profiletrue隐藏身份的匿名账号
5资料完整度min-profile-completeness4项空壳账号

信号详解:每个信号抓什么样的账号?

信号 1:垃圾用户名检测(detect-spam-usernames)

用户名是最廉价的伪造成本。anti-slop 内置了 3 条垃圾用户名模式(见 src/checks/user-checks.ts):

  • 用户名全是数字(如12345678)
  • 用户名包含 2 位及以上连续数字(批量注册脚本的常见产物)
  • 用户名含独立的ai片段(如ai-helper、my-ai-bot,AI 批量工具的典型命名)

任何一条命中即计一次失败。这套规则来自 130+ 个人工复核过的 AI slop PR 中总结出的真实模式。

信号 2:账号年龄门槛(min-account-age)

自动化刷 PR 的账号大多是"新号"。默认要求账号至少存在30 天(取值范围 0–190 天,设为0可关闭)。

README 中的建议:提高到60或90天保护更强,但可能影响刚注册 GitHub 的正常用户——这是一个典型的"防护强度 vs 误伤率"权衡。

信号 3:每日 fork 数量上限(max-daily-forks)

mass-forking(批量 fork)是自动化 PR spam 活动的经典特征:脚本先 fork 一堆仓库,再逐一提交模板化的 slop PR。

anti-slop 会统计用户以 owner 身份创建的仓库中,任意 24 小时滑动窗口内的最大 fork 数(实现见 src/checks/user-checks.ts),超过默认上限6即失败。短期 fork 爆发是"该账号在跑自动化工具"的强信号。

信号 4:要求公开资料(require-public-profile)

只要 PR 作者的资料页不是公开的,require-public-profile检查就会失败。隐藏资料是匿名批量账号的常见做法,而真实贡献者几乎没有理由把自己的 GitHub 资料设为私密。

💡 附带影响:私有资料账号同时会跳过后续的合并率检查(私有账号的公开 PR 历史无法可靠计算)。

信号 5:个人资料完整度(min-profile-completeness)

这是最巧妙的启发式规则。anti-slop 会对账号资料做10 项信号检查:name、company、blog、location、email、hireable、bio、twitter、followers(>0)、following(>0),统计命中项数。

默认要求至少完成4/10项。垃圾账号和 AI 驱动账号的资料页往往是空的或接近空的——要求一个"最低人格完整度",就能高效滤掉一大批一次性账号(信号定义见 src/types/user-profile.ts)。

⚖️ 信号如何触发自动关闭?max-failures 机制

5 个用户检查信号并非"一票否决"。所有检查结果(含 PR 内容检查)汇总后统一计数:

  • 失败数达到max-failures(默认4,范围 1–25)→ 触发关闭 PR(close-pr默认true),可选锁定对话(lock-pr)
  • 失败数未达到→ PR 正常保留,只在 Job Summary 中列出各检查的 ✅/❌ 明细(见 src/report.ts)

也就是说:一个全新但真实的贡献者,即使账号年龄不够(-1),只要其他信号健康,PR 不会被误关。把max-failures调高 = 更少误伤;调低 = 抓 slop 更激进。

🛡️ 防误伤:零配置的豁免机制

用户检查再聪明,也要给可信的人留门。anti-slop 的豁免逻辑在 src/exemptions.ts 中实现,默认行为:

豁免项配置默认值
仓库 Owner / Member / Collaborator 自动豁免exempt-author-associationOWNER,MEMBER,COLLABORATOR
带exempt标签的 PR 跳过所有检查exempt-labelexempt
官方机器人自动豁免exempt-botsdependabot[bot]等 5 个

维护者想放行某个被误判的 PR?给它打上exempt标签即可,这就是官方留的"逃生通道"。

🚀 快速上手:接入只需一个 workflow 文件

在仓库的.github/workflows/pr-quality.yaml中加入:

name: PR Quality permissions: contents: read issues: read pull-requests: write on: pull_request_target: types: [opened, reopened] jobs: anti-slop: runs-on: ubuntu-latest steps: - uses: peakoss/anti-slop@v0 with: max-failures: 4 detect-spam-usernames: true min-account-age: 30 max-daily-forks: 6 require-public-profile: true min-profile-completeness: 4

整个 action 运行时间不到 15 秒——slop PR 还没进入你的评审视野就已经被关闭了。所有 57 个配置项的完整说明可在 README.md 和 action.yaml 中查阅。

📌 延伸阅读:贡献者健康度还有"隐藏第四信号"

除 5 个用户信号外,src/checks/merge-checks.ts 提供合并率检查:min-global-merge-ratio(默认30%)会统计作者跨所有公开仓库的"合并 PR / 关闭 PR"比例。一个在全网大量提交却几乎从不被合并的作者,是低质量贡献的极强指标——这也是 README 中评价"最有效的贡献者健康检查"。

获取源码

git clone https://gitcode.com/gh_mirrors/an/anti-slop

关键模块路径速查:

  • 用户检查核心逻辑:src/checks/user-checks.ts
  • 合并率检查:src/checks/merge-checks.ts
  • 全部 57 项配置定义:src/types/settings.ts
  • 豁免判断流程:src/exemptions.ts
  • 检查调度入口:src/main.ts
  • 版本变更记录:CHANGELOG.md

⚠️ 注意:anti-slop 目前仍是 v0 版本,v1.0.0 之前可能存在破坏性变更。生产使用建议固定到具体版本号,以保证行为稳定。

【免费下载链接】anti-slop

A GitHub action that detects and automatically closes low-quality and AI slop PRs.

项目地址:https://gitcode.com/gh_mirrors/an/anti-slop
点击查看免费下载
上一篇:从 TradingAgents 到 CN 版:中文金融 Agent 本地化浪潮正在发生什么
下一篇:graphql-engine v3:解析 Rust 引擎中的 GraphQL IR(中间表示)层,从请求到执行计划的完整链路

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/26 1:48:09

mermaid-live-editor:地址栏就是分享链接

mermaid-live-editor:地址栏就是分享链接 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-editor 你改了…

作者头像 李华
网站建设 2026/10/26 1:46:50

uni-app uasm 插件快速上手:WebAssembly 高性能计算全平台调用

uni-app uasm 插件快速上手:WebAssembly 高性能计算全平台调用 【免费下载链接】uni-app A cross-platform framework using Vue.js 项目地址: https://gitcode.com/gh_mirrors/un/uni-app 这篇笔记面向想在跨端项目里跑 C/C 高性能计算的 uni-app x 开发者&…

作者头像 李华
网站建设 2026/10/26 1:46:48

ABAP 里的天仙玉露,给业务流程补充续航,而不是给服务器凭空加法力

月末结算已经跑到一半,外部系统的接口调用额度却快耗尽了。还有几百笔订单等着同步,我们手里有一笔经过审批的备用额度,可以让处理继续推进。这种场景,很容易让人想到《仙剑奇侠传 1》里的天仙玉露。游戏资料通常将它记为恢复单人约 700 点真气的道具。真气恢复后,角色能够…

作者头像 李华