feat: AI 用量改账户级本机采集(Claude 钥匙串/Codex RPC)+宽版 7d 合并行

- Claude:复用 Claude Code 钥匙串登录态直调 /api/oauth/usage,零依赖 statusline 与 Claude Code 进程;只读不刷新 token
- Codex:经 codex app-server JSON-RPC 读 ChatGPT 订阅的 Codex 额度池(普通聊天额度无账户级途径,右块改名 Codex Usage)
- 两路采集共用 TTL 缓存+失败退避(CLAUDE_USAGE_TTL/CODEX_USAGE_TTL,语义同 WEATHER_TTL),推送端两路独立上报
- E1002:Claude 7d 与 fable 7d 合并为一行(单边框内上下对半实心,数字取较大者)、标签去 all 前缀、空值按 00% 00 占位等宽
- E1002/网页版:今日实时环比同比改涨绿跌红,与 K 线一致

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-09-14 14:08:21 +08:00
parent 2015947812
commit 7378d6bb88
15 changed files with 561 additions and 108 deletions

View File

@@ -8,8 +8,8 @@
python3 main.py --render-only # 只渲染生成图片不推送output/dashboard.png
python3 main.py --target e1002 # reTerminal E1002渲染 800x480 六色图 + 固定尺寸 index.html 到 output/e1002/
# 不推送(静态部署形态;动态形态见 server.py
python3 main.py --target push # 本机 Claude 用量快照(~/.claude/usage-snapshot.json推送到 server.py
# PUSH_URL + PUSH_TOKEN服务端渲染时按当前时刻现算 pace
python3 main.py --target push # 本机采集 Claude(钥匙串登录态 → /api/oauth/usage与 Codexcodex app-server RPC
# 两路账户级用量并推送到 server.pyPUSH_URL + PUSH_TOKEN服务端渲染时现算 pace
配置统一从同目录 .env 读取(见 .env.example真实环境变量优先。
"""
@@ -25,7 +25,7 @@ def main():
parser.add_argument("--render-only", action="store_true", help="只渲染,不推送")
parser.add_argument("--target", choices=("miao", "e1002", "push"), default="miao",
help="miao=喵喵固件 400x300 三色屏默认局域网推送e1002=reTerminal E1002 800x480 六色(产出静态 HTML 页);"
"push=本机用量快照推送到 server.py")
"push=本机采集 Claude/Codex 账户级用量并推送到 server.py")
args = parser.parse_args()
if args.target == "push":