mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-10-15 12:15:16 +00:00
根因(2026-10-12 生产实证):shm 桥此前只透传 4 个具名 Extra 键 (media_blocks/media_type/input_source/output_channel),插件自建键 (qq 的 qq_auth 绑帧身份)在 WriteDirty/captureLocal 处被静默丢弃, 下一 stage ReadInto 重建的 Extra 永远没有它 → authOnFrame 恒 miss → before_toolcall 回落到可变全局身份。owner 轮被并发的非 owner 中断 合并降权后,自己的 memory_commit 被硬私名单误拒(日志 22:20:58 「改写了 1 个字段」);反向时序则可能把非 owner 误放为 owner。 - shm.go:stageField 加 fExtraBag(19 字段),shmVersion 1→2 (AttachSegment 与插件握手对旧版失败即拒,不静默错读新布局) - shmcodec.go:captureLocal/WriteAll/ReadInto/newSnapshotFromLocal 全链接入 bag;写侧过滤具名键(bag 不偷具名键槽位);读侧 bag 先 打平、具名键后覆盖(具名键永远赢);不可序列化值显式报错—— 宁失败不静默丢键(丢键对 qq 是权限失效) - extra_bag_test.go:判据 8 条(往返无损/具名键语义不变/不可序列化 报错/WriteDirty 零写与脏写/跨 stage 帧存活/袋污染具名键必输/ raw-JSON 写侧过滤/快照脏检),变异 M1-M3 全杀 配套:SDK 仓 777c3a0(模板 v2 同步 + qq 身份可序列化 + 插件侧判据)。 部署注意:shmVersion 2 后全部 23 个 proc 插件须用新 hmapdev 重编。