🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

套餐用量面板 WangChuan7521/dsh-plan-usage

DeepSeek Harness
WangChuan752126 天前有提交已提供中文文档扫描:含敏感能力

集中查看各服务商编程套餐的额度与重置倒计时

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/7 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add WangChuan7521/dsh-plan-usage
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · model
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 26 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 9 处,展示前 9 条)
  • 发起网络请求
    client.js:181
    const response = await fetch(USAGE_PATH, { signal: AbortSignal.timeout(FETCH_TIMEOUT_MS) })
  • 发起网络请求
    client.js:190
    const response = await fetch(REFRESH_PATH, { method: 'POST', signal: AbortSignal.timeout(FETCH_TIMEOUT_MS) })
  • 读取本地文件
    lib/probe.mjs:216
    const parsed = JSON.parse(await readFile(path, 'utf8'))
  • 写入本地文件
    lib/probe.mjs:226
    await mkdir(dirname(path), { recursive: true })
  • 写入本地文件
    lib/probe.mjs:236
    await rename(temp, path)
  • 删除本地文件
    lib/probe.mjs:238
    await unlink(temp).catch(() => {})
  • 读取本地文件
    lib/credentials.mjs:73
    const parsed = JSON.parse(await readFile(path, 'utf8'))
  • 读取本地文件
    lib/credentials.mjs:154
    const refs = credentialRefsFromFile(await readFile(join(dshHome(), '.credentials.yaml'), 'utf8').catch(() => ''))
  • 发起网络请求
    lib/http.mjs:187
    response = await fetch(url, { headers: { ...headers, ...(options.headers ?? {}) }, signal: AbortSignal.timeout(timeoutMs) })
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 查看套餐额度
  • 显示重置倒计时
  • 展示用量窗口

README

由 DeepSeek 最新模型翻译生成
dsh-plan-usage DeepSeek Harness(DSH)配置档的编程套餐额度:把所有服务商的用量窗口集中到一页,在宿主进程里探测,在 Web GUI 里渲染。 $ node tools/usage.mjs CommandCode · GOAT · active 5 小时 ░░░░░░░░░░ 12% $1.68 / $14.00 · 重置 3h 05m 周 ██░░░░░░░░ 28% $9.80 / $35.00 · 重置 2d 07h 月 ███░░░░░░░ 35% $24.50 / $70.00 · 重置 16d 10h 剩余 $45.50 / 额度池 $70.00 · 本期请求 1204 · 本期消费 $24.50 密钥来源 credential-file · user_EXAMPLE…0000 (93) OpenCode Go · ok 5 小时 ░░░░░░░░░░ 11% 已用 11% · 重置 4h 12m 周 █░░░░░░░░░ 6% 已用 6% · 重置 6d 02h 月 ██░░░░░░░░ 18% 已用 18% · 重置 21d 04h 功能 - CommandCode —— 滚动 5 小时与每周上限,外加计费周期的月度额度池:金额、重置倒计时、剩余额度、本期请求消费。
展开完整文档(README 剩余 1 节)
dsh-plan-usage

DeepSeek Harness(DSH)配置档的编程套餐额度:把所有服务商的用量窗口集中到一页,在宿主进程里探测,在 Web GUI 里渲染。

$ node tools/usage.mjs
CommandCode · GOAT · active 5 小时 ░░░░░░░░░░ 12% $1.68 / $14.00 · 重置 3h 05m 周 ██░░░░░░░░ 28% $9.80 / $35.00 · 重置 2d 07h 月 ███░░░░░░░ 35% $24.50 / $70.00 · 重置 16d 10h 剩余 $45.50 / 额度池 $70.00 · 本期请求 1204 · 本期消费 $24.50 密钥来源 credential-file · user_EXAMPLE…0000 (93)

OpenCode Go · ok 5 小时 ░░░░░░░░░░ 11% 已用 11% · 重置 4h 12m 周 █░░░░░░░░░ 6% 已用 6% · 重置 6d 02h 月 ██░░░░░░░░ 18% 已用 18% · 重置 21d 04h

功能

- CommandCode —— 滚动 5 小时与每周上限,外加计费周期的月度额度池:金额、重置倒计时、剩余额度、本期请求消费。
- OpenCode Go —— 滚动 5 小时 / 每周 / 每月窗口(该套餐公布的是百分比,不是金额)。
- 设置 → 套餐用量 —— 每个服务商一张卡片,包含每次探测所用的凭证。
- 输入框胶囊 —— 跟随会话当前选中的服务商,向上展开即完整服务商列表。
- 两条仅限回环的路由 —— GET /api/dsh-plan-usage/usage 和 POST /api/dsh-plan-usage/refresh,另在 $DSH_HOME/plan-usage.json 有一份镜像。

API 密钥永远不会到达浏览器:每次探测都在宿主进程里运行,Web GUI 只从回环端点读取数字。

安装

DSH="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh"
"$DSH" plugin --profile desktop add "link:$PWD"

这会写入配置档的 package.json(依赖 + dsh.profile.bundles),并把包链接进 node_modules。之后重启 DSH:桌面应用在启动时组装配置档。

凭证

每个服务商都有自己的凭证引用。把密钥放进 harness 凭证文件,或放进同名环境变量:

$DSH_HOME/.credentials.yaml
refs:
COMMANDCODE_API_KEY: user_…
OPENCODE_GO_API_KEY: sk-…

解析链

探测密钥按固定顺序解析,并且来源会写进文档(在卡片上显示为 source · masked-key (length)),所以「用了哪把密钥」是页面上摆着的事实,不用去查:

| # | 来源 | 说明 |
| 1 | harness-record | DSH 为模型路由存储的凭证(llm-pi-ai/<provider>,kind api-key)—— 也就是 Models 页面写入的那份 |
| 2 | credentials-service | apiKeyEnv 每次请求解析时走的同一个接缝 |
| 3 | env | 以引用名作为环境变量 |
| 4 | cli-env | 服务商自带 CLI 的变量(CommandCode:COMMAND_CODE_API_KEY) |
| 5 | cli-auth-file | 服务商 CLI 自己的登录文件(CommandCode:~/.commandcode/auth.json) |
| 6 | credential-file | $DSH_HOME/.credentials.yaml → refs |
请求始终只带 一个 Authorization: Bearer <key>:先对值做规范化(去掉首尾空白,若存储的值里已带 Bearer 前缀则剥掉),所以 Bearer Bearer … 在结构上不可能出现。key 为空时完全不发请求,并报告为未配置。

失败会分类(auth / quota / rate-limit / not-found / client / server / timeout / tls / network),并带上状态码、服务商自己的错误码和错误语句——绝不返回原始 JSON 块,也绝不泄露密钥。三个端点返回同一个 401,会合并成一行,归到该服务商的卡片下。

每个轮询周期(默认 60 s)都会重新解析凭据,所以新 key 无需重启即可生效。

配置

这一行随本 bundle 的 cordis.patch.yml 一起提供;在配置档的 cordis.patch.yml 里按 id plan-usage 覆盖它:

| 字段 | 默认值 | 含义 |
| pollIntervalSec | 60 | 探测周期,15–3600 s |
| providers.<id>.enabled | true | 设为 false 可跳过某个服务商 |
| providers.<id>.apiKeyEnv | 按适配器 | 凭据引用 |
| providers.<id>.baseUrl | 按适配器 | 覆盖端点源 |

添加服务商:在 lib/providers/ 里写一个模块,导出 { id, displayName, apiKeyEnv, baseUrl, probe({ apiKey, baseUrl, request, state, config, now }) },在 PROVIDERS(lib/probe.mjs)里注册它,再在 client.js 里给它一个短代码。

输入框旁的胶囊

胶囊只显示当前会话路由到的那个服务商:

● CC GOAT · 5h 3% · 周 14% · 月 16% ▴

点击它会在胶囊上方打开面板,列出所有服务商(当前那个高亮);再次点击、点击外部或按 Esc 都会关闭。

选中项从 GUI 自己的模型目录读取——
ctx.modelDirectories.directoryFor(sessionId).store.getSnapshot().current.provider,也就是输入框模型席位渲染所用的同一份状态。读取是防御性的:会话作用域绑定之前 directoryFor 按设计会抛错(所以目录实例重建时会重试并重新解析),未知选中项会降级为中性胶囊,绝不显示其他服务商的数字。如果模型目录服务不存在,插件其余部分照常工作。

工具

node tools/usage.mjs [--json] [--watch 60] [--only commandcode] [--key commandcode=user_…]
node tools/gen-provider-config.mjs --write # regenerate provider/providers.yml from the live catalogue
node tools/install-provider-config.mjs <profile>/cordis.patch.yml # splice the marked region in

gen-provider-config.mjs 还会为 CommandCode 生成 llm-pi-ai 模型路由(它的模型列表来自 GET /provider/v1/models,并过滤出通过 /chat/completions 提供的模型),install-provider-config.mjs 会把它写进配置档里一个带标记的区域,所以重跑时是替换而不是再追加一份。

测试

sh
npm test # offline: auth/HTTP/credential chain + client rendering (no key, no network)
npm run test:live # hits the real provider APIs (skips whatever it has no key for)

- tools/test-auth.mjs —— 用桩 fetch 验证整套 HTTP 与凭证契约:Bearer 头恰好一个,Bearer Bearer 不可能出现,缺密钥时不发请求,401/403/配额/TLS/超时的分类,错误去重,以及六级凭证链路。共 102 项检查。
- tools/test-client.mjs —— 不开浏览器也能测浏览器那一半:模块契约、插槽注册、渲染、感知选中的小胶囊及其面板,还有各种降级状态。
- tools/test-host.mjs —— 对着真实 API 测宿主那一半;某个服务商没有密钥,或者上游挂了,就报 SKIP 并附上原因,这样这套测试在哪儿跑都有意义。

卸载 sh "$DSH" plugin --profile desktop remove dsh-plan-usage

说明与限制

- 探测依赖各家服务商的账户 API;哪家改了接口,对应卡片就不再出数(模型请求不受影响)。
- CommandCode 的月窗口需要同时拿到余额调用和订阅调用的结果:缺任何一个,这个窗口就直接省略,不会拿到手的那一半去算。
- Claude 模型不在 CommandCode 这条路由里 —— 它们走 Anthropic 的协议应答。
- 生成路由里的推理强度档位来自服务商自己的 CLI 表;表里没列的模型就不声明任何强度档位。

中文说明

给 DeepSeek Harness(DSH)profile 用的套餐用量插件:宿主进程用各家自己的密钥去查额度,浏览器只读数字,密钥不进浏览器。

- CommandCode:5 小时 / 周 / 月三条窗口(金额 + 重置倒计时 + 剩余额度 + 本期请求消费)
- OpenCode Go:rolling / weekly / monthly 三条窗口(该套餐只有百分比)
- 设置 →「套餐用量」:每家一张卡,并显示这轮探测用的密钥来源与脱敏值
- 输入区小胶囊:只显示当前会话选中的那家,点一下向上展开全部提供商
- 密钥按六级链路解析(宿主凭证记录 → 凭证缝 → 环境变量 → 提供商 CLI 环境变量 → CLI 登录文件 → .credentials.yaml);失败按类分级,多个端点同时 401 只显示一行;换 key 无需重启

安装、配置、工具与测试见上文英文部分。npm test 不需要任何密钥即可运行。

License

MIT — see LICENSE.
预览分享卡片长什么样 ↓WangChuan7521/dsh-plan-usage
分享 · DeepSeek Harness Hub
WangChuan7521/dsh-plan-usage

集中查看各服务商编程套餐的额度与重置倒计时

回到顶部