文章

评论区请了个 AI 门卫

摘要:规则防行为,AI 防内容:给免审直发的评论通道装一道读内容的关卡——三档判定、后台置顶、误判可申诉,保安工资零元。

·2598 字 ·约 9 分钟 · 16
目录(5 节)
  1. 为什么是 AI
  2. 流程
  3. 实现
  4. 弊端
  5. 尾巴

我给评论区请了个保安。工资零元,性格轴,眼神还行。

为什么是 AI

先说一个反直觉的事:真正的垃圾评论,反而没必要上 AI。

它们连人类都懒得骗。我这套评论系统早有一套纯规则防线:

规则 挡的是
蜜罐字段 无脑填表的机器人
时间戳令牌(页面渲染后至少 3 秒才能提交) 秒进秒出的脚本
每 10 分钟每来源 5 条的限流 频率攻击
纯英文一律拒收 本站是中文博客,无汉字留言九成是推广
外链计数 ≥3 取消免审资格 外链农场

这套组合拳下来,机器人基本被按在地上摩擦。而且拦真垃圾没有任何心理负担——它们本来就不是人,误伤率为零。

规则真正防不住的是另一种局面:老读者发表恶意评论。

情形 为什么麻烦
免审通道被冒用 昵称和邮箱是公开信息。评论跳过审核直达页面
老读者本人偶尔失智 人有失手时:哪天情绪上头阴阳怪气,它一步审核都不用走

我的评论系统有个设定:留言过的老读者,后续评论免审直发。老读者的通道快,快车道也得装测速摄像头。所以这个功能的目标从来不是「拦垃圾」——垃圾轮不到它管——是给免审直发的每一条评论加一道读内容的关卡。

一句话:规则防行为,AI 防内容。

流程

一条评论从提交到落定,现在走这几步:

  1. 规则层先跑:蜜罐、时间戳、字段校验、防重复、限流。被拦下的根本到不了下一步——也不该到,别拿免费额度喂机器人。
  2. AI 读一遍:过了规则层的评论,在同一次请求里交给大模型判档。它只回答三选一:正常 / 疑似 / 垃圾,外加一句不超过 15 字的理由。超时 2.5 秒,超了就当它请假了,评论照常走老流程。
  3. 三档分流:按判定结果落库、提示、排序。按钮永远在我手里,AI 只负责排队和举牌。

三档的去向和回执:

判定 去向 读者看到的提示 后台表现 给站主的邮件
正常 老读者免审直发,其余进待审 AI 预筛通过,已发布。/AI 预筛通过,等待站主确认。 无标记,一切如旧 照常发
疑似 新老读者一律进待审 AI 预筛未通过,需站主确认。评论旁挂疑似待审徽章 排到待审队列最前,带AI 疑似徽标,悬停看理由 照常发
垃圾 直接拒绝,不入库 AI 预筛未通过,误判请联系站主。 后台任何列表都看不到 不发

重点解释两个设计。

判疑似不分新老读者。 老读者的信誉是「历史行为正常」,不是「免检金牌」。拿不准的就得让活人过目——反正排到了队列最前面,误伤也只是多看一眼的事。

后台待审队列:两条疑似排最前,带「AI 疑似」徽标

判垃圾不入库。 与蜜罐的静默丢弃同款:数据库里没有这回事,后台最近评论、垃圾计数里都不出现。垃圾是机器拒收的,不是站主处置的,不该进任何人工视角——否则每条广告都要在我眼前闪一下,那我这保安请得跟没请一样。

误判了怎么办?提示里写了「误判请联系站主」。读者找上门,我把模型或开关调一调,让他重新提交即可。

实现

整个功能三块:一个网关、一次判定、一列数据。没有引入任何依赖。

网关(src/ai/gateway.js,约 90 行):fetch 直连 OpenAI 兼容的 chat/completions 接口,智谱 GLM / DeepSeek / Qwen 兼容模式都能接,不引任何 SDK——我这套博客的依赖洁癖是出了名的,AI 也不能例外。配置在后台设置页:

后台设置页的「AI 预筛」块:开关、审核要求、密钥、模型、接口地址

配置表里那行「审核要求」是这套预筛的灵魂——默认规则管通用垃圾,站主私规管本站的具体情况。线上跑着的是这段(370 字,后台随时改,改完立即执行):

补充判定口径(与默认规则叠加执行):
1. 本站话题以日常生活、工作、摄影、设计、技术、Node.js、独立博客为主。围绕这些的讨论、提问、吐槽都是正常交流;技术回复里贴文档或仓库链接不算推广;友链互换的招呼也算正常。
2. 政治敏感、时政争论、翻墙或科学上网类内容一律判 spam(合规红线)。
3. 推广的变体同样判 spam:谐音拆字(如「威-信」「V❤」)、二维码、口令、群号、公众号名、「加我私聊」。
4. 空泛套话(只有「写得真好」「学到了」而无具体内容)、明显由 AI 批量生成的通用评论 → suspect。
5. 自称站长或冒用「沉沦」名义发言 → suspect,理由注明「疑似假冒站主」。
6. 对文章的善意吐槽、玩梗、自嘲不算攻击;口语化、错别字、短句也不算「语义含混」;无具体内容的纯负面否定 → suspect。

六条各管一摊:第 1 条划话题边界防误伤——技术链接和友链招呼都是常客,不能被当推广;第 2 条是备案站的合规红线,没有商量;第 3 条对付把「微信」写成「威-信」的绕过大师;第 4 条拦最近流行的大模型批量空评;第 5 条防冒名顶替;第 6 条给玩梗的读者兜底——口语化和错别字不是罪。

配置项 说明
API 密钥 AES-256-GCM 加密落库,表单只写不回显,留空即不改
接口地址 / 模型 留空回落默认值(智谱 glm-4-flash),换厂商改这两行就行
审核要求 站主自定义判定要求,追加到默认规则之后由模型执行
保存即生效 网关每次调用前重新读配置,不必重启进程

判定:挂在提交请求里,同步等结果。三个讲究:

讲究 原因
放在限流与校验之后 格式不对的、被限流的都到不了模型调用,不白烧额度
超时 2.5 秒,不重试 读者在等;重试会把最坏延迟翻倍
失败 / 超时 / 输出无法解析 → 当没筛过 评论照常走老流程,AI 挂了网站不能跟着挂

提示词要求它只输出一行 JSON:

{"verdict":"spam|suspect|ok","reason":"不超过 15 字的理由"}

模型输出不是契约,围栏、寒暄、拼写走样都可能有——解析时挑出第一个 {...},档位不认识就整条放弃,当没筛过。

数据:评论表加三列——ai_screen(档位)、ai_reason(理由)、ai_screened_at(时间)。就这么多,没有向量库,没有任务队列。

成本:默认模型 glm-4-flash,免费档。每条评论一次判定,输入几百 token、输出 60 token——保安工资合计 0 元/月。个人博客一天几条评论,这个量级下免费额度都用不完。

弊端

功能好用,账也要摊开算。这套预筛的真实代价,按严重程度排:

弊端 后果 现状
每条评论都多等一次模型往返 同步判定是拿等待换确定——正常评论也得陪跑。模型抖动时,最坏等满 2.5 秒才回落老流程 目前多数判定一两秒内回来
评论内容出站 每条评论原文都会发给模型服务商转一圈。严格说该在评论框旁加一行「提交后将经 AI 预筛」的告知 还没补,欠着
判垃圾没有留档 不入库的另一面:被拒了什么,后台看不到。误杀率没法统计,AI 的判定质量只能靠读者反馈间接感知 刻意取舍
误判恢复路径长 没有自动申诉:读者联系站主 → 站主调模型或开关 → 读者重发,三步全靠人 提示里已留联系方式
三档是模型拍的 没有置信度概念。提示词改一个词、换一个模型,判定行为就可能漂移,换模型后得观察一阵子 目前用免费档,漂了再说
多一个外部依赖 服务商抽风时预筛整体回落为「没筛过」——降级无痛,但那段时间它等于不在岗 降级逻辑已测

最值得展开的是第二条。评论提交时,读者写下的每一个字都会离开我的服务器,去模型服务商那里走一遭再回来。对技术读者这不算事,但对不熟悉这套东西的读者,严格来说我应该先告知——评论框旁边加一行小字的事。这条我欠着。

第三条是「不入库」的另一面。当时为了不让垃圾闪进后台,把留档一起砍了:换来后台干净,付出的是没法复盘——AI 这几天拒了多少、拒得对不对,没有任何数字。等哪天真有读者喊冤,我连案发现场都调不出来,只能请他重发一次复现。

这些弊端没有一条是致命的,但也没有一条会自己消失。模型的判定质量、出站告知、留档与隐私的平衡,都记进了待办——保安上岗第一天,就把他的局限贴在了墙上。

尾巴

这个功能的边界画得很清楚:AI 排队,人判人生。它决定一条评论排多前、要不要等确认、还是直接拒收;但「这条评论算什么」的最终处置,按钮在我手里。

它防的是那道「万一」:万一老读者失智,万一身份被冒用,万一有人拿着别人的信誉走我的快车道。真垃圾不需要它——那部分,规则三件套干得一直不错。

评论16

回复 Feng 取消回复

  • XIGE回复

    不错,很实用,近期博客圈看到搞几个人都在说评论的事,都在搞方案优化

    云南

    • 沉沦作者回复

      博客系统这种评论方式虽然方便,但风险确实同在。

      河北

  • ymz316回复

    比人工还要强了。我之前人工审了3条留言,看着留言好像很用心。同一个用户名,结果3个邮箱名都不可达,再后来网站也变成广告之后,就被我列入待审核了。

    湖南

    • 沉沦作者回复

      哎~有人用 AI 办正事儿,就有人拿来办坏事儿。

      河北

  • Feng回复

    这整的一套一套的,太狠了

    北京

    • 沉沦作者回复

      哈哈,你的评论被判定为
      AI 预筛:疑似 —— 语义含混

      北京

  • 扶苏回复

    又是一片AI味很浓的文章~

    江苏

    • Hary回复

      哈哈,纯手搓的不多了

      北京

    • 沉沦作者回复

      回复你的也是 AI,恐怖不?哈哈!

      河北

  • 扶苏回复

    不过功能非常点赞~评论区值得守护

    江苏

    • 沉沦作者回复

      我最担心的就是这个功能影响了评论提交速度。

      河北

  • 老何回复

    我把你这篇文章喂给AI,让他给我的博客也请一个门卫。

    安徽

    • 沉沦作者回复

      顺便让 AI 把能解决的弊端解决了~

      河北

      • 老何@沉沦回复

        我写好了,好像需要付费的 API,白嫖可以不

        安徽

        • 沉沦作者@老何回复

          去智普官网注册个账号,申请个key,用 glm-4-flash,这个免费。

          河北

  • 似水流年回复

    垃圾评论这个问题一直是防不胜防,只能遇到新的问题再被动升级。

    河南