Jia Sui
|
7d83aed411
|
docs(engine): 说明 wake 谓词依赖的跨表不变量
wake_ 的谓词按模型判空槽、不比键,成立的前提是 pending_ 与 active_keys_ 不可能
同时持有同一个模型:待办是在 worker 取走的那一刻才从表里 erase 的,在那之前同一
模型的键只挂在 active_keys_ 上。
这个不变量此前没有文字说明。谁哪天在 order_for 里改成「在算的也照样排一份」
(在 42aeda08 之前看着像无害的加固),谓词会把正在算的那批重排一遍——正是该字段
引入前要消灭的重复计算。纯注释,行为不变。
|
2026-10-04 03:45:53 +08:00 |
|
Jia Sui
|
7a8b441509
|
fix(engine): RescoreWorker 不再丢弃更新的重排请求
active 分支命中时(同一批正在算)原先会顺手清掉该模型的 pending_ 待办,
理由是「排在它后面的旧待办没人要了」。这个前提不成立:
- 模型 M 正在算 K1,用户继续打字把 K2 排进 pending_
- K1 算完写 done_ 并回调重查;若重查赶在工作线程擦 active_keys_ 之前,
且 done_ 刚被 kMaxResults 重置清空过,done_.find 未命中就落进 active 分支
- K2 被静默抹掉,而本次调用拿到 nullopt、也不会有回调
失败模式是那次重排永久缺失,不是延迟。active 分支只表达「这批正在算,
别重复排」,两件事拆开;pending_ 本就按模型只留一格、下次 order_for 直接覆盖。
|
2026-10-04 03:45:53 +08:00 |
|
fanlusky
|
b8ceeef7f9
|
fix(engine): 重查时不再重复排正在打分的同一批候选
回调触发的重查会问到刚被后台取走、还没算完的那一批:结果表里没有,待办位也空着,
于是同一批又排了一份。用户连续打字时每个回调都可能白算一次;benchmark 里这份重复
任务会在 clear() 之后写回结果,让下一轮误报 neural_already_visible 或把等待计入
async_ms。
按模型记下正在算的键,同键请求直接返回并丢掉该模型更旧的待办。
|
2026-10-03 16:35:48 +08:00 |
|
Jia Sui
|
5d8487a490
|
fix(engine): 别让重排后台线程的异常把输入法带走
Signed-off-by: Jia Sui <jsfaint@gmail.com>
|
2026-09-30 22:08:23 +08:00 |
|
fanlusky
|
e7f7addd4f
|
feat(engine): 神经网络整句联想与词格 n-best 重排
- 新增 engine/neural:移植 chinese-ime-lm 的字符级 Transformer 推理,在词格解出的最多 12 条
n-best 里重排挑选整句,desktop / keyboard 两档模型各出一条首选,后台 worker 异步打分
- 词格支持 n-best 输出与重排(quanpin/lattice_rerank),全拼、双拼共用
- 新增 SentenceAssociationOptions,经 QueryRequest 传给各 provider;四个来源默认全关
- 资源契约登记两个 safetensors 与 NOTICE;模型二进制不进仓库,由
scripts/fetch-neural-model.ps1 按 neural-model/lock.json 下载并校验 SHA256
- 新增 neural_sentence 测试
|
2026-09-24 14:03:39 +08:00 |
|