任务:hub-view-perf

来源:所有者 2026-10-24 的视图性能修复任务;从 hub-redesign 的 8ee63e43 建立独立工作树和分支 hub-view-perf。集成者后续明确接收当前改进并授权本地签署提交,未授权推送、合并或部署。

允许路径:hub/knowledge/、hub/records/、tools/view-perf.ts、本任务页;补充缓存生命周期授权为 hub/refs/resolve.ts、hub/runs/engine/service.ts 与对应测试。沙箱性能由另一终端负责,本任务不改沙箱分支。

仅合成数据、10.6 版本线、临时 loopback PostgreSQL。不碰持久部署、7420、钥匙串、环境配置文件、真实数据、foundation 或 references 内容。全量单元使用 –test-concurrency=2;共享内存 ID 耗尽时顺序复核,不修改宿主配置或清理其他终端进程。

已接收的改进和预算

  • 归位根:49,000 case / 1,800 文档 / 6,100 节点;冷读 4.586 → 1.133 s,697,728 → 494,448 KiB RSS,217 → 81 SQL。输出 15,658,488 字节,修前后 SHA256 为 40a072e1766819c451b2c8c1031cbc3d025bc2cb213e39d83a52518629953ef2。
  • 未归位布局:49,000 case,加 6,097 个目录定义,1,800 文档 / 6,100 节点;8.146 → 2.684 s,853,168 → 504,272 KiB RSS,49,193 → 497 SQL,修前后 SHA256 为 bac9b11e80fd45402691c597a37ccbf0da78b5bccd284f6b5c4743ab19ea3459。
  • 原 3,000 源测试:82.429 → 27.307 s;原慢处为串行准备 2,979 个空来源(23,832 SQL),view 本身已经批量准备图。有界并发准备仍走原生产接口,保留 224 次扫描、200 条目、受理及撤销断言。
  • 改进为批量最早条目查询、组成行流式校验、单次读取内编码和摘要复用、有界索引投影、显式缓冲区所有权交接。所有记录仍核对摘要,权限和来源受理每次重查。
  • 知识读取缓存采用操作内范围,finally 显式清空、禁止晚到填充;run engine 的解析文档缓存按调用拥有并终止释放,包含 maintenance。合成长期服务的 2,322 个缓存对象及 11 份 ParsedDocument 完成后均未保留;测试 GC 仅用于判定强引用,不用于 RSS 验收或运行时。
  • 集成者明确:实测 494,448 KiB 加 15% 得到 568,616 KiB,作为当前 RSS 回归护栏;不是宣称达到三分之一。主视图墙钟上限 30 s、SQL 上限 140;派生测试的宽松墙钟护栏 60 s,view SQL 上限 64、原件读取 SQL 上限 16。低争用 27 s 的实测与宽松负载护栏分别披露。

  • 2026-11-04 更正:进程峰值 RSS 随 GC 时机浮动,上面的 568,616 KiB 护栏在 GitHub 运行器上以 574,604 和 578,496 KiB 失败,而同一代码在 main 推送时通过,本机两次运行分别为 466,512 和 529,104 KiB。RSS 改为只披露。它要防的是一次读取把组成分段、条目缓存或答复副本整体留在内存里,现在在存储与记录边界精确计数并断言:同一时刻只开一批,每批至多两段,一批的分段文本不超过两段上限(本夹具 2,886,933 / 54,161,580 个 UTF-16 码元),91 段各流式读一次、不整段另读,扫描不填条目缓存,大答复转移一次而不复制。分别临时破坏这四项(一批读全部分段、并发开批、扫描填缓存、复制答复)时断言均失败,恢复后通过。候选投影受字节预算限制这一项不在这些边界上,本测试不覆盖。

合约和 10-24 自查

IndexView.totals 仅含可选的不分版本计数;这里的 {} 符合合约。构建的完整汇总仍为顶层 total_entries=49000、total_keys=1800,截断不会丢失。未改视图结果字节、截断、跳过、来源受理或授权语义。

逐文件复核新增逻辑:只处理 JSON/schema/JCS 语法、内容摘要、显式字段选择、完全相等键匹配及缓存生命周期。rows-stream 按 JSON 引号、转义和容器语法分行;不抽取自由文本语义。scan.ts 只复用既有正则、二进制格式签名及解码器,没有增删或改写已有检测规则,没有新增关键词表、词典、同义词、前缀表或自由文本正则/模糊判断。自查发现新增缓存回归夹具使用过已有最长前缀模式,已改为作者声明标识符完全相等匹配;没有为性能测试引入文本前缀判断。既有启发式留给 codex-k 普查和后续统一任务,不在此扩修。

后续事项

RSS 降至修前三分之一保留为后续任务:剩余主要分配为 rows-stream 的 JSON 行解析、索引投影,以及 PostgreSQL/扫描边界的 UTF-8 转换。CPU、heap、SQL、原生栈、历史失败与源码 SHA 收据均在所有者指定的外部 review/view-perf-findings.md 及 view-perf-evidence;不提交日志、profiles 或本地路径。

维护补测:同一 49,000 case / 1,800 文档 / 6,100 节点根,3 个已冻结、结果写入时被合成故障中断的旧运行,分别绑定 document/node/commands 索引(各约 15.7 MB)。新进程维护重评 3 个运行,实际读 3 份冻结原件共 46,983,749 字节:墙钟 1.516 s、CPU 用户态 1.156 s / 系统态 0.125 s、94 SQL、峰值 626,000 KiB;维护后 3 份 ParsedDocument 保留 0。此路径不重新生成视图(外部视图读取 0 次),不包含造根和造运行,RSS 包含冷进程导入,GC 仅在量测后判别强引用。不能据此解释真实部署三分钟 CPU 的具体原因,也不能外推真实 N。

最终验证

执行中:类型、gen –check、单元并发 2、验收、文档、引用测试及存档检查。真实钥匙串和会操作钥匙串的 rehearsal 路径遵守原限制不运行,fake 路径保留;最终计数另行补全。