内部方案 · 待评估 · 未执行 AKKE · 企业微信通道 2026-07-20

信任分 × 到店
红蓝对抗风洞

没有真实用户,就造一批合成客户当风洞——把「企微 AI 聊到客户信任几分、才推得动到店」这件事 量出来;同时用一个话术裁判挑出蓝方的毛病、排出优先级修复工单,标定完再把结论固化进生产蓝方。本页是 grill 逐条钉死的方案本身,先评估、不动手。

红方 · LLM 演客户 · 自报真实信任 蓝方 · 企微 AI · 努力约到店
核心比喻

一把尺子,校一杆秤

生产里蓝方 AI 看不到客户「真实信任」,只能靠措辞猜。但模拟里,扮客户的红方 LLM 是知道自己信没信的—— 这就给出一个校准闭环:用红方的真值当尺子,把「将来能上线的信号秤」校准,顺便量出该在几分推到店。

A 轨 · 真值
尺子 · 红方自报

红方每轮吐 trust: 0–100 + 一句涨跌理由。客户心里真实信到几分——标定唯一可信锚。上线后功成身退。

校秤
拟合
C 轨 · 可上线
秤 · 确定性信号

代码读 transcript,用可观测硬信号估分(报城市户型 +、答非所问 −…)。生产上线那版——因为线上没有红方自报。

两轨共用同一张涨跌清单:C 秤是 A 尺的「可观测子集」——A 能感知「催单感」这种软信号, C 只认「同一轮抛了 ≥2 个钩子」这种能代码判的硬信号。校秤 = 看 C 的硬信号子集能多大程度还原 A 的全集。

已钉死的决策

九个岔路,逐条拍板

每张卡 = 一个必答的设计岔路、候选项、选中项、以及为什么这么选(多数扣在全局 CLAUDE.md 的硬规则上)。

01最终交付是「评测」还是「上线机制」?
A纯评测:只出报告,不改生产
B纯机制:直接给生产加信任分闸
C先模拟标定阈值,验证有效,再固化进生产
Why没真实用户,正好用红方当合成客户把阈值先标出来;只停在评测则对线上没价值,直接上生产又没数据支撑阈值。C = 模拟当风洞、标定完再固化,和 repo 已有红蓝 harness 天然接得上。
02「信任度」这个分,由谁打、基于什么打?
A红方自报 ground-truth(尺子)
B第三方裁判 LLM 打分——与 A 职能重叠、多烧钱,砍
C确定性信号加减分(将来上线的秤)
WhyA+C 双轨:A 给「客户心里到底信几分」的地面真相,是标定阈值唯一可信锚;C 是生产版(线上只能靠可观测信号估)。用模拟把 C 拟合到逼近 A,就完成风洞标定。B 与 A 重叠、还多一层猜测,砍。
03红方「客户性格」从哪来、怎么组织?
A真实案例直接回放变异——不成体系
B纯手工性格矩阵——脱离真实数据
C真实案例 → 提炼性格轴 → 生成 persona
Why「提炼」这步团队其实做过了——scenario_26.json 已是 26 类真实刁难的沉淀(价格纠缠 / 环保甲醛 / 竞品对比 / 早期观望 / 强意向递进…)。直接拿它当性格骨架、每组配一张 persona 卡,比重新聚类省一大截,还与现有 harness 无缝接。
04模拟里「引导到店成功」怎么算?
A口头答应即成功——「有空去」易虚高
B口径:落到具体时间 / 地址才算成功
C红方按人设 + A 轨信任自主决定接不接
Why设计灵魂是「信任几分才推得动」,那红方接不接就必须是信任的函数(C 主),才能观测「50 推 vs 70 推、接受率差多少」的因果;成功口径用 B 卡严,避免客套虚高。三态记录:成功接受 / 推了被婉拒(时机问题)/ 该推没推——分开「推早了」和「该推没推」两种错。
05A 轨自报是自由发挥还是给评分锚点?
A纯自由——跨组不可比,标定悬空
B锚点分档 + 涨跌清单
CB,但涨跌清单直接复用生产已有信任锚
Whyllm.ts 已沉淀大量血泪实证——「答非所问是信任流失第一杀手」「写进合同是最强信任锚」「开空头支票发图」「催单感」。别另写一套(会和线上打架,违反第 7/11 条),直接抽成红方评分锚点,A 轨真值就和线上「什么真的建 / 伤信任」同源,阈值才迁得回生产。
06上线后,信任分怎么「卡住」蓝方推到店?
A喂进 prompt 让 LLM 自律——可能不听话
B外部确定性闸:分不到,代码物理删掉到店钩子
C软提示 + 硬闸兜底——把一个阈值决策劈两半
Why撞上 CLAUDE.md 第 5 条「不让模型做非语言任务——阈值路由用确定性代码」。这和现有 sparingly/always 钩子开关、dispatch/shared 确定性控通道同构(第 11 条惯例优先)。LLM 只管「到店这句怎么说得自然」,「现在该不该说」由代码按 C 分闸。
07阈值怎么从数据里量出来?(反直觉坑)
A逐档扫描阈值——结论直白但轮数翻几倍
B随机推时机 + 事后拟合接受率曲线
C自然观察——低信任区间没样本、曲线残缺
Why坑:若蓝方按固定阈值推,只能看到「70 分推的接受率」,找不到最优点。B 让蓝方在随机信任点试推,把 (推时真实信任, 接受了没) 拟合成曲线,拐点即阈值——一次跑完出全曲线,比逐档扫描省,且同批点还能顺便校 C 秤。
08这个模拟跑多大?(硬 token 预算)
A先冒烟:~6 性格 × 5 组 ≈ 240 轮,验证机制 + 曲线有没有形状
B再放量:~6 性格 × 20 组 ≈ 960 轮,出正式分档阈值
C大规模精定——边际收益递减、撞预算
Why分两阶段、冒烟不过不放量(第 6 条硬预算 + 第 10 条 checkpoint):任一环 prompt 有 bug,梭大就是几千轮的钱打水漂。当前只到「先 A 冒烟」。全程走 OPENROUTER_EVAL_KEY 且后台设额度封顶;蓝方必须用生产同款 qwen3-235b-a22b-2507
09话术裁判怎么排「先修哪个」的优先级?
A按出现频次——犯得多≠危害大
B按信任杀伤:用 A 轨每轮跌幅加权归因
C裁判主观拍严重度——不可复现、脱离真值
Why手里正好有 A 轨每轮真实信任跌幅,「先修哪个话术毛病」就不该靠感觉,而看它到底毁了多少信任、搞黄了多少到店。这样每条修复项都成一张能照着改 prompt 的工单,把裁判 · A 轨 · 到店三件事拧成一股。裁判走事后读整段(能抓反复问城市 / 价格口径打架等跨轮模式),不实时插嘴。
阈值按性格分档

到店触发阈值不是一个数

不同性格的信任曲线不一样——爽快型推晚了他自己急,货比三家型推早了显得你急着成交掉价,早期观望型不能硬约定方案、得换软邀约。 所以阈值按性格分档 + 到店目标也随档变。下表的具体数字是标定期由曲线拟合产出、非预设,此处只示意骨架。

性格档(骨架取自 scenario_26)典型信号阈值档推的时机逻辑
爽快高意向型
g26 全案递进 / g23 发定位
主动报城市户型、问「怎么定」「多久能做」 激进 · 低 信任早早到位,推晚了他自己都急,早推反而顺
价格敏感型
g15 砍价 / g22 预算有限
纠缠单价、「别人报 530」、「先做哪几样划算」 标准 · 中 先把价格口径答稳、信任攒够再推,别陷价格深聊
货比三家 / 专业刁难型
g10 竞品对比 / g05 板材三连
张口欧派索菲亚、精板素板 / 颗粒板刁难 保守 · 高 信任到很高才推,早推显得急着成交、掉价
早期观望型
g24 交房未定 / g06 新房模糊
「房子明年才交」「现在问是不是太早」 保守 · 高 → 软邀约 也要引导到店,但换低压力软目标:不约「量尺定方案」,而是「设计周期长,先来看看样板、混个脸熟,交房正好接得上」——信任攒够才发这种邀约
第三只眼 · 话术裁判

好消息:这个裁判基本已经建好了

翻仓发现(别造新轮子):你要的话术裁判,2026-07-17 就已落成 _eval-wecom-redblue.ts双裁判 5 维评分卡(规范 docs/wecom-eval-set-v1.md)。它读蓝方每句、按 5 维打 1/差·2/及格·3/好,双裁判用 glm-4.6 + deepseek-v4(都不是蓝方 qwen 同家,天然防「自己判自己」)。你原来担心的「裁判模型」问题,现成方案已经解决。本节要做的不是造裁判,是把它的分接上优先级

这个裁判 决策 02 砍掉的那个(那个是想让它打信任分、和 A 轨重叠才砍)。它是「挑话术毛病」的裁判,且已有 v1。 你要的真人感正是它 5 维里的第一维 human到店推进是第三维 advance。事后读整段 transcript 跑,能抓「反复问已说过的城市」「前后价格口径打架」这种跨轮模式。

现成 5 维(wecom-eval-set-v1)判什么对应你提的点
human 像真人吗AI 腔 / 机器人 / 堆砌 / 复读 / 答非所问← 你要的「真人感」
redline 守红线吗见面前别深聊价格、别评竞品、别开空头支票发图、禁「量尺免费」信任杀伤命门
advance 推进了吗有没有把对话往「加微 → 约到店」推一步,还是原地答题← 到店推进力
accurate 准确吗868→568 投影㎡ / 284㎡ 房产证为已核实口径,编数字扣分穿帮风险
catch 会接住吗客户报户型/面积/进度(高意向信号)有没有顺势接住接住率
Σ 这次唯一要新加的一层 —— 优先级(决策 09 · B):现成裁判只给 5 维打分、不排「先修哪个」。把每维低分归因到具体话术毛病 → 拿该轮 A 轨真实信任跌幅加权 → 优先级 = Σ(这类毛病累计砸掉的信任分) × (它顺带搞黄的到店次数)。5 维分照跑,聚合成排序工单是新增的薄薄一层。

最终产物不是一句「话术要优化」,而是一张能直接照着改 llm.ts 的工单(数字为标定期产出、下表示意结构):

话术毛病犯 N 次累计砸信任搞黄到店对应 llm.ts 段建议改法
答非所问(问 A 答 B) §疑问照答分支 强制「第一句先一口价/正面接住疑问,再走推进档」
催单机器人 / 硬推到店 sparingly 钩子克制 收紧钩子触发条件,纯咨询轮一律不抛到店钩子
真人感 · 一次抖太满 decision 单气泡≤50字 强化「只答这一点、答完就停」,禁一轮铺开多卖点
反复问已说过的城市 §问城市有无 命中历史城市即禁止再问,直接报该城门店真址

注:「犯 N 次 / 累计砸信任 / 搞黄到店」三列由冒烟→放量的真实对话跑出来后回填,上表仅示意工单结构与归因逻辑。

可引用的机制 · 翻仓实录

别造新轮子——手里其实已经有大半套

你说「这部分能更好」,对——我把仓翻了一遍,发现红蓝评测 + 双裁判 + 5 维评分卡 + 花费隔离 + golden 门禁全是 07-17 前后已建的现成件。所以这次真正要新造的只有薄薄几样(右栏)。左栏每条都带真实文件名,不是泛指。

现成 · 已建直接复用(带文件名)

大部分是 2026-07-17 与野荞对齐后落的

_eval-wecom-redblue.ts
完整红蓝离线评测:24 组 DB 真实企微对话 + 6 硬骨头、生产同款 chatReply 蓝方、双裁判、eval-key 硬闸。红蓝骨架现成。
docs/wecom-eval-set-v1.md
5 维评分卡(human/redline/advance/accurate/catch)+ 按客户类型的考题库。话术裁判的现成 rubric
双裁判 glm-4.6 + deepseek-v4
均非蓝方 qwen 同家——防「自己判自己」的现成配置,_judge-*-0719.ts 还有补分 + JSON 写回 pattern。
_eval-intent-golden.ts + eval-fixtures/*.jsonl
确定性 golden 门禁、可进 CI、零 LLM-judge——C 秤回归门禁的现成范式
recordScore / Langfuse 在线打分
opener-detector.ts 已有「在线质检打分」通路——上线后 C 秤在生产实时记分直接接这。
detectDecisionSignals · sparingly/always · red_loop.py
60+ 信号(C 秤骨架)· 到店钩子开关(决策 06 闸的接入点)· 红方驱动客户端 + scenario_26。

本次新造现成没有的(就这几样)

刻意薄——能复用就不重写

红方:回放 → LLM 演性格
现有 eval 红方是纯 teacher-forcing 死回放;这次要它按 persona + 真实需求即兴,才有「不同性格的信任曲线」。
A 轨信任自报(真值尺)
让红方每轮吐 trust 0–100 + 理由。现有 eval 没有客户内心真值这条线。
C 秤:信号 → 0–100 信任分
detectDecisionSignals 从「有没有」扩成「加权成一个信任分」,并拿 A 尺校准。
随机试推 + S 曲线拟合 → 到店阈值
现有 eval 只打 5 维分、没有「信任→到店接受率」的因果标定。这是全新的一段。
优先级聚合层
现成裁判只打分不排「先修哪个」。按信任杀伤 × 搞黄到店聚合成排序工单,是新加的薄薄一层。

外部方法论仅作理论锚,不引依赖:S 曲线 / 逻辑回归拟合拐点(决策 07 落地算法)· reward-model 式「自报即真值」(A 轨依据)· 销售信任阶梯 / BANT 分级(性格轴与软到店的业务语言)。

最易混的一点

标定态 ≠ 上线态

同一套东西,两个模式跑法相反。写设计时必须分清,别混。

标定态 · 找阈值
  • Q06 的确定性闸临时关掉
  • 推时机由 harness 随机注入(低 / 中 / 高信任都撒点)
  • 红方按 A 轨真值自主接 / 拒
  • 事后拟合曲线 → 拐点 = 各性格档阈值
上线态 · 用阈值
  • 确定性闸按标定出的阈值设死
  • C 秤估当前信任分,< 阈值就物理删掉到店钩子
  • LLM 只管把到店说得自然
  • 红方(A 尺)功成身退,不再参与
! 成本隔离红线:全程纯 LLM 评测,建 client 必须优先读 OPENROUTER_EVAL_KEY 并在后台设额度封顶——碰不到生产额度(2026-06-03 生产 402 干涸的教训)。蓝方用生产同款模型,红方演客户可稍便宜但别太弱。
状态与待办

现在停在哪