Руководство по оптимизации расходов
Руководство по оптимизации расходов¶
Писать код с Claude Code — это здорово, но если не следить за использованием, счёт может преподнести «сюрприз». Это руководство поможет понять, как формируются расходы и как разумно контролировать затраты без ущерба для эффективности.
Понимание тарификации по токенам¶
Прежде чем оптимизировать расходы, нужно понять базовую логику ценообразования — токены.
Что такое токен¶
Токен — это минимальная единица обработки текста в AI-модели. Можно представить его как «слово» модели:
- Английский язык: 1 токен ≈ 4 символа или 0,75 слова
- Китайский язык: 1 иероглиф ≈ 1-2 токена (в среднем ~1,5 токена)
- Код: имена переменных, ключевые слова и символы занимают разное количество токенов
Справочная таблица приблизительных расчётов:
| Содержимое | Приблизительно символов/строк | Приблизительно токенов |
|---|---|---|
| Краткое описание требований на китайском | 100 символов | ~150 токенов |
| TypeScript файл на 200 строк | ~5000 символов | ~1500 токенов |
| Типичный диалоговый ввод с контекстом | — | 5 000–20 000 токенов |
| Системный промпт Claude Code | — | ~8000 токенов |
Входные и выходные токены¶
При каждом взаимодействии с Claude расходы складываются из двух частей:
Общие расходы = входные токены × цена входа + выходные токены × цена выхода
Ключевой момент: цена выходных токенов обычно в 5 раз выше, чем входных. Для примера, Sonnet 4.6:
| Тип | Цена (долларов/миллион токенов) | Стоимость 1000 токенов |
|---|---|---|
| Входные | $3,00 | $0,003 |
| Выходные | $15,00 | $0,015 |
| Чтение из кэша | $0,30 | $0,0003 |
Это означает: позволить Claude генерировать объёмный текст дороже, чем предоставить много контекста.
Сколько токенов потребляет типичный диалог¶
Для Sonnet 4.6 — примерная стоимость в различных сценариях:
| Сценарий | Входные токены | Выходные токены | Ориентировочная стоимость |
|---|---|---|---|
| Простой вопрос (объяснение кода) | 3 000 | 500 | $0,017 |
| Изменение одной функции | 8 000 | 1 500 | $0,047 |
| Создание нового компонента (с чтением файлов) | 15 000 | 3 000 | $0,090 |
| Разработка сложной функциональности (много раундов) | 50 000 | 15 000 | $0,375 |
| Масштабный рефакторинг (10+ файлов) | 200 000 | 50 000 | $1,350 |
Приведённые цифры являются ориентировочными; фактические расходы зависят от объёма кода, количества раундов диалога и размера контекста.
Стратегия выбора модели¶
Правильный выбор модели — самый прямой способ экономии. Разница в ценах между моделями очень велика.
Позиционирование трёх моделей¶
| Модель | Цена входа | Цена выхода | Позиционирование |
|---|---|---|---|
| Haiku 4.5 | $1,00 | $5,00 | Лёгкая и быстрая, для простых повседневных задач |
| Sonnet 4.6 | $3,00 | $15,00 | Лучший баланс, основная модель |
| Opus 4.6 | $5,00 | $25,00 | Самая мощная, для сложных задач |
Сравнение расходов: выполнение одной и той же задачи средней сложности (вход 10K, выход 3K токенов):
- Haiku: $0,025
- Sonnet: $0,075
- Opus: $0,125
Sonnet в 3 раза дороже Haiku, а Opus в 5 раз дороже.
Принципы выбора модели¶
Повседневный выбор — Sonnet (80% задач решаются им)
Переключайтесь на Opus только в следующих случаях:
- Сложное архитектурное проектирование и технические решения
- Масштабный рефакторинг кода
- Межмодульные изменения, затрагивающие несколько систем
- Сложные баги, требующие глубокого анализа
Переключайтесь на Haiku только в следующих случаях:
- Простые преобразования форматов
- Генерация повторяющегося кода (например, CRUD-интерфейсы)
- Быстрые вопросы (на которые можно ответить одним предложением)
- Комментирование кода и создание документации
Используйте команду /model для переключения:
/model sonnet # Переключиться на Sonnet
/model opus # Переключиться на Opus
/model haiku # Переключиться на Haiku
Техники экономии через управление контекстом¶
Управление контекстом — основа оптимизации расходов. Каждый раунд диалога Claude заново отправляет всю предыдущую историю переписки, поэтому чем длиннее диалог, тем больше входных токенов в каждом раунде.
Сжатие истории с помощью /compact¶
Когда диалог длится более 10 раундов или вы замечаете замедление ответов, используйте /compact:
/compact
/compact заставляет Claude преобразовать предыдущий диалог в краткое резюме вместо полной истории. Это значительно сокращает количество входных токенов в следующем раунде.
Когда использовать:
- Диалог превысил 10 раундов
- Подзадача завершена, начинается следующая
- Качество ответов Claude снижается (признак перегрузки контекста)
Полная очистка с помощью /clear¶
При смене темы на совершенно другую смело используйте /clear:
/clear
Когда использовать:
- Переход от разработки функции A к функции B
- Отладка завершена, начинается написание нового кода
- Диалог ушёл в сторону, хотите начать заново
Цена без /clear:假设之前的对话历史有 50K tokens,换个话题后每一轮对话你都在白白为这 50K tokens 买单。以 Sonnet 计算,每轮额外花费 $0.15。对话 10 轮就浪费了 $1.5。
Цена отказа от /clear:假设之前的对话历史有 50K токенов, после смены темы каждый раунд диалога оплачивается эти 50K токенов впустую. По тарифам Sonnet каждый раунд стоит дополнительно $0.15. За 10 раундов диалога потеря составляет $1.5.
Точечное использование @ для ссылок¶
Разница в стоимости между тем, чтобы Claude сам искал файлы и когда вы напрямую ссылаетесь на них, огромна:
# Дорого! Claude может просмотреть десятки файлов, чтобы найти нужный код
"Помоги изменить валидацию email в логике регистрации пользователя"
# Дёшево! Напрямую укажите Claude, где что
"Измени регулярное выражение в методе validateEmail файла @src/services/auth-service.ts"
Когда вы знаете, какой файл нужно изменить, всегда используйте @ для прямой ссылки. Позволять Claude искать самостоятельно не только дороже, но и результат может быть неточным.
Исключение больших файлов с помощью .claudeignore¶
Убедитесь, что следующие типы файлов добавлены в .claudeignore:
# Эти файлы, если будут прочитаны Claude, потребляют огромное количество токенов
node_modules/ # Десятки тысяч файлов
dist/ # Результаты сборки
*.min.js # Минифицированный JavaScript
*.sql # Дампы базы данных
*.csv # Файлы данных
package-lock.json # Lock-файл (огромное содержимое)
pnpm-lock.yaml # Lock-файл
yarn.lock # Lock-файл
Реальный случай: Один пользователь обнаружил аномально высокие расходы и выяснил, что Claude при поиске кода прочитал SQL-дампа файл на 50 МБ — за один раз было потреблено около 15 млн токенов (~$45 за входные данные).
Использование механизма кэширования¶
Prompt Caching — это очень важная функция экономии в Claude API.
Что такое Prompt Caching¶
Когда вы ведёте многораундовый диалог, каждый раунд заново отправляет всё предыдущее содержимое. Без кэширования каждый раз тарифицируется по полной цене входных токенов. С кэшированием:
- Первая отправка: по обычной цене входа (цена записи в кэш немного выше)
- Последующие отправки: совпадающее содержимое попадает в кэш, оплачивается по цене чтения из кэша (всего 1/10)
Для примера, Sonnet 4.6:
| Тип | Цена/миллион токенов | По сравнению с обычным входом |
|---|---|---|
| Обычный вход | $3,00 | 100% |
| Запись в кэш | $3,75 | 125% |
| Чтение из кэша | $0,30 | 10% |
То есть при попадании в кэш оплачивается только 1/10 стоимости.
Как эффективно использовать кэширование¶
Кэширование работает автоматически, но можно выработать привычки для повышения命中率 кэша:
Поддерживайте связность диалога:
# Хорошая привычка: продолжайте разработку одной функции в одном диалоге
> "Создай базовую структуру UserService"
> "Добавь метод getUserById" # Предыдущее содержимое попадает в кэш
> "Добавь метод updateUser" # Предыдущее содержимое попадает в кэш
> "Добавь unit-тесты" # Предыдущее содержимое попадает в кэш
# Плохая привычка: делать /clear после каждого предложения
> "Создай базовую структуру UserService"
> /clear
> "Добавь метод getUserById в UserService" # Кэширование не работает
> /clear
> "Добавь метод updateUser в UserService" # Кэширование не работает
Не изменяйте CLAUDE.md слишком часто:
Содержимое CLAUDE.md отправляется в каждом раунде диалога. Если содержимое стабильно, оно долго остаётся в кэше. Частые изменения приводят к промаху кэша.
Разумное время для /compact:
/compact заменяет историю, что приводит к недействительности кэша. Поэтому не используйте его слишком часто — только когда диалог действительно стал слишком длинным.
Насколько эффективно кэширование¶
假设一次 10 轮对话,每轮输入约 20K tokens(包含历史):
假设 10-раундовый диалог, каждый раунд ~20K входных токенов (включая историю):
| Без кэша | С кэшем (90% попаданий) | |
|---|---|---|
| Всего входных токенов | 200K | 200K |
| По обычной цене | 200K | 20K |
| По цене кэша | 0 | 180K |
| Общие входные расходы (Sonnet) | $0,60 | $0,114 |
| Экономия | — | $0,486 (81%) |
Кэширование может сэкономить около 80% входных расходов.
Мониторинг и бюджет¶
Выработайте привычку отслеживать расходы, чтобы не тратить слишком много незаметно.
/cost — просмотр текущей сессии¶
В любой момент в Claude Code введите:
/cost
Будет показано количество потреблённых токенов и ориентировочная стоимость текущей сессии. Рекомендуется проверять после завершения каждой задачи.
QCode.cc Dashboard — просмотр истории¶
Войдите в QCode.cc консоль, на странице «Статистика использования»可以看到:
- Детализация по моделям: каждая модель вызова, количество токенов, стоимость
- Дневная/месячная сводка: графики трендов расходов
- Прогресс потребления тарифа: процент использованного лимита текущего тарифа
Рекомендуется завести привычку проверять Dashboard каждый день, чтобы вовремя обнаруживать аномальные расходы.
Рекомендации по контролю расходов¶
| Уровень использования | Рекомендуемая стратегия | Ориентировочный месячный бюджет |
|---|---|---|
| Лёгкое использование (1-2 часа в день) | В основном Sonnet | $30–80 |
| Умеренное использование (3-5 часов в день) | Sonnet + иногда Opus | $80–200 |
| Интенсивное использование (весь день разработки) | Sonnet основной + Opus для архитектурных решений | $200–500 |
Частые ловушки расходов¶
以下是几种最容易浪费 token 的情况,对照检查一下你有没有中招:
Вот самые распространённые ситуации нерационального расхода токенов — проверьте, не попадаете ли вы в них:
Ловушка 1: 直接粘贴大文件¶
Ловушка 1: Прямое вставление больших файлов¶
# Неправильный подход: вставить содержимое файла в диалог
> "检查一下我的代码:
[粘贴了 500 行代码]"
# Правильный подход: использовать @ для ссылки
> "检查 @src/services/order-service.ts 中的 createOrder 方法"
"这里粘贴 500 行代码约 1500 tokens 输入,而且每一轮对话都会重复发送这些内容。用 @ 引用同样的文件,Claude 只在需要时读取,而且读取的内容会被缓存。"
"区别:粘贴 500 行代码约 1500 токенов входных данных, 而且每一轮对话都会重复发送这些内容。用 @ 引用同样的文件,Claude 只在需要时读取,而且读取的内容会被缓存。"
"Разница: вставка 500 строк кода составляет примерно 1500 токенов входных данных, и это содержимое повторно отправляется в каждом раунде диалога. При использовании @ для ссылки на тот же файл, Claude читает его только при необходимости, а прочитанное содержимое кэшируется."
Ловушка 2: 不断重试相同的失败命令¶
Ловушка 2: Повторные попытки выполнить одну и ту же неудачную команду¶
# Неправильный подход:多次让 Claude 执行同一个失败的命令
> "运行 npm run build"
# 失败了
> "再试一次"
# 还是失败
> "再来一次"
# 正确的做法:分析失败原因,换个方式
> "运行 npm run build"
# 失败了
> "查看错误日志,分析失败原因,修复后再构建"
"每次重试都会发送完整的对话历史(包括之前所有失败的输出),token 消耗会快速累积。"
"每次重试都会发送完整的对话历史(包括之前所有失败的输出),токены будут быстро накапливаться。"
"Каждая повторная попытка отправляет полную историю диалога (включая все предыдущие неудачные выводы), что приводит к быстрому накоплению токенов."
陷阱 3:忘记 /clear 导致上下文膨胀¶
Ловушка 3: Забыли /clear, что привело к разбуханию контекста¶
这是最隐蔽的费用陷阱:
这是最隐蔽的费用陷阱:
"上午:修了一个 bug(对话积累了 30K tokens 的历史) 下午:开始写新功能,但没有 /clear 每一轮新对话都白白携带了上午的 30K tokens 历史"
"修复:养成换任务时 /clear 的习惯 /clear "现在开始开发新功能...""
这是最 скрытая ловушка расходов:
"Утром: исправили баг (история диалога накопила 30K токенов) После обеда: начали писать новую функцию, но не сделали /clear Каждый раунд нового диалога зря несёт 30K токенов истории с утра"
"Исправление: выработайте привычку делать /clear при смене задачи /clear "Теперь начинаю разработку новой функции...""
陷阱 4:用 Opus 做简单任务¶
Ловушка 4: Использование Opus для простых задач¶
# 浪费:用 Opus 生成一个简单的 interface
/model opus
> "帮我定义一个 User 接口,包含 id、name、email 字段"
# 节省:简单任务用 Haiku 就够了
/model haiku
> "帮我定义一个 User 接口,包含 id、name、email 字段"
"这个任务两个模型输出几乎一样,但 Opus 的费用是 Haiku 的 5 倍。"
"这个任务两个模型输出几乎一样,但 Opus 的费用是 Haiku 的 5 倍。"
"В этой задаче результат обеих моделей практически одинаков, но Opus стоит в 5 раз дороже Haiku."
陷阱 5:让 Claude 搜索整个项目¶
Ловушка 5: Позволить Claude искать по всему проекту¶
# 贵:Claude 可能读取几十个文件
> "找到项目中处理支付的代码"
# 便宜:告诉它大概位置
> "在 @src/services/ 目录下找到处理支付的服务"
# 最便宜:直接指定文件
> "查看 @src/services/payment-service.ts"
费用优化检查清单¶
Каждый раз, когда вы используете Claude Code, сверяйтесь с этим списком:
- [ ] Выбрана ли подходящая модель (для большинства задач — Sonnet)
- [ ] Используется ли
@для ссылок вместо вставки содержимого файлов - [ ] Выполняется ли
/clearпри смене темы - [ ] Рассматривается ли
/compact, если диалог превысил 10 раундов - [ ] Настроен ли
.claudeignoreдля исключения больших файлов - [ ] Достаточно ли чётко сформулированы требования (чтобы избежать переработки из-за недопонимания)
- [ ] Проверен ли
/costдля понимания текущего потребления
Выработав эти привычки, вы обнаружите, что расходы можно снизить на 30–50%, при этом эффективность разработки нисколько не пострадает.