ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Push-to-Talk事实核查器:零摩擦语音验证系统的设计与实现

Push-to-Talk事实核查器:零摩擦语音验证系统的设计与实现 去年年底我做了个挺有意思的业余项目名字叫The Truth Machine: A Push-to-Talk Fact Checker。简单说它是一个按住说话、松手自动核查事实的小工具——你说一句我觉得蜂蜜放多久都不会坏我这边松开按钮几秒后返回给你一条结论该说法在密封保存条件下基本成立但存在含水量和污染前提置信度中高。整个过程不用打字不用切窗口搜索不用翻十几个网页交叉对比你要做的就是按住按钮把话说清楚。这个项目的起因特别朴素我在听播客、刷短视频、跟朋友吃饭闲聊的时候经常听到各种听着很专业但仔细一想有点可疑的说法。比如喝咖啡会让人脱水空调除湿模式比制冷模式省电某种维生素能显著预防感冒。以前遇到这种情况我一般会当场存疑然后过五分钟就忘掉了。想当场验证太麻烦——掏出手机、解锁、打开搜索页、想关键词、翻结果、来回比对来源一套流程走完饭桌上的话题早就跳到下一轮了。我在想能不能做一个工具把验证的摩擦成本降到几乎为零让随手一查变成开口一查。这个项目从开始到跑通第一个端到端原型大概花了我两周的业余时间。这篇文章把我的完整思路、技术选型、踩过的坑以及最后留下来的设计取舍都写出来。它不一定适合所有人直接抄作业因为涉及不少本地模型和API的组合但对想做语音交互工具、实时核查系统、或者单纯好奇机器测谎怎么落地的人来说应该能提供一份有价值的参考。1. 这条路的关键问题为什么是按住说话而不是喊一嗓子先说交互设计这是The Truth Machine最早定下来的核心决策。从一开始我就没打算做一个类似语音助手的东西。你喊一声嘿助手帮我查一下蜂蜜会不会变质听起来很自然但实际用起来问题特别多。首先是唤醒误触设备在客厅里电视里有人喊一句类似唤醒词的话它就醒了然后开始听你后半句识别结果乱七八糟其次是持续监听带来的隐私心理压力很多人对着一个永远在听的设备说话会不自觉地拘谨尤其聊到个人信息的时候最后也是最关键的——自然语言指令解析本身就是一个大坑帮我查一下XX是不是真的XX这个说法靠谱吗你听说过没有XX这类变体太多了你得先猜用户到底要做核查还是要闲聊还是单纯在问问题。Push-to-Talk完全绕开了这一堆麻烦。它背后的逻辑极其简单物理按压动作本身就构成了完整的指令边界。我按下按钮的那一刻就是在说我开始发起一次核查我开口说的话就是要核查的原始断言我松手的那一瞬间就是在说我的话讲完了现在开始处理。不需要唤醒词不需要意图分类不需要判定这句话到底是不是一个问题。整个交互协议变成了一次干净的录音传输处理。这里有一个很多做语音产品的人容易忽略的技术红利按压本身就是最完美的语音活动检测VAD信号。传统语音助手要处理一整套端点检测问题——什么时候人开始说话什么时候停顿是语气停顿而不是句子结束背景噪音里有没有人声这些问题每一样都要花大量算力和调参去解决。而Push-to-Talk把问题直接简化掉了我按下按钮才开始录音所以按下之前的噪音天然与我无关我松手就结束录音所以结尾的静音段最多修剪个几百毫秒就够了整个录音被物理地封装为一个语义单元里面几乎必然包含完整的人声和完整的句子边界。我后面甚至把自动VAD模块整个删了就保留了一个简短的端点修剪函数效果反而更稳。再说延迟感知。手指按住按钮的时候用户知道系统正在录音此时系统处于充电状态。松手之后用户开始等待结果但物理按压本身已经给了用户一个预期建立的过程。实测下来从松手到结果返回只要控制在3秒以内用户就不会产生明显焦躁感而如果是普通语音助手那种说完了还要等唤醒词回味一下的状态用户的心理等待时间会拉长一倍都不止。硬件上我的原型用的是一个USB小按钮驱动程序把它映射成键盘上的一个按键。桌面端我用的是空格键按住说话长按启动录音松开触发提交移动端我用的是触摸按住录音组件用的是浏览器的Pointer Events。整套交互代码其实不超过100行但却是整个项目里用户反馈最好的一部分。这也是我强烈建议所有想做类似工具的人先想清楚的一个点不要一上来就堆模型先把你的人机交互协议定义明白。哪怕你后面换再强的ASR、再强的LLM只要交互边界是模糊的整个产品用起来就会透着一股蠢劲。2. 五段式核查流水线从声波到证据链的完整通路The Truth Machine的技术骨架是一条五段式流水线音频采集与修剪、语音转写、声明拆解、证据检索、评估输出。这一节我把每一段的选型理由和核心实现讲透。2.1 第一段音频采集与端点修剪这部分我用的是平台自带录音API加一个轻量修剪逻辑。因为物理按键已经给出了清晰的开始和结束信号所以我不需要实时判断人声从哪里开始只需要在录音结束后处理掉开头结尾的空音即可。具体做法是对PCM音频做峰值检测找第一个超过固定阈值的采样点和最后一个低于静音阈值的采样点各向外多保留400毫秒然后截取中间部分。这个逻辑听起来土但实测在安静环境下准确率非常高而且几乎没有算力开销。def trim_silence(pcm, sample_rate, threshold0.015, pad_ms400): import numpy as np data np.frombuffer(pcm, dtypenp.int16).astype(np.float32) / 32768.0 frame_len int(sample_rate * 0.02) # 20ms一帧 rms np.sqrt(np.square(data.reshape(-1, frame_len)).mean(axis1)) voiced np.where(rms threshold)[0] if len(voiced) 0: return b pad_len int(sample_rate * pad_ms / 1000) start max(0, voiced[0] * frame_len - pad_len) end min(len(data), (voiced[-1] 1) * frame_len pad_len) return data[start:end].tobytes()注意一个实际问题USB按钮映射成键盘按键后用户有时候会不小心按住太久录进去一大段45秒的独白。这种情况在原型阶段处理策略就是截取前30秒拒绝后面的内容同时在界面提示请把断言控制在20秒以内。这不是模型能力不够而是检索阶段如果句子太长拆出来的声明太多会严重拖慢端到端延迟。让用户把话说明白、说明短是对整个系统最大的优化。2.2 第二段语音转写本地小模型还是云端大模型语音转写这块我一开始想偷懒直接调云端的ASR服务。后来发现两个问题一是有时候只是临时验证一小段话我不想为了这一句话把一个包含敏感信息的音频传到云端二是我的原始版本就跑在树莓派和旧笔记本上网络波动会直接把延迟拖到不可接受。所以最后我选的是本地Whisper——更具体地说是Whisper的小型模型small。为什么不用tinytiny的中英文混合识别能力太弱了实测蜂蜜识别成粉末的次数多到让我怀疑人生为什么不用medium或large因为这只是一个拿到文本去做检索的前置步骤不需要逐字逐句的广播级精度small在中文和英文上的表现已经足够好而且在CPU上跑一段10秒的音频small大约只要1到1.5秒。转写时有一个参数让我对比了很久就是initial_prompt。很多人直接忽略这个参数但我在实测中发现给Whisper一行上下文提示能显著改善口语化的断句和专有名词。比如我设置initial_prompt以下是一段关于日常生活常识的中文口语请转写为简体中文。蜂蜜、咖啡、维生素这类生活词的识别错误率能下降三到五个百分点。这个参数本质上是在引导Whisper的解码器倾向于某种词汇分布代价很小收益却肉眼可见。2.3 第三段把一整句话拆成可核查的原子命题这一段是整个流水线里最容易被低估的环节。很多人以为语音转出来之后直接丢给搜索引擎或者直接丢给大模型验证就行了实际上这是错的。因为一句日常断言往往是复合句里面可能包含了几个独立的命题它们的真伪完全不同。举一个我测试时用过的真实例子蜂蜜含水量低所以不会变质但如果你把它放在潮湿环境里还是会吸水发酵。这句话里至少涉及三个独立命题蜂蜜含水量低蜂蜜在这样的条件下自身不会变质潮湿环境下蜂蜜会吸水发酵。如果把这整句话作为一个整体去检索搜索引擎返回的页面可能有的在讨论蜂蜜结晶有的在讨论蜂蜜的抗菌性有的在讨论储存方式相关性会被摊得很薄最后的评估结果就会模棱两可。我的解决方案是让一个语言模型专门做声明拆解。输入是转写文本输出是一个结构化的声明列表每一条都包含主语、谓语、宾语或者更一般的形式化表述并且要求它们必须是可以被证据支持或反驳的最小命题。我用的声明拆解提示大致长这样请把下面的口语断言拆解为独立的知识命题列表。 规则 - 每个命题必须是一个可验证的陈述句 - 拆解后不要保留原句中的立场词、推测词 - 如果原句是绝对的比如永远绝对保留这种绝对性 - 输出JSON数组每个元素包含statement(命题文本), keywords(3-5个用于检索的关键词)。 内容{transcribed_text}为什么要求保留绝对性词因为我发现很多日常谣言恰恰就藏在绝对化表述里。牛奶不会变质和牛奶在冷藏条件下可以保存较长时间是完全不同的两个命题。前者几乎必然为假后者才需要具体证据链来支撑。我踩过的坑是拆解模型为了求稳会自动把绝对化表述软化导致最后核查出来的结论跟用户实际想表达的意思对不上。2.4 第四段多源检索我为什么不只用一个搜索接口拿到原子命题和关键词之后就是证据收集。这一段我有一个原则至少两个独立的检索源且每个源之间不能有暗线关联。为什么强调这一点因为现在很多搜索结果的正文页面互相抄袭严重A网站抄B网站B网站抄C网站最后看起来有十几个来源在支持同一说法实际上底层只有一篇原创内容。如果不做源独立性检查你核查出来的多源一致是彻头彻尾的幻觉。我的检索层结构是这样的第一路走常规搜索引擎API取搜索结果的前五条链接再抓取页面正文第二路走一个本地的学术/百科语料库检索比如Wiki数据、一些公开的科普文章集合这一路用来兜底保证即使搜索引擎返回一堆SEO内容农场页面时本地语料库依然能提供相对权威的解释第三路也是我后来加的是对已抓取页面的域名做聚类去重如果五个结果里有三个都来自同一个媒体集团或者同一个内容聚合站群那么在后续计分时这三个只算一个独立来源。正文清洗我也踩了不少坑。很多页面直接用requests抓下来是乱码得先判断字符集有的页面正文藏在嵌套div里抓回来的是一坨导航菜单和广告文本。我最后用了readability类的正文提取库再对清洗后的文本做段落切分和向量化与声明做相似度排序取top-k段落作为证据段。这一步的伪代码大致是这样def retrieve_evidence(claim, keywords): pages search_api(keywords) # 第一路 pages local_corpus_search(claim) # 第二路 cleaned [clean_page(p) for p in pages] chunks [chunk_paragraph(c) for c in cleaned] scored rank_chunks(claim, chunks) # 向量相似度 independent dedup_by_source_domain(scored) return independent[:8]这里有个体验上的细节证据段至少要保留三家独立来源才算稳。如果检索完只找到一篇孤立的博客文章哪怕它说得头头是道我也倾向于在结论里降低置信度而不是直接采信。2.5 第五段评估输出先给证据再下判断最后一段交给评估模型但不是简单地问它这句话对不对。我的评估提示要求模型先引用证据再做判断再给置信度。顺序不能反。一旦让模型先给判断再凑证据它就会倾向于自我合理化而如果强制它先陈述根据来源A说了什么来源B说了什么来源C的数据是……再得出结论模型的自洽性和可解释性会强很多。判定标准我用了五档完全真实、大部分真实、混合部分真实部分虚假、大部分虚假、完全虚假。除此之外还有两个特殊输出无法证实证据不足和来源冲突多个可信来源给出相反结论。为什么保留无法证实和来源冲突这两个看起来有点泄气的选项因为我发现如果强制模型在所有情况下都站边它就会用非常含混的措辞把结论糊弄过去比如该说法有一定道理但需要具体分析——这种废话等于没说。而把无法证实作为合法选项之后模型反而更敢于给出明确判断因为它知道不用在所有时候都硬撑。这个设计帮我找回了大量被模糊化吞掉的判断质量。3. 置信度计算怎么避免机器认为自己对了的自我欺骗如果只是让LLM输出一个置信度数字那本质上是在问模型你对自己刚才说的话有多自信——这种置信度是主观的而且LLM普遍过度自信。所以我设计了一个三层合成的置信度体系尽量把主观成分压到最低。3.1 第一层证据一致性证据一致性衡量的是多个独立来源之间的结论是否互相吻合。做法是对每一段证据分别跑一遍分类得到该段证据支持真实虚假还是中性的极性判断然后计算这些判断之间的一致性。如果三个独立来源都支持真实一致性很高这一层得高分如果两个支持真实、两个支持虚假一致性就趋近于零这一层拉低总分并触发来源冲突输出。我用的是类似简单Cohens Kappa的思路但为了轻量直接用了极性格一致率。这层的关键在于独立来源四个字。如果没做去重三个来自同一篇转载链的网页会被当成三个独立投票者一致性虚高所以去重这一步必须在计分之前完成否则整套置信度就是一个数字游戏。3.2 第二层来源可信度加权不同来源的权重天生不该一样。一篇发表在同行评议期刊的论文摘要和一条个人社交平台帖子的说服力我们不搞一刀切但要给一个初始权重。我的初始权重表大致如下来源类型初始权重学术论文/官方统计机构1.0权威媒体/百科0.8一般新闻网站0.6垂直领域专业博客0.5个人博客/论坛/社交平台0.3被我拉黑的SEO农场/站群0但权重不是死的。如果低权重来源提供了具体的一手证据比如拍了实验照片、贴了完整的实验数据它的实际说服力会高于一篇没有细节的权威媒体评论。所以我在这一层还加了一个证据具体性的调节因子证据里是否包含数字、实验条件、时间戳、可验证的引用来源。公式大致是source_score base_weight * (0.6 0.4 * specificity_factor)specificity_factor是0到1之间通过证据是否含数字、年月日、机构名、方法描述等简单特征打分。3.3 第三层模型校准与自反证第三层设计到最后变成了一场跟自己较劲的过程。LLM给出的结论置信度不可尽信但我可以给它设定一个必须尝试反驳自己的义务。具体做法在评估提示末尾加了一步——现在请站在反对该结论的立场上列出最强的三条反驳证据然后结合这些反驳重新评估你刚才的判断是否过于乐观。这一步的心理学道理其实不复杂模型跟人一样顺着自己思路往下写会越写越自信强制它换立场找理由它就能发现自己原来论据里的漏洞。我在几十个测试例子上对比过加入强制反驳环节之后模型输出的置信度普遍下降5到10个百分点但判断的准确率和人类评估者的一致性反而上升了。最后的总体置信度是三层分数加权合成证据一致性占40%来源可信度占30%模型自衡量占30%。综合分映射到五档判定0.8以上为完全真实或完全虚假0.6至0.8为大部分真实或大部分虚假中间为混合。3.4 无法核实不是失败它也是结论我必须单独说一下这一点。很多做事实核查的人都想追求一个100%的判定但我发现当检索到的证据不足或者来源冲突严重到无法形成有效结论时老老实实输出无法证实或者来源冲突才是对这个系统信誉最好的保护。有一说一一个敢说我暂时不知道的机器比一个永远自信满满但偶尔胡说八道的机器可信度高得多。在真实使用场景里我反而观察到用户对无法证实结果的接受度远高于对一个硬凑出来的低质量结论。因为它符合直觉——你自己查资料的时候不也经常遇到查了半天查不清楚的情况吗4. 真机实战翻车记录六个把系统打蒙的典型案例端到端原型跑通之后我拿它做了大量真实场景测试。这里记录六个最有代表性的翻车案例每个都对应一个具体的系统缺陷和修复方案。这部分内容是我觉得对同行最有参考价值的。4.1 案例一蜂蜜识别成粉末检索全部跑偏现象我说蜂蜜不会变质松手后系统返回来一大篇关于粉末保鲜注意事项的证据链结论是大部分真实。排查链路先在转写日志里看文本发现ASR输出的是粉末不会变质。问题出在环境噪音——我测试的房间里风扇声比较明显加上蜂蜜和粉末的音节结构确实接近。Whisper小模型在信噪比不高的情况下把这俩搞混了。修复方案加了两个改动。第一修剪函数里提高阈值把20ms帧的RMS阈值从0.01调到0.02弱化风扇底噪的影响第二在ASR之后加了一遍拼音模糊自查——对转写结果里置信度低于某个阈值的词重新用ASR的compression_ratio_threshold等参数做二次解码并对比几个候选词在检索结果里的表现选搜索命中更合理的那个。4.2 案例二复合句被拆成一个命题结论以偏概全现象我测试蜂蜜含水量低所以不会变质但潮湿环境下会发酵系统只核查了蜂蜜含水量低返回完全真实完全忽略了后面关于潮湿环境下会发酵的部分。排查链路声明的拆解阶段出了问题。LLM倾向于把一个复杂因果句当成一个整体命题尤其是当因果词所以因此出现的时候它经常把整句打包成一个因果复合命题。这对检索阶段是致命的因为搜索引擎最擅长处理的是简单陈述复合因果句会让搜索结果分散到蜂蜜特性蜂蜜储存两个方向每一个方向都证据不足。修复方案在拆解提示里加了一条明确规则含有因果连接词所以、因此、导致、由于时必须拆成原因命题和结果命题两个独立条目。同时要求拆解模型输出每个命题的可检索性评分如果评分低于阈值就在检索时把相邻命题合并检索。这算是一套先拆后并的双保险。4.3 案例三搜索引擎返回的SEO内容农场证据污染现象核查喝咖啡会脱水时系统抓回来的证据里有一篇标题夸张的内容农场文章通篇没有任何数据来源只是复述了一遍咖啡利尿所以会脱水但因为它关键词匹配度极高、排名靠前被选进了top证据段导致结论偏向完全真实。排查链路看证据面板时我发现返回的八段证据里有两段来自同一个站群的不同域名还有一段明明是在讨论奶茶和咖啡因的混合饮料被段落切分硬生生切进来。问题本质是检索阶段只看了关键词相似度没有做来源可信度排序正文主题一致性的双重过滤。修复方案加了两层过滤。第一是在检索前维护一份内容农场域名黑名单命中直接丢进权重0的桶第二是对候选证据段落做一次主题分类跟声明主题差异过大的段落直接淘汰不再参与后续计分。这个改动之后的证据干净程度提升非常明显。4.4 案例四时间敏感型声明去年有效今年失效现象核查某地区2022年降水量创下历史新高时爬到的数据页面混杂了1998年的历史数据和一份2023年的灾害报告。系统没有区分时效性把多个不同年份的数据混在一起当成证据一致性高。排查链路这类问题属于声明的隐含时态没有被显式提取。用户说去年创纪录其实隐含了这个说法在2022年成立在2023年是否依然成立需要另查的时效结构。我的声明拆解阶段没有提取TIME属性评估模型也没有被要求先判断声明是否有时效窗口。修复方案在声明结构里增加一个可选字段valid_window拆解模型如果判断命题涉及时间就输出截至某年某月或年份范围同时要求证据抓取时保留页面的发布时间或数据更新时间在评估阶段把超出声明时效窗口太久远的证据降权。这个字段后来被证明是通用性的增强不只对历史数据有用对很多关于当前状态的半衰期很短的断言也有效。4.5 案例五评估模型的天生乐观主义现象测试几组完全错误的断言比如常温下蜂蜜永远不会变质微波炉加热食物会产生致癌物质系统给出的判定虽然是虚假但置信度只有0.55至0.6远低于我对这些明显错误命题的预期。排查链路我查看了评估模型输出的logprob分布发现它非常倾向于选中性温和的措辞。进一步检查发现模型在生成结论时先写出了一串虽然...但是...的让步句然后才给出否定判断。这种语言模式在常见的对话场景里是被社会化的——AI助手总被训练成尽量显得客观、温和不轻易把话说死。修复方案一个是我在前面提到的强制反驳环节另一个是把评估提示里加入该命题为伪时请直接使用错误一词不要使用可能不准确或值得商榷等委婉表达这种风格约束。另外我在最终置信度映射上做了一个校准实验把模型自评分数整体压低了10个百分点然后重新测量了与人工标注的一致性找到了校准点。这套校准流程以后遇到换模型时也可以复用。4.6 案例六一次彻底的无法证实让系统躲过了一个大坑现象测试市面上某品牌的空气净化器能去除99%的甲醛时系统检索到的来源包括品牌官网、一个第三方评测论坛的讨论帖、一篇某装修媒体的软文。三个来源没有一方提供可验证的独立检测报告而且评测帖里有两个用户提到感觉没啥用但没有任何实测数据。排查链路这一例不算是bug但它让我意识到无法证实这个输出分支在什么情况下会被触发。系统最终输出了无法证实证据不足置信度0.60。我当时觉得很惊喜模型没有因为品牌官网的华丽数据就站队真实也没有因为个别用户差的体验就站队虚假。复盘结论这恰恰是声明拆解阶段的功劳——它把甲醛去除率99%从空气净化器值得买这个大命题里拆出来了。大命题里掺杂了太多主观价值和选购偏好机器不该也不适合判对错但99%是独立检测还是一手自夸则是一个可以被证据检索回答的客观问题。这种边界感我认为就是事实核查器最应该守住的底线。5. 对话场景里的判定陷阱绝对化表述、因果倒置和模糊概念跑完上面那些案例之后我对系统做了一次压力测试专门拿各种语言陷阱来打它。结论是事实核查的本质不只是核对事实更是核对表述的结构。5.1 绝对化表述是最大的核查稻草永远绝对百分之百没有任何副作用完全不含有害物质——这类词一旦出现在断言里几乎等于给系统递了一份大礼。因为绝对化表述只需要一个反例就能推翻所以在我的评估提示里有一条规则如果声明包含绝对化限定词默认进入高度怀疑通道检索时优先搜索反例证据。实际效果很好。比如维生素C能完全预防感冒这个断言如果按普通检索你翻到的正面信息比较多因为确实有部分研究支持大剂量维C能缩短病程但如果优先搜索反例会发现系统性回顾研究的结论更偏向不能预防。两路证据交叉之后系统给出大部分虚假而不是部分真实这个判断我认为更接近现代医学共识。5.2 相关性被说成因果性另一类非常难处理的陷阱是因果倒置。比如长期睡眠不足的人更容易感冒所以睡眠不足导致感冒——这里其实是观察性相关不是因果链条。我的薄弱环节在于评估模型本身的科学素养决定它能否区分相关和因果而我作为系统设计者只能通过提示词引导。我测试出的一个经验是当声明里出现所以导致这两个词时单独跑一轮是否存在其他解释的反证检索。如果检索结果里有互相矛盾的解释模型就在结论里明确打出结论存在相关性证据但因果推断证据不足。加了这个步骤后系统在健康医疗类断言上的可信度提升不少。5.3 模糊概念导致的永久半真半假有一类声明你不管怎么查都只能得到一半结论因为主要概念本身就是模糊的。比如某某食物有利于肠道健康——什么叫肠道健康菌群多样性排便规律还是没有炎症反应不同研究可能用了完全不同的观察指标。遇到这种情况我要求系统在结论里明确输出该说法取决于如何定义XX概念这样虽然不是机器追求的干净结论但却是人类可理解的最准确表达。6. 从原型到真正可交付的工具延迟、隐私和边界感最后一个部分聊聊产品化。The Truth Machine跑通原型之后我确实动了念头想做成一个日常能用的工具于是又花时间解决了几件在原型阶段被无视的事。6.1 延迟优化从八秒压到三秒第一版端到端延迟是8秒左右分布在音频传输0.1秒、ASR转写1.5秒、声明拆解1秒、检索3.5秒、评估1.5秒、其余开销0.4秒。最痛的是检索因为搜索引擎和正文抓取都是网络往返。我的优化组合拳ASR换用量化后的int8模型速度快了30%精度下降可接受声明拆解模型换成小模型做初拆只对评分低于阈值的高难句才升级成大模型检索结果做带时间的缓存同一个命题24小时以内直接命中缓存不重新抓取证据段落切分和向量化提前到缓存阶段完成查询时只做相似度计算。 三板斧下来常规场景基本稳定在2到3秒体感好了一个数量级。6.2 隐私与本地化一个离线走的版本不是所有人都愿意把语音传到云端所以我把整个流水线做了一份完全本地的变体Whisper.cpp负责转写Llama.cpp跑拆解和评估本地SQLite里放了一份维基百科的子集加上我手工整理的科普文章库。检索不走搜索引擎只走本地全文索引。精确度确实比在线版本差一些但胜在完全离线、音频不离开设备对隐私敏感型用户这是唯一能接受的形态。6.3 边界感哪些话我不帮人核查这是我在项目收尾阶段想得最多的一件事。The Truth Machine不应该是一个什么都能裁断的全知裁判它更适合做一个给证据链让用户自己下判断的工具。在我实际使用的过程中最让我觉得舒服的反馈不是它给出了某个多漂亮的结论而是它总能在结论下面附上几个来源链接、几段证据摘要让我自己判断这个来源值不值得信。它对我的最大价值其实是发现了很多我以为稳的说法其实证据链薄弱得很。不管是为了在饭桌上多一个话题切入点还是为了让自己的转发少一点拍脑袋这个按一下说出声、松手出结论的小机器都帮了大忙。
返回列表