BlackThunder2191026/dsh-deepseek-usage ↗★ 0
@blackthunder2191026/dsh-deepseek-usage
DeepSeek API balance in the dsh sidebar plus each turn's cost in CNY under every conversation turn 适合使用官方DeepSeek API并需要实时监控余额与单次对话成本的用户。
Install
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:BlackThunder2191026/dsh-deepseek-usageREADME
Read the full README ↗dsh-deepseek-usage
一个 DeepSeek Harness (dsh) 插件,做两件事:
- 侧边栏余额:在左下角「设置」旁边实时显示 DeepSeek 账户余额(默认每 60 秒刷新;点击可展开充值余额 / 赠送余额并手动刷新;侧栏收窄成图标栏时显示为彩色状态点)。
- 每轮对话花费:在每一轮对话底部的信息栏里额外显示这一轮花了多少钱,点击可展开三列明细(项目 / tokens / 单价)。
只适用于官方 DeepSeek(
deepseek-official) 且在带 Web 界面的 profile(desktop或web)里使用。用其他 provider 时余额读不到、也不该按 DeepSeek 价目计价。
关于安装入口(曾踩过的坑)
部分第三方桌面客户端内置的「插件市场」有一条硬性边界:只接受 包名@精确版本 这种 npm 目标,github: 源、file: 路径、裸包名一律拒绝。遇到这种客户端时,市场的报错大致是:
这个桌面客户端只能安装已发布到 npm 的插件,而该插件仅提供 GitHub 源,因此装不了——这是客户端的安装边界,不是插件或市场的问题。可以改用普通 dsh web 安装,或请插件作者发布 npm 包。
本插件现已发布到 npm(@blackthunder2191026/dsh-deepseek-usage),因此这条边界不再是问题:用「方式一」或「方式二」都能装。如果市场仍报上面的错,说明你用的市场缓存了旧目录,或你点的是插件的 GitHub 条目而不是 npm 条目。
环境要求
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows / macOS / Linux 均可(本插件不含平台相关代码,未使用任何平台专有 API) |
| dsh | 带 Web 界面的 profile(官方桌面版或 dsh web);headless / SDK profile 没有 webserver,插件不会生效 |
| Node.js | ≥ 22.19(宿主读取余额用 fetch 与 AbortSignal.timeout) |
| DeepSeek 凭据 | 官方 provider 的 API Key,存在 ~/.dsh/.credentials.yaml 的 DEEPSEEK_API_KEY,或同名环境变量 |
| 依赖 | 零运行时依赖:host 半不 import 任何包,client 半只向 dsh 的模块表要 react |
安装
包名是 @blackthunder2191026/dsh-deepseek-usage(带 scope,因为 npm 上 dsh-deepseek-usage 已被无关项目占用)。
方式一:命令行从 npm 安装(推荐)
npx @deepseek-ai/dsh plugin --profile desktop add @blackthunder2191026/dsh-deepseek-usage
装完重启 dsh。
方式二:从图形插件市场安装
市场只会把 包名@精确版本 交给客户端,所以本插件发布到 npm 之后可以从市场一键安装——在市场的搜索框里找 dsh-deepseek-usage,或直接粘贴上面的完整包名。
如果你在市场里看到过「只能安装已发布到 npm 的插件,而该插件仅提供 GitHub 源」这样的提示,说明你用的是本插件还没有 npm 版本时的市场状态,或者你点的是插件的 GitHub 条目。请改用方式一,或先确认版本。
方式三:从 GitHub 源码安装(无需 npm)
npx @deepseek-ai/dsh plugin --profile desktop add github:BlackThunder2191026/dsh-deepseek-usage
pnpm 默认会拦截 Git 依赖的构建脚本。本插件没有任何编译步骤,但仍带一个 prepare 安装钩子(tools/prepare.mjs)用于完整性检查;若安装时被拦下,按提示在该 profile 的 pnpm-workspace.yaml 里加上:
allowBuilds:
'@blackthunder2191026/dsh-deepseek-usage': true
⚠️
allowBuilds表示允许该包的安装脚本在你的机器上执行。本插件的钩子只做一件事:检查四个关键文件存在且非空,缺任何一个就拒绝安装——它不编译、不下载、不访问网络。授权前请先读一遍tools/prepare.mjs。 想更稳妥可锁定 commit:github:BlackThunder2191026/dsh-deepseek-usage#。
方式四:从 Releases 下载 tarball(无需 Git、无需 npm、无需授权脚本)
每个版本都会在 Releases 附上 blackthunder2191026-dsh-deepseek-usage-.tgz:
### ⚠️ 从旧版本(不带 scope 的 `dsh-deepseek-usage`)升级
包名换了,dsh 会把它当成**两个不同的插件**,同时装会让界面出现两套余额栏。升级前先移除旧包:
```sh
npx @deepseek-ai/dsh plugin --profile desktop remove dsh-deepseek-usage
npx @deepseek-ai/dsh plugin --profile desktop add @blackthunder2191026/dsh-deepseek-usage
## 改配置
行 id 是 `deepseek-usage`。改配置走 profile 的 `cordis.patch.yml` —— **整段替换,不是深合并**,要重述全部需要的键:
```yaml
- id: deepseek-usage
name: dsh-deepseek-usage
config:
apiKeyEnv: DEEPSEEK_API_KEY # 凭据引用名,同时作为环境变量名
baseURL: https://api.deepseek.com
currency: CNY # 余额币种;价目表也用这个币种,不做换算
balanceTtlMs: 30000 # 余额缓存时长
defaultModel: deepseek-flash # 价目表里没有的模型用哪一行
maxTurns: 300 # 单次返回的最大轮次数
models: # 元 / 百万 tokens(官方中文定价页)
deepseek-flash:
hit: { peak: 0.04, offPeak: 0.02 }
miss: { peak: 2, offPeak: 1 }
output: { peak: 8, offPeak: 4 }
deepseek-v4-pro:
hit: { peak: 0.3, offPeak: 0.15 }
miss: { peak: 9, offPeak: 4.5 }
output: { peak: 27, offPeak: 13.5 }
价格随 DeepSeek 官方调整而变,请对照 更新 models。注意别用英文页的美元价——两页不是固定汇率关系。