dsh-coding-plan-balance:在 DSH Web 输入框下方常驻显示 Coding Plan 额度

前言

在 DeepSeek Harness(DSH)里用 ctrip 模型 provider 跑对话或 agent 时,Coding Plan 的周期用量和滚动 5 小时窗口往往要另开页面或查控制台才能对齐。对话进行中若额度接近上限或 5h 窗口触顶,缺少就近反馈容易拖到请求失败才发现。下面介绍社区插件 dsh-coding-plan-balance(维护者 zq0929),它把额度做成 Web 界面输入框下方的一枚胶囊,并复用你 profile 里已为 ctrip 配置的同一条 API Key,密钥留在 Host 进程,页面只展示数字。

这是什么

dsh-coding-plan-balance 是 DSH 的联网类插件(社区目录 SkillHub 条目)。定位一句话:在 conversation.composer.dock 注册常驻胶囊,展示本计费周期已用/限额(USD)、使用百分比,以及滚动 5 小时窗口用量;数据来自 Coding Plan 上游 API,凭据与 ctrip provider 一致。当前 npm 包版本为 1.0.1,许可证 MIT(© 2026 zq0929)。

胶囊一行示例(来自仓库 README):

◔ 50 美金 · $0.13 / $50.00 · 0% · 5h $0.00 / $50.00

核心功能

界面与交互

插件通过 Client 半(client.js)向 conversation.composer.dock 注入一枚胶囊,与 DSH 自带的 activity / usage 胶囊并排,不占对话主区域。一眼可见:套餐名、周期已用/限额、百分比、5h 窗口用量。悬停可查看套餐状态、剩余额度、周期重置时间、5h 窗口结束时间、本次读取时间等细节。点击胶囊会强制拉取最新数据(?refresh=1);平时按 Host 下发的间隔自动轮询,默认 60 秒。轮询走 Host 端快照复用窗口(默认 10 秒),多个浏览器会话同时观看时,上游请求会合并,避免重复打满接口。

样式与文案分别依赖 --dsw-alias-* 主题 token(随明/暗主题)和 Client locale(中/英)。

Host 路由与 agent 工具

Host 半(index.js)解析凭据后调用上游 /api/coding-plan/quota/me、/api/coding-plan/5h-usage、/api/user/api-tokens/userinfo(周期配额必需,另两个尽力而为),归一化为一份快照,经 ctx.connection.fetch.register() 挂在 /api/coding-plan.balance。鉴权、Host/Origin 校验、浏览器会话 cookie 由 Connection 统一处理;未携带会话的请求返回 401。

同一套读取路径也注册为 agent 工具 coding_plan_balance(配置项 tool 默认为 true),可直接问「还剩多少额度」,与 UI 点击共用一份快照,没有两套逻辑。

失败时的表现

未配置 Key、网络不通或额度被阻断时,胶囊不会消失,会在原位显示原因,数字改用主题的警告/错误色。

安装与启用

任选 DSH 官方支持的安装方式之一:

  1. Web GUI:设置 → 插件 → 添加插件,填写 https://github.com/zq0929/dsh-coding-plan-balance
  2. 命令行:
dsh plugin add https://github.com/zq0929/dsh-coding-plan-balance
  1. 本地开发:克隆仓库后,在「添加插件」里填目录绝对路径;改 index.js 跟随 Loader 重组,改 client.js 跟随 Client 模块图。

安装完成后需要刷新页面,浏览器侧模块才会生效。

插件以当前 dsh 进程权限运行;安装前建议在 GitHub 查看源码与 MIT 许可证,确认符合你的环境策略。

凭据

插件不新增独立密钥配置项,默认复用 profile 里 ctrip model provider 使用的 Key,解析顺序为:

  1. config.apiKey(显式配置,优先级最高)
  2. ctx.credentials.resolve(config.apiKeyEnv) —— 覆盖进程环境变量、provider 凭据库、.env,默认环境变量名为 CTRIP_API_KEY
  3. process.env[config.apiKeyEnv]

若 provider 使用其他变量名,在 profile 的 cordis.patch.yml 里把 apiKeyEnv 改成对应名称即可。要求该 token 已绑定生效的 Coding Plan 套餐。

配置

在 profile 的 cordis.patch.yml 中按行 id 覆盖(profile 层在 bundle 层之后应用):

- id: coding-plan-balance
  config:
    apiKeyEnv: MY_CTRIP_KEY
    refreshSeconds: 120
字段 默认 说明
baseUrl https://ada-cli-go.ctripcorp.com Coding Plan API 主域名
fallbackBaseUrl http://ada-cli-golang.ctripcorp.com 主域名不可达时回退;留空关闭回退
apiKeyEnv CTRIP_API_KEY 凭据名
apiKey 空 显式密钥,优先于 apiKeyEnv
refreshSeconds 60 页面轮询间隔,小于 20 按 20 处理
cacheSeconds 10 Host 端快照复用窗口
timeoutMs 8000 单次上游请求超时
routePath /api/coding-plan.balance 页面读取额度的 Host 路由(必须以 /api/ 开头)
tool true 是否注册 coding_plan_balance 工具

典型用法

日常看额度

打开 DSH Web 对话页,在输入框下方找到 Coding Plan 胶囊。需要即时数据时点击胶囊;否则等待默认约 60 秒的自动刷新即可。悬停查看重置时间与 5h 窗口细节。

让 agent 读额度

在已启用 coding_plan_balance 工具的前提下,在对话中询问剩余额度或周期用量,agent 会走与 UI 相同的 Host 路由,返回同一份快照 JSON。

适用场景与注意

适合:已在 DSH profile 中配置 ctrip provider、使用 Coding Plan 个人套餐,且运行环境能访问 *.ctripcorp.com(内网或代理)的开发者。

限制(来自仓库 README):

  • 只读个人额度;团队套餐详情、团队 AI 代码统计等需更大权限的接口不在范围内。
  • 5 小时窗口在 source: none(尚无费用、无活动窗口)时,上游返回的窗口时间为兜底展示值,插件因此不显示「窗口结束」。
  • 上游字段 limit_usd 为 0 表示未配置限额,界面显示「不限」。
  • 仓库 CI 做静态校验(语法、清单、id、语言文件、图标),无浏览器视觉回归测试。

DSH 生态强调「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-coding-plan-balance 把 Coding Plan 周期用量与 5h 窗口收进 Web composer dock,凭据与 ctrip 共用、密钥不出 Host,并可选给 agent 同一套只读额度查询。需要安装或源码细节时,见 GitHub 仓库 与 SkillHub 目录页。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜