AskaEth
59672720bd
fix(memory): embedding 批上限与超时同源 —— 不再「客户端先放弃、服务端继续算」
M9(EMBRECALL)。故障机制(M6 + 本次复测):客户端 5s 单次超时先放弃,服务端仍在
算那一批 ⇒ 本机 llama.cpp 被自己顶住 ⇒ 后续每个请求(含写向量索引的单条请求)
排队到自己的超时 ⇒ 召回全线降级。
- embedding/budget.go(新):把「一次请求的耗时上界 ≤ 单次超时的一半」写成不变式,
批上限(条数 4 / 字符 480)与 5s 超时由**同一个不等式**解出;实测依据与复跑命令
写进注释(空闲态摊销曲线 1→0.19s / 8→1.1s / 12→1.3s / 64→8.5s,约 50ms 固定 +
2.7~3.9ms/字符,n≥32 起有数倍放大 ⇒ 余量取一半)。
- embedding/api.go:Embed 按同一对上限**自己切片**(不变式与调用方无关);冷启动
首次调用单独给 warmupTimeout,拿到第一个成功响应后立刻回常态超时。
- memory/tidy_config.go:tidyEmbedBatch = embedding.DefaultBatchLimit(同源),
并加编译期断言 —— 调回 64 会直接编译失败(constant -60 overflows uint)。
- memory/tidy.go | tidy_recall.go | tidy_dryrun.go:recall_mode 改报**实际发生**
的来源(""=本轮没候选可比 / embedding / lexical / mixed),新增
recall_degraded_partitions;试算轮 RecallMode 同口径(M6 medium finding)。
- 测试:embedding 侧用「实测曲线 + 会睡够时间的假客户端」钉住两态
(批内 < 超时 ⇒ 不降级;旧配对 64 条 ⇒ 必然超时),并断言 abandoned == 0;
memory 侧钉住降级/健康/没候选三态与试算轮的如实上报。
不改 preinsert*、不改 .env、不动判定规则与任何阈值。
2026-10-13 20:33:26 +08:00
..
2026-10-04 14:14:05 +08:00
2026-10-06 21:16:23 +08:00
2026-10-06 14:12:27 +08:00
2026-10-13 20:33:26 +08:00
2026-10-06 09:03:53 +08:00
2026-10-04 19:15:12 +08:00
2026-10-06 21:16:21 +08:00
2026-09-06 05:07:13 +08:00
2026-10-06 14:12:27 +08:00
2026-09-09 00:08:29 +08:00
2026-10-07 09:34:45 +08:00
2026-10-13 20:33:26 +08:00
2026-10-06 21:48:48 +08:00
2026-10-07 18:50:45 +08:00
2026-10-06 08:16:03 +08:00
2026-10-03 16:08:51 +08:00
2026-10-03 21:33:40 +08:00
2026-10-03 16:08:52 +08:00
2026-10-05 09:53:08 +08:00
2026-10-06 14:12:25 +08:00
2026-10-05 11:36:18 +08:00
2026-10-07 10:07:13 +08:00
2026-10-06 14:12:27 +08:00