cost-tracker
Показывает статистику сессии при завершении: токены, время работы, примерная стоимость.
Описание
Простым языком
Claude Code стоит денег — каждый запрос это токены. Легко потратить несколько часов и не понять: а что вообще было сделано? Этот хук при завершении сессии показывает итог: сколько длилась работа, сколько коммитов, какие файлы.
Это как квитанция на кассе: заплатил — получи чек. Видишь: 47 минут, 4 коммита, 8 файлов. Хорошая сессия или нет — сам решаешь.
Что делает
Хук cost-tracker показывает статистику сессии при её завершении: количество изменённых файлов, продолжительность работы, количество коммитов. Помогает осознанно тратить токены и выбирать между Opus и Sonnet.
Cost-awareness — один из ключевых паттернов вайбкодера. Нужно знать: эта сессия стоила X — оно того стоило?
Когда срабатывает
Триггер: Stop — при завершении сессии Claude Code. Условие: всегда. Действие: выводит статистику в консоль.
Установка
- Добавь конфиг
Stopв.claude/settings.json - Создай
~/.claude/hooks/cost-tracker.shс правамиchmod +x - Для точного учёта времени: сохраняй метку старта через
PreToolUse(опционально)
Конфиг settings.json
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/cost-tracker.sh"
}
]
}
]
}
}Скрипт хука
#!/bin/bash
# cost-tracker.sh — статистика завершённой сессии
# Stop: при выходе из Claude Code
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"
echo ""
echo "━━━ SESSION STATS ━━━"
START_FILE="/tmp/claude-session-start-${PPID}"
if [ -f "$START_FILE" ]; then
START=$(cat "$START_FILE")
END=$(date +%s)
DURATION=$((END - START))
MINUTES=$((DURATION / 60))
SECONDS=$((DURATION % 60))
echo "Время: ${MINUTES}мин ${SECONDS}сек"
rm -f "$START_FILE"
fi
if git -C "$PROJECT_DIR" rev-parse --is-inside-work-tree &>/dev/null; then
CHANGED=$(git -C "$PROJECT_DIR" diff --name-only 2>/dev/null | wc -l | tr -d ' ')
STAGED=$(git -C "$PROJECT_DIR" diff --cached --name-only 2>/dev/null | wc -l | tr -d ' ')
COMMITS=$(git -C "$PROJECT_DIR" log --oneline --since="3 hours ago" 2>/dev/null | wc -l | tr -d ' ')
echo "Изменено: ${CHANGED} файлов (незакоммиченных)"
echo "Staged: ${STAGED} файлов"
echo "Коммитов: ${COMMITS} за последние 3 часа"
if [ "$COMMITS" -gt 0 ]; then
echo ""
echo "Коммиты сессии:"
git -C "$PROJECT_DIR" log --oneline --since="3 hours ago" 2>/dev/null
fi
fi
BACKUPS=$(ls "$PROJECT_DIR/.backups/"*.bak 2>/dev/null | wc -l | tr -d ' ')
if [ "$BACKUPS" -gt 0 ]; then
echo "Бэкапов: ${BACKUPS} файлов в .backups/"
fi
echo "━━━━━━━━━━━━━━━━━━━"
echo ""Примеры работы
Пример вывода при завершении продуктивной сессии:
━━━ SESSION STATS ━━━
Время: 47мин 23сек
Изменено: 0 файлов (незакоммиченных)
Staged: 0 файлов
Коммитов: 4 за последние 3 часа
Коммиты сессии:
a3f91c2 feat: добавить страницу /framework/[slug]
b12e4d7 feat: API для скачивания фреймворка
c98a1f3 fix: TypeScript ошибки в DownloadButton
d45b2e1 chore: миграция Payload для Frameworks
━━━━━━━━━━━━━━━━━━━Что показывает
- Продолжительность сессии (минуты и секунды)
- Количество незакоммиченных изменений
- Количество staged файлов
- Список коммитов за последние 3 часа
- Количество бэкапов если используется backup-before-edit
Настройка под себя
- Добавь запись статистики в
~/.claude-sessions.logдля анализа трендов - Интегрируй с Telegram ботом для уведомления о завершении со статистикой
- Добавь вывод размера
node_modulesесли он рос в сессии - Комбинируй с notify-done для звука и статистики одновременно
Нельзя управлять тем, что не измеряешь. cost-tracker — это дашборд вайбкодера: был ли я продуктивен сегодня?
> Пока нет комментариев
Связанный контент
Похожие инструменты
/bug-fix
Quick Fix mode: определи баг -> исправь -> проверь -> коммить. Без brainstorm и планирования.
Открыть →/ship
Полный Feature pipeline: brainstorm -> план -> одобрение -> реализация -> тесты -> коммит.
Открыть →/done
Финализация задачи: AI_NOTES, cost-tracker, QA-проверки. Фиксирует что сделано и запускает финальный ревью.
Открыть →/end
Завершение сессии с сохранением прогресса. Обновляет CLAUDE.md, фиксирует незакоммиченные изменения.
Открыть →