一个端点,所有模型,每次都选对的那个——<50ms
更新于 2026-08-30 · 数据来源:GitHub API(采集于 2026-08-30)
← 返回汇总模型选型不该靠手感,该靠每一次请求的语义
Agent 系统的模型路由器:Anthropic / OpenAI / Gemini 三家 API 的 drop-in 代理,用盒上微型 embedder 对每个请求(per-action)打分,自动路由到「够用且最省」的模型。只改一个 endpoint,宣称省 40-70% 成本。适合重度使用 Claude Code / Codex / Cursor 等编码代理、又想控成本的个人与团队。
2026-04-27 创建 · 今日(08-30)仍在推送 · 10 位贡献者 · fork 77 · open issues 113 · 出品方 Weave(workweave.ai,工程智能平台,客户含 Robinhood / PostHog / Reducto)
简单任务也烧 opus/gpt-5.6 级别的钱。Agent 一次任务几十个 API 调用,大头其实是工具结果消化、摘要压缩这类低难度步骤——全旗舰等于给蚂蚁发重卡。
在不同工具/项目里手工配不同模型,粒度粗、忘切换、换模型要重配。粒度永远追不上「每一步任务难度其实都不同」的现实。
用提示词让一个 LLM 决定用哪个 LLM(vibes-based routing)——决策本身要花 token、有延迟、还不可复现。用模型选模型,钱没省多少。
Weave Router 的答案:盒上微型 embedder + 聚类打分器,不调 LLM、不写提示词,语义相似度直接映射到「能力需求档位」,每 50ms 内出一个可解释的决策。
项目专门维护 docs/SEMANTICS.md 钉死术语:Session → Round → Turn → Step/Action,并坦承历史代码里 turntype 等旧命名待迁移——把「我们路由的到底是什么」写成规范文档,这在路由类项目里少见。
| 能力 | 实现 | 为什么重要 |
|---|---|---|
| 三协议原生 | Anthropic Messages / OpenAI Chat Completions / Gemini generateContent 互相翻译 | 客户端说哪种方言都行,模型池不再被客户端锁定 |
| Anthropic 透传 | 未配 ANTHROPIC_API_KEY 时,转发客户端自己的 auth 头到 api.anthropic.com | Claude Code 订阅登录态白嫖保留,router 不必经手你的 key |
| 网关兼容 | ANTHROPIC/OPENAI_GATEWAY_* 指向企业自建网关 | 企业内网 Claude(如 Snowflake Cortex)也能挂进池子 |
| 流式 + 工具 + 视觉 | 翻译层全量保留 | 编码代理重度依赖 tool call 流式,砍了就没法用 |
两把钥匙分清楚:sk-... 上游 provider key(.env.local,或 BYOK 加密入库);rk_... router key(客户端 Bearer)。BYOK 默认开启,key 静态加密,密钥不出本机。
# 路线 A:接官方托管(零部署) $ npx @workweave/router # 选 Claude Code / Codex / opencode / pi # 自动拿 rk_ key、改配置文件,完事 $ npx @workweave/router --local # 指向自托管 localhost:8080
托管版走 router.workweave.ai;off/on/status 随时切回直连,不删配置。
# 路线 B:整机自托管 $ echo "OPENROUTER_API_KEY=sk-or-v1-..." >> .env.local $ make full-setup # Postgres + router :8080 + dashboard /ui(密码 admin) # rk_ key 打印在日志里 $ curl -sS localhost:8080/v1/messages \ -H "Authorization: Bearer rk_..." \ -d '{"model":"claude-sonnet-4-5",...}' # Anthropic 方言进,路由后的模型答
Go 1.25+;多副本部署需 Pub/Sub 做缓存失效(compose 自带模拟器)。
| 工具 | 接入方式 | 专属能力 |
|---|---|---|
| Claude Code | npx @workweave/router --claude / make install-cc | /router-off /router-on /router-status /models 斜杠命令;OAuth 登录态保留 |
| Codex | patch ~/.codex/config.toml provider 块 | 原生 skills:$force-model / $unforce-model / $router-feedback;ChatGPT OAuth 保留,key 走 X-Weave-Router-Key 头 |
| opencode | merge opencode.json provider 项 | Anthropic 方言原生互通,零改动 |
| pi | 装 router 的 pi 扩展 | Loom 头部 + Wooly 吉祥物 + /fm /ufm 钉模型 + 上下文隔离子代理 |
| Cursor | Override OpenAI Base URL(beta) | 设置里贴 rk_ key 即可 |
卸载只动 managed 块,用户既有配置不碰——「安装器要有洁癖」这个细节做得体面。
GET /v1/analytics/routing-decisions 游标分页 NDJSON 拉原始决策,配套 schema 字典 + 价格簿端点——可以把「它把什么路由到了哪」整库拉回自家数仓复盘npx @workweave/router models --claude)或 dashboard 均可启停单个模型;托管版为组织级设置Playground 复刻路由决策的核心规则:选 action 类型(主循环 / 工具结果 / 子代理 / 摘要 / 小补丁)× 任务复杂度 × 策略,实时看模型选择、能力档位匹配、成本节省——包括「激进省钱把硬任务派给弱模型」的贴边风险现场。
纯前端实现,零网络依赖 · 决策规则 45 组合真值表全验证(成本单调性 + 风险触发断言)
「per-action 语义路由」把模型选型从配置文件问题变成数据问题,方向判断正确——模型池越分化(旗舰/廉价/OSS 三层价差 100 倍),路由器的省钱杠杆越大。但赛道拥挤(LiteLLM、OpenRouter 自带路由、各云厂商 gateway),且 ELv2 + 商业绑定限制了社区分叉动力。