Bundle
dsh-api-dashboard
DeepSeek Harness 多平台 API 余额 / 用量看板:输入框下方实时显示各平台余额与本会话估算消耗
- Source
- 133563825as-ai
- stars
- 6 stars
- License
- MIT
- Updated
- Updated 10 hours ago
Readme
# dsh-api-dashboard · 哦鲸鲸
[](https://www.npmjs.com/package/dsh-api-dashboard)
[](LICENSE)
**开源**(MIT)的 **DeepSeek Harness 专用**插件:多平台 API 余额 / 用量看板 —— 在 Web GUI 输入框下方实时显示各平台余额与**本会话估算消耗**。
> ⚠️ **安装或维护本插件之前,请先读 [`AGENTS.md`](AGENTS.md)** —— 数据准确性红线、踩过的坑、安装姿势对照都在那里。
> 本插件深度绑定 DeepSeek Harness 的客户端与宿主 API,**只能在 DSH 里运行**(手机版 DSHA 与桌面版同框架)。
## 界面预览
**余额条**常驻在输入框下方;会话里有子代理时,下面会多一行**可横滑的消耗胶囊**(顺序 = 创建顺序,长按看详情)。
<a href="docs/screenshots/1-balance-bar.webp"><img src="docs/screenshots/1-balance-bar.webp" width="100%" alt="输入框下方的余额条"></a>
<a href="docs/screenshots/2-subagent-row.webp"><img src="docs/screenshots/2-subagent-row.webp" width="100%" alt="子代理消耗行"></a>
| 看板(点余额条打开) | 大肥鱼挂件(可拖拽 / 吸附边缘) |
|:---:|:---:|
| <img src="docs/screenshots/3-dashboard.webp" width="300" alt="看板"> | <img src="docs/screenshots/6-whale-tab.webp" width="300" alt="大肥鱼"> |
| **设置 · 基础** | **设置 · 大肥鱼** |
| <img src="docs/screenshots/4-settings-basic.webp" width="300" alt="设置基础"> | <img src="docs/screenshots/5-settings-whale.png" width="300" alt="设置大肥鱼"> |
## 功能
- **三层 UI**:状态条(输入框下方)→ 看板抽屉(点状态条)→ 平台详情(点卡片 ⓘ)
- **峰谷趣味计费**:DeepSeek 工作日 9:00-12:00 / 14:00-18:00 显示 ☀️ 梁文峰,其余时间与周末 🌙 梁文谷(半价)
- **三色阈值灯**:绿 / 黄 / 红,阈值可自定义;余额首次跌破预警线自动推送通知
- **会话消耗估算**:按模型单价折算;混合币种两段显示 `~¥3.40+$12.50`,**不做汇率折算合并**
- **子代理消耗**:子代理单独成行、可横滑,长按看完整详情
- **大肥鱼挂件**(可选):屏幕边缘一只可拖拽的互动挂件,纯娱乐,不显示任何金额
- **自定义接入**:中转站自动探测余额接口;自建接口支持点分路径手动映射
- **配置持久化**:阈值 / 币种 / 刷新间隔(1~60 秒)/ 自定义条目都存本地状态文件,重启不丢
- **一键自更新**:设置面板内检查并安装新版本(下载 → 校验 → 备份 → 替换 → 失败回滚)
## 支持平台
| 分组 | 平台 |
|---|---|
| 国内 | DeepSeek、智谱 GLM、Kimi、阶跃星辰、硅基流动、MiniMax |
| 海外 | OpenRouter、Novita AI、xAI Grok |
| 其他 | 自定义中转站(自动探测余额接口)、自定义模型(手动映射) |
> OpenAI / Claude / Gemini / Groq / Mistral / Together 等**未开放余额查询接口**,面板会如实显示「未开放」,
> **不会伪造数字**。智谱按量付费账户同样没有公开余额接口(显示中性「未开放」,不标红)。
## 安装
### 手机版 DSHA(Android)—— 实测可用,照抄即可
```sh
# 1. 下载源码
curl -L "https://codeload.github.com/133563825as-ai/dsh-api-dashboard/tar.gz/refs/heads/main" \
-o /tmp/dsh-api-dashboard.tar.gz
# 2. 解压到固定位置(--strip-components=1 必须带)
rm -rf /root/dsha-api-dashboard && mkdir -p /root/dsha-api-dashboard
tar xzf /tmp/dsh-api-dashboard.tar.gz -C /root/dsha-api-dashboard --strip-components=1
# 3. 建 node_modules 软链 —— 这一步不能省(插件的 peer 依赖由宿主 DSH 提供)
ln -sfn /usr/local/lib/node_modules/@deepseek-ai/dsh/node_modules /root/dsha-api-dashboard/node_modules
# 4. 用 link: 装进 web profile(文件保持真实路径,客户端 UI 才能被框架找到)
dsh plugin --profile web add link:/root/dsha-api-dashboard
# 5. 重启 dsh web
```
> 仓库根目录的 [`install.sh`](install.sh) 把上面 5 步做完了:`sh install.sh`。
**桌面版**同理(路径换成你自己的)。npm 一行命令 `dsh plugin --profile web add dsh-api-dashboard`
在桌面版通常可用,但在**手机版 DSHA 上装完客户端 UI 不会出现** —— 原因与逐条实测对照见
[`AGENTS.md`](AGENTS.md#二安装须知ai-代理注意)。
### 升级
1. 插件设置面板 →「检查更新」→「一键自更新」,重启 `dsh web` 生效;
2. 或重跑上面第 1、2 步覆盖源码目录后重启;
3. 或 `dsh plugin --profile web remove dsh-api-dashboard` 后重新安装。
## 配置
在设置面板里调即可(保存后写入 `~/.dsh/dsh-api-dashboard.json`)。
也可以直接写 `cordis.patch.yml`:
```yaml
- id: dsh-api-dashboard
config:
safeThreshold: 50 # 绿色阈值
warnThreshold: 10 # 黄色阈值(低于它变红)
currency: CNY # 主计价货币
overseasCurrency: USD # 海外模型计价:follow | USD | CNY
refreshIntervalMs: 300000
clientPollIntervalMs: 30000
timeoutMs: 8000
```
**API Key 自动读取**,无需写进配置:先查环境变量(`DEEPSEEK_API_KEY` / `ZHIPU_API_KEY` / `MOONSHOT_API_KEY` /
`STEPFUN_API_KEY` / `SILICONFLOW_API_KEY` / `MINIMAX_API_KEY` / `OPENROUTER_API_KEY` / `NOVITA_API_KEY` / `XAI_API_KEY`),
再查 DSH 凭证系统 `~/.dsh/.credentials.yaml`。
### 官方直连 / 中转站判定
状态条显示的是「官方余额」还是「—(中转站无余额接口)」,按三层判定,优先级从高到低:
1. **用户显式名单** —— 设置面板「官方直连 provider」,写进去的一律按官方;
2. **baseURL 域名** —— 服务端读 `settings.yaml` 的 provider `baseURL`,按**域名**比对官方端点白名单;没写 baseURL 的不表态;
3. **命名约定** —— 带 `-official` / `_official` 后缀的按官方。
三层都不命中默认按**中转站**处理(宁可不显示,也不显示错的余额)。设置面板会列出当前的自动判定结果。
## 安全
- API Key 只从环境变量 / DSH 凭证系统读取,**不写进代码或仓库**;
- `/api-dashboard/config` 返回的 Key 一律 `***`;浏览器端只请求同源接口,不向第三方域名发数据;
- 本地状态文件含自定义条目的 Key,权限 `0600`,被 `.gitignore` 排除;
- 自定义模型 / 中转站的 Key 会发往**你自己填的接口地址**,请只填信任的服务;
- v1.4.1 起插件路由带鉴权闸门(无 cookie → 401,跨域 → 403)。
## 开发
- 服务端 `src/index.js`(ESM,**零依赖、零构建**);客户端 `client/client.js`(改完需重启 `dsh web`)
- 测试:`for f in test/*.mjs; do node "$f"; done`(退出码非 0 即失败)
- 改动红线、踩坑记录、发布流程:[`AGENTS.md`](AGENTS.md)、[`docs/RELEASING.md`](docs/RELEASING.md)
## 更新日志
最近一版 **v1.4.2** —— 修复 DeepSeek 多币种钱包读错(有余额的账户会一秒一跳地显示成「$0.00 · 异常」)。一版一行的完整历史见 [`CHANGELOG.md`](CHANGELOG.md)。
## License
MIT —— 见 [LICENSE](LICENSE)。大肥鱼互动挂件移植自
[MeteorNOX/DeepSeek-Balance-Whale-Widget](https://github.com/MeteorNOX/DeepSeek-Balance-Whale-Widget)(MIT),
许可副本见 [`assets/whale/LICENSE-whale-widget.txt`](assets/whale/LICENSE-whale-widget.txt)。
Install
dsh plugin --profile web add github:133563825as-ai/dsh-api-dashboard
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-api-dashboard from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.