refactor(channelbridge): 冷避例外②收窄为「真故障/求救」严格子集
塔 2026-10-15 改裁定:例外给了命中词「穿透 30 分钟冷避」的权力,噪声不再只是多回 一句话,而是直接削弱冷避本身 —— 而实测全表 14 条在 598 条真实 user 消息里只命中 1 次,且那次是假阳性(QQ 机器人卡片文案里的 `bug`,而该群本来就在放这种卡片)。 - 新增 coldShoulderPierceKeywords(具名常量,注释写明为什么比全表严、依据即那条 卡片假阳性)与 hasColdShoulderPierceKeyword:保留 报错/出错/故障/紧急/救命/求助/ 帮帮我/urgent,剔出 ASCII `bug`/`error`/`help`(会命中结构化载荷/URL/卡片)与 情绪歧义的 `崩溃`/`坏了`/`坏掉`。 - 例外② 改用该子集;hasHighValueKeyword(基线,ruleLightJudge 用)**一字未改**, 两张表的分工写进注释,并有断言钉住「基线不许被这次收窄波及」。 - 例外矩阵新增三行:机器人卡片含 `bug` ⇒ 不穿透;英文 error/help ⇒ 不穿透; 情绪「我崩溃了」⇒ 不穿透(三行对上一提交均为红)。第 1/2 行继续用保留词 报错, 第 3/4/5/6 行原样保留;另加子集单元护栏(正例六条 / 反例六条)。 - 按项目「文件 ≤500 行」把冷避规则簇拆到 engage_coldshoulder.go(engage.go 528→376)。 红前绿证据:把例外判据临时还原成上一提交的 hasHighValueKeyword 全表(与该提交逐字 等价)⇒ 恰好上述三行变红、其余行与护栏保持绿;已还原(无残留)。 已知代价如实登记在案:用英文写的真求救不再穿透 —— 塔裁定以「宁可少穿透」为准; 全表(highValueKeywords)本身的收窄由塔另排切片,不在本片。 验收:go build ./... + go vet ./... + go test -count=1 ./... 全绿(73 包); channelbridge / channel / cmd/cyrene 单独跑绿;darwin/arm64 交叉编译通过。
This commit is contained in:
1 parent
13a0519115
commit
28967d3435
4 files changed
+250
-115
No files matched your search
@@ -183,7 +183,8 @@ func isStrangerPrivate(sess session.Session) bool {
|
||||
// ③ 陌生人私聊 → 正常聊天(唯一闸门是流控)。
|
||||
// ④ **非主人群聊:冷避闸**(design/18 §5,M18 新增位次)——负面态度 → COOLDOWN、
|
||||
// 冷却期内静默;**优先于第 ⑤ 步的「@她必回」**,与是否装配参与度引擎无关。
|
||||
// 冷却期内唯一放行口是**高价值关键词穿透**(真故障不漏,且不解除冷却);
|
||||
// 冷却期内唯一放行口是**真故障/求救信号穿透**(严格子集,非高价值关键词全表:
|
||||
// 例外给的是穿透权,噪声会直接削弱冷避),且**不解除冷却**;
|
||||
// 同句负面态度优先于该例外(塔 2026-10-15 定稿)。
|
||||
// ⑤ 廉价规则:指向她本人 / 提及主人显示名 / 高价值关键词 → 必回。
|
||||
// ⑥ 规则无结论 → 参与度引擎(design/18)或旧轻量判定车道(design/12 §6)。
|
||||
@@ -235,10 +236,12 @@ func (b *Bridge) shouldRespond(ctx context.Context, msg adapter.UnifiedMessage,
|
||||
// 规则判定**之前**,否则 @她 / 高价值关键词会在规则层直接 return true,
|
||||
// 群成员刚说的「少说点」被随后的任何一次 @ 立刻作废(2026-10-14 报障病灶)。
|
||||
//
|
||||
// 冷却期内的**唯一**放行口是「高价值关键词穿透」(塔 2026-10-15 定稿):
|
||||
// 该条由冷避闸自己返回「不拦」,随后落到下面的 ruleLightJudge 按高价值关键词
|
||||
// 正常回复;@她 / @全体 **不穿透**(那正是「给」的实质),且穿透**不解除冷却**。
|
||||
// 同句既有负面态度又有高价值关键词时,**负面态度优先**(仍静默)。
|
||||
// 冷却期内的**唯一**放行口是「真故障/求救信号穿透」(塔 2026-10-15 定稿):
|
||||
// 该条由冷避闸自己返回「不拦」,随后落到下面的 ruleLightJudge 正常回复;
|
||||
// 判据是严格子集 coldShoulderPierceKeywords(**不是** ruleLightJudge 用的
|
||||
// hasHighValueKeyword 全表 —— 穿透权落在全表上会让卡片里的 `bug` 把冷避按掉)。
|
||||
// @她 / @全体 **不穿透**(那正是「给」的实质),且穿透**不解除冷却**;
|
||||
// 同句既有负面态度又有真故障信号时,**负面态度优先**(仍静默)。
|
||||
// 口径细节见 engage.go 的 coldShoulderLocked(design/18 §5/§9 由塔同步)。
|
||||
//
|
||||
// 闸的适用面在冷避闸自己身上写死:只对群聊(私聊与 owner 车道在更早处已分岔)
|
||||
|
||||
Reference in new issue
Block a user