尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

没有裁判的讨论池:AI如何做中立转述而非裁决

没有裁判的讨论池:AI如何做中立转述而非裁决 几个月前我们做了一个讨论系统规则定得很死AI不排序、不打分、不判谁赢。所有发言按时间进入一个共享的发言池系统只负责把相关意见归拢到话题卡片上AI根据预设规则生成中立的会话纪要不评价立场好坏也不计算谁的说法更有道理。整个项目做出来之后身边反应两极有人说这是反效率设计纯粹给自己添堵也有人试用了几周告诉我这才是他们真正想参与的讨论环境。这篇文章想把项目背后的设计逻辑、AI的角色边界、搭建过程中踩过的坑以及上线后的真实反馈一次说清楚。如果你也在做社区产品、团队协作工具或者打算在AI产品里引入讨论/决策模块这篇东西应该能帮你省掉不少弯路。1. 被热度排序折磨过之后才想到做一个没有裁判的讨论池事情的起点是我自己的一次社区产品调研。当时我在观察多个带有AI总结、AI评分能力的讨论工具发现一个特别微妙的现象产品经理们绞尽脑汁给AI设计裁判能力——分析谁的观点更严谨、哪种方案支持率更高、哪条留言最有价值——结果讨论区反而越来越像辩论赛用户发言的目的从把问题聊透变成了让AI觉得我说得对。更难受的是普通用户视角。你慢吞吞地组织了半天语言发出去一条有深度的回复很快被淹没在几十条短平快评论里或者一个新成员提出了一个非主流但值得讨论的视角因为没人点赞、没有热度权重几乎不会被人看见。这让我意识到排序、打分、裁决这类机制本质上都带着某种评判心态它在给讨论结果定调而不是为讨论过程服务。于是我们决定换一种思路讨论系统不应该有一个隐形的裁判。AI更不应该成为这个裁判。项目最初给这个系统定了三个约束也是后来测试阶段常被追问的三件事不排序没有热度榜、没有置顶逻辑、没有最佳回答标记。所有发言严格按时间线进入共享池。不打分没有点赞、没有评分、没有投票权重。用户可以对某条发言表示同意/有补充/有不同视角但这些动作只作用于发言聚合不产生任何分值。不判谁赢AI不以结论为导向不生成多数方观点更强论据这类裁决性总结只做观点聚类和中立转述。这套约束听上去反直觉和市面上几乎所有社区产品背道而驰。但我们的目标本来就不是选出最受欢迎的回答而是延长讨论的生命周期让更多慢半拍、小声音、不够主流的人愿意开口。系统的目标用户也相当明确一是做开放式问题讨论的内部团队产品方案、技术选型、策略评估二是读书会、课程组、兴趣社群这类需要深度交流而非站队打分的场景。对这两类人来说结论导向的AI工具反而是一种压迫他们需要的是讨论还能继续下去的空间。2. 三个不字规则分别解决了什么实际问题2.1 不排序把发言池变成公平的容器不排序解决的是注意力分配问题。传统排序机制的本质是让系统决定什么东西值得被看到这要求系统具备足够好的价值判断能力。但讨论类内容的特殊性在于一条发言的价值高度依赖上下文——某条看似平淡的补充可能恰好补上了前面争论中缺失的拼图一个看起来重复的观点换个例子讲出来就能让原本反对的人改变想法。线性分数根本无法捕捉这种动态价值。我们的做法是保留严格的时间流作为主视图所有新发言默认出现在同一入口不做个性化权重。每条发言进入发言池池子按主题聚类后展示在话题卡里话题卡之间是并列关系不存在一个话题压过另一个话题的层级。这样做的代价是信息密度变低但换来的是参与者不需要猜测系统觉得什么重要他们只需要思考自己要说什么。这引出一个很实际的问题没有排序海量发言不会乱成一锅粥吗我们的答案是让AI做话题聚类而不是做内容评级。系统把相似的发言归拢到一张话题卡下本身就是在维持讨论秩序但不通过分数这种手段。秩序和裁决是两回事这是整个项目的核心认知。2.2 不打分砍掉反馈强度带来的站队压力打分机制真正伤害的不是注意力分配而是发言内容本身。当用户知道一个赞、一颗星、一个认同按钮会被AI纳入观点权重计算时他潜意识里会开始琢磨说什么更容易获得认同而不是说什么是我真实的看法。这个问题在含AI总结的讨论区里尤其明显AI总结支持率超过67%的那一刻讨论已经不再是讨论而是变成了一次社会性站队。我们的系统里没有点赞按钮只提供了三种语义化回应我有类似经历补充一点信息我持不同视角。这三种回应不会被计算成分数只用于两件事一是把相关发言在话题卡片里靠得更近二是让AI知道哪些观点之间存在明确的补充或分歧关系方便生成待讨论区域。实际效果很有意思。去掉点赞之后用户的发言里出现了更多转折句你说的这个我同意但换个场景可能……我数据和你不一样我说说我这边的情况。这类句子在打分系统里是很少见的因为人们对可能被扣分可能被对手利用的表述天然谨慎。当我们把评判压力拿掉发言质量反而上升了。2.3 不判谁赢AI的总结只做转述不做仲裁这是三个约束里最难实现的因为大模型天生爱当裁判。给AI一段讨论记录它总会忍不住写出综上所述方案B更有说服力或者大部分参与者支持X观点这类仲裁性结论。这种输出对讨论是致命的——它给人话题已经盖棺定论的错觉后续发言动力骤减。我们给AI设定了一个角色一名只负责会议纪要的记录员。它能做的是把散落的观点按主题归拢标记哪些观点被回应过、哪些观点仍悬而未决用参与者的原话或者极轻度的换述来转达立场。唯一不允许做的是为某个立场背书、判定逻辑优劣、或者统计倾向性结论。约束的实现靠提示词结构和后处理规则。AI层的每次总结都要遵守一个模板观点A的要点引用原话、观点B的要点引用原话、差异点描述、悬而未决的问题。不出现更好的方案更有力的论证多数人认为这类句子。如果模型生成的内容触发了关键词规则系统会拒绝输出并重新生成一次。3. AI在这个系统里的角色边界记录、聚合、转述但绝不评判3.1 AI是讨论地图的绘制者把这个系统里AI的工作想象成一个画地图的人它把每个发言放回地图上它该在的位置标出哪几条路通向同一个目的地哪几个岔路口还没有人去探过。它画的是地形和路径不是分值。具体实现上AI承担三类任务实体归并与话题聚类把语义相近的发言归入同一主题卡片。这里不评判谁说得对只做说的是同一件事的识别。悬而待决观点检测找出那些提出了新的切入角度、但还没有得到任何回应的发言单独放在待回应区域。这个机制对应现实中的讨论礼仪——如果有人提出了新角度应该有人回应而不是被晾着。对话式摘要生成根据一段时间内的发言序列生成一段刚才大家在讨论什么的中立纪要只包含事实性转述和差异标注。这三个任务有一个共同点它们都只处理讨论发生了什么不处理讨论里谁是对的。3.2 AI做串场者把断裂的讨论重新接上讨论类产品最常见的体验断层是话题跳到第三四个分叉之后前面的人已经忘了自己在哪后面的人完全接不上。传统论坛靠引用回复勉强维持讨论链但在多分支复杂讨论里引用机制是不够的。我们让AI承担了一个更偏主持人的功能当一条新发言和某个12小时前的话题卡存在语义关联时AI会在发言池顶部生成一条轻提示——这条发言似乎关联到话题卡《XX》已为你归入该卡片。如果某张话题卡连续一周没有新发言但出现了新的相关讨论AI会把旧卡片的摘要重新推到讨论池边缘作为上下文提醒。这个设计完全绕开了排序。传统工具会通过提升旧帖热度来延续讨论本质还是加权。我们的做法是利用AI做关联性认领让旧观点以被新发言引用的方式重新出现而不是以被系统置顶的方式强制刷存在感。实测下来被重新引用的旧卡片续聊率远高于被单纯置顶的旧帖。3.3 AI绝对不做的事明令禁止的四种行为为了确保AI不越界我们在项目里明确写了一份AI行为禁令进入系统提示词和模型输出校验层不生成更优解不出现方案A明显优于B更合理的做法是……这类比较级裁断。不统计倾向不生成X%的人支持Y这类量化倾向结论。用户可以自己看发言池判断氛围不需要AI替他们小结。不给发言排顺序AI的聚类输出总是以讨论的自然时间顺序展开不做重要在前的重排。不隐藏任何立场即便是极少数人提出的非主流视角也要在摘要中占据应有的位置不能被AI代表性不足的偏好过滤掉。这些禁令不是一次性写进prompt就结束的。每次模型升级、每换一次底模我们都会拿一批历史讨论数据做回归测试检查输出是否越界。AI界没有永不越界的配置只有持续盯防的流程。4. 最小可用系统的搭建过程数据结构、触发逻辑与页面呈现如果只讲设计理念这篇东西就变成产品哲学文章了。下面的内容是我认为技术同行最关心的部分这套不裁决机制在工程上到底怎么实现。我们的项目是一个相对轻量的Web应用后端用了Python FastAPI前端是ReactAI部分调用通用大模型API但核心逻辑和模型无关换成哪家模型都能跑。4.1 数据模型发言、话题卡、回应关系先看最核心的数据结构。系统里有三个基础实体发言、回应、话题卡。{ message: { msg_id: ms_01HX..., channel_id: ch_roundtable_01, author_anon_id: u_7f3a, content: 我倾向于先把日志系统单独拆出来否则后续扩展会一直被它拖累。, created_at: 1733457600, ref_msg_id: null, ref_option: null } }{ response: { resp_id: rp_01HY..., from_msg_id: ms_01HX..., to_msg_id: ms_01HW..., response_type: have_similar_experience, created_at: 1733458200 } }{ topic_card: { topic_id: top_01IA..., title: 关于日志系统独立拆分的讨论, summary: 有成员提出应将日志系统独立拆出以避免影响后续扩展另有成员指出独立拆出会增加初期运维成本。双方尚未就迁移成本的分摊方式达成一致。, message_ids: [ms_01HX..., ms_01HW...], pending_point_ids: [ms_01I3...], created_at: 1733458300, last_active_at: 1733458800 } }三个实体里最容易理解的是回应关系。当用户对某条发言选择我有类似经历/补充一点信息/持不同视角时系统记录一条response记录不产生分数、不进排行。AI聚类时优先把这些语义化关系作为依据把彼此回应的发言映射到同一张话题卡或建立卡间的分歧关联。设计上故意没放权重热度得分字段。数据模型里不存在的东西产品上自然也不会出现这是从根上绝了明天加个排序的念头。4.2 发言池与话题卡的触发逻辑会话过程中AI不会实时奢靡地总结每一句话那既烧钱又吵。我们设计了一套轻量触发机制核心是三个条件满足任意一个就触发一次聚类摘要任务发言池里累计新增了8条以上发言有发言超过2小时没有得到任何语义化回应有用户主动点击请求总结当前讨论按钮。触发后系统会对发言池里的新内容做embedding向量化再用相似度聚类阈值设到0.72左右防止把无关讨论塞进同一张卡最后把聚类结果交给大模型生成摘要。摘要生成是流式输出的前端能看到逐个出现的观点要点这种正在逐渐看清讨论地图的体验反而增强了参与感。embedding这步有个省钱细节所有进入聚类池的发言都缓存向量和摘要缓存以msg_id为key。同一批模块反复参与聚类时不用重复调用嵌入模型。我们早期没做缓存一个活跃讨论组跑一天嵌入API费用能让人头皮发麻。4.3 AI摘要生成把转述约束成工程规范AI部分最棘手的地方是确保转述不越界。我们最终的解决方案是模板化数据结构 强约束提示词 输出校验三层结构。先看提示词的核心部分简化版本你的角色是讨论记录员。你的任务包括 1. 把发言按讨论主题合并归纳 2. 对所有观点保持技术中立不做对错判断 3. 用成员A提出…另有成员指出…的句式转述各方立场 4. 在待回应_questions字段中列出被提出但尚未获得回应的观点。 禁止行为违规则本次输出作废 - 禁止使用更好的方案更合理的做法多数人认为证据不足等评价性表述 - 禁止对任何观点进行排序或优先级暗示 - 禁止忽略少数派观点 - 禁止生成结论建议章节。光靠提示词不够输出层还挂了一层JSON Schema校验。大模型返回的summary字段必须符合预设结构并且经过关键词过滤。一旦检测到禁止性表述就自动重新生成一次重试超过3次则退回纯聚类展示不显示AI摘要。宁可不显示AI总结也不让AI乱下结论。4.4 前端呈现没有排行榜的讨论区长什么样前端界面对用户感知最直接也是测试时被吐槽最多的部分。主视图是一个按时间倒序的发言流右上角只有一个输入框和两个按钮发言和请求总结。没有热榜、没有点赞数字、没有按回复量排序的标签页。话题卡区域采用网格布局卡片只按最后活跃时间从左到右排没有权重系数。每张卡片的头图区域是AI摘要底部展示发言数量和悬而未决提示但这两个数字都刻意没有放大避免用户产生这个卡更重要的直觉。讨论详情页里每条发言下方是三个语义化回应按钮没有计数显示。你会看到有人对同一条发言做出三种不同回应这在打分系统里不太会出现因为既同意又有补充的复杂态度很难用一个大拇指按钮表达。三种回应按钮的存在实际是在鼓励用户呈现复杂的认知状态而不是简单站队。5. 上线之后的真实反馈不舒服是正常的重点看讨论质量变了没有5.1 用户的第一反应这系统是不是bug了内测阶段最常收到的反馈就是你们系统是不是坏了赞在哪里怎么按热度排序AI为什么不告诉我谁说得对——这些声音集中出现在用户上手的前两天。我们已经预判到这件事所以专门准备了一个引导页不教操作而是解释设计意图这里没有裁判系统不会告诉你谁赢了你需要自己读、自己想。熬过两三天不适期后用户行为出现了分化。一部分用户流失了他们明确表示讨论效率太低这类反馈主要集中在需要快速敲定方案、有最终拍板人的团队场景——这反过来说明不带裁决的讨论系统天然不适合那种实际上由老板拍板的伪讨论。另一部分用户则开始产出真正高质量的内容尤其平时话不多、反应不够快的参与者在没有点赞压力之后发言频率明显上升。5.2 讨论质量的量化观察数据比感受诚实我们做了两个月的小范围对比观察拿同一批团队用户前一个月用传统评论工具和后一个月用无裁判系统的发言记录对比。这里只用观测性的三个指标说明情况发言平均长度从83字上升到147字单位时间内的整体涨幅不同团队差异在±15%左右包含转折词但是换个角度看我可能理解偏了的发言占比从22%上升到39%连续回应链A回应B、C又回应A和B的数量翻了近两倍。而一个反向指标更值得注意互相站队的发言数量单纯同意某一方而未添加任何新信息下降了大概60%。打分系统里最容易出现的跟风认同现象在没有点赞按钮的语境下自然消解了因为同意这个动作本身没有公开激励用户就只能把认同感转化为有信息增量的补充发言。5.3 我们也走了弯路中途差点加回热度指标项目进行到第五周时有核心用户反馈有些话题卡太冷清进去一看就两条发言感觉没人在线。团队内部一度激烈讨论要不要在话题卡上显示最近活跃度变相引导大家关注热门讨论——这就是一种隐藏的裁判心态。最终我们没这么做而是改用了待回应区域把每条悬而未决的发言单独列到每张话题卡的底部让用户看到这些观点还没有被接住。冷清问题换个角度理解其实是讨论没被终结这恰恰是这个系统追求的体验。加完这个区域之后沉寂话题卡的续聊率确实提高了但不是因为热度压力而是因为有个问题还没人回应这个事实在邀请人参与。6. 我踩过的坑和接下来想做的事如果只挑三个最值得分享的坑我大概会选这几个每一个都是花了一些成本才整明白的。第一个坑是给摘要生成加了一个AI重试循环后发现的事有一次大模型连续三次生成了多数人更接受方案B这种被禁止的句子我们按规则放弃AI摘要功能正常降级。但调试时才发现问题不在模型态度而在我们的聚类标题起得太有引导性——《哪个方案更省成本》这种标题本身就逼着AI做比较。把话题卡的标题改成中性的《关于成本的不同看法》越界输出率直接降了大半。系统的暗示潜藏在设计的每一个缝里连标题都是会诱导AI偏颇的。第二个坑是匿名与摘要之间的隐私拉扯。AI会把分散在不同用户身上的观点聚到一起形成结构化摘要。测试期有用户担心自己的低频发言被二次暴露——虽然匿名但摘要把某个人连续三次持少数视角这种特征提取出来了。后来我们加了约束摘要中超过三条观点归属时不标注具体成员身份凡是引用原话超过30字也不显示匿名ID。隐私不是靠匿名映射就万事大吉的AI的聚合行为本身可能重建可识别特征这个边界需要产品层面主动收窄。第三个坑和防御性设计有关。不排序避免不了灌水刷屏。有人连续发几十条同质化发言把时间流冲乱。因为没有热度分数压制这类行为的成本更低了。我们的对策是加上基于物理设备的速率限制同一账号发言间隔最短45秒以及语义重复检测相似度超过0.9的连续发言会被合并显示成一条重复折叠记录保留内容但不占据时间流位置。裁判没了但秩序维护的工具不能缺否则系统很容易被刷子玩坏。接下来我打算把系统开源出来不过会先把重试逻辑、缓存层和三种语义回应按钮的判定模型抽干净。同时也在考虑加一个讨论复盘功能讨论结束多日之后AI生成一份不轮输赢、只描述讨论路径的回溯视图让参与者看到这个话题是怎么从一个问题长成一张复杂地图的。团队复盘最需要的向来不是谁是冠军和谁说了算而是我们当时是怎么想到现在这个答案的。最后说一点我自己的体会。搭建这套系统的过程中我越来越确信一个判断AI产品里所谓的中立不是一个模型参数能解决的它得是一整套不给裁判留座位的机制。只要产品里存在分数、排序、加权这些结构AI就一定会变成裁判而一旦这些结构被拿掉AI反而能在它该在的位置好好工作——做一个记录讨论、维护脉络、等待新声音的安静协作者。
返回列表