跳转至

成本报告

查询本地成本跟踪数据库,显示按日、按项目、按工具和按会话的支出报告。此命令假定成本跟踪钩子或插件已经向 ~/.claude-cost-tracker/usage.db 写入了使用记录。

此命令的工作方式

  1. 检查 sqlite3 是否可用。
  2. 检查 ~/.claude-cost-tracker/usage.db 是否存在。
  3. 对 usage 表执行聚合查询。
  4. 显示简洁报告;如果参数为 csv,则将最近的行导出为 CSV。

前提条件

数据库需要由本地成本跟踪器写入。如果文件不存在,请告诉用户跟踪器尚未设置,并建议先安装或启用可靠的 Claude Code 成本跟踪钩子/插件。

test -f ~/.claude-cost-tracker/usage.db && echo "Database found" || echo "Database not found"

摘要查询

sqlite3 -header -column ~/.claude-cost-tracker/usage.db "
  SELECT
    ROUND(COALESCE(SUM(CASE WHEN date(timestamp) = date('now') THEN cost_usd END), 0), 4) AS today_cost,
    ROUND(COALESCE(SUM(CASE WHEN date(timestamp) = date('now', '-1 day') THEN cost_usd END), 0), 4) AS yesterday_cost,
    ROUND(COALESCE(SUM(cost_usd), 0), 4) AS total_cost,
    COUNT(*) AS total_calls,
    COUNT(DISTINCT session_id) AS sessions
  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;
"

CSV 导出

如果用户请求 /cost-report csv,请使用显式列列表导出最新的使用记录:

sqlite3 -csv -header ~/.claude-cost-tracker/usage.db "
  SELECT timestamp, project, tool_name, input_tokens, output_tokens, cost_usd, session_id, model
  FROM usage
  ORDER BY timestamp DESC
  LIMIT 100;
"

报告格式

按以下格式整理响应:

  1. 摘要:今日、昨日、总计、调用次数、会话数。
  2. 按项目:按总成本排序的项目。
  3. 按工具:按总成本排序的工具。
  4. 最近 7 天:日期、成本、调用次数。

低于 1 美元的金额使用 4 位小数。此命令不会根据原始令牌估算费用,而是依赖跟踪器写入的预先计算好的 cost_usd 值。

来源

从 MayurBhavsar 的旧社区 PR #1304 中恢复。

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