前言¶
在 DeepSeek Harness(DSH)里走 OpenRouter,常见做法是配一条 @deepseek-ai/dsh-llm-pi-ai 的 provider:baseURL 指向 https://openrouter.ai/api/v1,再填 API Key。这样请求能发出去,但有两类能力很难从 profile 里直接调到。
一是 路由。OpenRouter 支持用 flex、priority 等 service tier,以及 throughput / price 等排序策略决定请求落在哪条池子里;这些通常写在请求体里。provider profile 暴露的是 baseURL 和 headers,没有 request-body 字段(社区讨论见 deepseek-harness #9787)。
二是 模型发现。DSH 里「拉取可用模型」往往来自 @earendil-works/pi-ai 内置目录;对 catalog 型路由(例如 openrouter),会在读该路由 baseURL 之前就短路返回目录快照,且只有 pi-ai 发版时才会更新。插件作者在其开发基准上曾统计:463 个在线模型里目录只覆盖约 65 个,新上的模型在 UI 里不可见,改 endpoint URL 也绕不开——短路的是 provider 名称,不是 URL。
dsh-openrouter-plus(维护者 GnaneshKunal,分类:模型推理)从插件侧补这两块:本地 loopback relay 在每次请求时按 Session 注入路由预设;对已勾选「经 OpenRouter Plus 转发」的 provider,还提供从 endpoint 读取 实时模型列表 并选择性追加到路由。不 patch 已安装的 npm 包,也不改 ~/.bun/install/global。
这是什么¶
一句话:OpenRouter 路由预设 + 实时模型同步,以 DSH 插件形式挂载——loopback relay 在请求时应用 preset(service_tier、provider.sort 或 :floor 模型变体),附带状态 API 与 Settings → OpenRouter Plus 设置页。
请求路径概念上如下(摘自项目 README):
composer chip: this session runs on «priority»
│
▼
dsh-llm-pi-ai ──► dsh-openrouter-plus relay ──► https://openrouter.ai/api/v1
baseURL = │ reads the session from x-session-id / prompt_cache_key,
127.0.0.1:8791/t/<id>/v1 │ applies that session's preset to the body
└── /__openrouter-plus/* ──► OpenRouter Plus settings page
├ /models reads the live listing
└ /models/add adds only the ticked models
预设按 Session、在请求时 选择:同一条 provider 行可服务所有 preset,切换时不必复制 provider、路由或模型列表。
核心功能¶
下面只列 README 与 package.json 中已说明的能力。
Sync live models(同步在线模型)¶
对 已勾选 Route through OpenRouter Plus 的 provider 行,会出现 Sync live models…。它读取该行配置的 endpoint 当前发布的模型列表(含 pi-ai 目录快照之后新增的条目),带筛选框与逐模型勾选;勾选后只添加你选中的模型,路由里已有的会标为 added 且不能重复添加。手写模型名、context window、effort map 不会被重写。未走 relay 的行只有开关,不会出现该按钮。
一条 provider,多种 preset¶
经 relay 的 provider 保留原有 key、协议与模型列表,额外获得可在 composer 里切换的 preset,由 relay 写入每次请求。无需为每个 preset 复制 provider 或 sibling route。
固定 base URL(整路由级 preset)¶
除 Session 级 chip 外,README 还提供可粘贴到 OpenAI 兼容 provider 路由的 pinned base URL,对该路由上所有 Session(含 subagent)生效,重启后仍有效:
/v1(不 pin)/default/v1(Standard)/flex/v1(Flex)/priority/v1(Priority)/ultrafast/v1(Ultra)
relay 仍兼容旧路径名(如 /auto/v1、/fast/v1、/scale/v1);设置页对每个 preset 只列一个 mount,避免重复选项。
设置页与 composer chip¶
- Settings → OpenRouter Plus(导航项在 Models 之后):relay 状态、每个 preset 的 pinned base URL(可复制)、各 preset 的请求/ token 计数、测得的有效 multiplier、最近请求等。
- Composer preset chip:模型选择器旁显示本 Session 将使用的 preset,一键切换;按 Session 隔离,两个对话可分别处于 Flex 与 Priority。新 Session 在首条消息前也会显示 chip,初始值来自 profile 默认 preset;切换 preset 不改 provider 行与 reasoning effort。
- Settings → Models 中每个
llm-pi-aiprovider 有 Route through OpenRouter Plus 复选框:勾选则流量经 relay 到你已配置的 endpoint;取消则直连原 endpoint。provider 条目、协议、key、模型列表保持不变。 - 设置页可配置 profile 默认 preset;composer chip 的
Profile default (…)可把 Session 交回该默认。
安全与隔离说明(作者自述)¶
relay 不保存 API Key,原样转发 Authorization;仅绑定 loopback;对 profile 的改动设计上可逆。
安装与启用¶
dsh plugin 必须带 --profile,对应你实际启动 DSH 时用的 profile(例如 dsh web 用 web,裸 dsh 常用 default)。省略会报错:required option '--profile <name>' not specified。
从 npm 安装:
dsh plugin --profile web add dsh-openrouter-plus
或 pinned GitHub tag(README 示例):
dsh plugin --profile web add github:GnaneshKunal/dsh-openrouter-plus#v0.1.0
package.json 中 engines.dsh 为 >=0.2.1-rc.1,node 为 >=22.6;manifest 会拒绝低于插件测试基准的 harness 版本。安装成功后,Settings 导航会出现 OpenRouter Plus。
典型用法¶
- 安装插件(见上节,把
web换成你的 profile 名)。 - 在 Settings → Models 打开已有 OpenRouter(或 OpenAI 兼容)provider,勾选 Route through OpenRouter Plus;API Key 与 upstream endpoint 仍用你原来的配置。
- 在 composer 用 preset chip 为本 Session 选择 Flex / Priority 等;或在设置页复制 pinned base URL 粘贴到 provider 的
baseURL,让整路由固定某一 tier。 - 需要新模型时,在该 provider 行点 Sync live models…,筛选并勾选,只添加缺失的模型 ID。
- 在 Settings → OpenRouter Plus 查看 relay 是否在线、各 preset 计数与最近请求;按需调整 profile 默认 preset。
适用场景与注意¶
适合谁:已在 DSH 用 OpenRouter、需要按对话切换 flex / priority 等计费与延迟策略,或需要看到 OpenRouter 当前在线模型而非 pi-ai 内置快照的开发者。
注意:
- 插件与当前 DSH 进程同权限运行;安装前建议阅读 GitHub 仓库 源码与 MIT 许可证。
- 社区插件目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系;星标与版本以仓库与 npm 为准(npm 包名
dsh-openrouter-plus)。 - 路由 preset 影响 OpenRouter 侧计费与延迟;pinned URL 与 Session chip 作用范围不同,混用时先确认是「整路由」还是「当前 Session」。
结尾¶
dsh-openrouter-plus 用 loopback relay 和可选的实时模型同步,在不改 shipped 包的前提下补上 OpenRouter 的路由体字段与模型发现缺口;一条 provider 配合 Session 级 preset 或 pinned base URL 即可覆盖常见 tier 切换需求。
- 目录页:https://www.skillhub.cn/plugins/GnaneshKunal/dsh-openrouter-plus
- GitHub:https://github.com/GnaneshKunal/dsh-openrouter-plus