workweave/router
GitHub: workweave/router
Workweave Router 是一款面向智能体系统的 AI 模型路由器,通过实时将每个 prompt 路由到最优模型来降低 40%-70% 的调用成本。
Stars: 849 | Forks: 37
**一个端点。所有模型。永远是最合适的一个。**
作为 Anthropic、OpenAI 和 Gemini 的直接替代代理,它通过使用本地轻量级 embedder,而不是基于直觉的 prompt,
为*每一个*请求挑选最合适的模型。
[](https://app.workweave.ai/reports/repository/org_QWsHDcRQWQEs6RpkdEZrlFK8/https%3A%2F%2Fgithub.com/1222789989)
[](go.mod)
[](https://github.com/workweave/router/actions/workflows/test.yml)
[](https://www.elastic.co/licensing/elastic-license)
*由 [Weave](https://www.workweave.ai) 构建:备受 Robinhood、PostHog、Reducto 及数百家企业青睐的工程智能平台。*
## 功能说明
将 Claude Code、Codex、Cursor 或你自己的应用指向 `localhost:8080`。此 router 将:
- 🎯 **按请求路由。** 源自
[Avengers-Pro](https://arxiv.org/abs/2508.12631) [^1] 的集群评分器,每次对话都会从你启用的 provider 中选择合适的模型。
- 🔌 **支持所有 API。** 支持 Anthropic Messages、OpenAI Chat Completions、
原生 Gemini。支持流式传输、工具调用、视觉功能等全套特性。
- 🧠 **也了解开源模型。** 通过 OpenRouter(或任何兼容 OpenAI 的 endpoint)支持 DeepSeek、Kimi、GLM、Qwen、Llama 和 Mistral。
- 🔒 **默认 BYOK。** Provider 密钥保留在你的本地设备上,并进行静态加密。
- 📊 **可观测。** 开箱即用的 OTLP trace。可以在 Weave dashboard (http://localhost:8080/ui/dashboard) 中查看,或者接入 Honeycomb、Datadog、
Grafana 等工具。
## 30 秒快速开始
最快的方式:使用一条命令将 Claude Code、Codex 或 opencode 指向**托管版**
Weave Router。无需 clone,无需 Docker,无需 Postgres。
```
npx @workweave/router
```
就这么简单。安装程序会询问使用哪种工具(Claude Code、Codex 或 opencode),
引导你设置作用域(用户级别还是项目级别),获取 router 密钥,并配置
正确的 config 文件。其他用法:
```
npx @workweave/router --claude # skip the picker, Claude Code
npx @workweave/router --codex # skip the picker, OpenAI Codex CLI
npx @workweave/router --opencode # skip the picker, opencode
npx @workweave/router --scope project # per-repo, commits settings.json (or .codex/ / opencode.json)
npx @workweave/router --local # self-hosted localhost:8080
npx @workweave/router --base-url https://router.acme.internal
npx @workweave/router@0.1.0 # pin a version
```
需要 Node ≥ 18(Claude Code 和 opencode 路径还需要 `jq`)。完整的
参数说明请见:[install/npm/README.md](install/npm/README.md)。
### 或者:在本地自托管整套技术栈
如果你想让 router(及 dashboard)运行在自己的设备上:
```
# 填入一个 provider key。推荐使用 OpenRouter 作为基准。
echo "OPENROUTER_API_KEY=sk-or-v1-..." >> .env.local
# 在 :8080 上启动 Postgres + router 并植入一个 rk_ key。
make full-setup
```
Router 运行在
,dashboard 位于
(密码:`admin`),你的 `rk_...` 密钥
将打印在日志中。
```
# 像 Anthropic 那样调用它
curl -sS http://localhost:8080/v1/messages \
-H "Authorization: Bearer rk_..." \
-d '{"model":"claude-sonnet-4-5","max_tokens":256,
"messages":[{"role":"user","content":"hi"}]}'
# ……或者像 OpenAI 那样
curl -sS http://localhost:8080/v1/chat/completions \
-H "Authorization: Bearer rk_..." \
-d '{"model":"gpt-4o-mini",
"messages":[{"role":"user","content":"hi"}]}'
# 在不进行代理的情况下查看 routing decision
curl -sS http://localhost:8080/v1/route -H "Authorization: Bearer rk_..." -d '...'
```
## 将其接入你的工具
**Claude Code。** 运行 `make install-cc` 将 Claude Code 接入本地
自托管的 router(它也会在 `make full-setup` 结束时自动调用)。对于托管版 router,请使用上方的
`npx @workweave/router`。
**Codex**(OpenAI CLI)。`npx @workweave/router --codex` 会使用一个托管的 `[model_providers.weave]` 块来修补
`~/.codex/config.toml`(如果使用 `--scope project`,则修补 `/.codex/config.toml`)
并设置 `model_provider = "weave"`。
Codex 现有的 `OPENAI_API_KEY` 将直接传递给 api.openai.com,用于
基于计划的直通传输;router 密钥通过 `X-Weave-Router-Key` HTTP
标头传递。重新安装和 `--uninstall --codex` 仅重写/移除受管理的
块,保持你其余的 Codex config 不受影响。
**opencode。** `npx @workweave/router --opencode` 将一个 `provider.weave`
条目合并入 `~/.config/opencode/opencode.json`(如果使用 `--scope project`,则合并入 `/opencode.json`)。它使用 opencode 内置的 `@ai-sdk/anthropic`
provider 并指向 router 的 `/v1` endpoint —— router 原生支持
Anthropic Messages API,因此 opencode 无需修改即可运行。Router
密钥和身份标头随 provider config 一起传递;重新安装
仅重写受管理的块,`--uninstall --opencode` 会将其移除。
**Cursor** *(早期测试版,性能可能不是最佳)。* Settings →
Models → *Override OpenAI Base URL* → `http://localhost:8080/v1`,将
`rk_...` 作为 API 密钥粘贴。
**开启/关闭。** 安装后,`npx @workweave/router off --claude`
(或 `--codex` / `--opencode`)会将该客户端直接路由回其 provider,而不会丢弃 router 配置;`on` 可将其切回,`status`
会报告当前的指向状态。Claude Code 还支持 `/router-off`、
`/router-on` 和 `/router-status` 斜杠命令。Cursor 可通过上述相同的
Settings → Models 覆盖选项进行切换。详见 [install/README.md](install/README.md#switching-on-and-off)。
## Endpoints
| Endpoint | 格式 |
| ------------------------------ | ---------------------------------------- |
| `POST /v1/messages` | Anthropic Messages,已路由 |
| `POST /v1/chat/completions` | OpenAI Chat Completions,已路由 |
| `POST /v1beta/models/:action` | Gemini `generateContent`,已路由 |
| `POST /v1/route` | 返回决策,无上游调用 |
| `GET /v1/models` · `POST /v1/messages/count_tokens` | Anthropic 直通 |
| `GET /health` · `GET /validate` | 存活检测 + 密钥校验 |
## 深入文档
- 📐 [**配置参考**](docs/CONFIGURATION.md):涵盖所有环境变量、
BYOK 加密、OTel 旋钮和集群路由。
- 🛠️ [**贡献指南**](CONTRIBUTING.md):分层规则、热重载开发、
迁移、测试及完整的工程循环。
- 🏗️ [**架构设计**](AGENTS.md):包结构、导入契约,
以及添加 endpoints / providers / 策略的指南。
## Star 历史
[^1]: Zhang, Y. et al. *Beyond GPT-5: Making LLMs Cheaper and Better via
Performance–Efficiency Optimized Routing* (Avengers-Pro).
arXiv:2508.12631, 2025. 标签:AI, EVTX分析, LLM网关, 大模型, 模型路由, 自动化代码审查, 降本增效