Многие разработчики в последнее время используют облачные LLM для генерации программного кода, в том числе с помощью агентов. Но это вызывает как минимум две проблемы:

  1. Утечка информации: мы не знаем, какие данные LLM передаёт в облако

  2. Бесконтрольный расход токенов, особенно в случае автоматических агентов, которые запускаются в автономную работу на длительный период

Для этого есть специальные инструменты мониторинга. Например, Tokentap (бывший Sherlock) отслеживает использование токенов для LLM CLI в реальном времени на панели в консоли. Такой MitM-прокси полезен для информационной безопасности и просто для учёта расходов.


Особенности программы:

  • Отслеживание использования токенов: сколько токенов потребляет каждый запрос.

  • Мониторинг контекстных окон: визуальный индикатор показывает, сколько накопилось токенов, по сравнению с лимитом.

  • Отладка подсказок: автоматически сохраняет каждый запрос в форматах Markdown и JSON для просмотра.

  • Простая конфигурация (точнее, её отсутствие): программа работает сразу после установки, не требует сертификатов или дополнительной настройки.

Установка

Для установки Tokentap на Linux желательно сначала поставить пакеты pip и pipx. Тогда инсталляция с автоматической установкой виртуального окружения проходит проще всего:

pipx install tokentap

Как вариант, можно вручную установить из исходников, но тогда нужно будет вручную установить venv:

git clone https://github.com/jmuncor/tokentap.git
cd tokentap
pip install -e .

Затем запускаем прокси:

tokentap start

Программа предложит сохранить перехваченные промты, а затем появится консоль такого вида:

┌─────────────────────────────────────────────────────────────┐
│  TOKENTAP - LLM Traffic Inspector                           │
├─────────────────────────────────────────────────────────────┤
│  Context Usage  ████████████░░░░░░░░░░░░░░░░  42%           │
│                 (84,231 / 200,000 tokens)                   │
├─────────────────────────────────────────────────────────────┤
│  Time     Provider    Model                      Tokens     │
│  14:23:01 Anthropic   claude-sonnet-4-20250514   12,847     │
│  14:23:45 Anthropic   claude-sonnet-4-20250514   8,234      │
│  14:24:12 Anthropic   claude-sonnet-4-20250514   15,102     │
├─────────────────────────────────────────────────────────────┤
│  Last Prompt: "Can you help me refactor this function..."   │
└─────────────────────────────────────────────────────────────┘

Или можно сразу запустить установленную локальную LLM через прокси:

# Для Claude Code
tokentap claude

# Для Gemini CLI
tokentap gemini

# Для OpenAI Codex
tokentap codex

Пока поддерживаются три провайдера LLM, все они обычно используются для программирования из консоли, в том числе запуска агентов.

Предположим, мы установили в системе Gemini CLI и подключились к аккаунту Google. Теперь запускаем прокси командой tokentap gemini:

MitM-прокси

Схема работы прокси:

┌─────────────────────────────────────────────────────────────────┐
│  Terminal 1: tokentap start                                     │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │  HTTP Proxy (localhost:8080)                                ││
│  │  + Dashboard                                                ││
│  │  + Prompt Archive                                           ││
│  └─────────────────────────────────────────────────────────────┘│
└───────────────────────────────┬─────────────────────────────────┘
                                │ HTTP
                                │
┌───────────────────────────────┴─────────────────────────────────┐
│  Terminal 2: tokentap claude                                    │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │  Sets ANTHROPIC_BASE_URL=http://localhost:8080              ││
│  │  Runs: claude                                               ││
│  └─────────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────────┘
                                │
                                │ HTTPS
                                ▼
                      ┌───────────────────┐
                      │ api.anthropic.com │
                      └───────────────────┘

Опции при запуске:

tokentap start [OPTIONS]

Options:
  -p, --port NUM    Proxy port (default: 8080)
  -l, --limit NUM   Token limit for fuel gauge (default: 200000)

Что показывает информационная панель:

  • Зелёный индикатор: < 50% от лимита токенов

  • Жёлтый: 50-80% от лимита

  • Красный: > 80% от лимита

Каждый перехваченный запрос сохраняется в выбранный каталог в форматах Markdown (человекочитаемый формат для удобства) и JSON (исходное тело запросов API для отладки

При выходе из LLM-CLI отображается сводка сессии в таком формате:

Session complete. Total: 84,231 tokens across 12 requests.

Судя по фрагменту исходного кода, программа работает как расширение для mitmproxy, известного HTTPS-прокси.

Локальные модели

Чтобы избежать утечки информации, специалисты по безопасности рекомендуют использовать локальные модели из набора Hugging Face. Все модели на этом сайте доступны для скачивания:

Модели работают через оболочку инференса llama.ccp следующим образом:

# Использовать файл локальной модели
llama-cli -m my_model.gguf

# Скачать и запустить модель напрямую с Hugging Face
llama-cli -hf ggml-org/gemma-3-1b-it-GGUF

# Запустить OpenAI-совместимый сервер API
llama-server -hf ggml-org/gemma-3-1b-it-GGUF

Оболочка для инференса llama.ccp основана на тензорной библиотеке машинного обучения ggml, которая обеспечивает высокую производительность больших моделей на стандартном компьютерном железе. Библиотека не имеет внешних зависимостей, работает на любой аппаратной платформе и не выдвигает высоких требований к конфигурации ПК.

Несколько недель назад автор ggml Георгий Герганов объявил о том, что небольшой коллектив разработчиков теперь войдёт в состав компании Hugging Face, что гарантирует дальнейшую разработку интерфейса для локального запуска моделей ИИ (Local AI). Проекты ggml остаются открытыми и управляемыми сообществом, а дополнительное внимание в ближайшее время уделят интеграции с библиотекой transformers от Hugging Face для улучшенной поддержки моделей.

Разработчики считают, что сейчас локальный инференс «становится значимой и конкурентоспособной альтернативой облачному». Для будущей сверхмощной системы ИИ важно, чтобы она работала по распределённой модели на железе пользователей, а не в дата-центре коммерческой корпорации.


Примечание. Локальная LLM может быть установлена на компьютер даже без ведома пользователя. Например, последние версии браузера Chrome принудительно устанавливают локальную модель Gemini Nano, не предупреждая об этом.

Отключить эту опцию можно с помощью параметров Optimization Guide On Device Model и Prompt API в браузере, которые изменяются через chrome://flags/.

После этого модно удалить модель размером около 4 ГБ в папке AppData/Local/Google/Chrome/User Data/OptGuideOnDeviceModel/.

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

Комментарии (9)


  1. Bardakan
    29.03.2026 17:22

    Вырубайте свой генератор бреда!

    Многие разработчики в последнее время используют облачные LLM для генерации программного кода, в том числе с помощью агентов.

    Чтобы избежать утечки информации, специалисты по безопасности рекомендуют использовать локальные модели из набора Hugging Face.

    вы хотите считать количество потраченных токенов для облачных моделей, пишете гайд по установке, в конце которого выясняется, что нужно было использовать локальные модели. А логика где?

    Если вам нужно считать токены и сравнивать расход для локальных моделей, то зачем писать про облачные? Предлагаете облачные заменить на локальные? Так простите, их не все себе могут позволить, а предложенная вами gemma крайне тупая по сравнению с облачными моделями, которые можно запустить на том же железе.

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


    1. stalker_by
      29.03.2026 17:22

      Где вы взяли про сравнение?

      Вы просто ставите MitM proxy собираете логи для аудита, все.

      Как этим пользоваться up-to-you, хотите токены считайте, хотите сравнивайте, хотите безопасникам для анализа отдавайте. Пипец актуально в наши дни.


      1. Bardakan
        29.03.2026 17:22

        Зачем вообще считать бесплатные токены для локальных моделей? Кроме как для сравнения у меня других идей нет


        1. stalker_by
          29.03.2026 17:22

          Вы весь мой комментарий дочитали или только до середины?)))


          1. Bardakan
            29.03.2026 17:22

            По вашему комментарию я понял, что вы делаете с данными от прокси. А вопрос был зачем? Я просто пытаюсь понять целесообразность затеи. Если «для аудита», то это слишком общий термин, по которому ничего не понять без контекста


            1. stalker_by
              29.03.2026 17:22

              У вас есть чудо юдо которое что то делает «под капотом», чтобы хоть немного соответствовать SOC и/или PCI DSS вы должны хранить что оно делает и почему, кто его дернул и тд


  1. appascal
    29.03.2026 17:22

    Нейробулшит протек ближе к концу. Вычитывайте перед публикацией хотя бы


  1. CoralShark
    29.03.2026 17:22

    Вообще пофиг что там куда убежит, мне приятно с облачными работать


  1. Elbrus128
    29.03.2026 17:22

    Инструменты с сомнительной зачастую пока пользой (нейросети) уже породили людей, обслуживающих нейросети, трату кучи времени и пр. ресурсов на настройку и свистоперделки для нейросетей и кучу информационного бессодержательно дерьма, обрушившегося на людей.

    Думать над жизнью, над собой, полюбоваться 10 мин. бабочкой, севшей на краешек скамейки 99 процентам загнанного стада людей уже некогда.

    Надо бежать, выпучив глаза, генерить инфодерьмо, чтобы заработать бесполезные баллы к учётной записи на популярном сайте или бежать поглощать это дерьмо или писать никому ненужные комментарии на этом сайте к никому ненужному инфодерьму.

    Такова бестолковая жизнь 99 %... :-(