dsh-glm-usage
v0.1.1
Published
DSH sidebar widget for GLM Coding Plan usage: 5h/weekly window progress bars + refresh countdown (Zhipu API) / DSH 侧边栏 GLM 用量监控
Maintainers
Readme
dsh-glm-usage
DSH(DeepSeek Harness)侧边栏 GLM Coding Plan 用量监控插件:在侧边栏底部、Cordis Plugin 按钮上方显示一条带双进度条的用量行。
GLM 5h 42% 周 18% 2h13m后刷新
████████████░░░░░░░░░░░░░░░░░░░░░░ ← 5h 滚动窗口 (绿/橙/红)
█████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ← 周窗口
[🔌 Cordis Plugin ▾]
[⚙ 设置]- 5h 滚动窗口 + 周窗口用量百分比,按
TOKENS_LIMIT的 unit 3/6 区分 - 颜色分级:<30% 绿、30–70% 常色、70–90% 橙、≥90% 红
- 右对齐 刷新倒计时(
XhYm后刷新),本地每 30s 重算 - 每 3 分钟向智谱 API 拉取一次;窄轨(图标模式)不渲染
- 出错时整行变红显示
GLM ⚠ <原因>,悬停看详情
安装
从 npm 安装(名称 dsh-glm-usage):
dsh plugin --profile web add dsh-glm-usage或直接从 GitHub 安装:
dsh plugin --profile web add github:caimaoy/dsh-glm-usage或本地路径(开发模式,link: 链接,改代码重启即生效):
dsh plugin --profile web add /path/to/dsh-glm-usage安装后重启 DSH(dsh web)。dsh plugin 是 pnpm 转发器:声明了 dsh.bundle 的包会自动加入 profile 的组合层栈,本包的 cordis.patch.yml 随之组合进宿主 composition——重启持久,不再像动态插件那样进程重启即失。
配置
需要一个智谱 API Key(与 GLM Coding Plan 同账号):
# 方式一: DSH 凭据 (~/.dsh/.env)
echo 'ZHIPU_API_KEY=你的key' >> ~/.dsh/.env
# 方式二: 环境变量 (启动 dsh 的 shell 里)
export ZHIPU_API_KEY=你的keyKey 只在宿主进程内使用,经 HTTPS 直发 open.bigmodel.cn,不进命令行、不落日志。
结构
| 文件 | 作用 |
|------|------|
| lib/index.js | host 半:glmUsage Typert Remote 服务(SRC 模式),原生 fetch 直连智谱配额端点 |
| lib/client.js | client 半:window.__ModuleLoader__ CJS 工厂,经 connection.rpc.call('/api','glmUsage/usage') 拉数,渲染进度条 |
| cordis.patch.yml | 组合行:- insert: [{id: glm-usage, name: dsh-glm-usage}] |
| package.json | dsh.bundle.patch 声明(进层栈)+ dsh.client(web 平台 client 面) |
技术要点(踩坑沉淀)
- Remote 方法标记:Node 22 无原生装饰器,
lib/index.js手工复刻 TS 编译产物__esDecorate的效果——调用Remote('usage')返回的装饰器,喂入等价 decorator context,在构造函数里以实例为 this 重放其 initializer,把方法标记进 typert-protocol 的模块私有 markers 表(SRC 发现的唯一来源)。 - client 面免代码生成:不走生成式 strict 描述符,直接
ctx.get('connection').rpc.call('/api', 'glmUsage/usage', {args:{}}),信封{ok,value|error}自己解。 - 独占一行:槽容器是横向 flex 不换行,badge 自身
width:100%;自有类.glmu-row(flex:0 0 100% !important+ 不可压缩)是关键,inline 样式的flex-basis:100%会被容器 shrink 挤断行。 - host 结果必须 lossless JSON(缺失字段用
null,不能undefined)。
卸载
dsh plugin --profile web remove dsh-glm-usage仓库内容与 npm 包内容
npm 包(files 字段控制)只含运行所需:lib/、cordis.patch.yml、README.md、LICENSE。
GitHub 仓库额外保留开发史料:packages/v3–packages/v7(本插件的动态 Cordis 插件演进史,会话内 define/run、进程重启即失)、SPEC.md(最初实现规格)、reference/pi-glm-usage.ts(参考实现)。它们不随 npm 分发。
License
MIT — 与 pi-glm-usage 一致
