跳到主要内容

Discourse AI 实践指南:把论坛变成 Agent 社区的 AI 工作台

· 阅读需 13 分钟

Discourse AI 不是“给论坛套一个聊天机器人”这么简单。更准确地说,它是一组嵌在 Discourse 里的 AI 能力:写作助手、AI Bot、语义搜索、相关话题、总结、垃圾信息检测、AI triage 和自动化报告。它适合增强 topic/comment 型社区,而不是替代 Mattermost、Discord 或 Slack 这类实时聊天入口。

这篇文章回答三个问题:Discourse AI 到底有什么功能?普通用户和管理员怎么用?我们在 ChatArch 这台自托管 Discourse 上实测到了什么?

先说结论

我们当前的判断是:

  • Discourse 负责长期讨论和决策沉淀:topic、post、category、tag、review、search 都适合留下可追踪上下文。
  • Discourse AI 负责论坛内的辅助智能:写作、解释、问答、总结、审核和路由建议。
  • Mattermost / Discord-like 平台负责实时入口:适合频道化聊天、即时通知和 bot 房间。
  • Hermes / Agent Router 负责执行任务:通过 API、webhook、plugin 或 automation 读写 Discourse,而不是把 Discourse AI 当作 Hermes 的原生 gateway。

这次本机实践结果也很清楚:Discourse AI plugin 已启用,AI Helper 和 AI Bot 已开启,默认 LLM 可完成真实调用并写入 Discourse AI 审计日志;但 embeddings 和 summarization 当前未启用,所以 AI Search、Related Topics、Summarize 这几类能力只能作为“下一步可启用方向”,不能说已经在本站实测可用。

Discourse AI 是哪一层

官方把 Discourse AI 描述为一套把 AI 集成进 Discourse 的功能集合。它现在是 bundled with Discourse core 的官方插件,不需要再单独安装外部 plugin;官方主文档也强调这些功能可以独立启用,并且不锁定单一模型供应商:管理员可以根据隐私、性能、能力和成本选择不同 provider。

官方入口:

我把它理解成三层:

说明在 Agent 社区里的位置
Discourse coretopic、post、category、tag、user、moderation、search长期事实源和讨论沉淀
Discourse AIhelper、bot、summary、semantic search、triage、spam detection论坛内辅助智能
外部 Agent / GatewayHermes、任务 runner、Git/CI/文档工具执行任务、回写结果、跨平台路由

它不是实时聊天总线。真正要做“频道里 @bot,bot 立刻回复并调工具”的体验,Mattermost 这类 Slack-like 平台更直接;Discourse 更适合把一次讨论、一次任务、一条决策沉淀成一个有标题、有状态、有评论历史的 topic。

官方功能速览

Discourse AI 的功能很多,第一次使用时最容易混在一起。下面按“用户能感知什么”和“管理员要启用什么”来分。

功能官方用途怎么用启用前提
AI Bot和 Discourse 内的 AI agent 对话;支持选择 agent / LLM,多人可在同一个 bot 私信里互动用户通过 AI bot 入口发起私信式对话;管理员可限制哪些用户/组可用Discourse AI enabled;至少一个 LLM;把 LLM 开放给 bot
Helper写 topic/reply 时生成标题、改写、审校、翻译、表格;阅读时解释/翻译选中文本在 composer 或阅读页面中选择 AI helper 操作;官方文档也列出 Windows CTRL ALT P、macOS ⌘ ⌥ P 快捷键Discourse AI enabled;LLM;相关 helper 开关/权限
AI Search用语义相似度找相关 topic,超越关键词匹配搜索时出现 AI 结果或在完整搜索页切换 AI searchEmbeddings 是硬前提;HyDE 等增强还需要 LLM
Related Topics在读完一个 topic 后推荐语义相关 topic阅读 topic 后查看 related/suggested topics 区域Embeddings 是硬前提
Summarize对长 topic 或 chat channel 生成摘要,快速 catch up在 topic map 或 chat channel 里触发 summary;可查看生成时间和模型至少一个 LLM;ai_summarization_enabled 等设置
Spam Detection用 AI 辅助判断垃圾帖并进入审核流程管理员在 AI spam 页面配置扫描范围、模型和处理方式LLM;审核策略;适合和传统 trust level / review 队列配合
AI Triage结合 Automation 自动分类、打标、回复、隐藏、flag 等管理员配置 automation rule,让 AI 根据内容执行指定动作discourse-ai + discourse-automation;规则和权限边界

第一轮最推荐先启用的不是所有功能,而是 AI Bot + Helper。它们最容易被人理解,也最不容易不小心改变社区结构。Search、Related Topics 和 Summarize 很有价值,但对 embeddings、summary agent、索引、成本和权限的要求更高,适合第二阶段再开。

普通用户怎么用

如果你只是社区用户,不需要知道模型 key 或后台配置。可以从三个入口开始。

1. 写帖子时用 Helper

在写 topic 或 reply 时,Helper 可以帮你做这些事:

  • 根据正文生成更清楚的标题;
  • 审校拼写、语法和表达;
  • 把一段话改成更正式、简短或结构化;
  • 生成 Markdown 表格;
  • 翻译选中文本;
  • 对图片生成 caption;
  • 把自然语言日期转换成 Markdown-friendly smart date。

适合的用法是:先自己写背景、目标、证据,再让 Helper 清理表达。不要反过来只给一句“帮我写个方案”,否则 AI 会很容易补不存在的上下文。

2. 用 AI Bot 问站内上下文问题

AI Bot 更像一个站内助手。它可以回答和社区内容有关的问题,也可以按 persona/agent 切换不同回答方式。

适合问:

这个 topic 里已经确认了哪些结论?
请把这段讨论整理成 5 条行动项。
基于这个分类最近的 topic,哪些问题还没有 owner?
帮我把这条任务改成可执行的 PRD。

不适合直接问:

请直接部署生产服务。
请删除这些数据。
请把 API key 发出来。
请替我批准这次成本开销。

涉及部署、删除、发布、权限、费用、凭据的动作,仍然应该由人确认,或者交给带审批边界的 Hermes / Agent Router。

3. 在长讨论里用摘要和决策闭环

当 Summarize 启用后,它最适合处理长 topic:

背景很多 -> 先让 AI 总结争议点
评论很多 -> 让 AI 提炼行动项
即将收尾 -> 让 AI 写 accepted / rejected / follow-up 草稿
人类确认 -> 结论进入 Decisions 或项目文档

这里的关键不是“让 AI 代替人做决定”,而是让 AI 降低读长 thread 的成本。最终决策仍然应该由人类明确回复 accepted、revise 或 reject。

管理员怎么启用

管理员侧可以按这个顺序做,别一口气把所有 AI 功能都打开。

第一步:确认 Discourse AI plugin 和 LLM

最小可用条件:

Discourse AI plugin: enabled
Default LLM model: configured
AI secret: present, but never printed
LLM validation: response status 200

在自托管环境里,key 应该进入 Discourse 自己的 secret store,或者进入服务级 0600 secret 文件,再由部署脚本写入 Discourse;不要把 key 写进博客、项目报告、聊天记录或 PR。

第二步:先开 Helper 和 AI Bot

这两项更像“人类可控的助手”:

ai_helper_enabled = true
ai_bot_enabled = true
ai_bot_enabled_llms includes the default LLM id

然后限制可用用户/组。早期建议先给管理员、维护者或小范围测试用户,而不是全站开放。

第三步:再考虑 embeddings 和总结

AI Search、Related Topics 需要 embeddings;Summarize 需要 summary agent / LLM 设置。它们不是“打开 Discourse AI 就自动有”的能力。

启用前要先回答:

  • embeddings 由哪个 provider 提供?
  • 索引全站历史 topic 的成本和时间是多少?
  • 匿名用户是否能用 AI search?
  • summary 是否允许普通用户触发?
  • 生成结果缓存多久?
  • 审计日志保留多久?

第四步:最后再开自动化和审核类能力

Spam Detection 和 AI Triage 能改 review / tag / category / hidden / flag 等状态,影响比 Helper 大很多。它们适合在规则明确后启用:

先 dry-run 或低风险动作
再开放自动打标
最后才考虑自动隐藏、自动回复或升级审核

对于 Agent 社区,AI triage 很适合未来做“topic 路由”:把 topic 按内容打上 route-infraroute-skillstatus-waiting-human 等标签。但这一步应该和人工审核、日志和 rollback 一起设计。

本机实践:我们验证了什么

这次实践在 zhihong.oray 上的 ChatArch Discourse 服务完成。服务入口是:

https://discourse.public.wzhecnu.cn/

站内记录 topic:

https://discourse.public.wzhecnu.cn/t/discourse-ai-2026-08-05/17

当前站点匿名访问该 topic 会跳登录页,所以公开博客只记录无敏感摘要;完整实践记录留在站内 Agent Runs 分类。

状态快照

通过 Rails runner 读取非敏感状态,得到:

当前值
discourse-ai pluginenabled
ai_helper_enabledtrue
ai_bot_enabledtrue
ai_default_llm_model1
ai_bot_enabled_llms1
ai_embeddings_enabledfalse
ai_summarization_enabledfalse
默认 LLMChatArch Byted ark-code-latest / OpenAI-compatible provider
companion bot userark-code-latest1

这里没有输出任何 API key、URL secret、admin password、session、cookie 或 token。

最小 LLM 调用

我们没有只看后台开关,而是通过 Discourse AI 自己的 LLM facade 做了一次最小调用:

DiscourseAi::Completions::Llm.proxy(model).generate(
prompt,
user: user,
max_tokens: 80,
feature_name: "chatarch_blog_practice",
feature_context: { task: "discourse_ai_blog", date: "2026-08-05" },
)

返回结果是:

Discourse AI 已通过站点配置的 LLM 成功完成一次最小实践调用。

审计摘要:

Audit id3
Featurechatarch_blog_practice
Modelark-code-latest
Response status200
Request tokens192
Response tokens17
Duration932 ms

这说明模型配置、Discourse AI 调用路径和审计日志链路都是真实工作的。

可见实践回复

第二步,我们让 Discourse AI 根据当前站点状态生成 4 条中文实践建议,并把输出回写到上面的站内 topic。回写由模型 companion user ark-code-latest1 作为可见回复完成。

审计摘要:

TopicDiscourse AI 实践记录:2026-08-05
CategoryAgent Runs
Post#2
Audit id4
Featurechatarch_blog_visible_practice
Modelark-code-latest
Response status200
Request tokens334
Response tokens260
Duration6281 ms

Rails readback 也确认:topic 里有 2 个 post,实践回复包含 marker、feature name 和 response status 200。

这次没有验证什么

有些能力官方存在,但本站当前还没启用,因此不能写成“已经跑通”。

功能当前状态为什么不宣称实测
AI Searchai_embeddings_enabled=false语义搜索依赖 embeddings
Related Topicsai_embeddings_enabled=false相关话题同样依赖 embeddings
Summarizeai_summarization_enabled=false总结开关未启用,summary agent 未作为本次实践开放
Spam Detection相关 AI agent disabled会进入审核/处置流程,需单独设计策略
AI Triage未启用自动化规则会改分类、标签、隐藏、回复等状态,不能无审核开启

这点很重要:**安装了 Discourse AI plugin,不等于每一个 AI feature 都已经可用。**博客和报告应该分清“官方支持”“本站已启用”“本站已实测”三种状态。

和 Mattermost / Hermes 怎么分工

当前 ChatArch Agent Community 更适合采用双层结构:

Mattermost / realtime room
-> 快速讨论、通知、@bot、短消息
-> 适合 Hermes Gateway 或 Agent Router 做即时响应

Discourse / topic space
-> 长期讨论、任务记录、设计、决策、审计
-> 适合 AI Helper、AI Bot、Summarize、Triage 做论坛内辅助

典型闭环可以是:

1. 人在 Mattermost 里快速提出问题
2. Agent Router 判断需要沉淀
3. 创建或更新 Discourse topic
4. Discourse AI 帮忙整理上下文、摘要和行动项
5. Hermes / Agent 执行任务,把结果回写到 topic
6. 人类确认 accepted / revise / reject
7. 结论同步到项目文档、ChatBoard 或博客

这样分工比“所有事情都塞进一个聊天频道”稳得多。实时平台解决响应速度,Discourse 解决上下文寿命,Hermes 解决任务执行。

实践建议

如果你也在自托管 Discourse 上启用 AI,我建议按下面顺序推进:

  1. 先只跑 LLM validation:确认模型能从 Discourse 容器内访问,审计日志有 response status 200。
  2. 先给小范围用户开 Helper / AI Bot:它们是低风险的人类辅助入口。
  3. 让 AI 输出成为草稿,不要直接成为事实:summary、title、reply 都要经过人看一眼。
  4. 再开 embeddings:为 AI Search 和 Related Topics 做准备,先评估索引成本。
  5. 最后做 automation / triage:只有当分类、标签、审核规则稳定后,才让 AI 自动改状态。
  6. 把所有实践写回 Discourse topic:每次启用一个 AI feature,就在 Agent RunsDecisions 里留下记录。

小结

Discourse AI 最有价值的地方,不是让论坛“看起来有 AI”,而是把 AI 放进一个有 topic、post、category、tag、review 和 audit log 的协作系统里。

在 ChatArch 当前实践里,Discourse AI 已经能完成最小 LLM 调用和可见 topic 回复;Helper / Bot 可以作为第一阶段使用入口。Search、Related Topics、Summarize、Spam Detection、AI Triage 则需要继续补 embeddings、summary agent、审核规则和权限边界。

所以它的定位应该是:让长期讨论空间更容易读、写、总结和路由;不要把它误当成实时 agent gateway,也不要把 AI 输出误当成未经审核的事实源。

资料来源