这道题本质上问的是,怎么把一个复杂的规划任务拆成多个[[Agent]]协作,同时让系统能感知实时变化,不是单纯做一个静态路线推荐。我的思路是分层规划加迭代优化,核心是三层Agent架构,再加上[[RAG]]来注入动态知识。
先说Agent拆解。我会分成三个角色:需求解析Agent、行程编排Agent、验证优化Agent。需求解析Agent拿到用户输入后,不光提取显式的预算、时间、必去景点,还要挖掘隐性需求,比如用户说「轻松一点」,背后可能意味着每天步行不超过一万步、景点间车程不超过半小时。行程编排Agent拿到解析后的用户画像,做约束求解,生成景点、交通、餐饮、住宿的时空组合。验证优化Agent检查可行性,比如景点开放时间、路程合理性,成本估算,生成备选方案。
协作机制上,我设计了一个主控Orchestrator维护共享状态树,存用户画像、当前行程草案、待确认事项。层内可以并行,比如同时检索多个景点信息;层间串行,理解到规划到验证,顺序走。但关键是可以回环迭代:验证失败触发重新规划,需求模糊回调澄清。举个例子,用户说「带老人小孩」,需求解析Agent可能没把握,就回调问「老人多大年纪?小孩需要推车吗?」。
再讲RAG怎么融合。知识库分两层:静态库存景点基础信息、历史文化、经典路线模板,定期全量更新;动态库存实时票价、天气、交通、近期用户评价,小时级增量索引。RAG不是简单拼接到prompt里,而是作为结构化工具输出注入Agent的[[ReAct]]推理链。比如行程编排Agent在选景点时,调用RAG工具查实时开放状态、周边餐饮评分、当前拥堵指数,Agent自己判断信息可信度,决定是否采纳。这里有个坑:如果直接把检索结果拼进prompt,Agent容易盲目信任,导致推荐已关闭的景点。所以我会让Agent对每条检索结果输出置信度,低分直接丢弃。
信息流转是这样的:用户输入到需求解析Agent,更新用户画像槽位,触发行程编排Agent,同时触发实时RAG检索,生成候选路线,交给验证优化Agent,再结合RAG查实时约束,最后确认或反馈给用户。用户支持局部修改,只重算受影响子树。状态一致性我用版本化行程快照,每次修改生成新分支,支持对比回滚。关键决策点比如酒店预订,必须用户显式确认后才锁定。
这里有个延伸点:如果用户临时变更,比如突然说「今天下雨不想去户外」,系统需要快速重规划。我倾向用[[Tree-of-Thoughts]]做局部重规划,只替换受影响的时间段,而不是全盘重算,这样效率更高。但前提是Agent能准确识别变更的影响范围,否则可能漏掉连锁反应。
落地时我会特别关注几个风险。一是Agent之间的状态一致性问题,如果需求解析Agent和行程编排Agent对「轻松」理解不一致,行程会矛盾。所以我用共享状态树加版本控制,任何修改都记录来源。二是RAG检索的实时性和准确性,动态库更新延迟会导致推荐过时的交通信息,我会加一个过期时间戳,超时直接标记不可用。三是用户信任问题,如果系统推荐了错误信息,用户会失去信心,所以验证Agent必须做冲突检测,比如推荐路线经过修路路段,就自动换方案。
所以整体上,我会把多Agent架构看成一种「分工但又互相校验」的机制,RAG是它的感知器官。我更倾向于在验证阶段做[[重排]],而不是在编排阶段做大量检索,因为先粗筛再精排效率更高。如果面试官感兴趣,我可以聊聊具体怎么设计版本化快照的回滚机制。