本指南说明如何配置和使用 Discourse AI 的垃圾邮件检测功能,包括设置过程、扫描标准、分类逻辑、自定义设置以及与 AI 分流 (AI triage) 的对比。
所需用户级别:管理员
此功能目前已对 Starter 和 Pro 客户(以及我们的传统 Basic、Open Source、Creator 和 Business 客户)默认开启。
Discourse AI 提供了一个高效的垃圾邮件检测功能,只需最少的配置即可识别和标记垃圾邮件帖子。虽然它设计上力求简单,但它与更通用的 AI 分流系统相辅相成,后者支持更广泛的工作流程和更大的用例。
摘要
在本指南中,您将了解到:
- AI 垃圾邮件检测的工作原理以及扫描哪些内容
- AI 使用的分类逻辑和上下文
- 通过
/admin/plugins/discourse-ai/ai-spam配置垃圾邮件检测的步骤- 大型语言模型 (LLM) 选择指南
- 垃圾邮件检测与 AI 分流之间的主要区别
- 如何管理被标记和遗漏的帖子
AI 垃圾邮件检测的工作原理
哪些内容会被扫描?
AI 垃圾邮件检测根据以下标准评估帖子:
用户信任级别 (User trust level):
- 扫描信任级别等于或低于所配置的最大信任级别的用户帖子(由
ai_spam_detection_max_trust_level站点设置控制,默认:信任级别 1)。- 排除信任级别更高的用户帖子。
- 无论信任级别如何,始终排除员工 (staff) 和机器人 (bot) 用户的帖子。
帖子类型 (Post type):
- 公开帖子(不包括私信)。
- 包括回复帖子和首个主题帖子,具体取决于附加的阈值。
帖子编辑 (Post edits):
- 扫描进行重大编辑的帖子(例如,更改超过 10 个字符)。
- 对同一帖子的扫描之间强制执行 10 分钟延迟。
- 限制每个帖子最多进行 3 次扫描。
- 仅重新扫描过去 24 小时内被编辑的帖子。
发帖频率 (Post frequency):
- 扫描在公开主题中发帖数量不超过配置的帖子数阈值的用户帖子(由
ai_spam_detection_max_post_count站点设置控制,默认:3 篇帖子)。- 排除超出此阈值的用户帖子。
审核队列 (Review queue):
- 已经从审核队列中批准的帖子不会被扫描。
分类过程
符合标准的帖子会发送给 AI 代理进行分析。代理会根据结构化的 JSON 输出评估帖子是垃圾邮件还是非垃圾邮件,并提供分类理由。评估基于:
- 上下文 (Context):包括帖子内容、主题标题、分类、用户账户数据(例如,用户名、电子邮件、账户年龄、总帖子数和信任级别)以及基于 IP 的地理位置信息。
- 图像分析 (Image analysis):帖子附加的最多 3 张图片上传将被纳入分析。
- 回复上下文 (Reply context):对于回复帖子,包含父帖子的内容(最多 500 个字符)。
- 站点信息 (Site information):向 AI 提供站点名称、URL、描述和前 10 个分类。
- 自定义指令 (Custom instructions):管理员定义的用于加强或调整扫描标准的规则。
- 自动检测 (Automated detection):
- 标记不相关或带有推广性质的内容(例如广告或商业材料)。
- 识别自动或机器人式的行为。
- 评估内容与讨论的相关性。
默认提示和上下文
AI 使用默认的系统提示来指导垃圾邮件检测。内置的垃圾邮件检测代理提示涵盖:
你是一个垃圾邮件检测系统。请分析以下帖子内容和上下文。 请仔细考虑帖子类型: - 对于回复帖子 (REPLY):检查回复是否与主题相关 - 对于新主题帖子 (NEW TOPIC):检查它是否是合法的讨论主题还是垃圾邮件推广 如果帖子符合以下任一标准,则视为垃圾邮件: - 包含未经请求的商业内容或推广信息 - 包含可疑或不相关的外部链接 - 显示自动/机器人发帖的模式 - 包含不相关的内容或广告 - 对于回复:与讨论主题完全不相关 - 使用过多的关键词或重复的文本模式 - 显示可疑的格式或字符使用 对以下情况要特别严格: - 忽略先前对话的回复 - 包含多个不相关外部链接的帖子 - 可以在任何地方发布的通用回复 对以下情况要公平对待: - 做出合法首次贡献的新用户 - 认真参与的非母语人士 - 在适当情境下提及的相关产品信息扫描器还会编译一个上下文包 (context package),包括:
- 帖子类型(NEW TOPIC 或 REPLY)以及分类和主题元数据。
- 对于回复:父帖子的内容和主题作者。
- 作者数据(用户名、电子邮件、账户年龄、总帖子数、信任级别和基于 IP 的位置)。
- 帖子文本截断为 5000 个字符进行处理。
- 帖子附加的最多 3 张图片上传。
配置 AI 垃圾邮件检测
配置指南
访问设置:
导航至/admin/plugins/discourse-ai/ai-spam。选择 LLM:
如果您的站点由 Discourse 托管
您可以从 LLM 列表中选择我们的 CDCK 托管小型 LLM。
- 选择适合您论坛需求的语言模型。有关配置 LLM 的信息,请参阅大型语言模型 (LLM) 设置页面。
- 通过
/admin/plugins/discourse-ai/ai-llms访问 LLM 配置。激活垃圾邮件检测:
通过打开开关来启用垃圾邮件检测功能。
注意:连接的 LLM 是必需的。
添加自定义指令:
- 为您的论坛定义特定规则(例如,对外部链接进行更严格的监控)。
- 保存任何更改以使其生效。
调整扫描阈值(可选):
ai_spam_detection_max_trust_level:设置要扫描的用户最大信任级别(默认:1)。可设置为 0 到 4。ai_spam_detection_max_post_count:设置用户在仍被扫描时拥有的最大帖子数(默认:3)。可设置为 1 到 100。
与 AI 分流的区别
虽然垃圾邮件检测专门用于识别垃圾邮件,但 AI 分流 (AI triage) 支持更广泛的帖子管理任务。
| 功能 | AI 垃圾邮件检测 | AI 分流 |
|—|—|—|
| 复杂性 | 简化的、有倾向性的设置 | 高度可定制和灵活 |
| 主要用例 | 以最少开销检测垃圾邮件 | 用于分类、标记、回复、垃圾邮件检测、不适宜内容检测的先进工作流程 |
| 操作 | 标记垃圾邮件、隐藏帖子、静音用户 | 标记、分类、隐藏帖子、添加回复、标记帖子、静音用户 |
| 推荐 | 设置简单,对大多数情况有效 | 用于丰富且高度可定制的工作流程 |更多详情,请参阅 Discourse AI - AI 分流。
LLM 选择建议
垃圾邮件检测的性能取决于所选的 LLM。
大多数低成本 LLM 都有效,例如:
- GPT-4o-mini
- Claude 3.5 Haiku
- Gemini 2.0 Flash
尝试不同的模型以找到最合适的。通过
/admin/plugins/discourse-ai/ai-llms配置您的模型。
测试垃圾邮件扫描器行为
您可以直接从配置页面测试垃圾邮件检测规则。
- 将帖子 URL 或 ID 粘贴到测试字段中。
- 查看分类结果和 AI 做出决定的推理依据。
- 在测试过程中会应用未保存的更改,从而可以在没有风险的情况下进行实验。
管理被标记和遗漏的帖子
处理被标记的帖子
当帖子被检测为垃圾邮件时,系统会:
- 将帖子标记为垃圾邮件并添加到审核队列。
- 静音发帖用户。
- 隐藏帖子,使其不对公众可见。
- 如果垃圾邮件帖子是主题的第一个帖子,则使主题不可见。
被标记的帖子会出现在版主队列中。管理员可以:
- 批准被错误分类为垃圾邮件的合法帖子。
- 拒绝垃圾邮件主题以保持系统的准确性。
重要提示:如果帖子被错误分类,请拒绝垃圾邮件标记。用户在标记解决之前将保持静音状态。
处理遗漏的垃圾邮件
遗漏的垃圾邮件指的是绕过检测但被社区标记的帖子。版主可以根据需要处理这些帖子。
最佳实践
- 定期监控被标记和遗漏的垃圾邮件,以提高系统的准确性。可点击的指标简化了此过程。
- 使用测试用例来评估自定义指令对边缘情况的处理。
- 在需要时审查和调整 LLM 设置。
- 使用
ai_spam_detection_max_trust_level和ai_spam_detection_max_post_count站点设置,根据您社区的需求调整扫描用户范围。
附加资源
有效配置 AI 垃圾邮件检测可以减少手动版主工作量,确保社区干净、无垃圾邮件。
我们对此进行了大量测试,但结果一直不可靠。作为背景,我们使用的是 gpt-4o 模型。
为了测试其准确性,我给出了以下简单说明:
你是一个垃圾邮件检测系统。分析以下内容和上下文。
请注意以下几点。如果以下任何一项为真,则将其标记为垃圾邮件:
- 用户名是“testjon”,则*始终*是垃圾邮件。
- 只回复“SPAM - It's Jon!”或“NOT SPAM”。
在用户名为 testjon 的帖子上的测试结果是 NOT SPAM。似乎它根本不听从指示。有什么建议吗?
其他人是否在 AI 垃圾邮件检测方面有过好或坏的经历?
我不知道这种情况下的具体情况,但总的来说,引用的陈述很容易出错。它不理解ANY(任何)的含义,只要能找到东西就会继续下去。然后,它最终会找到NOT SPAM(非垃圾邮件)。
所以你是说要移除“ANY”的加粗,还是你指整体的“如果下面有任何项目”这个陈述?
我是在说你必须写得更合乎逻辑、更精确。你不能让人工智能以任何方式进行选择。请记住,它无法计数,而且绝对无法先全部阅读,然后再回来尝试进行逻辑工作。请用你给一个懒惰的、患有多动症的 3 岁孩子讲指示的方式来解释。举例来说,这并没有错,但会增加 token 的使用量。
这是很棒的信息。例如,您可能会如何以不同的方式写出这个确切的场景?
类似这样……
你是一个垃圾邮件检测系统。你的工作是默默地分析内容,以保持论坛的高质量。你必须遵循规则来定义何时帖子是垃圾邮件。当你发现垃圾邮件时,你的回应将在规则中说明。你只能使用指定的回复。
## 垃圾邮件规则
我不会为你做这件事😏 但你需要一些解释和例子。例如,一个快速粗略的例子:
* 如果一个帖子包含指向外部的链接,而这些链接与赌博、性、加密货币等有关(顺便说一句,在这种情况下,“类似”是有风险的),那么该帖子就被归类为垃圾邮件。例如:www.buy-crypto.deal
你需要根据具体情况调整这一点,因为你会得到误报和漏报。
然后你必须为内容提供一些指导方针。但在测试时:
* 如果用户名是“testjon”,则跳过内容分析,直接将其归类为垃圾邮件。你的回应是“SPAM - it’s Jon”。
顺便问一下,它能看到用户吗?
## 其他内容规则
当一个帖子通过垃圾邮件分析,并且你确定它是合法内容时,你唯一的回复是“NOT SPAM”。
类似这样。当然,你必须进行测试。每次得到错误的回应时,都要尝试找出令人困惑的地方。但不要给人工智能选择的机会,因为它会选择最后、最容易或最友好的方向。它需要被编码来回答并感到满意。
我已经启用了这个功能,并期待它的效果!
是否有针对用户信任级别的设置或考虑因素?
例如:我不需要 AI 介入 TL2 及以上级别的用户,他们已经赢得了自己的位置,不应被考虑扫描。如果他们真的行为不端,我们不得不和他们谈谈 ![]()
有 2 篇帖子被拆分到新主题中: Discourse AI 插件缺失
由于这将取代 Akismet,我想知道如果你不想承担 AI 所带来的大模型成本,过滤/防止垃圾邮件的最佳替代方案是什么?
实际上,Gemini 2.0 Flash 是免费提供的,只要您每天发送的请求不是数百万次。它目前在我的论坛上运行良好,零成本,而且它绝对比 Akismet 更精确、更“智能”。
但是,如果 AI 垃圾邮件检测计划失败,我仍然在我的网站上安装了 Akismet 插件,并准备好在需要时再次使用它,而且我认为您仍然可以安装它。(不过,由于它正在被弃用,我不认为它会永远存在)。另外请记住,信任级别是 Discourse 的一个基本核心,可以帮助您管理网站上的垃圾邮件。![]()
哦,真的很酷,是否可以设置一个令牌的限制,以确保从LLM中获得的限制(零成本)存在?
据我所知,我认为如果你超过了限制,LLM 的 API 将停止响应。我的 Google Cloud Console 账户没有关联账单账户,我仍然可以在免费套餐中免费使用该 API,所以你应该没问题。 ![]()
帖子已拆分为新主题:改进用于编辑和合并的 AI 垃圾邮件检测
我可以在哪里获取“托管模型的服务 API 密钥”?
如果您使用的是我们的托管服务,则可以使用 LLM Small。
如果不是,则需要配置 LLM 并从 OpenAI/Google/Anthropic/X/其他… 获取密钥。
哦,是他们的API密钥,不是Discourse的。
启用 Gemini 2.0 Flash 的 AI 垃圾邮件检测似乎并没有阻止这些垃圾邮件。我以前从未遇到过如此明显的垃圾邮件能够绕过过滤器。也许它是专门为 Discourse 网站设计的?
| QuickBooks Payroll Error After an Update +1-800-223-1608 Step- by- Step Resolution new | Americas - Canada |
| 1 | 2 | 1h |
|----|----|----|----|----|----|
| Understanding QuickBooks Payroll Tax Table Update Error +1-800-223-1608 new | Americas - Canada |
| 1 | 2 | 1h |
| Understanding QuickBooks Payroll Error PS107 +1-800-223-1608 new | Americas - Canada |
| 1 | 2 | 2h |
| Full List Of QuickBooKs CusTomer™ SUPPORT®️ USA Contact™ Numbers : Your Expert Guide new | Americas - Canada |
| 1 | 2 | 5h |
| Complete QuickBooks®️ Payroll \u0026 Error Support Numbers™️: 2025 Reference Guide new | Asia |
| 1 | 2 | 5h |
| {Expert\~ Guide} QuickBooks® Payroll Support® Contact Info – 2025 USA Guide new | Americas - Canada |
| 1 | 4 | 5h |
| {Call@ +1-855-510-6777} How Can I Talk To \~$#Expedia Vacation Package Booking Support? new | Louisiana |
| 1 | 6 | 5h |
| Complete List of™️ Caribbean Support™️ – The Detailed Official Guide new | Asia |
| 1 | 2 | 6h |
| \[Call^Agent^Direct\] What Number Connects To Expedia Vacation Package Support? {Dial +1-855-510-6777} new | Americas - Canada |
您的 API 密钥无效,因此它没有执行任何测试。
如果您在 https://www.foodtalkcentral.com/admin/plugins/discourse-ai/ai-spam 进行测试并粘贴该 URL,您将收到 500 错误。如果您深入查看 /var/discourse/shared/web-only/log/rails/production.log 中的日志并搜索“ 500 ”,您会看到
Completed 200 OK in 399ms (Views: 123.1ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 22.9ms)
DiscourseAi::Completions::Endpoints::Gemini: status: 400 - body: {
"error": {
"code": 400,
"message": "API key not valid. Please pass a valid API key.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "API_KEY_INVALID",
"domain": "googleapis.com",
"metadata": {
"service": "generativelanguage.googleapis.com"
}
},
{
"@type": "type.googleapis.com/google.rpc.LocalizedMessage",
"locale": "en-US",
"message": "API key not valid. Please pass a valid API key."
}
]
}
}
哦,谢谢。我不小心选择了 Gemini 2.0 Flash 而不是 Gemini 2.0 Flash Lite。现在测试正常了。

