观察票:drive-tick/私聊即刻追问的门控结果按渐进解锁档位打点(不改行为) #140
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent
#133 最新评论(评估侧 2026-08-14 评估后拍板:先打点,不直接补门槛)
What to build
issue #112 论证"渐进解锁连续缩放不该叠加进
gate_threshold_base"时,level1_threshold的消费者只有事件触发(天然免疫)与 tier-2(已有独立解锁门槛
is_relationship_network_unlocked)——issue #133 让drive-tick/私聊即刻追问也成了真实消费者后,这条论证的前提不再完全成立,但尚无真实数据支撑"要不要
补一道类似 tier-2 的独立解锁门槛"这个产品判断。
本票不做任何裁决行为改动,只把判断需要的数据存下来:给决策快照补一个字段,让"这次门控评估发生
时,该 chat 处于渐进解锁的哪个档位"变得可查询——积累足够样本后,能够回答"冷启动期 drive-tick/即刻
追问候选的 level1 通过率、以及最终 hit-rate(#133 已接入的反思闭环样本),相对非冷启动期是否有显著
差异",用真实分布而不是理论判断决定后续要不要开票补门槛。
Acceptance criteria
一、决策快照补
unlock_level字段(纯打点,不改裁决)GateEvaluation(gating.py)、GateSnapshot(decision_snapshot.py:42)、gate_snapshot_of()(
decision_snapshot.py:60)三处加unlock_level: float字段(GateEvaluation自己的 docstring已经点名这个机械改动清单:"加字段要改三处(本类 +
GateSnapshot+ 搬运函数),再加DecisionSnapshotModel的列与两个行映射")DecisionSnapshotModel(storage.py:525)加对应列,两处行映射(写入/读出)同步unlock_level(_evaluate_unified_gate内部算出的那个值,gate_pipeline.py:197附近),不是重新算一次——同affective_state"门控当时看的那一份"既有原则(issue #79 教训,见
entry_drive_tick.py注释"情感态用门控当时看的那一份,不在这里重新读一次")二、顺手收敛一处重复计算(同一次评估里
unlock_level被算两次)_evaluate_drive_tick_chat(entry_drive_tick.py)调_evaluate_unified_gate时没有传unlock_level=,导致该函数内部自己算一次;而_evaluate_drive_tick_chat自己在后面(渐进解锁档位供自发目标/熟人重连提示用那段)又独立算了一次——两次输入相同、结果必然相同,属于纯浪费的
重复 DB 读。上提第二次计算到
_evaluate_unified_gate调用之前,把结果通过既有的unlock_level=覆盖参数传进去(
_evaluate_unified_gate本来就支持这个覆盖,entry_reactive._debounced_flush已经这么用了,见
gate_pipeline.py该参数文档:"调用方已经算好就别再读一次")。这不是本票的主线,但既然要碰
unlock_level在这条路径上的传递,顺手做掉比留着不管更省事。三、不做的事
progressive_unlock_scale/gate_threshold_base的现有裁决逻辑)留给看到足够样本后的人工判断(或后续独立票),不在本票范围
Not in scope
只负责让数据存在,不是那个决策本身)
6fe7af8待合并进共享docs分支)