dsh-openrouter-live: OpenRouter Real-Time Model Provider for DeepSeek Harness

前言

DeepSeek Harness (dsh) 的内置 openrouter 路由使用发布时附带的静态模型列表。OpenRouter 上线的新模型(如 deepseek/deepseek-v4.1-flash)在下一个 DSH 版本发布前不会出现在模型选择器中。dsh-openrouter-live 插件为 dsh 提供了一个新的路由,它直接读取 OpenRouter 的 /models 端点,确保模型列表实时更新。

核心功能

该插件通过读取 OpenRouter 的实时数据,扩展了 DSH 的能力:

  • 实时模型列表:列表每 10 分钟刷新一次。模型按名称排序,且输入/输出价格以每百万 tokens 计算后追加到模型名称中。如果刷新失败,则继续使用上一次有效的列表。
  • 模型元数据:上下文窗口和输出限制直接来自 OpenRouter 的 API。推理级别(reasoning levels)从模型的 reasoning.supported_efforts 读取,选择器中只会显示模型支持的选项。
  • 图像输入:支持图片输入。插件会内联图片,并遵循 DSH 的图片预算:图片会被缩放,当请求过大时,旧图片会被卸载。
  • 推理连续性:插件会在后续请求中发送 reasoning_details(包括签名和加密条目),使 Claude 或 DeepSeek 等模型能够在工具调用间保持推理状态。
  • 提示缓存:Anthropic 模型会在系统提示词和最新消息处设置缓存断点。对于其他提供商,插件使用 x-session-id 头部保持会话与上游提供商一致,从而保持缓存热度。
  • 故障分类:错误被映射为 DSH 的故障代码,以便重试插件只针对值得重试的情况进行重试(如速率限制、5xx 错误、空响应),而跳过无效密钥或上下文溢出等错误。
  • 实际花费追踪:插件记录 OpenRouter 报告的每次响应的 usage.cost,这是真实费用而非估算值。费用会附加到当前会话及其所有委托的子会话中。数据持久化在 ~/.dsh/openrouter-live/costs.jsonl 中,每行对应一个 JSON 记录,包含 OpenRouter 的生成 ID。
  • 共享凭据:默认情况下,该路由读取与内置 openrouter 路由相同的 OPENROUTER_API_KEY 凭据,无需额外配置。

安装与启用

安装前请确保环境满足以下要求:
* DeepSeek Harness 版本:0.1.6-alpha.2 至 0.1.7
* Node.js 版本:^22.19 或 >=24
* 已拥有 OpenRouter API Key

执行以下命令安装插件:

dsh plugin --profile web add dsh-openrouter-live

安装后必须重启配置文件。若尚未存储 API Key,请在设置中选择 OpenRouter 卡片存储,或导出 OPENROUTER_API_KEY 环境变量。

配置

插件的所有配置项均位于 ~/.dsh/profiles/<profile>/cordis.patch.yml,在 openrouter-live 节点下设置。

基本配置示例

- id: openrouter-live
  config:
    models: ['deepseek/*', 'anthropic/claude-*']
    priceInName: true

关键配置项

字段 默认值 说明
models [] 模型 ID 的通配符过滤列表。空列表表示显示所有模型。
priceInName true 是否将价格追加到模型名称中。
apiKeyEnv OPENROUTER_API_KEY 读取凭据的环境变量名。
maxTokens 32768 输出限制。如果未设置,则使用此值,但模型自身的限制优先级更高。
costLedgerPath $DSH_HOME/openrouter-live/costs.jsonl 花费日志文件的路径。设置为空字符串则仅保留在内存中。

典型用法

设置默认模型:

agent-default-model:
  provider: openrouter-live
  model: deepseek/deepseek-v4.1-flash

在 Composer 中选择模型,或使用命令查看花费:

/cost

注意事项

  • 许可证:本项目采用 MIT 许可证。
  • 源码审查:作为插件,它以当前进程权限运行。建议在安装前检查源码。
  • 安装方式:请安装打包后的 .tgz 文件,不要安装目录,否则会导致依赖解析错误。
羽毛球分组比赛记分
小程序二维码

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

Xiaoye