环境遥测拆独立类型AmbientTelemetrySignal——堵隐私泄漏(issue #108 Q3) #153
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
#108 Q3(issue #108 grill,2026-08-18 拍板:环境遥测建独立类型);ADR 更新见 PR #150
What to build
这是一处真实隐私泄漏的修复,不是措辞精确化。 环境遥测(per-user,如私人摄像头/设备感知流)目前
复用
EnvironmentSignal(per-chat_id,群内旁观事件),chat_id由 host"挑一个会话当呈现载体"、代码不做任何校验——已核实:填成群聊时,基于私人遥测生成的回复会真实发进那个群、全体成员可见
(
environment_pipeline.py::_process_environment_signal→runtime_loop.py::run_environment_signal→
egress.send(chat_id, ...))。原文(
docs/adr/0014-environmental-awareness.md「更新(2026-08-18,issue #108 grill Q3)」节):Acceptance criteria
AmbientTelemetrySignal(按上述原文,不带chat_id字段),is_ambient_telemetry识别出的信号构造成这个新类型,不再塞进
EnvironmentSignalenvironment_pipeline.py或对应位置)新增AmbientTelemetrySignal分支,目标chat_id 机械拼成
f"{signal.user_id}.p"——不接受任何外部传入的 chat_id,这是本票的核心安全约束,不能留一个"host 也可以传 chat_id 覆盖"的口子
EnvironmentSignal类文档恢复原义("同群其它插件产出的旁观事件"),移除容纳 per-user 语境的表述
arise_ambient_telemetry_plugins白名单识别机制不变,只改产出的信号类型chat_id尝试是群聊的输入路径,断言最终实际处理/发送目标一定是f"{user_id}.p",不可能是别的值——这条测试就是在钉本次要堵的那个泄漏Not in scope
EnvironmentSignal本身的字段结构(群内旁观事件那条路径不受影响).p后缀约定已经是全仓统一机制