miku05231/dsh-provider-quote ↗★ 0
@local/dsh-provider-quote
对正在使用的模型提供商询价:账户余额 + 模型单价(USD / 1M tokens) 适合需要实时监控API调用成本、查询模型单价和可用模型列表的用户。
インストール
$
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),不会重复请求宿主。
- 对话输入框下方的常驻胶囊(slot
安装
## 配置(`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' })。