Cost & Spend Tracking (Русский)
Что это такое (и чем это не является)
Заголовок раздела «Что это такое (и чем это не является)»OmniRoute рассчитывает стоимость каждого запроса в долларах США, умножая количество
токенов на тарифы модели. Эти значения используются на панели Затраты, в командах CLI
omniroute cost / omniroute usage, при экспорте в CSV/JSON и для бюджетов отдельных API-ключей.
«Стоимость» на панели мониторинга — это счётчик экономии, а не счёт. OmniRoute никогда не взимает с вас плату — он направляет ваши запросы провайдерам, которых вы уже подключили (ваши собственные подписки, бесплатные тарифы и API-ключи). Если «общая стоимость $290» полностью набрана на бесплатных моделях, это означает, что вы не заплатили примерно $290 платному API. Эта сумма — оценка того, сколько стоил бы тот же трафик по стандартным публичным тарифам, позволяющая увидеть, где сосредоточено использование и сколько вы экономите благодаря маршрутизации к более дешёвым или бесплатным провайдерам.
Такое объяснение приведено непосредственно в файле README проекта («„стоимость“ на панели мониторинга — это счётчик экономии, а не счёт»).
Поскольку это оценочное значение:
- Оно зависит от таблицы цен OmniRoute для каждой модели. Модель без записи о цене
добавляет
0к стоимости (в обозревателе она отображается как строка «Устаревшая / Бесплатная»). - Трафик бесплатных тарифов и подписок всё равно учитывается в расчётной стоимости — это сумма, которую вы экономите, а не задолженность.
Как оценивается стоимость
Заголовок раздела «Как оценивается стоимость»Источник цен
Заголовок раздела «Источник цен»Стоимость берётся из таблицы цен, определяемой в следующем порядке приоритета
(src/lib/pricingSync.ts):
- Пользовательские переопределения — цены, заданные вами на панели мониторинга или через
PATCH /api/pricing. - Синхронизированные внешние цены — загружаются из общедоступного файла LiteLLM
model_prices_and_context_window.json, когда синхронизация включена (хранятся в отдельном пространстве имёнpricing_synced, поэтому никогда не перезаписывают ваши переопределения). - Жёстко заданные значения по умолчанию — поставляются вместе с OmniRoute.
Синхронизация с внешними ценами выполняется только по явному согласию и по умолчанию отключена. Соответствующие переменные окружения
(см. .env.example):
| Переменная окружения | По умолчанию | Назначение |
|---|---|---|
PRICING_SYNC_ENABLED |
false |
Включить фоновую синхронизацию цен LiteLLM при запуске. |
PRICING_SYNC_INTERVAL |
86400 |
Интервал синхронизации в секундах (по умолчанию — ежедневно). |
PRICING_SYNC_SOURCES |
litellm |
Разделённый запятыми список источников (сейчас поддерживается только litellm). |
Формула стоимости
Заголовок раздела «Формула стоимости»Стоимость каждого запроса рассчитывается на основе количества токенов и тарифов за миллион токенов в
src/lib/usage/costCalculator.ts
(computeCostFromPricing / calculateCost):
- Входные токены (за вычетом чтений из кэша и токенов создания кэша) × тариф
input. - Токены чтения из кэша × тариф
cached(если он отсутствует, используется тариф входных токенов). - Токены создания кэша × тариф
cache_creation(если он отсутствует, используется тариф входных токенов). - Выходные токены × тариф
output. - Токены рассуждений × тариф
reasoning(если он отсутствует, используется тариф выходных токенов).
Все тарифы интерпретируются как доллары США за 1 000 000 токенов. Уровень обслуживания
Codex «fast»/«priority» или «flex» применяет множитель стоимости (getCodexFastCostMultiplier) —
например, при использовании flex предоставляется скидка 50% на токены, отображаемая на панели
мониторинга как экономия flex.
Сначала имена моделей нормализуются (префиксы путей провайдера, такие как openai/ или
accounts/fireworks/models/, удаляются), поэтому исторические записи по-прежнему сопоставляются с ценой.
Как записываются расходы
Заголовок раздела «Как записываются расходы»-
Стоимость каждого запроса рассчитывается после получения ответа и записывается асинхронно без ожидания результата, чтобы не увеличивать задержку для клиента. Расход общей квоты планируется на следующую итерацию цикла событий через
src/lib/quota/spendRecorder.ts. -
Расходы API-ключей буферизуются и записываются пакетами с помощью
SpendBatchWriter(по умолчанию интервал записи — 60 секунд, размер буфера — 1 000 записей). Настраивается с помощью:Переменная окружения По умолчанию Назначение OMNIROUTE_SPEND_FLUSH_INTERVAL_MS60000Интервал записи в миллисекундах. OMNIROUTE_SPEND_MAX_BUFFER_SIZE1000Максимальное число записей в буфере перед записью.
Значения стоимости на панели мониторинга не считываются из сохранённой для каждой строки суммы в долларах — они пересчитываются на лету из количества токенов и текущей таблицы цен при каждом запуске конечной точки аналитики. Это означает, что исправление неверной цены (и повторная синхронизация) задним числом обновляет оценки стоимости за прошлые периоды.
Панель управления: страница расходов
Заголовок раздела «Панель управления: страница расходов»Страница Расходы находится по адресу /dashboard/costs
(src/app/(dashboard)/dashboard/costs/).
Её основное представление — вкладка Обзор расходов
(src/app/(dashboard)/dashboard/costs/CostOverviewTab.tsx),
которая загружает все данные через GET /api/usage/analytics.
Что на ней отображается:
- Карточки расходов — оценочные расходы за сегодня (1d), 7d, 30d и выбранный
период. Выбор диапазона:
7d,30d,90d,all. - Основные показатели — количество запросов за период, активные провайдеры, активные модели, средняя стоимость запроса.
- Анализ расходов — сортируемая и фильтруемая таблица с группировкой по провайдеру, модели, API-ключу, учётной записи или уровню обслуживания, содержащая стоимость, количество запросов, токенов, среднюю стоимость запроса и долю от общей суммы в процентах.
- Использование токенов — общее количество, входные и выходные токены, а также соотношение входных и выходных токенов.
- Эффективность маршрутизации — количество резервных переключений, частота резервных переключений и охват запрошенных моделей.
- Месячный прогноз — прогноз расходов к концу месяца на основе недавнего среднесуточного значения.
- Сравнение периодов — изменение в процентах между первой и второй половинами периода.
- Графики — динамика расходов по дням, доля провайдеров (круговая диаграмма), ведущие провайдеры, ведущие модели, расходы по API-ключам, расходы по учётным записям, недельная структура использования и тепловая карта активности.
- Экспорт — загрузка данных за текущий период в формате CSV или JSON (кнопки появляются, когда имеются данные с ненулевой стоимостью).
При отсутствии тарифицируемого трафика вместо $0 в строках отображается метка «Устаревшее / Бесплатное»,
что соответствует модели отслеживания экономии.
Связанные подразделы расходов
Заголовок раздела «Связанные подразделы расходов»Раздел «Расходы» также содержит следующие страницы (все находятся в /dashboard/costs/):
- Ценообразование (
/dashboard/costs/pricing) — просмотр и переопределение цен для отдельных моделей (отображает общую вкладку «Ценообразование»). - Бюджет (
/dashboard/costs/budget) — настройка лимитов расходов для отдельных областей (отображает общую вкладку «Бюджет»). - Совместное использование квоты (
/dashboard/costs/quota-share) — пулы общих квот и представления скорости их расходования.
Конечные точки API
Заголовок раздела «Конечные точки API»Все они требуют аутентификации управления (loopback/JWT через requireManagementAuth), если
не указано иное.
Аналитика использования и расходов
Заголовок раздела «Аналитика использования и расходов»| Метод | Конечная точка | Назначение |
|---|---|---|
GET |
/api/usage/analytics |
Полная аналитика расходов и использования: сводка, динамика по дням, данные по провайдеру/модели/API-ключу/учётной записи/уровню. Параметры запроса: range, startDate, endDate, apiKeyIds, presets. |
GET |
/api/usage/utilization |
Использование квоты по каждому провайдеру с течением времени. Параметры запроса: range (1h/24h/7d/30d), provider. |
GET |
/api/usage/history |
Необработанные строки истории использования. |
GET |
/api/usage/call-logs |
Журналы отдельных запросов (модель, токены, стоимость, задержка, статус). |
GET |
/api/usage/quota |
Состояние квоты провайдера. |
GET |
/api/usage/proxy-logs |
Журналы запросов прокси-сервера. |
Бюджеты
Заголовок раздела «Бюджеты»| Метод | Конечная точка | Назначение |
|---|---|---|
GET |
/api/usage/budget |
Сводка расходов и проверка бюджета для одного API-ключа (обязательный параметр запроса apiKeyId). |
POST |
/api/usage/budget |
Настройка дневных/недельных/месячных лимитов в USD и порога предупреждения для API-ключа. |
GET |
/api/usage/budget/bulk |
Сводки бюджетов по нескольким API-ключам. |
API бюджета ограничен областью отдельного API-ключа (
apiKeyId). Лимиты, возвращаемыеGET /api/usage/budget, включаютdailyLimitUsd,weeklyLimitUsd,monthlyLimitUsd,warningThresholdи текущие итоговые значения (totalCostToday,totalCostMonth, …).
Ценообразование
Заголовок раздела «Ценообразование»| Метод | Конечная точка | Назначение |
|---|---|---|
GET |
/api/pricing |
Текущие объединённые цены (пользовательские + синхронизированные + значения по умолчанию). ?includeSources=1 позволяет увидеть источник каждой записи. |
PATCH |
/api/pricing |
Переопределение цен для { provider: { model: { input, output, cached, … } } }. |
DELETE |
/api/pricing |
Сброс цен до значений по умолчанию (область можно ограничить с помощью ?provider=&model=). |
GET |
/api/pricing/defaults |
Просмотр резервных тарифов по умолчанию за 1 млн единиц. |
GET |
/api/pricing/models |
Цены, сгруппированные по моделям. |
POST |
/api/pricing/sync |
Запуск ручной синхронизации с внешними источниками (LiteLLM). |
GET |
/api/pricing/sync |
Текущее состояние синхронизации. |
DELETE |
/api/pricing/sync |
Удаление всех синхронизированных данных о ценах. |
Другие конечные точки, связанные с расходами
Заголовок раздела «Другие конечные точки, связанные с расходами»| Метод | Конечная точка | Назначение |
|---|---|---|
GET |
/api/free-tier/summary |
Общее количество токенов бесплатной модели, использовано в этом месяце и оставшийся бесплатный лимит. |
GET |
/api/quota/pools/[id]/usage |
Использование пула с общей квотой. |
CLI OmniRoute предоставляет команды для работы с расходами, использованием и ценами (зарегистрированы в
bin/cli/commands/registry.mjs).
omniroute cost
Заголовок раздела «omniroute cost»Отчёт о расходах, агрегированный на основе /api/usage/analytics.
omniroute cost # последние 30 дней, группировка по провайдеруomniroute cost --period 7d # последние 7 днейomniroute cost --group-by model # группировка: provider | model | combo | api-key | dayomniroute cost --since 2026-06-01 --until 2026-06-13omniroute cost --api-key <key> --limit 50Столбцы: группа, запросы, входящие/исходящие токены, стоимость (USD) и доля от общей суммы в процентах. В конце
выводится строка с общей суммой (не выводится при использовании --quiet или --output json).
omniroute usage
Заголовок раздела «omniroute usage»omniroute usage analytics --period 30d [--provider <id>] # сводка расходов по каждому провайдеруomniroute usage logs [--limit 100] [--follow] [--api-key <k>] [--search <q>]omniroute usage quota [--provider <id>] [--check]omniroute usage utilization [--api-key <k>]omniroute usage history [--limit 100]omniroute usage proxy-logs [--limit 100]
# Бюджетыomniroute usage budget listomniroute usage budget get [scope]omniroute usage budget set <amount> [--scope global] [--period monthly]omniroute usage budget reset [scope]omniroute pricing
Заголовок раздела «omniroute pricing»omniroute pricing list [--provider <p>] [--model <m>] [--limit 200]omniroute pricing get <model>omniroute pricing sync [--provider <p>] [--force] # POST /api/pricing/syncomniroute pricing diff [--model <m>]omniroute pricing defaults showomniroute pricing defaults set [--input <p>] [--output <p>] [--cache-read <p>] [--cache-write <p>]
pricing defaults showсчитывает данные изGET /api/pricing/defaults. Чтобы изменить цены отдельных моделей, используйте страницу Pricing на панели управления илиPATCH /api/pricing.
Устранение неполадок
Заголовок раздела «Устранение неполадок»- Все расходы отображаются как $0 / «Legacy / Free». Для используемых моделей отсутствуют записи о ценах.
Включите внешнюю синхронизацию (
PRICING_SYNC_ENABLED=true) и выполнитеomniroute pricing syncлибо задайте цены вручную на странице Pricing или черезPATCH /api/pricing. - Цена ранее использованной модели указана неверно. Исправьте цену (переопределите её или выполните повторную синхронизацию) — расходы пересчитываются на основе количества токенов при каждом чтении аналитики, поэтому оценки обновляются ретроспективно.
- Данные о расходах отстают от реального времени. Расходы по ключам обрабатываются пакетно; уменьшите
OMNIROUTE_SPEND_FLUSH_INTERVAL_MS, если вам нужны более актуальные данные.
Чтобы узнать, как это вписывается в общую панель управления, см. Руководство пользователя и Галерею возможностей.
HagiCode
HagiCode — агентная среда разработки со структурированными процессами, параллельным выполнением несколькими агентами и интерфейсами Hero Dungeon.
Превращайте идеи в полезное ПО с более умным, быстрым и увлекательным агентным рабочим процессом.

- SmartСтруктурированные процессы превращают намерение в исполнимый путь от идеи до готового изменения.
- EfficientМультиагентные процессы параллельно продвигают исследование, реализацию и проверку.
- FunHero Dungeon делает длительную совместную разработку наглядной и увлекательной.