Releases: 2877905731/zcode-quota
Release list
zcode-quota v1.1.1
v1.1.1 — 自动补丁路径回退与服务启动诊断
更新内容
- 自动注入在无法从运行中的 ZCode 进程解析安装目录时,回退到上次成功补丁时记录的
app.asar路径,支持自定义安装目录。 - 补丁路径探测、检查或写入失败时记录到
backup/patch.log并返回失败状态。 - 数据服务启动后等待
/health检查;启动异常、子进程提前退出和超时会写入backup/quota-server.log,并保留子进程错误输出。 - README 补充
SessionStart的触发范围和日志位置。
说明
自动补丁仍由 SessionStart 触发,本版没有加入运行中的 app.asar 文件监视。如果 ZCode 更新在当前会话启动钩子之后替换了 app.asar,补丁会在下次会话启动时重新检查。
zcode-quota v1.1.0
在 ZCode 输入框正下方常驻显示当前模型 API 的剩余余额 / 套餐额度与生成速度。
余额 USD 19.55 · 速度 303 tok/s · 首字 1.6s · 缓存 99.9% · 16:47 更新
额度 5 小时 65% · 每周 15% · 速度 120 tok/s · 首字 0.8s · 16:47 更新
功能
- 输入框下方状态条:常驻一行小字,余额/额度 + 速度,不用切窗口
/quota命令:对话里输出完整报告,含按模型分组的对比- 会话启动注入:新会话自动带上一行余额/额度 + 速度,模型随时知道
- 常驻悬浮窗:置顶小窗,每 60 秒刷新,单实例保护
支持的余额 / 额度
| 服务商 | 接口 | 显示 |
|---|---|---|
| DeepSeek | /user/balance |
账户余额(多币种,含充值与赠送) |
| 智谱 / Z.ai | /api/monitor/usage/quota/limit |
Coding Plan 套餐额度:5 小时 / 每周 / 月度工具,带百分比与重置时间 |
| OpenRouter | /api/v1/credits |
剩余 credits(折算 USD) |
按 ~/.zcode/v2/config.json 里最近一次调用的 providerId 自动匹配,不用手动配。
其它服务商会提示"暂不支持自动查询"——想加一家,在 fetch_balance() 里加个分支即可。
速度指标
| 指标 | 算法 | 说明 |
|---|---|---|
| 纯解码速度 | output / (duration − ttft) |
模型真正吐字的速度,最有参考价值 |
| 含预填充速度 | output / duration |
把首字等待算进去,偏保守的下界 |
| 首字延迟 | time_to_first_token_ms |
缓存命中时很低 |
| 缓存命中率 | cacheRead / input |
越高越省钱 |
速度数据优先读 ZCode 自己的用量库 ~/.zcode/cli/db/db.sqlite(只读),
读不到时自动回退到 ~/.zcode/cli/rollout/model-io-*.jsonl。
取最近 10 次调用的中位数;按模型分组统计最近 200 次,换模型时可直接对比。
百分比保留一位小数,且不足 100% 不会显示成 100%——
缓存命中 99.899% 会如实显示99.9%,不会看起来像命中了完美缓存。
安装
- 下载
zcode-quota-v1.1.0.zip,解压到~/.zcode/local-plugins/api-quota - 双击
安装.cmd(注册插件目录 + 启动数据服务) - 双击
应用界面补丁.cmd(注入状态条,无需退出 ZCode) - 重启 ZCode
依赖:Python 3.10+(只用标准库,不需要 pip 安装任何东西)、Windows、ZCode 桌面版。
设计说明
数据服务随 ZCode 启停,不需要开机自启:SessionStart 钩子负责拉起,
ZCode 退出后服务自动停止。
界面补丁采用等长就地改写:往 app.asar 的 index.html 插入 226 字节 loader,
同时压缩等量空白,文件长度一字节不变、所有偏移不动——所以 ZCode 运行时也能安全写入。
ZCode 升级覆盖补丁后,下次启动会自动重新注入(API_QUOTA_AUTOPATCH=0 可关闭;
--restore 会写下标记,卸载后不会被自动加回来)。
安全
- 不存储任何密钥:脚本运行时从
~/.zcode/v2/config.json读取,只发给你自己配置的服务商 - 数据服务只监听
127.0.0.1,不对外网开放,不写日志 - 仓库带密钥扫描(pre-commit 钩子 + CI),全历史无密钥
- 建议在仓库设置里打开
Secret scanning和Push protection
校验
SHA256 d429bac906cef6d5930c0e834b4da7a32579783d6e3a6ec29b967d81cdbe864a
已知限制
- 界面补丁仅 Windows 有效,且属于非官方手段,不受 ZCode 支持
- 智谱的套餐额度接口是社区实测的(非官方文档),不同套餐代际返回的窗口数不一样
(V1 个人套餐可能只有 5 小时窗口),插件按实际返回渲染,不硬编码 - 纯解码速度依赖用量库里的
time_to_first_token_ms;回退模式下只有含预填充的速度 - ZCode 的
db.sqlite与 rollout 日志都是其内部实现,字段可能随版本变化,
两边都读不到时会显示"暂无调用记录",不会崩
v1.0.0
zcode-quota v1.0.0
在 ZCode 输入框正下方常驻显示当前模型 API 的剩余余额与生成速度。
余额 USD 5.06 · 速度 352 tok/s · 首字 1.7s · 缓存 100% · 12:27 更新
功能
- 输入框下方状态条:常驻一行小字,不用切换窗口就能看到余额和速度
/quota命令:在对话里输出完整报告,含按模型分组的对比- 会话启动注入:新会话自动带上一行余额/速度,模型随时知道
- 常驻悬浮窗:置顶小窗,每 60 秒刷新,单实例保护
指标口径
| 指标 | 算法 | 说明 |
|---|---|---|
| 纯解码速度 | output / (duration − ttft) |
模型真正吐字的速度,最有参考价值 |
| 含预填充速度 | output / duration |
把首字等待算进去,偏保守的下界 |
| 首字延迟 | time_to_first_token_ms |
缓存命中时很低 |
| 缓存命中率 | cacheRead / input |
越高越省钱 |
速度取最近 10 次调用的中位数;models 维度按最近 200 次调用分组,换模型时可直接对比。
数据来源
- 余额:服务商的计费接口(目前支持 DeepSeek 的
/user/balance) - 速度:优先读 ZCode 自己的用量库
~/.zcode/cli/db/db.sqlite(只读),
能拿到 TTFT 所以可算纯解码速度;读不到时自动回退到
~/.zcode/cli/rollout/model-io-*.jsonl。--json的source字段会显示用了哪个。 - 服务商:读
~/.zcode/v2/config.json,按最近一次调用的providerId自动匹配
安装
- 下载
zcode-quota-v1.2.0.zip,解压到~/.zcode/local-plugins/api-quota - 双击
安装.cmd(注册插件目录 + 启动数据服务) - 双击
应用界面补丁.cmd(注入状态条,无需退出 ZCode) - 重启 ZCode
依赖:Python 3.10+(只用标准库,不需要 pip 安装任何东西)、Windows、ZCode 桌面版。
设计说明
数据服务随 ZCode 启停,不需要开机自启:SessionStart 钩子负责拉起,
ZCode 退出后服务自动停止。
界面补丁采用等长就地改写:往 app.asar 的 index.html 插入 226 字节 loader,
同时压缩等量空白,文件长度一字节不变、所有偏移不动——所以 ZCode 运行时也能安全写入。
ZCode 升级覆盖补丁后,下次启动会自动重新注入(API_QUOTA_AUTOPATCH=0 可关闭;
--restore 会写下标记,卸载后不会被自动加回来)。
安全
- 不存储任何密钥:脚本运行时从
~/.zcode/v2/config.json读取,只发给你自己的服务商 - 数据服务只监听
127.0.0.1,不对外网开放,不写日志 - 仓库带密钥扫描(pre-commit 钩子 + CI),全历史无密钥
- 建议在仓库设置里打开
Secret scanning和Push protection
校验
SHA256 117030adb4f2ad754e10532e3e0a387ef3528b028d8b717b6016e300a1e8dc99
已知限制
- 余额目前只支持 DeepSeek,其它服务商会提示"暂不支持"
- 界面补丁仅 Windows 有效,且属于非官方手段,不受 ZCode 支持
- 纯解码速度依赖用量库里的
time_to_first_token_ms;回退模式下只有含预填充的速度 - ZCode 的
db.sqlite与 rollout 日志都是其内部实现,字段可能随版本变化,
两边都读不到时会显示"暂无调用记录",不会崩