feat: 环境感知 tier-1/tier-2(issue #39) #48
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/39-environmental-awareness"
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 #39
Summary
ADR-0014 落地——机器人开始对"同群其它插件/命令的产出"有感:群里有人查了成绩、抽了张稀有卡,机器人偶尔会自然地搭一句话;绝大多数时候只是安静地"感受气氛"。分层消费,在既有机制上做加法,不新造并行子系统。
environmental_awareness.py):前处理 port 与ConversationInput并列的独立类型,永不当作<message>渲染。is_stimulus_repeat/dampen_repeated_stimulus抗刷折扣(同一(plugin, action)短时间内重复触发打折),不新增独立的速率追踪/ring buffer。顺带发现:update_fast_state/update_slow_group_state自 issue #34 建成后从未被真正调用过——本 ticket 是第一个真实生产入口,config.py相应补上了速率配置。tier2_significance_score——outcome 存在与否 + subject 熟悉度加权),喂给 issue #37/#38 已建但从未真正用到覆盖能力的evaluate_gate(level1_score=...)参数,不新造第二套裁决代码。RuntimeLoop.run_environment_signal():全量对话上下文(复用run()的画像/召回/关系网组装),但拼进 context 的是独立 system 指令而不是<message>标签——顺带把_recall_events/_triggered_injection从接收messages改成接收query_text,两条路径共用同一套检索/打分逻辑。不写 Delta/familiarity/距上次交互——旁观信号不构成真实互动。IngressPort.to_environment_signal:host 未实现真实判定时恒返回None,整个特性静默降级,其它功能不受影响。__init__.py新增@event_postprocessor入口,编排 tier-1(无条件)+ tier-2(关系网解锁后)。Test plan
environmental_awareness.py纯函数单测(抗刷折扣、显著性打分、指令渲染)RuntimeLoop.run_environment_signal()单测(零发送/正常发送/不写 Delta/不重置距上次交互/沉默窗口打断/永不出现 message 角色)test_environmental_awareness_e2e.py):tier-1 在关系网未解锁时依然让 energy 变化;tier-2 在未解锁时保持沉默(零 LLM 调用);tier-2 在解锁后对显著信号真的可能搭话;对平淡信号即便解锁也保持沉默;同一(plugin, action)短时间重复触发被抗刷折扣ty check干净(4 条无关预存警告),ruff check/format干净