环境遥测:私人环境信号跳过 tier-1 直达 tier-2 候选评估 #73
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/68-ambient-environment-signal"
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 #68
What
让 host 提供的私人环境信号(摄像头/设备活动感知,经 host 侧 LLM/VLM 预筛选)也能给机器人一点"氛围感",但走一条跳过 tier-1、直达 tier-2 候选评估的分流路径——"群氛围"这个概念不适用私人感知流,混进 tier-1 的 energy 传染会把"用户自己在设备前忙"误判成"群里很热闹"。不新增任何字段/类型,复用现有
EnvironmentSignal契约。实现要点
arise_ambient_telemetry_plugins(frozenset[str],默认空集),host 把摄像头/设备活动这类来源的 plugin 标识填进来;纯谓词is_ambient_telemetry按名单判断。默认空集下判定恒为假,未接入遥测源的部署不会多出任何新行为。camera/device-activity)且各自保留独立 plugin 名,stimulus_label与渲染文本仍能区分是哪一路,配置本身也让"这个部署接了哪些源"一眼可见。plugin不看action——plugin 标识来源本身,action 标识来源内发生了什么,同一来源的所有 action 必然同属遥测类。last_stimulus_label/last_stimulus_time——那是 tier-1 抗刷状态,写了反而会污染普通环境信号的重复判定。render_ambient_telemetry_directive。既有措辞把场景写死成"刚才群里发生了这件事",对私人感知流是喂给模型的事实错误,会诱导它对着群做出不相干的反应;新措辞压低存在感("你注意到")并显式点出"对方也未必知道你能感知到这些"(PRD user story 6"不希望产生被监视般的神经质反应")。既有渲染函数输出逐字节不变,既有测试断言零改动。RuntimeLoop.run_environment_signal新增ambient: bool = False关键字,只决定用哪个渲染器——组装管线/门控/沉默权利完全一致。Review
/code-review两轴(Standards + Spec)已跑。Spec 轴做了变异测试验证守卫真的生效,并逐字节比对确认既有渲染函数输出未变。修复的发现:fast_state,而 else 分支同名变量装的是"刚更新过的新状态"——一名两义,调用点看不出拿到哪种;且_evaluate_unified_gate对affective_state=None的既定行为本就是"自己读当前值",那次读是冗余的。改为分流时保持None交给门控解析,变量恢复new_fast_state这个准确的名字。plugin不看action;为何刻意不写抗刷状态、遥测自身的复读约束为何交给沉默预算(tier-2 显著性打分对任何来源都不做重复折扣,不是遥测特有缺口,ADR-0014 明确说沉默权利由两级门控自动继承)。telemetry_plugins实为 setter,改名set_telemetry_plugins。Tests
全仓库 957 个测试通过(新增 15 个:
is_ambient_telemetry与遥测措辞纯函数、fast/slow 情感态处理前后不变的 AC 点名断言、连续遥测信号不累积群 energy、名单外插件照常走 tier-1、遥测照常进 tier-2 且用遥测措辞、锁定时/平淡时照常沉默)。变异测试复核:强制
ambient=False挂 3 条新测试,强制ambient=True挂 3 条(含 2 条既有测试)——守卫两个方向都真的被覆盖。