前言¶
在 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 官方支持的安装方式之一:
- Web GUI:设置 → 插件 → 添加插件,填写
https://github.com/zq0929/dsh-coding-plan-balance - 命令行:
dsh plugin add https://github.com/zq0929/dsh-coding-plan-balance
- 本地开发:克隆仓库后,在「添加插件」里填目录绝对路径;改
index.js跟随 Loader 重组,改client.js跟随 Client 模块图。
安装完成后需要刷新页面,浏览器侧模块才会生效。
插件以当前 dsh 进程权限运行;安装前建议在 GitHub 查看源码与 MIT 许可证,确认符合你的环境策略。
凭据¶
插件不新增独立密钥配置项,默认复用 profile 里 ctrip model provider 使用的 Key,解析顺序为:
config.apiKey(显式配置,优先级最高)ctx.credentials.resolve(config.apiKeyEnv)—— 覆盖进程环境变量、provider 凭据库、.env,默认环境变量名为CTRIP_API_KEYprocess.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 目录页。