降噪A(策略一/二/五): - channelbridge/light.go: 非owner分级门——小事件当系统消息登记(不进loop)、非owner轻响应(她判断回/不回,规则优先mention/关键词+轻LLM兜底fail-closed静默) - backthink 触发降噪: SubjectSystemEvent 低价值不唤醒thinking(仅高价值/owner才think), iot/reminder不受影响 - quiet hours: 安静时段非owner无信号静默,被@才回(非硬性静默); config QUIET_START/END_HOUR 单源共用 限流B(策略三/四): - adapter/flowgate.go: per-adapter 滑窗限流器+总上限+审查剔噪闸门(Admit两连:速率+上限/审查), owner私聊绕过 - channelbridge/flowgate.go: onMessage入站最前挂闸, 超限/被剔不占worker槽; 审查模型NewLLMReviewer复用model.Adapter(仅>80%阈值触发+跨分钟节流,失败回退FIFO,绝不判身份) - config: ChannelAccount 加 GroupMsgPerMin(默认6)/MsgPerMin/MaxMessages(默认50), CHANNELS_JSON每账号, 向后兼容 - 被剔消息走OnRejected审计不静默丢 main wire接线: 加modelAdapter字段+Review注入(reviewFor nil-safe,无LLM回退FIFO) 全仓 go build/vet/test 绿(53包)+交叉编译, 零新依赖, 前端无涉
打通前端 ws.ts 里那批死消费者事件(thinking/mood/tool_used/subagent_event/ task_output/device_update/reminder/backthink),并给 loop 接真 token 流式。 - wire.go:loop 建时传 OnStream(streamChunk 闭包把 delta 发 bus ws.stream_chunk); gateway.Deps 注入 Scheduler/Tasks/Streaming;iot 接共享总线 iot.WithBus(a.bus)。 - ws_bridge.go:hub 额外订阅 iot.>/task.>/automation.>/reminder.>/cyrene.agent.*.event, normalizeEvent 归一为 ws.*(device_update/task_output/task_done/automation_result/ reminder/subagent_event);不订阅 cyrene.agent.> 以免 ask/reply 内部事件进 relay。 - ws_route.go:voice_input→ws.voice_input;subagent_ask→Scheduler.AuditContext(真实 上下文审计,替换 pending stub);task_output_query→Manager.TaskOutput(真实输出, 替换空 {})。 - server.go:新增 SubagentAuditor/TaskOutputStore 接口 + Deps.Scheduler/Tasks/Streaming。 - orchestration/auditcontext.go:Scheduler.AuditContext(full/tail/keyword)。 - task/manager.go:Manager.TaskOutput(id)。 - backthink:record() 补发 ws.backthink 事件。 - json tag 修正(device_update/reminder/task output 结构体加小写 tag + DeviceUpdate 补 message),使前端分支能真正渲染。 实机验证:WS 握手 101、task manager ready、iot manager initialized(WithBus 生效)。 go build/vet/test 全绿;TestHubBridgeDeviceUpdate/TestHubBridgeSubagentProgress 覆盖 映射。dev 推至后续版本。