- 版面重排:主体左 Claude Usage(5h/7d/Fable 7d 三行),右 ChatGPT Usage(目前 mock,标「示例数据」);每行为一张用量卡:标签+F24 百分比+pace/全宽进度条/「重置 HH:MM」+「已过 NN%」 - 移除上一版的橘喵今日实时与 30 天趋势图及 trend totals 合计(业务数据留给 400×300 小屏),绿色暂不再使用 - data 用量结构新增 scoped(按模型限定额度)、reset(重置时刻文本)、updated(快照落盘时刻),新增 _usage_gpt mock 数据源,接入真实数据时保持结构替换即可 - usage_local 读取 statusline 新增的 seven_day_fable 与 updated_at;400×300 小屏 render 跳过 scoped 行 - 同步更新 CLAUDE.md 分支说明 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
34 lines
1.6 KiB
Python
34 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
"""
|
||
Claude Code 用量本地读取 —— 只读 claude-statusline 生产的用量快照,**不发任何网络请求**。
|
||
|
||
生产者/消费者模式:生产者 = 打过补丁的 claude-statusline(见其仓库 bin/statusline.sh 的
|
||
「Usage snapshot for external consumers」段),它把每次从 Claude Code stdin 拿到的**权威实时**额度
|
||
落盘到 config.USAGE_LOCAL_PATH(默认 ~/.claude/usage-snapshot.json);本模块作为消费者读取。
|
||
|
||
结构含 five_hour / seven_day / seven_day_fable(后者为 Fable 模型限定的 7 天额度,statusline 从
|
||
/api/oauth/usage 的 limits[] 转存,旧版 statusline 或 API 无该项时为 null),各有 utilization(已用百分比)
|
||
与 resets_at(重置时间,epoch 秒或 ISO,供上层算「时间已流逝%」做 pace 对比),外加 updated_at(落盘 epoch)。
|
||
活跃使用时快照几乎持续刷新、准确;空闲时停在最后一次。文件缺失/损坏时抛错 → 上层回退占位 "--"。
|
||
"""
|
||
import json
|
||
|
||
import config
|
||
|
||
|
||
def get_usage() -> dict:
|
||
"""读取本地 statusline 用量缓存并返回(含 five_hour / seven_day)。缺失/损坏时抛出。"""
|
||
with open(config.USAGE_LOCAL_PATH, encoding="utf-8") as f:
|
||
data = json.load(f)
|
||
if "five_hour" not in data:
|
||
raise RuntimeError(f"用量缓存缺 five_hour 字段:{config.USAGE_LOCAL_PATH}")
|
||
return data
|
||
|
||
|
||
if __name__ == "__main__":
|
||
d = get_usage()
|
||
for k in ("five_hour", "seven_day", "seven_day_fable"):
|
||
s = d.get(k) or {}
|
||
print(k, "util=", s.get("utilization"), "resets_at=", s.get("resets_at"))
|