设计多任务 AI 图片编辑器:能力矩阵、状态机与失败恢复

发布时间:2026/8/24 10:40:00
设计多任务 AI 图片编辑器:能力矩阵、状态机与失败恢复 多任务 AI 图片编辑器表面上只有一条链路上传图片、输入提示词、生成并下载。真正落地时复杂度来自选项之间的约束关系不同模型支持的编辑模式、图片数量、分辨率、宽高比、登录要求和积分成本并不相同。如果前端把所有控件永久展示再靠提交后的错误提示兜底用户很容易组合出服务端无法执行的请求。更稳妥的做法是把“当前能做什么”建模为版本化能力契约由它驱动界面、预检和服务端最终校验。一、用能力矩阵代替散落的条件判断前端不应该独立维护一份模型规则。服务端可以返回类似下面的数据结构typeEditCapability{version:string;models:Array{id:string;modes:Array{id:single_edit|multi_fusion;minSources:number;maxSources:number;mimeTypes:string[];maxBytes:number;resolutions:Arraystandard|hd|4k;aspectRatios:string[];requiresAuth:boolean;creditCost:number;};};};这里最重要的不是字段数量而是层级关系。分辨率、宽高比和输入数量属于具体的“模型 模式”分支不能被理解成全局功能。例如某个模式出现 4K不代表其他模式也支持多图模式允许多个输入也不代表单图编辑可以接收同样数量。前端拿到能力文档后再生成控件并在切换父级选项时重新计算依赖项。旧选择仍合法就保留不合法就替换成当前有效值同时向用户说明变化。这样比静默重置整张表单更能保护用户已经完成的输入。二、把生成过程写成显式状态机图片生成是异步任务不能只用一个loading布尔值表达。一个更清晰的状态序列是idle - validating_sources - ready - submitting - processing - reviewing - completed 任意活动状态 - failed - 修正输入或可恢复重试每个状态要有单一含义ready文件、提示词、模型和输出选项在本地校验下形成合法请求submitting客户端已经冻结不可变请求快照正在等待任务 IDprocessing服务端接受了任务但结果质量和最终成功仍未确定reviewing已有可查看结果用户还没有确认下载completed用户完成本次工作流而不只是后端返回成功码。显式状态可以避免重复提交、处理中途修改参数、失败后转圈不停止以及结果资源尚未可用就显示成功等问题。三、提交时冻结不可变请求快照点击生成时不要让正在变化的表单对象直接成为任务配置。应复制一份快照{capabilityVersion:2026-08-22.3,sourceAssetIds:[asset_7f31],prompt:移除显示器后方的线缆保留桌面木纹和阴影,model:general-edit-v2,mode:single_edit,resolution:hd,aspectRatio:original,quotedCreditCost:2}上传与生成最好拆成两个阶段。图片先完成解码、格式检查和资源登记生成请求只引用资源 ID。这样网络重试时不用再次传输原图也更容易区分“上传失败”和“模型执行失败”。任务请求还应携带幂等键。如果服务端已经创建任务但响应在网络中丢失客户端重试同一个请求时应拿回原任务而不是创建第二份计费任务。四、客户端预检与服务端校验缺一不可客户端校验负责尽早反馈服务端校验负责最终可信。文件检查不能只看扩展名或浏览器声明的 MIME 类型还要尝试解码并限制压缩字节数、像素总量和解码后的内存规模。体积很小的压缩文件解码后仍可能占用大量内存。服务端收到生成请求后需要重新确认能力版本是否仍然有效模型是否仍提供所选模式输入图片数量是否位于上下限内分辨率与宽高比是否属于同一能力分支当前身份是否满足登录要求服务端重新计算的积分成本是否与用户确认时一致。浏览器上传的报价只能用于发现规则变化不能作为真实扣费依据。五、失败路径要进入主流程设计生成系统依赖异步队列和模型服务失败处理不能等上线后再补。能力已更新返回结构化版本冲突刷新能力文档保留原图和提示词只标出失效选项文件无法解码错误要指向具体图片不要归类为笼统的生成失败登录或积分不足在派发任务前停止登录后恢复草稿并重新校验成本模型服务超时保留任务 ID把“状态未知”和“确定失败”区分开避免自动重复创建结果完成但不可用保留原始请求允许修改提示词或模式技术完成不等于视觉质量合格结果地址过期刷新已有资源的访问授权而不是重新生成图片。恢复策略的核心是保存用户投入源图片和提示词可以复用但模型能力、身份状态和成本必须刷新。六、把结果复核作为正式状态背景处理要检查头发、透明区域、边缘和接触阴影对象清理要检查重复纹理与涂抹痕迹增强要检查人脸、文字、光晕和虚构细节扩图要检查透视、光线与重复物体老照片修复要检查身份特征、服装、标识和日期。因此“后端生成完成”只能进入reviewing不能直接等同于可交付。界面应并列保留原图、提示词、配置快照和结果让用户依据最初的保留条件做比较再决定下载或修改请求。七、这套边界适合什么场景能力驱动的统一入口适合意图明确、希望快速完成的在线编辑任务但并不替代所有桌面工作流。精确蒙版、分层合成、像素级修饰、批量资产管理和可重复的专业生产管线仍需要不同的交互与控制精度。模型和选项也会变化高分辨率与多图输入不是全局能力部分操作可能需要登录或积分支持的文件格式和大小存在边界任何生成结果都需要人工复核。本文的具体产品背景是我参与的 ImgPhotoEditor。这里引用它是为了说明一个多任务在线图片编辑器如何组织能力与状态而不是把它当作所有精细编辑场景的替代方案。