dsh-openrouter-plus:在 DSH 里按 Session 使用 OpenRouter 路由预设与实时模型列表

前言

在 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-ai provider 有 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。

典型用法

  1. 安装插件(见上节,把 web 换成你的 profile 名)。
  2. 在 Settings → Models 打开已有 OpenRouter(或 OpenAI 兼容)provider,勾选 Route through OpenRouter Plus;API Key 与 upstream endpoint 仍用你原来的配置。
  3. 在 composer 用 preset chip 为本 Session 选择 Flex / Priority 等;或在设置页复制 pinned base URL 粘贴到 provider 的 baseURL,让整路由固定某一 tier。
  4. 需要新模型时,在该 provider 行点 Sync live models…,筛选并勾选,只添加缺失的模型 ID。
  5. 在 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜