miku05231/dsh-provider-quote ↗★ 0

@local/dsh-provider-quote

对正在使用的模型提供商询价:账户余额 + 模型单价(USD / 1M tokens) 适合需要实时监控API调用成本、查询模型单价和可用模型列表的用户。

パッケージ
@local/dsh-provider-quote
互換性
未検証
バージョン
0.3.0
ライセンス
MIT
最終更新
2026/10/10

インストール

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:miku05231/dsh-provider-quote

ドキュメント

README 全文を読む ↗

provider-quote · 对正在使用的模型提供商询价

参考 cc-switch 的「服务商询价」,把同一件事做进 DSH:当前在用哪个提供商,就查它的余额与单价。

问的问题数据来源
我还有多少钱?按 baseURL 自动分派厂商余额适配器(见下表),也可直接粘贴 cc-switch 的 usage_script
这个模型多少钱?OpenRouter 公开价格目录 https://openrouter.ai/api/v1/models(输入 / 输出 / 缓存读写,USD per 1M tokens),可本地覆盖
我能用哪些模型?提供商自己的 GET /models(OpenAI 兼容)

装什么

一个 bundle,两半:

  • 宿主
    • index.js —— 包根转发(export * from './lib/host.js')
    • lib/host.js —— 宿主实现;lib/pricing.js —— 与 DSH 无关的纯询价引擎(适配器、价格目录、报价与文本渲染)
    • 工具 provider_quote —— agent 直接问价:provider_quote() / provider_quote({ all: true }) / provider_quote({ provider: 'openrouter' }) / provider_quote({ models: true })
    • 路由
      • GET /api/provider-quote/summary(?refresh=1 跳过 30s 报价缓存)
      • GET /api/provider-quote/refresh(同上,路径别名)
      • GET /api/provider-quote/ping —— 自检:版本、当前加载的模块 URL、目录缓存里的模型数
    • 可选的定时预热(autoRefreshMinutes)
  • 客户端(client.js) —— 两个挂载点:
    • 对话输入框下方的常驻胶囊(slot conversation.composer.dock,与自带的 stats 同一行):● 余额 12.4 USD —— 只显示当前会话选中的提供商的余额;在输入框的模型选择器里换提供商,胶囊立刻跟着换(报价本身含所有提供商的余额,不需要重新询价);点一下立即重新询价(走 ?refresh=1,跳过宿主的 30s 缓存),查询中是「余额查询中…」,失败是「余额没查到」,选中的提供商没被收录时是「余额未知」并自动重查一次;悬停可见提供商、余额来源与失败原因;每 5 分钟静默刷新一次。要看各提供商余额、模型单价与目录候选,用下面的设置页面板。
    • 「设置 → 模型」页底部的询价面板(slot settings.models.footer):当前提供商的余额、当前模型的单价、其余提供商的概览,带「刷新询价」按钮。
    • 两个组件共用同一份取数(模块内 store),不会重复请求宿主。

安装


## 配置(`cordis.patch.yml` 中该行的 `config`)

| 键 | 默认 | 含义 |
| --- | --- | --- |
| `enabled` | `true` | 关掉整行 |
| `adapters` | `auto` | `'auto'` 或适配器 id 数组(写死集合) |
| `timeoutMs` | `12000` | 单个 HTTP 请求超时 |
| `catalogTtlMs` | `21600000` | 价格目录缓存(6h) |
| `autoRefreshMinutes` | `0` | 后台预热间隔,0 = 关闭 |
| `scripts` | `{}` | host/glob → cc-switch usage_script |
| `priceOverrides` | `{}` | 模型 → 目录 id 或直给单价 |
| `providers` | `{}` | provider id → `{ baseURL, apiKeyEnv, adapters, skipModels }` |

## OpenRouter ★ 使用中
- baseURL: https://openrouter.ai/api
- 余额: 12.4 USD · 总额 25 USD,已用 12.6 USD · 账户有效 · 来源 GET /api/v1/credits
- 单价(USD / 1M tokens,2/2 个模型已定价):
  - ★ anthropic/claude-sonnet-4.5: 入 $3 / 出 $15 / 缓存读 $0.3(USD / 1M tokens)  ←目录 anthropic/claude-sonnet-4.5
  - openai/gpt-5-mini: 入 $0.25 / 出 $2 / 缓存读 $0.025(USD / 1M tokens)  ←目录 openai/gpt-5-mini

在 DSH 里等价的取数方式(换成你自己的提供商会返回真实数字):

curl -s "http://127.0.0.1:/api/provider-quote/summary"    # 加 ?refresh=1 跳过 30s 缓存
curl -s "http://127.0.0.1:/api/provider-quote/ping"       # 自检:版本、模块 URL、目录缓存模型数
$ curl -s "http://127.0.0.1:/api/provider-quote/ping"
{"ok":true,"version":"0.3.0","entry":"lib/host.js","catalogModels":458,
 "adapters":"auto","providers":["openrouter","deepseek-official"]}

agent 侧则直接用工具:provider_quote() / provider_quote({ models: true }) / provider_quote({ provider: 'openrouter' })。