Руководство по оптимизации расходов

Руководство по оптимизации расходов

Писать код с 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%, при этом эффективность разработки нисколько не пострадает.

🚀
Начните с QCode — ИИ-ассистент для программистов
Официальный ретранслятор Claude Code, быстро и надёжно
Посмотреть тарифы → Создать аккаунт