mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-10-15 12:15:16 +00:00
上一提交(3e201dd4)把 starmapTickMorph 从「每帧全量遍历」改成 starmapMorphSet 活跃集,但我漏了一处:buildChatStarmapGraph 重建图时 只重置了 starmapNodeMeshes / starmapEdgeLines,**没清空 starmapMorphSet**。 后果:旧 mesh 已从场景摘掉,却留在活跃集里,于是 - 集合随每次重建单调增长、永不归零 ⇒「空集时 O(1) 返回」的快速路径 从此失效,正是这次优化想省掉的那笔开销又回来了 - 每帧遍历一批已经不在场景里的废弃 mesh 同时补 starmap_perf_test.go。为何用源码断言而非运行时测量: dashboard.js 是嵌入的浏览器脚本(依赖 three.js / DOM),Node 跑不了; 而这几条都是**结构性**缺陷(循环扫全表、循环不停、每帧重建), 源码里能可靠判定,回归时立刻红。 判据可杀变异(逐个实测过,不是装饰): - 节流常量改名 → FAIL「缺少节流」 - morph 早退条件删掉 → FAIL「必须提前返回」 - clear() 改成 if (false) 或整行删除 → FAIL「必须无条件清空」 第三处特意断言在**重建函数体内**且是 `(?m)^\s*if \(starmapMorphSet\) ...` (先写成全仓搜 `starmapMorphSet.clear()`,变异测试显示 `if (false)` 能骗过 它 —— 弱判据当场修强)。