Weave Router 路由指令完全指南:directives.tsv 中 10 条命令逐条解释
【免费下载链接】routerModel router for agentic systems. Routes every prompt to the right model in <50ms. Cut costs 40-70% with just an endpoint change.项目地址: https://gitcode.com/GitHub_Trending/router101/router
Weave Router 是面向 Agent 系统的模型路由器(Model router for agentic systems):把 Claude Code、Codex 等客户端的端点指向它,每条 prompt 都能在 50ms 内被路由到最合适的模型,仅改一个端点即可削减 40–70% 成本。而 install/directives.tsv 就是它所有「路由指令」的唯一注册表——你每天输入的/force-model、/router-off、/models等 10 条指令,全部在这一个文件里一次声明,再被安装器自动分发到各个客户端。
这篇文章带你逐条读透这个指令字典:每条命令做什么、哪些客户端支持、背后是"发一句提示词"还是"改本地配置"。
一、先看懂注册表:directives.tsv 的 8 个字段
directives.tsv是一个竖线分隔的表格,每行一条指令。文件开头的注释(install/directives.tsv#L1-L3)说明了它的结构:
| 字段 | 含义 |
|---|---|
canonical | 指令的规范名(正式写法) |
aliases | 别名,逗号分隔(如fm) |
capability | prompt(路由器直接解析的文本)或local-toggle(调本地安装器改配置) |
claude/codex/opencode/pi/cursor | 该客户端是否安装此指令(yes/no) |
adapter | 原生资产类型:command(即commands/<name>.md包装文件)或skill(即codex-skills/<name>/SKILL.md),可并列 |
💡 设计亮点:注册表是单一事实来源。所有安装路径、卸载器、状态栏刷新脚本和 npm 打包步骤都读这同一个文件,一条指令只声明一次,就能同步到达每个支持它的客户端。
二、指令总览:10 条路由指令一览表
这是 install/directives.tsv#L4-L13 的完整内容整理:
| 指令 | 别名 | 能力类型 | Claude | Codex | opencode | pi | Cursor | 资产类型 |
|---|---|---|---|---|---|---|---|---|
force-model | fm | prompt | ✅ | ✅ | ✅ | ✅ | 手动 | command + skill |
unforce-model | ufm | prompt | ✅ | ✅ | ✅ | ✅ | 手动 | command + skill |
router-feedback | rf | prompt | ✅ | ✅ | ✅ | — | 手动 | command + skill |
router-off | — | local-toggle | ✅ | ✅ | — | — | 手动 | command + skill |
router-on | — | local-toggle | ✅ | ✅ | — | — | 手动 | command + skill |
router-status | — | local-toggle | ✅ | ✅ | — | — | 手动 | command + skill |
router-session | — | prompt | ✅ | ✅ | — | — | — | command + skill |
router-models | models | local-toggle | ✅ | ✅ | — | — | — | command + skill |
disable-routing | — | local-toggle | — | ✅ | — | — | — | skill |
beta | — | prompt | ✅ | — | — | ✅ | 手动 | command |
三、逐条解释:每条路由指令到底做什么
1./force-model(别名/fm):把会话钉在指定模型上
这是最常用的"模型钉选"指令。语法是/force-model <model-id>,告诉 Weave Router:本会话内的请求都交给这个模型,跳过自动路由。
它属于prompt 型指令——指令本身是一段文本,随请求发给路由器,由路由器解析后给当前会话打上 pin。四个主力客户端都能用:
- Claude Code:斜杠命令
/force-model(install/commands/force-model.md) - Codex:因为
/被内置命令保留,所以用$force-model技能(install/codex-skills/force-model/SKILL.md),技能会输出一行"前导空格"形式的指令文本交给路由器 - opencode、pi 同理;pi 的
/fm、/ufm直接注册在扩展里(install/pi-router/src/force-model.ts) - Cursor:手动输入前导空格形式
/force-model <model-id>
2./unforce-model(别名/ufm):解除钉选,回到自动路由
/force-model的逆操作。执行后清除当前会话的模型钉选,路由器恢复"每次请求独立决策"的默认模式。不需要任何参数。
3./router-feedback(别名/rf):给路由决策和模型表现提反馈
当路由器选错了模型,或者某个模型输出不理想时,用/router-feedback <反馈内容>提交一条带上下文的反馈。路由器会把它和当前会话、所用模型关联记录,用于改进路由策略。注意 pi 客户端不支持此指令(注册表中为no)。
4./router-off、/router-on、/router-status:路由开关三件套
这三条是local-toggle 型指令——它们不走路由器,而是调用本地安装器 CLI 修改客户端配置(如npx @weave-os/router off --claude,见 install/commands/router-off.md),把客户端从 Weave Router 切回"直连供应商",且不删除路由器配置,随时一键切回:
| 客户端 | off具体做了什么 |
|---|---|
| Claude Code | 把ANTHROPIC_BASE_URL和密钥头移出settings.json,回落到自己的 Anthropic 登录 |
| Codex | 注释掉model_provider = "weave"一行,[model_providers.weave]配置块保留 |
| opencode | 移除顶层weave/...模型,provider.weave保留 |
/router-on逐字节还原上面的改动;/router-status报告当前是"走路由器"还是"直连"。
⚠️ 生效时机:Claude Code 只在启动时读取设置,需要完全退出重开;Codex 在下次启动codex时生效。
5./router-session:查看当前会话 ID
打印路由器用来关联本会话遥测、日志和反馈的会话 ID(Claude 侧取$CLAUDE_CODE_SESSION_ID,Codex 侧取$CODEX_SESSION_ID)。这个 ID 也是路由器 dashboard 里查转写记录的检索键。
小技巧:它现在由路由器直接应答——路由器本来就在每个请求的
Session-Id头里收到并存储了这个 ID,无需再浪费一次模型回合去猜(设计背景见 install/README.md#L341-L347)。
6./router-models(别名/models):查看并开关可选模型
列出该安装允许路由器挑选的所有模型(按供应商分组,[x]可挑 /[ ]不可挑),并能按你的要求启用、禁用、排序。它与路由器 dashboard 设置页的复选框是同一份存储设置。
常见用法:
/models:仅查看清单- "把 <模型id> 关掉":执行
models disable <id> - "整供应商开关":
models providers enable/disable ... - 设置偏好顺序:
models prefer <id> <id> ...(顺序即优先级)
禁用某个模型立即生效——从路由器的下一次路由决策开始,无需重启。完整行为说明见 install/commands/router-models.md。
7.$disable-routing:Codex 专属的"切回默认供应商"
Codex 独有的技能(install/codex-skills/disable-routing/SKILL.md),等价于$router-off——它是更早出现的写法,保留为别名。两者都不会卸载路由器、不会动其他 Codex 配置。
8./beta:切换 HMM 实验路由(仅 Claude 与 pi)
/beta在当前会话内开关实验性的 HMM(隐马尔可夫模型)路由策略。Claude Code 侧是斜杠命令(install/commands/beta.md),pi 侧则把本地/beta作为一次规范用户回合转发给路由器(install/pi-router/src/beta.ts)。
四、两种能力类型:prompt 与 local-toggle 的本质区别
理解这个区别,就能看懂注册表里所有yes/no:
prompt | local-toggle | |
|---|---|---|
| 指令的本质 | 一段被路由器解析的文本 | 调本地安装器修改配置文件的动作 |
| 谁来执行 | Weave Router 本体 | 客户端本地的安装器 CLI |
| 存在前提 | 请求经过路由器即可 | 安装器拥有该客户端的配置文件 |
| 例子 | /fm、/rf、/beta、/router-session | /router-off、/router-on、/models |
这就是为什么local-toggle只出现在 Claude Code 和 Codex 两列——只有这两个客户端存在安装器负责写入的配置文件;opencode、pi 的开关走各自的机制,Cursor 的 base URL 开关则放在 Cursor 自己的设置界面里。
五、各客户端支持的指令对照表
安装器从注册表推导出的最终形态(摘自 install/README.md#L403-L431):
| 指令 | Claude Code | Codex | opencode | pi | Cursor |
|---|---|---|---|---|---|
| force-model | /force-model | $force-model | /force-model | /fm(原生) | 手动 |
| unforce-model | /unforce-model | $unforce-model | /unforce-model | /ufm(原生) | 手动 |
| router-feedback | /router-feedback | $router-feedback | /router-feedback | — | 手动 |
| router-session | /router-session | $router-session | — | — | — |
| router-off / on / status | /router-off等 | $router-off等(含$disable-routing) | — | — | — |
| router-models | /router-models | $router-models | — | — | — |
几个值得记住的规则:
- Codex 用
$前缀:/被 Codex 内置命令保留,每条技能内部发送"前导空格"形式的提示词。 - pi 走原生扩展:
/fm、/ufm由@weave-os/router扩展直接注册,不依赖安装文件。 - Cursor 永远是
manual:安装器没有可写入的 Cursor 命令文件,指令需要你手动键入前导空格形式;on/off 则在Settings → Models → Override OpenAI Base URL里操作。
六、一条指令如何从文件到达你的终端
整个分发链条非常短,且被测试锁死,不允许"漂移":
- 声明:工程师在 install/directives.tsv 加一行,并配上对应资产文件(
commands/<name>.md和/或codex-skills/<name>/SKILL.md)。 - 读取:各安装脚本通过 install/registry.sh 的公共函数解析注册表,按客户端列(yes/no)决定给谁装什么。
- 内嵌:
install.sh支持curl | sh独立分发,没有相邻文件可用,所以make embed-registry会把注册表数据内嵌进脚本(install/scripts/embed-registry.sh)。 - 校验:install/tests/registry_test.sh 断言内嵌副本与源文件完全一致;npm 打包(install/npm/scripts/copy-installer.js)也会检查"每个命令文件都必须在注册表里声明"。任何一处在注册表里有、资产文件里没有(或反之),测试与打包都会直接失败。
七、常见疑问
为什么 Cursor 一列全是"手动"?因为安装器不拥有任何 Cursor 可写入的命令/技能文件。Cursor 用户直接键入前导空格形式的指令文本(如/force-model gpt-5),on/off 则在 Cursor 自己的设置界面切换 base URL。
$disable-routing和$router-off有什么区别?没有实质区别。disable-routing是 Codex 上更早出现的指令名,router-off推出后它作为别名保留,两者都执行同一个weave-router off --codex动作。
改完开关要重启客户端吗?
- Claude Code:要——它在启动时读取一次设置,重开即生效;
- Codex / opencode:下次启动
codex/opencode时生效; - 而
/router-models的模型禁用不需要重启,从下一次路由决策起就生效。
在哪里能找到每条指令的"说明书"?Claude 侧看 install/commands/ 目录下的同名.md文件,Codex 侧看 install/codex-skills/ 目录下的SKILL.md——它们的 frontmatterdescription字段就是你输入指令时看到的提示文案。
📌速记卡:钉模型用/fm,解钉用/ufm,提反馈用/rf,看模型清单用/models,开关闭合用/router-off+/router-on,查状态用/router-status。10 条指令,一个注册表,改一个端点,省 40–70% 成本——这就是 Weave Router 指令字典的全部。
【免费下载链接】routerModel router for agentic systems. Routes every prompt to the right model in <50ms. Cut costs 40-70% with just an endpoint change.项目地址: https://gitcode.com/GitHub_Trending/router101/router
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考