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

Pastukhov Agent включает встроенный прокси-сервер, который перехватывает весь трафик между Claude Code CLI и AI-провайдерами (Anthropic, OpenAI, DeepSeek). Прокси обеспечивает логгирование запросов в реальном времени, конвертацию протоколов на лету и подсчёт потребления токенов с расчётом стоимости.

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

Обзор

Прокси запускается как фоновый сервис при старте Pastukhov Agent и слушает на динамическом порту 127.0.0.1. Claude Code CLI автоматически подключается через переменную ANTHROPIC_BASE_URL, перенаправляя весь API-трафик через прокси.

  • Логгирование трафика — полное сохранение запросов и ответов в SQLite с 30-дневным хранением
  • Конвертация протоколов — прозрачное преобразование между Anthropic, OpenAI и DeepSeek API
  • Подсчёт токенов — извлечение token usage из стриминговых и не-стриминговых ответов
  • Расчёт стоимости — автоматический расчёт по ценам моделей с учётом кэширования
  • Обновления в реальном времени — SignalR-трансляция статистики в UI мгновенно
  • Просмотрщик трафика — веб-интерфейс для просмотра всех запросов по чатам с JSON-просмотрщиком

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

При запуске экземпляра Claude Code, Pastukhov Agent подменяет переменную окружения ANTHROPIC_BASE_URL на адрес прокси: http://127.0.0.1:{порт}/{окружение}/{chatId}/v1/messages. Все запросы проходят через прокси, который обрабатывает их по следующей схеме:

  1. Прокси принимает запрос от Claude Code CLI
  2. Определяет тип провайдера из конфигурации окружения
  3. Конвертирует запрос в целевой протокол (если нужно)
  4. Форвардит на upstream API-провайдер
  5. Извлекает token usage из ответа
  6. Логирует в SQLite и обновляет статистику чата
  7. Транслирует ответ обратно Claude Code CLI

Прокси слушает только на 127.0.0.1 (localhost), что обеспечивает безопасность — трафик не покидает пределы машины. API-ключи фильтруются из логов.


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

Прокси поддерживает несколько типов провайдеров. Тип провайдера определяется переменной окружения AGENT_PROXY_TYPE (например, AGENT_PROXY_TYPE).

anthropic (проброс)

При значении anthropic прокси работает в режиме проброса — запросы и ответы передаются без изменения. Используется при работе напрямую с Anthropic API. Прокси извлекает token usage из стриминговых событий message_start и message_delta.

openai

При значении openai прокси конвертирует Anthropic-формат запросов в OpenAI-формат. Маршрут /v1/messages преобразуется в /v1/chat/completions, автоматически инжектируется stream_options: { include_usage: true } для стримингового извлечения token usage.

deepseek

При значении deepseek прокси обеспечивает полную трансформацию между Anthropic и DeepSeek API. Включает нормализацию сообщений, переупорядочивание tool_use/tool_result, кэширование reasoning_content и подмену имён моделей. Для DeepSeek также доступна дополнительная конфигурация через JSON-настройки провайдера.

anthropicdeepseek

При значении anthropicdeepseek прокси направляет запросы через OpenRouter, используя Anthropic-протокол. Полезно при доступе к DeepSeek через OpenRouter с Anthropic-совместимым API.

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

При значении direct прокси полностью отключается — Claude Code CLI подключается напрямую к API-провайдеру. Логгирование и подсчёт токенов через прокси недоступны.


Настройка

Прокси настраивается через переменные окружения в конфигурации окружения (.pastukhov/environments.yml):

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

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

# Исходящий HTTP-прокси для запросов к upstream (опционально)
HTTP_PROXY: http://proxy.company.com:8080
HTTPS_PROXY: http://proxy.company.com:8080

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

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

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

Веб-интерфейс для просмотра прокси-трафика доступен по маршруту /proxy. Страница содержит:

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

Статистика обновляется в реальном времени через SignalR — новый запрос появляется в интерфейсе мгновенно без перезагрузки страницы.


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

Прокси извлекает данные о потреблении токенов из каждого ответа API и рассчитывает стоимость по ценам моделей:

  • Claude Opus — $15 / $75 за миллион токенов (input / output)
  • Claude Sonnet — $3 / $15 за миллион токенов
  • Claude Haiku — $0.80 / $4 за миллион токенов
  • DeepSeek Chat — $0.27 / $1.10 за миллион токенов
  • DeepSeek Reasoner — $0.55 / $2.19 за миллион токенов
  • GPT-4o, o1, o3 — цены OpenAI-моделей

Учитываются все типы токенов: prompt, completion, cache_read, cache_write. Данные о токенах и стоимости отображаются в интерфейсе чата рядом с каждым сообщением (при включённой настройке «Показать токены сообщения» — см. Настройки → Чат).


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

Прокси использует отдельную SQLite-базу данных для хранения логов запросов и кэша рассуждений:

  • request_logs — полный лог запросов с заголовками, телами, token counts, длительностью, ошибками. Автоочистка через 30 дней.
  • reasoning_cache — кэш reasoning_content от DeepSeek для восстановления контекста. Автоочистка через 7 дней.

База данных расположена в .pastukhov/proxy.db рядом с основной базой проекта. API-ключи и секреты автоматически фильтруются из сохранённых данных.


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 — базовый URL upstream API-провайдера
  • HTTP_PROXY / HTTPS_PROXY — исходящий HTTP-прокси для запросов к upstream

← Назад: Telegram Bot

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