# Как отслеживать лимиты и квоты ИИ-сервисов: TokenBar для Codex, Claude и Cursor

> AI Release · @ai_release1 · https://ai-release.org/guides/kak-otslezhivat-limity-i-kvoty-ii-servisov-tokenbar-dly.html

## TL;DR
- Время выполнения: 25–30 минут
- Уровень сложности: Basic
- Понадобится: Node.js и npm (версии, поддерживаемые TokenBar, сверьте с документацией), `jq`, терминал bash или PowerShell, аккаунты в Codex, Claude и Cursor с доступом к странице использования, ~50 МБ свободного места

## Требования и подготовка
- ОС: macOS, Windows 11 (PowerShell 7) или Linux — любая, где работает Node.js.
- Права: возможность ставить глобальные npm-пакеты (`npm install -g`) без `sudo` либо с ним.
- Node.js + npm: проверить, что установлены, до установки TokenBar.
- `jq` — консольный парсер JSON; нужен, чтобы читать снимок квот в скрипте. Установка: `brew install jq` (macOS) / `sudo apt install jq` (Ubuntu) / `winget install jqlang.jq` (Windows).
- Доступ к страницам использования (Usage) в личных кабинетах Codex, Claude и Cursor — оттуда берутся цифры для базовой линии.
- Свободное место: не менее 50 МБ под пакет и журналы.

**Пример:** проверка, что `jq` уже стоит — `jq --version`. Если в ответ приходит `command not found` (bash) или `jq : Имя "jq" не распознано` (PowerShell), ставьте по команде выше.

## Шаг 1. Инвентаризация сервисов и фиксация базовой линии

**Что сделать:** создать рабочую папку, проверить окружение и записать текущие показатели расхода по каждому сервису в файл `quota.json`.

**Зачем:** базовая линия — это снимок «сколько уже израсходовано» на старте. Без него через неделю невозможно понять, растёт расход или нет, и не с чем сверять данные TokenBar.

**Как проверить:** команда `cat quota.json | jq .` печатает ваш объект без ошибок парсинга.

```bash
mkdir -p ~/quota-monitor && cd ~/quota-monitor
node -v
npm -v
jq --version
```

Ожидаемый результат: три строки, каждая содержит номер версии. Если хоть одна команда отвечает `command not found`, дальше идти нельзя — установите компонент.

Создайте файл `quota.json` в папке `~/quota-monitor`. Поля `used` (израсходовано) и `limit` (потолок) заполните цифрами со страницы использования соответствующего сервиса; нули ниже — заглушки, а не реальные лимиты:

```json
{
  "checked_at": "2025-01-15T10:00:00Z",
  "providers": {
    "codex":  { "used": 0, "limit": 0 },
    "claude": { "used": 0, "limit": 0 },
    "cursor": { "used": 0, "limit": 0 }
  }
}
```

**Пример:** если панель Cursor показывает «израсходовано N из M запросов», впишите `"used": N, "limit": M`. Единицы измерения (запросы, токены, кредиты) у каждого провайдера свои — не смешивайте их в одном счёте, но и не приводите к общему знаменателю: скрипт считает проценты внутри каждого провайдера отдельно.

Почему это работает: плоский JSON с одинаковой структурой по трём провайдерам дальше читается одной командой `jq`, без ручного разбора разных форматов вывода.

## Шаг 2. Установка TokenBar и подключение Codex, Claude, Cursor
![Иллюстрация к разделу «Шаг 2. Установка TokenBar и подключение Codex, Claude, Cursor»](https://ai-release.org/guides/img/kak-otslezhivat-limity-i-kvoty-ii-servisov-tokenbar-dly-ru-2.jpg?v=1792918836)


**Что сделать:** поставить CLI TokenBar глобально, создать конфигурационный файл и перечислить в нём три провайдера.

**Зачем:** TokenBar — консольная утилита, которая сводит показатели лимитов и квот нескольких ИИ-сервисов в один снимок. Без него вы открываете три разные панели и вручную переносите цифры.

**Как проверить:** `tokenbar --help` печатает список команд, а `tokenbar providers` (или аналогичная команда вашей версии) показывает три подключённых провайдера.

```bash
npm install -g <имя-пакета-tokenbar>
tokenbar --help
```

Точное имя npm-пакета, набор флагов и поддерживаемые версии Node.js — **сверьтесь с документацией TokenBar**: в открытых источниках канала они не приводились, поэтому подставлять конкретику отсюда нельзя.

Конфигурация. Типовой путь для CLI-утилит на Linux/macOS — `~/.config/tokenbar/config.json`; на Windows — `%APPDATA%\tokenbar\config.json`. Фактический путь и имена ключей сверьте с документацией, логика остаётся той же:

```json
{
  "providers": ["codex", "claude", "cursor"],
  "refresh_interval_min": 15,
  "warn_threshold_pct": 80
}
```

- `providers` — список сервисов, которые опрашиваются.
- `refresh_interval_min` — как часто обновлять снимок, в минутах.
- `warn_threshold_pct` — порог предупреждения в процентах: при 80 % расхода строка помечается как проблемная.

Если сервис требует отдельный ключ, положите его в переменную окружения перед запуском. Имя переменной сверьте с документацией — не угадывайте:

```bash
export TOKENBAR_CLAUDE_KEY="<ваш-ключ>"
```

**Пример:** после установки выполните `tokenbar --help` и найдите в выводе команду выгрузки в JSON (обычно содержит слово `export` или `json`). Она понадобится на следующем шаге. Если такой команды нет — сверьтесь с документацией, возможно, снимок сохраняется автоматически в файл, путь к которому указан в справке.

Почему это работает: TokenBar обращается к каждому провайдеру по его учётным данным и складывает ответы в один файл-снимок; вы читаете один JSON вместо трёх панелей. Как связать такие CLI с другими агентами в одном рабочем окружении, разобрано в гайде [как превратить чёлку MacBook в пульт управления ИИ-агентами](https://ai-release.org/guides/kak-prevratit-chelku-macbook-v-pult-upravleniya-ii-agen.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

## Шаг 3. Проверка работы: снимок квот и оповещение по порогу
![Иллюстрация к разделу «Шаг 3. Проверка работы: снимок квот и оповещение по порогу»](https://ai-release.org/guides/img/kak-otslezhivat-limity-i-kvoty-ii-servisov-tokenbar-dly-ru-3.jpg?v=1792918846)


**Что сделать:** выгрузить снимок TokenBar в JSON, прогнать его через скрипт проверки порогов и поставить скрипт на расписание.

**Зачем:** сам снимок — просто файл, который никто не откроет. Скрипт превращает проценты в строки `OK`/`ALERT`, а cron или Планировщик задач запускает его без вашего участия.

**Как проверить:** скрипт печатает по одной строке на каждого провайдера; при превышении порога появляется `ALERT`.

Сохраните файл `quota-check.sh` в `~/quota-monitor` и сделайте его исполняемым:

```bash
#!/usr/bin/env bash
set -euo pipefail

SNAP="${1:-snapshot.json}"
THRESHOLD="${2:-80}"

jq -r '.providers | to_entries[] | "\(.key)\t\(.used)\t\(.limit)"' "$SNAP" |
while IFS=$'\t' read -r name used limit; do
  if [ "$limit" -le 0 ]; then
    printf 'SKIP  %s: лимит неизвестен (%s/%s)\n' "$name" "$used" "$limit"
    continue
  fi
  pct=$(( used * 100 / limit ))
  if [ "$pct" -ge "$THRESHOLD" ]; then
    printf 'ALERT %s: %s%% (%s/%s)\n' "$name" "$pct" "$used" "$limit"
  else
    printf 'OK    %s: %s%% (%s/%s)\n' "$name" "$pct" "$used" "$limit"
  fi
done
```

```bash
chmod +x quota-check.sh
./quota-check.sh snapshot.json 80
```

Пример вывода (значения условные, подставьте свои из снимка):

```
OK    claude: 41% (41/100)
OK    codex: 62% (62/100)
ALERT cursor: 84% (420/500)
```

Расписание. Строка для cron — проверка каждые 30 минут с дописыванием в журнал:

```bash
crontab -e
*/30 * * * * /home/<пользователь>/quota-monitor/quota-check.sh /home/<пользователь>/quota-monitor/snapshot.json 80 >> /home/<пользователь>/quota-monitor/quota.log 2>&1
```

Чек-лист приёмки:

- [ ] `tokenbar --help` отрабатывает без ошибок
- [ ] в конфиге перечислены все три провайдера
- [ ] `snapshot.json` содержит блок `providers` с ключами `codex`, `claude`, `cursor`
- [ ] `./quota-check.sh snapshot.json 80` печатает три строки
- [ ] строка с `ALERT` появляется при пороге ниже текущего расхода
- [ ] запись видна в `crontab -l`

Почему это работает: `jq` разворачивает объект `providers` в три строки «имя → used → limit», а цикл `while` считает процент целочисленно и сравнивает с порогом. Никаких внешних зависимостей, кроме `jq`, у проверки нет. Если вы держите ИИ-агентов в общем репозитории и хотите контролировать ещё и безопасность их кода, пригодится гайд [как проверить код от Cursor и Claude Code на уязвимости](https://ai-release.org/guides/kak-proverit-kod-ot-cursor-i-claude-code-na-uyazvimosti.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

## Возможные проблемы и решения

**Проблема. Команда TokenBar не находится после установки**
- Ошибка: `bash: tokenbar: command not found`
- Причина: глобальный каталог npm-бинариев не входит в `PATH` (частая ситуация на macOS с nvm или при установке Node.js без перелогина).
- Решение: узнать каталог и добавить его в `PATH`:
```bash
npm prefix -g
export PATH="$(npm prefix -g)/bin:$PATH"
```
Затем перезапустите терминал и повторите `tokenbar --help`.

**Проблема. Скрипт не видит провайдеров**
- Ошибка: `jq: error (at snapshot.json:1): Cannot index string with string "providers"`
- Причина: в файл попал не JSON-снимок, а текст сообщения или вывод панели; `jq` прочитал его как строку.
- Решение: проверьте структуру и пересоздайте снимок командой выгрузки из TokenBar:
```bash
head -c 120 snapshot.json
jq -e '.providers | type == "object"' snapshot.json
```
Вторая команда должна вернуть `true`. Если вернула `false` или ошибку — снимок пересоздан неверно, сверьтесь с документацией по флагу выгрузки.

**Проблема. Проценты считаются как 0 % или деление падает**
- Ошибка: `ALERT codex: 0% (0/0)` либо `division by zero`
- Причина: поле `limit` осталось нулевым — цифру не перенесли из панели или провайдер не отдал потолок квоты.
- Решение: в приведённом скрипте уже стоит защита `[ "$limit" -le 0 ]`, она печатает `SKIP ...: лимит неизвестен`. Заполните `limit` вручную из страницы использования сервиса и перезапустите `./quota-check.sh snapshot.json 80`.

## Резюме и следующие шаги
Вы получили три вещи: конфиг TokenBar с подключёнными Codex, Claude и Cursor, файл `snapshot.json` с текущими процентами расхода и скрипт `quota-check.sh`, который сам пишет `ALERT` в журнал по расписанию. Дальше настройте порог под свою нагрузку (например, 70 % для сервиса, который вы расходуете быстрее всего) и пересматривайте базовую линию `quota.json` раз в месяц.

## FAQ

**Нужен ли TokenBar, если я пользуюсь только одним сервисом?**
Нет, для одного сервиса достаточно `quota.json` и скрипта из Шага 3 — они не зависят от TokenBar. TokenBar окупается удобством, когда сервисов два и больше.

**TokenBar заменяет официальные панели биллинга и оплаты?**
Нет. Он показывает лимиты и квоты, а баланс, счета и списания подтверждайте в кабинете провайдера. Расхождения трактуйте в пользу кабинета.

**Как часто обновлять снимок квот?**
Ориентир — интервал, указанный в `refresh_interval_min` (в примере 15 минут), а проверку порогов в cron можно ставить реже, раз в 30 минут. Для активной работы с агентами интервал уменьшают; конкретные ограничения по частоте запросов сверьте с документацией TokenBar.

**Хранит ли TokenBar мои ключи и где они лежат?**
Точный ответ зависит от версии и способа установки — сверьтесь с документацией TokenBar. Практическое правило: держите ключи в переменных окружения или в файле конфигурации с правами `600` и не коммитьте их в git.
