跳转至

成本跟踪

使用此技能,从本地 SQLite 数据库分析 Claude Code 的成本和使用历史。它面向已经拥有成本跟踪钩子或插件、并向 ~/.claude-cost-tracker/usage.db 写入使用记录的用户。

来源:从 MayurBhavsar 的社区 PR #1304 中恢复。

使用时机

  • 当用户询问“花了多少钱?”“这个会话的成本是多少?”“Token 用量是多少?”时
  • 当用户提到预算、支出限制、超额或成本管理时
  • 当用户要求按项目、工具、会话、模型或日期查看成本明细时
  • 当用户想比较今天和昨天,或查看近期趋势时
  • 当用户要求导出最近使用记录的 CSV 时

工作原理

首先检查前提条件:

command -v sqlite3 >/dev/null && echo "sqlite3 available" || echo "sqlite3 missing"
test -f ~/.claude-cost-tracker/usage.db && echo "Database found" || echo "Database not found"

如果找不到数据库,不要创建使用数据。告知用户尚未配置成本跟踪,并建议安装或启用可靠的本地成本跟踪钩子/插件。

预期的 usage 表通常包含每个工具调用或模型交互一行。列名因跟踪器而异,但以下示例假设如下:

列 含义
timestamp 使用事件的 ISO 时间戳
project 项目或仓库名称
tool_name 工具或事件名称
input_tokens 已记录时的输入 Token 数
output_tokens 已记录时的输出 Token 数
cost_usd 以 USD 预先计算的成本
session_id Claude Code 会话标识符
model 事件使用的模型

优先使用 cost_usd,而不是手动计算价格。模型价格和缓存价格会随时间变化,跟踪器应是每行价格设置的可靠来源。

示例

快速摘要

sqlite3 ~/.claude-cost-tracker/usage.db "
  SELECT
    'Today: $' || ROUND(COALESCE(SUM(CASE WHEN date(timestamp) = date('now') THEN cost_usd END), 0), 4) ||
    ' | Total: $' || ROUND(COALESCE(SUM(cost_usd), 0), 4) ||
    ' | Calls: ' || COUNT(*) ||
    ' | Sessions: ' || COUNT(DISTINCT session_id)
  FROM usage;
"

按项目成本

sqlite3 -header -column ~/.claude-cost-tracker/usage.db "
  SELECT project, ROUND(SUM(cost_usd), 4) AS cost, COUNT(*) AS calls
  FROM usage
  GROUP BY project
  ORDER BY cost DESC;
"

按工具成本

sqlite3 -header -column ~/.claude-cost-tracker/usage.db "
  SELECT tool_name, ROUND(SUM(cost_usd), 4) AS cost, COUNT(*) AS calls
  FROM usage
  GROUP BY tool_name
  ORDER BY cost DESC;
"

过去 7 天

sqlite3 -header -column ~/.claude-cost-tracker/usage.db "
  SELECT date(timestamp) AS date, ROUND(SUM(cost_usd), 4) AS cost, COUNT(*) AS calls
  FROM usage
  GROUP BY date(timestamp)
  ORDER BY date DESC
  LIMIT 7;
"

会话详情

sqlite3 -header -column ~/.claude-cost-tracker/usage.db "
  SELECT session_id,
    MIN(timestamp) AS started,
    MAX(timestamp) AS ended,
    ROUND(SUM(cost_usd), 4) AS cost,
    COUNT(*) AS calls
  FROM usage
  GROUP BY session_id
  ORDER BY started DESC
  LIMIT 10;
"

报告指南

展示成本数据时,应包含以下内容:

  1. 今日支出及与昨日的比较。
  2. 整个被跟踪数据库的总支出。
  3. 按成本排序的前置项目。
  4. 按成本排序的前置工具。
  5. 如果数据足够,会话数以及每个会话的平均成本。

金额较小时,将货币格式化为 4 位小数。金额较大时,2 位小数即可。

反模式

  • 当存在 cost_usd 时,不要从原始 Token 数估算成本。
  • 不要未经确认就假设数据库存在。
  • 不要对大型数据库执行无限制的 SELECT * 导出。
  • 不要在面向用户的回答中硬编码当前模型价格。
  • 不要推荐安装会执行任意代码的未审核钩子或插件。
  • /cost-report - 使用相同数据库的命令式报告。
  • cost-aware-llm-pipeline - 模型路由和预算设计模式。
  • token-budget-advisor - 上下文和 Token 预算规划。
  • strategic-compact - 用于减少重复 Token 支出的上下文压缩。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC