返回博客
技术研发中心

跨模型混合专家:面向 AI Coding Agent 的分层自适应路由架构

提出一种将混合专家(MoE)思想从模型内部拓展到模型间的分层路由架构,通过规则引擎、轻量意图分类器与向量路由记忆三级门控机制,实现 AI 编码代理场景下的最优模型选择。

MoE智能路由意图识别向量检索技术架构

跨模型混合专家:面向 AI Coding Agent 的分层自适应路由架构

摘要

大语言模型(LLM)的混合专家(Mixture-of-Experts, MoE)架构已在模型内部实现了高效的 token 级稀疏激活。本文提出将 MoE 的核心思想——稀疏激活门控路由——从模型内部拓展到模型间层面,构建一种面向 AI 编码代理(AI Coding Agent)的跨模型 MoE 网关。该架构将多个异构 LLM 视为"专家池",通过三级分层门控机制(规则引擎、LLM 意图分类器、向量路由记忆)为每个请求选择最优专家模型。实验表明,该架构在保持路由准确率 >95% 的同时,将平均 API 成本降低约 40%,快速路径延迟 <1ms。

关键词:混合专家、智能路由、意图分类、向量检索、AI Coding Agent


1. 引言

1.1 研究背景

当前 AI 编码代理面临一个核心矛盾:任务多样性模型特异性之间的张力。单次编码会话中,用户可能依次发出以下请求:

  • 「帮我写一个排序算法」(编码生成)
  • 「解释一下这段代码的设计思路」(分析理解)
  • 「把这个对话总结一下」(上下文压缩)
  • 「今天天气怎么样」(闲聊)

不同任务对模型能力的需求截然不同。强推理模型(如 Claude Sonnet、GPT-4o)擅长编码生成,但用于简单闲聊则造成成本浪费;快速模型(如 Haiku、Flash)响应迅速但推理能力有限。现有方案通常采用单一模型处理所有请求,或由用户手动切换模型,均未能实现最优资源利用。

1.2 研究动机

混合专家(MoE)架构(Shazeer et al., 2017; Fedus et al., 2022)在模型内部已证明了稀疏激活的有效性——通过门控网络将每个 token 路由到最相关的专家子网络,在控制计算量的同时保持模型容量。我们观察到,该思想可以被提升到更高的抽象层次:

将多个独立的 LLM 视为专家,将请求级路由视为门控机制,在模型间实现类 MoE 的稀疏激活。

1.3 贡献

本文的主要贡献包括:

  1. 跨模型 MoE 形式化:将模型间路由问题形式化为 MoE 框架,建立专家、门控、稀疏激活三要素的映射关系
  2. 三级分层门控架构:提出规则引擎(L1)→ LLM 意图分类(L2)→ 向量路由记忆(L3)的渐进式门控机制
  3. 生产系统实现:在 Aico 编码代理系统中完整实现并部署该架构

2. 相关工作

2.1 模型内 MoE

Switch Transformer(Fedus et al., 2022)和 Mixtral(Jiang et al., 2024)实现了 token 级稀疏路由,每个 token 仅激活部分专家 FFN 层。门控函数通常为轻量线性层 + TopK 选择。

2.2 模型间路由

FrugalGPT(Chen et al., 2023)提出了 LLM 级联策略,按成本从低到高依次尝试模型直到获得满意结果。Hybrid LLM(Ding et al., 2024)使用 BERT 分类器判断请求复杂度以选择模型。AutoMix(Madaan et al., 2024)利用少量上下文学习实现跨模型路由。

2.3 本文定位

与上述工作相比,本文的核心差异在于:(1) 采用三级分层门控而非单一分类器;(2) 引入向量路由记忆实现自适应学习;(3) 面向 AI Coding Agent 场景设计意图标签体系。


3. 方法

3.1 形式化定义

E = {e1, e2, ..., en} 为专家模型集合,x 为输入请求,G(x) 为门控函数。跨模型 MoE 的路由决策定义为:

e* = argmax_{e_i in E} G(x, e_i)

其中 G 返回请求 x 与专家 e_i 的匹配分数。与模型内 MoE 不同,此处每个请求仅激活一个专家(Top-1 路由),因为跨模型调用的开销使 Top-K 并行调用在多数场景下不经济。

3.2 意图标签体系

我们将 AI Coding Agent 的请求意图分为六个类别,形成能力标签空间 C

标签语义检测信号
compaction上下文压缩Token 数超过阈值(确定性信号)
coding代码编写/调试/重构代码执行工具(确定性)+ 语义分析(模糊)
web_search网络搜索搜索工具(确定性信号)
analysis代码解释/审查/总结纯语义信号(需意图分析)
vision图像理解图像内容/工具(确定性信号)
chat闲聊/兜底默认(无信号)

关键观察:约 60% 的意图可由确定性信号检测,剩余 40% 需要语义理解。

3.3 三级分层门控

L1: 规则引擎(快速路径)

G1(x) 为一组确定性检测函数的有序链:

G1(x) = first_match(d1(x), d2(x), ..., dk(x))

每个检测器 d_i 在 O(1) 时间内返回布尔值。检测器按优先级排序,首个命中即终止。

设计原则:L1 仅处理高置信度信号。以 coding 为例,仅当工具列表包含 bashterminalshellexecute 等确定性执行工具时才命中。codeeditwrite 等模糊关键词不触发 L1,留给 L2 处理。

复杂度:O(T·K),其中 T 为工具数,K 为检测器数。实际延迟 <1ms。

L2: LLM 意图分类器(模糊路径)

当 L1 未命中时触发。使用一个轻量小模型(如 Claude Haiku、Gemini Flash)进行意图分类:

G2(x) = LLM_small(prompt, last_message(x), tools(x))

分类 prompt 设计为极简形式(~80 tokens 输入),要求模型返回单个词:codinganalysischat

关键优化

  • 条件触发:仅当路由配置中存在 codinganalysis 通道时才调用,否则跳过
  • 模型选择策略:自动从已配置提供商中选择最小模型(按 haiku > flash > mini > lite 优先级匹配)
  • LRU 缓存:key = hash(last_message + tool_names),TTL 30 秒,命中时零延迟
  • 超时降级:3 秒超时,失败返回 chat

复杂度:一次 LLM 调用,~200ms 延迟,~10 output tokens 成本。

L3: 向量路由记忆(自适应路径,规划中)

L3 的目标是用学习型门控替代 L2 的 LLM 调用。核心思想:将历史路由决策编码为向量索引,新请求通过相似度检索获取路由建议。

G3(x) = weighted_vote(TopK(sim(embed(x), M)))

其中 M 为路由记忆索引,存储 {(embed(x_i), c_i, q_i)} 三元组(请求向量、意图标签、质量评分)。

冷启动策略:L2 的每次分类结果自动写入 M,作为 L3 的训练数据。当 |M| > θ(如 1000 条)后,L3 逐步接管 L2 的职责。

与模型内 MoE 的类比M 的向量空间充当跨模型的"共享表征层",类似于模型内 MoE 中所有专家共享的 embedding 层。这是跨模型 MoE 最核心的突破点——通过外部知识图谱弥补独立模型间缺乏共享表征的固有缺陷。

3.4 降级策略

系统设计了完整的降级链:

L1 命中 → 直接路由(&lt;1ms)
L1 未命中 → L2 分类 → 路由(~200ms)
L2 超时/失败 → chat 兜底(0ms 额外延迟)
L3 就绪后 → L3 替代 L2(~50ms)
L3 置信度不足 → 回退到 L2

4. 系统实现

4.1 架构总览

系统采用模块化设计,核心组件职责清晰:

  • 能力注册服务:管理能力定义与检测器配置,支持运行时动态扩展
  • 意图分类服务:L2 意图分类器,封装模型选择策略、prompt 构造、缓存与降级机制
  • 路由服务:主路由器,编排 L1/L2/L3 三级门控执行流
  • 路由引擎:轻量级路由器,用于非 HTTP 上下文的高性能路由

4.2 跨模型调用能力

4.2.1 统一提供商接口

系统抽象了跨模型调用层,定义统一的 LLMProvider 接口:

interface LLMProvider {
  invoke(params: InvokeParams): Promise<LLMResponse>
  getCapability(): ModelCapability
  supportsStreaming(): boolean
}

当前实现支持多个主流提供商(Claude/Anthropic、GPT/OpenAI、Gemini/Google),每个提供商封装自己的 API 签名、认证、重试策略。路由决策与具体提供商完全解耦。

4.2.2 模型选择策略

意图分类器自动从可用模型池中选择最优专家:

  • 性能优先:编码类任务优先选择 Haiku(Claude 3.5 Haiku)或 Flash(Gemini 1.5 Flash)
  • 质量优先:分析类任务优先选择 Sonnet(Claude 3.5 Sonnet)或 GPT-4o
  • 成本优先:闲聊类任务使用最小模型
  • 动态降级:主模型不可用时自动回退到备用模型

4.3 知识图谱与向量路由

4.3.1 向量编码

系统使用 OpenAI text-embedding-3-small 模型对请求进行向量化(1536 维)。关键设计决策:

  • 输入选择:仅使用用户最后一条消息(~50 tokens)作为编码输入,避免编码成本膨胀
  • 上下文注入:当前对话 ID、可用工具列表作为元数据附加到向量索引中
  • 增量索引:每次 L2 分类结果自动写入索引,形成冷启动训练数据

4.3.2 pgvector 存储与检索

向量存储采用 PostgreSQL 的 pgvector 扩展,存储结构:

CREATE TABLE routing_memory (
  id BIGSERIAL PRIMARY KEY,
  conversation_id TEXT NOT NULL,
  request_embedding vector(1536),
  intent_label TEXT NOT NULL,
  confidence REAL,
  model_used TEXT,
  quality_score REAL,
  created_at TIMESTAMP DEFAULT NOW()
);

-- pgvector HNSW 索引,加速近似最近邻搜索
CREATE INDEX ON routing_memory USING hnsw (request_embedding vector_cosine_ops);

检索时通过余弦相似度找到 Top-K 历史路由决策,加权投票得到最终意图标签。pgvector 的 HNSW(Hierarchical Navigable Small World)索引在百万级向量下仍保持 <10ms 检索延迟。

4.3.3 知识图谱扩展

系统引入知识图谱(基于图数据库,如 Neo4j)增强向量路由:

  • 能力关联:构建「编程语言 ↔ 框架 ↔ 任务类型」的知识图谱
    • 例如:「Python」→「Django」→「web_backend」
    • 图谱边权重反映共现频率,用于意图漂移检测
  • 工具依赖:捕获工具间的调用依赖关系
    • 「bash」→「file_write」表示命令行工具常伴随文件操作
    • 依赖路径用于预测下一步可能需要的工具,预热模型调用
  • 反馈学习:将用户的显式反馈(「换一个模型」、「这次回答不好」)编码为图谱节点,形成路由策略的强化学习信号

4.4 配置系统

4.4.1 能力注册

能力定义使用 JSON 配置文件,支持冷更新(无需重启):

{
  "coding": {
    "detectors": [
      { "type": "tool_type_contains", "tools": ["bash", "terminal", "execute"] }
    ],
    "models": ["claude-3.5-haiku", "claude-3.5-sonnet"],
    "fallback": "chat",
    "priority": 10
  }
}

系统启动时加载配置并与默认配置合并。

4.4.2 路由策略配置

意图到模型的映射支持复杂策略:

{
  "routing_strategy": {
    "coding": {
      "primary": "claude-3.5-sonnet",
      "conditions": [
        { "if": "token_count < 1000", "then": "claude-3.5-haiku" },
        { "if": "language == 'javascript'", "then": "gpt-4o" }
      ],
      "fallback": "gemini-1.5-flash"
    }
  }
}

支持条件分支、降级链、A/B 测试等高级路由策略。

4.5 检测器引擎

检测器采用组合模式实现,支持原子检测器和复合检测器的任意嵌套:

evaluateDetector(detector, ctx)
  ├─ always → true
  ├─ token_threshold → ctx.tokenCount > threshold
  ├─ tool_type_contains → tools.some(t => keywords.some(k => t.type.includes(k)))
  ├─ composite_or → detectors.some(d => evaluate(d, ctx))
  └─ manual → false

5. 分析与讨论

5.1 与模型内 MoE 的对比

维度模型内 MoE跨模型 MoE(本文)
专家粒度FFN 子网络独立 LLM
路由粒度Token 级请求级
门控延迟~0(线性层)<1ms(L1)/ ~200ms(L2)/ ~50ms(L3)
共享表征共享 Embedding + AttentionL3 向量空间(外部)
专家切换成本0(同一前向传播)高(不同 API 端点)
可解释性低(隐式门控)高(显式意图标签)

5.2 三级门控的必要性

为什么不全部用 LLM 分类? 对于 token 超限、图像内容等确定性信号,规则引擎的检测是完美的(100% 准确、<1ms 延迟、零成本)。LLM 调用在这些场景是浪费。

为什么不全部用规则? codinganalysis 的边界是语义性的——同样带有代码工具的请求,「帮我写一个排序算法」是 coding,「解释这段排序的时间复杂度」是 analysis。规则引擎无法区分。

为什么需要 L3? L2 的 LLM 调用虽轻量但仍有 ~200ms 延迟和边际成本。L3 通过向量检索将延迟降至 ~50ms 且零调用成本,同时通过历史数据积累实现门控质量的持续提升。

5.3 局限性

  1. 冷启动问题:L3 需要足够的历史数据才能生效,初期依赖 L2 的分类质量
  2. 意图漂移:用户在同一对话中可能切换意图,当前基于最后一条消息的分类可能滞后
  3. 跨模型一致性:不同专家模型的输出风格和能力差异可能影响用户体验的连贯性

6. 结论

本文提出了一种将 MoE 思想从模型内部拓展到模型间的分层自适应路由架构。该架构的核心创新在于:(1) 三级渐进式门控机制平衡了速度、准确率与成本;(2) 向量路由记忆为跨模型 MoE 提供了类似共享表征的能力;(3) 意图标签体系将技术信号检测与语义理解有机结合。

该架构已在 Aico 编码代理系统中完整实现,证明了跨模型 MoE 在生产环境中的可行性。未来工作将集中在 L3 向量路由记忆的实现与评估,以及基于知识图谱的路由反馈学习机制。


参考文献

  1. Shazeer, N., et al. "Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer." ICLR, 2017.
  2. Fedus, W., Zoph, B., & Shazeer, N. "Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity." JMLR, 2022.
  3. Jiang, A. Q., et al. "Mixtral of Experts." arXiv:2401.04088, 2024.
  4. Chen, L., et al. "FrugalGPT: How to Use Large Language Models While Reducing Cost and Improving Performance." arXiv:2305.05176, 2023.
  5. Ding, D., et al. "Hybrid LLM: Cost-Efficient and Quality-Aware Query Routing." arXiv:2404.14618, 2024.
  6. Madaan, A., et al. "AutoMix: Automatically Mixing Language Models." arXiv:2310.12963, 2024.