Claude 使用审计
四个本地脚本,基于 ~/.claude/projects/**/*.jsonl(主会话和 subagents/)。每次 API 调用按 (message.id, requestId) 去重;费用按模型使用公开 API 价格计算,因此在订阅模式下显示为“API 等价”,作为计划配额的代理指标。
运行
SKILL_DIR="${CLAUDE_SKILL_DIR}/scripts"
OUT=$(mktemp -d) # 或会话暂存区
python3 -I "$SKILL_DIR/usage.py" "$OUT/usage.json" # 总量、日使用量、分模型、分项目、分会话、缓存重建、工具、技能、代理
python3 -I "$SKILL_DIR/context_sources.py" "$OUT/usage2.json" # Bash 命令系列按输出大小、完整与部分 Read、SDK 入口点、空闲间隙
python3 -I "$SKILL_DIR/cost_split.py" # 按代币类型分解成本、上下文超过 200k/300k 时的缓存读取税
python3 -I "$SKILL_DIR/history.py" "$OUT/hist.json" # 每周提示词、每次提示成本、斜杠命令、会话、小时×工作日(默认 90 天)
窗口:环境变量 AUDIT_DAYS=90(默认 30,history.py 默认 90)。转录文件只保留到 cleanupPeriodDays(在设置中可设为 120;Claude Code 默认为 30),而 ~/.claude/history.jsonl 保留每条提示词:超过保留期的数据只有提示词级别的指标是真实的。将转录文件部分被删除的周标记为“部分”,永远不要标记为低成本。
引用美元金额前
价格存储在三张表中:usage.py 和 history.py 中的 PRICES,cost_split.py 中的 P。先对照 claude-api 技能检查它们,如果缺少某个模型则修复表格(未知模型计为 $0)。
按顺序检查哪些指标
| 信号 | 字段 | 杠杆 |
|---|---|---|
| 上下文超过 200k 的调用 | ctx_cost,cost_split.py 中的 tax | 设置中的 autoCompactWindow,每个主题的 /clear |
| 冷启动恢复(空闲超过 1 小时后缓存重建) | cache_miss | cold-resume-guard.sh 钩子 |
非 CLI 入口点(sdk-py,sdk-cli) | usage2 中的 entry,sdk | 插件或钩子调起 Claude:固定其模型(安全指导使用 SG_AGENTIC_MODEL) |
| 最大的工具输出 | tool_result_kchars,bash_fam,read | 定向 Read,限制命令输出 |
| 1 小时对比 5 分钟缓存 TTL | w1h 对比 gaps 中 5-60 分钟间隙计数 | 当 5-60 分钟间隙 × 上下文 × 1.25 超过 1 小时写入的 0.75× 溢价时,保持 1 小时 |
| 子代理占比和模型 | main_sub,agents | 模式工作使用 Sonnet |
top_sessions 中的会话提示词是用户自己的文本:不要将它们放入任何共享内容中。