dsh-copilot-quota:在 DSH Web 输入框旁显示 GitHub Copilot 配额

前言

DeepSeek Harness(DSH)的 Web 界面本身不提供 GitHub Copilot 用量面板。若已安装 dsh-oauth-copilot,授权与账号可用模型会保存在凭证里;Harness 往往要等到请求触发 QUOTA 或 RATE_LIMIT 类失败提示时,你才会意识到配额用尽。日常对话前想一眼看到 chat、补全、AI credit 还剩多少,就需要额外的前端展示。下面介绍社区插件 dsh-copilot-quota(维护者 vowa-antilamer),它在 composer 发送按钮一侧挂载实时徽章,用同一账号的 Copilot 内部接口拉取剩余额度。

这是什么

dsh-copilot-quota 是 DSH 的 Web 客户端插件(platform: web),当前 npm 包版本 0.1.0,许可证 MIT。一句话定位:在已登录 Copilot 授权的前提下,把当前账号的 metered 配额(含 chat、completion、AI credit 等桶)汇总成 composer 行内的小徽章;无 Copilot grant 时不渲染,避免显示不存在的计量项。

与 Harness 自带行为的关系:dsh-oauth-copilot 负责 OAuth 与 grant 存储;本插件只读凭证、代调 GitHub Copilot 内部用户接口,并把衍生数字通过同源 API 交给浏览器端展示,token 不会下发到浏览器。

核心功能

界面示例如 README 所示:Copilot 200/200,左侧圆点表示「各 metered 桶中剩余百分比的最差值」——绿色正常,≤40% 琥珀色,≤15% 红色。数字默认取 chat 桶的 remaining/total;若无 chat 则回退到第一个 metered 桶。

交互 行为
悬停 登录信息、计划与 SKU、各桶明细、配额重置日、上次刷新时间
单击 强制刷新,绕过服务端缓存
隐藏 无 Copilot grant,或某桶为 0 of 0(例如免费计划无 AI credit 池)时不展示

服务端默认缓存 GitHub 响应 5 分钟(可通过配置修改);刷新失败时界面保留上一次成功读数。客户端在 conversation.input.right 插槽挂载,约 每 2 分钟 轮询,并在窗口重新获得焦点时更新。

环境与依赖

  • DeepSeek Harness:>= 0.1.0-rc.6 且 < 0.3.0,使用 web profile(README 注明在 0.2.0-rc.2 上验证过)。
  • Node:>= 18(见 package.json engines)。
  • Copilot 登录(人工在终端完成,设计如此):
npx -y dsh-oauth-copilot login
  • GitHub 范围:仅 github.com;GitHub Enterprise 不支持,与 dsh-oauth-copilot 一致。

安装与启用

从 GitHub 安装(无需 clone 或构建):

dsh plugin --profile web add github:vowa-antilamer/dsh-copilot-quota

本地目录安装:

dsh plugin --profile web add /path/to/dsh-copilot-quota

Live profile 会自行重组(服务端路由与客户端 bundle 随即可用);请刷新浏览器页面 以加载客户端模块。若刷新后仍无徽章,再考虑重启 dsh web。

卸载:

dsh plugin --profile web remove dsh-copilot-quota

可选配置

在 profile patch 或 GUI 插件行的 config 中可设置:

- id: copilot-quota
  config:
    cacheMs: 300000   # GitHub 响应缓存时长(毫秒);0 表示禁用缓存

典型用法与自检

  1. 完成 dsh-oauth-copilot login,启动或保持 dsh web 运行。
  2. 按上文命令为 web profile 添加本插件,刷新页面。
  3. 在对话输入框右侧查看徽章;需要最新数据时单击徽章强制刷新。

不打开 GUI 时,可在本机 Harness 默认端口上探测 API(README 示例端口 3080):

curl http://127.0.0.1:3080/copilot-quota/api

实现要点(便于排查)

半部 文件 职责
Server index.js 经 ctx.credentials 读取 llm-pi-ai/github-copilot,请求 GitHub,提供 GET /copilot-quota/api
Client client.js 插槽 conversation.input.right;轮询与 focus 时拉取同源 /copilot-quota/api

服务端请求与 VS Code 使用的端点相同:

GET https://api.github.com/copilot_internal/user
Authorization: Bearer <token>

兼容 quota_snapshots(较新账号)以及 monthly_quotas + limited_user_quotas(较旧形态)。

适用场景与注意

适合:已在 DSH Web 中用 Copilot 模型、希望对话前可见剩余 chat / 补全 / AI credit,并愿意配合 dsh-oauth-copilot 维护 grant 的开发者。

局限与风险(均来自上游 README):

  • copilot_internal/user 非公开 GitHub API;响应结构变更时,错误会出现在 tooltip,而不拖垮整页 UI。
  • 徽章反映当前登录账号的配额,与 composer 里选中的模型无关。
  • 定时拉取 + 服务端缓存会导致数字相对真实用量滞后,滞后上限约为缓存窗口。
  • 插件在 当前 dsh 进程权限 下运行;安装前请自行审阅 源码与 LICENSE,社区目录 skillhub.cn 为独立生态索引,与 DeepSeek / 幻方无官方从属关系。

结尾

经过上面的步骤,你可以在 Harness Web 输入区旁持续看到 Copilot 配额,而不必等到限流错误才被动得知。更多信息见目录页 dsh-copilot-quota @ skillhub.cn 与仓库 github.com/vowa-antilamer/dsh-copilot-quota。

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

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

小夜