Repository navigation
fix: 修复重算向量后的队列残留及进度显示异常(Bug708) - #687
Merged
origami-chen merged 5 commits intoOct 28, 2026
Merged
Conversation
added 2 commits
October 21, 2026 10:57
| COUNT(*) FILTER (WHERE status = 'leased' AND leased_until > @at) AS active, | ||
| COUNT(*) FILTER (WHERE status = 'leased' | ||
| AND (leased_until IS NULL OR leased_until <= @at)) AS stale, | ||
| COUNT(*) FILTER (WHERE status IN ('failed', 'dead_letter')) AS failed |
Collaborator
There was a problem hiding this comment.
用户记忆修复成功后,队列仍显示旧任务失败
问题
当一条用户记忆的向量任务连续失败、达到重试上限后,恢复模型并点击「修复缺失/错维」,新任务能成功生成向量,但页面仍显示「失败 1」。本轮用独立数据库及模型替身实际执行六次失败、修复、再次执行任务,得到 ready=1、needsRepair=0,同时 retryQueue.failed=1;页面组件验证也确认这两种状态会同时显示,修复按钮已禁用。用户无法从当前队列判断还有没有需要处理的失败。
原因
用户记忆维护通过 enqueueEmbeddingMaintenance → enqueueJob → getActiveJobByDedupeKey 入队。去重查询只复用 queued、leased、failed 状态;达到上限的 dead_letter(不再自动重试的失败记录)被保留,新修复另建一条任务。新任务成功不会改变旧记录,而这里无条件统计全部历史 dead_letter,再经 maintenance 接口交给页面作为当前失败数。保留旧任务的行为在指定 base 已存在;把已被成功修复覆盖的旧失败加入当前队列显示,是本次新增统计的问题。
建议做法
为维护页面统一按“当前记忆内容和目标向量仍未完成的工作”计算队列状态。保留历史失败记录,但当同一目标的后续任务已经成功满足当前内容及模型要求时,不再计入当前失败数;普通记忆重试队列和用户记忆任务应采用同一规则。同步核对维护入队、成功处理、统计接口和页面,并补充“失败达到上限→恢复模型→修复成功→当前失败归零”的完整测试;仍未修复的其他目标必须继续显示失败。
origami-chen
requested changes
Oct 25, 2026
added 2 commits
October 27, 2026 10:22
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
描述
点击“修复缺失/错维”后,原实现可能重新入队已有向量的记忆、清空正在执行任务的租约,留下无人认领的
in_progress。此外,历史失败任务即使已通过后续任务修复,仍会计入失败数,导致界面与实际进度不一致。修复后按当前模型、维度及当前内容的未完成工作判断是否需要修复;保留有效租约,自动回收残留任务,并区分真实队列占用和已解决的历史失败。
定位
mode: "repair",服务端未传递该参数,直接调用无参数rebuildEmbeddings(),导致全量入队。claimed_by、lease_until,却保留in_progress;调度遗漏空租约任务,空闲时缺少独立检查。dead_letter,未检查后续成功任务;仅按维度判断可用,也会遗漏同维度旧模型以及保留旧向量但当前内容处理失败的情况。修改
repair/rebuild。修复模式检查对应向量(包括 L1 的摘要、动作向量),全量重建模式重新入队可处理的记忆。dimMismatch、modelMismatch、contentMismatch表示维度、模型及内容不匹配,页面同步展示。runId查询累计完成、失败及待处理进度;同时每 5 秒刷新实际队列状态,不把入队数量当作完成数量。测试
回归覆盖
dead_letter保留;HTTP 维护接口和页面自动刷新一致。合并后自动化检查
已通过 merge 同步
upstream/v1.2.6(98f36650),冲突整合提交为aae81ed7。本轮另有 51 项定向回归通过,覆盖维护进度、维度探测、当前内容失效和队列恢复。npm run memory:testnpm run lintnpm run typechecknpm run test:packaging-guardsnpm run test:release-workflowgit diff --check upstream/v1.2.6...HEAD此前安装包测试(2026-10-27,提交
8e8f9995)以下安装包验证针对此前提交;本次冲突整合提交
aae81ed7已通过上述自动化检查,尚未重新生成 DMG。npm run package:mac:arm64:cn:unsigned成功,Desktop 1.2.4 / Memory 2.1.7;hdiutil verify通过。58b04d7ca32a5d971c713f54251c3a089697ea541302898d9de8bae1f16765de。失败/恢复测试使用可控本地嵌入替身,未覆盖真实远程模型服务。DMG 背景图替换仍有非阻断白边提示,完整性及运行验证通过。