SH

Soloharness

概念 · 辨析 · Agent

← 返回概念辨析

Concept Contrast Fable

语义路由和Agent路由:一个按意思分路,一个按能力分配

在多Agent系统里,路由这个词同时出现在两个层面。语义路由根据用户输入的含义决定把请求导向哪个处理器或工具链,Agent路由根据任务需求决定由哪个Agent来执行。很多人把两者当成同一个路由层,但混淆之后会在系统里造出一个既不是网关也不是编排器的模糊组件。

寓言

分诊台和会诊协调处

一家大型综合医院的门诊大厅设了一个分诊台。病人进门先描述症状,分诊护士根据描述判断该挂内科、外科、还是皮肤科。分诊的依据是症状本身——肚子疼挂内科,骨折挂外科,皮疹挂皮肤科。护士不看病,只分流。

医院里还有一个会诊协调处,处理的是另一种分配问题。当一个病例涉及多个科室——比如一个糖尿病患者摔骨折了需要同时控制血糖和做骨科手术——协调处根据各科室的专长和排班情况决定由哪位内分泌科医生和哪位骨科医生联合处理。协调处不诊断症状,只匹配医生能力。

有一阵子医院搞流程优化,有人提议把分诊台和协调处合并成一个统一调度中心。新中心运行两周就出了岔子:一位腹痛病人被分诊到内科,但内科医生检查后发现是宫外孕需要立即转妇科手术。统一调度中心按症状分流到了内科,却没有能力识别这是一个需要妇科紧急介入的跨科病例。

事后复盘发现,分诊是看症状的表面特征做快速方向判断,调度协调是需要理解任务执行过程中出现的新需求和跨领域依赖。前者基于输入的语义特征匹配单一的初始路径,后者基于任务进展动态调整执行者的组合。合并之后,两件事的可靠度同时下降了。

医院恢复了分诊台和协调处的双层结构,但加了一条联动规则:当协调处收到分诊台转来的病例后,如果在初始科室执行过程中发现需要其他科室介入,协调处有权直接调配资源,不再回到分诊台重新分流。分诊台负责进门第一跳,协调处负责后续所有跳。

后来有人画了一张图解释双层路由:分诊台是请求入口的路由器,看一句话就决定第一站去哪;协调处是任务执行中的编排器,盯着任务进展随时调整后续的队伍组合。把这两张网压成一张,结果就是第一站可能就判断错了,后面还没人纠正。

两年后医院信息科整理架构文档时,把分诊台归类到意图识别与语义路由,把协调处归类到Agent编排与能力路由。同一个路由两个字,一个管的是入口分流,一个管的是执行协同。文档末尾写了一行提醒:不要把网关当编排器用,也别让编排器去做入口分流。

语义路由

根据用户输入的含义或意图将请求导向对应的处理器、工具链或知识库,关注的是这个请求应该走哪条路,通常发生在请求入口层。

Agent路由

根据任务需求、Agent能力和当前状态将子任务分配给合适的Agent执行,关注的是这个任务由谁来做,发生在任务编排和执行协调层。

故事对应

  • 分诊台根据症状快速分科:语义路由,根据输入含义分配初始处理路径
  • 会诊协调处根据医生专长匹配执行者:Agent路由,根据能力和状态分配执行者
  • 合并成统一调度中心后腹痛误判:混淆入口分流和任务编排导致双层功能同时降级
  • 分诊台负责进门第一跳协调处负责后续:语义路由处理入口决策,Agent路由处理执行中调度
  • 网关不当编排器用,编排器不做入口分流:两个路由层的职责边界和联动规则

落到 Agent 项目里

多Agent系统架构设计时把入口路由和任务路由画成两个独立模块。入口路由(语义路由)只做请求分类和初始分发,输出是该走哪条主链路。任务路由(Agent路由)在链路内部根据任务状态和Agent可用性做动态调度。评测时分开看:入口路由看分类准确率,任务路由看任务完成率和跨Agent协作的效率。两个模块之间留一个明确的接口,别在代码里混成一个函数。