冷启动渐进解锁三件套:gate连续缩放+三因子召回闸+冷启动自我介绍 #118
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/112-cold-start-unlock-trio"
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?
Closes #112
做了什么
gating.progressive_unlock_scale让沉默预算 capacity/refill_rate 随渐进解锁档位(unlock_level)连续单调收紧,level=0时取arise_progressive_unlock_gate_scale_floor(默认 0.3),level→1趋于不收紧。与既有离散apply_cold_start_floor(事件触发保底 ≥1)同时生效、互不冲突。RECALL_UNLOCK_THRESHOLD=0.25,接入三个入口——RuntimeLoop._recall_events(同时覆盖_full_frozen_snapshot/_run_event_driven_turn)与search_memory工具的 schema 可见性(同note_pending_intent既有先例,不在 handler 内部二次防御)。此前这一级被实现期当成恒解锁,progressive_unlock.py自己的 docstring 都写着"(已解锁)"。render_cold_start_notice()挂进_full_frozen_snapshot,纯陈述不下指令(同render_time_since_last_interaction既有形状)。Drive Tick 的assemble_light_context显式不带这段文本——ADR-0007 原文把"可做轻量自我介绍"绑在"被@"语义上,Drive Tick 从不是被@触发。recall_gated_by_unlock字段,区分"未解锁没跑"与"跑了没匹配"两种"没有记忆",/why据此给出不同解释。一处偏离 AC 字面要求(已与用户 grill,写进 ADR)
AC 原文还要求门控阈值基值(
gate_threshold_base)也随unlock_level缩放。实现期发现这个消费者集合为空——事件触发的级一打分恒为无穷大,缩放对它零效果;tier-2 环境信号的显式打分已经受 ADR-0014"晚解锁"专职把关(is_relationship_network_unlocked,档位 0.4),再叠一层缩放会撞上该 ADR"拒绝了"节明确回绝过的"与既有门控双重裁决打架"——实测在档位刚过 0.4 时缩放系数仅约 0.58,足以让 tier-2 唯一的显著性满分场景(无熟悉度加成)永远打不过阈值。按 YAGNI 未落地,详见 ADR-0007/0011/0014 更新节(docs分支,本地提交未推送,见下)。测试
is_cold_start在entry_reactive.py的接线此前完全没有 e2e 覆盖(make_loop默认值会掩盖接线错误),已在test_progressive_unlock_e2e.py补上。config.py)、/why措辞在[0.15, 0.25)区间不成立、参数名与既有离散 floor 撞名。Test plan
uv run pytest全量通过uv run ruff check干净docs分支本地提交(不推送)