[bug]: Sparse gallery can show old requeued images ahead of newer items

在使用稀疏画廊(sparse gallery)降序视图时,如果 workflow 通过 Image Primitive 回显了 Image Batch 输入,被回显的旧图可能作为“最近结果”插入顶部前置行,出现在较新的后端图片之前。优先检查 workflow 结果路由是否把回显的批输入当成了可见结果

快速结论:在使用稀疏画廊(sparse gallery)降序视图时,如果 workflow 通过 Image Primitive 回显了 Image Batch 输入,被回显的旧图可能作为“最近结果”插入顶部前置行,出现在较新的后端图片之前。优先检查 workflow 结果路由是否把回显的批输入当成了可见结果。

适用环境:Issue 确认工具为 InvokeAI,但操作系统、安装方式、版本号、浏览器、GPU 厂商/型号/显存均未提供;复现证据来自前端 runtime 的测试环境(Vitest,涉及 batchData 与 routeResults)。

最快修复方案:暂无确认的一步修复方案。

注意事项:Issue 中“Image Primitive 回显 Image Batch 导致旧图进入 recents”是基于聚焦复现器的判断,历史上受影响的 result payload 未能取得,因此并非每张异常图片都已证实由该路径造成。

问题场景

在 InvokeAI 中使用稀疏画廊并选择降序(descending)排序。当 workflow 包含一个 Image Batch(其中放的是已有图片),并把该批图片接入 Image Primitive 后运行,结果 API 会同时返回被回显的源图和一张新生成的图片。被回显的旧图即使原始创建时间更早,也可能因被加入本地 recents 并带上新的队列时间戳,而出现在后端排序页面前方的独立前置行中。使用 Locate in Gallery 让后端条目加载并完成核对后,前置的重复项会消失。

报错原文

[bug]: Sparse gallery can show old requeued images ahead of newer items

Expected: only the generated image is routed.
Current behavior: both images are routed.

原因分析

可能原因:workflow 的 batch 值与编译后的 graph 节点分开存储,而结果过滤逻辑(input-passthrough filter)只扫描 graph。Image Primitive 节点虽然存在于 graph 中,但其图片值只存在于 batchData,于是回显的源图没有被正确识别为输入并过滤掉,而是作为可见结果被路由,并进入画廊 recents。稀疏画廊再把这类 recents 放到前置行,导致旧图排在新图之前。该结论目前由复现测试支持,尚未对全部受影响图片的历史结果数据逐一确认。

环境排查

  • 确认 InvokeAI 版本或 commit;Issue 未记录具体版本。
  • 确认前端 runtime 中 workflow 提交是否使用 kind: 'workflow' 且图片只放在 backendSubmission.batchData。
  • 确认 workflow 中是否存在 Image Batch → Image Primitive 的输入回显路径。
  • 确认结果 API 返回的图片列表是否同时包含源图和生成图。
  • 操作系统、浏览器、GPU、CUDA、PyTorch 信息在 Issue 中未提供,无法据此排查。

解决步骤

  1. 先按 Issue 的复现方式确认问题:创建含已有图片的 Image Batch,接入 Image Primitive,运行后打开稀疏画廊降序视图,观察旧图是否出现在顶部前置行。
  2. 检查该图是否仅通过 batchData 传入(参考评论中的 workflowBatchData 结构),而对应节点在 graph.nodes 中存在、图片值却不在 graph 中。
  3. 核对结果路由:routeResults 是否同时收到源图(如 batch-input.png)和生成图(如 generated.png)。按预期只应路由生成图。
  4. 可优先尝试:临时避免对 Image Batch 输入直接用 Image Primitive 回显,或调整 workflow 不让批输入进入结果路径,以确认是否仍出现前置旧图。此方法来自 Issue 的行为分析,Issue 未明确将其列为已验证修复。
  5. 如需在代码层修复,需要让结果 passthrough 过滤能识别 batchData 中的输入,把回显的批输入从可见结果中排除。Issue 未给出合并修复的具体实现。
  6. 对已出现的画廊前置重复项,使用 Locate in Gallery 触发后端条目加载与核对,观察前置副本是否消失、图片是否回到后端排序位置。

验证方法

复现测试应满足:routeResults 只收到生成图,不包含被回显的批输入源图;addImagesToGalleryBoard 未被调用。界面层面,稀疏画廊降序视图中不应再出现旧图排在新图之前的独立前置行;执行 Locate in Gallery 后,前置重复项消失且后端图片保留在其排序位置。由于 Issue 关闭时未附合并修复信息,以上验证以 Issue 中的测试预期为准。

参考来源

invoke-ai/InvokeAI #9953

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29785

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注