🩹 v0.3.7 — 启动竞态修复(issue #6 跟进)
heptaspirit 验证发现的启动竞态 bug:人工编辑 md 镜像 → 重启 → 向量重建失败(embeddedCount 减 1)。
根因
mergeHumanEdits 回灌在插件 apply 同步段执行,而 embedder.init() 是异步的(模型加载 0.3-0.9s)——回灌触发 embedSingle 时 extractor 未就绪,抛错被吞,向量重建静默失败。
修复(三层)
- index.js:回灌移入
embedder.init().then()内执行,extractor 就绪后再重建向量;init 失败走 keyword 降级 - service.js:
scheduleEmbed加就绪门——embedder 带ready标志时,未就绪的写进入 pending 队列,init 完成后 flush(上限 100,~3s 轮询封顶,fail-safe)——顺带覆盖运行中热写入的同类竞态 - local-embedder.js:
init幂等保护(已初始化直接返回)+ready标志
测试
- 443 / 443 全绿