feat: 用量改读 statusline 生产的本地快照(生产者/消费者),实时准确
原先读 statusline 的 /tmp API 兜底缓存;新版 Claude Code 走 stdin、该缓存不再刷新 → 数字过期(14% vs 实际 60%+)。改为消费「打过补丁的 claude-statusline 从 stdin 落盘的权威实时快照」: - USAGE_LOCAL_PATH 默认改指 ~/.claude/usage-snapshot.json - 修复 resets_at 解析:Claude Code stdin 给的是 epoch 数字(非 ISO),_parse_reset_ts 现兼容 epoch/ISO,否则算不出 time_pct、pace 会消失 - 仍不发任何网络请求;快照缺失/损坏 → "--" - 同步更新 CLAUDE.md / README.md 的数据源说明(生产者/消费者) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,14 +1,15 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Claude Code 用量本地读取 —— 只读 claude-statusline 落盘的用量缓存,**不发任何网络请求**。
|
||||
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-statusline(见其仓库 bin/statusline.sh 的
|
||||
「Usage snapshot for external consumers」段),它把每次从 Claude Code stdin 拿到的**权威实时**额度
|
||||
落盘到 config.USAGE_LOCAL_PATH(默认 ~/.claude/usage-snapshot.json);本模块作为消费者读取。
|
||||
|
||||
注意:新版 Claude Code 经 stdin 把额度喂给 statusline,该磁盘缓存刷新不频繁、utilization 可能滞后;
|
||||
resets_at 是绝对时间,故上层的 pace(时间维度对比)始终准确。文件缺失/损坏时抛错 → 上层回退占位 "--"。
|
||||
结构含 five_hour / seven_day,各有 utilization(已用百分比) 与 resets_at(ISO 重置时间,供上层算
|
||||
「时间已流逝%」做 pace 对比)。活跃使用时快照几乎持续刷新、准确;空闲时停在最后一次。
|
||||
文件缺失/损坏时抛错 → 上层回退占位 "--"。
|
||||
"""
|
||||
import json
|
||||
|
||||
|
||||
Reference in New Issue
Block a user