mirror of
https://gitcode.com/JianFeeeee/homeagent-sdk.git
synced 2026-09-20 08:58:03 +00:00
根因:go_invoke_stage 无条件回传 stageContextWritable 全部字段(含插件从内核收到 的旧快照),sanitizer(改ToolResults)+weather(只读) 并发时,只读插件把自己收到的 旧快照覆盖回清洗结果(实验13 实测丢失率 1.6~4.3%,脏数据进LLM)。 改动: - templates.go: 新增 snapshotWritable(handler 前的序列化快照)+ changedFieldsOnly(只回传差异字段) go_invoke_stage 改为 before 快照 → handler → diff 回传,无变更零回传 - ❗关键陷阱(第一版踩坑):stageContextWritable 的切片字段与 sc 共享底层数组, handler 原地改元素时 before 快照跟着变,diff 失效——故 before 必须序列化成字符串 - stagediff_test.go: 6 用例(只读零回传/原地改切片/标量改/新response/清空切片/现网场景复刻) ⚠️ 需用新 plugindev 重编全部 17 个外部插件(bridge 模板变更)