Прокси-сервер

У Pastukhov Agent есть встроенный прокси-сервер — «посредник» между Claude Code и поставщиками ИИ (Anthropic, OpenAI, DeepSeek). Все запросы и ответы проходят через него, поэтому приложение всегда знает, что делал агент, сколько «порций текста» (токенов) он потратил и сколько это стоит в деньгах. Прокси также переводит запросы в формат любого поставщика — вы можете подключать разные модели ИИ, не меняя программу.

Веб-интерфейс просмотрщика прокси-трафика Pastukhov Agent

Обзор

По умолчанию прокси выключен — работает режим direct, и агент общается с поставщиком ИИ напрямую. Включать ничего не нужно, пока вы им не пользуетесь. Чтобы включить, задайте тип прокси AGENT_PROXY_TYPE в настройках модели (см. раздел «Конвертация протоколов» ниже).

После включения прокси работает на адресе 127.0.0.1 — это «адрес самого компьютера», за пределы машины трафик не выходит. Claude Code подключается к прокси сам, через переменную ANTHROPIC_BASE_URL. Что это даёт:

  • История запросов — все запросы и ответы сохраняются в базе данных (30 дней). Всегда можно посмотреть, что именно делал агент и где возникали ошибки;
  • Конвертация протоколов — запросы переводятся между форматами Anthropic, OpenAI и DeepSeek, поэтому к агенту можно подключать разных поставщиков ИИ;
  • Подсчёт токенов — токены это «единицы текста», за которые вы платите поставщику. Прокси считает их для каждого запроса, в том числе в потоковых ответах;
  • Расчёт стоимости — потраченные токены переводятся в деньги по ценам моделей, с учётом кэша (повторное обращение к уже обработанному тексту дешевле);
  • Обновления в реальном времени — статистика появляется в интерфейсе мгновенно, страницу перезагружать не нужно;
  • Просмотрщик трафика — веб-интерфейс со всей историей запросов по каждому чату и просмотром деталей.

Как это работает

Когда вы отправляете сообщение, Pastukhov Agent подставляет Claude Code вместо адреса поставщика адрес прокси: http://127.0.0.1:{порт}/{модель}/{чат}/v1/messages. Дальше запрос идёт по цепочке:

  1. Прокси принимает запрос от Claude Code;
  2. Определяет, к какому поставщику относится выбранная модель;
  3. При необходимости переводит запрос в формат поставщика;
  4. Пересылает запрос поставщику ИИ;
  5. Извлекает из ответа данные о потраченных токенах;
  6. Сохраняет запись в базу и обновляет статистику чата;
  7. Возвращает ответ в Claude Code.

Прокси слушает только «адрес самого компьютера» (127.0.0.1) — трафик не покидает машину, поэтому перехватить его извне нельзя. Ключи доступа (API-ключи) автоматически вычищаются из логов: в истории остаётся только техническая информация, без секретов.


Конвертация протоколов

У каждого поставщика ИИ свой формат обмена данными (протокол). Прокси выступает переводчиком: принимает запрос от Claude Code и при необходимости переводит его на «язык» выбранного поставщика. Тип поставщика задаётся переменной AGENT_PROXY_TYPE в настройках модели. Варианты:

anthropic (проброс)

Работа напрямую с Anthropic: запросы и ответы передаются без изменений, прокси лишь записывает статистику (сколько потрачено токенов и сколько это стоит).

openai

Для провайдеров, совместимых с OpenAI: запросы переводятся в формат OpenAI, поэтому можно подключать модели GPT и аналогичные. Подсчёт токенов работает и в потоковых ответах.

deepseek

Полное преобразование для DeepSeek: нормализация сообщений, кэширование «размышлений» модели (чтобы они не терялись между запросами) и подмена имён моделей. Дополнительные настройки задаются в конфигурации провайдера (см. ниже).

anthropicdeepseek

Доступ к DeepSeek через Anthropic-совместимый шлюз (например, OpenRouter) — удобно, когда прямой доступ к DeepSeek закрыт, а через шлюз — есть.

direct (без прокси)

Режим по умолчанию: прокси выключен, Claude Code общается с поставщиком напрямую. История запросов и подсчёт токенов недоступны — для большинства задач это нормально, включайте прокси, только когда эти возможности нужны.


Настройка

Прокси настраивается переменными окружения в конфигурации модели (.pastukhov/models.yml). Переменные окружения — это технические параметры запуска: вы задаёте их один раз в настройках, и программа применяет их автоматически.

# Тип прокси (обязательный)
AGENT_PROXY_TYPE: anthropic   # anthropic | openai | deepseek | anthropicdeepseek | direct

# Адрес поставщика ИИ (обязательный для всех типов, кроме direct)
ANTHROPIC_BASE_URL: https://api.anthropic.com

# Оба параметра ниже — только для сетей, где доступ в интернет идёт через корпоративный прокси (необязательно)
HTTP_PROXY: http://proxy.company.com:8080
HTTPS_PROXY: http://proxy.company.com:8080

Для DeepSeek можно задать дополнительные настройки через JSON-конфигурацию провайдера (JSON — текстовый формат, в котором удобно передавать несколько параметров сразу):

# Настройки DeepSeek-провайдера (JSON)
AGENT_PROXY_SETTINGS: |
  {
    "thinking": "enabled",          # "размышления" модели: enabled | disabled | pass-through
    "reasoningEffort": "high",       # глубина рассуждений: low | medium | high | max
    "defaultModel": "deepseek-chat", # модель по умолчанию
    "missingReasoningStrategy": "reject"  # что делать, если модель не прислала "размышлений": reject | placeholder
  }

Что означают параметры. thinking включает или выключает «размышления» модели перед ответом (можно и отключить — для скорости). reasoningEffort задаёт глубину рассуждений: чем выше, тем тщательнее анализ, но медленнее и дороже. defaultModel — модель, используемая по умолчанию. missingReasoningStrategy — поведение, если модель вдруг не прислала «размышлений» при включённом режиме.


Просмотрщик трафика

На странице /proxy внутри приложения открывается весь прокси-трафик:

  • Карточки обзора — общее число чатов, запросов, потраченных токенов и ошибок;
  • Таблица чатов — статистика по каждому чату (токены, стоимость, время ответа), таблицу можно сортировать;
  • Страница чата (/proxy/{chatId}) — все сообщения чата по порядку; запросы и ответы можно посмотреть в формате JSON (структурированный, удобный для чтения вид данных).

Обновления происходят сами: новый запрос появляется в интерфейсе мгновенно, перезагружать страницу не нужно.


Статистика и расчёт стоимости

Из каждого ответа прокси извлекает данные о потраченных токенах и переводит их в деньги по ценам, заданным для модели (цена за миллион токенов; по умолчанию используются цены уровня Claude Sonnet — $3 за входящий и $15 за сгенерированный миллион токенов). Учитываются все типы:

  • prompt — текст, отправленный модели: ваши сообщения, содержимое файлов;
  • completion — текст, который модель сгенерировала в ответ;
  • cache_read / cache_write — обращение к кэшу: повторная обработка уже знакомого модели текста, это заметно дешевле.

Расход и стоимость видны прямо в чате рядом с каждым сообщением — включается в карточке «Чат» настроек, опция «Показать токены сообщения» (см. Настройки).


Хранение данных

История хранится в отдельной компактной базе данных — файле proxy.db в папке .pastukhov проекта:

  • request_logs — полный журнал запросов: что отправлялось, что получено, токены, длительность, ошибки. Автоматически очищается через 30 дней;
  • reasoning_cache — кэш «размышлений» DeepSeek: нужен, чтобы восстанавливать ход рассуждений модели после перерыва. Автоматически очищается через 7 дней.

API-ключи и другие секреты автоматически удаляются из сохранённых данных — журнал можно показывать кому угодно, не опасаясь утечек.

База растёт быстро. В журнал сохраняются полные тексты запросов и ответов, поэтому при активном использовании за неделю могут накопиться гигабайты. Автоочистка удаляет записи старше 30 дней, но за этот срок база успевает сильно разрастись. Если история вам важна, архивируйте файл proxy.db (папка .pastukhov проекта) хотя бы раз в неделю — просто скопируйте его в надёжное место, например в облако или на внешний диск. При старте система при необходимости создаст базу заново.


REST API

Для программного доступа к статистике (например, чтобы выгрузить её в свою систему учёта) предусмотрен REST API — набор адресов, по которым данные отдаются другим программам:

  • GET /api/proxy/status — запущен ли прокси;
  • GET /api/proxy/logs — журнал запросов с фильтрами (по чату, модели, датам, ошибкам);
  • GET /api/proxy/chats — список чатов с агрегированной статистикой;
  • GET /api/proxy/chats/{chatId}/messages — все сообщения конкретного чата;
  • GET /api/proxy/logs/{requestId} — подробный лог конкретного запроса.

Переменные окружения

  • AGENT_PROXY_TYPE — тип прокси: anthropic, openai, deepseek, anthropicdeepseek, direct;
  • ANTHROPIC_BASE_URL — адрес поставщика ИИ, куда прокси пересылает запросы (напрямую или через шлюз);
  • HTTP_PROXY / HTTPS_PROXY — для сетей, где доступ в интернет идёт через корпоративный прокси (только если это ваш случай).

← Назад: Telegram Bot

Далее: Настройки