
从立项到正式交付我们团队用大半年时间把一套“原生视觉生成智能体”从零搭起来。印象最深的是初期推翻重来的那次当时所有人默认的方案是“语言模型 外部图像生成服务”把视觉生成当成工具去调用结果在真实场景里根本跑不通。后来我们转向原生架构让视觉感知、生成、决策在一个多模态模型体系内闭环流动才真正把“让模型自己看着结果改图”这件事做成了。这篇文章不聊PPT概念直接讲架构设计、训练管线、推理优化、评测体系以及那些文档里不会写的坑和取舍适合正在做图像/视频生成应用、或想让Agent拥有生成能力的团队参考。1. 从“外部工具”到“原生能力”重建视觉生成智能体的决策起点1.1 最初那套“LLM生成API”架构为什么被推翻立项初期技术选型几乎是一边倒用语言模型做意图理解和任务规划把图像生成能力包装成API服务再通过函数调用串起来。这个方案听起来稳妥实际一跑就暴露问题。最致命的是信息损耗。用户说“把这张产品图的背景换成木质桌面阴影再柔和一些”“木质桌面”到底是什么木色、纹理密度多大、阴影柔和到什么程度语言模型只能靠文字参数猜测。生成的图返回来后语言模型还要依赖另一个多模态模型的文字转述才能“理解”结果而转述本身就在丢信息。一来一回第一轮结果往往和用户真实意图偏差很大需要多轮重试。第二个问题是反馈回路太长。每一步工具调用都是一次完整的前后端交互生成、理解、再生成叠加下来单次完整迭代经常要十几秒。真实用户在线使用时等待体验非常差用户往往改两轮就放弃了。更麻烦的是语言模型并不真正“看”图它对生成结果是否成立没有视觉判断力只会机械地重试同样的话术。所以在内部演示跑通之后我们果断放弃了这个方案。结论很直接想做一个真正能“边看边改”的智能体视觉能力必须进入模型主干而不是挂在外面当附属工具。1.2 原生视觉生成智能体究竟是什么“原生”这个词听起来玄其实核心就一句话视觉感知、视觉生成、决策判断在一个模型体系内部闭环中间不需要把图像翻译成一段自然语言再传给另一个模型。展开讲原生视觉生成智能体要具备几个能力。第一它要能直接读取当前画布把像素内容变成内部特征表示而不是靠外部模型描述。第二它要能在内部做出生成决策——是放大某块区域、修补瑕疵、调整整体色调还是新增一个物体。这个决策可以来自语言指令也可以来自模型自己“审视”图像后的判断。第三它的生成模块直接吃视觉特征作为条件输入保证局部编辑、风格迁移这类操作具备像素级精度。一个比较直观的类比过去是“文案策划”理解需求后写一段需求文档再发给“外部画师”执行中间改稿全靠文字沟通原生方案更像是把策划、画师、美术指导合并成一个人自己看着画面下笔不满意就在画布上微调达到效果后再停手。传统架构里的Agent视觉能力是外挂的原生架构里的Agent视觉理解和视觉生成就是它的底层操作系统。1.3 什么团队适合做什么场景必须做做这套系统的过程中我反复想的一个问题是原生方案值不值得做毕竟成本比“API调用”高得多门槛也完全不是一个量级。我的判断是存在高频多轮编辑需求的场景必须做原生。典型例子是设计工具用户会在一个画布上反复调整产品图、海报、插画每轮都要看结果再决定下一步。另一个例子是游戏美术和3D资产生成用户先确定概念图再生成多角度视图再细化局部每一环都依赖视觉反馈。反过来如果只是“一次性文生图”比如输入一段prompt拿到一张图就结束那原生架构的优势并不明显用成熟的外部生成服务加上不错的调度策略就够用了。团队层面做原生方案需要三类积累多模态模型的训练经验、足够的GPU算力和数据工程能力以及愿意接受较长的研发周期。如果这三样里缺两样建议先用混合方案试水但我们这次的体会是一旦确定要长期投做视觉Agent产品迟早要走上“原生”这条路晚走不如早走。2. 系统整体设计视觉模块、决策模块与记忆模块如何协同2.1 关键模块划分与职责边界架构设计的第一步是把系统拆成边界清晰的模块。模块拆得好不好直接决定后面训练和排障的复杂度。我们的设计包含六个核心部分。感知模块负责读取用户上传的参考图、当前画布、历史生成结果。它内部是一个视觉编码器输出的是特征向量网格而不是简单的文字标签。这部分跟传统图像理解模型很像但关键差异在于它的输出要直接喂给生成模块所以特征保留的细节粒度要求更高。生成模块系统真正“落笔”的地方。我们用的是基于扩散范式的Transformer主干输入由文本指令特征、感知模块输出的图像特征、以及控制条件共同组成输出则是当前画布的完整更新。也就是说模型每次生成的不再是一张独立新图而是“原来那张图经过修改后的结果”。规划与决策模块负责理解用户语言指令把它拆解成“改背景”“调光影”“新增物体”等原子操作并决定操作的执行顺序。它还负责判断什么时候算完成。这一点非常关键智能体不能用户说一嘴就无限改下去它要有“停手”的能力。评估反馈模块内嵌一个轻量级视觉奖励模型实时对当前生成结果打分判断是否满足指令要求。这个模块相当于智能体的“内审员”有了它才能形成生成—检查—再生成的闭环。会话与视觉记忆模块保存多轮对话记录、历史操作、当前画布特征。它解决的是“记得上一笔长什么样”的问题没有它每轮生成都会被当成全新任务处理。工具调度模块调用外围能力比如素材库检索、检测模型、OCR、以及最终的图像后处理和审核这些能力不属于生成主干但对完整产品必不可少。模块之间传递的统一数据结构我们定义为“视觉状态包”包含当前画布的低维特征、高维特征索引、画布尺寸变化记录、最近的编辑指令、置信度评分。所有上层模块都围绕这个状态包工作避免每个模块各搞一套接口导致互相对不上。2.2 统一控制表示把用户指令变成生成模型读得懂的条件模块拆完之后最棘手的问题是如何把“用户的高层语言指令”和“像素级操作需求”统一表示出来。我们做过好几版方案最终沉淀为一套“条件层”机制。具体做法是所有控制信息——不管来自自然语言、用户拖拽的框、还是参考图的风格向量——都先被转成统一的结构化条件。例如“把背景换成木质桌面”解析后得到的是一个语义区域替换条件目标区域是背景参考风格是木质纹理操作类型是替换“把阴影调柔和”则对应一个光照参数调整条件。这些条件被编码成一组条件向量然后通过自适应调制和交叉注意力两条路径注入生成主干。这比单纯把文本拼进prompt要可靠得多。原因在于文本会被模型“自由发挥”而结构化条件绑定了区域、动作和风格三要素生成模块在解码时受到约束输出的改动就锁定在用户指定的区域内。我们也保留了自由文本输入的兜底路径毕竟有的指令本身很抽象比如“让它更有高级感”这种完全没法转成结构化条件只能让模型基于整体风格分布去理解。在局部编辑场景里控制表示还要考虑“原图约束”。否则模型很容易把整张图重画一遍看起来质量很高但已经不是用户那张图了。我们的做法是把原图对应的噪声潜变量与生成噪声进行偏移融合简单说保留原有内容的信息同时让新条件有机会改变目标区域。2.3 多轮生成状态传递让模型记住上一笔长什么样多轮编辑是原生视觉生成智能体最核心的使用场景而它恰恰最容易出问题。用户先让模型“加一个红色按钮”又说“按钮向下移一点”再说“把它变成圆形”。如果系统每一轮都把整个画布当作全新输入那么按钮的位置、尺寸、颜色会在每轮之间不断漂移这就是训练时最典型的“图像身份漂移”问题。我们从设计之初就引入了工作内存机制避免这个问题。工作内存里保存三样东西画布的压缩特征缓存、最近十步的用户指令摘要、每一步操作对应的局部更新掩码。生成时模型会先查询工作内存判断这次改动是否落在上一轮改动的相关区域。如果是它会以缓存的原图特征为基准只在掩码区域内做增量生成而不是从头采样一遍。这套机制还有一个好处支持“撤销上一步”。因为每一步都记录了局部更新掩码和改动前特征用户说“不对回到上一步”系统可以直接回滚到对应状态不需要重新推理一次。这是很多Demo阶段看起来离谱、但真实产品里用户非常在意的能力。多轮状态传递的接口设计我建议在架构阶段就定死不要等训练完了再补。因为后续训练数据构造、推理缓存、评测流程全都依赖这个接口。我们前期在这上面返工过一次代价很大后面才意识到这其实是最需要提前设计的部分。3. 训练数据和三阶段训练管线让模型学会“边看边画”3.1 数据从哪来真实交互日志、规则合成与人工偏好的搭配原生视觉生成智能体和普通文生图模型的训练数据差别非常大。普通模型只需要“文本—图像”对就够了我们还需要“初始状态—指令—操作—结果—最终满意度”这样的轨迹数据。一条轨迹就是一次完整的交互过程长短不一有的三轮有的二十多轮。数据来源主要有三个。首先是真实用户交互日志质量最高因为里面包含了真实的意图变化、中途反悔、局部调整等行为模式这是合成数据很难模拟出来的。缺点是数量少且冷启动阶段没有用户只能靠内部体验团队手工采集。其次是规则合成数据。我们从一批高质量素材图出发用视觉语言模型自动为每张图生成属性描述再按规则生成编辑指令序列每一步执行一个可验证的编辑动作比如“把左上角的圆形向右移动20像素”“把背景饱和度降低10%”。这类数据量大、动作干净但太规整容易让模型只会处理“教科书式指令”。最后是人工偏好数据。对同一条指令先生成多个候选结果再由标注人员排序打分作为偏好对齐阶段的训练信号。这块成本最高但对模型“什么叫改得好、什么叫改坏了”的判断至关重要。三部分数据的配比我们经过多轮实验后稳定在真实日志30%、规则合成60%、人工偏好10%。注意配比不是固定的越到后期越要逐步提高真实日志的占比因为模型早期学基础能力靠规则数据效率高后期要打磨真实场景表现则必须靠真实数据。3.2 三阶段训练从生成底座到智能体行为训练管线分为三个大阶段每个阶段目标不同不能混在一起。第一阶段是生成底座预训练。用大规模图文数据、视频帧数据让模型掌握基础的图像生成和编辑能力重点是让模型学会内容和风格的解耦给定一个内容主体可以自由切换风格、布局、光照给定一个风格可以套用在不同内容上。这个阶段的产物是一个强大的“生成器”但它还听不懂复杂的多轮指令。第二阶段是监督微调。使用轨迹数据训练模型在具体状态下执行具体操作输入是当前画布特征和这一轮的用户指令输出是生成结果。这里有一个容易被忽视的点轨迹中必须包含“停手”这个特殊动作。我们在数据里刻意加入了大量“用户在满意后停止修改”的样本让模型学会判断什么时候不需要继续改动。如果缺少这类样本模型会出现过度修改倾向——你让它微调一下阴影它把整张图的风格都改了。第三阶段是偏好对齐。这个阶段用人工偏好数据优化模型方式上和语言模型的对齐类似但对象从“文字回复偏好”变成了“图像修改结果偏好”。正样本是符合用户多次修改习惯的结果负样本是虽然单张图质量很高但偏离用户意图的结果。这里有个关键经验偏好对齐的负样本不能光用低质量图更要包含“质量高但不按要求改”的图否则模型会变成“优秀画师但执行力差”。3.3 训练稳定性的实战经验loss尖峰、梯度冲突与多分辨率训练这种多模块联合的视觉生成模型稳定性是最大的隐性成本。我们前后遇到的典型问题有几个每个都折腾了不少时间。第一个是loss尖峰。训练到某个step时损失突然飙高几个量级然后模型直接崩掉。排查后发现两类原因一是混合精度下梯度溢出二是某几条异常长轨迹引发的梯度爆炸。解决办法是梯度裁剪阈值调低同时在loss监控上做平滑化发现连续N步异常就自动跳过这批数据并恢复最近一次正常checkpoint。自动回滚机制很关键否则半夜训练中断第二天人力成本极高。第二个是视觉编码器和生成主干的梯度冲突。早期我们让感知模块全程参与训练结果发现生成模块学得越强编码器参数越容易把特征分布带到奇怪方向。后来把编码器底层的梯度冻结只允许高层特征参与微调损失立即稳了很多。这条经验说明多模块联合训练时不是所有参数都适合端到端更新合理的冻结策略能省下大量调参时间。第三个是多分辨率问题。真实用户上传的画布尺寸五花八门如果训练时只喂固定分辨率线上效果会明显退化。我们采用按面积分桶采样把相近尺寸的样本放进同一个batch同时对位置编码做连续化处理让模型在插值尺寸下也能保持稳定。这一步是线上画质均匀性的基础不能省。4. 推理服务化落地在成本、延迟与生成质量之间找平衡4.1 大视觉模型分布式推理的调度思路模型训完只是第一步把模型变成稳定的线上服务是另一场硬仗。我们的生成主干参数量很大单卡显存放不下推理必须走分布式。在推理调度上我的核心感受是不能把所有请求一视同仁地丢进同一个GPU池。我们按任务复杂度分了两级。轻量操作比如局部亮度调整、颜色替换走一个精简版模型采样步数少、分辨率低延迟控制在1秒以内复杂操作比如多物体布局变更、风格迁移走完整模型采样步数多允许3秒以上延迟。这样分流的直接好处是GPU利用率瞬间上来了用户体验也稳定了。分布式推理本身的拆分方案按常规思路来按层切分的流水线并行和按注意力头切分的张量并行结合使用。对于扩散模型还要额外注意采样步数的调度——扩散模型每一步都有完整的Transformer前向计算不能像自回归模型那样靠KV Cache一步步延展。因此我们把“步数”作为一种显式调度参数在线动态调整队列拥塞时先给复杂任务降一档步数保证整体吞吐闲时再把步数拉满。4.2 三个行之有效的延迟优化手段离线实验和线上实测下来有三个优化手段效果最明显且不需要牺牲太多质量。第一个是采样步数压缩与蒸馏。扩散模型的推理延迟与采样步数几乎线性相关。我们训练了一个步数压缩版本把原本需要几十步收敛的扩散过程压缩到四步内出图配合蒸馏技巧肉眼几乎看不出差异。这个版本专门服务轻量操作和预览场景。第二个是KV缓存复用。多轮编辑时用户往往只改画面的一小块区域其余部分完全不变。传统做法是整张图重新过一遍模型非常浪费。我们实现了区域级缓存每一轮生成的注意力键值缓存按网格位置保存下一轮只对被修改区域影响的网格重新计算其余网格直接复用上一轮结果。注意这个复用不是无条件的当用户改变整体风格或构图时缓存要全部失效否则会出现局部和整体不协调的问题。第三个是提前终止策略。评估反馈模块本身很轻量可以在扩散采样的中间步骤实时对当前潜变量做一个粗略满意度判断。如果模型已经大概率满足指令了就提前结束采样不再执行后续步数。这个策略简单粗暴对大量“只需要小幅度修改”的请求效果非常好能省掉近三成计算量。4.3 实战案例同画布连续编辑场景延迟降低60%讲一个具体的优化案例。我们的典型场景是用户在同一张产品图上连续做三次编辑第一次“把背景改成木纹桌面”第二次“在右上角加一个白色标签”第三次“把标签改成圆角并加阴影”。优化前每轮编辑都是完整推理单轮延迟大约3.6秒三轮下来用户等待超过10秒放弃率很高。优化后我们做了三件事第一轮用完整模型生成并缓存画布特征和KV缓存第二轮只对右上角新区域做局部生成其余区域特征全部复用单轮降到1.8秒第三轮在第二轮的缓存基础上继续增量更新同时用提前终止策略判断“圆角和阴影”已经达标单轮进一步降到1.4秒。三轮累计延迟从10.8秒压到约5秒整体降低约54%接近60%的目标。让我印象最深的是这个优化过程中最难的其实不是技术实现而是接口改动。区域级缓存要求生成模块精确知道哪些网格受改动影响这在架构上如果不提前留好“局部更新掩码”的接口后面根本做不了。所以还是那句话多轮状态传递的接口设计一定要前置。5. 评测体系怎么搭从“图好看”到“任务完成”5.1 三类指标配比客观质量、语义对齐与任务效率视觉生成智能体的评测如果只看图好不好看一定会被带偏。我们的评测体系分成三大类指标各管一段。客观质量指标用于衡量单张图像本身的生成质量包括清晰度、结构合理性、美学分数等。这类指标和传统文生图评测一致能快速发现模型是否崩溃、是否有明显伪影但无法回答“改得对不对”。语义对齐指标衡量生成结果是否符合用户指令。常用做法是图文相似度打分以及偏好模型评分。偏好模型分比纯相似度更贴近人类判断但它本身也有偏好倾向所以我们只把它作为人工评测的前置筛选器不当作最终裁决。任务效率指标这是智能体特有的指标。包括多轮任务成功率任务最终完成且用户满意的比例、平均对话轮次成功完成任务需要多少轮修改、单次平均延迟、以及用户中途放弃率。前三个都是我们日常迭代中最关注的数字。做这套体系时我最大的体会是指标之间会打架。有些模型客观质量分很高但多轮成功率低因为它在第一轮就生成一张华丽但不按要求改的图用户被迫重来。所以我们最后选择以“任务成功率”为核心北极星指标其他指标看趋势变化但不单独拍板。5.2 多轮任务评测与回归集设计评测不能只靠人工随机测必须有固定的回归集否则版本迭代根本没法对比。我们建立了包含两条路线的评测流程。第一路线是单轮基准测试。固定2000条指令覆盖人物、物体、场景、风格、光影、文字特效等九大类别每条指令配标准输入图记录单轮生成结果的客观质量和语义对齐分。这个集合每天都跑任何模型更新先过这关快速发现显性退化。第二路线是多轮任务测试。模拟真实用户交互设计一个任务模板比如“将这张室内设计图从现代风格改为北欧风格并保留主要家具布局”要求模型自主规划步骤执行到任务完成或达到最大轮次。评测人员对最终结果做满意度打分同时记录轮次和耗时。多轮任务集数量不需要很大但必须保证任务质量。我们花了大量时间编写任务模板和判定标准确保“什么算完成”是有共识的。这个环节不能偷懒否则跑出来的成功率数字完全不可信。5.3 评测结果如何反推下一轮迭代方向评测体系上线后我们拿到过几轮非常打击人的测试结果但也正是这些结果让后续迭代有了明确方向。第一次正式评测暴露的最大问题是多轮身份漂移。任务“先把人物衣服改成红色再把背景调暗”模型执行第一轮很完美执行第二轮时人物的五官和衣服颜色都发生了偏移明明只该改背景的。问题根源在于局部编辑时原图约束在长链条中被逐步稀释。后来我们在训练数据里加大了“连续修改同一区域”的轨迹比例同时把工作内存里的特征缓存设计得更稳定情况才明显好转。另一个问题是长尾指令覆盖严重不足。用户会说“把整体氛围变得更克制”这种抽象指令在规则合成数据里几乎没有模型表现基本靠猜。我们为此专门采集了一批带有抽象审美描述的轨迹数据人工标注“克制”这类词对应的图像特征变化并把这些样本加入偏好对齐阶段。这个过程比较费人力但对产品体验的提升是决定性的。6. 复盘与给后来者的建议6.1 三个最值得说的坑第一个坑是数据偏差。前期我们图省事大量使用互联网抓取的图片作为训练素材结果模型在用户真实上传的产品图、设计稿上表现不稳定因为互联网图片的构图和审美分布跟垂直场景差异很大。这个坑特别隐蔽因为单看训练集上的指标完全正常。后来我们花了不少精力重新构建领域内数据集质量才上来。第二个坑是评估体系搭建太晚。项目前两个月几乎都在看单图效果“这张生成得真好看”成了口头禅。直到第一次用户内测才发现很多任务根本完不成。如果时间倒流我会在写第一行训练代码之前就把评测集的种子版本搭好哪怕粗糙一点也能让每个阶段的结果都有可比性。第三个坑是推理成本没有提前估。智能体场景天然是多次迭代调用的单次推理成本乘以轮次之后非常吓人。我们没有在一开始就设计分级算力调度导致项目中期成本超标不得不返工部署架构。成本问题应该和模型效果并列作为第一优先级来设计。6.2 有的放矢的落地路径建议如果想复刻这套系统我的建议是先选定一个垂直场景不要贪大求全。垂直场景会直接决定数据构造、评测指标和用户预期比如做电商产品图智能体和做通用创作助手完全是两套训练思路。具体落地路径上先把评测体系搭起来再启动训练架构阶段一定要设计好多轮状态缓存接口训练阶段预留自动回滚机制避免夜间训练崩溃带来的沉没成本推理阶段一级分级调度能极大节省成本。最后提醒一点视觉生成智能体最终要面向真实用户生成内容的安全审核、版权素材边界、模型水印、以及“拒绝生成不合规内容”的能力都要在系统设计里占据一席之地不能等到上线前再临时补。这些工作不性感但它们是产品能长期存在的底线。如果让我再走一遍这条路我会在立项的第一周就做两件事固定一个包含三千条真实任务的评测集以及把画布状态缓存接口的定义写进架构文档。这两件事听起来朴素但它们在后面几乎每一个关键决策里都起到了定盘星的作用。原生视觉生成智能体这条赛道还非常新远没有到技术收敛的时候眼下每一个扎实的工程细节都会成为下一阶段竞争的底牌。