Модели

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

Почти все настройки агента задаются через переменные окружения — это технические параметры запуска, которые вы указываете один раз, а программа применяет их автоматически. Они делятся на два типа:

  • Переменные уровня приложения — настраивают сам Pastukhov Agent (логин и пароль для входа, путь к проекту, лицензия, ключи). Задаются до запуска — через системные переменные окружения, аргументы командной строки или файл .env — и со страницы «Модели» не меняются;
  • Переменные уровня модели — настраивают подключение к ИИ и управляются полностью через страницу Модели. Каждая модель — именованный набор переменных (ключи, названия моделей, адреса, цены) и агента-обвязки. Модели можно создавать, копировать и переключать в любой момент.

Переменные уровня приложения

Эти переменные настраивают сам Pastukhov Agent и должны быть заданы до запуска. Их нельзя поменять со страницы «Модели» — используются системные переменные окружения, аргументы командной строки (KEY=VALUE при запуске) или файл .env (подключается через --env имя_файла).

Основные настройки

  • AGENT_LOGIN — имя пользователя для входа в интерфейс. Если не задано, автоматически подставляется agent;
  • AGENT_PASSWORD — пароль в виде хеша SHA256 (хеш — это «отпечаток» текста, восстановить по нему исходный пароль нельзя). Если не задан, генерируется автоматически и выводится в консоль до перезапуска. Хеш для своего пароля можно получить на странице входа — по ссылке «▸ SHA256 generator» под кнопкой входа;
  • AGENT_PROJECT_PATH — путь к папке проекта. Нужен при ручной установке и в Docker. Папка может быть пустой или ещё не существовать — тогда агент сам получит проект из настроенного Git-адреса;
  • AGENT_LICENSE — ключ лицензии. Если не задан, используется пробная лицензия;
  • AGENT_API_KEY — хеш SHA256 ключа API для удалённого доступа. Если не задан, удалённый доступ отключён;
  • AGENT_DATABASE — путь к базе данных программы или строка подключения PostgreSQL. По умолчанию — файл .pastukhov/project.db (SQLite), лежащий рядом с проектом, чтобы его можно было сохранять в Git. Для серьёзной эксплуатации лучше PostgreSQL — она быстрее и надёжнее SQLite;
  • JWT_SECRET_KEY — секретный ключ подписи «пропусков» входа (JWT; минимум 32 символа). Не задали — ключ сгенерируется сам. Это важная деталь безопасности: кто знает ключ, тот может сам создавать действительные пропуска. Без своего ключа при пересоздании Docker-контейнера он перегенерируется и всем пользователям придётся входить заново;
  • AGENT_CLICKHOUSE_URL — адрес системы ClickHouse для сбора статистики чатов в единое хранилище. Позволяет строить общие графики по всем проектам сразу (например, в Grafana) вместо разрозненного просмотра проектов по отдельности. Пример: Host=172.17.0.1;Port=8127;Protocol=http;Database=;Username=;Password=;
  • MANAGER_PASSWORD — пароль менеджера: при задании открывает доступ к чатам для централизованного управления агентом (используется MultiAgent);
  • AGENT_BRAND — торговая марка интерфейса. По умолчанию определяется по имени исполняемого файла (XedantAgent → Xedant, прочее — Pastukhov). Меняет название продукта, логотип и папку конфигурации.

Подключение Git-репозитория

  • AGENT_GIT_URL — адрес Git-репозитория проекта (хранилища истории изменений), откуда клонировать проект. По умолчанию берётся демонстрационный репозиторий;
  • AGENT_GIT_LOGIN — логин для доступа к репозиторию;
  • AGENT_GIT_PASSWORD — пароль для доступа к репозиторию;
  • AGENT_GIT_USER_NAME — имя автора, которое будет стоять в записях об изменениях;
  • AGENT_GIT_USER_EMAIL — email автора для записей об изменениях.

Встроенный FTP-сервер

В Docker-образы встроен FTP-сервер — по FTP можно подключаться к файлам проекта напрямую, из любого файлового менеджера. Подробности — на странице Файлы.

  • AGENT_FTP_USER — имя пользователя для FTP-доступа. Сервер запускается, только если заданы обе переменные (пользователь и пароль);
  • AGENT_FTP_PASSWORD — пароль для FTP-доступа;
  • AGENT_FTP_MIN_PORT — нижняя граница диапазона портов для передачи данных (по умолчанию 30000);
  • AGENT_FTP_MAX_PORT — верхняя граница диапазона (по умолчанию 30009);
  • AGENT_FTP_ADDRESS — адрес сервера для подключений; по умолчанию определяется автоматически.

SSL и размещение

  • AGENT_SSL — режим сертификата безопасности: auto автоматически включает защищённое соединение (HTTPS), даже без своего домена. Подробнее — на странице SSL-сертификаты;
  • AGENT_SSL_PORT — порт для HTTPS в режиме AGENT_SSL=auto (по умолчанию — номер HTTP-порта + 1);
  • AGENT_SSL_DOMAINS — явный список доменов/IP через запятую, которые включить в сертификат;
  • AGENT_BASE_PATH — размещение приложения в подпапке домена (например, /agent1), без отдельного домена. Работает вместе с X-Forwarded-Prefix за обратным прокси.

Разное

  • AGENT_CLAUDE_PATH — путь к программе (исполняемому файлу) Claude Code, если она установлена не в стандартном месте;
  • AGENT_BACKEND — выбор агента-обвязки для чатов: claude-code (по умолчанию), codex, opencode, pi, oh-my-pi, reasonix, deepseek-harness, kimi-code, mini или command-code. Задаётся в конфигурации модели. Что такое обвязки и чем они отличаются — на странице Обвязки;
  • CODEX_PATH, OPENCODE_PATH, PI_PATH, OMP_PATH, REASONIX_PATH, KIMI_CODE_PATH — пути к программе соответствующей обвязки (если она не найдена автоматически);
  • AGENT_YANDEX_DISK_TOKEN, AGENT_YANDEX_DISK_FOLDER, AGENT_YANDEX_DISK_POLL_INTERVAL — удалённое управление агентом через Яндекс.Диск (включая десктопное приложение AgentRemote). См. страницу Удалённое управление;
  • AGENT_ICON_PATH — путь к своей иконке, которая будет показана в интерфейсе (и в окне установленного приложения);
  • DISABLE_AUTOUPDATER — установите 1, чтобы отключить автоматическое обновление Claude Code (обычно нужно в Docker);
  • DOTNET_ROOT — путь к среде выполнения .NET (используется системой сборки).

Переменные уровня модели

Эти переменные настраивают подключение к ИИ и управляются со страницы «Модели». Они хранятся в .pastukhov/models.yml и передаются программе-исполнителю (обвязке) при запуске сеанса чата. Переменные модели имеют приоритет над системными, а системные используются как запасной вариант.

Ключи доступа и адреса

  • ANTHROPIC_API_KEY — ключ доступа к API Anthropic для прямой работы с Anthropic;
  • ANTHROPIC_AUTH_TOKEN — ключ доступа для сторонних поставщиков (z.ai, OpenRouter, xAI, MiniMax, Kimi). Альтернатива ANTHROPIC_API_KEY;
  • ANTHROPIC_BASE_URL — адрес API. По умолчанию — адрес Anthropic; для сторонних поставщиков меняется на их адрес;
  • MAX_MCP_OUTPUT_TOKENS — максимальный объём ответа (в токенах) для вспомогательных серверов MCP, которые дают агенту дополнительные возможности. По умолчанию 100000.

Конфигурация модели

  • ANTHROPIC_MODEL — основная модель для ответов в чате;
  • ANTHROPIC_DEFAULT_OPUS_MODEL — модель для сложных подзадач, требующих максимальных возможностей;
  • ANTHROPIC_DEFAULT_SONNET_MODEL — модель для сбалансированных подзадач (оптимум скорости и качества);
  • ANTHROPIC_DEFAULT_HAIKU_MODEL — модель для быстрых и лёгких подзадач;
  • CLAUDE_CODE_SUBAGENT_MODEL — модель для вспомогательных агентов, которых Claude Code запускает для параллельной работы над мелкими задачами;
  • MODEL — модель для обвязок не от Anthropic (OpenCode, Pi, Oh My Pi, Reasonix, Codex, MiniAgent, Command Code и др.) в формате, принятом в этой обвязке;
  • MODEL_CONTEXT_LENGTH — размер окна контекста (рабочей памяти) в токенах. Используется для расчёта стоимости и отображения заполнения.

Цены (за миллион токенов)

Токены — это «единицы текста», за которые вы платите поставщику. Здесь задаются тарифы, по которым агент считает ваши расходы:

  • MODEL_INPUT_PRICE — цена текста, отправляемого модели (ваши сообщения, содержимое файлов);
  • MODEL_OUTPUT_PRICE — цена текста, сгенерированного моделью в ответ;
  • MODEL_CACHE_READ_PRICE — цена обращения к кэшу: повторная обработка уже знакомого модели текста обходится дешевле;
  • MODEL_CACHE_WRITE_PRICE — цена записи текста в кэш.

Управление поведением

  • CLAUDE_DISABLE_EXPERIMENTAL_BETAStrue отключает экспериментальные функции (рекомендуется для сторонних поставщиков, которые их не поддерживают);
  • DISABLE_NON_ESSENTIAL_MODEL_CALLStrue отключает второстепенные обращения к модели (тоже рекомендуется для сторонних поставщиков — экономит и деньги, и время);
  • ENABLE_TOOL_SEARCHfalse отключает поиск инструментов (используется некоторыми поставщиками, которые его не поддерживают);
  • MODEL_PEAK_HOURS — периоды «часов пик», когда провайдер берёт повышенную плату. Вместе с MODEL_PEAK_DAYS определяет, когда рядом с выбором модели появляется значок-предупреждение. Подробности — в разделе «Пиковые часы» ниже.

Примечание: при создании модели из встроенного шаблона провайдера (Anthropic, z.ai, OpenRouter, DeepSeek и др.) большинство переменных заполняется автоматически — включая обвязку. От вас нужен только ключ доступа: шаблон подставит названия моделей, адрес, цены и параметры поведения. См. раздел Настройка первой модели в руководстве «Начало работы».


Пиковые часы

Некоторые провайдеры берут повышенную плату в часы пиковой нагрузки. Модель может объявить свои пиковые периоды — тогда агент предупредит о них в интерфейсе и не будет тратить деньги на автоматические запуски в это время.

Переменные пиковых часов

  • MODEL_PEAK_HOURS — периоды «начало-конец» через запятую в формате H:MM-H:MM. Время задаётся по Гринвичу (GMT/UTC). Пример: 3:00-5:00,7:00-12:00. Поддерживается переход через полночь — период 23:00-1:00 действует с 23:00 до 1:00. Если переменная не задана, пиковых часов у модели нет — она никогда не считается «в пике»;
  • MODEL_PEAK_DAYS — дни недели английскими названиями через запятую, полные или сокращённые (monday, tuesday или mon, tue и т.д.). По умолчанию пиковые дни — понедельник–пятница; задав свою переменную, вы переопределяете их (например, saturday,sunday).

Обе переменные задаются в редакторе модели обычным способом: кнопка «Добавить переменную» и пара «имя — значение». Работают и наследование по сегментам имени, и подстановка $ИМЯ — включая системные переменные окружения (см. разделы «Наследование настроек» и «Подстановка переменных» ниже).

Индикатор в интерфейсе

  • Где: рядом с селектором модели в панели ввода сообщения;
  • Когда: только если у выбранной модели сейчас пиковый период (часы и дни из её переменных);
  • Вид: значок-предупреждение — градиентный треугольник с восклицательным знаком;
  • Подсказка: «Пиковые часы модели с HH:MM до HH:MM, дороже» — время показывается в вашем локальном часовом поясе (значение из GMT конвертируется);
  • Обновление: каждые 30 секунд и при переключении модели.

Настройки поведения в пиковые часы

Две настройки управляют автоматикой в пиковые часы — автоотправкой промптов и автокликом кнопок. Обе по умолчанию включены.

НастройкаПо умолчаниюГде в интерфейсеКогда выключена
promptsIgnorePeakHoursвключеноAutoSend на странице Промптыпромпты, чья модель сейчас в пике, ждут в очереди; промпты непиковых моделей отправляются
autoclickDuringPeakHoursвключенокарточка «Кнопки» на странице Настройкикнопки с автонажатием в чатах пиковой модели не срабатывают сами — ждут ручного нажатия

promptsIgnorePeakHours. Переключатель «Пиковые часы» в настройках AutoSend («AutoSend settings» рядом с переключателем автоотправки). Пока включена (по умолчанию), автоотправка работает как обычно и пики не учитываются: промпты отправляются, даже если модель в пике. Выключив её, вы запрещаете автоотправку промптов, чья модель сейчас в пике: такие строки ждут в очереди и отправятся после окончания пика.

autoclickDuringPeakHours. Переключатель «Автоклик в часы пик» в карточке «Кнопки» (Настройки → Автоматизация). Пока включена (по умолчанию), кнопки с автонажатием срабатывают по расписанию даже в пиковые часы модели чата. Выключите её — кнопки в чатах, чья модель сейчас в пике, не сработают сами и останутся доступными для ручного нажатия.

Пример: пики в выходные

Модель «Weekend» с переменными MODEL_PEAK_HOURS=18:00-22:00 и MODEL_PEAK_DAYS=saturday,sunday:

  • каждую субботу и воскресенье с 18:00 до 22:00 по Гринвичу рядом с селектором модели появляется значок-предупреждение (подсказка покажет эти же часы в локальном времени);
  • пока promptsIgnorePeakHours включена, промпты этой модели отправляются как обычно; если выключить — в выходные вечером они ждут в очереди до конца пика, а промпты других моделей продолжают отправляться;
  • если выключить autoclickDuringPeakHours, кнопки с автонажатием в чатах на модели «Weekend» в эти часы не сработают сами — останутся только ручные нажатия.

Что такое модель?

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

Например, можно завести:

  • Claude — обвязка Claude Code, ключ Anthropic и модель Claude;
  • GPT — обвязка Codex, подписка ChatGPT или ключ OpenAI и модель GPT-5;
  • GLM — обвязка Claude Code, ключ z.ai и модель GLM;
  • DeepSeek — обвязка Reasonix или DeepSeek Harness, ключ DeepSeek, оплата за токены (недорогой вариант для повседневной работы);
  • Testing — дешёвая или быстрая модель для экспериментов.

У каждой модели свой набор переменных. При переключении ИИ немедленно начинает работать по новой конфигурации — уже со следующего сообщения.

Наследование настроек. Названия моделей поддерживают наследование по сегментам, разделённым дефисом. Модель glm-5-turbo автоматически наследует переменные моделей glm-5 и glm. Это позволяет задать общие настройки (например, ключ и адрес) один раз в «родительской» модели, а в «дочерних» переопределять только отличия (название модели или цены). Собственные переменные всегда важнее унаследованных.

Обвязки. Каждая модель может работать на любом из десяти агентов-исполнителей: Claude Code, Codex, OpenCode, Pi, Oh My Pi, Reasonix, DeepSeek Harness, Kimi Code, MiniAgent или Command Code. Обвязка задаётся переменной AGENT_BACKEND в составе модели, поэтому можно держать несколько моделей на разных движках и переключаться между ними. Подробнее — на странице Обвязки.


Просмотр моделей

Модели открываются из диалога «Модели» в главном меню (значок модели в шапке). Диалог показывает список всех настроенных моделей с цветами и основными настройками. Нажмите на модель, чтобы открыть её редактор и посмотреть или изменить все переменные.

Список моделей Pastukhov Agent

Редактирование модели

Редактор показывает все переменные в виде пар «имя — значение». Настраивайте модель здесь, а изменения сохранятся сами.

Редактор модели с парами ключ-значение

Изменить переменную: нажмите на поле значения и введите новое. Изменение сохраняется автоматически через короткую паузу — кнопка сохранения не нужна.

Добавить переменную: нажмите «Добавить переменную», чтобы создать новую пару «имя — значение».

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

Изменить порядок: перетаскивайте переменные вверх или вниз. Это нужно только для порядка — на работу переменных расположение не влияет.

Контекстное меню: клик правой кнопкой мыши по переменной открывает дополнительные действия — редактирование, удаление, копирование.


Подстановка переменных

Переменные могут ссылаться на другие переменные — синтаксис $ИМЯ_ПЕРЕМЕННОЙ. При использовании модели ссылки автоматически раскрываются в реальные значения.

Например:

  • API_KEY = sk-abc123... (ваш настоящий ключ доступа)
  • BASE_URL = https://api.example.com
  • FULL_ENDPOINT = $BASE_URL/v1/chat (ссылается на BASE_URL)

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

Совет по безопасности: синтаксис $ИМЯ_ПЕРЕМЕННОЙ работает и с системными переменными окружения. Это значит, что секреты (ключи доступа, лицензии, пароли) можно передавать через переменные окружения Docker, системные переменные или аргументы запуска, а в models.yml лишь ссылаться на них — и в репозиторий секреты не попадут:

# .pastukhov/models.yml — безопасно для сохранения в Git
models:
  production:
    variables:
      - ANTHROPIC_API_KEY=$MY_API_KEY          # берётся из системной переменной при запуске
      - ANTHROPIC_AUTH_TOKEN=$MY_AUTH_TOKEN     # секрет не хранится в файле
      - ANTHROPIC_BASE_URL=https://api.anthropic.com  # не секрет — можно хранить открыто

Настоящие секретные значения остаются в конфигурации Docker (файл compose, .env или флаги -e), а models.yml можно спокойно сохранять в Git и передавать коллегам.


Создание новой модели

Мастер новой модели Pastukhov Agent
  1. Откройте диалог «Модели» из главного меню;
  2. Нажмите «Создать модель»;
  3. Выберите шаблон провайдера (Anthropic, z.ai, OpenRouter, DeepSeek, Codex, Reasonix, OpenCode, Pi, Oh My Pi, DeepSeek Harness, Kimi Code и др.) — шаблон сам заполнит обвязку, ключевые переменные, модели и цены;
  4. Укажите свой ключ доступа (или войдите в аккаунт, если шаблон предполагает подписку);
  5. Введите имя модели (например, «Claude» или «GPT-5»);
  6. Модель готова — переключитесь на неё из поля ввода чата.

Переименование модели

Нажмите на имя модели в редакторе, введите новое имя и подтвердите. Изменение применится везде, где модель упоминается, — включая селектор в поле ввода чата.


Переключение моделей в чате

Самый быстрый способ переключить модель — прямо из области ввода чата:

Селектор моделей в области ввода сообщений
  1. Найдите выпадающий список моделей рядом с полем ввода чата;
  2. Нажмите на него — откроется список доступных моделей;
  3. Выберите нужную модель;
  4. Все последующие сообщения пойдут уже через неё.

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