成本跟踪¶
使用此技能,从本地 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;
"
报告指南¶
展示成本数据时,应包含以下内容:
- 今日支出及与昨日的比较。
- 整个被跟踪数据库的总支出。
- 按成本排序的前置项目。
- 按成本排序的前置工具。
- 如果数据足够,会话数以及每个会话的平均成本。
金额较小时,将货币格式化为 4 位小数。金额较大时,2 位小数即可。
反模式¶
- 当存在
cost_usd时,不要从原始 Token 数估算成本。 - 不要未经确认就假设数据库存在。
- 不要对大型数据库执行无限制的
SELECT *导出。 - 不要在面向用户的回答中硬编码当前模型价格。
- 不要推荐安装会执行任意代码的未审核钩子或插件。
相关¶
/cost-report- 使用相同数据库的命令式报告。cost-aware-llm-pipeline- 模型路由和预算设计模式。token-budget-advisor- 上下文和 Token 预算规划。strategic-compact- 用于减少重复 Token 支出的上下文压缩。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC