集中查看各服务商编程套餐的额度与重置倒计时
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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 26 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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.预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
WangChuan7521/dsh-plan-usage
集中查看各服务商编程套餐的额度与重置倒计时
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 761已汉化DSH
68.7
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 379已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1