1. 问题:公告是 Discord 上阅读量最低的消息类型
每个社区管理员都了解这种模式。你精心撰写了一份公告,将其置顶,@所有人,但不到一小时,它就被表情包和两场争论淹没了。Discord 是一个实时流,没有编辑层。周二查看的成员永远不会看到你周一发布的内容。
每周摘要用不同的契约取代了这种赌博。它不是向信息流中推送更多消息,而是将一周的内容从信息流中提取出来,并将其重新发布为一份结构化、易于浏览的文档。摘要是从成员对话中生成的,而不是从管理员公告中生成的。正是这种区别使其不像是营销内容。
2. 流程:采样、聚类、撰写、发布
Sovereign 摘要任务每周一世界标准时间 09:00 UTC 运行。它对过去 7 天的消息进行采样(最多 100 条,只保留长度超过 3 个字符的真实内容),从优先级链中解析目标语言——仪表板语言,然后是租户设置,然后是 Discord 服务器首选区域设置,然后是回退——并根据严格的提示契约将样本交给 LLM。
该契约是质量控制。提示禁止企业套话,将输出限制在 15-20 行,并强制采用固定的三块结构:关键亮点(3-4 个事实要点)、成果和指标(2 个简短要点)以及未来一周的两个优先事项。模型被指示将每一行都基于样本中的真实消息。它不会凭空捏造基准。
发布的摘要会存储其周边界、摘要和热门话题,因此相同的内容可以作为新闻邮件、论坛帖子或置顶频道消息进行重播。
// Language resolution: dashboard UI > tenant settings > guild locale > fallback
const LANG_PRIORITY = [targetLang, settings.language, guildLocale, 'fr'];
const effectiveLang = LANG_PRIORITY.find(Boolean);
// 7-day sampling window, max 100 messages, real content only
const weekStart = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000);
const sample = await prisma.unifiedMessage.findMany({
where: { member: { tenantId }, createdAt: { gte: weekStart } },
orderBy: { createdAt: 'asc' },
take: 100
});
// Prompt contract enforced on the LLM:
// 1. Key highlights: 3-4 factual bullets taken from real messages
// 2. Wins & metrics: 2 short points
// 3. Focus for the week: 2 priorities
// Hard cap: 15-20 lines. Corporate filler: forbidden.3. 发布:创始人 webhook,而非机器人帖子
Sovereign 通过一个带有社区品牌资料(创始人或公司名称和头像,绝不是机器人用户名)的频道 webhook 发布摘要。成员将其视为人类声音,这改变了参与度和信任度。
Discord 将消息限制在 2,000 个字符,因此管道将摘要分块为 1,900 个字符,并按顺序发布这些块。如果没有可用的 webhook,机器人会回退到普通消息。一个机制,两条路径,没有重复的逻辑。
摘要提示明确禁止企业套话和通用营销。如果本周没有产生真正的亮点,摘要会如实说明。诚实的平淡一周比虚构的精彩一周更能赢得信任。