Bundle
dsh-better-model-select
DSH plugin: exposes per-provider balance / coding-plan usage (5h window + weekly) in a status bar pinned to the native session-stats row.
- Source
- sxy-kumako
- License
- MIT
- Updated
- Updated 6 days ago
Readme
# dsh-better-model-select
DSH (DeepSeek Harness) 插件:模型列表跟随各 provider 的 API 实时更新 + 把各 provider 的实时用量显示在原生会话统计行下方。
## 模型列表同步(model sync)
DSH 内置的模型发现对 pi-ai 目录里已有的 provider(GLM Coding、MiniMax 等)会直接返回打包时的静态目录,
**从不请求远端接口** —— 新发布的模型(如 GLM 新版本)要等 pi-ai 升级才会出现。本插件补上这一环:
- 每 30 分钟(含启动时)读取 `llm-pi-ai.providers` 下配置的每条路由;
- 用该路由的凭据(`apiKeyEnv` → DSH 凭据库 / 环境变量)请求 provider 的模型列表接口
(OpenAI 兼容 `GET {baseURL}/models`;Anthropic 兼容 `GET {baseURL}/v1/models`);
- 合并远端列表与已安装目录:目录已有的模型保持原样(裸 `{id}` 条目,解析时自动继承目录完整定义),
远端新增的模型按同家族目录模型生成完整条目(上下文窗口、输入模态、wire compat、推理能力),
用户手写的条目永远优先、不会被删;
- 结果写入该路由的 `models` 设置列表。llm-pi-ai 在每次设置提交时重新物化路由,
**模型选择器实时生效 —— 无需代理、无需改 baseURL、无需重启**。
一次失败的远端请求不会写任何东西。写入被 llm-pi-ai 校验拒绝时仅记日志、保留原值。
## 用量徽标(quota badges)
- **GLM Coding / MiniMax Coding**:5h 窗口 + 周窗口剩余量
- **DeepSeek / OpenRouter / Kimi**:现金余额
颜色按剩余量染色:>30% 绿 / ≤30% 橙 / ≤10% 红。数据经 loopback RPC 通道
`/dsh-better-model-select`(endpoint `quota`,可 `force`;`syncModels` 可手动触发一轮同步)
由宿主半侧拉取,key 通过 DSH 凭据库(`apiKeyEnv` 引用名)解析,不会落日志。
> 历史版本曾内置一个 127.0.0.1:9999 的 OpenAI 兼容转发代理;该实现已移除,
> provider 请求走 DSH(pi-ai)原生直连。
## 安装
```bash
cd ~/.dsh/profiles/<你的 profile> # 例如 desktop 或 web
rm -rf node_modules/dsh-better-model-select # 更新时先删旧副本(不要原地覆盖)
cp -R ~/.dsh/plugins/dsh-better-model-select node_modules/
```
重启 DSH Desktop。
## 文件
- `index.js` — 宿主半侧:模型同步循环 + quota RPC 通道
- `lib/sync.js` — 远端列表拉取、目录合并、settings 写入
- `lib/catalog.js` — 定位并读取已安装 pi-ai 的模型目录(模板来源)
- `lib/adapters.js` — 各 provider 用量接口适配表
- `lib/credentials.js` — 凭据解析(DSH 凭据库 → 环境变量)
- `client.js` — Web 半侧:状态条挂载到原生统计行下方
- `test/sync.test.mjs` — 离线冒烟:真实拉取两个 provider 的列表、校验写入 patch、幂等性
Install
dsh plugin --profile web add github:sxy-kumako/dsh-better-model-select
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-better-model-select from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.