导读
**
高德扫街榜背后有海量POI及图库。配图看起来只是“给榜单挑几张图”,实际是一条很长的生产链路:要召回、排序、理解主题、去重、兜底、质检,还要保证最终上线的图稳定、相关、美观。
过去,这条链路主要靠 Workflow 串起来。规则散在 SQL、脚本和 Prompt 里,维护难,迭代慢,人工干预多,也很难针对某类 badcase 快速优化。我们这次做的事情,是把它重构成一套“VLM 语义感知 + Skill 化生产 + HermesAgent 编排 + 语言驱动干预”的新链路。
重构后,单榜单生产从 T+1 的 24 小时缩短到 30 分钟,提效 48 倍。同时,配图生产已经支持产运同学用自然语言发起榜单级重配和单点 POI 精准替换。
本文将围绕Agent 化精排、兜底与质检、多模态知识库、语言驱动生产四个关键技术,全面介绍完整的链路。
**一、背景:为什么配图链路值得重构
**
高德扫街榜是一套覆盖多类型的“活榜单”。它既有精致讲究的品质之选,也有街头巷尾的朴素好味和日常去处。不同类型的榜单共同构成了扫街榜最重要的气质:真实、热闹、有温度。
用户第一眼看到的,往往不是文字,而是图片。一张好的配图,能让用户马上感受到一家店的热闹、一道菜的诱人、一个景点的氛围。一张不合适的图,也会很快削弱榜单的信任感。

图1:高德扫街榜丰富的配图
配图是榜单的“门面”。但旧链路的生产方式更像“手工作坊”:用 Workflow 把 SQL、脚本和通用大模型调用串起来,再靠调 Prompt、加规则、补分支来优化效果。这个方式在早期能跑通,但规模上来后,问题越来越明显。
旧链路核心问题可以概括为四类。
第一,维护难。旧链路涉及 50+ SQL 文件、8 个执行步骤。链路长,依赖重
第二,迭代慢。很多优化要改 SQL、调 Prompt、跑数据、看 case,再继续调整
第三,人工多。规则配置、badcase 分析、重跑、结果确认,都需要人不断介入
第四,很难针对性优化。需求是“主体不完整”、“门头太多”、“图太暗”,但如何沉淀到链路上,这个优化过程慢,也容易丢信息。
因此,我们重新定义了配图链路的目标:让系统能理解主题,规则能配置,链路能实时跑,问题能被监控,产运同学还能直接用自然语言发起重配。最终希望做到的是:让配图从“人维护流程”,变成“系统理解意图并自主生产”。

图2:workflow到HermesAgent的演化路径
**二、总体架构:从 Workflow 到 HermesAgent
**
技术选型
配图有两个要求:第一,系统要能扛住大量并发的多模态调用。第二,结果必须稳定、可解释、可回滚。
在架构选型时,我们面临两个方向。
一种是纯确定性编排。 把所有环节都固化成 DAG 节点。它的好处是流程可控、可观测、容易调试,适合批量生产。但它不够灵活。业务规则一复杂,硬编码就会膨胀,后面会很难维护。
另一种是纯 ReAct Agent。 让 LLM 自己规划步骤、调用工具、判断图片、给出结果。方案灵活,但不适合把所有批量任务都交给 Agent,执行路径也不稳定。
最终我们选择了混合架构:确定性工作流负责“重活”,Agent 推理负责“巧活”。
“重活”是高并发、批量、同构、可并行的任务。比如 CLIP 召回、美学过滤、图片分类、基础质量检测、重复度检测。这些任务适合让确定性节点并发跑。
“巧活”是开放式、组合式、需要理解规则的任务。比如怎么解释一个主题的挑图规则,怎么从多类候选图里组合出最优 3 张,怎么理解产运同学的一句话并触发重配。这些任务适合由 Agent 完成。
系统架构
整个系统可以分为五层。
第一层是交互层。 Hermes 提供自然语言对话入口,支持对话干预、自然语言启动配图、自然语言修改配图。
第二层是编排层。 Python Pipeline 负责稳定执行,Hermes 负责管理和调度。系统没有为了 Agent 化放弃工程稳定性,而是在成熟 Pipeline 之上加入 Agent 的理解和决策能力。
第三层是节点层。 包括 Query 泛化、多路召回、粗排、精排、兜底、质检、审核等核心节点。
第四层是 MCP/Skill 层。 各功能模块被固化为独立 Skill。它们本质上是 Python 脚本,但可以被 Python、Bash 和 Hermes 调用。
第五层是原子能力层。 包括 POI-CLIP 召回、美学评分、OCR、旋转图检测、人脸检测、人体检测、图片重复检测、POI 域多模理解大模型等。
这套分层设计带来的最大变化是:业务规则不再散落在 SQL 和脚本分支里,底层能力不再只能被固定 Pipeline 调用,产运需求也不再必须先变成研发排期。系统多了一个新的生产接口:语言。

图3:配图系统整体架构
**三、六段式全链路:海量图库到最终准出
**
重构后的配图系统仍然保留了清晰的生产漏斗。原因很简单:大规模线上系统不能只依赖模型“聪明”,还必须让每一层的输入、输出和失败路径都可控。
整条链路分为六步:
第 1 步是数据准备。 配图链路的输入来自 POI 的图库、评论图、照片墙等多个来源。
第 2 步是召回与准入。 重点是使用各个原子能力(clip、分类标签),先把明显不合适的图挡在外面。
第 3 步是粗排。 我们把相关性、特色性、美学性三个维度合成综合排序分,做倒排; 粗排还会做两次 LLM 排序:对剩余候选做更细的排序。
第 4 步是精排,也是 Agent 化最充分的一步。 它不再只看分数,而是让 Agent 理解当前主题的挑图规则,在已分类候选集中做组合选择,最终选出 3 张最合适的图。
第 5 步是兜底。 如果精排不足 3 张,系统会从上游各层候选中复用已有结果,再通过 VLM 选出兜底图
第 6 步是质检与准出。 系统从基础质量、视觉重复度、主题相关性和反季节四个维度把关,写入下游出口表。
在第四--七章,我们会着重介绍链路中的四个关键技术:agent化精排、兜底质检、多模态知识库,以及基于Hermes的语言驱动生产。

图4:配图系统各环节以及数据漏斗
**四、关键技术一:Agent 化精排决策
**
精排不是简单地“从 10 张图里选分数最高的 3 张”。真实业务规则往往是组合式的。有的榜单优先门头,有的榜单更需要菜品,有的榜单强调环境氛围。这些规则很难提前全部写成硬编码条件。
因此,精排被设计为 Agent 化决策引擎:前置节点负责把候选图片分类、打分、去重和结构化,Agent 负责理解规则意图并完成最终组合。 我们在4.1-4.4介绍如何结合agent优化最终精排效果。
4.1 多维度美学评分
精排的第一个要求是输出的图片够好。Agent的第一步是让模型感知多个评价维度,对图片进行一个综合打分。
传统美学评分的最大问题,是把“图片好不好”压缩成一个单一分值。但在配图场景下,“好不好”至少包含三个不同层面的问题:图片基础质量是否合格,视觉美感是否优秀,在当前主题下是否契合。
我们将美学评分拆成三域十五维度。
-
通用美学域:关注基础质量,包括清晰度、曝光、构图、色彩、完整性。这一层判断图片是否具备基本可用性。
-
高级美学域:关注视觉品质,包括光影质感、视觉冲击力、画面层次、专业感、情绪传达。这一层用于判断图片是否有高的视觉表现力。
-
领域美学域:关注主题契合度。不同 POI 类型有不同标准。举例:餐饮更看重菜品诱人度、食材新鲜度、环境整洁度。景点则更看重地标识别、季节氛围、空间开阔感。这一层判断和主题的相关、出彩性。
每个维度分两步打分:先过门控,再做补偿。门控看有没有硬伤,有硬伤就压低分数。补偿看有没有亮点,有亮点就补偿加分。简单说,门控保底线,补偿拉上限。

图5:Agent化精排的多维度评估
4.2 RAG 配置驱动
不同榜单主题的挑图策略差异很大,Agent的第二步是感知到这些差异。我们将主题相关 Prompt 和挑图规则外置为配置表,并通过 RAG 在运行时动态注入。配置分为三类。
第一类是定制榜单配图配置,优先级最高。
第二类是通用榜单配图配置,按业务类型套用模板,例如美食、景点、酒店等
第三类是默认配图配置,用于保障未命中主题的可用性。
这套设计把“业务变化”从代码中剥离出来。新增主题只需要维护配置表,不需要改动执行逻辑。对于新增 type 无配置的情况,系统会自动调用 LLM 生成多维度 Query 词,例如门头、环境、食物、特色场景等,用于后续 CLIP 召回。这让系统具备了面对新主题的基础泛化能力。
4.3 Agent 自主选图
Agent的第三步是综合、自主选图。会基于当前主题规则,在结构化候选集中循环调用工具完成决策。我们会调用工具,分别了解规则意图、匹配去重、结合“定制化需求”,在候选集中选出最终组合。
这里通常被建模成数值优化问题,但用传统的优化方法会陷入局部最优解,参数也不好调整。Agent 的价值就在这里:整体理解规则,基于候选结构做决策,自循环自闭环迭代。 最终的结果里,每张图要质量够好,组合起来能覆盖主题,没有信息重复。

图6:Agent化精排的系统架构
4.4 生产级约束:让模型负责感知,让代码负责计算
Agent 化不意味着把所有事情都交给模型。相反,在生产环境中,我们必须明确划分模型和代码的职责边界。这里列举两个典型问题:
-
VLM 的计算不可靠。各维度分数可能都合理,但加权求和会算错。我们的做法很简单:模型只输出各维度原始分,最终总分由代码计算。模型不碰聚合逻辑。
-
结构化输出不一定稳。即使使用 structured output,模型偶尔也会返回非法枚举。对此,我们在运行时读取合法类目列表。模型输出不在白名单内,就直接报错并重试。
一句话总结:模型负责感知和语义理解,代码负责计算、校验和兜底。
基于agent的精排效果,相比传统的精排结果,配图效果大幅提升。
| 传统精排结果 | agent精排结果 |
|---|---|
![]() |
![]() |
![]() |
![]() |
表1:新旧精排结果对比
**五、关键技术二:兜底与质检,生产系统的质量底线
**
面对生产的配图系统还要回答两个问题: 1. 生产失败怎么办? 2. 生产质量差怎么办?
-
先序挑图的每个环节都可能失败,除了工程失败,还可能因为候选不足、主题供给弱等导致逻辑失败。
-
不是每个POI都有优秀的供给图。假如供给质量差、没有符合主题的图,用户看到低质图,也会伤害体验。
因此,兜底和质检共同构成了生产系统的质量底线。
5.1 多阶梯兜底体系
兜底系统的核心设计是复用已有结果。上游已经做过召回、准入、CLIP、粗排和精排。如果兜底再从原始图库重新判断,会浪费大量计算。
因此,兜底候选直接从上游各层结果里拿。优先级从高到低包括:精排、粗排、召回、准入、图片库、在线图。
越靠上的候选,经过的验证越多。例如 CLIP 结果已经通过基础美学过滤,精筛结果又经过了排序和去重。兜底复用更上层结果,可以少算一遍,也能拿到更好的候选。
在阶梯的最下侧,还有工程选择、逻辑兜底两个环节,最差情况保证用户也能看到一张图,保障底线体验。

图7:多阶梯式的兜底设计,综合保证质量与覆盖率
5.2 VLM 选图与 ARAD 标准
兜底选图通过多模态模型完成。提示词中会传入主题描述,并按照以下ARAD标准综合筛选。
A:Aesthetics 看美观性,包括构图、清晰度、光线。
R:Relevance 看相关性,包括主题匹配、POI 代表性、城市契合度。
A:Authenticity 看真实性,包括时间、空间是否符合实际情况。
D:Diversity 看多样性,包括门头、环境、特色表达是否互补。
由于兜底候选质量有限,系统最终只选一张兜底图,不在弱候选里强行补多张。这个设计看似保守,但更符合线上质量底线:少补但补准。
5.3 多维度质检与回流
质检负责最后一道质量把关。系统从四个维度检查最终配图:基础质量、视觉重复度、主题相关性和反季节检测。
-
基础质量识别模糊、光线不足、构图严重缺陷等问题。
-
视觉重复度避免同一场景不同角度的重复图。
-
主题相关性判断图片是否真的表达当前主题,比如汤圆榜不能只有门头没有汤圆。
-
反季节检测处理赏花、赏景等强时令主题,避免花期已过或季节不符的图片上线。

图8:多模态、多维度的配图质检
**六、关键技术三:多模态知识库构建
**
VLM 很强,但它不一定掌握所有业务知识。扫街榜里有很多主题依赖地方特色、菜品常识、名胜古迹、季节知识和城市语境。只靠通用模型,容易出现“看起来合理,但其实不对”的判断。“多模态知识库”解决的就是这个问题。通用模型不稳定掌握的业务常识,系统要显式沉淀下来,并在配图过程中辅助召回、判断和校验。
6.1 从世界知识到内部供给
知识库输入分为文字和图片两类。
-
文字侧: 主要来自外部知识和世界知识,用来补充模型不稳定掌握的内容,比如地方做法、通用做法、特色菜信息、名胜古迹介绍和季节性常识。
-
图片侧: 结合外部可参考图片和内部图片供给。外部图片帮助系统建立基础认知,内部图片则更贴近真实业务场景和实际可用素材。
这一步的目标不是简单堆数据,而是为每个对象建立“文字描述 + 图片样例 + 来源证据”的多模态表示。
6.2 图文相互校验
多源知识会有噪声。文字可能不完整,图片可能混入无关内容,外部知识也可能有偏差。知识库构建的关键不是“收集得越多越好”,而是校验。
系统会先总结文字信息,区分地方做法和通用做法。如果有地方做法,会优先考虑地方语境。同一道菜在不同城市可能长得不一样,配图不能只依赖全国通用认知。
对于图片,系统会先做聚类,把候选图分簇。默认最大簇是有效簇。原因很直观:如果多张图都指向相似形态,这个形态更可能是该知识对象的主流表达。
随后,VLM 做图文一致性确认。如果图片簇和文本描述匹配,就完成这条知识构建。如果不匹配,就重新判断文本或图片是否可靠,避免把错误知识写进库里。

图9:多模态知识库提升配图效果
6.3 从“错中选对”到“对中选优”
知识库对配图链路的价值体现在两个层面。
第一是“错中选对”。 有些候选图看起来相似,但语义不同。知识库可以帮助系统判断哪一类才符合主题。地方菜、节令食品、名胜古迹等场景尤其需要这类知识。
第二是“对中选优”。 当候选图大体都相关时,知识库可以帮助系统进一步判断哪张图更能代表主题。配图不是只要“不出错”,还要尽量“出彩”。
多模态知识库的意义不只是提升指标。它让系统从“只看图”,升级为“带着业务知识看图”。这些知识也会沉淀为可复用的业务资产。
**七、关键技术四:语言驱动的配图生产
**
链路 Agent 化之后,我们还支持产运同学、研发同学直接用自然语言驱动配图生产。配图系统不再只是离线 Pipeline,也不只是定时任务。它有了自然语言入口。用户用一句话表达需求,系统完成意图解析、规则转换、Skill 编排、重配执行和结果回写。
这意味着配图生产的协作方式发生了变化:从“提需求、排期、研发改规则、重新跑数”,变成“说出需求,系统理解并执行”。
我们把Hermes作为agent编排层支持了这一需求。自然语言对话能实现以下功能:进度查询、单点重配、配置修改等需求。

图10:基于Hermes的对话驱动生产
语言驱动背后的工程闭环
语言驱动不是在系统外包一层聊天界面,而是对底层工程能力提出了更高要求。我们做了以下改进,使得Hermes能感知到配图系统的每个环节,进而实现语言驱动。
-
功能必须 Skill 化。 只有当召回、粗排、精排、兜底、质检、监控等能力都具备清晰工具边界时,Agent 才能稳定调用。
-
规则必须配置化。 自然语言需求最终需要落到可执行规则上,如果规则仍然硬编码在 SQL 或脚本里,语言入口无法真正提升效率。
-
执行必须可观测。 Agent 触发的每一次重配,都需要被监控表记录。我们要能看到输入、候选、精排、兜底、质检、审核和最终发布结果。否则,语言驱动会变成不可追踪的黑盒。
-
结果必须可回滚。 自然语言降低了操作门槛,也要求系统有更强的安全边界。大范围重配需要验证、灰度和回退机制。单点替换需要保留历史图和操作记录。
语言驱动真正改变的是生产接口。过去,系统要求人理解机器:理解表、脚本、配置、调度、上线流程。现在,系统开始理解人:理解偏好、主题、问题和目标。

图11:Hermes对话的一个真实例子
**八、工程实践:实时生产落地、可观测性、踩坑
**
从 Workflow 到 HermesAgent,不是把旧链路重写一遍,而是把原本散落在 SQL、脚本和人工经验中的能力重新组织成可复用、可编排、可观测的生产系统。
8.1 实时化生产
配图位于生产环节的最后,处理规模大、计算重、并发高,同时整套流程又相对串行。因此,架构选型必须同时考虑速度、效果和稳定。
新链路用 bash 脚本 + Python + 并发调度来保障执行效率。主题词泛化、多路召回、粗排、精排、兜底、质检都固化为 Skill。Python Pipeline 负责跑,Hermes 负责管,两者并行运行。
效果上,单榜单生产从旧链路的 24 小时缩短到 30 分钟,提效 48 倍。
实时化带来的不只是速度提升,还有工作方式变化。一次策略调整,30 分钟内就能看到结果。团队可以更快看 case、改规则、验证效果,产运反馈也能更快进入系统。
8.2 全链路监控
生产级系统必须可观测。我们通过odps 表跟踪每个 POI 在每一步的图片数量和最终发布结果。再配合可视化网站,可以看到从召回、准入、CLIP、排序、质检、审核到发布的完整漏斗。
监控指标覆盖供给、精排、兜底、质检、人工干预和交付统计。具体来说,供给侧看 POI 总数、平均相册图数、准入平均图数和准入成功率。精排侧看精排成功率、入选精排平均图数和入选精排成功率。兜底侧看兜底成功率、兜底补图比例和纯兜底比例。质检侧看质检覆盖率、剔除数量和准出数量。交付侧看准出覆盖比例、平均相关图片数和 3+ 图片 POI 数。
看板支持按类型查看指标,也能和昨日、上次版本、线上版本做对比。这样每次上线前都能看到质量、覆盖率和工程链路变化,不需要只靠局部 case 判断效果。
8.3 生产落地挑战
第一个挑战是集中重试导致故障放大效应。 几十张图片并发调用 VLM 时,如果服务短暂抖动,可能会有一批请求同时失败。如果这些请求马上一起重试,服务压力会更大,失败也会更多。我们的解法是指数退避 + 随机等待:失败次数越多,等得越久;每个请求再随机错开一点时间,避免同时打回去。
其次是 VLM 数理逻辑固有局限。 模型可以做语义判断,但不适合承担精确聚合计算。我们让模型输出原始维度分,最终分数由代码计算。
第三是结构化输出逃逸风险。 即使使用 structured output,模型仍可能返回非法枚举。我们在运行时做白名单校验,非法输出直接触发重试。
第四个是 VLM 算力容量瓶颈。 多模加量级大,综合导致计算量巨大。容量受限时,需要同时优化 Prompt token、并发逻辑和模型切换。
最后是多机部署下会话一致性问题。 我们使用一致性哈希策略(Consistent Hashing)控制同一个session固定打到同一台机器。并且在机器间使用了分布式database,避免上下文混乱的问题。
这些问题共同说明:Agent 和 VLM 进入生产系统后,真正的挑战不是“能不能跑通 demo”,而是如何在高并发、高成本、高风险的条件下持续稳定地跑。
**九、总结与展望
**
这次配图系统重构,生产、迭代时长从24小时提升至30分钟,提效48倍。得益于迭代效率的提升,整体配图质量也大幅提升,美观度、丰富度、相关性提升显著。AB实验也拿到了不错的业务收益。
回顾整个过程,有以下可跨场景复用的经验:
第一,确定性流程与 Agent 各司其职。 批量、同构、稳定性要求高的任务交给确定性 Pipeline。开放式、组合式、需要理解自然语言规则的任务交给 Agent。能稳定跑的就让 Pipeline 跑,需要理解规则的就让 Agent 想。
第二,结构化评分替代黑盒打分。 将“好不好”拆成三域十五维度,让模型回答更具体的问题。问题越具体,LLM 输出越稳定。
第三,模型负责感知,代码负责计算。 LLM 不做聚合逻辑,结构化输出必须经过运行时校验。生产系统不能把正确性完全寄托在模型“自觉遵守格式”上。
第四,规则外置到 RAG 配置表。 执行逻辑保持稳定,业务规则动态注入,新增主题不再依赖代码发布。
第五,兜底、质检和监控是 AI-Native 生产系统的基础设施。 没有兜底,覆盖率无法保证。没有质检,质量底线无法保证。没有监控,Agent 化执行也无法被信任。
第六,Skill 化是 Agent 落地的工程前提。 只有底层能力被封装成稳定工具,Agent 才能真正参与生产,而不是停留在问答层。
第七,语言驱动让系统从“人适应机器”转向“机器理解人”。 当产运同学可以用自然语言表达配图需求,并直接触发重配和替换,配图生产就不再只是工程流程,而是智能协作。
未来,这套系统还会继续向三个方向演进。
第一,引入AIGC能力,从“挑图”升级为“挑图 + 造图”。 候选图构图不错但画质不足时,可以通过图生图增强。候选集整体质量不达标时,可以基于主题描述和 POI 信息生成补充图。AIGC 能力可以作为新的 Tool 接入 Agent 工具集。
第二,进一步推进全链路 Agent 化和自进化。 系统可以根据质检结果、产品反馈和用户行为自动发现问题,生成优化建议,触发小流量验证,并逐步沉淀长期记忆。
第三,建设在线 KV 能力,进一步摆脱 ODPS 约束,让生产链路从分钟级继续向更实时、更灵活的方向演进。
我们始终相信,最好的智能不是把技术摆在台前,而是把它藏进日常生产里。让人工智能在幕后工作,把用户看到的人间烟火打磨得更好看、更可信、更有温度。
#高德扫街榜 #Agent #Hermes #高德 #高德技术
END





