将仪表盘从「四区(时钟/天气/今日实时/30天趋势)」重构为上中下三段: - A 顶部:大时钟+日期 / 天气(定位改南京·江宁) - B 中部主角 Claude Usage:5h/7d 用量进度条 + 大号百分比 + 时间维度对比 pace (pace=用量%−时间%,超前↑红/节余↓黑,参考 claude-statusline);用量≥阈值该条转红预警 - C 底部 橘喵今日实时:三列版式对齐主分支(名F12/值F24粗/环比同比偏移 +18/+34/+64/+82) - 近30天趋势图隐藏(_trend_chart 及依赖保留、未调用,可挂回) 用量只读本地、不发网络请求:新增 usage_local.py 读取 claude-statusline 落盘的 /tmp/claude/statusline-usage-cache.json(utilization + resets_at)。utilization 可能滞后, 但 resets_at 为绝对时间,故 pace 每次按当前时间现算、始终准确;文件缺失回退 "--"。 其他: - 天气定位 秦淮→江宁(config 默认 118.840,31.953) - 进度条边框随条色(红条即红框);行内元素按墨迹竖直中心对齐(_mid) - 新增 F13/F16 字号(非整数倍,fontmode=1 保持纯色) - 全图仍严格三色(黑/白/红)、无灰阶不抖动;底部留 ~11px 下边距 - 同步更新 CLAUDE.md / README.md Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
32 lines
1.3 KiB
Python
32 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
"""
|
||
Claude Code 用量本地读取 —— 只读 claude-statusline 落盘的用量缓存,**不发任何网络请求**。
|
||
|
||
数据文件:config.USAGE_LOCAL_PATH(默认 /tmp/claude/statusline-usage-cache.json),
|
||
由已安装的 claude-statusline 写入。结构含 five_hour / seven_day,各有
|
||
utilization(已用百分比) 与 resets_at(ISO 重置时间,供上层算「时间已流逝%」做 pace 对比)。
|
||
|
||
注意:新版 Claude Code 经 stdin 把额度喂给 statusline,该磁盘缓存刷新不频繁、utilization 可能滞后;
|
||
resets_at 是绝对时间,故上层的 pace(时间维度对比)始终准确。文件缺失/损坏时抛错 → 上层回退占位 "--"。
|
||
"""
|
||
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"):
|
||
s = d.get(k) or {}
|
||
print(k, "util=", s.get("utilization"), "resets_at=", s.get("resets_at"))
|