mirror of
https://github.com/MemeMeow-Studio/MemeMeow.git
synced 2026-10-21 09:07:30 +08:00
5ecda39843
- Implement tests for the ImageProcessingWorker to validate task deduplication and policy interactions. - Create tests for operation policy to ensure proper grant handling and error responses. - Add tests for reverse image provider response structure to validate empty and malformed results. - Develop comprehensive tests for scope resolution and service validation to ensure correct behavior in various scenarios.
4.2 KiB
4.2 KiB
Why
当前图片处理链由视觉任务隐式创建 Agent 任务、Agent 成功路径再触发 scope 级文本索引刷新,导致叶子任务承担编排职责,也让失败恢复、claim fencing、配额计量和“图片库一键补齐”难以使用同一套语义。需要把图片处理提升为独立的持久化能力,由专用 Worker 根据当前图片及其派生产物,只执行尚未完成或已经过期的阶段。
What Changes
- 新增 scope-aware
ImageProcessingWorker和持久化图片处理 job,统一承接上传后的自动处理与图片库一键补齐。 - 将固定处理顺序定义为视觉向量 Task、Agent 语境 Task、单图文本 embedding Task;任一叶子 Task 失败即停止后续阶段,但保留图片和已经可靠提交的阶段产物。
- 每个阶段以当前 Meme SHA、模型、预处理、Agent skill/config 或 metadata hash 判断产物是否有效,重试和重新处理只执行第一个未完成阶段及其后续必要阶段。
- 保留
visual_embedding_generation和meme_context_generation作为独立持久任务,并新增text_embedding_generation;叶子任务不再互相创建后续任务,图片处理 Worker 成为唯一的任务创建、复用和阶段推进者。 - 将既有
reverse_image_policy=forbid|auto冻结到图片处理 job revision 和 Agent Task;同图同策略的活动请求复用,不同策略保持generation_policy_conflict,显式重试可以用新 revision 选择新策略。 - 新增按单图增量写入并立即参与当前 scope 搜索的
text_embedding_generation,全库cache_generation只保留为显式重建、迁移和修复能力。 - 上传成功后返回图片处理 job 标识,但上传自动流程不重启已有的终态失败 job;图片库一键处理按 scope 分页创建或复用逐图 job,将本次选择的反向图片策略传给每张图片,并把历史
failed、blocked或unknown_execution视为用户显式重试,为其创建新的 job revision。 - Agent operation 被 policy 拒绝时,图片处理阶段进入通用
blocked并保存operation_forbidden、operation_limit_exceeded或operation_policy_unavailable及可选retry_at;核心不按提示时间自动重试。 - 专用 Worker 不沿用现有
PostgresTaskWorkerManager的业务调度流程,但负责认领和执行上述三类图片叶子 Task,并复用经修复的数据库 claim、lease、generation fencing、scope 约束和资源并发原语;现有 Worker 继续处理其它系统任务。 - BREAKING 视觉任务成功不再自动创建 Agent 任务,Agent 成功不再自动触发 scope 级 cache generation;调用方应观察统一图片处理 job 及其阶段状态。
Capabilities
New Capabilities
image-processing: 定义逐图处理 job、专用 Worker、阶段有效性、失败停止、policy 阻止、恢复与显式重试、图片库一键处理和部署生命周期。
Modified Capabilities
image-ingestion: 图片 durable 入库后改为创建或复用统一图片处理 job,而不是直接返回视觉任务作为处理链入口。task-status: 以图片处理 job 暴露总体与阶段状态及叶子task_id,保留视觉与 Agent 任务的独立诊断能力,并移除叶子任务和批次 finalizer 之间的隐式推进责任。meme-search: 支持按单图 metadata hash 和 embedding 模型增量生成、更新或失效文本向量,并让有效向量无需全库 generation 即可参与搜索。
Impact
- 主要影响 FastAPI 上传和图片库批量入口、任务状态 API、PostgreSQL job/stage 与文本向量 schema、Worker 生命周期、视觉/Agent handler、搜索 repository 和前端处理状态展示。
- 需要迁移现有任务链和搜索 generation 数据,并保留显式全库索引重建作为维护与回滚工具。
add-operation-policy-hooks必须改为在图片处理 Worker 准备创建或执行 Agent 阶段时处理analysis.agentgrant;上传、反向图片和删除的 operation 边界保持各自既有语义。- 开源部署可在 API 进程内启动同一 Worker,宿主部署可把它作为独立进程或容器运行;两种模式共享数据库事实来源和恢复协议。