三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

AI 张嘴就编?tri-true 的四道防线我全测了一遍

AI 张嘴就编?tri-true 的四道防线我全测了一遍

你有没有遇到过这种事:问模型一个具体参数,它答得有鼻子有眼,结果代码一跑直接报错——参数名都是它现编的。我上个月就被这么坑过一次,对着一份"官方文档"调了俩钟头,兜了一圈才发现那个接口根本不存在。

tri-true 这个 skill 干的事,说白了就是给模型塞了个事实核查员。它不生产内容,只在你交付之前把幻觉一层层拦下来。核心就四道防线,看这段配置你就能明白它怎么排兵布阵:

# tri-true/meta.json 关键配置(节选,源自真实 SKILL.md)confidence:weights:{VC:0.4,SC:0.3,CC:0.3}# 三层置信度加权pass_threshold:0.7# 综合置信度放行线reject_threshold:0.5# 低于此值且无 T1/T2 信源 → 拒答sources:tiers:# 四级信源可信度权重T1:1.0# 法律法规 / 官方 API 文档 / ISO 标准T2:0.8# 同行评议论文 / 研究机构报告T3:0.5# 技术博客 / 行业文章T4:0.2# 论坛 / 营销内容score_weights:{Relevance:0.4,Credibility:0.4,Freshness:0.2}models:require_heterogeneous:true# 异构:≥2 家供应商 + ≥1 开源 + 不同架构consensus:{strong:0.7,weak_ratio:0.66}self_reflection:max_rounds:3# CoVe → Reflexion → Critique-Refine

这张表的每一行都对应一道防线。下面我按真实 SKILL.md 里的强制执行契约,一道道拆给你看它到底怎么挡。

防线一:先问自己"我有几成把握"

模型不是吐完答案就完事。tri-true 第一步逼它做自评,而且不是问一次,是三层叠加:

  • VC(Verbalized Confidence):直接让模型报把握度 0-100,当作黑盒基础信号;
  • SC(Self-Consistency):同一个问题采样 N 次看 top-k 一致度,把随机抖动先滤掉;
  • CC(Calibrated Confidence):VC 再乘一个校准系数 k(基于历史 ECE 反推),专门治"过度自信"——很多模型报 90% 把握时真实准头只有六成。

综合公式就一句:Confidence = 0.4×VC + 0.3×SC + 0.3×CC。过了 0.7 这条线才放它走;中低置信直接推去第二道。顺便说一句,它还会先分流幻觉类型:Factuality(事实错)走防线二去查证据,Faithfulness(自相矛盾)走自洽性检测,两类绝不混着处理,免得用错药。

我个人挺吃这一套的。模型最大的毛病不是不会,是"不知道自己不知道",逼它把把握量化出来,比任何花哨提示词都实在。我自己之前就被一个模型编的 API 参数坑过,从那以后凡是要落地的回答我都先过一遍置信度。

防线二:拿证据说话,还得标出处

自信不等于正确。中低置信的内容会被丢进事实源验证:用 RAG 去检索 T1-T4 分级信源,每句话都要挂 inline citation[1][2],回溯到具体源 chunk(ReClaim 模式)。可信度加权公式是Final = α×Relevance + β×Credibility + γ×Freshness,默认 0.4/0.4/0.2。只有 T1/T2 这种权威信源撑住的,才算 verified;要是只捞到 T3/T4 或者压根没源,继续往第三道送。

这里有个细节我特别欣赏:它把"知识类型"和置信度当成同级属性一起评。known(可检索事实)、computed(算出来的)、inferred(推出来的)、iframe(框架内的)、common(常识)、guess(瞎猜的)。guess 类型铁律是绝不许只凭置信度放行——必须多模型交叉 + 人审兜底。这比"感觉差不多就发"靠谱太多了。

防线三:找同行复核,少数服从多数

单模型再自信也可能翻车,所以 tri-true 拉了一帮外援。要求异构并行:至少 2 家供应商 + 1 个开源,架构家族还得不一样。然后用 UAF 加权融合算共识——final = argmax(Σ weight_i × confidence_i × agreement_i),weight_i 取历史准确度乘自评能力。

全一致且都 ≥0.7 是强共识,直接 verified;≥2/3 一致是弱共识,照样过但会标"N 模型验证";一旦分歧就推去第四道。真吵起来了按 T1/T2 裁决,再不行就保守拒答。

(插一句题外话:我做的 App 叫雷达鸭,一个收录中国一人公司真实赚钱案例的产品,后台的事实核查刚好就是借这套思路跑的,华为应用市场能搜到。)

防线四:自己打自己的脸

到这步还没解决的,进入自我反思修正,最多三轮:第一轮 CoVe 把主张拆成验证查询去检索证据再修订;第二轮 Reflexion 用<thought>/<answer>/<confidence>结构化复盘;第三轮 Critique-Refine 让核查员和修订员互怼迭代。修订后置信过线才交付,否则——兜底。

例外:有些事它干脆不做

不是所有内容都值得四道防线全开。tri-true 有最小化原则:只验证"任务要点"范围内的东西,绝不顺手给你加戏扩验证范围。人审兜底这条也硬:critical 风险 + 置信 < 0.8 强制人审,删库、发版、动资金这种高风险操作必须双人审。综合置信 < 0.5 又没 T1/T2 撑着,它直接拒答或列多个答案,绝不编一个硬塞给你。

我个人最烦那种"为了显得有用硬编"的模型,这条兜底反而让我踏实。

判定结果长这样,一眼能看出它走了哪几道、改了几回:

--- verify_id: <UUID> risk_level: high domain: technical upstream_mode: A_snapshot final_confidence: 0.82 knowledge_type: inferred final_status: verified 防线触发: 1|2|3 修订次数: 2 created_at: 2026-08-01T14:30:22+08:00 schema_version: 1 ---

它是怎么被触发的

tri-true 是横向方法论型 skill,不认领任何单一意图编码,也不破坏家族的 MECE 划分。它靠"触发源"激活,真实契约里写得明明白白:

  • 下游 skill 委派:比如 tri-ask 碰到高风险问题、tri-content 出事实内容,会调用它执行验证;
  • 你直接喊:对模型说"验证这个回答"“消除幻觉”,进 VERIFY_EXECUTE;
  • 高风险 hook 自动拉:YMYL 这类场景能靠 hook 触发;
  • 查历史:问"X 之前验证过吗"走 VERIFY_QUERY;
  • 管信源:增删信源、校准、模型池走 VERIFY_ADMIN。

独立装的时候还有个三态依赖检测挺有意思:检测到上游 tri-intent 的快照就进"快照模式"拿上下文增强;都没有就"引导安装"提示你装上游;你要是明确拒绝,它也不罢工,进"降级模式"用自构造输入(风险=medium,domain=general)凑合跑,只是精度低一些,会跟你声明。这套对称双向检测也聪明——tri-intent 路由后也能反查它在不,任一端缺失都瞒不住。

一句话收尾:幻觉在数学上消灭不了,但像 tri-true 这样把它摁在四道防线里层层过筛,你拿到的答案起码"编"之前得先过证据和同行这关。

顺带提一句它交付的东西很较真:每次验证都会落盘 verify.md(结论)、sources.md(引用清单)、alignment.md(段落级对照)、confidence.md(三层置信明细)、revisions.md(修订记录)、quality.md(ECE/Brier 自检)。也就是说哪句被改了、靠哪条信源撑住,全留痕,出了问题能溯源。我挺中意这点,比起"答案对了就行",能解释"为什么对"才敢用在正经项目里。


关于作者

老三,10+ 年软件开发经验,软件设计师、人工智能应用工程师,平时折腾鸿蒙北向开发和 Web 前端,也爱鼓捣 AI 自动化,偶尔在 CSDN 写点技术笔记。

本文遵循 MIT 协议,转载请注明出处。
项目仓库:TrisighT-Bingo/tri-skills

请根据https://skillhub.cn/install/skillhub.md,安装 @user_989eb8f0/tri-true。

← 返回列表