Magpie 的 Intent Routing 是怎么选模型的
每一轮开始时,一个小模型先判断这条消息是难还是易,再决定组里哪个模型先回答。
Magpie 是 yetone 做的开源工具,跑在你自己的电脑上。它给 Claude Code、Codex、Gemini CLI 这类 coding agent 提供一个统一的模型入口。你可以把多个模型放进同一个路由组,让 agent 选用整个组。Intent Routing 是组里的一种规则:每一轮开始时,一个小的分类模型会先判断这条消息是难还是易,再决定组里哪个模型先回答。
一轮是怎么选模型的
一个路由组里通常放一个强模型和一个便宜模型。新的一轮开始时,分类器会读用户的话,并判断这是困难任务还是简单任务。这个答案只决定谁先被问到,另一个模型仍然留在后面做故障转移。选定之后,这个选择会管住整一轮。因此,agent 把工具结果送回来时,请求会回到当初提出工具调用的那个模型,而不会重新分类。
分类器并不是只看到最新这一句。源码说明写明,它拿到的是开启这一轮的用户原文,长消息会保留开头 3000 个字符和结尾 1000 个字符;同时还会拿到上一条用户消息和助手上一次回复,各最多 1000 个字符,并且被告知上一轮属于哪一类。因此,用户只回一句「go on」时,分类器可以按上一轮的类别来判断。官方文档则写分类器只看最新一条消息。就这一点而言,源码说明比文档写得更具体。
规则按什么顺序检查
Magpie 自己有一套模板,名字叫 Hard to strong, easy to cheap。示例组用的就是这套模板写出来的四条规则。网关从上往下检查,第一条命中的规则把它指定的成员排到第一。
你可以点选下面的一种情况。你点选其中一种之后,请求原文、规则按顺序检查的结果、分类器是否被问起,以及谁先被问到,都会跟着改变。
what does the -race flag do?
- 1Compaction → cheap modelNo: not a compaction
- 2Carries an image → strong modelNo: no image
- 3Intent: a hard task → strong modelNo: the turn is easy
- 4Intent: an easy task → cheap modelMatches: the turn is easy
Kinds: 1. a hard task: designing, debugging, a change across several files, or planning 2. an easy task: a quick question, a small edit, a lookup, or running a command The user's message: <message> what does the -race flag do? </message> The number of the kind that fits it best (0 only if none does):
- Cheap modelasked first
- Strong modelfailover
Rule 4 decides. The classifier says easy, so rule 4 puts the cheap model first. The strong model stays behind it in case the cheap one fails.
这里的消息和分类器答案都是示例。真正的分类器本身是一个模型,因此它给出的回答可能不同。不过,网关对每一种回答的处理,与源码里的做法一致。
分类器只在「一条带意图的规则有可能成为第一条命中规则」时才会被问起。如果更前面的规则已经命中,比如请求里带了图片,这次调用就不会发生。除了意图、压缩和图片,一条规则还可以加上请求长度、推理强度、来自哪个 agent、开始时间,以及工作目录这些看得见的条件。源码说明强调,这些条件不会被猜测,同一条请求每次都会按同样的方式路由。
分类器失败时会怎样
同一道题在 10 分钟内再问一次,会直接用记忆里的答案。分类器失败之后会被搁置 30 秒,这样后面的每一轮都不必再把超时时间等完。
它做不到的事
源码说明也列出了这项机制的短处。这些限制来自对源码的阅读,而不是线上评测。
根据公开的 Claude Artifact Magpie Intent Routing 整理,对应开源项目 yetone/magpie 的 commit 873b498。产品介绍参考了 usemagpie.ai。