## Pages ### Theme Demo Accordion title 1 This is a placeholder tab content. It is important to have the necessary information in the block, but at this stage, it is just a placeholder to help you visualise how the content is displayed. Feel free to edit this with your actual content. Accordion title 2 This is a placeholder tab content. It is important to have the necessary information in the block, but at this stage, it is just a placeholder to help you visualise how the content is displayed. Feel free to edit this with your actual content. Header button 1 button 2 Skill 0Day0Hour0Minute0Second Submit List item 1 List item 2 List item 3 Skill50% Tab 1 This is just a placeholder to help you visualize how the content is displayed in the tabs. Feel free to edit this with your actual content. Tab 2 This is just a placeholder to help you visualize how the content is displayed in the tabs. Feel free to edit this with your actual content. Tab 3 This is just a placeholder to help you visualize how the content is displayed in the tabs. Feel free to edit this with your actual content. January 15, 2024 Project Launch Successfully initiated our new product development project, setting the stage for innovation and growth. March 1, 2024 Team Expansion Welcomed five new talented members to our development team, bringing fresh perspectives and expertise. April 20, 2024 Prototype Development Completed the first working prototype of our product, marking a significant milestone in our project timeline. June 5, 2024 Market Research Conducted comprehensive market analysis to refine our product features and target audience strategy. heading item 1 item 2 quote code details header details content mathformulamath formula preformatted text Pull quote cell 1.1cell 1.2cell 2.1cell 2.2 verse classic editor Stretchy paragraph Stretchy heading Cover title imageDownload Media and text https://www.youtube.com/watch?v=y5tlwWVYPek Accordion title+ Accordion content button 1 button 2 custom html shortcode ### ИИ‑агенты Готовые ИИ-решения под ваши задачи — от управления сайтом до специализированных агентов ИИ‑агент своими руками Обучаете агента сами, я помогаю с установкой и настройкой, работой с данными и навыками Установлю Agent, MultiAgent, Research Agent, Analytics Agent и ИИ-агента для WordPress на ваш сервер Настрою систему и подключу ИИ-модели Две недели обучения и помощи: реальные задачи, данные, технические вопросы Обучение бекапам, безопасности и защите данных Обучение использованию и созданию навыков Научу выполнять исследования, генерировать идеи и планы на уровне гораздо выше любых существующих решений вроде ChatGPT/Perplexity Даже без навыков разработки сможете решать реальные проблемы своего бизнеса уже через пару дней Вся разработка — в режиме чата, на обычном русском языке Агент, инфраструктура и навыки остаются вашими навсегда Лицензии всех пяти продуктов включены — отдельно они стоили бы 78,500 ₽ Можно легко масштабировать на любое количество серверов, агентов и задач Бесплатные эпизодические консультации после первых двух недель Та же система, что в услуге «ИИ-агент под заказ» — но за 29,700 ₽ вместо 59,700 ₽ Вы получаете не только готового агента, но и навык создавать последующих агентов самостоятельно Помогать вам будет специалист с 25+ годами опыта коммерческой разработки продуктов для бизнеса Научу создавать коммерческие продукты, а не только решать мелкие задачи Для старта достаточно подписки OpenCode Go за 500 рублей Я в онлайне по 12–14 часов в сутки 7 дней в неделю, пишите в Telegram Подробнее ИИ‑агент под заказ Обучаемый ИИ-сотрудник под любые бизнес-задачи — на вашем сервере, под вашим контролем Агентская система, а не энциклопедия: выполняет работу, а не просто отвечает на вопросы Установлена на вашем сервере — полная изоляция данных Обучается под вашим контролем — чем дальше, тем лучше работает Доступ к вашим внутренним данным, недоступным публичным чатам Навыки — контролируемый и документированный набор знаний Для использования не нужно быть техническим специалистом Работает 24/7, не выгорает и не увольняется Автоматические проверки — система сама находит и исправляет ошибки Резервное копирование и версионирование навыков Любые ИИ-модели: Claude, GPT, GLM, DeepSeek, локальные и другие Доступ через веб-чат или Telegram — откуда удобно Упрощённый интерфейс — выглядит как обычный ChatGPT Моментальное исправление ошибок и самообучение одним сообщением Масштабирование на любые задачи и проекты Навыки — вечный актив, можно копировать и передавать Установка и настройка за один день Нужна всего неделя обучения до реально хороших результатов Проверено на реальных задачах, от управления сайтами до исследований рынка, аналитики, управления рекламными кампаниями, разработки продуктов Даёт конкурентное преимущество отнюдь не технарям, а тем, кто имеет опыт в решении реальных бизнес-задач Подробнее Полный комплект ИИ-агентов Пожизненные лицензии на пять агентов со скидкой больше 50% Все пять продуктов одним платежом: Agent, MultiAgent, Research Agent, Analytics Agent и ИИ-агент для WordPress Пожизненные лицензионные ключи на всё — без подписок и онлайн-проверок Отдельно эти продукты стоят 78,500 ₽ — комплект более чем вдвое дешевле Цена комплекта — 29,700 ₽, ваша экономия — 48,800 ₽ Неограниченное количество установок на своих компьютерах и серверах Все продукты полностью на русском и работают с любыми ИИ-моделями Бесплатные обновления всех продуктов в течение первого года Дальше по желанию: 9,700 ₽ за год обновлений всего комплекта Продления четырёх лицензий по отдельности — уже 29,400 ₽ в год; в комплекте всё сразу за 9,700 ₽ Все новые агенты по мере выпуска — пока действует срок оплаченных обновлений Даже без продления ключи работают пожизненно Ключи действуют на все версии, выпущенные до последней даты оплаченных обновлений Полный цикл работы: разработка, управление флотом агентов, исследования, аналитика Продукты интегрированы друг с другом и управляются из одного интерфейса Всё на ваших серверах — полная изоляция данных (self-hosted) Навыки и исследования остаются вашими навсегда Документация на русском у каждого продукта — установка своими силами Проверено на реальных проектах — этой связкой управляется pastukhov.com Подробнее ИИ-агент для исследований и планирования Глубокие исследования, идеи и планы — Pastukhov Research Agent Десятки поисков и сотни страниц за одно исследование Шесть поисковых провайдеров с запасными вариантами Скачивание с обходом блокировок Конвертация страниц в Markdown Батчинг: объёмы больше контекста модели Извлечение данных в TSV и JSON Генерация идей, планов и интерфейсов Результаты готовы для агентов разработки Верификация фактов с критикой альтернатив Action Research: циклы plan → act → observe → reflect Планы со стадиями и критериями проверки Исследование за 20–30 минут и 10–30 центов Управление Pastukhov Agent из одного интерфейса Чаты агента с обновлениями в реальном времени Библиотека исследований по маркетингу в поставке Любые OpenAI-совместимые модели Полная русская локализация Self-hosted: SQLite или PostgreSQL Очередь промптов и голосовой ввод Подробнее ИИ-агент для аналитики Быстрый анализ и визуализация данных — Pastukhov Analytics Agent Быстрый анализ и визуализация данных Документы-отчёты из блоков: графики, таблицы, метрики 15 типов блоков — от Markdown до Jupyter Семь типов графиков: линии, столбцы, точки, свечи, box plot SQLite, PostgreSQL и ClickHouse из коробки Lakehouse: запросы к Parquet-файлам Просите агента добавить отчёт, график или таблицу Кнопка «Исправить с помощью ИИ» рядом с ошибкой Встроенные проверки документов, блоков и SQL-запросов Авто-коррекция: ошибки видны до публикации Jupyter Notebooks: Python внутри отчёта pandas, NumPy, Matplotlib, Seaborn из коробки Панели с глубоким погружением в данные — не просто контроль Глубже Grafana и сильнее интегрировано с ИИ Обновления отчётов в реальном времени через SignalR Отчёты — JSON-файлы: Git и мгновенный reload Полная русская локализация интерфейса Создан аналитиком с более чем 25-летним опытом Подробнее ИИ-агент для Telegram Весь маркетинг в Telegram в одном окне — Pastukhov Telegram Agent Публикации в свои каналы в один клик Недельное расписание с авто-публикацией Очередь контента: идея → черновик → проверка История постов со статистикой Подключение через бота или личный аккаунт Источники: RSS, чужие каналы, чаты и комментарии Лента сообщений с фильтрами и поиском Авторы: кто пишет и их теги Маршрутизация: категории направляют контент в каналы ИИ-классификация сообщений Комментарии с ИИ: черновики, шаблоны, лимиты Кнопка «Вызвать агента» из любого места Чат с Pastukhov Agent: навыки и окружения Аналитика: подписчики, вовлечённость, просмотры Self-hosted в одном Docker-контейнере Подробнее ИИ‑агент для WordPress Управляйте сайтом на WordPress через чат — в браузере, телефоне, планшете или Telegram Создание, редактирование и удаление страниц и записей блога Установка и настройка плагинов, тем и шаблонов Управление медиафайлами, SEO, структурой сайта Создание собственных плагинов под ваши задачи Копирование дизайна любого сайта — покажите и скажите «сделай так же» Автоматическое резервное копирование перед каждым изменением Полная изоляция — система на вашем сервере, данные никуда не уходят Управление через Telegram-бот — полный контроль с телефона Управление через сайт или мобильное приложение Самообучение — система запоминает особенности вашего сайта Автоматические проверки и исправление ошибок после каждого изменения Полная история изменений в git — откат в любой момент Изменения мгновенно синхронизируются с живым сайтом Поддержка любых AI-моделей: Claude, GPT, GLM, DeepSeek и другие Управление базой данных — безопасно и с бекапами Контент как JSON-файлы — version control и batch-операции Демо — живой сайт магазина с корзиной и формой заказа Одна лицензия — любое количество ваших сайтов Пожизненная корпоративная лицензия Pastukhov Agent в комплекте Одноразовая оплата — без помесячных платежей и контрактов Проверено на реальном сайте — этим управляется pastukhov.com Подробнее и демо Pastukhov MultiAgent Централизованное управление ИИ-агентами на любом количестве серверов Управление любым количеством серверов через SSH Автоматическая установка Docker и зависимостей Развёртывание агентов в один клик Импорт уже работающих агентов Централизованные чаты всех агентов Рабочие пространства — сетки живых чатов Очередь промптов, задачи по расписанию и боты в чатах агентов Свой ассистент (Own Agent): панель чата и сайдбар на каждой странице Централизованная аналитика по всем агентам Контроль квот и балансов LLM-провайдеров Развёртывание сервисов по Docker Compose-шаблонам Встроенный Git-сервер Forgejo Nginx-роутинг: подпапка на сервере для каждого агента и сервиса Agent API: машина-машина автоматизация с ключом X-API-Key Полная русская локализация Шифрование секретов в базе Резервное копирование через rsync Обновления в реальном времени через SignalR Тёмная и светлая темы Полная независимость (self-hosted) Настраиваемый каталог образов: Agent, Research, Analytics и другие продукты Подробнее Pastukhov Agent Универсальная агентская система с навыками, автоматической проверкой и исправлением ошибок Работает с любыми моделями, включая локальные и OpenRouter Claude, GLM, Deepseek, MiniMax, Kimi, OpenAI, Qwen и т.д. Встроенные обвязки: Claude Code, Codex, OpenCode, Pi, MiniAgent и другие Полная изоляция (self-hosted) Автоматические сборки, линтинг, тестирование Быстрый и безопасный код на сервере и клиенте Упрощённый интерфейс для не-технических пользователей Автоматическая обратная связь по ошибкам и предупреждениям Автоматическое исправление ошибок и предупреждений в коде Автоматическая проверка кода с помощью моделей Легко добавлять свои типы проверок Автоматический перезапуск отладочных сборок Ежедневные глубокие проверки и тесты по безопасности Полный контроль через своего Telegram-бота Отслеживание и разбор вывода отладочных сборок Легко интегрировать в свои системы через REST API Полная и глубокая локализация Подробная документация для людей и машин Встроенные инструменты авто-настройки конфигурации Полная независимость от внешних сервисов Встроенный прокси-сервер для анализа и исправления протоколов Каждое приложение устанавливается на телефон и рабочий стол как обычное приложение — без магазинов приложений Автоматические SSL-сертификаты Let's Encrypt из интерфейса Подробнее и демо Бесплатная консультация по ИИ‑агентам Бесплатно разберу ваш бизнес и подскажу, что реально автоматизировать, а что лучше не трогать Полный разбор вашего бизнеса и задач — совершенно бесплатно Запуск исследовательского агента по вашей нише и процессам Предварительное исследование по идеям автоматизации в вашем бизнесе Подбор ИИ-модели под ваш бюджет и задачи — Claude, GPT, GLM, DeepSeek, российские провайдеры Помощь с архитектурой, данными и безопасностью под вашу специфику Разбор реальных затрат и окупаемости — сервер, модели, время Честный ответ, нужно ли вам это вообще — без впаривания Бизнес-аналитика и финансовая аналитика — моя главная специальность Сбор и анализ конкурентов, рынка и трендов Маркетинг, реклама, контент и ведение соцсетей Управление сайтами, интернет-магазинами и контентом Аналитика данных, панели, прогнозы и отчёты Автоматизация рутины и повторяющихся задач Налоговая и бухгалтерская отчётность в малом бизнесе Больше 25 лет разработки коммерческих продуктов в аналитике Практик, а не теоретик — система работает на десятках проектов Без обязательств и без предварительных договоров Общение в Telegram или по почте — без звонков и голосовых Онлайн 12–16 часов в сутки, без выходных Честно о том, что ИИ пока не умеет — без хайпа Идеи забираете вы — даже если не закажете ничего Подробнее ### Pastukhov Agent ИИ-работник для вашего проекта: понимает задачу, делает работу в чате, сам проверяет результат и исправляет ошибки Работает с моделями любых поставщиков ИИ — выбирайте, что удобнее Claude, OpenAI, DeepSeek, Qwen, GLM, Kimi и другие Модель можно поменять прямо посреди разговора, ничего не теряя Всё работает на вашем сервере — данные не уходят наружу После каждой правки проект самостоятельно собирается и проверяется Работает быстро: лишних обращений к модели нет, всё экономится Есть простой режим: общаетесь как в мессенджере, без технических деталей Автоматическая обратная связь по ошибкам и предупреждениям Автоматическое исправление ошибок и предупреждений в коде Автоматическая проверка кода с помощью моделей Легко добавлять свои типы проверок Автоматический перезапуск отладочных сборок Ежедневные глубокие проверки и тесты по безопасности Собственные Telegram-боты: для каждой задачи свой бот, со своей моделью и доступом Автоматические задачи по расписанию и событиям: агент сам выполняет рутину и присылает результаты Работает в браузере: на компьютере, телефоне и планшете, без установки приложений Живой просмотр работы агента и разбор её результатов по шагам Подключается к вашим системам через программный интерфейс (API) Полностью на русском языке Подробная документация — понятная и людям, и самой модели Помогает сам настроить подключение к моделям и сервисам Не зависит от внешних облачных сервисов — работает на вашем сервере Встроенный «переводчик» форматов: подключайте поставщиков ИИ без переделок Движки на выбор: Claude Code, Codex, OpenCode, Pi, MiniAgent, Command Code и другие Работает в подпапке вашего домена — отдельный сайт не нужен Бесплатные SSL-сертификаты выпускаются прямо из интерфейса, одним кликом Установка в Docker Установка в Windows Документация FAQ Лицензирование Автоматическая проверка сборкой проектов После каждого изменения агент сам собирает проект и проверяет его Сборка запускается при изменении файлов, по сообщению в чате или после другой сборки Найденные проблемы сразу попадают в чат — ничего не теряется Агент сам исправляет ошибки и со временем «учится» на них Подробнее Проверка отдельными агентами-контролёрами Отдельные агенты-контролёры проверяют результат, у каждого своя модель и свои правила Запускаются сами — после ответа в чате, после изменения файлов или по вашей команде Их замечания разбираются и возвращаются в основной чат для доработки Работа контролёров не перегружает разговор — основному чату остаётся только итог Подробнее Контроль моделей в чате Видно каждое действие агента: какие файлы читал, что изменил, что записал По каждому сообщению видно расход, стоимость и скорость ответа Ошибающуюся модель можно остановить одним кликом Любой результат можно отследить обратно до действия модели Подробнее Контроль изменений git Изменения видны сразу, пока агент ещё работает Сохранение изменений в один клик — описание подставляется само Можно отменить правки отдельного файла или все сразу Каждое сохранение связано с разговором, в котором оно появилось Подробнее Управление моделями и навыками Модель меняется прямо в разговоре, контекст не теряется Навыки настраиваются: своя документация, свои скрипты и правила Переключение между навыками по ходу работы, без остановки Отлаженный навык повышает результативность модели с 20% до 95% в любой задаче Подробнее Изоляция работы и режим максимальной скорости Проверяется итог работы, а не каждое промежуточное действие Агент работает «в песочнице»: его действия не затрагивают основную систему Режим максимальной скорости — безопасно, без ручных подтверждений Весь путь «собрал — проверил — исправил — опубликовал» проходит автоматически Подробнее Проверка при публикации проекта Ошибки при запуске и публикации ловятся автоматически Служебные записи анализируются на лету по вашим правилам Для технических подробностей, ошибок и предупреждений — отдельное окно Работает и при локальной отладке, и при публикации на удалённом сервере Подробнее Защита от опасных действий Лишние повторные запуски команд блокируются автоматически Опасные команды запрещены даже на максимальной скорости Перед выполнением действия срабатывают ваши собственные проверки Правила автоматически применяются к выбранному движку — ничего вручную Подробнее Просмотрщик файлов и запуск скриптов Файлы проекта можно смотреть и редактировать прямо в интерфейсе Скрипты запускаются с живым выводом — результат виден сразу Ошибки и предупреждения в выводе подсвечиваются автоматически Скрипт проверяется и чинится прямо в разговоре Подробнее Аналитика и контроль По каждому сообщению: расход, время и стоимость Модели сравниваются по расходам и скорости Готовая панель с 24 графиками Данные отправляются в стороннюю базу для отчётов по всем проектам Подробнее Звуковая обратная связь Свои звуки для сообщений, ошибок, сохранений и сборок Встроенные звуки можно заменить своими Громкость каждого звука регулируется отдельно Следите за ходом работы на слух, не глядя в экран Подробнее Telegram-бот Управление работой прямо из Telegram Можно несколько ботов: у каждого своя модель и свой круг пользователей Интерфейс гораздо проще Без логина и пароля Никаких технических навыков и чтения инструкций Можно смело давать сотрудникам Работает даже через прокси В общих чатах агента можно «позвать» по @имени Подробнее Упрощённый интерфейс Минималистичный интерфейс в стиле чат-ботов Сообщения — в виде «облачков», копируются по наведению Все технические детали спрятаны: инструменты, статусы, стоимость Модель и навык выбираются прямо в строке ввода Между режимами переключаешься в один клик Подробнее Встроенный агент MiniAgent MiniAgent — кодинг-агент, встроенный прямо в Pastukhov Agent. Вместе они полностью самодостаточны «из коробки»: не нужен сторонний движок, нечего устанавливать, нет ни зависимости от сторонних разработчиков, ни риска получить скомпрометированный установочный пакет из сторонних источников. Не зависит от сторонних разработчиков: движок всегда внутри продукта Нечего устанавливать: ни npm-пакета, ни отдельного исполняемого файла Нет риска скомпрометированного установочного пакета из сторонних источников Полноценный агент: чтение и правка файлов, команды и поиск Постоянные сессии JSONL — возобновляются после перезапуска Автоматическое сжатие контекста и повторы при сбоях провайдера Работает с моделями любых провайдеров — по вашему ключу Переключение модели и уровня размышлений на лету Сама читает CLAUDE.md и навыки .claude/skills, считает стоимость Узнать больше о MiniAgent Встроенный прокси-сервер Все запросы и ответы сохраняются 30 дней «Переводит» запросы между форматами разных поставщиков на лету Считает расход и стоимость по ценам каждой модели Веб-просмотр всей истории по каждому чату Видно даже служебные инструкции, которые получает модель Подробнее Подробная документация 24 руководства по каждой возможности продукта Документация в простом текстовом формате — для людей и самой модели Встроенная инструкция для быстрой настройки прямо в чате Ошибки настройки исправляются автоматически доступной моделью Подробнее Установка в Docker Установка в Windows Документация FAQ Лицензирование Бесплатный период Бесплатное использование в течение 30 дней, после чего можно обновить лицензию. Даже после истечения бесплатной лицензии приложение остаётся полностью рабочим, кроме общения с моделями. Никакой привязки нет: при необходимости данные можно выгрузить из базы и перенести на другую машину. Персональная лицензия Неограниченное количество проектов на любом количестве компьютеров и серверов для одного человека. 9 700 ₽ — единоразовый платёж за пожизненную лицензию. 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Ключ работает без подключения к интернету и действует всю жизнь. Корпоративная лицензия Неограниченное количество проектов на любом количестве компьютеров и серверов для всех сотрудников компании или команды, включая внешних подрядчиков. 97 000 ₽ — единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Ключ работает без подключения к интернету и действует всю жизнь. Сервисная лицензия Неограниченное количество установок под вашим доменом + полный исходный код с правом менять его как угодно, обновлять оформление или брендинг под вашу компанию и интегрировать в вашу инфраструктуру. Продуктом может пользоваться любой посетитель вашего домена как частью ваших сервисов. 297 000 ₽ — единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Ключ работает офлайн. Чтобы обновления устанавливались легко, рекомендую менять только брендинг и интеграцию — тогда слияние с новыми возможностями и исправлениями пройдёт гладко. Бесплатные лицензии В некоторых случаях я готов подарить бесплатную лицензию: если вы нашли баг или уязвимость безопасности в любом из моих продуктов (у меня буквально нет бюджета на платные баг-баунти, к сожалению); если вы предложили дельную идею по улучшению моих продуктов (кодить не обязательно, достаточно полезной идеи — вы получите лицензию, если я включу её в план разработки); если вы активный контрибьютор open-source проектов (я люблю open-source, просто у меня нет времени поддерживать свои продукты как open-source); если вы ведёте популярный блог, Telegram-канал или YouTube-канал о программировании, AI, аналитике, маркетинге, бизнесе, финансах или IT в целом (упоминание или реклама не требуются, это полностью на ваше усмотрение); если вы активный партнёр-аффилиат (продажи не обязательны, но у вас должен быть хотя бы какой-то контент, посвящённый моим продуктам). Если что-то из перечисленного про вас, просто напишите мне в Telegram. Укажите имя и email, и я сгенерирую ваш персональный пожизненный лицензионный ключ. ### Docker Desktop на Mac Docker Desktop для Mac — программа с графическим интерфейсом для управления контейнерами Docker. Контейнер — это изолированная среда, в которой Pastukhov Agent работает со всеми своими инструментами, ничего не «разбрасывая» по вашей системе: легко установить, легко удалить, легко заменить на новую версию. На Mac пастакухов агент запускается в Docker Desktop одинаково просто и на компьютерах с чипом Apple Silicon (M1/M2/M3/M4), и на моделях с процессором Intel. Установка Docker Desktop Скачайте установщик Docker Desktop для Mac с docker.com — важно выбрать версию под ваш компьютер: Apple Silicon — Mac с чипом M1/M2/M3/M4: версия «Mac with Apple chip»; Intel — Mac с процессором Intel: версия «Mac with Intel chip». Откройте скачанный файл .dmg и перетащите Docker в папку Applications, затем запустите из неё. Возможно, macOS попросит разрешить установку системных расширений — подтвердите в System Settings. Настройка проекта Создайте папку для вашего проекта. Внутри создайте файл docker-compose.yml по Руководству по настройке Docker — или файл .env, если предпочитаете запуск командой. Выберите образ — оба работают и на Apple Silicon, и на Intel без дополнительной настройки: maxpastukhov/agent:dev-latest — полная среда разработки (2,8 ГБ): включает инструменты разработки ASP.NET Core и Node.js; maxpastukhov/agent:min-latest — компактный полнофункциональный образ (570 МБ), если инструменты разработки ASP.NET Core не нужны: Node.js, Python и всё необходимое уже внутри. Запуск Pastukhov Agent Откройте Terminal в папке проекта и запустите контейнер: # Если используете Docker Compose docker compose up -d # Если используете Docker CLI с файлом .env docker run -d --env-file .env -p 5001:80 -v ./MyProject:/project maxpastukhov/agent:dev-latest Запущенный контейнер появится на панели Docker Desktop — там можно смотреть его журналы, перезапускать и останавливать контейнер мышью, без командной строки. Откройте браузер и перейдите по адресу http://localhost:5001 (или тому порту, который вы задали). Нужны специальные инструменты? Если в проекте используются специфические языки или инструменты, которых нет в образе, его можно расширить собственным Dockerfile — как это сделать, описано в разделе «Расширение образа собственными инструментами» Руководства по настройке Docker. Полезные советы Apple Silicon — Docker Desktop работает на этих чипах нативно, а образы Pastukhov Agent поддерживают обе архитектуры (многоархитектурные): один и тот же образ запустится и на M-чипе, и на Intel, без настройки. Файлы проекта — папка проекта подключается прямо в контейнер. Указывайте пути относительно текущей папки или абсолютные — оба варианта работают. Больше мощности — выделение памяти и процессора для Docker Desktop настраивается в Settings → Resources, если проектам нужно больше ресурсов. Автозапуск — включите запуск Docker Desktop при входе в систему (Settings → General), чтобы контейнеры всегда были готовы к работе. Подробная настройка Docker (файлы compose, переменные окружения, учётные данные) — в Руководстве по настройке Docker. ### Docker Desktop на Windows Docker Desktop — программа с графическим интерфейсом для управления контейнерами Docker на Windows. Контейнер — это изолированная среда, в которой приложение работает со своими инструментами и настройками, ничего не «разбрасывая» по всей системе. Docker Desktop берёт на себя всю рутину: запуск, остановку и просмотр контейнеров в интерфейсе, без командной строки. Это самый простой путь запустить Pastukhov Agent на Windows. Установка Docker Desktop Скачайте Docker Desktop для Windows с docker.com и запустите установщик. Дальше всё просто: во время установки включите WSL 2 — так контейнеры работают быстрее; перезагрузите компьютер, когда появится запрос; после перезагрузки Docker Desktop запустится сам. Настройка Docker Desktop Откройте настройки Docker Desktop (значок шестерёнки) и убедитесь, что WSL 2 включён: General — галочка «Use the WSL 2 based engine» должна стоять; Resources → WSL Integration — включите интеграцию для ваших дистрибутивов Linux. Настройка проекта Создайте папку для вашего проекта. Внутри создайте файл docker-compose.yml по Руководству по настройке Docker — или файл .env, если предпочитаете запуск командой. Выберите образ — это готовый «набор» Pastukhov Agent с инструментами: maxpastukhov/agent:dev-latest — полная среда разработки (2,8 ГБ): включает ASP.NET Core и инструменты разработки Node.js; maxpastukhov/agent:min-latest — компактный полнофункциональный образ (570 МБ), если инструменты разработки ASP.NET Core не нужны: Node.js, Python и всё необходимое уже внутри. Запуск Pastukhov Agent Откройте терминал (PowerShell, Командную строку или WSL) в папке проекта и запустите контейнер: # Если используете Docker Compose docker compose up -d # Если используете Docker CLI с файлом .env docker run -d --env-file .env -p 5001:80 -v ./MyProject:/project maxpastukhov/agent:dev-latest Запущенный контейнер появится на панели Docker Desktop — там можно смотреть его журналы, перезапускать и останавливать контейнер мышью, без командной строки. Откройте браузер и перейдите по адресу http://localhost:5001 (или тому порту, который вы задали). Нужны специальные инструменты? Если в проекте используются языки или инструменты, которых нет в образе, его можно расширить собственным Dockerfile — как это сделать, описано в разделе «Расширение образа собственными инструментами» Руководства по настройке Docker. Полезные советы На чём работает Docker Desktop — в Windows он использует WSL 2 для лучшей производительности. Если WSL 2 ещё не установлен, программа сама предложит установить его во время настройки. Где хранить файлы проекта — для скорости Docker лучше держать их в файловой системе WSL, а не на дисках Windows. Доступ к файлам WSL из Проводника — через \\wsl$\. Порт не открывается — WSL 2 сам перенаправляет порты в Windows, но если localhost не работает, узнайте IP-адрес WSL командой hostname -I внутри WSL и откройте адрес с этим IP. Больше мощности — выделение памяти и процессора для Docker Desktop настраивается в Settings → Resources, если проектам нужно больше ресурсов. Подробная настройка Docker (файлы compose, переменные окружения, учётные данные) — в Руководстве по настройке Docker. Для установки через собственную программу-установщик Windows — см. Руководство по установке Windows. Чтобы запустить Docker в WSL без Docker Desktop — см. Руководство по установке WSL. ### FAQ Почему вы не делаете все продукты с открытым исходным кодом? Я пробовал — больше 20 лет назад у меня были бесплатные продукты, и опыт оказался неудачным: поддержка отнимает гораздо больше сил, чем кажется, а на развитие продукта ресурсов уже не остаётся. Поэтому я сознательно предпочитаю меньшее число пользователей, которым продукт действительно нужен и которые готовы за него платить. Есть и вторая причина — качество. Я намеренно держу продукты простыми и минималистичными и сам решаю, чему в них быть. С открытым исходным кодом мне пришлось бы разбирать бесконечный поток предложений от посторонних людей, большинство из которых идёт вразрез с тем, как я вижу продукт, — и тратить на это время вместо развития. ### Документация Здесь собраны инструкции по Pastukhov Agent — коротко о том, что умеет каждый раздел и зачем он нужен. Если вы только установили программу, начните с раздела Начало работы. Начало работы С чего начать: установка, первый вход, знакомство с интерфейсом и первое сообщение. Проверка Как агент сам проверяет свою работу: вывод чата, изменения в Git, сборки, развёртывание, хуки, аналитика и другое. Автоисправление Автоматический поиск и исправление ошибок: как включить, как следить за работой и какие есть ограничения. Git Работа с системой контроля версий: отслеживание изменений, сохранение, ветки и отправка на сервер. Сборка и развертывание Сборка проекта и публикация: панель сборки, автосборка, развёртывание и разбор ошибок. Навыки Навык привязан к чату и загружается автоматически: выбор в поле ввода, управление каталогом, экспорт и импорт. Чат Отправка сообщений, понимание ответов, выбор навыков, очередь сообщений. Файлы Дерево файлов, редактор кода, создание, переименование, перемещение и удаление файлов. Модели Подключение моделей ИИ от разных поставщиков, переключение, индикатор пиковых часов и правила автоотправки. Хуки Правила, по которым агент действует: что можно и нельзя, автоматические команды и контроль инструментов. MCP-серверы Подключение агента к внешним сервисам и базам данных через Model Context Protocol. Промпты Сохранённые запросы с автоматической отправкой: очередь промптов, AutoSend и настройки. Использование контекста Сколько текста модель «помнит», как следить за расходом и вести длинные разговоры без потери качества. Коммиты История сохранённых изменений по веткам, сравнение версий файлов и привязка коммитов к чатам. Скрипты Запуск готовых программ-скриптов, живой вывод результатов и остановка в любой момент. Телефон и рабочий стол Agent изначально работает как веб-приложение: адаптивный интерфейс и установка на телефон или рабочий стол. Удалённое управление Доступ к агенту из других программ: создание чатов, отправка задач и встраивание ИИ в ваши сервисы. Аналитика Графики использования, метрики, диапазоны дат, статистика по коду и время чатов по навыкам. Telegram Bot Управление чатами через Telegram, inline-кнопки, прогресс инструментов и рассуждения. Настройки Карточный хаб настроек: оформление, чат, автоматизация, инструменты, конфигурация, профили MiniAgent и аккаунт. Горячие клавиши Полный справочник клавиатурных сочетаний для продвинутых пользователей. Папка .pastukhov Где хранятся настройки проекта: файлы конфигурации, цели сборки и развёртывания, парсеры и служебные данные. Лицензирование Типы лицензий, активация, информация о статусе и обновление лицензионного ключа. Прокси-сервер Встроенный прокси для логгирования трафика, конвертации протоколов, подсчёта токенов и расчёта стоимости. Советы и устранение проблем Советы по продуктивности, частые вопросы, устранение проблем и получение помощи. Упрощённый интерфейс Минималистичный ChatGPT-подобный режим: пузыри сообщений, скрытие инструментов и упрощённый ввод. Обвязки Встроенные движки Claude Code, Codex, OpenCode, Pi, Oh My Pi, Reasonix, DeepSeek Harness, Kimi Code, встроенный MiniAgent и Command Code: переключение через модель, авто-установка и подключение новых. SSL-сертификаты Выпуск бесплатных сертификатов Let's Encrypt прямо из интерфейса, а также самоподписанные сертификаты для работы по IP без домена. Задачи Автоматические сценарии по расписанию: скрипты, условия запуска, ИИ-разбор результатов и доставка через бота. Боты Собственные Telegram-боты: у каждого своя модель, навык, системный промпт и список разрешённых пользователей. API Программный доступ к чатам и очереди: аутентификация по ключу, команды /api/remote, расширенная поверхность и живые события SignalR. MiniAgent — встроенный агент Полностью самодостаточен «из коробки»: встроен в Pastukhov Agent, нечего устанавливать, нет зависимости от сторонних разработчиков. Инструменты, сессии, навыки и контекст — сразу доступны. Голосовой ввод Диктовка сообщений голосом: движок в браузере, локальный Whisper, облачные сервисы и собственные OpenAI-совместимые сервисы. ### API API Pastukhov Agent — это способ отдавать команды агенту и получать ответы без браузера. Другие программы могут создавать чаты, отправлять промпты и забирать результаты по набору адресов (эндпоинтов): из сборочных конвейеров, внешних инструментов и обёрток. Тот же ключ открывает и расширенные возможности (чаты, навыки, модели, настройки, git, аналитику и распознавание речи) и подписку на живые события — именно так Research Agent подключается к своему полю ввода, микрофону и аналитике. Раздел ниже — справочник этих адресов для разработчиков; если вы впервые слышите об API, достаточно понять общую идею: программа общается с агентом по тем же правилам, что и человек в интерфейсе. Аутентификация API включается установкой переменной окружения AGENT_API_KEY. В ней хранится не сам ключ, а его «отпечаток» (SHA-256 хеш — короткая строка, по которой ключ восстановить нельзя); при каждом запросе сервер вычисляет отпечаток присланного ключа и сравнивает с сохранённым. Ключ передаётся в заголовке X-API-Key — служебном поле запроса, где программа указывает свой ключ доступа: X-API-Key: my-secret-api-key Для живых подключений (WebSocket/SignalR) заголовки задать нельзя, поэтому тот же ключ принимается и как параметр адреса api_key: /svelteChatHub?api_key=my-secret-api-key Как получить хеш ключа Вычислить отпечаток ключа можно на странице входа приложения (кнопка «SHA256 generator» под формой входа) или вручную: # Linux / macOS echo -n "my-secret-api-key" | sha256sum | awk '{print $1}' # Windows PowerShell $hash = [System.BitConverter]::ToString([System.Security.Cryptography.SHA256]::Create().ComputeHash([System.Text.Encoding]::UTF8.GetBytes("my-secret-api-key"))).Replace("-", "").ToLower() $hash Полученный отпечаток укажите в AGENT_API_KEY (переменная уровня приложения, задаётся до запуска — системной переменной, аргументом командной строки или через .env). Коды при ошибках аутентификации 401 Unauthorized — ключ не передан или неверный; 503 Service Unavailable — переменная AGENT_API_KEY не задана: «API disabled», API отключён целиком. Команды /api/remote Эндпоинт — это адрес, по которому программа обращается к серверу, чтобы что-то получить или сделать. Все команды /api/remote описаны ниже. Создание чата POST /api/remote/chats Создаёт новый чат. Промпт, если он передан, ставится в очередь и обрабатывается автоматически — напрямую он не отправляется. Чат можно дополнительно привязать к боту (botId); привязка «молчаливая»: она никогда не спамит в Telegram и не может помешать созданию чата, а её исход возвращается флагами botLinked и botLinkNote. Тело запроса prompt (опц.) — начальное сообщение; при наличии чат создаётся со статусом queued, без него — created; title (опц.) — название чата (по умолчанию «Remote API Chat»); model (опц.) — модель для чата (см. Модели); skill (опц.) — навык; отсутствие = «none» (без наследования); systemPrompt (опц.) — системный промпт, сохраняется на чате; botId (опц.) — id бота для молчаливой привязки чата. Ответ (201 Created) { "chatId": 123, "url": "/123", "status": "queued", "createdAt": "2026-09-04T10:00:00Z", "botLinked": null, "botLinkNote": "" } Пример curl -X POST http://localhost:5173/api/remote/chats \ -H "X-API-Key: my-secret-api-key" \ -H "Content-Type: application/json" \ -d '{ "prompt": "Explain what this code does", "title": "Code Analysis", "model": "claude-sonnet" }' Статус чата GET /api/remote/chats/{chatId}/status Возвращает текущий статус обработки: processing — агент работает, queued — чат свободен, но в его очереди есть сообщения, иначе completed. Вместе со статусом приходят заголовок, метки времени, количество сообщений и накопленная стоимость. Поле error в ответе всегда пустое. { "chatId": 123, "status": "processing", "title": "Code Analysis", "createdAt": "2026-09-04T10:00:00Z", "updatedAt": "2026-09-04T10:00:15Z", "messageCount": 2, "totalCost": 0.005 } Пример: curl http://localhost:5173/api/remote/chats/123/status \ -H "X-API-Key: my-secret-api-key" Сообщения чата GET /api/remote/chats/{chatId}/messages?since={timestamp} Инкрементальное чтение сообщений — программа забирает только то, что появилось после указанной метки, и не разбирает всю историю заново. Параметр since (ISO 8601) возвращает сообщения от указанной метки включительно и сам отражается в ответе; неверное значение since молча игнорируется — возвращается полная история. Содержимое упрощается по типу: сообщение пользователя — его текст; ответ агента — текст без разметки кнопок; ошибка — текст ошибки; использование инструмента — Tool: <имя>. { "chatId": 123, "messages": [ { "id": 456, "role": "user", "content": "Explain what this code does", "createdAt": "2026-09-04T10:00:00Z", "tokens": { "input": 120, "output": 0 }, "cost": 0.0001 }, { "id": 457, "role": "assistant", "content": "This module handles ...", "createdAt": "2026-09-04T10:00:20Z", "tokens": { "input": 140, "output": 320 }, "cost": 0.003 } ], "since": "2026-09-04T10:00:00Z" } Примеры: # Все сообщения curl http://localhost:5173/api/remote/chats/123/messages \ -H "X-API-Key: my-secret-api-key" # Только новые с указанной метки curl "http://localhost:5173/api/remote/chats/123/messages?since=2026-09-04T10:00:10Z" \ -H "X-API-Key: my-secret-api-key" Очередь промптов Пять команд под /api/remote/chats/{chatId}/queue управляют промптами, ожидающими отправки агенту. В отличие от внутренних команд очереди, удалённые строже: неизвестный чат или промпт, которого нет в очереди (никогда не было, принадлежит другому чату или уже отправлен), — ошибка 404; пустой или состоящий из пробелов текст — 400. Список очереди GET /api/remote/chats/{chatId}/queue Очередь в порядке отправки: id, prompt, isPaused, model (переопределение для сообщения), createdAt. Приостановленные промпты включены и помечены isPaused. { "chatId": 123, "prompts": [ { "id": 456, "prompt": "Refactor the auth module", "isPaused": false, "model": "", "createdAt": "2026-09-04T10:00:00Z" }, { "id": 457, "prompt": "Then update the README", "isPaused": true, "model": "claude-sonnet", "createdAt": "2026-09-04T10:01:00Z" } ] } Добавить промпт в конец очереди POST /api/remote/chats/{chatId}/queue Дописывает промпт в конец очереди (как любой другой источник сообщений). prompt обязателен и непустой; model — необязательное переопределение модели для этого сообщения. Ответ 201 — добавленный промпт с его id. curl -X POST http://localhost:5173/api/remote/chats/123/queue \ -H "X-API-Key: my-secret-api-key" \ -H "Content-Type: application/json" \ -d '{ "prompt": "Now add unit tests for the refactored module" }' Переписать текст одного промпта PUT /api/remote/chats/{chatId}/queue/{promptId} Изменяет только текст: id, позиция, модель и пауза строки сохраняются. 400 при пустом тексте; 404, если промпта нет в очереди этого чата или он уже отправлен. curl -X PUT http://localhost:5173/api/remote/chats/123/queue/456 \ -H "X-API-Key: my-secret-api-key" \ -H "Content-Type: application/json" \ -d '{ "prompt": "Refactor the auth module and update the docs" }' Удалить один промпт DELETE /api/remote/chats/{chatId}/queue/{promptId} Удаляет промпт из очереди; успех — 204 No Content. curl -X DELETE http://localhost:5173/api/remote/chats/123/queue/456 \ -H "X-API-Key: my-secret-api-key" Заменить очередь целиком PUT /api/remote/chats/{chatId}/queue Переданный массив становится всей очередью. Правила замены: элемент с id, совпавшим с существующим, сохраняет идентичность — ту же строку, модель и паузу (если isPaused не задан явно); элемент без id (или с id: 0) создаёт новый промпт; существующие промпты, которых нет в массиве, удаляются — включая добавленные другими источниками после вашего последнего чтения (last writer wins); порядок массива становится порядком диспетчеризации — перестановка массива меняет очередь; пустой массив ([]) очищает очередь; id уже отправленного промпта пропускается (не воскрешается) — повторная отправка продублировала бы сообщение, которое агент уже обрабатывает. Ошибки 400: массив не передан; любой элемент с пустым текстом; один и тот же положительный id встречается дважды. curl -X PUT http://localhost:5173/api/remote/chats/123/queue \ -H "X-API-Key: my-secret-api-key" \ -H "Content-Type: application/json" \ -d '{ "prompts": [ { "id": 457, "prompt": "Refactor the auth module (edited)" }, { "prompt": "Then update the README" } ] }' Список ботов GET /api/remote/bots Только чтение: каждый настроенный бот возвращается с id, title, enabled, running и pollingError — достаточно, чтобы внешняя программа показала ботов со статусными точками. Никаких токенов, промптов и управления: боты настраиваются только в интерфейсе Pastukhov Agent. { "bots": [ { "id": "release-bot", "title": "Release Bot", "enabled": true, "running": true, "pollingError": null } ] } Статусы чата createdчат создан без начального промпта, ждёт вводаqueuedчат создан с промптом, сообщение в очередиprocessingагент обрабатывает сообщениеcompletedвсе сообщения обработаны, чат бездействуетerrorошибка обработки (в удалённом API поле error в ответе всегда пустое) Расширенная поверхность по API-ключу Тот же ключ открывает гораздо больше, чем /api/remote. Передав его на эти пути, вы действуете под ролью Manager — как при входе менеджером: /api/chats, /api/chat — чтение чатов и работа с ними; /svelteChatHub — живой SignalR-хаб (см. ниже); /api/skills — навыки (список, выбор); /api/models — модели (список, выбор); /api/autofix — статус и переключение автоисправления; /api/settings — настройки (settings/all, settings/set); /api/skills-settings — цвета навыков из skills.yml; /api/git — статус и коммит рабочего репозитория; /api/MessageQueue — правка, удаление, пауза очереди сообщений; /api/analytics — аналитика чатов (только чтение); /api/speechrecognition — транскрибация аудио движками распознавания речи. Когда ключ не задан или не передан, эти пути работают как раньше — по обычному входу в интерфейс. Ничего не ломается: хранилище ключей и вход в систему сосуществуют. Подписка на живые события (SignalR) Вместо постоянных опросов статуса внешняя система может подписаться на живые события — получать уведомления, когда в чатах что-то происходит. Подключитесь к /svelteChatHub, передав ключ заголовком X-API-Key или параметром адреса api_key (для WebSocket обязателен параметр адреса — заголовки задать нельзя): const connection = new signalR.HubConnectionBuilder() .withUrl("http://localhost:5173/svelteChatHub?api_key=my-secret-api-key") .build(); connection.on("messageUpdate", (chatId, message) => { console.log("Новое сообщение в чате", chatId, message.content); }); connection.start(); События приходят при изменениях: новые сообщения, обновления чатов (включая статусы обработки), изменения очереди сообщений и промптов, смена настроек, навыков и моделей. Для соединений включено аккуратное переподключение — разрыв не теряет подписку. Именно так Research Agent показывает интерфейс Pastukhov Agent. Пример рабочего потока Типичный сценарий: создать чат → опрашивать статус → забрать сообщения → дописать промпт в очередь → заменить очередь. Полный цикл на Python: import time, requests API_KEY = "my-secret-api-key" BASE = "http://localhost:5173/api/remote" H = {"X-API-Key": API_KEY} # 1. Создать чат — промпт встанет в очередь resp = requests.post(f"{BASE}/chats", headers=H, json={ "prompt": "Add error handling to the login endpoint", "title": "Error Handling", "model": "claude-sonnet" }) chat_id = resp.json()["chatId"] # 2. Опрашивать статус до завершения while True: status = requests.get(f"{BASE}/chats/{chat_id}/status", headers=H).json()["status"] if status in ("completed", "error"): break time.sleep(2) # 3. Забрать ответы (инкрементально через since) messages = requests.get(f"{BASE}/chats/{chat_id}/messages", headers=H).json()["messages"] for msg in messages: if msg["role"] == "assistant": print(msg["content"]) # 4. Дописать follow-up в конец очереди requests.post(f"{BASE}/chats/{chat_id}/queue", headers=H, json={"prompt": "Now add unit tests"}) # 5. Заменить очередь целиком requests.put(f"{BASE}/chats/{chat_id}/queue", headers=H, json={ "prompts": [ {"prompt": "Fix the auth flow"}, {"prompt": "Update the README"} ] }) Формат ошибок Все ошибки следуют единому формату {error, message, details}: { "error": "NotFound", "message": "Chat 123 not found", "details": "" } Unauthorized — 401, ключ не передан или неверный; BadRequest — 400, неверное тело запроса (пустой промпт, дубль id, нет массива); NotFound — 404, чат или промпт не найден; Remote API is disabled — 503, переменная AGENT_API_KEY не задана; InternalServerError — 500, неожиданная ошибка сервера (details содержит текст исключения). Связанные разделы Удалённое управление через Яндекс.Диск — файловая очередь и десктоп-приложение AgentRemote; Управление очередью из интерфейса — диалог промптов и серверный AutoSend; Модели — какие модели можно передавать в model. ← Удалённое управление Промпты → ### Git Панель Git Git — это система контроля версий: она хранит историю изменений проекта, позволяя возвращаться к прежним версиям, работать над несколькими вариантами сразу и синхронизировать проект с другими компьютерами и серверами. Панель Git в панели состояния чата даёт полный доступ к этой истории, не выходя из приложения: отслеживание изменений, коммиты, ветки, stash и pull. Панель управляет единственным Git-репозиторием вашего проекта — в него входят и код, и навыки (.claude/skills/). Все изменения — код, навыки, конфигурация — видны в одном общем списке. Панель обновляется сама: каждые 15 секунд, а при изменениях — мгновенно, через живые подключения. Макет панели Каждая вкладка репозитория устроена сверху вниз из четырёх разделов: Информация о репозитории Верхний раздел показывает имя текущей ветки, отставание или опережение относительно удалённого репозитория (в коммитах) и путь к репозиторию. Быстрый коммит Коммит — это сохранение «снимка» проекта с подписью-описанием: что именно изменилось и зачем. Поле быстрого коммита заранее заполнено текущим заголовком чата. Введите описание, нажмите Enter или кнопку Commit — и одним действием индексируются все изменённые файлы (включая новые), создаётся коммит и изменения отправляются в удалённый репозиторий. Индексация — это «отметка» файлов, которые войдут в следующий коммит. Успешный коммит отмечается праздничным конфетти со звуком. Коммит автоматически привязывается к текущему разговору в чате: от любого коммита можно вернуться к обсуждению с агентом, которое его создало. Панель инструментов Панель инструментов над списком файлов делится на три группы: Слева — разделённая кнопка Pull (основное действие + выпадающий список для операций со stash), значок статуса (галочка, когда всё чисто; предупреждение, когда есть изменения), кнопка диалога файлов для просмотра полного дерева и кнопка коммитов со счётчиком: она показывает все коммиты текущей сессии чата — удобно проверить, что агент сделал за время разговора В центре — выпадающий список веток с именем текущей. Нажмите, чтобы управлять ветками: переключение, создание, слияние, просмотр, удаление Справа — кнопка Undo All: отменяет все незакоммиченные изменения и удаляет новые (неотслеживаемые) файлы Список файлов Каждый изменённый файл показывается с четырьмя деталями: Значок статуса — цвет показывает тип изменения: синий — изменён, зелёный — добавлен, красный — удалён, голубой — переименован, зелёный — новый (неотслеживаемый). Нажмите на значок, чтобы открыть редактор файлов с текущим состоянием файла Путь к файлу — кликабелен, открывает диалог diff (сравнение версий) Кнопка действия — значок Undo для отката незакоммиченного файла или кнопка Unstage, возвращающая отмеченный (индексированный) файл в незакоммиченные Список ограничен 1000 файлами; кнопка «показать больше» загружает остальные. Операции Pull и Stash Кнопка Pull — разделённая: нажмите основную область, чтобы выполнить pull с rebase, или стрелку выпадающего списка для дополнительных операций. Pull — это «забрать изменения с удалённого сервера», push — «отправить свои». Rebase — аккуратный способ объединить истории: ваши локальные коммиты накладываются поверх полученных изменений, и история остаётся линейной и понятной. Pull — получает удалённые изменения и перебазирует поверх них ваши локальные коммиты. Действие по умолчанию Stash — «отложить в сторону» текущие незакоммиченные изменения: они сохраняются в именованный stash (можно дать ему описание), а рабочая папка возвращается к последнему коммиту. Удобно, когда нужно на время переключиться на другую задачу, не теряя начатое Unstash — достаёт ранее отложенный stash и применяет его изменения обратно. Открывается список всех stash в формате stash@{N}: message — выберите нужный Stash-Pull-Rebase — комбинированный процесс: отложить свои изменения, получить изменения с сервера с rebase, затем применить отложенное вручную, когда будете готовы Stash-Pull-Rebase-Unstash — полностью автоматизированный процесс: отложить, получить с rebase и сразу применить свои изменения обратно. Используйте, когда нужно синхронизироваться с сервером без прерывания работы Управление ветками Ветка — это отдельная линия разработки: как параллельный вариант проекта, который не мешает основной версии. Удобно, например, готовить новую версию в отдельной ветке, не трогая работающий вариант. Выпадающий список веток в центре панели инструментов открывает меню с пятью операциями: Переключить ветку — открывает диалог со списком всех веток (можно искать по имени); текущая ветка помечена и отключена для переключения Создать ветку — диалог ввода имени новой ветки. Имя может содержать только буквы, цифры, дефисы, подчёркивания и слеши — без пробелов Объединить ветку — выбор, какую ветку влить в текущую (слияние двух линий разработки) Осмотреть ветку — открывает страницу коммитов, отфильтрованную по текущей ветке Удалить ветку — диалог выбора ветки; удаление — необратимое действие, поэтому требует подтверждения Операции с файлами Помимо быстрого коммита в один шаг, файлами можно управлять по отдельности: Индексировать файл — отметить незакоммиченный файл для включения в следующий коммит. У каждого элемента списка есть своя кнопка Unstage файл — вернуть отмеченный файл в незакоммиченные: кнопка Unstage на отмеченном файле Undo файл — вернуть отдельный файл к состоянию последнего коммита: значок undo на незакоммиченных файлах Undo All — вернуть все незакоммиченные изменения по всем файлам и удалить новые (неотслеживаемые) файлы: кнопка на панели инструментов справа Статусы файлов обновляются в реальном времени. Индексация и отмена сразу отражаются на экране — ждать следующего цикла обновления не нужно. Просмотр diff Diff — это сравнение «было/стало»: полная разница между текущей версией файла и последней закоммиченной, с подсветкой синтаксиса. Нажмите на любой путь к файлу в списке, чтобы открыть диалог diff. Диалог diff предлагает: Путь к файлу в заголовке диалога Переключатель режима просмотра — side-by-side (старая и новая версии рядом) или line-by-line (единый вид с чередованием добавлений и удалений) Кнопка Edit — открывает файл в редакторе файлов, чтобы вносить изменения напрямую Адаптация под тему — автоматически подстраивается под тёмную или светлую тему Для бинарных файлов (включая базы данных SQLite) показывается «Binary file — diff not available» — сравнение таких файлов невозможно. Страница коммитов Кнопка коммитов (со счётчиком) на панели инструментов Git открывает страницу коммитов — полную историю изменений выбранного репозитория. Фильтр и навигация Вверху страницы — панель фильтрации с полем поиска по сообщениям коммитов. При фильтрации по ветке (через действие «Осмотреть ветку») появляется метка с именем активной ветки. Кнопка обновления подтягивает и привязывает новые коммиты. Список коммитов Коммиты показываются постранично (по 10). У каждой записи: Заголовок сообщения коммита Относительное время, имя ветки и короткий хеш коммита (уникальный идентификатор) Значок чата, если коммит связан с разговором Нажмите на любой коммит — откроются полные детали, включая diff всех файлов, изменённых в этом коммите. Страница поддерживает постраничную навигацию и показывает общее число коммитов. Связывание чата и коммита Когда агент создаёт коммит через быстрый коммит в репозитории проекта, он автоматически привязывается к текущему разговору в чате. История Git соединяется с историей обсуждений: от любого коммита можно вернуться к разговору, который его создал. Так видно, как принимались решения и какой контекст привёл к каждому изменению. ← Сборка и развёртывание Настройки → ### MCP-серверы MCP (Model Context Protocol) — это открытый стандарт, который позволяет подключить к Pastukhov Agent внешние сервисы и источники данных: базы данных, файловые системы, веб-сервисы, поиск и многое другое. MCP-сервер — это небольшая отдельная программа-«посредник», через которую агент получает доступ к такому сервису. Агенту не нужно иметь встроенный код для каждого сервиса — достаточно описать сервер по стандарту MCP, и модель сможет им пользоваться в разговоре. Сначала подумайте о навыках. Если острой необходимости нет, используйте скрипты внутри навыков — они дают тот же доступ к внешним данным и инструментам. Почему: MCP-сервер добавляет в контекст модели все свои определения функций и длинные описания, и эти «накладные расходы» оплачиваются на каждом шаге работы. Навыки же загружаются только когда нужны, поддерживают постепенное раскрытие параметров (детали инструментов подгружаются лишь при реальном вызове) и дают полный контроль: если видите, что модель снова и снова ошибается при вызове инструмента, вы можете просто поправить его описание. Кроме того, часто проще попросить модель написать небольшой Python-скрипт для доступа к базе или файлам, чем искать подходящий MCP-сервер и «уговаривать» модель использовать его нужным образом. Именно так редактируется весь этот сайт: создание и отладка скриптов для WordPress заняли меньше десяти сообщений, и результат не только работает, но и легко отлаживается и дорабатывается. Как это работает MCP-серверы работают как отдельные процессы и общаются с Claude Code по стандартизированному протоколу. Pastukhov Agent хранит их настройки в файле .pastukhov/mcp.yml и синхронизирует его с командной строкой Claude Code, обновляя настройки MCP уровня проекта (глобальные настройки при этом не затрагиваются). При старте разговора Claude Code подключается ко всем включённым серверам, и их инструменты становятся доступны модели наравне со встроенными. Подключение может идти тремя способами (типами транспорта): STDIO — сервер запускается как локальный процесс на вашем компьютере или сервере. Самый распространённый способ для серверов на Node.js и Python; HTTP — подключение к удалённому серверу через интернет (для облачных MCP-сервисов); SSE — подключение через технологию Server-Sent Events; устаревший способ, постепенно заменяется на HTTP. Окно MCP-серверов Окно MCP-серверов открывается из главного меню. В нём две основные области: Список серверов (левая панель) — все настроенные серверы, сгруппированные по источнику: управляемые приложением (настроены через Pastukhov Agent), внешние (настроены прямо в Claude CLI) и серверы плагинов. У каждого сервера — имя и индикатор состояния (зелёная точка — включён). Панель конфигурации (правая панель) — настройки выбранного сервера: просмотр и изменение. В заголовке окна — действия с настройками: Копировать все серверы (выгрузить конфигурацию в буфер обмена в формате JSON), Вставить (загрузить конфигурацию из буфера обмена) и Обновить (перечитать список серверов из командной строки Claude Code). Добавление MCP-сервера Как добавить новый сервер: Откройте окно MCP-серверов из главного меню; Нажмите Добавить сервер на панели списка; Введите уникальное имя сервера (имена не должны повторяться); Заполните параметры сервера на панели конфигурации; Нажмите Сохранить изменения. Новый сервер создаётся с транспортом STDIO и пустой командой. Выберите подходящий тип транспорта и заполните нужные поля. Поля конфигурации Набор полей зависит от выбранного типа транспорта: STDIO-серверы Type — тип транспорта stdio для локальных серверов; Command — команда запуска сервера (например, npx -y @modelcontextprotocol/server-github). Команда автоматически делится на исполняемый файл и аргументы; Environment Variables — переменные окружения, которые получает сервер (например, GITHUB_TOKEN для GitHub-сервера). HTTP / SSE-серверы Type — тип транспорта http или sse для удалённых серверов; URL — адрес сервера (например, https://mcp.context7.com/mcp); Headers — дополнительные заголовки запросов (например, ключ CONTEXT7_API_KEY для входа). Общие поля Enabled — включать или выключать сервер, не удаляя его настройки; Rename — переименовать сервер, сохранив его конфигурацию; Delete — удалить сервер (с подтверждением). Файл конфигурации Настройки MCP-серверов хранятся в файле .pastukhov/mcp.yml в папке вашего проекта. Файл можно смело сохранять в системе контроля версий: по умолчанию в нём нет секретов (ключи API обычно подставляются из переменных окружения). version: 1.0 servers: context7: enabled: true type: http url: https://mcp.context7.com/mcp headers: CONTEXT7_API_KEY: $CONTEXT7_API_KEY github: enabled: true type: stdio command: npx -y @modelcontextprotocol/server-github env: GITHUB_TOKEN: $GITHUB_TOKEN Запись $ИМЯ_ПЕРЕМЕННОЙ означает ссылку на переменную окружения системы: само значение остаётся вне репозитория. О подстановке переменных подробнее — на странице Модели. Синхронизация: при сохранении изменений в окне Pastukhov Agent записывает обновлённую конфигурацию в .pastukhov/mcp.yml и автоматически синхронизирует её с командной строкой Claude Code (команды claude mcp add и claude mcp remove). Обновлённый список серверов модель использует сразу — перезапускать ничего не нужно. Импорт и экспорт Окно MCP умеет переносить настройки серверов через буфер обмена — удобно, когда нужно поделиться серверами между проектами: Копировать все серверы — выгружает всю конфигурацию серверов в буфер обмена в формате JSON; Копировать один сервер — клик правой кнопкой мыши по серверу в списке и выбор копирования: выгружается только этот сервер; Вставить — загружает JSON из буфера обмена. Если имена серверов совпадают с уже существующими, приложение спросит: заменить существующий сервер или пропустить импорт. Если что-то не работает Сервер не появляется в списке доступных — нажмите Обновить в заголовке окна, чтобы перечитать список из Claude Code CLI. Если сервер выключен — включите его и сохраните. STDIO-сервер не запускается — проверьте, что команда верна и нужная среда (Node.js, Python и т. п.) установлена. Команда должна быть полной, вместе с аргументами (например, npx -y @modelcontextprotocol/server-github). Ошибки подключения HTTP-сервера — проверьте, что адрес верен и доступен с вашего сервера, а все нужные заголовки (ключи API, токены входа) заполнены. Ошибки синхронизации — если Pastukhov Agent не может синхронизироваться с Claude Code CLI, проверьте путь установки Claude Code. При необходимости задайте собственный путь переменной AGENT_CLAUDE_PATH (см. Модели). Переменная окружения не подставляется — убедитесь, что переменная задана в системном окружении или конфигурации Docker, а не только в переменных Pastukhov Agent. Запись $ИМЯ_ПЕРЕМЕННОЙ в mcp.yml читается именно из системного окружения. ← Советы и устранение проблем Хуки → ### MiniAgent MiniAgent — встроенный кодинг-агент: полностью самостоятельная «обвязка», вшитая прямо в Pastukhov Agent (библиотека на C#, минималистичный агент в духе Pi, переписанный с нуля). Ей не нужна внешняя программа и ей нечего устанавливать — Pastukhov Agent и MiniAgent представляют собой единое целое и полностью самодостаточны «из коробки». MiniAgent — часть системы обвязок Pastukhov Agent и выбирается переменной AGENT_BACKEND=mini. Общий обзор обвязок — на странице Обвязки. Почему это важно для бизнеса Обычные обвязки — это сторонние программы, которые скачиваются и устанавливаются через менеджер пакетов. MiniAgent устроена иначе: она живёт внутри самого Pastukhov Agent, поэтому: Независимость от сторонних разработчиков. Работа агента не зависит от чужих проектов и их обновлений — движок всегда под рукой у сервера. Безопасность поставки. Никакой установки пакетов из сторонних источников — исчезает сам риск получения скомпрометированного установочного пакета. Самодостаточность «из коробки». MiniAgent уже внутри продукта: нечего скачивать, устанавливать и обновлять отдельно. Всё на вашем сервере. Агент работает там же, где и Pastukhov Agent: данные не покидают вашу инфраструктуру. Возможности Это полноценный агент со всем, что нужно для реальной работы: Инструменты read, write, edit, bash, parallel_bash, grep, find, ls, glob, load_skill и todo_write — чтение, правка и создание файлов, запуск команд, поиск и загрузка навыков; Постоянные сессии — диалог сохраняется в формате JSONL и возобновляется после перезапуска; Переключение модели и уровня размышлений на лету — прямо посреди диалога, ничего не теряя; Автоматическое сжатие контекста — длинные разговоры не «забывают» начало; Повторы при временных сбоях провайдера и защита от потери ответа; Подсчёт токенов и стоимости — в чате и в аналитике; Контекст проекта — сам читает CLAUDE.md/AGENTS.md (приоритет у CLAUDE.md) и сам находит навыки .claude/skills; Интерактивные формы и кнопки (agent.form/agent.button) — прямо в системном промпте, без отдельных дополнений. Примечание: передача изображений в чат пока не подключена — картинки при отправке игнорируются с предупреждением в логе. Подключение MiniAgent выбирается переменной AGENT_BACKEND=mini. Проще всего создать модель из готового шаблона провайдера, где обвязка MiniAgent уже есть: Anthropic, DeepSeek, z.ai, BigModel, OpenRouter, xAI, MiniMax, Moonshot, OpenAI, OpenCode Go/Zen. Шаблон сам подставит обвязку и параметры подключения: MINI_BASE_URL — адрес провайдера; MINI_API — формат протокола: anthropic-messages или openai-completions; MINI_AUTH — тип авторизации: api-key или bearer; MINI_API_KEY — ключ доступа. Модель задаётся в формате «провайдер/модель:мышление», например MODEL=anthropic/claude-sonnet-5:medium. Суффикс :thinking задаёт уровень размышлений: off, minimal, low, medium, high. Модель, которой нет в шаблоне, соберётся автоматически по параметрам выше; при наличии файла ~/.mini/models.json (формат, совместимый с Pi) приоритет у него. Если модель не задана вовсе, используется deepseek/deepseek-v4-flash. Провайдера по умолчанию можно указать переменной MINI_PROVIDER — она используется, когда в имени модели нет префикса «провайдер/». Данные Данные MiniAgent хранятся в папке ~/.mini (переопределяется переменной MINI_AGENT_DIR): models.json — конфигурация моделей; agent-sessions — сессии в формате JSONL; skills — дополнительные навыки; CLAUDE.md — глобальный контекст. Профили MiniAgent Профиль — именованный набор настроек встроенного агента: какие контекстные файлы загружать, какими инструментами разрешено пользоваться, как долго может выполняться один вызов и какой токеновый потолок стоит у запросов. Профили позволяют держать несколько режимов работы одного проекта: «безопасный» без bash для чувствительных репозиториев, «черновой» с большим таймаутом для тяжёлых задач, «только чтение» для ревью — и переключаться между ними просто сменой модели. Профили живут в файле miniagent.yml в папке бренда проекта (.xedant/ или .pastukhov/). Корневая карта profiles: — ключом служит имя профиля, значением — его настройки: # miniagent.yml profiles: safe: # безопасный режим: без bash, короткий таймаут disabledTools: - bash toolCallTimeout: 60 loadAgentsMd: false readonly: # только чтение: разрешены лишь поисковые инструменты enabledTools: - read - grep - find - glob - ls Модель выбирает профиль суффиксом mini:имя в переменной AGENT_BACKEND конфигурации модели на странице Модели — например, AGENT_BACKEND=mini:safe. Имя профиля приводится к нижнему регистру и ищется без учёта регистра; легаси-псевдоним mini-agent:safe тоже работает. Обычное AGENT_BACKEND=mini без суффикса, пустой суффикс или несуществующее имя дают встроенные настройки по умолчанию — об отсутствующем профиле записывается предупреждение в журнал. Суффикс с двоеточием понимает только обвязка MiniAgent, остальные обвязки принимают AGENT_BACKEND целиком. Настройки профиля Каждое поле профиля необязательно: пропущенное поле, пустой профиль {} или отсутствующий файл означают встроенные значения по умолчанию. ПолеТипДефолтЧто делаетloadClaudeMdbooltrueзагружает CLAUDE.md в контекстloadAgentsMdbooltrueзагружает AGENTS.md в контекстenabledToolsсписок имённет (включены все 11)белый список инструментов; пустой список — ошибка; несовместим с disabledToolsdisabledToolsсписок имённет (все включены)денy-лист инструментов; несовместим с enabledToolstoolCallTimeoutint, сек300потолок одного вызова инструментаmaxOutputTokensint131072потолок выходных токенов запроса; перекрывает maxTokens моделиthinkingBudgetint65536бюджет размышлений для всех уровней мышления, кроме off; применяется на серверах anthropicparallelBashThreadsint5сколько команд одного вызова parallel_bash исполняется одновременноsystemPromptстрокавстроенныйзаменяет встроенный базовый системный промпт; пустой — тоже встроенныйsessionHeaderстроканет (X-Agent-Session, на opencode — X-Opencode-Session)имя HTTP-заголовка, в котором каждый запрос к провайдеру несёт идентификатор сессии; запись headers в models.json с тем же именем имеет приоритет Имена инструментов — ровно 11 встроенных: read, bash, parallel_bash, edit, write, grep, find, glob, ls, load_skill, todo_write. Оба списка enabledTools и disabledTools в одном профиле — ошибка (одновременно и в yml, и в переменных окружения): разрешать и запрещать один и тот же инструмент бессмысленно. Пустой enabledTools отклоняется — он оставил бы профиль вообще без инструментов, а пустой disabledTools даёт только предупреждение. Приоритет каждой настройки: переменная окружения > профиль > встроенный дефолт. Профиль накладывается поверх дефолтов, а переменная — поверх профиля. Заголовок сессии. Каждый запрос к провайдеру несёт идентификатор сессии в HTTP-заголовке — принимающий провайдер может различать чаты MiniAgent: группировать трафик, ограничивать частоту запросов или вести временное хранилище по сессии, не разбирая переписку. По умолчанию заголовок называется X-Agent-Session, на провайдерах opencode (имя провайдера начинается с opencode или адрес на opencode.ai) — X-Opencode-Session. Имя меняется полем sessionHeader профиля или переменной MINI_PROFILE_SESSION_HEADER; явная запись headers в models.json с тем же именем главнее автоматической отправки. У ключа sessionHeader нет редактора в диалоге настроек — его вписывают вручную в miniagent.yml или задают переменной, диалог передаёт вручную заданное значение без изменений. Запрос, отправленный до появления идентификатора сессии, заголовка не несёт. Переменные окружения Любую настройку профиля можно переопределить на уровне процесса переменной MINI_PROFILE_* — она применяется поверх выбранного профиля (или дефолтов, если профиль не задан): ПеременнаяПереопределяетMINI_PROFILE_LOAD_CLAUDE_MDloadClaudeMdMINI_PROFILE_LOAD_AGENTS_MDloadAgentsMdMINI_PROFILE_ENABLED_TOOLSenabledTools (имена через запятую)MINI_PROFILE_DISABLED_TOOLSdisabledTools (имена через запятую)MINI_PROFILE_TOOL_CALL_TIMEOUTtoolCallTimeoutMINI_PROFILE_MAX_OUTPUT_TOKENSmaxOutputTokensMINI_PROFILE_THINKING_BUDGETthinkingBudgetMINI_PROFILE_PARALLEL_BASH_THREADSparallelBashThreadsMINI_PROFILE_SYSTEM_PROMPTsystemPromptMINI_PROFILE_SESSION_HEADERsessionHeader Пустое значение переменной считается не заданным — настройка берётся из профиля или дефолта, так что «очистить» переопределение можно пустой строкой. Обе list-переменные одновременно (MINI_PROFILE_ENABLED_TOOLS и MINI_PROFILE_DISABLED_TOOLS) — жёсткая ошибка, как и неразбираемое значение (не true/false, не положительное число): сессия не создастся, а в ошибке будет названа сама переменная. Пример — Docker-контейнер с таймаутом вызова 120 секунд и запретом bash для всех чатов: docker run -e MINI_PROFILE_TOOL_CALL_TIMEOUT=120 \ -e MINI_PROFILE_DISABLED_TOOLS=bash \ pastukhov/agent Инструмент parallel_bash parallel_bash — инструмент MiniAgent для запуска нескольких независимых команд одним вызовом. Модель сама решает, какие команды не зависят друг от друга (этот контракт независимости зафиксирован в описании инструмента), и объединяет их в один вызов: parallel bash: - git status --short - ls pages/ | wc -l - df -h /project Команды исполняются конкурентно: parallelBashThreads (дефолт 5) ограничивает, сколько команд выполняется одновременно, остальные ждут в очереди. Вызов завершается после ответа всех команд, а результат возвращает упорядоченные секции [i] command — по одной на команду, в порядке ввода, что позволяет агенту сопоставить каждый вывод со своей командой. Тривиальная разница с bash: bash исполняет одну команду, parallel_bash — пакет; оба работают на общем ядре ShellCommand, и поведение bash не изменилось. Диалог профилей в настройках Диалог открывается с карточки «MiniAgent» группы Configuration в центре настроек (шестерёнка в шапке) — подробнее о хабе на странице Настройки. Диалог редактирует тот же miniagent.yml, что и текстовый YAML-редактор, но как форму: Список профилей — создание, переименование и удаление. Имя подчиняется маске ^[a-z0-9][a-z0-9_-]*$: строчная буква или цифра, дальше строчные буквы, цифры, дефисы и подчёркивания — оно же становится суффиксом mini:имя; Редактор профиля — переключатели loadClaudeMd/loadAgentsMd, переключатели инструментов с итогом «N of M tools enabled» (меняют disabledTools), числовые поля с подсказками дефолтов и редактор системного промпта с предпросмотром встроенного. Кнопка Reset to default очищает текст промпта — встроенный берётся заново при каждом обновлении приложения, а не копируется; Сводка встроенных дефолтов — показана рядом со списком; Защита от конфликтов — каждое сохранение проходит проверку контрольной суммы (md5): если файл успел измениться (правка в другом клиенте, текстовом редакторе или вкладке Project Settings), сервер отвечает 409 с предложением перезагрузить диалог — правки не затираются молча; Та же валидация, что у YAML — и сохранение из формы, и правка текстом проходят одни и те же правила (имена профилей, взаимоисключение списков, диапазоны чисел) и дают одинаковые ошибки; валидатор работает как псевдо-сборка. Настройки фиксируются при создании сессии: живой чат работает с тем профилем, с которым был создан, а правки применяются к новым сессиям — переключение профиля или модели пересоздаёт сессию. Ещё одна тонкость: если в профиле отключён инструмент load_skill, из системного промпта пропадает строка «Start by loading the skill» — требовать загрузку навыка инструментом, которого нет, бессмысленно. Практический пример Профиль «safe» — bash выключен, таймаут вызова 60 секунд. Создайте его в диалоге: Настройки → Configuration → MiniAgent → «Добавить профиль», имя safe, выключите переключатель bash и поставьте toolCallTimeout: 60, сохраните. Эквивалентный файл: profiles: safe: disabledTools: - bash toolCallTimeout: 60 Теперь назначьте его модели: в мастере моделей на странице Модели задайте переменную AGENT_BACKEND=mini:safe (в yml — строка в списке variables:). Чаты на этой модели будут работать без запуска shell-команд и ограничат каждый вызов инструмента 60 секундами — всё остальное останется встроенным. Связанные страницы Настройки — карточка MiniAgent и хаб настроек; Модели — переменная AGENT_BACKEND и выбор профиля моделью; Навыки — навыки в чате и инструмент load_skill. ← Назад: Обвязки Далее: Советы и устранение проблем → ### SSL-сертификаты Когда агент работает по адресу вашего домена, соединение с ним стоит защитить: HTTPS-протокол шифрует трафик, а браузер показывает настоящий адрес сайта и «замочек» вместо предупреждений о небезопасном соединении. Обычно для этого нужны сторонние программы и ручные настройки, но Pastukhov Agent умеет выпускать бесплатные SSL-сертификаты Let's Encrypt прямо из своего веб-интерфейса — без Docker-контейнеров, дополнительных программ и ручного размещения проверочных файлов. Откройте в приложении страницу /ssl, укажите домен и email — сертификат будет получен автоматически и сохранён в папке конфигурации проекта (.pastukhov/ssl/ или .xedant/ssl/). Как это работает Встроенный ACME-клиент. Сертификат выпускается по открытому протоколу ACME — это технология автоматической выдачи сертификатов, по которой работают центры вроде Let's Encrypt. Приложение само выступает в роли клиента ACME (встроенная библиотека Certes работает прямо в его процессе) — отдельный certbot или Docker-команды не нужны. Проверка владения доменом (HTTP-01). Центр должен убедиться, что домен действительно ваш: он запрашивает одноразовый код по адресу http://{домен}/.well-known/acme-challenge/{код}. Пока проверка активна, приложение само отвечает на этот запрос — вам ничего размещать не нужно. Сохранение файлов. Готовые сертификаты сохраняются в подпапке домена внутри папки SSL: fullchain.pem (полная цепочка сертификата) и privkey.pem (закрытый ключ). Ключ ACME-аккаунта (account-key.pem) сохраняется один раз и переиспользуется для последующих запросов. Прогресс в реальном времени. Каждый шаг процесса отображается в интерфейсе мгновенно (обновления приходят по технологии SignalR) — вы видите текущее состояние: от регистрации аккаунта до сохранения сертификата. Получение сертификата Откройте страницу /ssl вашего экземпляра Pastukhov Agent. Укажите домен (например, agent.example.com) и email для регистрации ACME-аккаунта. Email браузер запоминает и подставляет автоматически при следующих обращениях. Отметьте «Использовать тестовый сервер» только для экспериментов — тестовые сертификаты браузеры не принимают, для настоящей работы галочку снимать нельзя. Нажмите «Получить сертификат» — приложение зарегистрирует ACME-аккаунт, создаст заказ, пройдёт проверку владения доменом и сохранит файлы сертификата. Прогресс отображается пошагово: регистрация аккаунта → создание заказа → настройка проверки → подтверждение домена → генерация сертификата → сохранение файлов. Повторные запросы для того же домена допустимы — файлы перезаписываются, а существующий ACME-аккаунт переиспользуется. Проверка текущего сертификата Кнопка проверки рядом с полем домена показывает, какой сертификат установлен на домен в данный момент: кому он выдан и кем, период действия и сколько дней осталось (подсвечивается жёлтым, если осталось меньше 30 дней). Если сертификата нет — появляется соответствующее предупреждение. Список сертификатов и удаление Все выпущенные сертификаты перечислены на странице /ssl: домен, дата выдачи, срок действия и имена сохранённых файлов. Ненужный сертификат можно удалить одной кнопкой. Что нужно для выпуска Домен (или поддомен) должен указывать на IP-адрес сервера, где запущен Pastukhov Agent; Порт 80 (HTTP) должен быть доступен снаружи — через него Let's Encrypt проводит проверку; Для настоящих выпусков действуют лимиты Let's Encrypt (порядка 5 сертификатов на домен в неделю) — для экспериментов используйте тестовый сервер. Самоподписанный сертификат (без домена) Если у вас нет домена — например, агент работает на сервере по IP-адресу или в локальной сети, — Let's Encrypt неприменим: без домена нельзя доказать владение. Для таких случаев есть встроенный режим самоподписанного сертификата: HTTPS включается одним переключателем, без регистрации и внешних сервисов. Браузер не может проверить, что такой сертификат выпущен доверенным центром, поэтому при первом заходе покажет предупреждение о безопасности — его нужно один раз пропустить (кнопка «Продолжить на сайт»). После этого соединение шифруется полноценно: пароли, токены и содержимое чатов защищены от перехвата в пути. Как включить. Достаточно задать переменную окружения AGENT_SSL=auto при запуске. Переменные окружения — это параметры запуска: вы задаёте их один раз, и приложение применяет их автоматически. При старте приложение само сгенерирует сертификат (срок действия — 5 лет, продлевать не нужно) и начнёт слушать HTTPS-порт: AGENT_SSL_PORT — порт для HTTPS (по умолчанию — номер HTTP-порта + 1, например, HTTP на 8080 → HTTPS на 8081); сертификат сохраняется в папке .pastukhov/ssl/auto/ (fullchain.pem + privkey.pem) и при последующих запусках переиспользуется, пока действует; в сертификат автоматически включаются все имена хостов и IP-адреса сервера — он подойдёт для обращения и по IP, и по имени в локальной сети; HTTP при этом продолжает работать как раньше — оба протокола доступны одновременно. Переменная AGENT_SSL_DOMAINS позволяет явно перечислить через запятую домены/IP, которые нужно добавить в сертификат (используется в Docker-контейнерах MultiAgent, где имя хоста и адреса внутри контейнера не совпадают с тем адресом, по которому к агенту обращается браузер). Какой вариант выбрать: если у вас есть домен и доступный порт 80 — используйте Let's Encrypt (сертификат доверенный, предупреждений в браузере не будет); если домена нет или доступ только по IP — включите самоподписанный сертификат. Подключение к nginx После выпуска подключите сертификат в конфигурации вашего веб-сервера. Пример для nginx (пути — относительно корня проекта, где хранится папка .pastukhov): server { listen 443 ssl; server_name agent.example.com; ssl_certificate /srv/pastukhov/.pastukhov/ssl/agent.example.com/fullchain.pem; ssl_certificate_key /srv/pastukhov/.pastukhov/ssl/agent.example.com/privkey.pem; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto https; } } Автоматического продления (auto-renewal) в приложении пока нет — обновляйте сертификат заново через страницу /ssl до истечения срока. Let's Encrypt выпускает сертификаты на 90 дней. ### Telegram Bot Pastukhov Agent может работать как Telegram-бот, позволяя вам взаимодействовать с AI через Telegram. Бот создаёт, управляет и возобновляет чаты, пересылает ответы AI, поддерживает AskUserQuestion с inline-кнопками и отображает прогресс вызовов инструментов — всё внутри Telegram. Обзор Интеграция работает как фоновый сервис внутри Pastukhov Agent. Бот сам опрашивает серверы Telegram (технология long polling) и подписан на события чата, поэтому ответы ИИ пересылаются в Telegram автоматически. Двусторонний обмен — промпты из Telegram попадают в очередь сообщений, ответы AI пересылаются обратно в Telegram Управление чатами — создание, остановка, возобновление и просмотр чатов через команды AskUserQuestion — вопросы Claude отображаются с inline-кнопками для выбора ответа Прогресс инструментов — опциональное отображение вызовов инструментов с индикаторами состояния Рассуждения модели — опциональная отправка thinking-сообщений курсивом Выбор навыков — команда /skill для переключения активного навыка Настройка Настроить бота можно двумя способами: через диалог настроек (рекомендуется) или вручную через файл конфигурации. Через диалог настроек Откройте настройки → карточка «Основной Telegram-бот» в группе «Автоматизация». Включите бота, введите токен от @BotFather, укажите веб-URL и настройте ограничения доступа. Подробнее см. Настройки → Основной Telegram-бот. Через telegram.yml Создайте файл .pastukhov/telegram.yml в корне проекта: telegram: enabled: true botToken: $TELEGRAM_BOT_TOKEN # или прямое значение токена webUrl: https://code.example.com allowedUserIds: # пусто = доступ заблокирован - 123456789 showToolCalls: false showThinking: false Токен бота поддерживает подстановку переменных окружения через префикс $. Это рекомендуемый способ — храните токен в переменной окружения, а в файле конфигурации указывайте только ссылку на неё. Бот перезапускается автоматически при сохранении конфигурации. Ошибки подключения не блокируют запуск приложения — бот просто отключается, а Pastukhov Agent продолжает работать. HTTP-прокси Если ваш сервер не имеет прямого доступа к Telegram API, вы можете настроить HTTP-прокси через переменную окружения: # Поддерживается формат с авторизацией AGENT_TELEGRAM_HTTP_PROXY=http://user:password@proxy.example.com:8080 Бот автоматически определяет и применяет прокси при подключении к Telegram API. Команды Бот автоматически регистрирует меню команд в Telegram — начните вводить / для автодополнения. /new [заголовок] — Создаёт новый чат. Опциональный заголовок задаёт название чата. Возвращает ссылку на чат в веб-интерфейсе. Новый чат автоматически становится активным. /stop — Останавливает текущий активный чат. Отправляет сигнал остановки экземпляру Claude Code. /resume — Показывает список из 20 последних чатов. Каждый чат отображается как /resume {id} для быстрого возобновления. /resume <id> — Возобновляет конкретный чат по ID. Возвращает ссылку на чат в веб-интерфейсе. /skill — Показывает список активированных навыков с текущим выбором (✅). /skill <имя> — Устанавливает активный навык. Этот навык будет автоматически загружен при следующем сообщении. /help — Показывает справку со всеми командами. Любое сообщение, не начинающееся с /, отправляется как промпт в активный чат. Если активного чата нет, бот просит создать его через /new. Взаимодействие Ответы AI Ответы Claude автоматически пересылаются в Telegram. Markdown-форматирование (жирный, курсив, код, ссылки, блоки кода, цитаты) конвертируется в Telegram HTML. Длинные сообщения автоматически разбиваются на части по параграфам. Индикатор набора Когда Claude обрабатывает запрос, бот отправляет индикатор «печатает» каждые 4 секунды, показывая, что процесс активен. AskUserQuestion Когда Claude вызывает AskUserQuestion (вопрос пользователю), бот показывает его с кнопками: каждому варианту ответа — своя кнопка. Поддерживаются вопросы с одним выбором и с несколькими вариантами. После выбора кнопка помечается галочкой ✓, а кнопка «▶ Продолжить» отправляет выбранные ответы Claude. Вызовы инструментов При включённом параметре showToolCalls бот показывает ход выполнения инструментов в одном обновляемом сообщении. Каждый инструмент — с коротким описанием (путь файла для Read/Write/Edit, команда для Bash, шаблон для Grep) и индикатором состояния: ⏳ (выполняется), ✅ (завершён), ❌ (ошибка). Ошибки и запросы разрешений также отправляются в Telegram с соответствующими иконками (⚠️ для ошибок, 🔐 для разрешений). Telegram Tag: управление агентом в групповых чатах Бота можно добавить в любой групповой чат и управлять агентом, обращаясь к нему по @username бота или по никнеймам, которые вы задаёте сами. Это аналог Claude Tag от Anthropic: один общий агент на группу, любой авторизованный участник может поставить ему задачу, а работает он асинхронно с общим контекстом. Можно добавить в один чат несколько ботов (по одному на каждый Pastukhov Agent/проект) и обращаться к каждому по его имени — так в одном общем чате вы управляете несколькими агентами одновременно, с независимыми настройками доступа. Обращение по имени — агент реагирует на упоминание @username бота или на один из ваших никнеймов в начале сообщения Один общий чат на группу — все участники работают с единым контекстом; навык и модель хранятся на уровне группы Гибкий доступ — видят переписку все, а управлять агентом могут только разрешённые пользователи Совместная работа — агент может читать историю чата группы через дневные транскрипты Как обратиться к агенту В групповом чате бот реагирует, когда вы упоминаете его в начале сообщения — по @username бота (если включено matchBotUsername) или по одному из настроенных никнеймов. Всё, что идёт после триггера, становится командой или свободным промптом: john напиши релиз-ноут # john — никнейм → задача в общий чат john new # новый общий чат для группы john stop # остановить текущий запуск @mybot подведи итоги за сегодня # обращение по @username бота Никнеймы должны соответствовать ^[A-Za-z0-9_]+$ и сопоставляются по границам слов (johnny ≠ john); регистр по умолчанию не учитывается. Голый триггер без текста (например, просто john) выводит справку. Доступ и видимость Главное правило общих чатов — кто видит, а кто может управлять: Добавить может любой — любой участник может добавить бота в чат. Бот открыт в любой группе и получает все сообщения. Управляют только разрешённые — давать задачи и команды могут только пользователи из allowedUserIds (тот же список, что и для личных чатов). Пустой список означает, что бот в группе не реагирует ни на кого. Видят все — все участники видят запросы и ответы агента прямо в чате. Неавторизованные упоминания игнорируются молча, без лишних сообщений. Записывается всё — вся переписка группы попадает в транскрипты независимо от того, кто пишет (см. ниже). Команды в группе Команды те же, что и в личных чатах, но вызываются через упоминание и применяются к общему чату группы (навык и модель — на уровне группы, а не пользователя): <триггер> new [заголовок] — новый общий чат для группы; навык и модель переносятся автоматически <триггер> stop — остановить текущий запуск <триггер> resume — список последних чатов группы (каждый — как <триггер> resume <id>) <триггер> resume <id> — возобновить конкретный чат по ID <триггер> skill — показать активированные навыки группы (текущий отмечен ✅) <триггер> skill <имя> — выбрать навык группы <триггер> model / <триггер> model <имя> — показать или выбрать модель <триггер> help — справка по командам группы Любой другой текст после триггера отправляется как промпт в общий чат. Ответы публикуются ответом (reply) на ваше сообщение. В группе одновременно выполняется только один запрос — обращения выстраиваются в очередь, по одной задаче за раз. История чата и совместная работа Чтобы агенты могли по-настоящему совместно работать, бот ведёт дневные транскрипты всей переписки группы: каждое сообщение (включая ответы самого агента, медиа, ответы и пересланные сообщения) дописывается в markdown-файл .pastukhov/tag/{ID группы}/{дата}.md. Эти файлы добавляются в .gitignore и никогда не попадают в коммиты. К каждому свободному промпту в группе автоматически добавляется указатель на папку транскриптов, чтобы агент мог прочитать историю чата и опираться на неё при выполнении задачи: If required by the task, management chat transcripts are at .pastukhov/tag/{ID группы} Поэтому можно ставить задачи вида «напиши релиз-ноут по тому, что мы обсуждали сегодня» — и агент сам найдёт нужный контекст в истории группы. Суффикс добавляется только к свободным промптам в группе; личные чаты и веб-интерфейс не затрагиваются. Текст суффикса настраивается параметром transcriptContextSuffix — в нём должен быть токен {path}. ⚠️ Для накопления транскриптов у бота должен быть отключён Privacy Mode — иначе бот в группе получает только команды, упоминания и ответы, а не всю переписку. Отключите Privacy Mode в @BotFather (/setprivacy → Disable) или сделайте бота администратором группы. Настройка Telegram Tag Telegram Tag включается отдельным блоком tag в telegram.yml: telegram: enabled: true botToken: $TELEGRAM_BOT_TOKEN allowedUserIds: # кто может управлять ботом (и в ЛС, и в группах) - 123456789 tag: enabled: true # включить Telegram Tag nicknames: [john, dev] # триггер-слова (буквы, цифры, _) matchBotUsername: true # реагировать на @<username бота> caseSensitive: false # учитывать регистр никнеймов recordTranscripts: true # вести дневные транскрипты transcriptContextSuffix: "If required by the task, management chat transcripts are at {path}" respondInReply: true # отвечать reply на триггер Те же параметры доступны в диалоге настроек → секция «Telegram» → блок «Telegram Tag»: редактор никнеймов, переключатели и предупреждение о Privacy Mode. Изменения применяются автоматически при сохранении. Безопасность White-list доступ — поле allowedUserIds ограничивает доступ к боту конкретным пользователям по Telegram user ID. Неавторизованные пользователи получают сообщение с инструкцией для администратора. Пустой список — если allowedUserIds не задан или пуст, бот отклоняет все запросы с сообщением, содержащим user ID для передачи администратору. Токен через переменные окружения — рекомендуется хранить токен бота в переменной окружения ($TELEGRAM_BOT_TOKEN) вместо прямого указания в файле конфигурации. Изоляция сессий — каждый Telegram-пользователь имеет свою сессию с отдельным активным чатом. Один чат может быть привязан к нескольким Telegram-пользователям, но каждый пользователь работает только со своим активным чатом. Справочник конфигурации telegram.yml enabled (bool, по умолчанию: false) — включение интеграции botToken (string) — токен бота от @BotFather, поддерживает $ENV_VAR webUrl (string) — базовый URL для ссылок на чаты (по умолчанию: http://localhost:5173) allowedUserIds (list[string]) — список разрешённых Telegram user ID showToolCalls (bool, по умолчанию: false) — отображать прогресс вызовов инструментов showThinking (bool, по умолчанию: false) — отображать рассуждения модели tag (object) — настройки режима Telegram Tag для групповых чатов (подробности — в разделе выше). Подполя: tag.enabled (bool, по умолчанию: false) — включить Telegram Tag tag.nicknames (list[string]) — триггер-слова; должны соответствовать ^[A-Za-z0-9_]+$ tag.matchBotUsername (bool, по умолчанию: true) — реагировать на @<username бота> tag.caseSensitive (bool, по умолчанию: false) — учитывать регистр никнеймов tag.recordTranscripts (bool, по умолчанию: true) — вести дневные транскрипты переписки группы tag.transcriptContextSuffix (string) — суффикс-указатель на папку транскриптов; должен содержать токен {path} tag.respondInReply (bool, по умолчанию: true) — публиковать ответы ответом (reply) на триггер Конфигурация автоматически перезагружается при изменении файла. Также можно управлять ботом через REST API (GET/POST /api/telegram/config, GET /api/telegram/status). Переменные окружения AGENT_TELEGRAM_HTTP_PROXY — URL HTTP-прокси для подключения к Telegram API (опционально). Поддерживает авторизацию в URL. Несколько ботов Помимо основного Telegram-бота, можно завести любое количество дополнительных ботов — у каждого своя модель, навык, системный промпт и свой список разрешённых пользователей. Управление — через кнопку «Боты» в верхней панели, конфигурация хранится в bots.yml. Подробнее — Боты. Дополнительные боты особенно удобны вместе с автоматическими задачами: задача по расписанию собирает данные (скрипт), отдаёт их ИИ на разбор, а результат приходит в Telegram через нужного бота — и дальше можно вести диалог прямо в мессенджере. Внутреннее устройство Бот использует отдельную SQLite-базу данных .pastukhov/telegram.db для хранения маппингов между Telegram-чатами и чатами Pastukhov Agent, а также пользовательских сессий (активный чат, выбранный навык). Для групповых чатов (Telegram Tag) в этой же базе хранится общий маппинг группы с её навыком и моделью, а дневные транскрипты переписки пишутся в отдельную папку .pastukhov/tag/. Данные из этой базы не синхронизируются с основной базой проекта. Все Telegram API-вызовы проходят через очередь на чат, которая уважает лимиты Telegram (~1 запрос в секунду на чат). Частые события от инструментов объединяются — отправляется только последнее состояние. ← Назад: Удалённое управление Далее: Настройки → ### Автоисправление Автоисправление — это режим, в котором агент сам следит за проверками вашего проекта и сразу исправляет найденные ошибки. Оно связано с вашими сборками (автоматическими проверками качества кода): когда сборка сообщает об ошибке или предупреждении, Автоисправление упаковывает этот текст в сообщение чата и отправляет модели ИИ на исправление. Получается замкнутый цикл: модель правит код, сборки снова его проверяют, ошибки возвращаются обратно — и так повторяется, пока всё не пройдёт чисто. Для вас это означает, что вручную проверять и чинить код нужно только после того, как агент закончит все свои автоматические исправления. Реализация крупной функции может занять 30–60 минут ожидания, но всё это время полностью ваше: можно заниматься другими задачами или просто отдохнуть. Это и удобство, и спокойствие — вам не нужно реагировать на каждую мелкую ошибку компиляции, линтера или тестов. Вы возвращаетесь к проекту, когда код уже чистый, протестированный и рабочий. Как включить и выключить Переключатель Автоисправление находится в области ввода сообщений — это обычный выключатель вкл/выкл: Включено — агент периодически проверяет сборки. Находит ошибки или предупреждения — добавляет их в чат как сообщение, чтобы модель ИИ их исправила. Выключено — агент не следит за сборками. Ошибки появляются в панели сборки, а вы решаете их вручную: правите сами, спрашиваете ИИ в чате или нажимаете кнопку Отправить в окне результата сборки. Включать и выключать можно в любой момент: включите — когда хотите, чтобы агент сам разбирал ошибки во время разработки; выключите — когда предпочитаете просматривать и устранять их самостоятельно. Как это работает Автоисправление — это фоновая служба: она сама, без вашего участия, периодически опрашивает сборки. Вот что происходит по шагам: Опрос сборок — агент проверяет все сборки по очереди, в порядке зависимостей. Он ищет первую сборку с ошибками или предупреждениями и дожидается, пока завершатся все сборки, от которых она зависит. Приоритет ошибкам — если проблемы есть в нескольких сборках, агент сначала берётся за ошибки, а не за предупреждения. Все ошибки (или все предупреждения) одной сборки отправляются за раз — так модель может исправить их все сразу. Проверка дубликатов — перед отправкой агент смотрит последние 10 ваших сообщений в текущем чате. Если такое же содержимое ошибки уже отправлялось недавно, он пропускает его — чтобы не возникало бесконечных циклов. Добавление в чат — разобранные ошибки помещаются в блок кода с именем файла build.log и уходят как обычное сообщение. Для предупреждений добавляется указание «исправь предупреждения, не игнорируй их». Сообщение попадает в последний активный чат. Модель правит код — получив контекст ошибки, модель анализирует проблему, читает нужные исходные файлы и вносит правки. Сборки перезапускаются — любое изменение файлов автоматически запускает соответствующие сборки, а их результаты снова разбираются на ошибки и предупреждения. Цикл повторяется или завершается — когда сборка прошла успешно, цикл заканчивается, и развёртывание (запуск приложения) автоматически перезапускается уже с исправленным кодом. Если ошибки остались, Автоисправление подхватит их при следующей проверке, и цикл продолжится. Автоисправление работает только тогда, когда модель свободна: оно ждёт, пока агент закончит текущий ответ и обработает все ваши сообщения из очереди, и только потом добавляет сообщения об ошибках. Так автоматические исправления не мешают вашей работе в чате. Промпт-сборки (сборки с тяжёлыми задачами для ИИ) всегда запускаются только после успешного прохождения обычных сборок — чтобы перед сложной работой код был заведомо в порядке. Ошибки и предупреждения С ошибками и предупреждениями агент работает по-разному: Ошибки — отправляются модели как есть. Модель видит текст ошибки и пытается устранить её причину. Предупреждения — отправляются с дополнением «исправь предупреждения, не игнорируй их». Так модель не отмахнётся от них как от несущественных, а реально устранит. Если есть и ошибки, и предупреждения, агент сначала разбирается с ошибками и не трогает предупреждения, пока все ошибки не исправлены. Сначала решаются самые важные проблемы. Тексты ошибок и предупреждений берутся из парсера сборки — того же разобранного вывода, который вы видите в окне результата сборки. Это значит, что Автоисправление использует каждый шаблон парсера, который вы добавили: чем больше инструментов охватывают ваши сборки, тем больше типов ошибок агент способен исправить сам. Ручная отправка ошибок Включать Автоисправление не обязательно, чтобы попросить ИИ исправить ошибки сборки. В окне результата каждой сборки есть кнопка Отправить, которая делает то же самое: Откройте окно результата сборки (нажмите название сборки в панели сборки); Перейдите на вкладку Ошибки или Предупреждения; Нажмите Отправить — содержимое помещается в блок кода build.log и уходит в текущий чат как сообщение. Это удобно, когда Автоисправление выключено, но вы хотите показать модели конкретные ошибки, или когда нужно самому выбрать, что именно отправить, а не отдавать агенту всё подряд. Есть и более быстрый способ починить сам парсер: выделите любой текст в окнах результатов сборки, развёртывания или скриптов (и в панелях, и в диалогах) — появится плавающая кнопка Исправить парсер. Нажатие отправляет выделенный текст модели с подсказкой для нужного файла парсера (build.parser, deploy.parser или output.parser), и модель сама добавит недостающие шаблоны. Чем следить за работой Автоисправление трудится в фоне, но за ним всегда можно наблюдать: История чата — автоматические сообщения появляются в последнем активном чате. Откройте его, чтобы увидеть контекст ошибки, ответ модели и внесённые правки. Панель сборки — видно, как сборки запускаются, выполняются и завершаются, а счётчики ошибок меняются с красного на зелёный по мере их исправления. По значкам ошибок можно открыть подробности. Панель развёртывания — после успешного прохождения всех сборок видно, как приложение перезапускается уже с исправленным кодом. Панель Git — после удачного цикла исправлений изменения видны в панели Git, прежде чем вы их закоммитите или отправите. Заглядывать в работу Автоисправления — хорошая привычка. С большинством рутинных ошибок оно справляется отлично, но иногда вносит правки, которые не совсем подходят вашему проекту. Быстрый взгляд на изменения (diff) перед коммитом гарантирует, что всё выглядит так, как нужно. Совет: если модель при исправлении стабильно повторяет одну и ту же ошибку, попросите её обновить CLAUDE.md или навыки, чтобы в будущем это не повторялось. Чем больше сборок — тем лучше результат Польза Автоисправления напрямую зависит от того, сколько сборок вы настроили. Каждая сборка — это независимая проверка качества со своим понятным перечнем ошибок, и агент может исправить всё, что способен увидеть парсер. Проект только с одной сборкой компиляции даёт Автоисправлению один источник ошибок. Добавьте сборку линтера (проверка стиля кода), сборку проверки типов и сборку запуска тестов — и у агента появятся четыре независимых сигнала. Каждый ловит свой класс проблем — синтаксические ошибки, неаккуратный код, несоответствия типов, логические сбои, — которые остальные могли пропустить. В разделе Creative Builds на странице «Сборка и развёртывание» есть примеры таких проверок: линтеры (eslint, ruff), проверка типов (tsc), запуск тестов (dotnet test), сканеры безопасности (npm audit) и собственные проверки проекта. Каждая добавленная сборка делает Автоисправление сильнее. Настраивать новые сборки вручную не нужно: в .pastukhov/README.md описаны форматы build.yml и build.parser. Просто попросите модель добавить нужные сборки и обновить шаблоны парсера под вывод ваших инструментов. Ограничения Автоисправление — мощная, но не всемогущая функция. Вот его ограничения: По одной сборке за раз — агент берёт первую сборку с проблемами, отправляет все её ошибки или предупреждения и только потом переходит к следующей. Сначала ошибки — предупреждения не отправляются модели, пока не исправлены все ошибки сборки. Защита от повторов — агент проверяет последние 10 сообщений на одинаковое содержимое. Если одни и те же ошибки появляются снова после неудачной попытки исправления, он не станет отправлять их повторно. Это спасает от бесконечных циклов, но значит, что упорные ошибки, которые модель не может исправить, в итоге перестанут сообщаться. Один исправитель за раз — соблюдается ограничение на число одновременных сессий исправления, чтобы не перегружать систему. Ждёт свободной модели — во время активного разговора опрос ошибок приостанавливается и возобновляется, когда агент свободен. Не всё исправимо — некоторые ошибки требуют вашего решения: контекста, бизнес-логики или архитектурных решений, которые знаете только вы. Сложные проблемы, затрагивающие несколько связанных модулей, часто выходят за пределы возможностей Автоисправления. Если Автоисправление не справилось с ошибкой, сессия чата остаётся в истории. Откройте её, посмотрите, что пыталась сделать модель, и дайте ей дополнительные указания — тогда при следующей попытке она добьётся успеха. Когда включать Автоисправление Автоисправление отлично справляется с: Рутинными ошибками сборки, возникшими после недавних правок; Проблемами стиля кода и простыми синтаксическими ошибками; Ошибками типов, у которых есть очевидное решение; Частыми ошибками настройки; Падениями тестов с простыми исправлениями. Автоисправлению может быть трудно с: Ошибками, требующими решений по бизнес-логике или ваших знаний в предметной области; Сложными архитектурными изменениями, затрагивающими несколько модулей; Случаями, когда «исправление» зависит от специфических требований вашего проекта; Ошибками от инструментов, чей вывод парсер сборки не распознаёт — в этом случае попросите модель добавить нужные шаблоны парсера. ← Аналитика Телефон и рабочий стол → ### Аналитика Панель аналитики показывает, как вы пользуетесь ИИ-агентом: сколько запросов отправлено, сколько текста (токенов) потрачено, сколько это стоило и как быстро модель отвечала. Всё отображается на наглядных графиках, которые можно отфильтровать за любой период — за день, неделю или за всё время работы. Это помогает понимать свои расходы и находить закономерности: например, в какие дни вы работаете активнее всего. Что отслеживает аналитика Данные собираются автоматически из ваших чат-сессий — ничего включать и настраивать не нужно, подсчёт начинается с первого сообщения. Панель показывает: Запросы — количество отправленных вами сообщений; Сообщения — общее число сообщений (и ваших, и ответов агента); Использование токенов — сколько текста потрачено: отправленного модели, сгенерированного в ответ, а также записи и чтения из кэша (кэш — это «запоминание» уже обработанного текста, повторное обращение к нему обходится дешевле); Расходы — оценка затрат по тарифам вашего ИИ-провайдера; Скорость ответа — как быстро модель отвечает (в токенах в секунду); Активность коммитов — сколько раз изменения были сохранены в Git через интерфейс; Данные по моделям — те же расходы, токены и скорость, но в разрезе каждой ИИ-модели. Как открыть аналитику Выберите пункт «Аналитика» в главном меню. Панель откроется с выбором периода вверху, карточками ключевых показателей ниже и подробными графиками в сворачиваемых разделах. Обзор панели Вверху — карточки ключевых показателей: главные цифры за выбранный период: Запросы — сколько сообщений вы отправили; Всего токенов — суммарный объём текста: входного, выходного и кэшированного; Общая стоимость — оценочные расходы по всем чатам; Токенов/с — средняя скорость ответа ИИ; Сообщения — всего обменянных сообщений; Коммиты — сколько раз изменения сохранены в Git. Карточки пересчитываются под выбранный период — так удобно сравнивать показатели за разные сроки. Разделы с графиками Ниже карточек идут несколько разделов с графиками. Каждый раздел сворачивается — нажмите на заголовок, чтобы развернуть или свернуть. Открытое/закрытое состояние запоминается в вашем браузере, так что при следующем визите панель вернётся в привычный вид. Использование Самый большой раздел — графики стоимости, запросов и коммитов по времени: Стоимость — расходы во времени с разбивкой: входной текст, выходной текст, запись и чтение кэша; Стоимость по моделям — как расходы распределяются между ИИ-моделями; Запросы — число запросов во времени, а также количество сообщений и чатов за период; Коммиты — активность сохранения изменений во времени. Токены Вложенный раздел внутри «Использования» — графики объёма текста и скорости: Всего токенов — потребление во времени с накоплением входных, выходных и кэшированных токенов; Токенов/с — скорость ответа ИИ во времени; Токены по моделям — потребление в разрезе каждой модели; Скорость по моделям — сравнение скорости ответов разных моделей. Сообщения Вложенный раздел внутри «Использования» — графики количества сообщений и их интенсивности: Всего сообщений — количество сообщений во времени; Сообщений/с — интенсивность обмена сообщениями во времени. Час дня Здесь данные собраны по часам суток (0–23) в вашем локальном времени. Помогает понять, в какие часы вы работаете с агентом больше всего: Токенов по часам дня — объём текста за каждый час; Сообщений по часам дня — количество сообщений за каждый час; Токенов/с по часам дня — средняя скорость ответа по часам; Сообщений/с по часам дня — средняя интенсивность сообщений по часам. День недели Данные собраны по дням недели — видно, какие дни у вас самые активные: Токенов по дням недели — объём текста за каждый день; Сообщений по дням недели — количество сообщений за каждый день; Токенов/с по дням недели — средняя скорость ответа по дням; Сообщений/с по дням недели — средняя интенсивность сообщений по дням. Распределения Графики того, как показатели различаются от чата к чату — например, какие разговоры выходят самыми дорогими или самыми долгими: Распределение стоимости — как расходы распределяются по чатам; Распределение длительности — сколько в среднем длятся чаты (время обработки); Распределение токенов/с — разброс скорости ответов по чатам; Распределение сообщений/с — разброс интенсивности сообщений по чатам. Навыки Раздел «Навыки» показывает, как работа распределяется между навыками — наборами инструкций, подключаемыми к чатам. Каждый навык — свой цвет, чаты без навыка объединены в серию «Без навыка». Три стек-графика по выбранному периоду: Токены по навыку — объём текста по каждому навыку; Стоимость по навыку — расходы по навыкам; Общее время чатов по навыку — суммарное время обработки чатов с этим навыком. Этот график заменил прежний «Токены в секунду по навыку»; скорость моделей по-прежнему видна в разделах «Токены» и «Распределения». Все графики интерактивные: наведите курсор на точку, чтобы увидеть точные значения. Данные обновляются сами при смене периода или детализации. Выбор периода Селектор периода вверху панели отфильтровывает все данные по времени: Готовые периоды — быстрый выбор: сегодня, последние 7 дней, 14 дней, 30 дней, 90 дней и т.д.; Свой период — укажите конкретные даты начала и конца; За всё время — от первого чата до сегодняшнего дня. Все карточки и графики пересчитываются под выбранный период — удобно сравнивать недели, месяцы и отдельные отрезки. Детализация Можно менять «масштаб» данных — по точкам за час, день, неделю или месяц: Почасовая — одна точка в час; для периодов длиннее 30 дней автоматически переключается на ежедневную; Ежедневная — одна точка в день; по умолчанию, лучше всего подходит для периодов от недели до месяца; Еженедельная — итоги по неделям; удобно для периодов от месяца до квартала; Ежемесячная — итоги по месяцам; для взгляда на долгосрочные тренды. Выбранная детализация запоминается в вашем браузере между визитами. Таблица чатов Под графиками — таблица со статистикой по каждому чату. Клик по строке открывает этот чат, а Ctrl+клик — открывает его в новой вкладке. В таблице восемь столбцов, каждый сортируемый: Заголовок чата — название разговора; Дата — время последней активности (в относительном формате: «5 минут назад» и т.п.); Модель — какая ИИ-модель использовалась; Длительность — общее время обработки; Стоимость — расходы по этому чату; Токенов/с — средняя скорость ответа; Сообщения — количество сообщений; Коммиты — сколько раз изменения сохранены в Git во время чата. Клик по заголовку столбца сортирует таблицу по этому показателю; повторный клик меняет направление сортировки. Таблица выводится постранично — по 10 чатов на странице. Чаты вспомогательных агентов Отдельная таблица показывает чаты вспомогательных агентов — «дочерние» разговоры, которые ИИ запускает сам для параллельной работы над мелкими задачами. Они вынесены в отдельную таблицу, чтобы было видно различие: разговаривали ли вы с агентом напрямую или агент работал сам. Столбцы, сортировка и постраничный вывод — как в основной таблице. Дополнительные операции Внизу панели есть несколько служебных кнопок: Пересчитать статистику — заново пересчитывает токены и стоимость из исходных данных чатов: исправляет возможные потери, извлекает недостающие цифры и убирает дубликаты. Используйте, если показатели выглядят устаревшими или неверными. Работает в фоновом режиме и по завершении показывает, сколько чатов исправлено и сколько дубликатов удалено; Реимпортировать чаты вспомогательных агентов — удаляет все имеющиеся данные о чатах вспомогательных агентов и загружает их заново из локальных файлов чатов. Перед запуском запросит подтверждение. Операция удаляет данные — используйте только если полная история чатов ещё доступна на диске; Отправить в ClickHouse — если ClickHouse настроен (система сбора статистики со всех ваших проектов), отправляет новые и обновлённые данные чатов для единой отчётности по всем экземплярам. Кнопка появляется только при настроенном ClickHouse. Статистика по коду проекта Раздел «Source Code Stats» аналитики показывает состав кодовой базы вашего проекта: из скольких файлов и строк он состоит и на каких языках написан. Открывается из настроек: группа Tools → карточка Analytics → в диалоге аналитики раздел Source Code Stats. Вверху — пять плиток-сводок по всему проекту: Всего строк — код, комментарии и пустые строки вместе; Строки кода — исполняемые строки; Комментарии — строки-комментарии; Пустые строки — разделители и отступы; Файлы — сколько файлов подсчитано. Ниже — таблица по языкам: Язык, Файлы, Пустые, Комментарии, Код. В каждой колонке ширина градиентного бара пропорциональна языку-лидеру: максимум занимает всю шкалу, остальные — меньше. Языки отсортированы по убыванию строк кода. Числа считает внешний инструмент cloc, который подключается автоматически: используется установленный в системе cloc, а если его нет — скачивается standalone-скрипт во временную папку (нужен только Perl, без прав администратора). Чтобы цифры были честной мерой кодовой базы, учитываются только файлы, отслеживаемые Git — артефакты сборки и зависимости в статистику не попадают. Для проектов вне Git подсчёт идёт без привязки к репозиторию с исключением типовых служебных каталогов (node_modules, bin, obj, dist, build, target, vendor, .git). Результат кэшируется на 5 минут, а вычисления выполняются по одному за раз — чтобы панель не нагружала машину. Кнопка «Обновить» у заголовка таблицы принудительно пересчитывает статистику на месте; рядом показаны версия cloc и время подсчёта. ← Промпты Автоисправление → ### Боты Боты — это Telegram-боты, через которые Pastukhov Agent общается с вами (или вашими сотрудниками) прямо в Telegram. Можно завести любое количество ботов: например, один для ежедневных отчётов, второй — для вопросов по проекту, третий — для команды. У каждого бота своя модель, свой навык, свой системный промпт и свой набор разрешённых пользователей. Боты управляются из интерфейса — кнопка «Боты» в верхней панели: создание, включение/выключение, перезапуск и перенаправление чата в один клик, без правки файлов. Конфигурация хранится в .pastukhov/bots.yml. Зачем нужен свой бот Бот — это самый простой способ дать людям работать с ИИ-агентом: не нужно открывать веб-интерфейс, вводить логин и пароль, разбираться в настройках. Сотрудник просто открывает чат с ботом в Telegram и пишет задачу обычными словами. Что это даёт: Несколько ботов под разные задачи — одному боту доверены отчёты, другому — код, третьему — работа с клиентами. У каждого своя модель, навык и правила; Ограничение доступа — можно указать, кому именно бот отвечает (по Telegram ID или имени пользователя); Без веб-интерфейса — общение через знакомый мессенджер, на телефоне и на компьютере; Продолжение диалога — бот помнит текущий чат с агентом: можно уточнить, попросить переделать или задать следующий вопрос — контекст сохраняется; Уведомления от задач — бот доставляет результаты автоматических задач (см. Задачи). Как настроить бота Откройте диалог «Боты» в верхней панели и нажмите «Создать». Что настраивается: Токен бота — выданный у @BotFather (поддерживается подстановка переменной окружения через $, например $TELEGRAM_BOT_TOKEN); Название — например, «Отчёты» или «Помощник команды»; Модель — из ваших моделей, та же модель ИИ, что и в чатах; Навык — навык, который бот загрузит в начале работы (например, навык отчётов или навык поддержки); Системный промпт — правила поведения бота: кому адресован, в каком стиле отвечать, какие задачи решать; Разрешённые пользователи — Telegram ID, которым бот отвечает. Важно: пока список пуст, бот никому не отвечает — он пришлёт «доступ не настроен», пока вы не добавите хотя бы свой ID; Показ деталей — показывать ли вызовы инструментов и размышления модели (для прозрачности) или прятать (для простоты); Веб-ссылка — адрес веб-интерфейса, который бот присылает, когда нужно открыть чат подробнее. Токен задаётся один раз, в списках он показывается замаскированным. Смена модели или токена применяется при следующем перезапуске бота — в интерфейсе есть кнопка перезапуска; остальные настройки (промпт, навык, список пользователей, показ деталей) вступают в силу сразу. Как пользоваться ботом В Telegram у бота есть три команды: /start — показать справку и назначение бота; /new — начать новый чат (сбросить текущий разговор); /commit [сообщение] — закоммитить и отправить изменения проекта (когда бот работает с кодом). Любое сообщение без команды — это задача для агента: бот отправляет его в чат Pastukhov Agent, агент выполняет работу, а ответ возвращается боту. Первое сообщение в новом чате дополняется системным промптом и навыком бота автоматически. Бот получает обновления через long polling (долгое опрашивание) — ему не нужен публичный веб-адрес и не нужны открытые порты; соединение идёт из сервера агента к Telegram. Боты и задачи: готовые сценарии Бот и задача работают вместе так: задача запускается (по расписанию или по триггеру), скрипт собирает данные, ИИ пишет анализ — и свежий чат задачи автоматически привязывается к вашему боту. Вы получаете результат в Telegram и можете продолжить диалог: спросить подробности, попросить изменить отчёт, поручить следующее действие. Утренний дайджест — бот «Отчёты», задача «ежедневно в 09:00 собрать метрики и написать сводку»: получили сводку утром, уточнили вечером «что было с заказами после обеда?»; Аварийный сигнал — задача мониторит сайт с триггером «ERROR»: при сбое бот присылает разбор ошибки, и можно прямо там отдать команду «исправь и закоммить»; Ночной прогон тестов — задача запускает тесты ночью, при падении ИИ разбирает лог и присылает через бота понятный отчёт с рекомендациями; Резервное копирование — задача делает бэкап и молчит, пока всё хорошо; при ошибке будит бота — только в этом случае ИИ пишет, что пошло не так; Сборка после деплоя — после развёртывания задача проверяет здоровье приложения и всегда присылает результат боту команды. Ключевая идея: задача собирает данные и запускает ИИ, бот доставляет результат и позволяет вести диалог. Вместе они превращают агента из инструмента «открыл окно с чатом» в помощника, который сам приходит к вам с готовой работой. Файл конфигурации Все боты хранятся в .pastukhov/bots.yml — в том же формате YAML, что и остальная конфигурация проекта. Файл версионируется в Git, поэтому набор ботов переносится между серверами вместе с проектом. Токены при желании можно вынести в переменные окружения синтаксисом $ИМЯ_ПЕРЕМЕННОЙ, чтобы не хранить секреты в репозитории. Дальше Чтобы бот присылал результаты автоматических сценариев, настройте связку с задачами — см. Задачи. Выбор моделей для ботов — на странице Модели. ← Назад: Задачи Далее: Модели → ### Голосовой ввод Голосовой ввод — это диктовка сообщений голосом прямо в чат. Кнопка микрофона появляется на панели ввода, когда распознавание речи включено в настройках. Нажмите её, проговорите сообщение — текст вставится в поле ввода в позицию курсора, и вы сможете отправить его как обычное сообщение. Распознавание поддерживает несколько движков: от бесплатного прямо в браузере до локального Whisper на вашем сервере и облачных API. Движки распознавания Движок выбирается настройкой speechRecognitionProvider. Всего доступно восемь движков, разделённых на три семейства: Браузерный — работает целиком в браузере на Web Speech API; локальный серверный — Whisper на вашем сервере, офлайн; облачные — пять пресетов с API-ключом и собственный OpenAI-совместимый сервис. ДвижокГде выполняетсяОсобенностиBrowser (Web Speech API)в браузеребесплатно; Chrome, Edge, Safari; живой промежуточный текст; аудио уходит в облачный сервис браузера, на сервер агента — нет; в Firefox неподдерживаемLocal Whisperна сервере агентаофлайн и бесплатно; модель скачивается при первом использовании; единственный серверный движок, работающий без интернетаOpenAIоблакомодель gpt-4o-mini-transcribe; нужен API-ключGroqоблакомодель whisper-large-v3-turbo; нужен API-ключOpenRouterоблакомодель openai/whisper-large-v3-turbo; нужен API-ключDeepgramоблакомодель nova-3; нужен API-ключElevenLabsоблакомодель scribe_v1; нужен API-ключCustom (OpenAI-совместимый)ваш серверлюбой адрес /audio/transcriptions: whisper.cpp, LocalAI, vLLM и другие; свой адрес, модель и ключ Какой движок выбрать Local Whisper — если нужна работа без интернета или максимальная приватность: аудио не покидает ваш сервер; Browser — быстрый бесплатный вариант для Chrome, Edge или Safari, когда достаточно распознавания в браузере; Облачные пресеты — если нужна высокая точность без нагрузки на ваш сервер; расходы идут по тарифам провайдера; Custom — если у вас уже развёрнут собственный OpenAI-совместимый сервис распознавания (например, whisper.cpp или vLLM). Как это работает Кнопка микрофона находится на панели ввода сообщений, слева от поля. Пока вы говорите, кнопка пульсирует; когда фрагмент аудио уходит на распознавание, поверх неё показывается спиннер. Готовый текст вставляется в поле ввода в позицию курсора — можно продолжать диктовку с любого места сообщения. Непрерывная диктовка. Запись не нужно останавливать после каждой фразы. Серверные движки (Local Whisper и облачные) отправляют накопленное аудио примерно каждые 5 секунд и вставляют распознанный текст по мере получения — промежуточного текста у них нет, фраза появляется целиком. Браузерный движок показывает живой предварительный текст серой строкой над полем ввода и вставляет финальные фразы сразу. Проксирование облачных API. Для облачных движков сервер агента выступает посредником: он получает аудио от браузера и отправляет его в API провайдера. Аудио передаётся как есть, в формате записи (webm/opus), без конвертации. Таймаут запроса к провайдеру — 30 секунд. Настройки Все настройки речи собраны в карточке «Распознавание речи» (Настройки → Инструменты). Восемь ключей настроек: КлючПо умолчаниюЧто делаетenableSpeechRecognitionвключенопоказывает кнопку микрофона на панели вводаspeechRecognitionProviderbrowserвыбранный движок распознавания (8 вариантов)whisperModelsmallразмер модели Local Whisperlanguageкак локаль (ru/en)язык распознавания для движков, которые его поддерживаютautoDetectLanguageвключеноавтоопределение языка вместо фиксированногоspeechApiEndpointпустоадрес сервиса облачного движка; заполняется при выборе пресетаspeechApiKeyпустоAPI-ключ облачного провайдераspeechApiModelпустомодель облачного движка; заполняется при выборе пресета Пресеты облачных движков. При выборе пресета (OpenAI, Groq, OpenRouter, Deepgram, ElevenLabs) поля speechApiEndpoint и speechApiModel заполняются значениями по умолчанию автоматически — их можно подправить. Поле ключа остаётся пустым: ключ нужно ввести самим. Для движка Custom все три поля заполняются вручную. Язык и автоопределение. Настройки языка учитываются движками, которые их поддерживают: Local Whisper и OpenAI-совместимые движки принимают код языка (ru, en и т.д.) или определяют автоматически; Deepgram и ElevenLabs — свои эквиваленты. Браузерный движок принимает метку BCP-47 (например, ru-RU) и автоопределение не поддерживает — переключатель для него скрыт. Проверка. В карточке настроек есть тест: кнопка записывает три секунды аудио и распознаёт их выбранным движком, показывая транскрипт или ошибку движка. Для Local Whisper здесь же доступна проверка статуса модели (скачана или нет и какого размера), скачивание и повторная загрузка. Модели Local Whisper Модель Whisper скачивается автоматически при первом использовании движка — кнопка микрофона появляется, когда модель готова (при неудачной загрузке ошибка пишется только в консоль). Доступные размеры — от tiny (~39 МБ) до large (~1,55 ГБ) и turbo (~809 МБ); по умолчанию используется small (~244 МБ). Чем больше модель, тем выше точность, но дольше скачивание и выше расход ресурсов при распознавании. Ошибки и устранение СитуацияЧто происходитДоступ к микрофону запрещёнявный тост с инструкцией, как разрешить доступ; запись не начинаетсяНет микрофона или ошибка захватаобщее сообщение «проверьте устройство»; в тесте настроек — «микрофон не найден»API-ключ не заданзапись не начинается; тост указывает настроить ключ в настройкахНеверный или отклонённый ключ облака (401/403)свой тост «неверный API-ключ»Облачный сервис не ответил за 30 секундсвой тост о таймаутеТишина у Local Whisperпредупреждение «говорите громче»Браузерный движок замолчал (пауза в речи)автоматический перезапуск распознавания, диктовка продолжаетсяFirefox с движком Browserдвижок помечен неподдерживаемым в настройках; совет сменить движокНет сети у браузерного движкатост «нужен интернет»Распознаватель не поддерживается или заблокировантост с советом сменить движок в настройках Безопасность и приватность Ключи облачных API хранятся в настройках сервера и никогда не попадают в браузер. Запросы к провайдерам делает сервер агента — он же подставляет ключ. Для движка Browser аудио обрабатывает облачный сервис самого браузера (Google Chrome, Microsoft Edge, Safari), на сервер агента записи не уходят. Для Local Whisper аудио вообще не покидает ваш сервер — это самый приватный вариант. ← Назад: Настройки Далее: Чат → ### Горячие клавиши Горячие клавиши позволяют работать в Pastukhov Agent быстрее, не отрывая рук от клавиатуры. Вот справочник основных быстрых действий — используйте, чтобы ускорить повседневную работу. Общие Кнопка остановки в заголовке — остановить обработку текущего запроса ИИ. Ввод сообщений Enter — отправить сообщение. По умолчанию включён удобный режим «двойного Enter»: первое нажатие ставит перевод строки, а второе — на пустой строке в конце — отправляет. Если привыкли иначе, в настройках можно переключить режим, где Enter отправляет сразу. Shift+Enter — добавить перевод строки, не отправляя сообщение. / — открыть подсказки команд и навыков. Ctrl+Enter (или Cmd+Enter) — продолжить разговор в новом чате. Ctrl+клик (или Cmd+клик) по кнопке отправки — продолжить в новом чате. Список чатов Enter или Пробел — открыть выбранный чат. Ctrl+клик (или Cmd+клик) — открыть чат в новой вкладке. Дерево файлов Стрелка вверх / вниз — перемещение между файлами и папками. Стрелка влево — перейти в родительскую папку. Стрелка вправо — войти в папку. Enter — открыть выбранный файл или развернуть/свернуть папку. Delete — удалить выбранные файл или папку (с подтверждением). + (плюс) — развернуть выбранную папку. − (минус) — свернуть выбранную папку. F2 — переименовать выбранные файл или папку. Ctrl+S — сохранить текущий файл вручную (автосохранение тоже включено). Подробнее об операциях с файлами — в разделе Файлы. Панель Git Enter — быстрый коммит (когда фокус стоит в поле сообщения коммита). Подробнее об операциях Git — в разделе Git. Навыки Стрелка вверх / вниз — перемещение по списку навыков. Enter — выбрать выделенный навык. Подробнее о навыках — в разделе Навыки. Очередь сообщений Если отправить следующее сообщение, пока агент ещё отвечает, оно не потеряется: оно становится в очередь и уйдёт автоматически, как только закончится текущий ответ. Сообщения в очереди можно менять, приостанавливать или удалять — с помощью соответствующих кнопок рядом с очередью. ← Телефон и рабочий стол Советы и устранение проблем → ### Задачи Задачи — это автоматические сценарии, которые Pastukhov Agent выполняет сам, без вашего участия: по расписанию, после скрипта или при наступлении условия. Типичный пример — каждый день в девять утра собрать свежие данные, отдать их ИИ на разбор и прислать готовый отчёт вам в Telegram. Задачи живут в файле .pastukhov/tasks.yml и управляются из интерфейса: кнопка «Задачи» в верхней панели открывает список созданных задач, их журналы запусков и редактор. Из чего состоит задача Расписание — дни недели и время запуска (например, «пн–пт в 09:00»), в любом часовом поясе. Планировщик проверяет расписание каждые 30 секунд; Скрипт — необязательная команда (shell или python), которая выполняется перед ИИ: собрать данные, прогнать тесты, сделать резервную копию, вытащить свежие коммиты; Условие запуска чата — когда задачу должен «заметить» ИИ: всегда, только при ошибке скрипта, при непустом выводе или при совпадении с фразой-триггером (например, «ERROR»); ИИ-чат — модель, навык и промпт. ИИ получает вывод скрипта (путь к файлу с логом подставляется автоматически), анализирует его по вашему промпту и отвечает в обычном чате агента; Связь с ботом — имя Telegram-бота из раздела «Боты»: свежий чат задачи привязывается к боту, и его ответы, а также дальнейшие ваши вопросы уходят через Telegram. Как это работает Планировщик работает в фоне как отдельный сервис. В назначенный день и время он запускает задачу по шагам: Выполняется скрипт (если задан) с таймаутом — например, python3 scripts/collect.py; Результат скрипта проверяется по условию: при ошибке, пустом выводе или совпадении триггера задача останавливается или, наоборот, передаётся ИИ — как вы настроили; Если условие выполнено — создаётся чат с выбранной моделью и навыком, промпт задачи (и путь к логу скрипта) отправляется ИИ; Если в задаче указан бот — этот чат привязывается к Telegram-боту: ответ ИИ приходит вам в Telegram, и дальше вы можете продолжать диалог прямо в Telegram, задавая уточняющие вопросы; Каждый запуск записывается в журнал: время, причина запуска, успех, код возврата скрипта, ссылка на созданный чат. Пропущенные запуски (например, агент был выключен в назначенное время) не догоняются — задача просто выполнится в следующий раз по расписанию. Примеры связки «задачи + боты» Самое интересное начинается, когда задача не просто запускается сама, а ещё и привязана к Telegram-боту. Вот несколько рабочих сценариев: Ежедневный отчёт — скрипт вечером собирает данные за день (продажи, трафик, метрики), ИИ по промпту пишет краткую сводку с выводами, бот присылает её вам в Telegram. Можно сразу спросить бота: «почему продажи упали?» — и продолжить диалог с теми же данными; Ночная проверка сборки — в 6 утра запускается сборка проекта; если она упала, ИИ разбирает лог, находит ошибку и предлагает исправление; бот будит вас только с этим сообщением, а не шумом всего лога; Отслеживание по триггеру — скрипт проверяет сайт или базу каждые 15 минут; ИИ подключается только при совпадении триггера (например, слово «ERROR» или падение uptime), анализирует проблему и присылает отчёт в Telegram; Дайджест коммитов — утром скрипт вытаскивает вчерашние коммиты всех веток, ИИ группирует их по задачам и присылает понятное резюме команде через общего бота; Резервное копирование — скрипт делает дамп базы и копирует его в облако; письмо в Telegram приходит только при ошибке (условие «nonzero-exit»), чтобы лишний раз не беспокоить. Во всех сценариях работает одна важная деталь: ответ ИИ приходит не «в никуда», а в привязанный чат — и вы можете вести диалог, пока задача ещё актуальна. Именно поэтому в одной задаче удобно сочетать скрипт (данные), ИИ (анализ) и бота (доставка и диалог). Журнал запусков Для каждой задачи ведётся история последних запусков: когда и почему сработала, успешно ли, какой код вернул скрипт, не превышен ли таймаут, какой чат создан. Из журнала можно сразу открыть чат задачи и посмотреть, что именно сделал ИИ. Содержимое выводов скриптов хранится 7 дней. Создание задачи Откройте диалог «Задачи» из верхней панели и нажмите «Создать». Укажите: Название — например, «Утренний дайджест»; Расписание — дни недели и время (или оставьте пустым, чтобы запускать задачу только вручную); Скрипт — shell или python, путь относительно корня проекта и таймаут в минутах; Промпт для ИИ — что нужно сделать с данными: «проанализируй продажи и напиши выводы»; Модель и навык — из числа ваших моделей (и при необходимости навык, который ИИ загрузит перед работой); Условие запуска чата — всегда / только при ошибке / при непустом выводе / по триггеру; Бот — Telegram-бот, которому будет привязан чат задачи (необязательно). Что ещё умеют задачи Несколько запусков в день — в расписании можно указать любое количество времени (например, 09:00 и 18:00); Часовой пояс — для каждой задачи выбирается свой, по умолчанию — пояс сервера; Ручной запуск — любую задачу можно выполнить сейчас одной кнопкой, вне расписания; Журнал — история запусков с причинами и результатами; Остановка и включение — задачи можно выключать, не удаляя их конфигурацию; Файл конфигурации — tasks.yml хранится в папке проекта, поэтому настройки задач версионируются в Git и переносятся между серверами. Дальше Чтобы задачи присылали результат в Telegram, сначала настройте бота — см. Боты. Подробнее о выборе моделей — Модели. ← Назад: Настройки Далее: Боты → ### Использование контекста Отслеживание контекста показывает, какую часть «контекстного окна» модели занимает ваш разговор. Контекстное окно — это весь объём информации (ваши сообщения, ответы ИИ, код, файлы и системные инструкции), который отправляется поставщику модели с каждым сообщением. Сам Claude ничего не хранит локально — весь контекст живёт на стороне сервера, поэтому его размер напрямую влияет на стоимость и скорость ответов. Как растёт контекст Главное, что стоит понять про контекст: он растёт не понемногу, а очень быстро — вместе с каждым сообщением поставщику отправляется вся история разговора, а не только новое сообщение. Например, отправляя сотое сообщение, вы передаёте модели все сто сообщений сразу. Отсюда два практических следствия: Стоимость растёт всё быстрее — каждое новое сообщение делает все последующие дороже, потому что прежнее содержимое уходит повторно. Внимание модели рассеивается — чем больше контекст, тем меньше внимания модель уделяет каждой его части. Модель может «забывать» сказанное ранее или упускать детали инструкций — и чем длиннее разговор, тем заметнее это проявляется. Поэтому не стоит без нужды вести очень длинные чаты: новую задачу лучше начинать в свежем разговоре, а не продолжать всё в одном. Метрики токенов Каждое сообщение добавляет в контекст токены — «единицы текста», которыми модель измеряет информацию. Основные показатели: Входные токены — текст, отправленный модели в запросе: ваше сообщение плюс код, файлы и контекст Токены чтения кэша — токены, взятые из кэша запросов (повторно использованные с прошлых шагов; это заметно дешевле свежего ввода) Выходные токены — текст, сгенерированный моделью в ответе Токены контекста — общий расход на сообщение: cacheReadTokens + inputTokens (кэш плюс свежий ввод) Лимит контекста — максимальный размер окна, который задаёт поставщик модели на своей стороне. Переменная окружения MODEL_CONTEXT_LENGTH влияет только на отображение — панель прогресса и графики; укажите в ней реальный лимит вашей модели, чтобы показатели были точными Процент использования — какая часть окна занята: (использовано / лимит) × 100 Отслеживание стоимости Стоимость рассчитывается и показывается на трёх уровнях: На сообщение — у каждого ответа ИИ в служебных данных сообщения видна его стоимость (если включено отображение токенов). Считается по фактическому расходу токенов этого сообщения и ценам активной модели. На чат — значок статистики над чатом показывает общую стоимость разговора. Наведите на него курсор — увидите разбивку: число сообщений, стоимость, токены в секунду и подробности по токенам (кэш, ввод, вывод). Недавняя статистика (в шапке страницы) — значок показывает общий расход по всем чатам за выбранный период: число запросов, общую стоимость и среднее число токенов в секунду. Клик по значку меняет период (сегодня, 7 дней, этот месяц и т.д.) или открывает полную страницу аналитики. Стоимость считается по четырём ценовым переменным активной модели — MODEL_INPUT_PRICE, MODEL_OUTPUT_PRICE, MODEL_CACHE_READ_PRICE и MODEL_CACHE_WRITE_PRICE — все в долларах за миллион токенов. Если переменные не заданы, используются значения по умолчанию: MODEL_INPUT_PRICE — $0.60 MODEL_OUTPUT_PRICE — $2.20 MODEL_CACHE_READ_PRICE — $0.11 MODEL_CACHE_WRITE_PRICE — $0 Эти значения взяты из типичных цен китайских моделей (например, GLM 4.7), а не из прайс-листа Anthropic. Если вы используете Claude или другого поставщика, числа не совпадут. Собственные цены задаются на странице Модели — модели устроены иерархически: общие настройки (адрес API, ключ доступа) достаточно указать один раз в родительской модели, а цены каждой модели — в дочерних. Приоритет: переменные окружения → системная конфигурация → значения по умолчанию. Помните: эти цифры показывают, во сколько обошлись бы запросы по тарифу за токены. На практике большинство пользователей подписываются на планы для разработчиков (Claude Max, GitHub Copilot и т.п.), которые в 10–30 раз дешевле. К тому же реальное ценообразование сложнее простой ставки за миллион токенов — поставщики учитывают время суток, объём использования, размер контекста и разные скидки или наценки. Поэтому суммы в Pastukhov Agent — это приблизительные оценки: они удобны, чтобы сравнивать «вес» запросов и находить необычно дорогие чаты. Единственный источник правды — страница биллинга или учётной записи вашего поставщика; сверяйтесь с ней регулярно. Диалог графика контекста График использования контекста показывает, как расход токенов меняется по ходу разговора. Он открывается кликом по индикатору контекста в заголовке чата. На графике два ряда данных: Токены контекста (синяя линия) — общий расход на сообщение, показан сглаженной линией: кэшированные токены плюс свежий ввод Входные токены (оранжевые столбики) — только свежие токены на сообщение, то есть те, что не пришли из кэша По горизонтали — номера сообщений (1, 2, 3…), по вертикали — число токенов. Значения больше 1000 сокращаются (например, «50k»). Сообщения без расхода токенов на график не попадают. Как читать график: растущая синяя линия означает, что модель расходует всё больше контекста — обычно потому, что каждое сообщение тянет за собой всю предыдущую переписку. Оранжевые столбики показывают, где добавляется свежее содержимое, а не повторное использование кэша. Лимит контекста Реальный лимит контекста задаёт поставщик модели на своей стороне — изменить его нельзя. Переменная окружения MODEL_CONTEXT_LENGTH влияет только на отображение: панель прогресса и графики в Pastukhov Agent. Задайте в ней фактический размер окна вашей модели, чтобы процент и график отражали реальность. Если переменная не задана, используется 200 000 токенов. Типичные лимиты по моделям: Claude Opus 4.7 / Sonnet 4.6 — 200 000 токенов Claude Haiku 4.5 — 200 000 токенов Сторонние модели — лимиты различаются; задайте MODEL_CONTEXT_LENGTH под фактический лимит поставщика При переключении моделей отображение обновляется автоматически, по значению MODEL_CONTEXT_LENGTH новой модели. Управление использованием контекста Несколько простых способов держать расход контекста под контролем: Начинайте новый чат на новую тему — каждый чат стартует с чистого контекстного окна. Когда фокус работы меняется, открывайте новый разговор вместо того, чтобы продолжать один длинный. Это самый действенный приём. Следите за графиком — периодически заглядывайте в график контекста. Если расход растёт круто, лучше завершить текущую задачу и начать новый чат. Авто-уплотнение Когда контекст достигает примерно 70% лимита, Claude Code автоматически уплотняет его: полная история разговора заменяется короткой сводкой, которую модель составила сама, — так освобождается место для новых сообщений. Продолжать разговор после уплотнения можно, но у этого есть заметные минусы: Потеря деталей — сводка — это сжатое изложение: нюансы, конкретные инструкции и важные мелочи сглаживаются или теряются совсем. Искажение смысла — модель может неверно обобщить ваши задачи или инструкции, и последующие ответы будут строиться на этом искажённом понимании, а не на том, что вы на самом деле сказали. Заметный перерыв — вы увидите, как модель вдруг «вспоминает» с нуля, что вы делаете, или переспрашивает о вещах, которые уже обсуждались. Если уплотнение случилось, лучший выход — начать свежий чат. Модель заново соберёт контекст проекта из файлов, CLAUDE.md и памяти гораздо точнее, чем любая сводка. Чистый старт почти всегда лучше продолжения после уплотнения. ← Скрипты Коммиты → ### Коммиты Работа с Git в Pastukhov Agent доступна в двух местах. Для повседневных операций — индексация изменений, коммиты, push, pull, stash — есть Git-боковая панель в каждом чате. А полная история коммитов с поиском и просмотром изменений — на странице «Коммиты». На странице «Коммиты» видна история коммитов репозитория проекта: есть поиск, фильтр по ветке и просмотр изменений (diff) по каждому файлу. Коммиты связаны с чатами: когда агент коммитит изменения во время разговора, коммит автоматически привязывается к этому чату. Git-боковая панель Git-панель — основной инструмент для работы с Git прямо в чате. На компьютере она расположена в правой панели каждого чата, на телефоне — выдвигается снизу. Панель показывает состояние Git в реальном времени, позволяет быстро коммитить и управлять файлами в репозиториях Проекта и Навыков. Вкладки Проект и Навыки На панели есть вкладка project с состоянием git-репозитория проекта. На значке вкладки видно число изменённых файлов. Статус и быстрый коммит В верхней части вкладки видно текущую ветку и счётчики ahead/behind — насколько локальные коммиты обогнали сервер или отстали от него. Ниже — поле быстрого коммита, куда уже подставлено название чата как сообщение коммита. Как только появляются изменения, кнопка коммита становится активной: одно нажатие — и все изменения проиндексированы и зафиксированы. Изменённые файлы Список показывает все изменённые, добавленные, удалённые, переименованные и новые (не отслеживаемые) файлы с цветными пометками статуса. Любой файл можно отдельно снять с индексации или откатить. Кнопка Отменить всё возвращает все изменения. Здесь же операции синхронизации с удалённым репозиторием — pull (забрать чужие изменения), stash (отложить свои правки), unstash (вернуть отложенные) и stash/pull/rebase (отложить, забрать чужие и применить свои поверх). Меню Коммитов Кнопка меню коммитов стоит в заголовке списка файлов. На ней — число коммитов, связанных с текущим чатом; по нажатию открывается список последних коммитов (сообщение + относительное время). Клик по коммиту открывает его детали, а кнопка «Все коммиты» внизу ведёт на полную страницу «Коммиты». Обновление в реальном времени Панель обновляется сама через SignalR — когда агент индексирует изменения, коммитит, отправляет на сервер или правит файлы, статус, список файлов и счётчик коммитов появляются мгновенно, без ручного вмешательства. Есть и кнопка обновления для ручной перезагрузки состояния Git. Обзор коммитов Главная страница «Коммиты» показывает карточки репозиториев — по одной на каждый (Проект и Навыки). В каждой карточке: Название репозитория — «Project» или «Skills» Всего коммитов — общее число коммитов в репозитории Связанные коммиты — коммиты, созданные при работе с ИИ и привязанные к чатам Несвязанные коммиты — коммиты без привязки к чату Клик по карточке открывает список коммитов репозитория. Список коммитов В списке у каждого коммита видно: Сообщение — заголовок коммита Относительное время — когда сделан коммит (например, «2 часа назад») Ветка — к какой ветке относится коммит Короткий хеш — первые 7 символов уникального номера коммита Значок чата — если коммит связан с разговором, по значку можно открыть этот чат Поиск и фильтрация Список коммитов умеет: Поиск — текст из поля поиска фильтрует коммиты по сообщению, хешу или пути к файлу; результаты обновляются при вводе (с задержкой 300 мс) Фильтр по ветке — значок ветки отфильтровывает коммиты нужной ветки; активный фильтр показывается значком с кнопкой «×» для сброса Постраничная выдача — коммиты выводятся по 10 на странице, с кнопками навигации Просмотр деталей коммита Клик по коммиту в списке открывает его карточку. В ней: Полное сообщение коммита Дата и время — полная дата в удобном виде Ссылка на чат — если коммит связан с разговором, по ней открывается чат Изменённые файлы — список файлов коммита, каждый с цветной пометкой статуса: Added (добавлен) — зелёный Deleted (удалён) — красный Modified (изменён) — жёлтый Renamed (переименован) — синий Клик по любому файлу раскрывает его diff — наглядную разницу между старой и новой версией. Просмотр доступен бок о бок или построчно. Связь чата и коммита Когда Claude Code коммитит изменения во время разговора (например, вы попросили исправить ошибку, и агент зафиксировал исправление), коммит автоматически привязывается к этому чату. Так между вашими разговорами и изменениями кода появляется прослеживаемая связь. У связанных коммитов в списке и в карточке есть значок чата — он открывает разговор, который привёл к коммиту. Кнопка «Обновить» в списке коммитов репозитория заново импортирует коммиты из Git и пересматривает их привязку к чатам. Это полезно, если коммиты делались вне Pastukhov Agent — их нужно синхронизировать. Меню Git Commits Меню коммитов в Git-боковой панели — быстрый доступ к коммитам текущего чата прямо из окна чата, без перехода на страницу «Коммиты». Навигация Раздел «Коммиты» устроен по хлебным крошкам: Коммиты — обзор репозиториев (показывает все репозитории) Коммиты → Project — список коммитов репозитория проекта Коммиты → Project → abc1234 — карточка конкретного коммита (хеш копируется кнопкой) ← Использование контекста Лицензирование → ### Лицензирование Окно лицензии показывает, какая у вас лицензия и сколько времени она действует, а также позволяет обновить лицензионный ключ. Лицензия нужна, чтобы пользоваться Pastukhov Agent после 30-дневного пробного периода. Открыть окно можно кликом по строке лицензии внизу панели статуса. Информация о лицензии В окне показаны следующие сведения о вашей лицензии: Лицензировано для — имя, компания или домен, на которые выдана лицензия Тип лицензии — Пробная, Персональная, Корпоративная или Сервисная Область действия — что покрывает лицензия (см. Типы лицензий ниже) Email — контактный адрес лицензии Действует с — дата начала действия Действует до — дата окончания или «Бессрочная», если срока действия нет Статус — «Действительна» (показано зелёным) или сообщение об ошибке (показано красным) Типы лицензий Пробная — бесплатное знакомство на 30 дней. Показывает, сколько дней осталось. По истечении срока нужно приобрести лицензию, чтобы продолжать пользоваться Pastukhov Agent. Персональная — для одного разработчика или компании из одного человека. Лицензия привязана к одному пользователю. Корпоративная — лицензия на всю компанию: подходит для всех её разработчиков. Любой разработчик компании может пользоваться Pastukhov Agent под этой лицензией. Сервисная — лицензия на целый домен: подходит всем, кто заходит в Pastukhov Agent с лицензированного домена. Удобна для команд, работающих на общем сервере. Любая лицензия может быть бессрочной (без даты окончания) или ограниченной по времени. У бессрочных лицензий в дате окончания стоит «Бессрочная», и они не истекают. Строка информации о лицензии Маленькая информационная строка внизу панели статуса показывает текущее состояние лицензии. Текст зависит от статуса: Нет лицензии — «Файл лицензии не найден» Недействительная — «Неверный формат лицензии» Истёкшая пробная — «30-дневная бесплатная пробная версия истекла, пожалуйста, обновите» Истёкшая — «{Тип лицензии} (Истёкшая)» Пробная — «Бесплатная пробная версия, X дн. осталось» Действительная — «Лицензировано для {Имя}» или «{Тип} (X дней осталось)» Клик по строке открывает окно лицензии. Если у вас действующая платная лицензия, строку можно скрыть окончательно — кнопкой «×» на самой строке или переключателем «Показывать информацию о лицензировании» в Настройках. Выбор сохраняется в браузере. Обновление вашей лицензии Чтобы обновить или активировать лицензию: Получите лицензионный ключ на странице pastukhov.com/agents/agent/license Откройте окно лицензии (клик по строке лицензии или через меню) Вставьте ключ в поле в разделе «Обновить лицензию» Нажмите «Обновить лицензию» Система проверит новую лицензию, сохранит её в .pastukhov/license.txt и обновит статус. Все подключённые устройства узнают об обновлении сами через SignalR — перезагружать страницу не нужно. Где хранятся лицензии Pastukhov Agent ищет лицензионный ключ в трёх местах, по порядку приоритета: .pastukhov/license.txt — файл в папке вашего проекта (высший приоритет). Именно сюда пишет кнопка «Обновить лицензию». Можно хранить в Git, если ключ не секретный. Аргумент --license — передаётся при запуске приложения (например, ./pastukhov-code --license /путь/к/ключу) Переменная окружения AGENT_LICENSE — задаётся в системных настройках или конфигурации Docker Значением может быть и сам ключ, и путь к файлу: если указанный путь существует, Pastukhov Agent прочитает ключ из этого файла. Устранение неполадок «Неверный формат лицензии» — проверьте, что вставили полный ключ. Ключи закодированы в base64 и начинаются с eyJsaWNlbnNlVmVyc2lvbiI6IjEuMCI.... Копируйте весь ключ целиком, без лишних пробелов и переносов строк. «Файл лицензии не найден» — поместите ключ в .pastukhov/license.txt, передайте его аргументом --license или задайте переменную окружения AGENT_LICENSE. «Истёкшая» — срок действия лицензии закончился. За новой или обновлённой лицензией — на pastukhov.com/agents/agent/license. Обновление не вступает в силу — после нажатия «Обновить лицензию» окно должно обновиться само. Если этого не происходит, перезагрузите страницу. По всем подключённым устройствам изменения разойдутся через SignalR за пару секунд. Лицензия работает локально, но не в Docker — убедитесь, что контейнер видит файл лицензии: подключите .pastukhov/license.txt как том или передайте ключ через переменную окружения AGENT_LICENSE в конфигурации Docker. ← Коммиты Аналитика → ### Модели «Модель» в 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_BETAS — true отключает экспериментальные функции (рекомендуется для сторонних поставщиков, которые их не поддерживают); DISABLE_NON_ESSENTIAL_MODEL_CALLS — true отключает второстепенные обращения к модели (тоже рекомендуется для сторонних поставщиков — экономит и деньги, и время); ENABLE_TOOL_SEARCH — false отключает поиск инструментов (используется некоторыми поставщиками, которые его не поддерживают); 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 в составе модели, поэтому можно держать несколько моделей на разных движках и переключаться между ними. Подробнее — на странице Обвязки. Просмотр моделей Модели открываются из диалога «Модели» в главном меню (значок модели в шапке). Диалог показывает список всех настроенных моделей с цветами и основными настройками. Нажмите на модель, чтобы открыть её редактор и посмотреть или изменить все переменные. Редактирование модели Редактор показывает все переменные в виде пар «имя — значение». Настраивайте модель здесь, а изменения сохранятся сами. Изменить переменную: нажмите на поле значения и введите новое. Изменение сохраняется автоматически через короткую паузу — кнопка сохранения не нужна. Добавить переменную: нажмите «Добавить переменную», чтобы создать новую пару «имя — значение». Добавить ссылочную переменную: нажмите «Добавить ссылочную переменную», чтобы создать переменную, чьё значение ссылается на другую переменную. Удобно для упорядоченной конфигурации (см. раздел «Подстановка переменных» ниже). Изменить порядок: перетаскивайте переменные вверх или вниз. Это нужно только для порядка — на работу переменных расположение не влияет. Контекстное меню: клик правой кнопкой мыши по переменной открывает дополнительные действия — редактирование, удаление, копирование. Подстановка переменных Переменные могут ссылаться на другие переменные — синтаксис $ИМЯ_ПЕРЕМЕННОЙ. При использовании модели ссылки автоматически раскрываются в реальные значения. Например: 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 и передавать коллегам. Создание новой модели Откройте диалог «Модели» из главного меню; Нажмите «Создать модель»; Выберите шаблон провайдера (Anthropic, z.ai, OpenRouter, DeepSeek, Codex, Reasonix, OpenCode, Pi, Oh My Pi, DeepSeek Harness, Kimi Code и др.) — шаблон сам заполнит обвязку, ключевые переменные, модели и цены; Укажите свой ключ доступа (или войдите в аккаунт, если шаблон предполагает подписку); Введите имя модели (например, «Claude» или «GPT-5»); Модель готова — переключитесь на неё из поля ввода чата. Переименование модели Нажмите на имя модели в редакторе, введите новое имя и подтвердите. Изменение применится везде, где модель упоминается, — включая селектор в поле ввода чата. Переключение моделей в чате Самый быстрый способ переключить модель — прямо из области ввода чата: Найдите выпадающий список моделей рядом с полем ввода чата; Нажмите на него — откроется список доступных моделей; Выберите нужную модель; Все последующие сообщения пойдут уже через неё. Переключение мгновенное — перезапускать чат или обновлять страницу не нужно: ИИ применит новые настройки уже в следующем сообщении. Подробнее об области ввода — в разделе Чат. ← Навыки Промпты → ### Навыки Навыки — это «инструкции и инструменты», которые учат ИИ работе с вашим проектом. ИИ-модель сама по себе знает о вас и вашем деле только то, что вы ей расскажете. Навыки аккуратно собирают это знание в одном месте: описание задачи, документы, примеры и готовые скрипты. Вместо того чтобы тратить время на объяснения при каждом новом разговоре, вы один раз создаёте навык — и дальше ИИ уже знает, что и как делать. Почему это важно: контекст У ИИ-моделей есть ограниченная «рабочая память» — окно контекста: фиксированный объём текста, который модель может учесть за один раз. Всё, что вы хотите, чтобы ИИ знал о вашей задаче, должно поместиться в этот лимит. Поэтому управление контекстом — главный фактор хороших результатов. Подстерегают две противоположные проблемы: Слишком мало контекста — если у ИИ недостаточно информации о вашем проекте и целях, он начнёт додумывать и выдаст неверный результат; Слишком много контекста — если загрузить в память всё подряд, внимание модели «размазывается» по куче тем, и на главном она начинает ошибаться. Цель — давать модели ровно ту информацию, которая нужна для текущей задачи, не больше и не меньше. Именно для этого и созданы навыки. CLAUDE.md — «память по умолчанию» По умолчанию в начале каждого чата всегда загружается файл CLAUDE.md — обычный текстовый файл с правилами проекта. Обычно в нём пишут самое общее: что это за проект, как он устроен, какие правила ИИ должен соблюдать всегда. Для универсальных правил такой подход хорош. Но по мере роста проекта и появления разных задач — правка сайта, работа с базой данных, публикация изменений, аналитика — складывать всё в один файл становится плохо: возникает ровно та самая проблема «слишком много контекста». Модель тратит внимание на правила деплоя, когда вы просите её поправить страницу. Что такое навык? Навык — это динамическая замена одному «монолитному» файлу. Вместо одного большого документа вы создаёте коллекцию специализированных навыков — каждый про свой тип задач. Начали новый чат — загрузили только тот навык, который нужен для текущей работы. Навык — это не один файл, а целая папка: SKILL.md — главный файл с инструкциями; именно он загружается в память ИИ при активации навыка; Документация — справочные материалы, примеры, шаблоны; Скрипты — готовые программы (например, на Python) для автоматизации типовых действий; Примеры — образцы того, как должен выглядеть хороший результат. Всё, что связано с одним типом задач, живёт в одном месте: документация говорит ИИ, что делать, скрипты дают ему инструменты для этого, а примеры показывают, к чему стремиться. Где они хранятся Навыки лежат в папке проекта .claude/skills/{имя-навыка}/ и хранятся вместе с проектом в общем хранилище истории изменений (Git). История правок навыков и кода проекта общая — все операции синхронизации и переключения версий применяются к ним одновременно. Как улучшать навыки Лучший способ — не редактировать навыки вручную, а просить ИИ сделать это самому. Заметили ошибку — скажите: «исправь это, а затем добавь правило в навык, чтобы этого больше не случалось». ИИ применит исправление и обновит навык прямо в этом же сеансе. Улучшение идёт быстро, особенно в начале: Из коробки — ИИ работает без знаний о вашем проекте. Результаты общие, часто неточные; После 20–30 улучшений — обычно достигается около 85% точности для большинства задач. Здесь собраны самые лёгкие и заметные выигрыши; После 100+ улучшений — качество приближается к почти безупречному даже для задач, которые трудно описать строгими правилами. Главное правило, когда вы просите ИИ обновлять навыки: держите правки маленькими, а файлы навыков короткими. Каждое обновление должно менять только необходимое — несколько строк, а не переписывание целиком. Модели склонны добавлять к каждому правилу много лишних объяснений, отчего навык «раздувается» и хуже укладывается в контекст. Поэтому явно просите сохранять изменения минимальными. Навык — свойство чата Навык привязан к чату так же, как модель: выбранное значение хранится у каждого чата, восстанавливается при его открытии и передаётся дальше, когда создаётся новый чат. Отдельный выбор «без навыка» — полноценное значение, а не отсутствие настройки: в интерфейсе это пункт «Без навыка», который стоит первым в списке навыков. Выбор в чате — селектор в области ввода показывает список навыков с их цветами, пункт «Без навыка» и кнопку перехода к управлению навыками. Открыли чат — селектор восстанавливает его навык, включая «Без навыка»; Сохранение — выбранное значение привязывается к текущему чату и одновременно становится значением по умолчанию для новых чатов; Наследование — новый чат из текущего (кнопка с переходом в новый чат, дубликат в Telegram) наследует его навык, включая «Без навыка»; новый чат из списка чатов берёт навык последнего активного чата; Заранее известный навык — задачи, боты, Telegram и API создания чатов принимают навык отдельным полем (например, запрос chats/create с параметром skill); Кнопки — кнопка может указывать навык явно через атрибут skill="…": созданный из неё чат откроется с этим навыком; без атрибута новый чат наследует навык чата, из которого нажата кнопка; Список чатов — рядом с моделью показывается навык чата («модель • навык» с цветом навыка); у чатов без навыка — только модель. Смена навыка в текущем чате сохраняется сервером и применяется к последующим сообщениям; для встроенной обвязки MiniAgent — со следующей сессии, потому что его системный промпт фиксируется при создании сессии (подробнее на странице MiniAgent — встроенный агент). Старые чаты, созданные до этой возможности, получили навык автоматически: по первому факту загрузки навыка в истории чата, а без такого факта — значение «Без навыка». Автоматическая загрузка навыка Раньше, чтобы навык загрузился, в начало первого сообщения чата вставлялась команда «start with loading skill {название}»: она попадала в сохраняемое сообщение, влияла на заголовок чата и мешала при копировании и редактировании. Теперь загрузка полностью автоматическая: требование доставляется каждой обвязке её собственным внеполосным каналом — строкой системного промпта, флагом запуска, переменной окружения или файлом, привязанным к чату. Пользовательское сообщение остаётся чистым. Как требование доставляется по всем десяти обвязкам (проверено на живой системе): ОбвязкаКанал доставки требованияОбнаружение навыковClaude Codeфлаг запуска --append-system-prompt (каждый ход)нативное чтение .claude/skillsMiniAgentстрока в системном промпте (MiniAgentOptions.Skill)нативное — инструмент load_skillCodexфлаг -c developer_instructions=… (каждый ход)нативное; указатель на папку навыков внутри строкиOpenCodeпеременная OPENCODE_CONFIG_CONTENT → файл инструкций чатанативное сканирование .claude/skillsPiфлаг --append-system-prompt (процесс чата)нет ⇒ указатель на папку навыков внутри строкиOh My Piтот же флаг --append-system-promptнет ⇒ указатель на папку навыков внутри строкиDeepSeek Harnessпеременная DSH_SYSTEM_PROMPT (персона + строка, при каждом запуске)нет ⇒ указатель на папку навыков внутри строкиKimi Codeфлаг --agent-file (обёртка ${base_prompt}; применяется при создании сессии)только свои каталоги ⇒ указатель на папку навыков внутри строкиReasonixфайл REASONIX.md + строка [skills] paths в config.toml (у каждого чата свой каталог)нативное через [skills] pathsCommand Codeфлаг --mod (хук appendSystemPrompt, каждый ход)флаг --skill — дополнительный корень навыков для чата Файлы, создаваемые для каналов (OpenCode, Kimi Code, Reasonix, Command Code), лежат в домашнем каталоге агента в папке chats/chat-{id}/ — по файлу на каждый чат. Никаких общих файлов на машине или внутри проекта: разные чаты с разными навыками не мешают друг другу, а у чата без навыка ничего не создаётся вовсе. Что получает агент при загрузке В контекст попадает не строка-команда, а полное содержимое навыка: SKILL.md со всеми инструкциями и все файлы папки навыка — документация, скрипты, примеры. Весь каталог .claude/skills при этом доступен агенту целиком: при необходимости он может открыть и другие навыки. MiniAgent дополнительно перечисляет доступные навыки в системном промпте, а его инструмент load_skill загружает выбранный навык на месте. Что изменилось для пользователя Промпты чистые — в сообщениях, заголовках чатов, копировании и редактировании больше нет служебной команды загрузки навыка; Заголовки корректные — название чата считается от вашего первого сообщения; Переключение навыка по ходу разговора — новый навык применяется со следующих сообщений (для MiniAgent, Kimi Code и Reasonix — со следующей сессии). Управление навыками Диалог навыков позволяет просматривать, редактировать, создавать и организовывать навыки. Он разделён на две панели: слева — список всех навыков, справа — редактор выбранного. Список всех навыков фильтруется по имени (поиск с клавиатуры), а диалог запоминает последний выбранный навык и открытый файл между открытиями; рядом с именем в списке есть пенал-кнопка, которая открывает диалог сразу с этим навыком из селектора чата. У каждого навыка есть свой цвет для быстрого визуального распознавания в селекторе и списках чатов. Цвета хранятся в файле .xedant/skills.yml — по записи на навык (поле color); этот файл участвует в валидации проекта и синхронизируется между устройствами: изменили на одном — на остальных изменения появятся мгновенно. Сами файлы навыков лежат в .claude/skills/{имя-навыка}/ внутри проекта и сохраняются в Git вместе с ним. Все навыки с файлом SKILL.md всегда активны и видны в селекторе — отдельного «выключения» нет. Копировать и вставить — навык целиком (имя, цвет и все файлы) копируется в буфер обмена и вставляется обратно. Вставка поверх существующего навыка объединяет файлы: упомянутые перезаписываются, недостающие добавляются, остальные не трогаются; если в буфере не оказалось SKILL.md — он восстанавливается автоматически; Экспорт и импорт — один навык или все сразу выгружаются JSON-файлом (имя, описание, файлы, метка времени). При импорте имени, которое уже занято, новый навык создаётся под именем с меткой времени, а исходный остаётся нетронутым; Live-обновление — любые изменения навыков (правки в редакторе, изменения из Git, действия агента) мгновенно доходят до всех открытых окон и вкладок: списки навыков и селектор в чате обновляются сами, а открытый редактор не сбрасывается. Редактор навыков Редактор в правой панели показывает все файлы навыка как вкладки. Первая вкладка — всегда SKILL.md, главный файл инструкций, который загружается в память ИИ. Остальные вкладки — другие файлы папки навыка. Возможности редактора: Вкладки — быстрый переход между всеми файлами навыка; Подсветка синтаксиса — удобное цветное оформление кода в скриптах и файлах настроек; Автосохранение — изменения сохраняются сами, по мере работы; Интеграция с Git — можно сохранять изменения навыков в историю проекта прямо из редактора. Правки навыков отслеживаются тем же хранилищем Git, что и проект: в панели Git изменения навыков видны вместе с изменениями кода — единая история. Редактор умеет запускать скрипты прямо из папок навыков. Это удобно для рутинных операций — публикация изменений, работа с базой данных, сборка. Это и безопасно: чувствительные данные (пароли, ключи доступа, строки подключения к базам) хранятся на уровне модели проекта, а не внутри навыка. И всё же постарайтесь не редактировать файлы навыков и скрипты вручную. Приучите себя (и сами модели) создавать и обновлять навыки через ИИ — например, используя навык управления навыками demo.skills. Модель лучше понимает структуру и правила оформления, а ручные правки незаметно «разъезжаются» в разные стороны. Аналитика по навыкам Поскольку навык хранится у каждого чата, статистика по навыкам точная: раздел «Навыки» на странице Аналитика показывает три графика за выбранный период — токены по навыкам, стоимость по навыкам и общее время чатов по навыку. Чаты без навыка объединены в отдельную серию «Без навыка». ← Назад: Настройки Далее: Модели → ### Настройки Настройки — это единый центр управления Pastukhov Agent: здесь решается, как выглядит интерфейс, как ведёт себя чат и как агент взаимодействует с внешними сервисами. Хаб открывается иконкой-шестерёнкой в шапке приложения. Каждая карточка открывает свой под-диалог поверх хаба — сам хаб остаётся открытым позади, поэтому можно переключаться между настройками, не закрывая окно. Изменения сохраняются автоматически: отдельная кнопка «Сохранить» не нужна. Карта разделов Карточки сгруппированы в пять групп: Основное, Автоматизация, Инструменты, Конфигурация и Помощь и аккаунт. У каждой карточки есть название и краткое описание; клик открывает под-диалог. Основное (General) Внешний вид — тема, размер шрифта чата, сведения о лицензии и упрощённый интерфейс; Чат — отображение сообщений, фильтрация и поведение отправки; Звук — звуки уведомлений и громкость; Буфер обмена — вставка изображений и файлов в чат. Автоматизация (Automation) Основной Telegram-бот — настройка админ-бота со всеми функциями управления; Дополнительные Telegram-боты — настройка ботов под конкретные задачи с собственными моделями и навыками; Запланированные задачи — запланированные скрипты и периодические задания; Кнопки — задержка автоклика, часы пик и автокоммит; Хуки — правила запрета и выполнения для вызовов инструментов; MCP-серверы — добавление и управление MCP-серверами. Инструменты (Tools) Аналитика — статистика использования, токены и расходы; Трафик прокси — просмотр чатов, проходящих через прокси; SSL-сертификаты — HTTPS-сертификаты для домена; Распознавание речи — голосовой ввод с разными движками распознавания. Подробнее — на странице Голосовой ввод. Конфигурация (Configuration) MiniAgent — именованные профили для встроенного бэкенда агента. Подробнее — на странице MiniAgent; Модели — добавление и управление моделями. Подробнее — на странице Модели; Навыки — управление навыками агента. Подробнее — на странице Навыки; Настройки проекта — редактирование YAML-файлов конфигурации проекта. Помощь и аккаунт (Help & Account) Справка — открыть документацию; Поддержка — обратиться в поддержку; Выйти — выйти из приложения. Упрощённый режим Упрощённый интерфейс включается в карточке «Внешний вид». В этом режиме хаб показывает только необходимое: группы Инструменты и Конфигурация скрываются целиком, из «Автоматизации» пропадают дополнительные Telegram-боты и запланированные задачи, из «Помощи и аккаунта» — справка и поддержка. Остаются внешний вид, чат, звук, буфер обмена, основной Telegram-бот, кнопки, хуки, MCP-серверы и выход из приложения. Как хранятся настройки Настройки хранятся на сервере парами «ключ-значение» и переживают перезапуск; Каждое изменение мгновенно транслируется всем подключённым клиентам через SignalR: в другой открытой вкладке или на другом устройстве настройка обновится сама; Размер шрифта чата запоминается на устройстве (per-device), а не на сервере — на каждом устройстве у вас может быть свой; Часть ключей редактируется вне хаба: выбранные модель и навык задаются в поле ввода чата и становятся значениями по умолчанию для новых чатов; настройки очереди промптов — в диалоге Промпты; Принудительный английский язык ответов (карточка «Хуки») дополнительно синхронизируется в локальный файл настроек Claude проекта. Брендинг проекта Каждый проект несёт небольшой файл project.yml с тремя полями: отображаемое название проекта, путь к иконке и ссылка на код. Название используется в шапке, заголовке страницы и установочном манифесте, иконка показывается рядом с ним. Файл создаётся автоматически при первом запуске, а при изменении перечитывается без перезапуска — имя и иконка применяются сразу. Редактируются поля в карточке «Настройки проекта». Обновление сервера Клиент периодически сверяет версию сервера: когда она меняется (после развёртывания), все открытые вкладки перезагружаются автоматически — обновлять страницу вручную не нужно. Связанные страницы Промпты — очередь сохранённых запросов с автоотправкой; Модели — пиковые часы и индикатор в поле ввода; MiniAgent — профили встроенного агента; Голосовой ввод — движки распознавания речи; Навыки — управление навыками; Хуки — правила безопасности и поведения. ← Назад: Git Далее: Навыки → ### Начало работы Pastukhov Agent — это личный ИИ-помощник, который работает над вашим проектом на компьютере или сервере: читает и изменяет файлы, выполняет команды, следит за качеством кода и ведёт с вами обычный чат. Он пригодится и разработчику, и владельцу бизнеса, который хочет самостоятельно вносить изменения в свой проект. Эта страница — с чего начать. Сначала выберите способ установки — каждый удобен по-своему: Установка через Docker (рекомендуется) — Docker — это технология «контейнеров»: приложение запускается в изолированной среде, где уже есть все необходимые инструменты. Работает на Linux, macOS и Windows. Контейнер полностью отделён от остальной системы: агент не сможет случайно повредить ваш компьютер, а «сломанный» контейнер воссоздаётся за секунды. Инструкция по установке Docker Windows Docker Desktop — тот же Docker, но с графическим приложением Docker Desktop для Windows (на базе WSL 2). Удобно, если вы привыкли управлять программами мышью, а не командами. Инструкция по установке Windows Docker Desktop Mac Docker Desktop — то же самое для macOS (Intel и Apple Silicon): графическое управление Docker с полной изоляцией. Инструкция по установке Mac Docker Desktop Установка WSL — Docker на Windows через WSL (подсистема Windows для Linux) без отдельной программы Docker Desktop. Даёт ту же изоляцию и нативную производительность Linux на Windows 10 или 11. Инструкция по установке WSL Установка Windows — обычное приложение для Windows 10/11: устанавливается как программа, работает в браузере. Настройки задаются переменными окружения или параметрами запуска. Инструкция по установке Windows Почему рекомендуем Docker даже на Windows: ИИ-модели лучше всего работают с Linux-инструментами, которые уже включены в контейнер, — на чистой Windows их пришлось бы устанавливать отдельно. Кроме того, контейнер полностью изолирован: модели не могут повредить основную систему, а среду для конкретной задачи легко пересоздать за секунды. Любой способ установки даёт всё необходимое для работы. После установки нужно настроить модель и указать API-ключ вашего поставщика ИИ — об этом в разделе Настройка первой модели ниже. Настройка учётных данных Учётные данные — это ваш логин и пароль для входа в приложение, как в личный кабинет. Они задаются переменными окружения AGENT_LOGIN (логин) и AGENT_PASSWORD (пароль). Переменные окружения — это технические параметры запуска: вы прописываете их один раз в настройках (например, в файле docker-compose), и программа применяет их автоматически при каждом запуске. Если переменные не заданы, приложение само сгенерирует временный пароль (логин — agent) и выведет его в консоль — окно, где работает программа. Такие учётные данные действуют до перезапуска приложения — удобно, чтобы просто попробовать программу. Полный список переменных — на странице Модели. Установщик Windows Программа установки настроит всё за вас: логин и пароль вы задаёте один раз при установке, и они сохраняются в системе. После установки приложение автоматически откроется в браузере с готовым демо-проектом. Если пропустить шаг с учётными данными, приложение выдаст временные и покажет их в окне консоли. Docker Задайте AGENT_LOGIN и AGENT_PASSWORD в файле docker-compose или файле .env. Пароль хранится в виде SHA256-хэша — это «отпечаток» пароля, по которому нельзя восстановить исходный текст: даже если файл настроек попадёт не в те руки, пароль останется в безопасности. На странице входа есть встроенный генератор такого отпечатка. Если переменные не заданы, приложение выдаст временные учётные данные в лог контейнера — смотрите их командой docker logs. Подробнее — в инструкции по установке Docker. Ручная установка Можно задать переменные окружения перед запуском, а можно просто запустить приложение и воспользоваться временными учётными данными из консоли. При задании пароля через переменную он должен быть SHA256-хэшем — используйте встроенный генератор на странице входа. Когда вы входите с временными учётными данными, на странице входа появляется предупреждение. Чтобы сделать их постоянными, задайте переменные окружения и перезапустите приложение. После входа вы получаете JWT-токен — «цифровой пропуск»: он поддерживает вашу сессию 90 дней, так что повторно входить каждый раз не придётся. По умолчанию ключ подписи токенов генерируется автоматически и хранится во временной папке системы — для обычной работы этого достаточно. Для постоянного ключа задайте переменную JWT_SECRET_KEY (не менее 32 символов): тогда выданные «пропуски» останутся действительными между перезапусками приложения. Главный интерфейс После входа вы видите список чатов — главный экран, с которого начинается работа: Список чатов — здесь собраны все ваши разговоры. У каждого чата — заголовок и время последнего обновления. Если чатов ещё нет, вас встретит заметная кнопка Новый чат. Новый чат — каждая беседа независима и не делится контекстом с другими, поэтому можно работать над несколькими задачами одновременно и нигде не запутаться. Обновления в реальном времени — список чатов обновляется сам, через технологию SignalR: новые чаты и прогресс работы появляются на экране сразу, страницу перезагружать не нужно. Список чатов запоминается браузером локально, поэтому при повторных визитах открывается мгновенно. Если он рассинхронизировался с базой данных — например, после удаления чатов из другого браузера, — нажмите кнопку обновления рядом с полем поиска чатов. Нажмите на любой чат, чтобы открыть его. Внутри — общение с агентом; подробно об интерфейсе чата — в документации Чат. Демо-проект (Windows) В установщик Windows входит готовый демо-проект: на нём удобно посмотреть, как агент разрабатывает, собирает, проверяет и исправляет код. При первом запуске приложения вы увидите именно его. Для установки через Docker или вручную укажите путь к вашему проекту переменной окружения AGENT_PROJECT_PATH. Pastukhov Agent работает с любой кодовой базой — просто укажите папку проекта и начинайте чат. Демо-проект включает демо-навыки — готовые инструкции для агента, как выполнять типовые задачи. Они полезны сами по себе и служат шаблонами для ваших собственных навыков. Подробнее — в документации Навыки. Pastukhov Agent работает в режиме одного проекта: один экземпляр — один проект. Экземпляры полностью изолированы, поэтому можно запускать несколько одновременно — на разных портах и для разных проектов. Настройка первой модели Прежде чем начать чат, нужно создать модель — набор настроек, который говорит агенту, какую нейросеть использовать и как к ней подключиться. Минимально — указать API-ключ: это секретный ключ доступа к нейросети, который выдаёт поставщик ИИ (компания, предоставляющая нейросети, — Anthropic, z.ai, OpenRouter и другие). Быстрый способ: пока моделей нет, в области ввода сообщений появляется ссылка «создать модель» — диалог настройки откроется прямо там, где нужно, отдельно переходить на страницу «Модели» не обязательно. Как создать первую модель: Нажмите Новая модель — на странице Модели в главном меню или по ссылке «создать модель» в области ввода сообщений Выберите поставщика ИИ из встроенного списка — Anthropic, z.ai, OpenRouter, xAI Grok, MiniMax, Kimi или «Своё» Выберите вариант модели (например, Claude Sonnet 4.6 или Claude Opus 4.7 для Anthropic) — модели отличаются качеством, скоростью и ценой Введите ваш API-ключ — все остальные параметры (название модели, адрес поставщика, цены) подставятся автоматически Если вашего поставщика или модели нет в списке, возьмите любой существующий шаблон и поправьте параметры после создания, либо добавьте поставщика в файл .pastukhov/providers.yml проекта. Можно также связаться с нами — добавим его во встроенный список. Какой поставщик выбрать: для интенсивной разработки (крупные программные продукты) удобнее всего z.ai (модели GLM) — там есть планы под активную работу. Для всего остального — включая повседневную работу с готовыми продуктами — оптимален DeepSeek с оплатой за фактические токены (доступен через шаблон OpenRouter). Если вы планируете и разрабатывать, и пользоваться готовым продуктом, заведите обе модели и переключайтесь под задачу. После создания модели выберите её в селекторе моделей — выпадающий список рядом с полем ввода (он появляется, когда создана хотя бы одна модель). Можно создать несколько моделей для разных поставщиков и переключаться между ними в любой момент. Подробнее — в документации Модели. Отправка первого сообщения Начать разговор просто: Создайте чат — в списке чатов нажмите Новый чат. Введите сообщение — в поле ввода напишите вопрос или опишите задачу обычными словами. Поле поддерживает многострочный текст. Отправьте — нажмите Enter или кнопку отправки. Shift+Enter добавляет перенос строки без отправки. Следите за ответом — ответ появляется в реальном времени. Если агент читает файлы или выполняет действия, вы увидите это прямо в чате. Совет: будьте конкретны. Вместо «Исправь баг» напишите «Форма входа не отправляется при нажатии кнопки. Помоги найти проблему». Чем больше контекста — тем точнее помощь. Пока агент работает, заголовок страницы показывает текущую статистику: затраченное время, скорость обработки (токенов в секунду — токены это «единицы текста», за которые вы платите поставщику) и стоимость на текущий момент. Рядом появляется кнопка остановки — нажмите, чтобы прервать запрос в любой момент. Нажмите на любое сообщение, чтобы увидеть его детали — какие файлы были прочитаны или изменены. Для правок показывается diff — наглядное сравнение «было/стало»: добавленные строки зелёным, удалённые красным. Наведите курсор на сообщение, чтобы увидеть статистику (время обработки, токены, стоимость) и кнопки: копировать сообщение или продолжить разговор с этого места — удобно для возобновления остановленного чата. Все возможности чата — типы сообщений, выбор навыка, переключение моделей, очередь сообщений — описаны в документации Чат. Работа с несколькими чатами Каждый чат — самостоятельный разговор со своим контекстом: один можно посвятить отладке функции, другой — планированию нового проекта, третий — изучению части кода. Вот как этим пользоваться: Создание чатов — нажмите Новый чат в списке чатов. После первого сообщения агент сам придумает чату понятный заголовок. Переключение между чатами — вернитесь к списку чатов и выберите нужный. Каждый чат помнит весь разговор, поэтому вы продолжите ровно с того места, где остановились. Рекомендация: заводите отдельный чат под каждую задачу или тему — так разговоры остаются сфокусированными, а нужную информацию легко найти. Например, один чат — «Обновление формы заказа», другой — «Настройка уведомлений по почте». Что дальше? Теперь, когда вы знакомы с основами, можно углубиться в возможности агента: Чат — типы сообщений, выбор навыка, переключение моделей, очередь сообщений и плавающая панель задач. Читать о чате Модели — несколько поставщиков ИИ, управление API-ключами, переключение между конфигурациями. Читать о моделях Файлы и проекты — как агент читает, редактирует и управляет файлами вашего проекта. Читать о файлах и проектах Сборка и развёртывание — автоматические проверки качества, управление запуском приложения. Читать о сборке и развёртывании Навыки — использование, создание и управление навыками, расширяющими возможности агента. Читать о навыках Настройки — карточный хаб: оформление, чат и звук, автоматизация, инструменты и конфигурация. Читать о настройках Назад: Документация | Далее: Чат ### Обвязки У Pastukhov Agent есть понятие обвязки — это «движок», программа, которая на самом деле выполняет задачи: читает файлы, правит код, запускает команды. Приложение не привязано к одному движку: оно оборачивает любой такой агент и превращает его в полноценный веб-интерфейс с чатом, файлами, сравнением версий (diff), сборками, сессиями и аналитикой. Из коробки доступны десять встроенных обвязок — Claude Code (по умолчанию), Codex, OpenCode, Pi, Oh My Pi, Reasonix, DeepSeek Harness, Kimi Code, MiniAgent и Command Code, — а подключение любой новой занимает около суток по запросу. MiniAgent — единственная обвязка без внешней программы: она встроена прямо в Pastukhov Agent, поэтому её не нужно устанавливать. Все обвязки устроены одинаково (единый внутренний интерфейс IAgentBackend), поэтому для вас они выглядят одинаково: тот же интерфейс чата, те же навыки, хуки, сборки и статистика. Меняется только «движок» под капотом — какой исполняемый файл реально запускается на каждое сообщение. Навыки при этом загружаются автоматически: требование доставляется каждой обвязке её собственным внеполосным каналом — строкой системного промпта, флагом запуска, переменной окружения или файлом, привязанным к чату (подробнее на странице Навыки). Как это работает Обвязка выбирается переменной AGENT_BACKEND, которая задаётся в конфигурации модели (см. Модели). Выбор происходит по тому же принципу, что и остальные переменные: Берётся модель, выбранная для чата; Если не задано — используется настройка selectedModel; Если и её нет — берётся модель default; Из результирующего набора переменных читается AGENT_BACKEND. Если её нет — используется claude-code. Допустимые значения: claude-code (по умолчанию), codex, opencode, pi, oh-my-pi, reasonix, deepseek-harness, kimi-code, mini, command-code. Таким образом, переключить движок можно для каждого чата отдельно — достаточно сменить у него модель. Авто-установка. Если нужного исполняемого файла нет на компьютере, Pastukhov Agent установит его сам при первом сообщении (через менеджер пакетов npm), а прогресс в реальном времени покажет прямо в чате. Устанавливать что-либо вручную обычно не нужно. Исключение — MiniAgent: ей внешняя программа не нужна вовсе, потому что она встроена в сам Pastukhov Agent. Встроенные обвязки Claude Code — пакет @anthropic-ai/claude-code. Базовая обвязка, по умолчанию. Полная поддержка: внутренний прокси, подагенты, навыки, переключение моделей. Codex — пакет @openai/codex. Модели GPT-5 от OpenAI. Вход через подписку ChatGPT (Go/Plus/Pro, безлимит) либо по предоплаченному API-ключу. Протестирован отлично — работает полностью. OpenCode — пакет opencode-ai. Движок-универсал: подключаете любой свой провайдер (Anthropic, OpenAI, Gemini, локальная модель). Pi — пакет @earendil-works/pi-coding-agent. Минимальный расширяемый агент из pi.dev. Работает с любым провайдером по вашему ключу. Oh My Pi — пакет @oh-my-pi/pi-coding-agent. Расширенный вариант Pi из omp.sh: те же возможности плюс готовые пресеты и инструменты из коробки. Reasonix — пакет reasonix. Агент, созданный для DeepSeek (reasonix.io): модели DeepSeek-V4 Flash/Pro, большой контекст — 1 миллион токенов. Ключ DeepSeek, без подписки. Протестирован отлично — работает полностью. DeepSeek Harness — собственный открытый агент DeepSeek (deepseek-harness). Архитектура «всё — плагин»: основной цикл, инструменты и адаптер DeepSeek подключаются как плагины. Модели DeepSeek-V4 Flash/Pro, контекст 1 миллион токенов. Ключ DeepSeek, без подписки. Kimi Code — пакет @moonshot-ai/kimi-code. Агент от Moonshot AI (kimi.com). Работает с моделями Kimi или любым совместимым провайдером по вашему ключу. Как подключить обвязку Подключение сводится к созданию модели с правильной переменной AGENT_BACKEND и данными для входа нужного движка: Откройте Настройки → Модели и нажмите «Создать»; Выберите готовый шаблон провайдера — Codex, Reasonix, OpenCode, Pi, Oh My Pi, DeepSeek Harness или Kimi Code; для MiniAgent — шаблон провайдера с поддержкой этой обвязки (Anthropic, DeepSeek, z.ai и другие), а для Command Code — модель типа Custom (готового шаблона у него нет). Шаблоны уже содержат AGENT_BACKEND и нужные переменные; Заполните API-ключ (секретный ключ доступа) или выполните вход (для Codex — кнопка /login с подпиской ChatGPT); Выберите эту модель у чата — при первом сообщении исполняемый файл установится автоматически. Либо создайте модель типа Custom и задайте переменные вручную — это даёт полный контроль. Пример для Codex: AGENT_BACKEND=codex CODEX_API_KEY=$CODEX_API_KEY # или вход через ChatGPT вместо ключа MODEL=gpt-5.6-sol Claude Code (по умолчанию) Базовая обвязка, на которой работает всё остальное. Пакет @anthropic-ai/claude-code (по умолчанию 2.1.217), исполняемый файл claude. Поддерживает внутренний прокси-сервер для журнала трафика и подсчёта стоимости, подагенты, навыки и переключение моделей Opus/Sonnet/Haiku на лету. Вход — через стандартные переменные Anthropic: ANTHROPIC_API_KEY — прямой ключ Anthropic; ANTHROPIC_AUTH_TOKEN — токен для совместимых прокси (например, z.ai); ANTHROPIC_BASE_URL — адрес поставщика или прокси. Codex Codex CLI от OpenAI — модели GPT-5. Пакет @openai/codex (по умолчанию 0.146.0), исполняемый файл codex, запускается в режиме codex exec --json: один процесс на сообщение, события приходят потоком в текстовом формате NDJSON (по одной записи на строку), завершение — по выходу процесса. Сессии сохраняются и возобновляются через resume. Два способа входа, управляемые переменной CODEX_AUTH (auto по умолчанию): Подписка ChatGPT (CODEX_AUTH=chatgpt) — безлимитное использование по плану Go/Plus/Pro. Вход выполняется командой /login: открывается ссылка auth.openai.com, вводится код, учётка сохраняется в ~/.codex/auth.json. Расход подписки отслеживается встроенным сервисом. API-ключ (CODEX_AUTH=apikey или когда логина нет) — предоплаченные кредиты. Переменные OPENAI_API_KEY/CODEX_API_KEY и опционально OPENAI_BASE_URL для прокси. В режиме auto (по умолчанию) Pastukhov Agent сам выбирает: если есть вход в ChatGPT — берётся подписка, иначе — API-ключ. Доступные модели: gpt-5.6-sol (флагманская), gpt-5.6-luna (быстрая и недорогая). Задаются переменной MODEL. Codex протестирован отлично и работает полностью — чат, инструменты, сессии, аналитика и отслеживание квоты подписки. OpenCode Движок-универсал с opencode.ai. Пакет opencode-ai (актуальная версия), исполняемый файл opencode, запуск opencode run --format json. Альтернативная установка одним скриптом: curl -fsSL https://opencode.ai/install | bash. Вход — свой ключ провайдера (подписок нет): ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY — ключ нужного провайдера; LOCAL_ENDPOINT — для локальной модели; любые переменные с префиксом OPENCODE_. Модель задаётся в формате «провайдер/модель», например MODEL=anthropic/claude-sonnet-4-20250514. Pi Минимальный расширяемый агент из pi.dev. Пакет @earendil-works/pi-coding-agent (актуальная версия), исполняемый файл pi, запуск в режиме pi --mode rpc — Pastukhov Agent общается с ним по RPC-протоколу (команды set_model и т. п.), сессии сохраняются в текстовом формате JSONL (по одной записи на строку) и возобновляются после перезапуска. Вход — свой ключ провайдера, как у OpenCode: ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY, LOCAL_ENDPOINT; любые переменные с префиксом PI_. Модель — в формате «провайдер/модель:мышление», например MODEL=anthropic/claude-sonnet-4-20250514:medium (суффикс :thinking задаёт уровень размышлений). MiniAgent MiniAgent — встроенная обвязка: не внешняя программа, а библиотека на C#, вшитая в сам Pastukhov Agent (минималистичный кодинг-агент в духе Pi, полностью переписанный на C#). Никакой внешний процесс не запускается и никакой npm-пакет не устанавливается — обвязка всегда «под рукой» у сервера. Выбирается переменной AGENT_BACKEND=mini. Возможности — как у Pi: инструменты read, write, edit, bash, grep, find, ls плюс glob и загрузка навыков load_skill, сессии JSONL с возобновлением после перезапуска, переключение модели и уровня размышлений на лету, автоматическое сжатие контекста, повторы при временных сбоях и подсчёт стоимости. Инструменты выполняются последовательно, как в Claude Code. Дополнительно MiniAgent поддерживает именованные профили настроек (файл miniagent.yml, переопределение переменными MINI_PROFILE_*) и инструмент параллельного запуска команд parallel_bash — подробнее на странице MiniAgent. Модель задаётся в формате «провайдер/модель:мышление», например MODEL=anthropic/claude-sonnet-5:medium (суффикс :thinking задаёт уровень размышлений: off, minimal, low, medium, high). Готовые шаблоны провайдеров — Anthropic, DeepSeek, z.ai, BigModel, OpenRouter, xAI, MiniMax, Moonshot, OpenAI, OpenCode Go/Zen — уже содержат обвязку MiniAgent и её параметры: MINI_BASE_URL (адрес), MINI_API (формат протокола — anthropic-messages или openai-completions), MINI_AUTH (api-key или bearer) и MINI_API_KEY (ключ). Любая модель, которой нет в шаблоне, соберётся автоматически по этим параметрам, а при наличии файла ~/.mini/models.json — из него (формат, совместимый с Pi). Если модель не задана вовсе, по умолчанию используется deepseek/deepseek-v4-flash. Данные MiniAgent живут в папке ~/.mini (переопределяется переменной MINI_AGENT_DIR): models.json — конфигурация моделей, agent-sessions — сессии (JSONL, возобновляются после перезапуска), skills — дополнительные навыки и глобальный CLAUDE.md. Из коробки MiniAgent сама делает то, что в других обвязках приходится настраивать: читает CLAUDE.md/AGENTS.md проекта (приоритет у CLAUDE.md), сама находит навыки .claude/skills и размечает интерактивные формы и кнопки (agent.form/agent.button) прямо в системном промпте. Передача изображений в чат пока не подключена — картинки при отправке игнорируются с предупреждением в логе. Полный обзор возможностей и подключения MiniAgent → Reasonix Кодинг-агент, созданный для DeepSeek (reasonix.io). Пакет reasonix (актуальная версия), исполняемый файл reasonix, запуск reasonix run --output-format stream-json --auto: один процесс на сообщение, события приходят потоком (NDJSON), завершение — по выходу процесса. Сессии сохраняются в JSONL и возобновляются через --resume. Вход — ключ DeepSeek (без подписки, предоплаченные кредиты): DEEPSEEK_API_KEY — ключ для api.deepseek.com; для произвольного провайдера в формате OpenAI (OpenRouter и т. п.) — REASONIX_BASE_URL, REASONIX_API_KEY и модель (REASONIX_MODEL либо MODEL). Reasonix читает ключи провайдера только из своего конфига (<REASONIX_HOME>/.env), а не из переменных окружения — но Pastukhov Agent сам подкладывает туда разрешённые ключи перед запуском, вручную ничего настраивать не нужно. Модели DeepSeek — Flash (быстрая, по умолчанию) и Pro. Контекст — 1 миллион токенов. Задаются переменной MODEL в формате «провайдер/модель» (например deepseek/deepseek-v4-pro); готовые шаблоны окружения Reasonix уже содержат правильное значение. Reasonix протестирован отлично и работает полностью — чат, инструменты, рассуждения, сессии и аналитика. Oh My Pi Расширенная версия Pi из omp.sh. Пакет @oh-my-pi/pi-coding-agent, исполняемый файл omp, запуск в режиме omp --mode rpc — тот же RPC-протокол, что у Pi, поэтому возможности идентичны: сессии, переключение моделей, инструменты. Отличается набором готовых пресетов и инструментов «из коробки», а также хранит сессии в своей папке ~/.omp/agent/sessions. Вход — свой ключ провайдера, как у Pi: ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY, LOCAL_ENDPOINT; любые переменные с префиксом OMP_ (например OMP_PROVIDER — провайдер по умолчанию, если в модели не указан). Модель по умолчанию — anthropic/claude-sonnet-5. Уровень размышлений задаётся отдельно после запуска процесса, поэтому суффикс :thinking в имени модели не нужен. DeepSeek Harness Собственный открытый агент DeepSeek (github.com/deepseek-ai/deepseek-harness, сокращённо dsh). Его особенность — архитектура «всё — плагин»: основной цикл, инструменты и адаптер DeepSeek подключаются как плагины. Pastukhov Agent запускает его как один постоянный процесс на чат и общается с ним по протоколу JSON-RPC (вызовы функций в текстовом виде): токены, вызовы инструментов, списки задач и стоимость поступают в чат в реальном времени. Первый запуск. Исполняемый файл не ставится через npm: при первом использовании Pastukhov Agent сам подготовит рабочую папку dsh-runtime в папке проекта (.pastukhov/dsh-runtime), установит зафиксированную версию пакетов и сгенерирует конфиг. Нужен Node.js версии 22.19+ или 24+ — установщик проверит это заранее. Вход — ключ DeepSeek (без подписки, предоплаченные кредиты): DEEPSEEK_API_KEY — ключ для api.deepseek.com; DEEPSEEK_BASE_URL — адрес другого провайдера в формате OpenAI (по умолчанию — DeepSeek напрямую). Модели — deepseek-v4-flash (быстрая, по умолчанию) и deepseek-v4-pro (глубже), задаются переменной DSH_MODEL. Контекст — 1 миллион токенов. Смена модели перезапускает процесс агента. Подагенты DeepSeek Harness открываются отдельными дочерними чатами (как у Claude Code), списки задач отображаются чек-листами, стоимость считается по ценам DeepSeek с учётом кэша. После паузы или перезапуска агент получает краткую сводку прошлого диалога — файлы на диске остаются главным результатом работы. DeepSeek Harness находится в активной разработке (предварительная версия). Версии пакетов зафиксированы, поэтому обновление происходит осознанно — через переменную DSH_RUNTIME_VERSION. Kimi Code Кодинг-агент от Moonshot AI (kimi.com). Пакет @moonshot-ai/kimi-code, исполняемый файл kimi, запуск kimi -p "<промпт>" --output-format stream-json: один процесс на сообщение, события приходят потоком (NDJSON), завершение — по выходу процесса. Сессии сохраняются и возобновляются через --session. Нужен Node.js 22.19+. Вход — через переменные канала модели (это единственный путь, которым Kimi Code принимает ключ из переменных окружения — обычный KIMI_API_KEY он игнорирует): KIMI_MODEL_NAME — имя модели (наличие этой переменной включает канал); KIMI_MODEL_API_KEY — ключ провайдера; KIMI_MODEL_BASE_URL — адрес провайдера (по умолчанию — провайдер Kimi); KIMI_MODEL_PROVIDER_TYPE — формат протокола: kimi, anthropic или openai; KIMI_MODEL_MAX_CONTEXT_SIZE — размер контекста в токенах (по умолчанию 262144). Вместо ключа можно использовать уже выполненный вход OAuth (авторизация через браузер), сохранённый в ~/.kimi-code. Готовые шаблоны провайдеров (Anthropic, DeepSeek, Moonshot и т. д.) уже содержат правильные значения — вручную ничего настраивать не нужно. Command Code Кодинг-агент от Langbase (commandcode.ai) — кроссплатформенный терминальный агент с закрытым кодом. Пакет command-code, исполняемый файл cmd (на Windows — cmdc), запуск cmd -p "промпт" --output-format json: один процесс на сообщение, события приходят потоком (NDJSON), завершение — по строке результата. Нужен Node.js 22+. Запись, правка файлов и команды оболочки в headless-режиме по умолчанию запрещены — Pastukhov Agent запускает Command Code с флагом --yolo, который их включает. Сессии на диск не сохраняются: контекст диалога передаётся в каждом новом сообщении. Вход — только через аккаунт Command (подписка или предоплаченный ключ API; ключи Anthropic/OpenAI/DeepSeek не принимаются): cmd login — вход через браузер (OAuth); учётка сохраняется в ~/.commandcode; COMMAND_CODE_API_KEY — ключ API Command Code; задаётся в конфигурации модели и имеет приоритет над логином. Модель задаётся переменной MODEL (за аккаунтом Command доступно более 60 моделей). Если модель не задана, cmd использует свою модель по умолчанию; неизвестное имя модели — это ошибка, проверяйте написание. Токены и стоимость приходят в строке результата каждого ответа и попадают в чат и аналитику. Свои навыки Command Code ищет в папках .commandcode/skills и .agents/skills, поэтому Pastukhov Agent сам добавляет в промпт указатель на навыки .claude/skills — «вызови навык» работает как обычно. Справочник переменных AGENT_BACKEND — выбор обвязки: claude-code (по умолчанию), codex, opencode, pi, oh-my-pi, reasonix, deepseek-harness, kimi-code, mini, command-code CLAUDE_PATH / CODEX_PATH / OPENCODE_PATH / PI_PATH / OMP_PATH / REASONIX_PATH / KIMI_CODE_PATH / COMMAND_CODE_PATH — путь к конкретному исполняемому файлу (переопределение авто-поиска) CLAUDE_CODE_VERSION / CODEX_VERSION / OPENCODE_VERSION / PI_VERSION / OMP_VERSION / REASONIX_VERSION / KIMI_CODE_VERSION / COMMAND_CODE_VERSION — зафиксировать версию при авто-установке CODEX_AUTH — способ входа в Codex: auto (по умолчанию), chatgpt, apikey OPENAI_API_KEY / CODEX_API_KEY — предоплаченный ключ OpenAI для Codex (+ OPENAI_BASE_URL для прокси) DEEPSEEK_API_KEY — ключ DeepSeek для Reasonix и DeepSeek Harness; либо REASONIX_BASE_URL + REASONIX_API_KEY для провайдера в формате OpenAI (OpenRouter и т. п.) DSH_MODEL — модель DeepSeek Harness: deepseek-v4-flash (по умолчанию) или deepseek-v4-pro DSH_RUNTIME_VERSION / DSH_RUNTIME_DIR / DSH_AGENT_PATH — управление средой запуска dsh (версия пакетов, папка рантайма, явный путь к исполняемому файлу) DSH_PERMISSION_MODE — режим доступа dsh: danger-full-access (по умолчанию) или workspace-write (строже, с запросом разрешений) KIMI_MODEL_NAME / KIMI_MODEL_API_KEY / KIMI_MODEL_BASE_URL / KIMI_MODEL_PROVIDER_TYPE / KIMI_MODEL_MAX_CONTEXT_SIZE — канал модели Kimi Code (см. раздел выше) COMMAND_CODE_API_KEY — ключ API Command Code (приоритет над входом cmd login) MINI_PROVIDER — провайдер MiniAgent по умолчанию, если в модели нет префикса провайдер/ MINI_BASE_URL / MINI_API / MINI_AUTH / MINI_API_KEY — параметры подключения MiniAgent для авто-сборки моделей: адрес провайдера, формат протокола (anthropic-messages или openai-completions), тип авторизации (api-key или bearer) и ключ доступа MINI_AGENT_DIR — папка данных MiniAgent (по умолчанию ~/.mini): сессии, models.json, навыки, глобальный CLAUDE.md MODEL — модель в формате, принятом обвязкой (имя для Codex и Command Code, провайдер/модель для OpenCode, Pi, Reasonix и MiniAgent) Установка и версии По умолчанию исполняемые файлы ставятся автоматически через npm при первом использовании. Если нужно поставить вручную: npm install -g @anthropic-ai/claude-code # Claude Code npm install -g @openai/codex # Codex npm install -g reasonix # Reasonix (либо: brew install esengine/reasonix/reasonix) npm install -g opencode-ai # OpenCode (либо: curl -fsSL https://opencode.ai/install | bash) npm install -g @earendil-works/pi-coding-agent # Pi curl -fsSL https://omp.sh/install | sh # Oh My Pi (npm-пакет сам по себе не запускается) npm install -g @moonshot-ai/kimi-code # Kimi Code npm install -g command-code # Command Code (исполняемый файл cmd, на Windows — cmdc; нужен Node.js 22+) # DeepSeek Harness — без ручной установки: рантайм готовится автоматически (нужен Node.js 22.19+ или 24+) # MiniAgent — устанавливать нечего: она встроена в Pastukhov Agent Версию можно зафиксировать переменной окружения (например CODEX_VERSION=0.146.0), либо указать точный путь к исполняемому файлу через *_PATH — тогда авто-установка не понадобится вовсе. MiniAgent устанавливать не нужно вообще: она встроена в сам Pastukhov Agent, поэтому у неё нет ни npm-пакета, ни переменной версии, ни отдельного исполняемого файла. Статус и поддержка Claude Code — обвязка по умолчанию, работает идеально: полный функционал без ограничений. Codex протестирован отлично — стабильная полноценная работа: чат, инструменты, сессии, аналитика, отслеживание квоты ChatGPT. Reasonix протестирован отлично — стабильная полноценная работа: чат, инструменты, рассуждения DeepSeek, сессии и аналитика. Kimi Code протестирован отлично — стабильная работа: чат, инструменты, сессии, аналитика по журналу трафика. OpenCode, Pi и Oh My Pi реализованы и подключаются, но как более свежие обвязки могут содержать мелкие шероховатости. Любые баги в них поправимы буквально за пару часов по запросу. Command Code — реализован и подключается; как новая обвязка может содержать мелкие шероховатости, полная проверка с живым ключом ещё впереди. DeepSeek Harness — предварительная версия от DeepSeek: в активной разработке, версии зафиксированы. Работает: чат, инструменты, подагенты, списки задач, стоимость. MiniAgent — встроенная обвязка: работает сразу, без установки; чат, инструменты, сессии, стоимость и аналитика. Прошла полный цикл тестирования — переключение моделей, остановка и возобновление, сжатие контекста. Новая обвязка по запросу — нужно подключить ещё какой-нибудь агент (Gemini CLI, Cursor, Aider и т. п.)? Архитектура IAgentBackend это предусматривает: подключение любой новой обвязки занимает около 1 суток. ← Назад: Модели Далее: MiniAgent → ### Папка .pastukhov Что такое папка .pastukhov? Папка .pastukhov/ — это каталог конфигурации и данных Pastukhov Agent. Она создаётся автоматически в корне вашего проекта при первом запуске Pastukhov Agent и хранит всё необходимое для приложения: определения сборок, настройки развёртывания, пресеты моделей, файлы базы данных, журналы выполнения и многое другое. Вам редко приходится редактировать эти файлы самостоятельно. ИИ-модель читает .pastukhov/README.md, чтобы понять формат каждого файла конфигурации, поэтому вы можете просто попросить её внести изменения — «добавить сборку, которая запускает мой линтер», «настроить Docker-развёртывание на staging», «создать новую модель для GPT-4» — и модель правильно обработает синтаксис YAML и структуру файлов. На этой странице объясняется, что делает каждый файл и папка, чтобы вы знали, что в них находится, и могли принимать обоснованные решения, когда ИИ предлагает изменения. project.yml Это «удостоверение личности» вашего проекта. В нём хранится название проекта, дополнительная иконка и дополнительная ссылка для открытия проекта в веб-редакторе VS Code. project: name: "MyProject" # Автоопределяется из git remote URL icon: ".pastukhov/project.svg" # Опционально: иконка проекта, отображаемая в интерфейсе code: "https://..." # Опционально: URL VS Code Web Поле name автоматически устанавливается из вашего git remote при первом запуске, поэтому обычно вам не нужно его изменять. Поле icon может указывать на файл .svg или .ico. Поле code используется, когда вы хотите кнопку в интерфейсе, которая открывает ваш проект напрямую в VS Code. build.yml Здесь вы определяете автоматические проверки сборки — команды, которые проверяют, правильно ли ИИ изменил код. Несмотря на название, сборке совсем не обязательно компилировать что-то. Подойдёт любая команда, которая выдаёт понятный результат — ошибки и предупреждения: компиляторы, линтеры (проверка стиля и ошибок в коде), проверщики типов, запуски тестов, сканеры безопасности или собственные скрипты проверки. Сборки поддерживают два типа: Командные сборки выполняют команду и разбирают её вывод, выискивая ошибки и предупреждения Сборки с промптами создают новый чат с проверочным заданием — удобно для ревью кода и проверок, где нужно «подумать» с помощью ИИ build: compile: path: "server/" command: "dotnet build" delay: 3 timeout: 60 watch: "*.cs" ignore: [] replacements: [] stopStrings: [] display: always autofix: always startSound: "" endSound: "" soundVolume: 1.0 ai-review: watch: chat prompt: "/verify Review the recent code changes. Read the transcript at {chat} and report any problems." chatTitle: "Code Review" delay: 5 timeout: 120 Основные свойства: command — Shell-команда для выполнения (только для командных сборок) prompt — Промпт проверки, отправляемый в новый AI-чат (только для сборок с промптами) watch — шаблоны имён файлов (*.ts *.js), названия других сборок (compile) или chat для запуска по завершении пользовательского чата delay — Секунды ожидания перед запуском после обнаружения изменений (по умолчанию: 3) timeout — Максимальное время выполнения в секундах (по умолчанию: 60) display — Когда показывать в панели сборки: always, errors, warnings или never autofix — Когда участвовать в Автоисправлении: always, errors, warnings или never ignore — Regex-шаблоны для подавления в выводе ошибок/предупреждений replacements — пары «найти/заменить» для путей в выводе (полезно, когда сборка запускается в Docker или временных каталогах) stopStrings — Строки, которые немедленно прерывают сборку при обнаружении в выводе startSound / endSound / soundVolume — Опциональная аудиообратная связь при запуске или завершении сборки Сборки могут следовать друг за другом: одна следит за другой и запускается только после её успешного завершения. Так выстраиваются цепочки проверок — например, компиляция → тесты → развёртывание. Вывод сохраняется в .pastukhov/build/ тремя файлами на задачу: {name}.output.txt (полный вывод), {name}.errors.txt (спаршенные ошибки) и {name}.warnings.txt (спаршенные предупреждения). Узнайте больше о сборках, Автоисправлении и панели сборки → deploy.yml Этот файл определяет цели развёртывания — как запускается ваше приложение после прохождения сборок. Он поддерживает два метода: debug для локальной разработки и docker для удалённых развёртываний контейнеров. # Локальная разработка — запускается напрямую на вашем компьютере deploy: my-app: method: "debug" path: "./server" command: "dotnet run" watch: "compile" # Перезапускается после успешного завершения этой сборки shallowCopy: true # Копировать только изменённые файлы (быстрее) url: "https://..." # Опционально: кликабельная ссылка в интерфейсе startSound: "" endSound: "" # Удалённое развёртывание — отправляет в Docker-контейнер через SSH deploy: production: method: "docker" host: "server.com" username: "deploy" sshKeyPath: "~/.ssh/key" imageName: "app:latest" containerName: "myapp" dockerfilePath: "./Dockerfile" environmentVariables: - PORT=3000 portMappings: "8080": "3000" Метод debug запускает приложение прямо на вашем компьютере — удобно для разработки. Он умеет следить за сборками и перезапускаться после успешной проверки, копирует только изменённые файлы (так перезапуск быстрее) и поддерживает переменные окружения. Метод docker отправляет код на удалённый сервер по SSH, собирает Docker-образ и управляет контейнером — для staging и production. Поддерживаются настройка портов и томов (папок), Docker-сети, проверки работоспособности и свои параметры сборки. Вывод запущенного приложения сохраняется в .pastukhov/deploy/{name}.log. Оба метода поддерживают опциональные звуковые уведомления (startSound, endSound, soundVolume). Узнайте больше об элементах управления развёртыванием, панели развёртывания и методах развёртывания → models.yml Этот файл хранит пресеты моделей ИИ. Каждая модель определяет набор переменных, которые применяются при выборе этой модели в интерфейсе — например, идентификатор модели, длина контекста и ценообразование. models: claude-sonnet: variables: - ANTHROPIC_MODEL=claude-sonnet-4-20250514 - MODEL_CONTEXT_LENGTH=200000 - MODEL_INPUT_PRICE=3.0 - MODEL_OUTPUT_PRICE=15.0 claude-sonnet-fast: variables: - ANTHROPIC_MODEL=claude-sonnet-4-20250514 - MODEL_CONTEXT_LENGTH=200000 - MODEL_INPUT_PRICE=3.0 - MODEL_OUTPUT_PRICE=15.0 Модели поддерживают наследование: дочерняя модель перенимает все переменные родительской. Например, если есть модели glm, glm-5 и glm-5-turbo, вариант turbo унаследует настройки от обоих, и вам нужно задать только то, что отличается на каждом уровне. Значения с префиксом $ ссылаются на системные переменные окружения: $MY_API_KEY будет заменено значением переменной окружения MY_API_KEY из вашей системы. Узнайте больше о создании и переключении моделей → mcp.yml В этом файле подключаются MCP-серверы — внешние инструменты, расширяющие возможности модели: просмотр веб-страниц, запросы к базам данных, поиск по коду и другое. version: "1.0" servers: filesystem: enabled: true type: "stdio" command: "npx" args: - "-y" - "@modelcontextprotocol/server-filesystem" - "/project" env: NODE_ENV: "production" Каждый сервер подключается одним из трёх способов: stdio — запускается как программа на вашем компьютере http — подключается к удалённому серверу через интернет sse — подключается через Server-Sent Events (сервер сам присылает обновления) Этот файл автоматически синхронизируется с собственной конфигурацией MCP Claude Code при запуске и при обнаружении изменений, поэтому вы можете управлять серверами как из интерфейса настроек Pastukhov Agent, так и напрямую в конфигурации Claude Code, и они будут оставаться синхронизированными. Узнайте больше о добавлении и управлении MCP-серверами → hooks.yml В этом файле задаются хуки — правила, которые перехватывают действия ИИ до их выполнения. С их помощью можно запрещать опасные операции или запускать свои команды в нужные моменты. PreToolUse: Bash: - type: "deny" pattern: "rm -rf /" message: "Dangerous command blocked" - type: "execute" pattern: "git push" command: "echo 'Push detected'" regex: false Существует два типа событий хуков: PreToolUse — срабатывает перед любым действием ИИ (команда в терминале, правка файла и т.д.). Можно deny (запретить) подходящие операции — с сообщением агенту — или execute (выполнить) свою команду, когда шаблон совпал UserPromptSubmit — срабатывает при отправке промпта, позволяя предварительно обработать его Файл hooks.yml автоматически генерирует .claude/settings.local.json — фактическую конфигурацию хуков, которую читает Claude Code. Это означает, что вам нужно поддерживать только hooks.yml, а соответствующий файл настроек Claude Code будет автоматически обновляться. Узнайте больше о правилах запрета, командах выполнения и контроле использования инструментов → skills.yml Этот файл управляет тем, какие навыки активны в вашем проекте и каким цветом они отображаются в интерфейсе. Навыки — это повторно используемые наборы инструкций, которые изменяют поведение ИИ для определённых задач. skills: version: "1.0" activated: my-skill: enabled: true color: "#3b82f6" another-skill: enabled: false Каждая запись навыка имеет переключатель enabled и опциональный color для отображения в интерфейсе. Отключённые навыки не будут появляться в селекторе навыков и не будут влиять на поведение ИИ. Узнайте больше об использовании, создании и редактировании навыков → providers.yml Этот файл хранит определения провайдеров ИИ — предварительно сконфигурированные шаблоны, определяющие способы подключения к различным сервисам ИИ. Каждый провайдер указывает API-эндпоинт, названия моделей и шаблоны переменных окружения, необходимые для аутентификации. providers: anthropic: name: "Anthropic" environments: default: variables: - API_BASE_URL=https://api.anthropic.com - MODEL_ID=claude-sonnet-4-20250514 - API_KEY_VAR=ANTHROPIC_API_KEY Этот файл автоматически создаётся из встроенного ресурса, если он отсутствует. Он включает предварительно сконфигурированных провайдеров для популярных сервисов, таких как Anthropic, OpenRouter и других. Обычно вам не нужно редактировать его вручную — модель ИИ использует его для понимания того, как подключиться к каждому провайдеру. Файлы парсеров Три файла парсеров вытаскивают ошибки и предупреждения из текстового вывода программ. Все они устроены одинаково — простая система правил с блоками [ERROR] и [WARNING], внутри которых шаблоны поиска (регулярные выражения). Файлы подробно задокументированы комментариями внутри, поэтому править их вручную почти не приходится. Как работают парсеры Парсер идёт по строкам вывода и по очереди пробует применить шаблоны: Строки комментариев, начинающиеся с #, игнорируются (используются для документации) Однострочные шаблоны — соответствуют одной строке вывода Многострочные шаблоны — заключены в {{...}}, захватывают одну или несколько идущих подряд строк (удобно для подробных отчётов об ошибках или контекста с отступами) # Ошибки компиляции TypeScript [ERROR] .*\.ts.* # Соответствует строке, содержащей путь к .ts файлу Error.* # Соответствует строке, начинающейся с "Error" {{^\s+}} # Соответствует строкам контекста с отступом, которые следуют далее [/ERROR] Парсеры перезагружаются автоматически при изменении их файлов — правки вступают в силу сразу. build.parser Извлекает ошибки и предупреждения из вывода команд сборки. Уже содержит шаблоны для C# (MsBuild, CSC), TypeScript, Svelte, Vite, Python (ruff) и ReSharper — при необходимости добавляйте шаблоны для других инструментов проекта. deploy.parser Вытаскивает ошибки и предупреждения из логов запущенного приложения: необработанные ошибки (исключения), подробные отчёты об ошибках, сбои подключения к базе данных, HTTP-ошибки и падения на разных платформах. output.parser Универсальный парсер для вывода обычных скриптов: ошибки командной строки, отчёты об ошибках Python, сбои Node.js и npm и другие типовые форматы. Применяется, когда вывод не относится к сборке или развёртыванию. license.txt Этот файл хранит ваш ключ лицензии приложения как строку JSON в кодировке Base64. Он имеет наивысший приоритет среди всех источников лицензии — он переопределяет как аргумент командной строки --license, так и переменную окружения AGENT_LICENSE. Если этот файл присутствует, его содержимое используется независимо от другой конфигурации. Узнайте больше о типах лицензий, активации и статусе → project.db Это база данных приложения, которая хранит все постоянные данные Pastukhov Agent — чаты, сообщения, настройки, аналитику и многое другое. По умолчанию используется SQLite, который хранит всё в одном файле без необходимости внешнего сервера баз данных. Может появиться три файла: project.db — Основной файл базы данных project.db-wal — журнал изменений: режим WAL ускоряет работу при одновременных чтении и записи project.db-shm — вспомогательный файл общей памяти для режима WAL База создаётся сама при первом запуске, а её структура обновляется автоматически при обновлениях программы — управлять ею вручную не нужно. Вместо SQLite можно использовать PostgreSQL: задайте переменную окружения AGENT_DATABASE со строкой подключения, и база данных будет создана там. telegram.db База данных для Telegram-бота: хранит соответствия между чатами Telegram и чатами Pastukhov Agent, а также настройки пользователей (активный чат, выбранный навык). Создаётся автоматически при включении бота; её данные не переносятся в основную базу проекта. Может появиться три файла: telegram.db — Основной файл базы данных telegram.db-wal — журнал изменений telegram.db-shm — вспомогательный файл общей памяти для режима WAL proxy.db SQLite-база для встроенного прокси-сервера — хранит журнал запросов (заголовки, тексты сообщений, количество потраченных токенов, длительность, ошибки) и кэш «размышлений» модели. Создаётся автоматически при активации прокси. Может появиться три файла: proxy.db — Основной файл базы данных proxy.db-wal — журнал изменений proxy.db-shm — вспомогательный файл общей памяти для режима WAL Автоматическая очистка: 30 дней для логов запросов, 7 дней для кэша рассуждений. API-ключи и секреты автоматически фильтруются из сохранённых данных. Каталоги build/ Хранит журналы вывода сборок. Автоматически создаётся при запуске сборок. Каждая задача сборки производит три файла: {name}.output.txt (полный вывод команды), {name}.errors.txt (спаршенные ошибки) и {name}.warnings.txt (спаршенные предупреждения). Вы можете просматривать их в панели сборки, не открывая файлы напрямую. deploy/ Хранит вывод времени выполнения развёртывания и отладочные логи клиента. Автоматически создаётся при запуске развёртываний. Каждое развёртывание производит {name}.log с выводом времени выполнения приложения. Отладочные логи клиента хранятся как {domain}.log (автоусечение до 100 МБ). sounds/ Опциональный каталог для пользовательских звуков уведомлений. Поместите сюда файлы .mp3, чтобы переопределить встроенные звуки или добавить новые. Встроенные названия звуков: message, notification, complete, error, commit и deploy. Сервер сначала проверяет .pastukhov/sounds/, затем возвращается к встроенным значениям по умолчанию. Чтобы восстановить встроенный звук, просто удалите свой пользовательский файл. Свойства startSound и endSound в build.yml и deploy.yml могут ссылаться на любое встроенное название или пользовательский звук, помещённый в этот каталог. tools/ Опциональный каталог для служебных скриптов. Поместите сюда любые вспомогательные скрипты, которые вы хотите использовать вместе с вашим проектом — диагностические инструменты, помощники развёртывания или пользовательскую автоматизацию. Этот каталог не создаётся автоматически. Автоматически создаваемые файлы Следующие файлы автоматически создаются при первом запуске, если они не существуют. Вы можете безопасно удалить любой из них — они будут восстановлены из встроенных значений по умолчанию при следующем запуске Pastukhov Agent: project.yml — Метаданные проекта (название автоопределяется из git remote) .gitignore — Шаблоны игнорирования по умолчанию для каталога .pastukhov/ output.parser — Правила парсера вывода универсальных скриптов build.parser — Правила парсера вывода сборок deploy.parser — Правила парсера вывода развёртывания providers.yml — Определения и шаблоны провайдеров ИИ README.md — Документация формата для всех файлов конфигурации (читается моделью ИИ) Файлы конфигурации (build.yml, deploy.yml, project.yml, hooks.yml, mcp.yml, skills.yml, models.yml) также автоматически проверяются при сохранении. Результаты проверки появляются в панели сборки вместе с обычными сборками — ошибки красным, предупреждения жёлтым — со ссылками на соответствующий раздел в README.md, чтобы можно было посмотреть правильный формат. ← Лицензирование Удалённое управление → ### Проверка ИИ пишет код быстро и дёшево — самое трудное не сгенерировать его, а убедиться, что результат правильный. Поэтому Pastukhov Agent построен вокруг глубокой многоуровневой проверки всего, что делает модель. Каждый элемент интерфейса помогает быстрее и тщательнее проверить и исправить результат — в том числе там, где обычный консольный интерфейс этого не умеет. Вместе с самообучением модели через файл CLAUDE.md и навыки это даёт эффект: модель, которая с трудом справлялась с простейшими задачами, за несколько десятков циклов самоисправления начинает стабильно и аккуратно работать часами. Все механизмы проверки работают вместе как единая система. Используйте их по отдельности или объединяйте в автоматические цепочки проверки — как удобнее: Проверка автоматической сборки Компиляторы, линтеры (проверка ошибок и стиля в коде), проверщики типов и тесты — автоматические контрольные точки качества. Автоисправление замыкает цикл: сборка нашла ошибку — модель сама её исправила. Автоматические сборки промптов После завершения основного чата запускается отдельный агент-проверщик. Он разбирает результат и возвращает только замечания — не засоряя основной чат лишним контекстом. Проверка вывода чата Статистика по сообщениям и чатам — простой способ следить, насколько быстро и эффективно работает модель. Проверка изменений git Все изменения кода видны на панели справа от чата. Коммит или откат — в один клик, а связь между коммитами и разговорами полностью прослеживается. Мониторинг вывода развёртывания Логи запущенного приложения разбираются в реальном времени: ошибки и предупреждения видны сразу, читать их вручную не нужно. Просмотрщик файлов и запуск скриптов Встроенный просмотрщик с подсветкой синтаксиса: быстрый ручной осмотр кода, правки и запуск скриптов прямо в интерфейсе. Управление моделью и навыками Переключение между моделями прямо во время диалога, настройка навыков и рабочих процессов агента — под каждую задачу. Изоляция Docker и пропуск разрешений Агент работает в полностью изолированном контейнере, поэтому можно не подтверждать каждое действие — проверяется только конечный результат. Управление моделью с помощью хуков Правила-хуки перехватывают действия агента до и после выполнения: блокируют опасные команды, отклоняют нежелательные операции и заставляют соблюдать правила проекта. Аналитика и контроль Подробная аналитика по токенам, затратам, скорости, чатам, коммитам и производительности. Статистику всех проектов можно автоматически отправлять в ваш ClickHouse для централизованного контроля. Проверка звуковым обратным откликом О сборках, развёртываниях, коммитах и сообщениях можно узнавать на слух: у каждого события свой звук, и статус понятен, не глядя на экран. Стандартные звуки легко заменить на свои. ← Документация Проверка автоматической сборки → ### Аналитика и контроль Проверка на уровне сообщений отвечает на вопрос «правильно ли», сборки ловят ошибки в коде, а аналитика смотрит на работу в целом: эффективно ли вы пользуетесь ИИ, сколько это стоит и где можно сэкономить. Она собирает данные о расходе токенов (порций текста, за которые вы платите), стоимости, скорости ответов и активности во всех ваших сессиях и наглядно показывает закономерности — например, в какие часы вы работаете продуктивнее всего. Данные по каждому сообщению У каждого сообщения в чате есть свои показатели. Наведите курсор на сообщение, чтобы увидеть его статистику; итоговые суммы показаны в заголовке страницы: Время обработки — сколько секунд модель потратила на этот ответ Входные токены — сколько текста отправлено модели на этом шаге Выходные токены — сколько текста модель сгенерировала в ответ Прочитанные токены кэша — текст, взятый из кэша (повторное обращение к уже обработанным данным): это быстрее и заметно дешевле нового ввода Стоимость — рассчитанная цена ответа по тарифам модели (с учётом ввода, вывода и кэша) По этим цифрам удобно ловить проблемы на ходу. Необычно большой вход при большой доле кэш-токенов говорит о том, что кэш используется неэффективно — в этом случае стоит попробовать другую обвязку. Долгая обработка при огромном выходе — признак того, что модель генерирует лишний текст. Панель аналитики Страница аналитики собирает панель из 24 графиков, сгруппированных в сворачиваемые разделы — можно открыть только то, что нужно. Обзорные карточки Вверху страницы — главные цифры за выбранный период: число проектов, сессий, ваших сообщений, ответов модели, использованных инструментов, суммарная стоимость, все виды токенов, время обработки и количество коммитов. Карточки обновляются сами при смене периода. Графики использования Разбивка стоимости — круговая диаграмма: на что уходят деньги Токены по времени — как менялся расход входящих, исходящих и кэш-токенов день за днём Сообщения по времени — общее количество сообщений за выбранный период Токены в секунду — скорость ответов модели, удобно сравнивать модели между собой Стоимость по часам — когда в течение дня вы тратите больше всего Промпты по часам — сколько запросов вы отправляете каждый час Коммиты по часам — в какое время вы обычно сохраняете результаты работы Анализ закономерностей Токены по часам дня — когда расход максимален Сообщения по часам дня — когда вы активнее всего Токены по дням недели — недельный ритм расхода Сообщения по дням недели — какие дни самые продуктивные Распределения Распределение токенов — как расход распределён по сессиям Распределение сообщений — насколько сессии отличаются по размеру Распределение стоимости — на какие чаты уходит больше всего Распределение длительности — насколько сильно различается время обработки Сравнение моделей Стоимость по моделям — сколько тратит каждая модель или поставщик Токены по моделям — сколько текста «съедает» каждая модель Скорость по моделям — сравнивайте быстроту ответов и выбирайте модель по соотношению цены и качества Период и детализация Все графики подчиняются выбору периода вверху панели: Готовые периоды — сегодня, последние 7 дней, последние 30 дней, последние 90 дней Свой период — любые даты начала и конца Уровень детализации определяет, насколько «мелко» разбиты данные: Почасовой — одна точка в час; удобен для коротких периодов (сегодня, вчера) Дневной — одна точка в день, используется по умолчанию Недельный — итоги по неделям; подходит для периода от месяца до квартала Месячный — итоги по месяцам; для долгосрочных наблюдений Если выбранный период длиннее 31 дня, панель сама переключает почасовую детализацию на дневную, чтобы графики оставались читаемыми. Таблица чатов Под графиками — сортируемая таблица всех сессий за выбранный период. В строках: название чата, модель, общая стоимость, количество токенов, время обработки, число ваших сообщений, число ответов и коммитов. Нажмите на заголовок столбца, чтобы отсортировать по нему; для длинных списков есть разбивка на страницы. В таблице видны и обычные чаты, и чаты подагентов (из промпт-сборок) — они связаны с основным разговором. Так можно проследить всю цепочку: от вашего сообщения до проверяющего агента, которого оно запустило. Выгрузка в ClickHouse Если вы ведёте несколько проектов, удобно сводить статистику по всем сразу. Для этого Pastukhov Agent умеет передавать данные аналитики в ClickHouse — специализированную базу данных для больших объёмов. Из каждой сессии собирается подробный набор показателей: токены (вход, выход, кэш), стоимость, время обработки, число сообщений и коммитов — как по основному чату, так и по чатам подагентов. Хранение — данные разбиваются по месяцам, внутри упорядочены по проекту, времени и чату — быстро ищутся даже на больших объёмах Отправка — данные передаются пакетами (по 500 записей), при сбоях отправка повторяется автоматически Настройка — достаточно задать адрес базы в переменной окружения AGENT_CLICKHOUSE_URL (параметр запуска). На странице аналитики появится кнопка «Отправить в ClickHouse» для ручной выгрузки С данными в ClickHouse можно строить свои отчёты и графики — например, панели в Grafana (программе для наглядного отображения данных) сразу по всем проектам, а не по одному. Полезные приёмы Следите за кэшем — большая доля прочитанных кэш-токенов значит, что контекст переиспользуется эффективно и вы экономите. Низкая — каждый шаг обрабатывает много нового текста Сравнивайте модели по стоимости — график стоимости по моделям покажет, справляется ли более дешёвая модель с обычными задачами. Если качество не страдает — переключайтесь Следите за циклами исправлений — резкий рост стоимости после включения Автоисправления может означать, что модель зациклилась. Ищите в таблице чатов сессии с необычно большим числом сообщений Проверяйте скорость ответов — токены в секунду заметно отличаются у разных моделей. Если модель стабильно медленная — для таких задач есть смысл взять более быструю Планируйте работу по своим пикам — график коммитов по часам подскажет, когда вы выдаёте результат лучше всего. Ставьте важные задачи на свои «продуктивные часы» Подробнее о возможностях аналитики — в разделе Аналитика. О контроле каждого сообщения во время сессии — Проверка вывода чата. Об управлении контекстом — Использование контекста. ← Управление моделями через хуки Просмотрщик файлов и запуск скриптов → ### Изоляция Docker и пропуск разрешений Изоляция Docker — это основа безопасного режима пропуска разрешений. Без контейнеризации каждый вызов инструмента от ИИ может повлиять на вашу систему, а проверка каждого действия через запросы разрешений сильно тормозит работу. С изоляцией Docker модель свободно работает внутри одноразового контейнера, а вы проверяете конечный результат, а не каждое действие. Система разрешений По умолчанию Pastukhov Agent работает в режиме YOLO — все запросы разрешений подтверждаются автоматически. Сервис разрешений записывает утверждённые команды в базу для аудита: Паттерны команд — утверждённые команды обобщаются в шаблоны с подстановками (npm install react становится npm install *, git add . становится git add *) и сохраняются в базу. Более 40 встроенных паттернов покрывают менеджеры пакетов (npm, yarn, pip), сборщики (cargo, mvn, gradle), git-операции, команды docker и системные утилиты — в режиме YOLO всё это утверждается автоматически; Отслеживание на уровне инструментов — для инструментов, не относящихся к Bash (Edit, Read, Write), разрешения хранятся как логические флаги на каждый инструмент; Аудитный след — каждая утверждённая команда сохраняется со своим паттерном, оставляя запись о том, что ИИ делал в сессии. Даже в режиме YOLO хуки по-прежнему могут перехватывать и блокировать отдельные действия — они работают на другом уровне системы проверки. Модель изоляции Docker Контейнеры Docker изолируют файловую систему и процессы. Модель внутри контейнера Pastukhov Agent видит только файлы своего контейнера — она не может изменить вашу систему, заглянуть в другие проекты или выполнить команды вне изоляции. Как это работает Монтирование проекта — папка проекта подключается в контейнер по настроенному пути. ИИ видит и меняет только смонтированные файлы; Изоляция процессов — команды оболочки, сборки и развёртывания выполняются внутри контейнера. Сбой процесса или вышедшая из-под контроля команда не заденут хост; Одноразовые окружения — если что-то пошло не так, контейнер пересоздаётся. Все изменения с последнего коммита остаются внутри него; Изоляция учётных данных — ИИ может доустанавливать инструменты, но контейнер стартует без доступа к вашим рабочим системам. Нет строк подключения, ключей API или токенов — нет и пути к рабочим данным. Инструкции по настройке Docker — на страницах Настройка Docker, Windows Docker Desktop или Mac Docker Desktop. Важно: никогда не давайте модели ИИ доступ к рабочим (production) системам. Даже когда нужна автоматизация, пусть модель разрабатывает и отлаживает скрипты на тестовых данных, а к рабочей среде применяйте их сами — никогда не позволяйте модели вызывать инструменты, которые напрямую задевают производство. Модели примерно раз на 100 чатов могут неожиданно отклониться от инструкций, часто без ясной причины: неправильно понять задачу, решить сделать то, о чём вы не просили, или просто «забыть» жёсткие правила, когда контекст разрастается. Прежний успешный опыт не гарантирует послушания в будущем — относитесь к каждой сессии как к способной сбиться с пути. Режим пропуска разрешений Режим пропуска разрешений обходит все запросы на подтверждение. В обычной консольной версии Claude Code каждый вызов инструмента требует явного одобрения пользователя. Здесь одобрение происходит автоматически — модель свободно работает, не дожидаясь подтверждения каждого действия. Без изоляции Docker пропуск разрешений рискован: ИИ может удалять файлы, ставить пакеты или запускать произвольные команды на вашем хосте. С Docker худший случай — пересоздать контейнер. Это меняет сам подход к проверке: Без изоляции — проверяйте каждое действие и утверждайте каждый вызов инструмента. Медленно, но безопасно для системы; С изоляцией — проверяйте результат, а не действия. Дайте модели работать свободно, затем посмотрите git diff и вывод сборки. Быстро и с теми же гарантиями безопасности. Полностью автоматизированный конвейер проверки Изоляция Docker, пропуск разрешений, автоматические сборки и Автоисправление складываются в полностью автоматизированный конвейер проверки. Модель свободно работает в контейнере, сборки проверяют каждое изменение, Автоисправление возвращает ошибки модели, а развёртывания перезапускаются сами, когда всё проходит: Вы отправляете модели описание задачи; Модель читает файлы, пишет код и запускает команды свободно внутри контейнера Docker; Изменения файлов запускают автоматические сборки (компилятор, линтер, проверка типов, тесты); Парсер сборки извлекает из вывода ошибки и предупреждения; Автоисправление подставляет ошибки как сообщения чата — модель видит, что именно сломалось; Модель исправляет ошибки, и это снова запускает сборки (цикл повторяется); Когда все сборки прошли, развёртывание перезапускается само; Вывод развёртывания разбирается на ошибки времени выполнения; Вы смотрите конечный результат: git diff по коду, панель сборки по проверкам, диалог развёртывания по работоспособности. Ключевая мысль: вы переходите от проверки действий (одобрение каждого вызова инструмента) к проверке результата (просмотр итога). Это быстрее, менее утомительно и одинаково безопасно, если изоляция Docker на месте. Эффективные приёмы проверки Всегда используйте Docker для ИИ-разработки — сочетание Docker + пропуск разрешений + Автоисправление — рекомендуемая рабочая настройка. Ручное одобрение не масштабируется; Проверяйте изменения git, а не отдельные действия — когда модель закончила, просмотрите панель git на неожиданные изменения. Это ловит то, что не видят сборки; Используйте хуки для запрета конкретных действий — даже при пропуске разрешений хуки могут запрещать отдельные команды, например ручные сборки или опасные операции; Никогда не раскрывайте рабочие учётные данные — не передавайте в контейнер строки подключения, ключи API и токены доступа. ИИ может установить любой нужный инструмент, поэтому изоляция учётных данных — ваша единственная защита от доступа к внешним системам. Инструкции по настройке Docker — на странице Настройка Docker, автоматический цикл обратной связи по ошибкам — в Автоисправлении, запрет конкретных действий — в Хуки: управление поведением модели. ← Управление моделями и навыками Хуки: управление поведением модели → ### Мониторинг вывода развёртывания Мониторинг вывода развёртывания ловит ошибки, которые не видно при сборке. Сборки проверяют код до запуска — компиляцию, типы, линтер. А мониторинг развёртывания отлавливает то, что проявляется только когда приложение реально обслуживает запросы: необработанные исключения, сбои подключения к базе данных, ошибки HTTP 500, проблемы при запуске. Методы развёртывания Pastukhov Agent поддерживает два способа развёртывания, у каждого свои особенности наблюдения: Debug Deploy (локальный) Отладочное развёртывание запускает ваше приложение как локальный процесс. С включённым shallowCopy (по умолчанию) изменённые файлы копируются во временную папку перед запуском — это изолирует приложение от исходного кода и позволяет пересобирать его без конфликтов блокировки файлов. Потоки вывода передаются построчно через stdout/stderr, тут же записываются в .pastukhov/deploy/{имя}.log и транслируются в интерфейс в реальном времени через SignalR. Управление процессом — PID-файлы отслеживают запущенные процессы; при старте автоматически очищаются устаревшие процессы от прошлых сессий; Лимит размера лога — логи ограничены 500 МБ; при превышении лог очищается и развёртывание перезапускается само; Отслеживание сборок — развёртывание может следить за сборками: когда все отслеживаемые сборки успешно завершены, развёртывание перезапускается с новым кодом. Docker Deploy (удалённый) Docker-развёртывание отправляет приложение на удалённый сервер по SSH и rsync, затем собирает и запускает его как контейнер. Процесс идёт пронумерованными шагами, каждый записывается с выводом, а итоговое состояние контейнера проверяется проверками здоровья. ⚠️ Экспериментальная функция — Docker Deploy ещё недостаточно протестирован. Используйте его с осторожностью и сообщайте об ошибках. Автор применяет только отладочные развёртывания в изолированных Docker-контейнерах — это проще в управлении и не менее безопасно. SSH + rsync — файлы передаются на удалённый сервер, исключая паттерны вроде .git, node_modules и .pastukhov; Жизненный цикл контейнера — загружает базовый образ, удаляет старый контейнер, собирает новый и запускает его с настроенными портами, томами, сетями и переменными окружения; Проверки здоровья — после развёртывания проверяет, что контейнер запущен, и при желании сверяет endpoint здоровья по HTTP; Тайм-аут на команду — у каждого шага свой тайм-аут; если шаг его превышает, процесс завершается. Парсинг вывода развёртывания Вывод во время работы разбирается в реальном времени через .pastukhov/deploy.parser, который использует тот же формат блоков [ERROR]/[/ERROR], что и парсер сборки. Паттерны покрывают типичные ошибки времени выполнения: Необработанные исключения — полные трассировки стека, начинающиеся с «Unhandled exception.»; Системные исключения — отступные трассировки для .NET, Java и других платформ; Ошибки уровня лога — строки, начинающиеся с crit:, fail: или err: (формат Serilog/ILogger); HTTP-ошибки — ответы с кодом состояния 500; Отказы подключения — «Connection refused», ECONNREFUSED, тайм-ауты; Исключения базы данных — SqlException, NpgsqlException с отступными трассировками; Сбои запуска приложения — «Application startup exception» с продолжением строк. Формат парсера ⚠️ Не правьте файлы парсера вручную — попросите это сделать ИИ-модель. Проще всего: выделите в выводе развёртывания нераспознанный текст (панель статуса или диалог развёртывания) и нажмите плавающую кнопку Fix parser — модель получит выделенный текст с готовым запросом и обновит deploy.parser. Либо используйте .pastukhov/README.md как подсказку в чате. Строки комментариев, начинающиеся с #, игнорируются; Однострочные паттерны — регулярное выражение, которое должно точно совпасть с одной строкой вывода; Многострочные паттерны — обёрнуты в {{...}} и захватывают ноль или более строк подряд после внутреннего регулярного выражения. # Необработанные исключения со стековыми трассировками [ERROR] Unhandled exception.* {{^\s+at\s+}} # Соответствует нулю или более строк, начинающимся с пробелов [/ERROR] # Уровни ошибок Serilog/ILogger [ERROR] (crit|fail|err):.* [/ERROR] # Предупреждения [WARNING] (warn|warning):.* [/WARNING] Парсер работает последовательно: на каждой строке вывода он перебирает блоки по порядку и применяет их паттерны. Когда все паттерны блока совпали подряд, эти строки извлекаются как одна ошибка, и парсер продвигается дальше. Ранние блоки в приоритете — как только нашлось совпадение, более поздние блоки для этих строк пропускаются. Предупреждения разбираются так же: уровни лога, уведомления об устаревании, использование устаревших API. Чтобы добавить свои паттерны под формат ошибок вашего приложения, попросите модель обновить deploy.parser — он сам перезагрузится при сохранении. Отображение вывода развёртывания Вывод развёртывания может разрастись до очень больших размеров — болтливое приложение или долгий процесс способны выдать мегабайты логов. Если рендерить всё это в браузере, страница начнёт тормозить, память вырастет, а вкладка может просто рухнуть. Поэтому приняты меры и на сервере, и на клиенте, чтобы интерфейс оставался отзывчивым при любом объёме вывода. Меры на стороне сервера Ограничение файла лога — логи отладочных развёртываний ограничены 500 МБ; при достижении лимита лог очищается и развёртывание перезапускается само, не давая диску расти бесконечно; Усечение вывода — при чтении файлов лога отдаются только последние 100 КБ; более раннее содержимое отбрасывается с пометкой об усечении, так что браузер никогда не получает всю историю; Ограничение SignalR — вывод в реальном времени буферизируется и передаётся порциями раз в 100 мс, а не каждой строкой по мере поступления, — меньше сообщений и нет потока мелких обновлений; Инкрементальная передача — во время активного развёртывания вывод идёт построчно по мере появления, а клиент дописывает новые строки в существующий буфер, не заменяя весь вывод каждый раз. Меры на стороне клиента Лимит встроенной панели — панель статуса показывает только последние 200 строк вывода, оставаясь лёгкой при любом размере лога; Лимит диалога — диалог вывода показывает до 2000 строк (конец лога) — достаточно, чтобы увидеть последние ошибки и контекст без нагрузки на браузер; Лимит отправки в чат — при отправке вывода на анализ ИИ содержимое ограничивается 20 КБ, чтобы не раздуть контекст разговора; Инкрементальное добавление — клиент дописывает новые строки в буфер, а не заменяет весь вывод при каждом обновлении SignalR, сводя к минимуму перерисовки; Кэширование разобранного вывода — найденные ошибки и предупреждения заранее складываются в карту и переиспользуются, чтобы парсер не пересканировал весь вывод при каждом рендере. Диалог развёртывания Диалог вывода открывается по клику на имя развёртывания на панели статуса. В нём три вкладки: Лог — необработанный, нефильтрованный вывод: последние 2000 строк для отладочных развёртываний или полный пошаговый лог для Docker; Ошибки — разобранные записи об ошибках, выделенные красным; Предупреждения — разобранные предупреждения, выделенные жёлтым. На каждой вкладке есть кнопки копирования и отправки в чат. Отправка ошибок оборачивает их в кодовый блок build.log, чтобы модель могла разобрать сбой и предложить исправление. Если выделить текст на любой вкладке, появится плавающая кнопка Fix parser для быстрого обновления deploy.parser, когда формат ошибки не распознан. Автоматический конвейер перезапуска Развёртывания перезапускаются автоматически, когда все отслеживаемые сборки успешно завершились, — получается непрерывный конвейер «сборка → развёртывание → мониторинг»: Модель правит файлы проекта; Изменения запускают нужные сборки после заданной задержки; Парсер сборки извлекает ошибки и предупреждения из вывода; Автоисправление возвращает ошибки модели на исправление (цикл повторяется, пока сборки не пройдут); Когда все сборки прошли, служба развёртывания получает уведомление и перезапускает приложение; Вывод развёртывания разбирается в реальном времени на ошибки времени выполнения. Этот конвейер работает без вашего участия. Следить за ним можно на панели статуса, а можно просто проверить результаты позже. Для отладочных развёртываний необязательное поле url в конфигурации даёт кликабельную кнопку, открывающую приложение напрямую, — не нужно запоминать адрес и порт отладочного экземпляра. Эффективные приёмы проверки Используйте мониторинг развёртывания вместе со сборками — сборки ловят статические ошибки, мониторинг — ошибки во время работы. Оба нужны для полного покрытия; Добавляйте паттерны парсера под своё приложение — если приложение пишет ошибки в своём формате, добавьте паттерны в deploy.parser, чтобы они появлялись на вкладке «Ошибки»; Отправляйте ошибки в чат — увидели ошибку развёртывания — нажмите «Отправить», и модель разберёт трассировку и предложит исправление; Следите за размером лога — логи отладочных развёртываний ограничены 500 МБ. Если приложение очень болтливое, настройте уровни логов или увеличьте лимит. Полная справка по развёртыванию — на странице Сборка и развёртывание, цикл автоматических ошибок — в Автоисправлении, предотвращение ручных перезапусков — в Хуки: управление поведением модели. ← Проверка звуковым откликом Управление моделью и навыками → ### Проверка автоматической сборки build — это просто описательное имя для любого действия, которое выполняется автоматически по определённым событиям. Такое действие не обязано создавать исполняемые файлы — единственное требование, чтобы оно выдавало логи, которые можно автоматически разбирать на ошибки и предупреждения. Это даёт почти неограниченную гибкость для автоматической проверки вывода модели, правок проекта и навыков. Даже там, где нужна ручная проверка, сборки помогают: можно поручить модели заранее подготовить список «горячих точек» для проверки или подробный отчёт с инструкциями для ручного разбора. Всегда стоит искать способы автоматизировать и расширить проверку — это реально экономит ваше время в долгосрочной перспективе. Для этого даже не нужно ничего придумывать: просто попросите модель сделать это за вас, используя .pastukhov/README.md как подсказку. Проверка автоматической сборки — ядро конвейера проверки Pastukhov Agent. Вместо того чтобы ждать, пока модель сама вызовет npm test или dotnet build, сборки запускаются при каждом изменении файла, которое ИИ делает в нужных папках: код компилируется, проверяется линтерами и типами, прогоняются тесты — и всё это без вашего участия. Необработанный вывод сборки разбирается на структурированные ошибки и предупреждения (по гибким правилам, которые легко обновить), после чего в конце попадает обратно в чат через функцию Автоисправления, а панель сборки позволяет посмотреть их вручную. Ждать конца чата, чтобы увидеть ошибки и отправить отзыв, не нужно — для этого есть очередь сообщений: просто отправьте свой отзыв и занимайтесь своими делами, он сам попадёт в чат в конце. Благодаря этому чаты завершаются быстрее, тратится меньше денег, а проверка после чата ускоряется: пересобранное приложение может быть полностью развёрнуто уже к моменту, когда модель составляет финальную сводку. Особенно это удобно, когда сборок и линтеров несколько, — они запускаются параллельно, а не гоняются моделью по очереди. Визуального шума тоже меньше — вы видите, как модель выполняет задачи, а не как она раз за разом запускает линтеры и сборщики. Чтобы модель не дублировала эту работу, добавьте в CLAUDE.md правило «не собирать и не линтовать вручную», а хуки не дадут ей забыть о нём. Конфигурация сборки Сборки настраиваются в .pastukhov/build.yml. Каждая сборка задаёт команду, события, по которым она запускается, и необязательные параметры: задержку, тайм-аут, нормализацию путей. Есть два типа: сборки command — просто выполняют команду оболочки, и сборки prompt — проверка, управляемая ИИ (описана в руководстве Автоматические сборки промптов). build: task-name: path: "src/" # Рабочий каталог для команды command: "npm run check" # Команда оболочки для выполнения delay: 3 # Секунды ожидания перед запуском (по умолчанию: 3) timeout: 60 # Максимальное время выполнения в секундах (по умолчанию: 60) watch: "*.ts *.js" # Глобальные маски файлов или имена сборок (разделены пробелом или запятой), или `chat` для мониторинга текущего завершения чата commandOutput: "" # Путь к дополнительному файлу вывода (необязательно) ignore: [] # Регулярные выражения для фильтрации из ошибок/предупреждений replacements: # Найти/заменить в путях вывода - find: "/tmp/build" replace: "/project" stopStrings: [] # Строки, которые немедленно прерывают сборку display: always # Видимость UI: always, errors, warnings, never autofix: always # Участие Автоисправление: always, errors, warnings, never startSound: "" # Звук при запуске сборки (встроенный или пользовательский) endSound: "" # Звук при завершении сборки (встроенный или пользовательский) soundVolume: 1.0 # Громкость 0-1 для звуков сборки Триггеры сборки Поле watch определяет, по какому событию запускается сборка. Вариантов три: Маски файлов — глоб-шаблоны вроде *.ts *.svelte. Сборка следит за папкой path и, когда в ней меняются подходящие файлы, выполняет команду после заданной задержки; Имена родительских сборок — ссылка на другую сборку по имени: эта сборка запускается только после успешного завершения родительской, так строятся упорядоченные конвейеры; chat — особый триггер, который срабатывает, когда завершается сессия чата пользователя. Работает для всех типов сборок и развёртываний. Каждая сборка следит ровно за одним типом события — файлами, родительскими сборками или завершением чата. Если нужно срабатывание на комбинацию событий, продублируйте сборку с разными watch: так каждую проще отлаживать и контролировать. Чтобы не дублировать, используйте схему «родитель — ребёнок»: создайте несколько лёгких родительских сборок (no-op), каждая следит за своим событием, а одна дочерняя следит за всеми ними — она запустится, когда завершится любая из родителей, и выполнит команду один раз. Родительские сборки скройте с панели с помощью display: never. Если за время задержки меняется несколько файлов, таймер сбрасывается. А если файлы меняются, пока сборка работает, текущая сборка отменяется и перезапускается с новыми изменениями. ⚠️ watch: chat запускает сборки автоматически в конце любого чата, инициированного пользователем (не подагентом). Используйте это для тяжёлых проверок, которые не должны перезапускаться при каждом изменении файла: сборок промптов, аудитов безопасности, дорогого анализа — всего, что слишком долго выполняется, чтобы следить за каждым изменением файлов. Такая сборка запускается, только когда завершены все более высокоуровневые конвейеры: сначала обрабатываются все отложенные сообщения пользователя (они всегда заходят в чат первыми), а конвейер Автоисправления полностью завершён без оставшихся ошибок и предупреждений. Запускать тяжёлые операции в «грязном» состоянии бессмысленно — проблемы в любом случае будут исправлены вашим отзывом или Автоисправлением. Управление отображением и Автоисправление У каждой сборки есть два поля, которые определяют её поведение в интерфейсе и с Автоисправлением: display — когда сборка появляется на панели сборки: always (по умолчанию), errors (только при ошибках), warnings (при ошибках или предупреждениях) или never (скрыта); autofix — будут ли ошибки этой сборки отправляться на исправление ИИ: always (по умолчанию), errors, warnings или never. Отключите (never) сборки, чей вывод вы хотите проверять вручную, — например, сборки промптов, тесты безопасности, анализ высокого уровня. Конвейером Автоисправления можно управлять на лету переключателем под полем ввода сообщения в чате. Выключите его — и ошибки и предупреждения сборок перестанут попадать в чат, пока вы снова не включите. Это удобно, когда вы остановили чат на середине и не хотите, чтобы Автоисправление пыталось чинить заведомо недоделанное состояние проекта. Цепочки сборки Сборки можно объединять в цепочки, когда одна следит за другой вместо файлов. Система сама разбирается в зависимостях и запускает сборки в правильном порядке: build: compile: command: "dotnet build" watch: "*.cs" inspect: command: "jb inspectcode Code.sln -f=Xml --verbosity=ERROR -o=bin/inspectcode.xml" commandOutput: "/tmp/code/builds/inspect/bin/inspectcode.xml" watch: compile # Запускается только после успешной компиляции test: command: "dotnet test --no-build" watch: compile # Запускается только после успешной компиляции Парсер сборки Вывод каждой сборки сохраняется в .pastukhov/build/ тремя файлами: {имя-задачи}.output.txt (полный вывод команды), {имя-задачи}.errors.txt (разобранные ошибки) и {имя-задачи}.warnings.txt (разобранные предупреждения). Парсер превращает необработанный вывод команды в структурированные ошибки и предупреждения. Он читает файл .pastukhov/build.parser, где правила собраны в блоки [ERROR]/[/ERROR] и [WARNING]/[/WARNING]. Парсер сам перезагружается при изменении файла — перезапуск не нужен. ⚠️ Не правьте файлы парсера вручную — попросите это сделать ИИ-модель. Проще всего: выделите в выводе сборки нераспознанный текст (на панели сборки или в диалоге вывода) и нажмите плавающую кнопку Fix parser — модель получит выделенный текст с готовым запросом и обновит build.parser. Либо используйте .pastukhov/README.md как подсказку в чате. Формат парсера Строки комментариев, начинающиеся с #, игнорируются; Однострочные паттерны — регулярное выражение, которое должно точно совпасть с одной строкой вывода; Многострочные паттерны — обёрнуты в {{...}} и захватывают ноль или более строк подряд после внутреннего регулярного выражения. # Ошибки TypeScript с отступным контекстом [ERROR] .*\.ts.* # Соответствует строке, содержащей путь .ts файла Error.* # Соответствует строке, содержащей "Error" {{^\s+}} # Соответствует нулю или более строк, начинающимся с пробелов [/ERROR] # Ошибки компилятора C# (формат MsBuild) [ERROR] \[MsBuild\].*\(\d+,\d+\)->\(\d+,\d+\)\s+CS\d+\:.* [/ERROR] # Ошибки Python ruff [ERROR] [A-Z]\d+\s+(\[\*\]\s+)?.* \s*-->.* {{^\s+.*|\d+\s+\|.*}} [/ERROR] # Предупреждения [WARNING] \(\d+,\d+\): warning [/WARNING] Парсер работает последовательно: на каждой строке вывода он перебирает блоки по порядку и применяет их паттерны. Когда все паттерны блока совпали подряд, эти строки извлекаются как одна ошибка, и парсер продвигается дальше. Ранние блоки в приоритете — как только нашлось совпадение, более поздние блоки для этих строк пропускаются. Замены путей Сборки часто выполняются во временных папках, поэтому пути в ошибках не совпадают с реальными файлами проекта. Поле replacements переводит их: build: client-build: path: "client/" command: "npm run build" watch: "*.ts *.svelte" replacements: - find: "/tmp/code/builds/client-build" replace: "/project/client" Замены применяются до разбора, поэтому координаты ошибок указывают на правильные файлы вашего проекта. Проверка конфигурации Pastukhov Agent автоматически проверяет все конфигурационные файлы .pastukhov/ при каждом сохранении. Всего девять проверок, каждая отвечает за свой файл: build.yml — синтаксис YAML, требует command или prompt, предупреждает о неизвестных свойствах; deploy.yml — синтаксис YAML, предупреждает о неизвестных свойствах; project.yml — синтаксис YAML, требует name, предупреждает о неизвестных свойствах; hooks.yml — синтаксис YAML, предупреждает о неизвестных типах событий и свойствах; mcp.yml — синтаксис YAML, предупреждает о неизвестных ключах и свойствах сервера; skills.yml — синтаксис YAML, предупреждает, если не указан enabled; models.yml — синтаксис YAML, предупреждает о неизвестных свойствах; providers.yml — синтаксис YAML, предупреждает о неизвестных свойствах провайдера и окружения; *.parser — проверка пар ([ERROR]/[/ERROR]), корректность регулярных выражений, паттерны вне блоков. Результаты появляются на панели сборки рядом с обычными сборками. Сообщения об ошибках ссылаются на нужный раздел в .pastukhov/README.md, чтобы вы нашли правильный формат. ⚠️ Ошибки и предупреждения проверки конфигурации намеренно исключены из конвейера Автоисправления — чтобы не засорять существующие чаты, не связанные с настройками Pastukhov Agent. Если проверка нашла проблему, создайте свежий чат, кликните на бейдж ошибок/предупреждений на панели сборки, а затем кнопку Send на вкладке «Ошибки» или «Предупреждения» в диалоге вывода. Либо просто скопируйте и вставьте вывод вручную. Сборки конфигурации по умолчанию скрыты из интерфейса, чтобы не создавать визуального шума, — вы увидите их, только когда есть проблемы. Цикл обратной связи Автоисправление Автоисправление связывает сборки и ИИ-модель в самоисправляющийся цикл проверки. Когда оно включено, система с настраиваемым интервалом опрашивает сборки, проверяет ошибки и предупреждения и подставляет их в чат как сообщения, чтобы модель их исправила. Подробнее о поведении, ограничениях и ручной отправке ошибок — на странице Автоисправление. Работа только в простое — ошибки подставляются, только когда нет активной сессии ИИ, чтобы не создавать конфликтов; Учёт зависимостей — Автоисправление ждёт завершения всех родительских сборок, прежде чем обрабатывать ошибки дочерней; Приоритет ошибок — сначала отправляются ошибки, предупреждения не трогаются, пока все ошибки не решены; Защита от циклов — сверяет последние 10 сообщений, чтобы не зациклиться на одинаковом содержании; Режим сборки — поле autofix каждой сборки управляет её участием: always, errors, warnings или never. ⚠️ Предупреждения исправляются особым образом — они всегда приходят с требованием исправить, а не игнорировать. Иначе модели часто пропускали бы их как неважные. Эффективные приёмы проверки Наслаивайте несколько контрольных точек для полного покрытия. Каждая сборка ловит свою категорию проблем. Чем больше у вас автоматических сборок, тем выше качество результата. Это напрямую экономит ваше время и даёт лучший код и интерфейс автоматически. Не ленитесь в этой части и пробуйте разные способы расширить автоматизацию: даже при ручной проверке можно упростить себе жизнь полуавтоматическим подходом — пусть сборки промптов заранее найдут потенциальные ошибки и предупреждения, а вы просмотрите их вместо того, чтобы перепроверять всё с нуля при каждом обновлении. Компилятор + линтер + проверка типов + тесты — четыре независимые проверки, каждая ловит то, что упускают другие. Чем больше сборок, тем больше откликов получает Автоисправление; Выстраивайте сборки по зависимостям — сначала компиляция, затем линтер, затем тесты. Каждый шаг запускается после успеха предыдущего, без каскадного шума; Добавляйте паттерны парсера для своих инструментов — если вывод не разбирается, попросите модель дополнить build.parser. Парсер сам перезагрузится при сохранении; Используйте замены путей для контейнерных сборок — если сборки работают в Docker или временных папках, отобразите пути обратно к проекту, чтобы координаты ошибок были точными; Скрывайте шумные сборки (display: never) — держите панель сборки чистой, пряча сборки, чей вывод редко нужен вручную. Полная справка по сборкам — на странице Сборка и развёртывание, цикл обратной связи Автоисправления — в Автоисправлении, мониторинг ошибок во время работы — в Мониторинге вывода развёртывания. ← Проверка изменений git Автоматические сборки промптов → ### Проверка вывода чата Проверка вывода чата — первый и самый простой уровень проверки в Pastukhov Agent. Каждое действие ИИ в чате видно полностью и наглядно: что он читает, что меняет, какие команды выполняет и что из этого вышло. В отличие от обычной консольной версии Claude Code, где всё выглядит сплошным текстовым потоком, здесь каждая операция превращается в отдельный элемент интерфейса, который можно развернуть, посмотреть и проверить. Проверка действий ИИ Каждый вызов инструмента — чтение или правка файла, выполнение команды — появляется в чате отдельным сообщением. В полном режиме отображения успешные чтения и правки свёрнуты по умолчанию, чтобы разговор оставался чистым, но любую такую операцию можно развернуть одним кликом и посмотреть, что именно произошло. Чтение файлов Когда модель читает файл, в чате появляется сообщение с путём к файлу. Кликните по нему, и откроется полное содержимое файла — ровно то, что получила модель. Так легко убедиться, что ИИ читает правильный файл и опирается на верные данные. Правки файлов и diff Сообщения о правках показывают объединённый diff — наглядное сравнение файла до и после изменения: удалённые строки помечены красным (префикс -), добавленные — зелёным (префикс +). У каждой части diff есть заголовок с номерами строк. Разверните diff и проверьте, что именно изменила модель, — так вы вовремя увидите лишние или ошибочные правки, пока они не накопились. Компактный режим В компактном режиме сам вызов инструмента и его результат объединяются в один сворачиваемый элемент с иконкой состояния: крутится во время обработки, зелёная галочка при успехе, красный восклицательный знак при ошибке. Клик по сообщению раскрывает полный diff или вывод. Такой режим удобен, когда операций много и нужно быстро их пролистать. Сообщения об ошибках Если вызов инструмента не удался, сообщение выделяется красной рамкой. В полном режиме содержимое ошибки сразу развёрнуто на весь экран — вы видите, что пошло не так, без лишних кликов. В компактном режиме ошибки ведут себя как остальные сообщения: клик раскрывает полный вывод. Повторяющиеся ошибки — не «мелочь», которую стоит игнорировать: они говорят о том, что модели не хватает нужной информации. Разберитесь, в чём дело, и попросите модель дополнить CLAUDE.md (если это особенности проекта) или текущий навык (если это общие правила). Обычно достаточно 5–10 таких циклов, чтобы даже на сложных задачах выйти на 99% точности. Статистика по сообщениям Каждое сообщение несёт подробные данные о расходе. Наведите курсор на сообщение, чтобы увидеть его статистику, либо посмотрите общие итоги в заголовке страницы. Время обработки — сколько модель потратила на генерацию этого сообщения (в секундах, например «1.2s»); Входные токены — объём запроса, отправленного модели для этого шага; Выходные токены — объём текста, который модель сгенерировала в ответ; Токены кэша чтения — часть запроса, взятая из кэша промпта (дешевле и быстрее); Стоимость — расчёт по ценовой модели из ваших настроек окружения (входные, выходные и кэш-токены). Чтобы цифры были в долларах и соответствовали реальности, задайте корректные цены в настройках модели — без этого сумма будет условной. В компактном режиме вызов инструмента и его результат объединены, поэтому статистика показывается суммарная — за вызов и ответ вместе. Учтите: провайдеры часто присылают статистику не по одному сообщению, а сразу за несколько подряд (обычно для сообщений ассистента). Такие данные приходят с задержкой 1–2 секунды, потому что извлекаются из лога, — точные цифры вы увидите ближе к завершению чата либо по прошествии примерно 10 секунд с момента появления сообщения. Статистика в заголовке чата Пока модель работает, под заголовком плавает бейдж со сводной статистикой в реальном времени. В свёрнутом виде он показывает три показателя: Число сообщений — всего сообщений в текущем чате (например «5 msg»); Общая стоимость — расход по всей сессии чата (например «$0.15»); Токены в секунду — скорость работы, считающаяся из выходных токенов и времени обработки. Когда в чате работают подагенты — отдельные дочерние агенты, — каждая метрика показывается в формате основной/все подагенты (например «5/12 msg • $0.15/$0.30 • 45/60 tps»): первое число — основной чат, второе — сумма по всем подагентам. При наведении бейдж раскрывает подробности: без подагентов добавляются суммы токенов кэша чтения, входных и выходных; с подагентами — две отдельные строки (основной чат и общая статистика подагентов), у каждой свои сообщения, стоимость, tps, кэш, входные и выходные токены. Таймер совокупного времени обработки (мм:сс) отображается отдельно в строке заголовка. Когда модель создаёт подагенты, слева от таймера появляется бейдж с их количеством. Клик по нему открывает список всех чатов подагентов со статистикой каждого (сообщения, стоимость, токены/сек, коэффициент кэша). Клик по подагенту переключает вид на его чат, а кнопка со стрелкой назад возвращает к основному чату. Управление сообщениями Продолжить с этого сообщения Наведите курсор на любое сообщение (кроме инструментальных) — появится кнопка с иконкой воспроизведения. Она позволяет дать модели промпт-продолжение: диалог вернётся к этой точке, а всё, что было сказано и сделано после неё, будет забыто. Промпт-продолжение включает усечённый предпросмотр исходного сообщения. Это удобно для повторной проверки: если модель пошла не туда, вы продолжаете с последнего хорошего сообщения, а не начинаете чат заново. Скопировать сообщение При наведении на сообщение появляется кнопка копирования. Она помещает содержимое сообщения в буфер обмена — удобно, чтобы поделиться конкретным выводом или вставить его в другой инструмент для дальнейшего разбора. Остановить обработку Пока модель активно работает, в заголовке видна кнопка остановки. Нажмите её, чтобы немедленно отменить текущий запрос: модель получит сигнал отмены и прекратит генерацию, а в чат добавится пометка, что обработку остановили вручную. Используйте её, когда видите, что модель движется не туда, — незачем ждать окончания заведомо плохого ответа. Остановить и поправить модель — нормально. Если модель раз за разом спотыкается об одно и то же, попросите её записать нужную информацию в CLAUDE.md или текущий навык — даже одна строка с верным направлением сэкономит часы будущих сессий и деньги. Важно: остановка основного чата автоматически останавливает все его подагенты. Управлять подагентами по отдельности нельзя — они полностью под управлением фоновых агентов. Очередь сообщений Если отправлять сообщения быстро, они выстраиваются в очередь над полем ввода. Каждое отложенное сообщение — это редактируемая карточка: зелёная (активное) или оранжевая (приостановленное). Вы можете: Редактировать — клик по карточке меняет текст сообщения до отправки; Приостановить — отложить отправку до того момента, когда вы будете готовы; Удалить — полностью убрать отложенное сообщение. Смысл очереди — заранее записать следующие мысли, не дожидаясь конца текущего ответа. Печатайте следующую правку или вопрос, пока модель ещё работает, — сообщения из очереди запустятся по очереди автоматически. Очередь работает и как буфер: сообщения из неё всегда обрабатываются раньше Автоисправления, поэтому автоматическая проверка не влезает в чат, пока вы не отправили всё задуманное. Полезные приёмы проверки Исправляйте причину, а не следствие. Если модель ошиблась или не находит нужное, не ограничивайтесь замечанием в текущем сообщении. Попросите её обновить CLAUDE.md (знания о проекте) или текущий навык (общие правила). Даже одна строка правильной инструкции предотвратит ту же ошибку во всех будущих сессиях. Доводите до безошибочности по шагам. Повторяющиеся ошибки означают, что модели не хватает контекста. Чтобы выйти на 99% точности даже на сложных задачах, обычно нужно 5–10 итераций дополнения CLAUDE.md и навыков. Автор продукта запускает модели часами без присмотра — но только после того, как вложил десятки итераций в правильные файлы. Полезно и перезапускать чат с нуля, чтобы добиться чистой работы, а ошибки по пути фиксировать в CLAUDE.md и навыках — особенно при переходе на новые типы задач. Смотрите на картину в целом. Разворачивайте diff'ы и проверяйте результаты выборочно, без маниакальной построчной ревизии. Цель — быстро увидеть повторяющиеся паттерны ошибок и устранить их в источнике (в CLAUDE.md или навыках), а не вычитывать каждую строку вручную. Следите за ростом контекста. Чем длиннее чат, тем медленнее и дороже каждый шаг — модели приходится обрабатывать всю историю. Новый чат часто быстрее и дешевле, чем продолжение разросшегося, даже с учётом восстановления контекста. Обращайте внимание на подозрительно высокие расходы. Резкий скачок стоимости за шаг обычно означает низкий коэффициент попадания в кэш — модель по новой обрабатывает бо́льшую часть запроса вместо дешёвых кэшированных токенов. Часто это признак проблем на стороне клиента или провайдера. Если такой режим затягивается, провайдер может принять меры. Остановитесь, изучите аналитику, сравните с прошлыми периодами и сообщите о находках провайдеру — возможно, дело на их стороне. Предпочитайте новый чат продолжению со старого сообщения. Если модель ушла не туда, новый чат обычно эффективнее «продолжить с сообщения»: он начинается с чистого фокусированного контекста и стоит дешевле за шаг, чем тащить багаж разросшегося разговора. Многократное «исправь» в одном чате — расточительство: новый чат чаще даёт мгновенное решение, а старый — циклы повторных ошибок. Останавливайте плохие ответы рано. Если в статистике заголовка видно, что модель обрабатывает долго и генерирует много токенов, — проверьте, что она делает, и остановите, если она плодит лишний контент или ушла в сторону. Модели иногда зацикливаются на самоанализе, и подсказка не всегда помогает выйти из цикла. Чаще всего самый быстрый выход — начать заново. Про более широкий анализ производительности читайте в разделе Аналитика и контроль. О контроле объёма контекста — в Использовании контекста, а полная справка по функциям чата — на странице Чат. Извлекайте уроки из трудных чатов После особенно мучительной ошибки или задачи на сотни сообщений обязательно попросите модель вынести урок: обновить CLAUDE.md, создать или улучшить навык, зафиксировать нехватку контекста, из-за которой шла борьба. Это гарантия, что та же боль не повторится. Если пропустить этот шаг, почти наверняка скоро возникнет та же проблема: модель повторит ошибки, и вы снова сожжёте те же сообщения. Несколько минут на запись урока экономят часы в будущих сессиях. Звуковой отклик Pastukhov Agent проигрывает отдельный звук для каждого типа события, чтобы вы могли запускать длинные задачи, не глядя в экран: Сообщение — на каждое прибывающее сообщение, подтверждая, что модель продолжает работать; Завершено — когда чат закончил обработку; Уведомление — когда чат ждёт вашего решения или одобрения (например, вопрос от модели); Ошибка — когда чат споткнулся о неудачу. У каждого типа звука свой уровень громкости — он настраивается в разделе Настройки → Звуки, а полностью отключить звук можно иконкой динамика в заголовке. Любой встроенный звук можно заменить: положите MP3-файл с тем же именем в папку .pastukhov/sounds/ проекта — например, message.mp3, complete.mp3, error.mp3. Сервер сначала отдаёт ваши файлы, а встроенные использует только там, где своих нет. Со временем вы начнёте ощущать рабочий процесс на слух: ровный ритм «пингов» сообщений — всё идёт как надо, а внезапная тишина, уведомление или звук ошибки — пора посмотреть на экран. Автор использует Bluetooth-наушники и на время задач уходит от компьютера — с хорошим адаптером можно ходить по дому, не привязываясь к рабочему месту. Подробности настройки и полный каталог звуков — на странице Проверка звуковым откликом. ← Проверка Проверка изменений git → ### Проверка звуковой обратной связи Звуковая обратная связь позволяет следить за состоянием сборок, развёртываний, коммитов и чата на слух — не глядя на экран. Pastukhov Agent воспроизводит особый звук для каждого события, поэтому можно запустить длительную задачу в фоне и заниматься своими делами: по звуку сразу понятно, всё ли идёт как надо или пора вернуться к экрану. Встроенные звуки В Pastukhov Agent шесть встроенных звуков, и у каждого своё событие: message — на каждый новый ответ ИИ: подтверждает, что модель продолжает работать complete — когда чат или фоновая задача завершили обработку notification — когда модель ждёт вашего решения или подтверждения (например, задала вопрос) error — когда сборка или задача завершилась ошибкой commit — при сохранении изменений в git deploy — при начале или завершении развёртывания Со временем вы начнёте понимать работу по звукам: ровный ритм сообщений означает, что всё идёт гладко, а внезапная тишина, сигнал уведомления или звук ошибки — сигнал посмотреть на экран. Звуки сборок и развёртываний У каждой сборки могут быть свои звуки, перекрывающие общие. Поддерживается пять звуковых полей: startSound звучит при начале сборки, а четыре поля результата определяют звук по завершении. Звуки конкретного исхода — successSound (успех), warningSound (предупреждение), errorSound (ошибка) — важнее общего endSound, поэтому под каждый исход можно назначить свой звук. Например, критичной проверке безопасности — громкий звук ошибки при сбое, а тестам — мелодию успеха при прохождении. build: security-scan: command: "npm run security-audit" watch: "*.ts" startSound: "notification" successSound: "complete" errorSound: "error" soundVolume: 1.0 lint: command: "npm run lint" watch: "*.ts" startSound: "" endSound: "" Если поле звука пустое, для этого события звук не воспроизводится. endSound — универсальный запасной вариант: он звучит, когда для результата сборки не задан особый звук. Поле soundVolume (от 0 до 1, по умолчанию 1.0) задаёт громкость независимо от общих настроек. Настройки звука Управлять звуками можно двумя способами: Общее отключение — значок динамика в заголовке чата мгновенно включает или выключает все звуки. Самый быстрый способ замолчать всё сразу Громкость по типам — в разделе Настройки → Настройки звука у каждого типа звука свой ползунок громкости (0–100%). Можно сделать громкие звуки тише, оставив важные Все настройки звука синхронизируются между вкладками браузера в реальном времени: отключили звук в одной вкладке — он выключится везде. Свои звуки Любой встроенный звук можно заменить: положите MP3-файл с тем же именем в папку .pastukhov/sounds/ вашего проекта — например, message.mp3, complete.mp3, error.mp3, commit.mp3, deploy.mp3. Ваш файл имеет приоритет над встроенным. Для звуков сборок и развёртываний можно задавать любое имя: программа сначала ищет .pastukhov/sounds/{name}.mp3, а если не находит — берёт встроенный wwwroot/sounds/{name}.mp3. Так разным сборкам легко назначить разные звуки, просто дав им разные имена в настройках. Практические советы Используйте наушники — с Bluetooth-наушниками можно ждать завершения задач, не сидя перед экраном: каждый звук понятно сообщает, что происходит Приглушайте шумные сборки — сборки, следящие за файлами и перезапускающиеся часто, завалят звуками начала/завершения. Для них задайте soundVolume: 0 или оставьте startSound пустым, а звуки приберегите для значимых событий — завершения развёртывания или проверки безопасности Тишина — повод проверить — если обычно вы слышите ровный поток сообщений и вдруг наступает тишина, взгляните на экран: скорее всего, модель столкнулась с ошибкой или ждёт вашего ответа Конфетти при коммитах — каждый успешный коммит сопровождается анимацией конфетти и звуком. Отключить это можно в Настройки → Настройки звука, если отвлекает ← Промпт-сборки Мониторинг вывода развёртывания → ### Проверка изменений git Проверка изменений git показывает, что ИИ на самом деле делает с вашими файлами, в реальном времени. Если проверка вывода чата рассказывает, что модель собиралась изменить, то проверка изменений git — это факт: реальное состояние файловой системы. Pastukhov Agent следит за изменениями в репозитории на лету и связывает их с вашими разговорами, чтобы за каждой правкой легко было проследить. Панель Git Панель git находится справа от вида чата и показывает текущее состояние вашего репозитория. Она обновляется мгновенно, как только модель меняет файлы, а раз в 15 секунд дополнительно сверяется с сервером, чтобы не упустить ничего важного. Две вкладки — «Проект» (ваше основное рабочее пространство) и «Навыки» (каталог .claude/skills). Каждый репозиторий отслеживается независимо; Список файлов — каждый изменённый файл показан с относительным путём, иконкой состояния (изменён, добавлен, удалён, переименован, не отслеживается) и сводкой правок — сколько строк добавлено и удалено; Кэширование состояния — статус git опрашивается с серверным кэшем на 2 секунды, чтобы частые обновления не перегружали систему. Список файлов отсортирован по алфавиту и ограничен 1000 файлов ради быстродействия; при желании кнопкой «загрузить ещё» можно показать и остальные. В обычной работе просматривать больше файлов обычно и не требуется. Быстрый коммит и откат Прямо на панели git доступны коммит и откат изменений в один клик — не нужно переключаться на отдельный git-интерфейс. Быстрый коммит Текст сообщения коммита подставляется автоматически из заголовка чата — например, для чата «Add user authentication» сообщение станет «Добавить аутентификацию пользователей»; Нажмите Commit (или Enter), и все изменения будут подготовлены, закоммичены и отправлены в удалённый репозиторий одним действием; Коммит автоматически связывается с текущим чатом, чтобы позже было видно, что именно к нему привело. Сообщение коммита и заголовок чата держатся синхронно: правите одно — обновляется и другое. 🎉 Каждый успешный коммит сопровождается конфетти и звуковым эффектом. Звук отключается значком динамика в заголовке или настраивается в «Настройки → Звуки»; конфетти выключается там же переключателем Confetti On. Откат файла У каждого изменённого файла на панели git есть кнопка отмены — она возвращает именно этот файл в прежнее состояние: Отслеживаемые файлы — восстанавливаются к последнему закоммиченному состоянию командой git checkout -- путь; Неотслеживаемые файлы — просто удаляются из файловой системы. Есть и кнопка «отменить всё», которая сбрасывает сразу все изменения: git checkout -- . для отслеживаемых файлов и git clean -f -d для неотслеживаемых. Это удобно, когда модель наворотила много лишнего и проще начать заново. При сильных ошибках обычно быстрее отменить всё и начать с чистого листа в новом чате, чем разбирать десятки неправильно изменённых файлов. Связывание чата и коммитов Каждый коммит, созданный через интерфейс, автоматически связывается с активным чатом. Получается двусторонняя история: из коммита можно вернуться к разговору, который его создал, а из чата — увидеть все коммиты, которые он породил. От чата к коммитам На панели git есть выпадающий список коммитов текущего чата: сообщение, дата и кликабельная ссылка на детали коммита. В списке чатов у чатов со связанными коммитами показывается бейдж с их числом. От коммитов к чату Страница коммитов собирает все коммиты по всем чатам: хэш, сообщение, дату, ветку и связанный чат (если он есть). Кнопка «Просмотреть чат» открывает разговор, который привёл к изменению, — удобно вспомнить контекст и причину правки. Репозиторий проекта Pastukhov Agent отслеживает один git-репозиторий проекта, куда входят и код, и навыки (.claude/skills/): Код проекта — основная папка рабочего пространства. Сообщения коммитов автоматически генерируются из заголовка чата; Навыки — подкаталог .claude/skills. Правки в файлах навыков (инструкции, скрипты, вспомогательные документы), которые делает модель, попадают в общий список изменений и коммитятся вместе с проектом. Эффективные приёмы проверки Просматривайте правки до коммита — когда модель закончила, пробегитесь по панели git. Неожиданные изменения — файлы, которые вы не просили трогать, — верный признак, что модель сбилась с пути; Откатывайте неудачные правки — если модель сделала лишнее, отмените отдельные файлы или всё сразу, затем объясните модели, что не так, и дайте попробовать снова. При серьёзной ошибке проще отменить всё и начать заново в новом чате, чем заставлять модель исправлять десятки файлов; Коммитьте почаще — делайте контрольные точки после каждой удачной задачи. Если следующая попытка пойдёт не так, вы вернётесь к заведомо рабочему состоянию, а связанные коммиты помогут найти нужный разговор; Изучайте историю коммитов — периодически заглядывайте на страницу коммитов, чтобы видеть общую картину правок по сессиям. Повторяются ли одни и те же нежелательные изменения? Их можно заранее предотвратить хуками, CLAUDE.md или навыками. Полная справка по git — на странице Git, история коммитов — в разделе Коммиты, а автоматизация коммитов — в разделе Хуки: управление поведением модели. ← Проверка вывода чата Проверка автоматической сборки → ### Промпт-сборки Промпт-сборки — самый продвинутый механизм проверки в Pastukhov Agent. Обычные сборки запускают заранее заданные команды (компиляцию, тесты), а промпт-сборка поручает проверку отдельному агенту ИИ: он получает задание на простом языке (промпт), сам разбирает вашу кодовую базу и сообщает о найденных проблемах. Рассуждения такого агента-проверщика идут в изолированном чате, не засоряя вашу основную беседу. Его вывод разбирается теми же правилами, что и обычные сборки, а найденные ошибки можно передать в Автоисправление. Как работают промпт-сборки В файле build.yml промпт-сборка использует поле prompt вместо command. При запуске программа создаёт новую сессию чата, отправляет туда промпт первым сообщением и следит за ответом агента: build: ai-review: # имя сборки watch: chat # запуск после завершения вашего чата prompt: "/verify Проверь последние изменения кода. Прочитай стенограмму диалога из {chat} и сообщи о проблемах." chatTitle: "Проверка кода" # название чата подагента delay: 5 # пауза перед запуском, секунд timeout: 120 # лимит времени на работу подагента, секунд display: always autofix: always Триггер watch: chat срабатывает, когда ваша сессия завершена: очередь ваших сообщений пуста, а Автоисправление закончило работу без ошибок и предупреждений. Даже если у промпт-сборки включено автоправление, она запустится только после того, как командные сборки исправили свои ошибки, — чтобы агент-проверщик работал с чистым состоянием. Заполнитель {chat} заменяется на путь к стенограмме вашего разговора, так что подагент видит весь контекст. В поле chatTitle доступен ещё и {buildName} — имя сборки для динамических заголовков. Отдельный чат подагента Промпт-сборки создают отдельный чат с собственным окном контекста (памятью разговора): Изолированный контекст — рассуждения и действия подагента идут в его собственном чате и не отнимают токены (порции текста, за которые вы платите) у вашей основной беседы и не засоряют её Связь с основным чатом — каждый чат подагента хранит ссылку на исходный разговор (ParentChatId). Получается прослеживаемая цепочка, которая видна на панели аналитики Название чата — поле chatTitle задаёт заголовок чата подагента; если его не указать, берётся имя сборки. Заполнитель {buildName} подставляется автоматически Сбор результата — когда подагент закончил, его последнее сообщение становится выводом сборки. Если задано поле outputFile, вывод читается из указанного файла — так можно поручить агенту записать итог в файл, это надёжнее и удобнее для отладки Подагент работает в течение заданного timeout (в секундах); если лимит превышен, сборка отменяется. Программа следит за готовностью через менеджер экземпляров: как только обработка чата завершается, вывод извлекается и разбирается. Разбор вывода и Автоисправление Вывод подагента разбирается тем же файлом .pastukhov/build.parser, что и вывод командных сборок. Любые шаблоны, настроенные под ваши инструменты, работают и здесь: если ответ подагента подходит под правила [ERROR] или [WARNING], проблемы извлекаются в структурированном виде. Промпт-сборки участвуют в Автоисправлении наравне с командными: autofix: always — ошибки подагента передаются в основной чат для исправления autofix: errors — Автоисправление запускается только при реальных ошибках (не при предупреждениях) autofix: never — сборка только информационная: анализ подагента виден на панели сборки, но правок он не вызывает Вывод сборки хранится в папке .pastukhov/build/ в том же виде, что и у командных сборок — три файла: {build-name}.output.txt (вывод), {build-name}.errors.txt (ошибки) и {build-name}.warnings.txt (предупреждения). Настройка промпт-сборок Промпт-сборки поддерживают те же поля настроек, что и командные, только вместо command используется prompt: build: security-audit: # аудит безопасности watch: chat prompt: "/verify Проверь код на безопасность: захардкоженные секреты, уязвимости SQL-инъекций, ненадёжные зависимости. Прочитай стенограмму из {chat} для контекста последних изменений." chatTitle: "Аудит безопасности" delay: 10 timeout: 300 display: errors autofix: errors test-generation: # генерация тестов watch: chat prompt: "/verify Напиши тесты для изменений кода из стенограммы {chat}. Запусти тесты и сообщи о неудачах." chatTitle: "Генерация тестов" delay: 5 timeout: 180 display: always autofix: always Как составить хороший промпт проверки Загрузите навык — навык доставляется подагенту автоматически, в текст промпта ничего добавлять не нужно (подробнее на странице Навыки). В контекст попадает полное содержимое навыка — SKILL.md и файлы его папки. Навык проверки кода даст агенту стандарты, по которым он будет сверяться Ссылайтесь на стенограмму — используйте {chat}, чтобы подагент видел весь разговор. Без этого он знает только то, что вы написали в промпте Указывайте, что именно проверять — «проверь на проблемы» расплывчато. «Проверь обращения к пустым значениям, пропущенную обработку ошибок и неверные асинхронные паттерны» даёт агенту конкретные критерии Задавайте формат ответа — чтобы вывод разбирался автоматически, попросите подагента оформлять ошибки под ваши правила разборки. Лучше всего объяснить формат в навыке — тогда он станет повторно используемым Объединение триггеров Как и командные, каждая промпт-сборка следит ровно за одним событием: изменениями файлов, именами других сборок или событием chat. Триггер chat доступен сборкам всех типов. Если нужна одна промпт-сборка на несколько событий, используйте схему «родитель–потомок» из руководства по автоматическим сборкам: создайте несколько лёгких родительских сборок — по одной на событие — а промпт-сборка пусть следит за ними. На родительских сборках задайте display: never, чтобы спрятать их с панели сборки. Полезные приёмы Проверка после каждой сессии — промпт-сборка с watch: chat сама перепроверяет работу ИИ после каждого разговора. Подагент находит то, что пропускают компиляторы и линтеры: архитектурные проблемы, логические ошибки, нарушения правил проекта Аудит безопасности — отдельная промпт-сборка проверяет секреты в коде, паттерны SQL-инъекций, ненадёжные зависимости и другие уязвимости, которые автоматические инструменты могут не заметить Генерация и прогон тестов — промпт-сборка, которая пишет и запускает тесты, даёт проверку, недоступную статическому анализу. Если сгенерированные тесты падают, Автоисправление передаёт неудачи обратно для правки кода Цепочка с командными сборками — промпт-сборка, следующая за командной, образует двухступенчатый конвейер: командная ловит статические ошибки, промпт-сборка — смысловые. Сначала настраивается командная сборка в порядке зависимостей Держите контекст подагента узким — используйте один нужный навык и ссылайтесь на стенограмму. Лишние навыки разбавляют внимание агента и делают проверку менее полезной Ручной запуск тяжёлых проверок — уберите триггер watch и задайте autofix: never: сборка не будет запускаться сама, но останется на панели сборки, где её можно запустить одним кликом. Так удобно делать крупные аудиты всего проекта после больших обновлений, а не после каждого чата Полный справочник по системе сборки — в разделе Сборка и развёртывание. Об автоматическом исправлении ошибок — Автоисправление. О контроле контекста подагентов — Аналитика и контроль. ← Проверка автоматической сборки Проверка звуковой обратной связи → ### Просмотрщик файлов и запуск скриптов Просмотрщик файлов и запуск скриптов — это ручная проверка «впридачу» к автоматической. Автоисправление чинит ошибки само, система сборки проверяет код при каждом изменении, а просмотрщик даёт вам самим быстро посмотреть файлы проекта, а запуск скриптов — выполнить любую команду и видеть её вывод в реальном времени. Всё это — прямо в интерфейсе, не выходя из чата. Встроенный просмотрщик файлов Диалог «Файлы» открывается из представления чата: слева — дерево папок проекта, справа — редактор. Удобно листать файлы, смотреть их содержимое и проверять, что именно изменила модель. Дерево файлов — структура папок проекта; каталоги раскрываются, чтобы показать содержимое Подсветка синтаксиса — код показывается с цветной разметкой по типу файла, читать его проще Автосохранение — изменения сохраняются сами через 2 секунды после остановки набора Просмотрщик не заменяет полноценный редактор кода — он для быстрого осмотра и мелких правок. Для серьёзной работы используйте привычный редактор, а остальное поручите ИИ. Просмотрщик особенно полезен после того, как модель закончила работу: откройте изменённые файлы и убедитесь, что правки верные, соответствуют вашим правилам и не задели лишнего. Это дополняет проверку изменений git: панель git показывает, что менялось, а просмотрщик — полный контекст каждого изменения. Просмотрщик работает с единым репозиторием проекта, куда входят и код, и навыки (папка .claude/skills). Выполнение скриптов У файлов-скриптов (расширение .sh) в редакторе появляется кнопка запуска. При нажатии вывод идёт в реальном времени в диалог «Вывод скрипта». Скрипты отличаются от сборок: сборки запускаются автоматически при изменениях и настраиваются в файле build.yml, а скрипт вы запускаете вручную в любой момент — это может быть любой исполняемый файл из вашего репозитория. Удобнее всего держать скрипты внутри навыков: так автоматические сборки и развёртывания можно запускать прямо из чата, открыв нужный навык. Как это работает Путь к скрипту находится в выбранном репозитории (проект или навыки) Файлу автоматически даётся право на запуск (chmod +x в Unix-системах) Скрипт запускается через /bin/bash scriptPath из корневого каталога проекта Автоматически задаются переменные окружения PYTHONIOENCODING=utf-8 и LANG=en_US.UTF-8, чтобы текст вывода читался корректно Вывод собирается небольшими порциями и каждые 100 мс передаётся в браузер, так что поток не перегружает интерфейс По завершении приходит сообщение об окончании, таймер выполнения останавливается Диалог вывода скрипта Когда скрипт работает, диалог «Вывод скрипта» открывается автоматически и показывает: Таймер выполнения — прошедшее время, по завершении — общая длительность (обновляется каждые 100 мс) Индикатор состояния — вращающийся значок во время работы (по нему можно остановить скрипт), зелёная галочка при успехе, знак ошибки при сбое Цветной вывод — строки ошибок подсвечены красным, предупреждения — оранжевым, обычный вывод — обычным цветом Автопрокрутка — вывод автоматически прокручивается к концу по мере поступления. Прокрутите вверх — автопрокрутка отключится; вернитесь вниз — она включится снова Кнопка копирования — копирует весь вывод в буфер обмена (доступна после завершения) Значок репозитория — показывает, откуда выполнялся скрипт: из проекта или из навыков Остановка скриптов Нажмите на вращающийся значок остановки, чтобы прервать работающий скрипт. Сервер завершит всё дерево процессов (включая вложенные), очистит накопленный вывод и покажет сообщение «Скрипт остановлен пользователем». Закрытие диалога тоже останавливает скрипт — фоновые процессы не продолжают работать, если вы ушли. Звуки скриптов Когда скрипт завершается — успешно или с ошибкой — звучит общий звук complete. В отличие от сборок, у скриптов нет отдельных звуков под каждую задачу. Чтобы изменить звук, положите свой MP3-файл с именем complete.mp3 в папку .pastukhov/sounds/ — он заменит встроенный. Громкость настраивается в разделе Настройки → Настройки звука, а полностью отключить звуки можно значком динамика в заголовке чата. Подробности — в разделе Проверка звуковой обратной связи. Разбор вывода скрипта Вывод скрипта автоматически разбирается с помощью файла .pastukhov/output.parser, который использует тот же формат блоков [ERROR]/[/ERROR], что и разборщики сборок и развёртывания. Встроенные шаблоны распознают самые частые ошибки без всякой настройки: Ошибки оболочки — «command not found» (команда не найдена), «Permission denied» (нет прав), «No such file or directory» (нет файла), «Segmentation fault» (сбой программы) Ошибки Python — трассировки (протокол сбоя), SyntaxError, ModuleNotFoundError, ImportError Ошибки Node.js — Error с описанием, TypeError, npm ERR! Ошибки .NET — ошибки сборки, исключения, фатальные ошибки Ошибки сети — «Connection refused» (отказ соединения), ECONNREFUSED, тайм-ауты, коды ответов 4xx/5xx Формат файла разборки ⚠️ Не редактируйте файлы разборки вручную — попросите модель ИИ сделать это за вас. Файл .pastukhov/README.md послужит справочником: там подробно описан синтаксис файлов разборки и назначение всех остальных файлов и папок каталога .pastukhov/. Строки комментариев, начинающиеся с #, игнорируются Однострочные шаблоны — маска поиска, которая должна точно совпасть с одной строкой вывода Многострочные шаблоны — обёрнуты в {{...}}, захватывают несколько идущих подряд строк после внутренней маски # Трассировки Python с контекстом [ERROR] Traceback \(most recent call last\): {{^\s+.*}} [^\s]+: [^\n]+ [/ERROR] # Блоки ошибок npm ERR! [ERROR] npm ERR!.* {{npm ERR!.*}} [/ERROR] # Предупреждения [WARNING] warning:.* {{^\s+.*}} [/WARNING] Разбор идёт по порядку: для каждой строки вывода правила применяются одно за другим. Когда все шаблоны блока совпали подряд, эти строки считаются одной ошибкой, и разборщик переходит дальше. Ранние блоки имеют приоритет: если совпадение найдено, следующие блоки для этих строк пропускаются. Свои шаблоны под формат ошибок вашего приложения можно добавить в output.parser — или попросить модель ИИ обновить файл. Разборщик перезагружается сам при изменении файла. Полезные приёмы Хорошее правило: сборки — для повторяющихся проверок, которые случаются много раз в день (компиляция, проверка стиля кода, типы, тесты). Скрипты — для проверок нерегулярных или тех, что требуют ожидания и ручного управления: разовые развёртывания, диагностика, интерактивные инструменты. Быстрые проверки после работы ИИ — запустите тестовый скрипт или откройте файл журнала прямо из диалога «Файлы», не переключаясь на терминал. Это быстрее, чем просить модель выполнить команду Скрипты для всего остального — если под нужную проверку не настроена сборка, создайте быстрый скрипт. Он запускается сразу, без ожидания срабатывания наблюдателей файлов Соединяйте скрипты с чатом — если скрипт нашёл ошибку, отправьте его вывод в чат и попросите ИИ исправить: модель прочитает вывод и внесёт точечные правки Проверяйте файлы глазами — после сложных правок откройте изменённые файлы в просмотрщике: так видны тонкие проблемы, которые не показывает сравнение версий Полный справочник по скриптам — в разделе Скрипты. Возможности работы с файлами — в Файлы. Об автоматической проверке без ручного участия — в Проверка автоматической сборки. ← Аналитика и контроль Промпт-сборки → ### Управление моделями и навыками Управление моделями и навыками — это способ направлять поведение ИИ, чтобы вывод был надёжнее. Правильно подобранная модель даёт нужное соотношение цены и возможностей для каждой задачи, а навыки подсказывают модели, какие стандарты проекта соблюдать, — это заметно улучшает её самопроверку. Цель — понемногу настраивать навыки под ошибки модели, пока качество не станет приемлемым. Конфигурация модели Модели позволяют переключаться между разными ИИ и провайдерами без перезапуска сессии. Каждая модель — это именованный набор переменных кодинг-агента: ключи API, названия моделей, базовые адреса и цены. Всё хранится в .pastukhov/models.yml. Подстановка переменных В переменных окружения можно использовать ссылки $VARIABLE_NAME. При активации модели они разворачиваются в реальные значения — как из других переменных модели, так и из системных переменных окружения. Это позволяет держать секреты вне репозитория: # .pastukhov/models.yml — безопасно для коммита environments: production: variables: - ANTHROPIC_API_KEY=$MY_API_KEY # разрешается из системного окружения во время выполнения - ANTHROPIC_BASE_URL=https://api.anthropic.com Иерархическое наследование Имена моделей поддерживают наследование по сегментам, разделённым дефисами. Модель glm-5-turbo автоматически наследует переменные и от glm-5, и от glm. Общие настройки (ключ API, базовый адрес) задаются в родителе, а в дочерних переопределяется только то, что отличается: environments: glm: variables: - ANTHROPIC_BASE_URL=https://api.z.ai/api/anthropic - CLAUDE_DISABLE_EXPERIMENTAL_BETAS=true glm-5: variables: - ANTHROPIC_MODEL=glm-5 - MODEL_INPUT_PRICE=1.00 glm-5-turbo: variables: - ANTHROPIC_MODEL=glm-5-turbo - MODEL_INPUT_PRICE=1.20 Переключение моделей во время чата Селектор моделей в области ввода чата позволяет переключиться в любой момент. Переключение мгновенное — следующее сообщение уйдёт уже на новой модели, без нового чата и обновления страницы. Удобно использовать разные модели на разных этапах задачи: дешевле — для исследования, мощнее — для реализации. Навыки как руководства по проверке Навыки — это папки в .claude/skills/ с файлом инструкций SKILL.md и вспомогательными ресурсами (скрипты, документация, примеры). Они дают модели контекст проекта. С точки зрения проверки навыки — главный способ предотвратить ошибки до того, как они возникли. Frontmatter в SKILL.md SKILL.md каждого навыка начинается с YAML-заголовка (frontmatter) с метаданными: --- name: code.development description: Основной рабочий процесс разработки для этого проекта allowed-tools: Read, Write, Edit, Bash, Glob, Grep model: claude-3-5-sonnet --- allowed-tools — разделённый запятыми белый список инструментов, которые модель может использовать, пока навык активен. Ограничение инструментов уменьшает поверхность ошибок и предотвращает случайные действия; model — переопределяет модель по умолчанию для этого навыка — удобно, когда навыку нужны другие уровни возможностей. Написание правил проверки в навыках Самая действенная проверка — до того, как модель написала код. Включите в инструкции навыка конкретные правила, которые предотвращают типичные ошибки. Но не раздувайте файлы навыков: чем больше контекста, тем меньше внимания к каждому требованию, а это и дорого, и неэффективно. Начните с пустого и добавляйте короткие однострочные правила только после ошибки модели, а затем просите модель настраивать сам навык, пока ошибки не исчезнут. Пусть навык правит модель, а не вы вручную; не миритесь даже с редкими ошибками. Если модель путается в файлах, инструментах или ведёт себя неожиданно — остановитесь и попросите её сначала починить навык, затем начните новый чат для проверки. Доводите до идеала. Стандарты кодирования — соглашения об именах, правила организации файлов, архитектурные паттерны проекта; Ограничения технологий — какие библиотеки использовать, каких паттернов избегать, лучшие практики конкретного фреймворка; Правила структуры файлов — куда класть новые файлы, как их называть, какие импорты или аннотации обязательны; Инструкции по процессу — например, «не собирайте вручную — сборки запускаются автоматически при изменении файлов», чтобы модель не делала лишних вызовов. Ожидайте 20–30 итераций добавления правил после ошибок, прежде чем большинство рутинных задач выйдут на точность около 85%. Конфигурация навыков Настройки отображения навыков хранятся в .xedant/skills.yml: у каждого навыка — запись с полем color для визуального отличия в селекторе. Все навыки с файлом SKILL.md всегда активны и появляются в селекторе чата; изменить цвет можно в диалоге навыков. skills: version: 1.0 activated: code.development: enabled: true color: '#3b82f6' project.planning: enabled: true color: '#84cc16' Селектор навыков Селектор навыков в области ввода чата показывает список навыков с их цветами и явный пункт «Без навыка». Выбор привязан к чату так же, как модель: восстанавливается при открытии чата и наследуется новыми чатами. Сама загрузка навыка автоматическая — требование доставляется обвязке внеполосным каналом (строка системного промпта, флаг запуска или переменная окружения), а ваше сообщение остаётся чистым. Подробнее — на странице Навыки. Выбирайте навык под текущую задачу. Навык разработки загружает стандарты кодирования и рабочие инструкции, навык планирования — архитектурные рекомендации, навык сайта — паттерны управления контентом. Каждый навык фокусирует внимание модели на том, что важно именно сейчас. Эффективные приёмы проверки Пишите конкретные инструкции — расплывчатые правила вроде «пишите чистый код» не помогают. Конкретное правило вроде «все конечные точки API должны возвращать NotFoundResult с полем message» — помогает; Ограничивайте инструменты для каждого навыка — если навыку нужно только читать и писать файлы, не давайте ему Bash. Меньше инструментов — меньше поводов для ошибок; Используйте разные модели для разных задач — быстрая дешёвая модель для простых правок, мощная — для сложной реализации. Переключайтесь в середине чата по мере развития задачи; Улучшайте навыки итеративно — каждая ошибка — повод улучшить навык. Кривая роста крутая: 20–30 исправлений дают точность около 85%. Полный справочник по моделям — на странице Модели, по навыкам — Навыки, оптимизация контекста — Использование контекста. ← Мониторинг вывода развёртывания Изоляция Docker и пропуск разрешений → ### Управление моделями через хуки Хуки — это «жёсткие правила», которые Pastukhov Agent навязывает модели: если навыки и файл CLAUDE.md объясняют агенту, как нужно работать, то хуки просто не дают ему сделать нежелательное действие. Самое полезное применение хуков — запретить модели запускать сборку и проверку кода вручную. Автоматическая система сборки уже делает это сама, быстрее и без лишнего расхода, поэтому каждая ручная попытка модели — это потерянное время и деньги. События и типы хуков Хуки сгруппированы по событиям — моментам, когда они срабатывают. Pastukhov Agent поддерживает два события: PreToolUse — срабатывает перед выполнением любого инструмента (действия модели). Здесь задаются запреты и подготовительные команды. Хук можно привязать к конкретному инструменту: Bash (команды в терминале), Edit и Write (правка и создание файлов), Read, Glob, Grep (поиск и чтение), Agent (запуск другого агента), NotebookEdit и другие UserPromptSubmit — срабатывает, когда вы отправляете модели сообщение. Используется, чтобы проверить или изменить ваш запрос до начала обработки Хуки запрета Хуки запрета блокируют выполнение инструмента, сравнивая его входные данные с заданным шаблоном. Для команд терминала (Bash) шаблон сравнивается со строкой команды. Для остальных инструментов используется шаблон .* (подходит под всё) — так инструмент запрещается целиком. Каждый хук запрета имеет три основных поля: Pattern (шаблон) — текст или маска поиска, с которой сравниваются данные инструмента Regex — если включено, шаблон понимается как регулярное выражение (гибкая маска, не различающая регистр букв), если выключено — как обычная подстрока, которую нужно найти в тексте Message (сообщение) — текст отказа, который увидите вы и модель, когда хук сработает Хуки выполнения Хуки выполнения запускают команду в терминале перед выполнением инструмента. Команда получает данные о вызове инструмента через стандартный ввод в формате JSON (структурированный вид данных) и может вернуть ответ, который повлияет на поведение модели. В команде доступна переменная окружения $CLAUDE_PROJECT_DIR — путь к папке вашего проекта. Запрет ручных сборок Это главное применение хуков в Pastukhov Agent. Если у вас настроены автоматические сборки, модель не должна сама запускать сборку, проверку кода или запуск проекта — иначе она тратит время и токены (порции текста, за которые вы платите) на то, что система делает сама. Без хуков модель проделывает это после каждого изменения файла. preToolUse: Bash: # сборка (компиляция) проекта - type: deny pattern: "dotnet build" message: "Не собирайте проект вручную — это делается автоматически" - type: deny pattern: "npm run build" message: "Не собирайте проект вручную — это делается автоматически" # проверка кода (линтеры, проверка типов) - type: deny pattern: "npm run lint" message: "Не проверяйте код вручную — это делается автоматически" - type: deny pattern: "npx svelte-check" message: "Не проверяйте код вручную — это делается автоматически" - type: deny pattern: "npm run check" message: "Не проверяйте код вручную — это делается автоматически" # запуск проекта - type: deny pattern: "npm run dev" message: "Не запускайте проект вручную — это делается автоматически" - type: deny pattern: "dotnet run" message: "Не запускайте проект вручную — это делается автоматически" userPromptSubmit: {} Когда хук запрета блокирует команду, модель получает сообщение об отказе и исправляет поведение. За одну сессию это экономит десятки лишних действий — а значит, и заметные деньги. Начинать всё же стоит с настроек и файла CLAUDE.md, чтобы модель реже пыталась делать лишнее сама, а хуки оставить как «последний рубеж»: они ловят модель тогда, когда она забывает о правилах — например, в длинном или сильно уплотнённом разговоре. Как хуки попадают в Claude Code Хуки хранятся в файле .pastukhov/hooks.yml — читаемый текстовый файл с простым синтаксисом. Pastukhov Agent автоматически переносит их в собственную систему хуков Claude Code: переводит настройки в нужный формат и записывает их в файл .claude/settings.local.json. Хуки вступают в силу при следующем вашем сообщении в чате. Синхронизация происходит так: При запуске программы и после каждого сохранения файла служба хуков читает настройки из YAML Каждый хук переводится в формат Claude Code, при этом автоматически подставляется путь к исполняемому файлу приложения Хуки с одинаковой командой объединяются, чтобы не было конфликтов Готовые настройки записываются в .claude/settings.local.json Уже запущенные сессии продолжают работать со старыми хуками до следующего вашего сообщения Исполняемый файл, который обрабатывает хуки, программа находит сама: рядом с запущенным процессом, в каталоге приложения, а в крайнем случае — через команду запуска dotnet Agent.dll. Другие цели проверки Кроме запрета ручных сборок, хуки решают и другие задачи: Защита от опасных команд — запрет rm -rf (удаление папок со всем содержимым), принудительной отправки в git и других операций, повреждение от которых нельзя отменить, даже внутри изолированного окружения Соблюдение правил проекта — запрет записей в конкретные защищённые файлы, запрет правки файлов настроек или изменений в тестовых данных Своя логика проверки — хуки выполнения могут запускать нужную команду перед каждым действием модели: проверку перед отправкой в git, контроль форматирования или собственные защиты Настройки проверяются автоматически при каждом сохранении hooks.yml: программа предупредит о неизвестных событиях и свойствах, а в сообщении об ошибке укажет нужный раздел документации .pastukhov/README.md. Полезные приёмы Всегда запрещайте ручные сборки, если настроены автоматические — это самая полезная конфигурация хуков. Добавьте правила запрета для каждой команды сборки и проверки, которую модель может попробовать Простые шаблоны — простой поиск — pattern: "npm run build" с regex: false ловит любую команду, содержащую эту фразу, в том числе с дополнительными параметрами Сложные шаблоны — маски поиска — включайте regex: true, когда нужно записать шаблон с учётом разных вариантов, например rm\s+-rf (удаление с любым количеством пробелов) Проверяйте хуки после сохранения — новые правила вступают в силу при следующем вашем сообщении. Отправьте тестовое сообщение и убедитесь, что хук блокирует нужные команды Полный справочник по хукам — в разделе Хуки. О системе сборки, которую хуки защищают от ручного запуска, читайте в Сборка и развёртывание. Об изоляции окружения, которая делает хуки дополнительной защитой, а не единственным барьером, — в разделе Изоляция Docker и пропуск разрешений. ← Изоляция Docker и пропуск разрешений Аналитика и контроль → ### Прокси-сервер У Pastukhov Agent есть встроенный прокси-сервер — «посредник» между Claude Code и поставщиками ИИ (Anthropic, OpenAI, DeepSeek). Все запросы и ответы проходят через него, поэтому приложение всегда знает, что делал агент, сколько «порций текста» (токенов) он потратил и сколько это стоит в деньгах. Прокси также переводит запросы в формат любого поставщика — вы можете подключать разные модели ИИ, не меняя программу. Обзор По умолчанию прокси выключен — работает режим 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. Дальше запрос идёт по цепочке: Прокси принимает запрос от Claude Code; Определяет, к какому поставщику относится выбранная модель; При необходимости переводит запрос в формат поставщика; Пересылает запрос поставщику ИИ; Извлекает из ответа данные о потраченных токенах; Сохраняет запись в базу и обновляет статистику чата; Возвращает ответ в 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 Далее: Настройки → ### Промпты Промпты — это очередь сохранённых запросов, которые агент отправляет сам, по очереди и в новые чаты. Раньше на этом месте были канбан-доски с карточками и тегами — теперь они удалены, а вместо них появился диалог промптов с серверным автосендом (AutoSend). Запишите запросы заранее — и агент запустит их один за другим, как только освободится место. Самые частые сценарии: пачка мелких подзадач («переименуй файлы», «обнови версии», «проверь сборку»), «утренний прогон» — список промптов, которые должны выполниться без вашего участия, и раздача заготовок по очереди, пока вы занимаетесь другими делами. Диалог «Промпты» Нажмите кнопку «Промпты» на панели ввода — откроется диалог со списком строк. Строка промпта — это текст запроса плюс селекторы модели и навыка для чата, в который он будет отправлен. Текст — поле с авто-размером: растёт под содержимое. Enter вставляет новую строку, а отправка выполняется кнопкой или сочетанием Ctrl/Cmd+Enter; Модель и навык — селекторы в строке: именно они попадут в новый чат. Пустые значения означают глобально выбранные модель/навык; Микрофон — записать запрос голосом прямо в строку (при включённом распознавании речи); Вставка из буфера — вставить текст, изображение или файл из буфера обмена; Перемещение — стрелки вверх/вниз меняют порядок строк в очереди; Удаление — убрать строку из очереди; Отправить — запустить промпт сразу (см. ниже). Кнопка «New Prompt» в шапке диалога добавляет новую строку сверху. Рядом с ней — «Generate»: генератор создаёт сразу несколько промптов из шаблона и списка имён (плейсхолдер NAME заменяется на каждое имя). Внизу — счётчик строк, например «3 промпта», и панель AutoSend. Если строк нет, диалог показывает пустую строку-черновик. Изменения сохраняются автоматически — об этом говорит индикатор состояния сохранения в шапке. Запуск промпта Отправка строки создаёт новый чат с моделью и навыком из селекторов строки, отправляет в него текст и переводит вас в этот чат. Такое же поведение у AutoSend — разница только в том, кто нажал кнопку. Создаётся новый чат; заголовок берётся из первой строки промпта; Текст промпта отправляется в чат; Строка потребляется — use-once: после запуска она исчезает из очереди (при ошибке отправки строка не восстанавливается, промпт нужно добавить заново); Интерфейс переключается в новый чат (настройка «Auto redirect»), а при успешной отправке показывается подтверждение «Prompt sent to a new chat». AutoSend: автоматическая отправка Переключатель AutoSend внизу диалога включает автоотправку: сервер сам запускает промпты из очереди в новые чаты, поддерживая до Max active chats одновременно активных чатов. Когда один чат завершает работу, на его место отправляется следующий промпт. Работает на сервере, а не в браузере: очередь продолжает отправляться, даже если вкладка свёрнута или закрыта. (Раньше планировщик жил в браузере, и скрытая вкладка «замораживала» таймеры — промпты ждали по несколько минут.) Метроном 1 секунда: сервер проверяет условия каждую секунду, а сами запуски выполняются не чаще, чем раз в период опроса (Check every); Мгновенный подхват: как только чат завершился, следующий промпт отправляется почти сразу, не дожидаясь конца интервала; Порядок FIFO: промпты запускаются в порядке очереди — от самого старого к новому; Активные чаты считаются по серверному списку занятых чатов плюс собственные запуски в полёте — один чат никогда не учитывается дважды. Когда AutoSend включается на одном устройстве, очередь и настройки синхронизируются между всеми открытыми вкладками и устройствами. Настройки очереди Шестерёнка «AutoSend settings» рядом с переключателем открывает все настройки очереди. Внутри — максимальное число активных чатов, интервал опроса, режим пиковых часов и автопереход. promptsItems — список промптов: строки с текстом, моделью и навыком (JSON); promptsAutoSend — включает/выключает автоотправку (по умолчанию выключена); promptsMaxActiveChats — максимум одновременно активных чатов: 1–10 (по умолчанию 1); promptsPollSeconds — интервал опроса в секундах: 1–3600 (по умолчанию 20); promptsAutoRedirect — автоматический переход в чат, запущенный промптом (по умолчанию включён); promptsIgnorePeakHours — учитывать ли пиковые часы при автоотправке. Пока включена (по умолчанию), автоотправка работает как обычно, без учёта пиков; когда выключена, промпты, чья модель сейчас в пике, ждут в очереди, а промпты с непиковыми моделями продолжают отправляться. О пиковых часах моделей и переменных MODEL_PEAK_HOURS/MODEL_PEAK_DAYS — на странице Модели. Очередь сообщений чата Промпты — не единственная очередь: у каждого чата есть собственная очередь сообщений. Если чат занят (агент обрабатывает запрос), новые сообщения не теряются, а встают в персистентную очередь и отправляются по мере освобождения агента. Порядок FIFO — сообщения доставляются по времени создания, по одному: пауза между «сообщение завершено» и «начато следующее» минимальна; Пауза — сообщение в очереди можно приостановить: диспетчеризация его пропускает, а при снятии паузы оно возвращается на своё место по времени создания; Редактирование — текст ожидающего сообщения можно изменить прямо в очереди; правки синхронизируются между устройствами; Очистка — очередь можно очистить целиком или убрать отдельные сообщения; Очередь в интерфейсе — при открытом чате его текущая очередь видна и доступна для управления. Доставка устроена «не более одного раза»: сообщение удаляется из очереди перед отправкой, а если отправка не удалась, в чате появляется ошибка. В очередь ставят все источники сообщений: центральный Telegram-бот и кастомные боты, agent-кнопки, планировщик задач, автоисправление (autofix), Remote API, синхронизация с Яндекс.Диском — и сам веб-клиент, когда чат занят. Ссылки Автоматическая отправка через API — управление очередью промптов программно; Пиковые часы модели — как работает учёт пиковых часов в очереди; Навыки — что выбирается в селекторе навыка строки промпта. ← Модели Аналитика → ### Сборка и развёртывание Что такое сборки? «Сборка» в Pastukhov Agent — это автоматическая проверка, которая контролирует действия ИИ. Несмотря на название, сборке не нужно ничего «собирать» или создавать готовые файлы — достаточно выполнить команду и сообщить об ошибках и предупреждениях в понятном виде, который распознаёт парсер сборок. Думайте о сборках как о контрольных точках качества. Каждая — отдельная автоматическая проверка, которая запускается, когда меняются связанные с ней файлы. Компилятор, находящий синтаксические ошибки, — это сборка. Линтер, отмечающий неиспользуемые переменные (линтер — «проверка стиля кода»), — это сборка. Тесты, падающие на утверждении, — это сборка. Сканер безопасности, находящий уязвимости, — тоже сборка. Все они устроены одинаково: команда, создающая структурированный вывод ошибок. Сборки настраиваются в файле .pastukhov/build.yml в корне проекта: для каждой задаются команда, какие файлы отслеживать и правила разбора в .pastukhov/build.parser. Когда агент меняет проект, Pastukhov Agent замечает изменения и сам запускает подходящие сборки — ничего нажимать не нужно. Настоящая сила — в Автоисправлении. Когда оно включено, ошибки и предупреждения сборок автоматически отправляются агенту как сообщения чата. Модель видит точный вывод, понимает, что пошло не так, и исправляет — правки снова запускают сборки, и так создаётся обратная связь. Чем больше сборок настроено, тем больше автоматических проверок проходит модель и тем лучше результат. Конфигурация сборок Сборки определяются в файле .pastukhov/build.yml: каждая — это именованная задача с командой, шаблонами файлов для отслеживания и дополнительными настройками. Вручную файл создавать не обязательно — используйте кнопку Исправить build.yml с помощью ИИ (значок sparkle) в заголовке панели сборок, чтобы поручить настройку агенту. build: task-name: path: "src/" # Рабочая директория для команды command: "npm run check" # Команда оболочки для выполнения delay: 3 # Секунды ожидания перед запуском (по умолчанию: 3) timeout: 60 # Максимальное время выполнения в секундах (по умолчанию: 60) watch: "*.ts *.js" # Шаблоны файлов или имена сборок (разделённые пробелом или запятой), или `chat` для отслеживания текущего завершения чата commandOutput: "" # Путь к дополнительному файлу вывода (необязательно) ignore: [] # Regex-шаблоны для фильтрации из ошибок/предупреждений replacements: # Поиск/замена в путях вывода - find: "/tmp/build" replace: "/project" stopStrings: [] # Строки, которые немедленно прерывают сборку startSound: "" # Звук при запуске сборки (встроенный или пользовательский) endSound: "" # Резервный звук при завершении сборки (используется, когда не задан специфичный звук результата) successSound: "" # Звук при успешной сборке (переопределяет endSound) warningSound: "" # Звук при завершении с предупреждениями (переопределяет endSound) errorSound: "" # Звук при неудачной сборке (переопределяет endSound) soundVolume: 1.0 # Громкость 0-1 для звуков сборки Что означает каждая настройка: path — рабочая папка, где выполняется команда. По умолчанию — корень проекта command — команда для выполнения; подойдёт любая, доступная в вашем окружении delay — пауза (в секундах) после изменения файла перед запуском: если меняется сразу несколько файлов, сборка не запускается поминутно, а ждёт, пока изменения улягутся. По умолчанию — 3 секунды timeout — максимальное время выполнения в секундах; если команда не уложилась, она прерывается. По умолчанию — 60 секунд watch — какие файлы отслеживать: шаблоны имён (например, *.ts *.js) или имена других сборок (например, server-build,client-copy). При отслеживании другой сборки эта сборка запускается только после её успешного завершения commandOutput — путь к дополнительному файлу вывода для разбора: некоторые инструменты пишут результат в файл, а не в консоль (например, JetBrains inspectcode создаёт XML) — укажите его, и парсер извлечёт ошибки оттуда ignore — шаблоны поиска, которые отсеиваются из ошибок и предупреждений: удобно гасить заведомо ложные срабатывания и шум конкретных инструментов replacements — пары «найти/заменить» для путей в выводе: нужно, когда сборка выполняется во временных папках (контейнеры, изолированные каталоги), чтобы места ошибок указывали на ваши реальные файлы stopStrings — строки, при появлении которых сборка немедленно прерывается (например, "The operation was canceled") startSound — звук при запуске сборки (встроенное имя вроде "complete" или ваш файл из .pastukhov/sounds/) endSound — резервный звук при завершении сборки, если не заданы звуки результата successSound — звук при успешной сборке (главнее endSound) warningSound — звук при завершении с предупреждениями (главнее endSound) errorSound — звук при неудачной сборке (главнее endSound) soundVolume — громкость звуков сборки (0-1, по умолчанию 1.0) Сборки можно выстраивать в цепочки: вместо отслеживания файлов сборка может ждать завершения другой сборки: build: compile: command: "dotnet build" watch: "*.cs" test: command: "dotnet test --no-build" watch: compile # Запускается только после успешной компиляции Система следит за файлами проекта и запускает сборки сама: файл из шаблона watch изменился — пошёл отсчёт delay; если за это время меняются ещё файлы, таймер сбрасывается. После отсчёта выполняется команда. Если файлы меняются во время самой сборки, запущенная сборка отменяется и стартует заново с учётом изменений. Результаты сборок хранятся в .pastukhov/build/ — три файла на задачу: {task-name}.output.txt (полный вывод команды), {task-name}.errors.txt (распознанные ошибки) и {task-name}.warnings.txt (распознанные предупреждения). Редактировать build.yml вручную не обязательно. Файл .pastukhov/README.md описывает полный формат — просто попросите агента добавить или изменить сборки, и он настроит всё правильно. Файлы парсеров Pastukhov Agent использует три файла парсеров, чтобы вытаскивать ошибки и предупреждения из текстового вывода. Все три имеют одинаковый формат и описывают сами себя встроенными комментариями — править их вручную обычно не нужно. Если вы добавляете собственную проверку с незнакомым форматом вывода или ваше приложение выдаёт ошибки, которые парсер не распознаёт, попросите агента обновить парсер. Проще всего поправить шаблоны прямо из вывода: выделите текст в любом окне вывода сборки, развёртывания или скрипта — появится плавающая кнопка Исправить парсер. Нажмите её, и агент получит выделенный текст вместе с готовым запросом на обновление нужного файла парсера — вводить ничего не нужно. Формат парсера Каждый файл парсера состоит из блоков [ERROR] и [WARNING]. Внутри блока — шаблоны поиска по тексту (регулярные выражения), которые парсер по очереди пытается сопоставить с выводом команды: Строки комментариев, начинающиеся с #, игнорируются — ими файлы парсеров поясняют, что за что отвечает Однострочные шаблоны — выражение, которое должно целиком совпасть с одной строкой вывода. Затем парсер пробует следующий шаблон на следующей строке Многострочные шаблоны — заключаются в {{...}} и захватывают сколько угодно идущих подряд строк: так снимается контекст после заголовка ошибки, стек-трейсы и прочий многострочный вывод Вот пример, как шаблоны ловят ошибку TypeScript вместе с контекстом: # Ошибки TypeScript [ERROR] .*\.ts.* # Сопоставляет строку, содержащую путь к .ts файлу Error.* # Сопоставляет строку, начинающуюся с "Error" {{^\s+}} # Сопоставляет ноль или более строк, начинающихся с пробелов (контекст) [/ERROR] Парсер идёт по строкам вывода и в каждой позиции пробует шаблоны блоков [ERROR] по порядку. Когда все шаблоны блока совпали подряд, эти строки извлекаются как одна ошибка, и парсер двигается дальше. Блоки [WARNING] работают точно так же. Шаблоны, стоящие в файле раньше, имеют приоритет: как только найдено совпадение, другие блоки не пробуются. Парсер автоматически перечитывает свои правила при изменении файла — правки действуют сразу, без перезапуска. build.parser Файл .pastukhov/build.parser извлекает ошибки и предупреждения из вывода команд сборки. Он уже содержит шаблоны для распространённых инструментов — C# (MsBuild, CSC), TypeScript, Svelte, Vite, Python (ruff) и ReSharper — и в него можно добавлять шаблоны для любых инструментов вашего проекта. # Ошибки C# - формат MsBuild с путём к файлу и (строка,кол)->(строка,кол) CSxxxx: [ERROR] \[MsBuild\].*\(\d+,\d+\)-\>\(\d+,\d+\)\s+CS\d+\:.* [/ERROR] # Ошибки Python ruff (коды F/E) - с расположением файла и контекстом [ERROR] [A-Z]\d+\s+(\[\*\]\s+)?.* \s*--\>.* {{^\s+.*|\d+\s+\|.*}} [/ERROR] # Предупреждения C# [WARNING] \(\d+,\d+\): warning [/WARNING] deploy.parser Файл .pastukhov/deploy.parser извлекает ошибки и предупреждения из работы вашего запущенного приложения — то, что происходит уже после сборки, на «боевом» этапе. Он распознаёт распространённые ошибки времени выполнения: необработанные исключения, стек-трейсы, сбои подключения к базе данных, коды ошибок HTTP и падения приложений на разных платформах: # Необработанные исключения (полный стек-трейс) [ERROR] Unhandled exception\. {{\S.*}} [/ERROR] # Уровень лога ошибок ASP.NET (Serilog/ILogger) [ERROR] ^err\:.* {{^\s+\S.*}} [/ERROR] # Внутренние ошибки сервера HTTP 500 [ERROR] .*status code 500 [/ERROR] # Ошибки отказа в подключении [ERROR] Connection refused [/ERROR] # Исключения SQL базы данных [ERROR] SqlException\:.* {{^\s+\S.*}} [/ERROR] # Уровень лога предупреждений [WARNING] ^warn\:.* {{^\s+\S.*}} [/WARNING] output.parser Файл .pastukhov/output.parser — универсальный парсер для вывода обычных скриптов: ошибки оболочки, стек-трейсы Python, исключения Node.js, сбои npm и прочие частые форматы ошибок. Он применяется, когда вывод не относится к сборкам или развёртываниям: # Команда оболочки не найдена [ERROR] .*command not found [/ERROR] # Стек-трейсы Python [ERROR] ^Traceback \(most recent call last\)\: {{.*}} [/ERROR] # npm ERR! [ERROR] ^npm ERR\!.* [/ERROR] # Предупреждения Python [WARNING] .*Warning\:.* {{^\s+.*}} [/WARNING] Проверка конфигурации Pastukhov Agent автоматически проверяет все файлы конфигурации .pastukhov/ при их сохранении. Проверка запускается как сборка, и результаты видны на панели сборок: ошибки красным, предупреждения жёлтым. При каждом сохранении выполняется девять проверок — по одной на каждый файл конфигурации: build.yml — синтаксис YAML, требует command или prompt, предупреждает о неизвестных свойствах deploy.yml — синтаксис YAML, предупреждает о неизвестных свойствах project.yml — синтаксис YAML, требует name, предупреждает о неизвестных свойствах hooks.yml — синтаксис YAML, предупреждает о неизвестных типах событий и свойствах mcp.yml — синтаксис YAML, предупреждает о неизвестных ключах верхнего уровня и свойствах серверов skills.yml — синтаксис YAML, предупреждает о неизвестных свойствах и об отсутствии enabled models.yml — синтаксис YAML, предупреждает о неизвестных свойствах (ожидает variables) providers.yml — синтаксис YAML, предупреждает о неизвестных свойствах провайдеров и окружений *.parser — парность блоков ([ERROR]/[/ERROR]), корректность регулярных выражений, шаблоны вне блоков Сообщения об ошибках и предупреждениях ссылаются на нужный раздел .pastukhov/README.md, чтобы найти правильный формат: Error: build.yml - 'lint': Missing required field 'command' or 'prompt' (see .pastukhov/README.md#buildyml) Warning: deploy.yml - 'staging': Unknown property 'restart' (see .pastukhov/README.md#deployyml) Warning: skills.yml - 'my-skill': Missing 'enabled' property (see .pastukhov/README.md#skillsyml) Ничего настраивать не нужно: редактируйте файлы конфигурации, и проверка запускается сама при сохранении. Исправьте ошибки — и при следующей проверке всё станет чисто. Конфигурация развёртывания Развёртывание — это запуск вашего приложения: на своём компьютере для проверки или на удалённом сервере для реальных пользователей. Настраивается в файле .pastukhov/deploy.yml. Pastukhov Agent поддерживает два способа: debug — для локальной разработки и docker — для развёртывания на удалённых серверах. Развёртывание debug (локальное) Способ debug запускает приложение прямо на вашей машине — самый частый вариант во время разработки: deploy: my-app: method: "debug" # Обязательно: должно быть "debug" os: "linux" # "linux" или "windows" (по умолчанию: "linux") path: "./server" # Путь к файлам приложения command: "dotnet run" # Команда для запуска приложения delay: 3 # Задержка перед запуском (по умолчанию: 3) timeout: 60 # Максимальное время выполнения (по умолчанию: 60) watch: "build-app" # Имена сборок (разделённые пробелом или запятой), или `chat` shallowCopy: true # Копировать только изменённые файлы (по умолчанию: true) url: "https://app.example.com/" # Необязательный URL для кнопки ссылки startSound: "" # Звук при запуске развёртывания (встроенный или пользовательский) endSound: "" # Звук при завершении развёртывания (встроенный или пользовательский) soundVolume: 1.0 # Громкость 0-1 для звуков развёртывания environment: # Переменные окружения для процесса - APP_KEY=your-key - APP_DB=/path/to/database Ключевые настройки: watch — список имён сборок (через пробел или запятую) или chat для запуска после завершения чата. Развёртывание запускается или перезапускается автоматически, когда все перечисленные сборки завершились успешно shallowCopy — при включении копирует только изменённые файлы при каждом перезапуске: заметно быстрее полного копирования url — необязательный адрес вашего приложения: в интерфейсе появляется кликабельная кнопка, открывающая приложение в новой вкладке environment — переменные окружения, передаваемые запущенному процессу startSound — звук при запуске развёртывания (встроенное имя вроде "complete" или ваш файл из .pastukhov/sounds/) endSound — звук при завершении развёртывания soundVolume — громкость звуков развёртывания (0-1, по умолчанию 1.0) Развёртывание Docker (удалённое) Способ docker отправляет ваше приложение на удалённый сервер как контейнер. Подходит для окружений staging (предварительная проверка) и production (рабочий вариант для пользователей): deploy: my-docker: method: "docker" # Обязательно: должно быть "docker" os: "linux" host: "server.com" # Удалённый хост username: "deploy" # Имя пользователя SSH sshKeyPath: "~/.ssh/key" # Путь к ключу SSH sshPort: 22 # Порт SSH (по умолчанию: 22) imageName: "app:latest" # Имя образа Docker containerName: "myapp" # Имя контейнера dockerfilePath: "./Dockerfile" buildContext: "." # Контекст сборки (по умолчанию: ".") buildArgs: # Аргументы сборки Docker - NODE_ENV=production environmentVariables: # Переменные окружения контейнера - PORT=3000 - DATABASE_URL=postgresql://... portMappings: # Соответствия портов Хост:Контейнер "8080": "3000" volumeMappings: # Соответствия томов Хост:Контейнер "/var/log/app": "/app/logs" networks: # Сети Docker - myapp-network pullLatestImage: true # Загружать базовый образ перед сборкой (по умолчанию: true) removeExistingContainer: true # Удалять старый контейнер перед развёртыванием (по умолчанию: true) healthCheckPath: "/" # Конечная точка проверки здоровья (по умолчанию: "/") healthCheckInterval: 30 # Интервал проверки здоровья в секундах (по умолчанию: 30) healthCheckRetries: 3 # Повторы проверки здоровья (по умолчанию: 3) localSourcePath: "." # Локальный путь для развёртывания remoteWorkDir: "/tmp/deploy" # Удалённая рабочая директория excludePaths: # Пути для исключения из rsync - ".git" - "node_modules" - ".pastukhov" Вывод развёртывания сохраняется в .pastukhov/deploy/: {deploy-name}.log — для вывода времени выполнения, плюс отладочные логи на стороне клиента по адресу {domain}.log (автоматически обрезаются до 100 МБ). Создавать и править deploy.yml вручную не обязательно. Файл .pastukhov/README.md полностью описывает оба способа — просто попросите агента настроить развёртывание, и он разберётся с деталями. Управление сборками и развёртываниями Панель состояния внизу экрана отвечает за контроль сборок и развёртываний в реальном времени. Она обновляется сама через живые соединения — перезагружать страницу не нужно. Управление сборками Вкладка Сборки показывает все настроенные сборки списком-аккордеоном: у каждой — имя, значок состояния и число ошибок/предупреждений. Пересобрать — наведите курсор на завершённую сборку: появится кнопка пересборки для ручного запуска (отключена во время выполнения) Просмотр вывода — нажмите на имя сборки: откроется полный вывод с тремя вкладками — Журнал (исходный вывод, последние 2000 строк), Ошибки (распознанные ошибки, красные), Предупреждения (жёлтые) Переход к ошибкам — нажмите на счётчик ошибок или предупреждений, и диалог вывода сразу откроется на нужной вкладке Копировать — копирует содержимое текущей вкладки в буфер обмена Отправить в чат — отправляет ошибки или предупреждения агенту в виде сообщения в блоке кода build.log. Для предупреждений добавляется просьба «исправь предупреждения, не игнорируй их». Содержимое ограничено первыми 20 КБ В заголовке панели сборок есть кнопка Исправить build.yml с помощью ИИ (значок sparkle) рядом с кнопкой редактирования: она добавляет во ввод чата запрос настроить автоматические сборки, используя .pastukhov/README.md как справочник. В диалогах вывода сборок и в разделах ошибок/предупреждений панели сборок выделение текста открывает плавающую кнопку Исправить парсер: нажатие отправляет выделенный текст агенту с запросом обновить build.parser — вводить запрос вручную не нужно. Сборки, прошедшие без проблем, сворачиваются сами. Сборки с ошибками или предупреждениями остаются раскрытыми — чтобы вы сразу их заметили. Управление развёртываниями Вкладка Развёртывания показывает каждое настроенное развёртывание с именем, состоянием и кнопками действий: Запустить — запускает приложение; вывод времени выполнения транслируется в реальном времени Остановить — корректно останавливает работающее приложение Перезапустить — останавливает и сразу запускает заново (также срабатывает автоматически, когда завершились отслеживаемые сборки) Открыть URL — если адрес задан в deploy.yml, кнопка открывает ваше приложение в новой вкладке браузера Просмотр вывода — диалог с вкладками Журнал, Ошибки и Предупреждения, как у сборок. Вывод развёртывания разбирается в реальном времени парсером deploy.parser: ошибки выполнения — необработанные исключения, сбои подключения к базе, ошибки HTTP 500 — обнаруживаются и подкрашиваются. Выделение текста открывает кнопку Исправить парсер для обновления deploy.parser Панель состояния можно растягивать или полностью сворачивать, чтобы освободить место на экране. На мобильных устройствах панели сборок и развёртываний располагаются вертикально под основным содержимым. Творческие сборки «Сборка» — это просто название. Под ним может скрываться любая проверка, которая выдаёт структурированные ошибки. Вот несколько примеров за пределами традиционной компиляции: Линтеры и форматтеры Линтер — автономная проверка стиля и типовых ошибок в коде (неиспользуемые переменные, расхождения в оформлении): build: eslint: path: "client/" command: "npx eslint src/ --format stylish" watch: "*.ts *.svelte" ruff: path: "src/" command: "ruff check ." watch: "*.py" Проверка типов Проверяет, что данные в коде используются правильно (не перепутаны типы, всё согласовано): build: typecheck: path: "client/" command: "npx tsc --noEmit" watch: "*.ts" Запуск тестов Автоматически прогоняет написанные тесты и сообщает о падениях: build: tests: path: "server/" command: "dotnet test --no-build" watch: compile Сканеры безопасности Проверяют зависимости проекта на известные уязвимости: build: audit: path: "./" command: "npm audit" watch: "package.json" Собственные проверки проекта Можно написать свои скрипты проверки под правила вашего проекта: соглашения об именах, требуемые структуры файлов, соответствие API-контрактам, любые инварианты, которые проект должен соблюдать. Пока скрипт выводит ошибки в формате, понятном парсеру, — он работает как сборка. Если формат вывода не распознаётся, попросите агента добавить нужные шаблоны в build.parser. Каждая добавленная сборка — дополнительная автоматическая обратная связь для агента через Автоисправление. Проект со сборками компилятора, линтера, проверки типов и тестов даёт модели четыре независимые проверки качества — каждая ловит свои категории проблем, которые другие могут пропустить. Автоматическая пересборка и Автоисправление Когда агент изменяет файлы проекта, Pastukhov Agent замечает изменения и сам запускает подходящие сборки. Никаких команд и кнопок — весь цикл проверки работает сам. Автоматический рабочий процесс выглядит так: Агент изменяет файлы — модель вносит изменения в код проекта Запуск сборок — Pastukhov Agent замечает изменения и запускает соответствующие сборки после настроенной задержки Разбор вывода — парсер сборок извлекает ошибки и предупреждения из вывода каждой сборки Автоисправление проверяет результаты — если сборки дали ошибки, Автоисправление оборачивает их в блок кода markdown и отправляет агенту как сообщение чата. Для предупреждений добавляется «исправь предупреждения, не игнорируй их» Агент исправляет проблемы — модель видит вывод ошибок, понимает, что случилось, и вносит исправления Перезапуск сборок — исправления снова меняют файлы, и цикл запускается заново Успех — когда все сборки проходят без ошибок, цикл завершается, и приложение развёртывается повторно Этот цикл работает полностью без вашего участия. Автоисправление включается, только когда нет активной сессии агента, проверяет повторяющиеся ошибки в последних 10 сообщениях (чтобы не зациклиться) и уважает лимит параллельности. Наблюдать за процессом можно на панели сборок и в истории чата — или просто заглянуть позже и увидеть результат. Узнайте больше о конфигурации и ограничениях Автоисправления ← Файлы Git → ### Скрипты Скрипты — это маленькие программы (исполняемые файлы) в репозитории проекта, которые можно запустить в один клик прямо из Pastukhov Agent. Файлы с расширением .sh при открытии в редакторе показывают кнопку Запустить скрипт. Вывод приходит в реальном времени, его удобно копировать, а работу скрипта можно остановить в любой момент. Запускать скрипты можно из двух мест — из окна «Файлы» (скрипты проекта) и из окна «Навыки» (скрипты навыков); оба используют один и тот же редактор и процесс выполнения. Отличие от сборок и развёртываний простое: сборки запускаются сами при изменении файлов по настройкам в build.yml, а скрипт запускаете вы вручную, и это может быть любой исполняемый файл проекта. Диалог вывода скриптов При запуске скрипта автоматически открывается окно вывода, где видно: Заголовок — путь к скрипту, его имя и пометка, из какого репозитория он запущен (проект или навыки) Таймер — показывает, сколько времени скрипт уже работает; после завершения — итоговое время Индикатор состояния — крутящийся значок во время выполнения (клик по нему останавливает скрипт), зелёная галочка при успехе или отметка об ошибке Область вывода — прокручиваемый текст, в котором вывод появляется в реальном времени Кнопка копирования — копирует весь вывод в буфер обмена (пока скрипт работает, она отключена) Строки вывода подсвечиваются цветом: Красный — строки ошибок (определяются правилами из .pastukhov/output.parser или встроенными шаблонами) Оранжевый — строки предупреждений Обычный цвет — обычный вывод Как выполняются скрипты Скрипт запускается так: Путь к скрипту превращается в полный путь к файлу в репозитории (проекта или навыков) Файлу выдаётся право на запуск — chmod +x на системах Unix Запускается bash с этим файлом: /bin/bash путь/к/скрипту Вывод (обычный и сообщения об ошибках) собирается по мере поступления и буферизуется, чтобы не перегружать соединение Накопленный вывод передаётся в браузер через SignalR — канал связи в реальном времени — каждые 100 миллисекунд Когда процесс завершается, приходит сообщение об окончании и таймер останавливается Скрипты работают в корне проекта. Переменные окружения PYTHONIOENCODING=utf-8 и LANG=en_US.UTF-8 устанавливаются автоматически — они нужны, чтобы текст на разных языках передавался без искажений. Остановка скрипта Чтобы остановить работающий скрипт, нажмите крутящийся значок в заголовке окна. Сервер завершит процесс целиком (вместе со всеми порождёнными им подпроцессами), сбросит накопленный вывод и покажет сообщение «Скрипт остановлен пользователем». Закрытие окна вывода тоже останавливает скрипт — так он не останется работать в фоне, если окно закрыли случайно. Парсинг вывода Вывод автоматически разбирается, чтобы подсветить ошибки и предупреждения. Правила лежат в .pastukhov/output.parser — править их вручную обычно не нужно. Проще всего выделить необработанный текст в выводе и нажать плавающую кнопку Fix parser — выделенное отправится ИИ, и он поправит правила. Справку по формату файла смотрите в .pastukhov/README.md. [ERROR] Error:\s+(.*) [/ERROR] [WARNING] Warning:\s+(.*) [/WARNING] Встроенные шаблоны распознают распространённые ошибки без какой-либо настройки: Ошибки оболочки: «command not found», «Permission denied», «Segmentation fault» Python: Traceback, SyntaxError, ModuleNotFoundError, ImportError Node.js: Error:, TypeError, npm ERR! .NET: ошибки сборки, исключения HTTP: коды 4xx/5xx, «connection refused», тайм-ауты Поддерживаемые репозитории Запускать скрипты можно из двух репозиториев: Проект — основной репозиторий рабочего пространства Навыки — каталог навыков Claude (.claude/skills) Репозиторий виден как пометка в заголовке окна — всегда понятно, откуда запущен скрипт. Скрипты против сборок Скрипты и сборки решают разные задачи: Скрипты — запускаются вручную, в один клик; это любой исполняемый файл; вывод идёт в реальном времени, работу можно прервать; файл настроек не нужен. Сборки — запускаются автоматически при изменении файлов; настраиваются в .pastukhov/build.yml; вывод копится в файлы; по готовности могут запускать развёртывание. Подробнее — на странице Build & Deploy. Скрипты удобны для разовых задач: прогнать тесты, обновить данные, выполнить одноразовую операцию. Сборки — для постоянной работы: непрерывная сборка и автоматические процессы. ← Хуки Использование контекста → ### Советы и устранение проблем Практические советы, как получить от Pastukhov Agent максимум пользы, ответы на частые вопросы и шаги для решения типичных проблем, когда что-то работает не так, как ожидалось. Как просить ИИ — несколько советов Будьте конкретны — чем больше деталей, тем лучше модель поймёт задачу. Вместо «исправь кнопку» скажите: «кнопка отправки в форме обратной связи не проверяет адрес электронной почты — добавь проверку». Хороший запрос уже содержит половину ответа. Делите большие задачи на маленькие — вместо «сделай всё приложение» начинайте с одной функции за раз. Модель лучше всего работает с понятными, сфокусированными задачами. Используйте навыки — выбирайте подходящий навык для задачи через селектор навыков. Навык «code review» для одного и того же кода даст другой результат, чем навык «development»: каждый навык — это свои инструкции для модели. Итерируйте — если первый ответ не идеален, попросите доработать его, а не начинать заново. «Сделай заголовок крупнее и поменяй цвет на синий» — быстрее, чем заново описывать всё требование. Давайте контекст — упоминайте имена нужных файлов, функций или образцы кода, которым модель должна следовать. Например: «Обнови функцию formatDate в src/utils/date.ts, чтобы она понимала европейский формат даты». Частые вопросы Как подключить свой собственный проект? Задайте свои переменные окружения (путь к проекту, адрес Git-репозитория, учётные данные) и перезапустите Pastukhov Agent. Подробности — в разделе Начало работы и в инструкциях по установке для Windows или Docker. Можно ли использовать несколько моделей ИИ? Да. Создайте несколько моделей в настройках — по одной на каждую модель ИИ и её API-ключ — и переключайтесь между ними через селектор моделей в области ввода сообщений. Что будет, если модель ошибётся? Модель видит ошибки сборок и может исправить их сама, если включено Автоисправление. Также вы можете просто сказать ей, что пошло не так, и попросить исправить: модель прочитает тексты ошибок из панели сборки и использует их как контекст для починки. Можно ли переносить навыки между проектами? Навыки хранятся в папке .claude/skills/ внутри проекта и сохраняются вместе с ним. Чтобы перенести навык в другой проект, скопируйте папку навыков, либо попросите модель создать похожие навыки на основе существующих как шаблонов. Подробности — в разделе Навыки. Как сделать резервную копию данных? Файлы проекта — в вашем Git-репозитории: делайте коммиты и отправляйте их на сервер регулярно. История чатов и настройки хранятся в локальной базе данных: сохраняйте копию файла базы данных, а для постоянной эксплуатации можно настроить внешнюю базу данных. Насколько мои данные приватны? Ваш код обрабатывается локально — в вашем собственном контейнере или экземпляре. В облако уходят только сообщения чата, которые вы отправляете поставщику ИИ (например, Anthropic или OpenAI). Данные аналитики остаются локальными, если вы сами не настроили их отправку в ClickHouse для единой отчётности. Проблемы с подключением ИИ не отвечает: проверьте, что ваш API-ключ действителен и на балансе у поставщика есть средства. Посмотрите ключ в конфигурации модели. Не получается отправить или получить изменения Git: убедитесь, что учётные данные Git (логин, личный токен доступа) заданы в переменных окружения. Подробности — в разделе Git. Контейнер не запускается: посмотрите журналы Docker на ошибки запуска. Обычные причины — неверные переменные окружения, занятый порт или отсутствующие файлы конфигурации. Порт уже занят: другая программа использует порт, который нужен Pastukhov Agent. Измените порт в конфигурации или остановите конфликтующую программу. Советы по скорости Большие проекты — агент умеет работать с большими кодовыми базами, но скорость зависит от ресурсов вашего контейнера. Для очень крупных проектов увеличьте память и процессорное время, выделенные контейнеру. Длинные разговоры — очень длинные сессии тратят больше токенов и могут замедляться. Начинайте новый чат, когда прежний контекст уже не нужен для текущей задачи. Скорость сборки — если полное окружение разработки не нужно, используйте компактный образ Docker — сборки и запуск будут быстрее. База данных — при большом числе чатов со временем PostgreSQL работает лучше, чем SQLite. Подумайте о переходе, если проект активно растёт. Куда обратиться за помощью Если советы выше не помогли, а проблему решить не удалось: Telegram — напишите @maxedant для личной поддержки (быстрее всего); Электронная почта — отправьте письмо на max@pastukhov.com; FAQ — посмотрите страницу FAQ, там собраны ответы на частые вопросы. Обычно отвечаем в течение 12 часов, включая выходные. В обращении опишите проблему, приложите тексты ошибок и шаги, которые приводят к проблеме, — так мы решим её быстрее. ← Горячие клавиши MCP-серверы → ### Телефон и рабочий стол Pastukhov Agent изначально создан как веб-приложение (PWA), поэтому одинаково удобен на компьютере, планшете и телефоне: интерфейс сам подстраивается под размер экрана, а в мобильном браузере его можно «установить» как обычное приложение на главный экран. Отдельного мобильного адреса нет — используется тот же адрес вашего экземпляра (или его подпапка, если агент размещён внутри другого сайта). Что такое PWA? PWA (Progressive Web App) — это обычный сайт, который ведёт себя как полноценное приложение: его можно «установить» на телефон или рабочий стол (на главном экране появится иконка), он открывается в собственном окне без адресной строки браузера и запоминает ваш вход. Для этого не нужны магазины приложений — всё делается прямо из браузера в пару кликов. Эта возможность встроена в Pastukhov Agent изначально и работает на любом экземпляре без дополнительной настройки. Модели, навыки, чаты и данные хранятся как обычно — установка лишь создаёт удобную иконку для быстрого доступа. Установка на телефон Откройте адрес Pastukhov Agent в мобильном браузере, войдите и установите приложение на главный экран: На iPhone (Safari): Откройте адрес Pastukhov Agent в Safari; Нажмите кнопку Поделиться (квадрат со стрелкой вверх); Прокрутите вниз и нажмите «На экран Домой»; Введите имя приложения и нажмите «Добавить»; На главном экране появится иконка — нажмите её для запуска в режиме приложения. На Android (Chrome): Откройте адрес Pastukhov Agent в Chrome; Нажмите кнопку меню (три точки в правом верхнем углу); Нажмите «Установить приложение» (или «На экран Домой»); Подтвердите установку; На главном экране появится иконка — нажмите её для запуска в режиме приложения. В настольных браузерах (Chrome, Edge) браузер сам предложит установить приложение на рабочий стол — по той же схеме, в один клик. Интерфейс на телефоне Интерфейс автоматически подстраивается под ширину экрана: Список чатов — просматривайте и переключайтесь между разговорами, список листается обычным свайпом; Чат — сообщения, ответы ИИ и изменения файлов показываются в компактном виде; Поле ввода — на всю ширину внизу экрана, дополнительные панели вызываются кнопкой меню; Панели состояния — сборки, развёртывание и Git доступны в нижней панели, вкладки переключаются свайпом; Навигация — боковые меню сворачиваются в выдвижные панели, чтобы освободить место на экране. Все функции работают так же, как на компьютере: чат, задачи, боты, файлы, сборки, аналитика. Сложное редактирование кода или чтение больших списков изменений, конечно, удобнее на большом экране, но общение с моделями и контроль работы агента с телефона — полноценные. Установка приложения особенно удобна вместе с задачами и ботами: результаты автоматических сценариев приходят в Telegram, а приложение — быстрый способ открыть тот же чат и посмотреть подробности. ← Автоисправление Горячие клавиши → ### Удалённое управление Удалённое управление позволяет управлять Pastukhov Agent программно, без открытия браузера. Есть два способа: HTTP API — создание чатов, отправка промптов, управление очередью и живые события SignalR; и файловая очередь через Яндекс.Диск (AgentRemote) — обмен файлами с задачами и транскриптами. Вся HTTP-часть описана на отдельной странице API: аутентификация по ключу, все эндпоинты /api/remote, очередь промптов, список ботов, расширенная поверхность по API-ключу и подписка на события. Здесь — файловый способ через Яндекс.Диск. Удалённое управление через Яндекс.Диск (AgentRemote) Pastukhov Agent умеет работать как «файловая очередь» через Яндекс.Диск: положите в папку файл с текстом задачи — агент создаст чат, выполнит её, а готовый транскрипт положит обратно. Управлять агентом можно с любого устройства, где есть Яндекс.Диск, — без веб-интерфейса и SSH. На этой же механике работает отдельное десктоп-приложение AgentRemote (Windows): оно следит за папкой на Диске и показывает чаты и сообщения в удобном интерфейсе. Как это работает Включите функцию: задайте переменную окружения AGENT_YANDEX_DISK_TOKEN (OAuth-токен Диска) — фоновый монитор запустится автоматически и начнёт следить за папкой. Положите в корень папки .txt-файл с задачей — он встанет в очередь и будет обработан по порядку. Числовой префикс в имени (например, 01-fix-auth.txt) задаёт очерёдность. На каждый промпт создаётся отдельный чат. Для follow-up сообщений бросьте .txt-файл внутрь папки чата (подпапка с номером чата) — он обработается следующим в этом чате. Транскрипты сохраняются обратно на Диск как .md-файлы напротив каждого промпта. Автоисправления тоже логируются файлами autofix-*.txt/.md. Переменные окружения AGENT_YANDEX_DISK_TOKEN — OAuth-токен Яндекс.Диска; задание включает функцию; AGENT_YANDEX_DISK_FOLDER — корневая папка очереди (по умолчанию app:/Yandex.Disk); AGENT_YANDEX_DISK_POLL_INTERVAL — период опроса в секундах (по умолчанию 10). Для программного доступа к чатам, промптам и очереди через HTTP — см. API. ← Папка .pastukhov Далее: Telegram Bot → ### Упрощённый интерфейс Упрощённый интерфейс — это режим, превращающий Pastukhov Agent в минималистичный ChatGPT-подобный чат. Он скрывает все технические элементы управления и показывает только диалог с AI в виде «облачных» пузырей. Режим предназначен для нетехнических пользователей, которым нужен простой доступ к AI без визуального шума. Включается переключателем Simplified UI в разделе Настройки → Чат (первый пункт в списке). При переключении все изменения применяются мгновенно, значение сохраняется на сервере и синхронизируется между всеми открытыми вкладками через SignalR. Список чатов На главной странице список чатов в упрощённом режиме показывает только заголовки и относительное время (5 мин назад, 2 часа назад, вчера — и т.д.). Все технические метаданные скрыты: Стоимость и токены Количество сообщений и скорость (msg/s, tokens/s) Время обработки Количество коммитов Модель Кнопка удаления чата Чаты выводятся по 50 штук на страницу (вместо 10 в обычном режиме), постраничная выдача скрыта. Фильтр поиска по заголовкам чатов сохранён. Пустой чат Когда открыт чат без сообщений, вместо обычного пустого состояния отображается центрированная область ввода в стиле ChatGPT: Большой textarea с плейсхолдером «Чем могу помочь?» (3 строки, с авторасширением до 200px) Круглая кнопка отправки (стрелка вверх) справа внутри контейнера ввода Селекторы модели и навыков — под textarea в компактном виде Отправка по Enter, перенос строки — Shift+Enter Во время обработки кнопка отправки превращается в кнопку остановки (квадрат) Сообщения как пузыри Вместо стандартного отображения сообщений, в упрощённом режиме используется стиль «облачных» пузырей: Пользовательские сообщения — выровнены вправо, скруглённые углы с «хвостиком» внизу-слева, зеленоватый фон Ответы ассистента — выровнены влево, скруглённые углы с «хвостиком» внизу-справа, фоновый цвет карточки Копирование — кнопка копирования появляется при наведении (на мобильных — при тапе на пузырь) Максимальная ширина — 680px, на мобильных — 95% Большинство технических сообщений скрыты. Видимы только: Сообщения пользователя Ответы ассистента с реальным содержимым AskUserQuestion — интерактивные вопросы от AI PermissionRequest — запросы разрешений Скрыты: все tool-сообщения (Read, Write, Edit, Bash, Glob, Grep и т.д.), результаты операций (success, error), системные сообщения, ошибки и статистика. Строка ввода Внизу чата при наличии сообщений отображается компактная строка ввода: Однострочный textarea с авторасширением до 4 строк Селекторы модели и навыков — под полем ввода Кнопка отправки/остановки — справа внутри закруглённого контейнера Плавная анимация перехода между отправкой и остановкой (~200ms) Упрощённый хедер В шапке страницы скрываются технические элементы: Таймер и счётчик токенов Последняя статистика (HeaderStats) Кнопка сброса favicon Остаются: хлебные крошки (название проекта + заголовок чата), переключатели темы и звука, иконка настроек (шестерёнка открывает хаб настроек; выход — внутри, в группе «Помощь и аккаунт»), кнопка «Новый чат». Скрытые элементы При включённом упрощённом режиме полностью скрыты: Панель статуса (git, сборки, деплои) — правая часть экрана. Чат занимает всю ширину ChatStats — статистика чата над сообщениями Мобильная панель статуса (drawer внизу экрана) Сборки и деплои продолжают выполняться в фоне — они просто не видны в интерфейсе. При необходимости можно переключиться обратно в обычный режим. ### Файлы Окно «Файлы» — это встроенный файловый менеджер и редактор: смотреть и изменять файлы проекта можно прямо в браузере, без установки дополнительных программ. Оно пригодится, чтобы вручную посмотреть или поправить то, что сделал агент, — или подготовить файлы для него. Открытие окна «Файлы» Откройте окно «Файлы», нажав кнопку «Файлы» в области ввода сообщений или на панели Git. Оно также открывается при нажатии на значок редактирования файла на панели Git, по кнопке «Редактировать файл» в представлении diff или когда агент редактирует файл через сообщения инструментов. Окно выглядит как большое перекрывающее окно с двумя частями: слева — дерево файлов (структура проекта), справа — редактор для просмотра и изменения содержимого. Такое разделение позволяет быстро переходить между файлами, не теряя из виду код. Если окно открыто с панели Git или из сообщения инструмента, оно сразу показывает соответствующий файл. В остальных случаях — последний просмотренный файл или выбор по умолчанию. Как открыть файл с панели Git: Значок редактирования — у каждого файла на панели Git есть значок ручки: нажмите, чтобы открыть этот файл в окне «Файлы» Кнопка «Файлы» — на панели Git есть своя кнопка «Файлы», открывающая окно от корня проекта Редактировать файл в diff — в представлении diff Git есть кнопка «Редактировать файл», которая открывает изменённый файл в редакторе Просмотр файлов в диалоге «Навыки»: У диалога «Навыки» есть собственный просмотрщик файлов — чтобы смотреть и править файлы навыков (например, SKILL.md) отдельно от основного окна «Файлы». Дерево файлов Дерево файлов слева показывает всю структуру проекта: папки с раскрывающимся содержимым, файлы — со значками в зависимости от типа. Навигация по дереву: Нажмите на папку, чтобы развернуть или свернуть её содержимое Нажмите на файл, чтобы открыть его в редакторе справа Дважды нажмите на папку, чтобы развернуть её и заодно посмотреть свойства Клавиатурные сокращения: Стрелки — перемещение вверх и вниз по файлам и папкам Enter — открыть выбранный файл или развернуть/свернуть выбранную папку Delete — удалить выбранный файл или папку (с подтверждением) + (плюс) — развернуть выбранную папку - (минус) — свернуть выбранную папку F2 — переименовать выбранный файл или папку Дерево запоминает, какие папки раскрыты: после закрытия и повторного открытия окна всё останется как вы оставили — не придётся разворачивать заново. Редактор файлов Редактор справа умеет всё, что нужно для работы с кодом прямо в браузере. Выберите файл в дереве — его содержимое появится в редакторе, готовое к просмотру и изменению. Возможности редактора: Подсветка синтаксиса — код раскрашивается по смыслу (ключевые слова, строки, комментарии), читать становится заметно проще Номера строк — слева, чтобы удобно ссылаться на конкретные строки Автосохранение — изменения сохраняются при вводе, ничего не потеряется Счётчик токенов — внизу редактора: сколько «порций текста» занимает файл; полезно понимать расход при работе с ИИ Выбор темы — светлая, тёмная или высококонтрастная — на ваш вкус Поддерживаются обычные операции с текстом: ввод, удаление, выделение, копирование, вставка, отмена/повтор. Клавиши Ctrl+S (или Cmd+S на Mac) сохраняют файл вручную в любой момент, даже при включённом автосохранении. Большие файлы загружаются эффективно, редактор остаётся отзывчивым даже на крупных проектах. Подсветка подстраивается под расширение файла автоматически: TypeScript, JavaScript, Python, HTML, CSS и другие языки распознаются без ручной настройки. Запуск скриптов Скрипт — это файл с набором команд (расширение .sh), который выполняет работу автоматически. Когда скрипт открыт в редакторе, в заголовке появляется кнопка «Запустить»: нажмите — и выполнение начнётся, вывод будет виден в реальном времени в окне «Вывод скрипта». Окно «Вывод скрипта»: В заголовке окна — имя скрипта, проект, к которому он относится, и счётчик прошедшего времени. Вывод идёт строка за строкой с автоматической прокруткой; если прокрутить вверх, чтобы посмотреть прошлое, автопрокрутка приостановится, и появится кнопка прокрутки вниз. Копировать — копирует полный вывод в буфер обмена (отключена во время выполнения, чтобы не скопировать неполный результат) Остановить — анимированная кнопка в заголовке завершает скрипт; закрытие окна тоже останавливает выполнение Звук завершения — оповещение, когда скрипт закончил работу, даже если окно не в фокусе Подсветка ошибок в выводе: Вывод скрипта автоматически анализируется: строки, похожие на ошибки, подсвечиваются красным, предупреждения — оранжевым. Правила подсветки задаются файлом output.parser в папке .pastukhov/ проекта. Этот же формат используется для вывода сборок (build.parser) и развёртываний (deploy.parser). Файл парсера прост: блоки [ERROR] и [WARNING] с шаблонами поиска по тексту (регулярные выражения). Для многострочных шаблонов (например, стек-трейсов Python) выражение заключается в двойные фигурные скобки: {{regex}}. Строки, начинающиеся с #, — комментарии. # Shell command not found [ERROR] .*command not found [/ERROR] # Python traceback (multi-line) [ERROR] ^Traceback \(most recent call last\)\: {{.*}} [/ERROR] Править файл output.parser можно в окне «Файлы». Изменения вступают в силу при следующем запуске скрипта — перезапуск сервера не нужен. Создание файлов и папок Добавлять новые элементы можно панелью инструментов вверху окна или контекстным меню по правой кнопке мыши — набор функций одинаковый, выбирайте как удобнее. Чтобы создать новый файл: Нажмите кнопку «Новый файл» на панели инструментов или правой кнопкой мыши по дереву файлов → «Новый файл» Появится окно с предложением ввести имя файла Введите имя с расширением (например: helper.ts или styles.css) Чтобы создать файл внутри определённой папки, укажите путь (например: src/utils/helper.ts) Нажмите Enter или кнопку «Создать» Чтобы создать новую папку: Нажмите кнопку «Новая папка» на панели инструментов или правой кнопкой мыши по дереву файлов → «Новая папка» Введите имя папки (например: components или tests) Вложенные папки создаются через прямые слэши (например: src/components/ui) Нажмите Enter или кнопку «Создать» Новый файл сразу открывается в редакторе — можно начинать наполнять его содержимым. Новые папки появляются в дереве и раскрываются (пока пустые). Система проверяет имена на недопустимые символы и конфликты с уже существующими элементами. Переименование файлов и папок Переименование помогает навести порядок в проекте или исправить ошибку в имени: содержимое и расположение элемента сохраняются, меняется только имя. Чтобы переименовать элемент: Выберите файл или папку в дереве одним нажатием Нажмите F2 или правой кнопкой мыши → «Переименовать» Введите новое имя (для файлов — с расширением) Нажмите Enter или кнопку «Переименовать» Система не даст переименовать элемент в имя, которое уже есть в этой папке, — появится сообщение об ошибке. Переименование папки автоматически обновляет пути всех файлов и подпапок внутри. Но если в коде есть жёстко прописанные пути или строки импорта со старым именем, их придётся обновить вручную. Перемещение файлов и папок Перемещение помогает реорганизовать структуру проекта: элемент переносится в другое место, сохраняя содержимое и свойства. Чтобы переместить элемент: Выберите файл или папку в дереве одним нажатием Правой кнопкой мыши → «Переместить» В окне выбора папки перейдите по дереву к месту назначения Выберите папку и нажмите «Переместить» При перемещении папки всё её содержимое (файлы и подпапки) переезжает вместе с ней, внутренняя структура сохраняется. Система проверит, что в месте назначения нет элемента с тем же именем, — случайная перезапись исключена. Перемещение автоматически обновляет внутренние пути элементов. Но, как и при переименовании, относительные пути и строки импорта в коде со старым расположением, возможно, придётся поправить вручную. Например, перенос служебного файла из src/utils/ в src/lib/ потребует обновить все import, ссылающиеся на старый путь. Удаление файлов и папок Удаление убирает элементы насовсем, поэтому система всегда спрашивает подтверждение — чтобы случайно не потерять данные. Чтобы удалить элемент: Выберите файл или папку в дереве одним нажатием Нажмите Delete или правой кнопкой мыши → «Удалить» Подтвердите в появившемся диалоге Проверьте имя и путь элемента — убедитесь, что выбрали правильный Нажмите «Удалить» или «Отмена», чтобы передумать При удалении папки удаляются и все файлы внутри неё; диалог показывает, сколько элементов будет удалено, чтобы вы понимали масштаб. Важно: удаление необратимо — корзины в приложении нет. Случайно удалённые файлы придётся восстанавливать из резервной копии (если она есть) или создавать заново. Всегда проверяйте диалог подтверждения перед нажатием «Удалить». Путь к файлу Над редактором видна панель пути — полный адрес открытого файла в структуре проекта. Он нужен, чтобы быстро ориентироваться и возвращаться к родительским папкам. Например, для файла src/utils/helper.ts панель показывает: src › utils › helper.ts Каждый сегмент пути кликабелен: нажатие на папку открывает её в дереве файлов. Особенно удобно с глубоко вложенными файлами — путь позволяет быстро вернуться к родительским папкам, не прокручивая дерево вручную. При переключении между файлами путь обновляется сам и всегда показывает, какой файл сейчас активен. Встроенный FTP-сервер Оба Docker-образа (dev и min) содержат встроенный FTP-сервер vsftpd. FTP — это распространённый протокол передачи файлов: через него к файлам проекта можно подключаться привычными программами — FileZilla, WinSCP и другими — без захода в веб-интерфейс. Удобно, например, выгрузить сразу много файлов или работать с проектом из любимого файлового менеджера. FTP-сервер живёт внутри Docker-контейнера и запускается автоматически при старте, если заданы учётные данные. Корневой каталог — /project, то есть доступны все файлы вашего проекта. Настройка Чтобы включить FTP-сервер, добавьте в конфигурацию контейнера две переменные окружения (полный список переменных): AGENT_FTP_USER — имя пользователя для FTP-доступа AGENT_FTP_PASSWORD — пароль для FTP-доступа Пример в docker-compose.yml: services: pastukhov_agent: image: maxpastukhov/agent:dev-latest ports: - "5001:80" - "21:21" # FTP-порт - "30000-30009:30000-30009" # пассивный режим volumes: - "./MyProject:/project" environment: - AGENT_LOGIN=agent - AGENT_PASSWORD=... - AGENT_FTP_USER=myuser - AGENT_FTP_PASSWORD=mypassword Дополнительные переменные AGENT_FTP_MIN_PORT — минимальный порт пассивного режима (по умолчанию: 30000) AGENT_FTP_MAX_PORT — максимальный порт пассивного режима (по умолчанию: 30009) AGENT_FTP_ADDRESS — адрес сервера для пассивного режима (по умолчанию определяется автоматически) Порты FTP-сервер использует два порта: Порт 21 — командный канал (управление соединением) Порты 30000–30009 — пассивный режим передачи данных Оба диапазона нужно пробросить в docker-compose.yml (см. пример выше). Без проброса пассивных портов FTP-клиенты подключатся, но не смогут передавать файлы. Если переменные AGENT_FTP_USER и AGENT_FTP_PASSWORD не заданы, FTP-сервер не запускается, и порты 21 и 30000–30009 не используются. ← Чат Сборка и развёртывание → ### Хуки Хуки — это готовые правила для действий агента, которые применяются сами, без участия искусственного интеллекта. Правило может запретить агенту выполнять опасную или лишнюю команду либо, наоборот, обязать его перед действием запустить свою проверку. Благодаря этому не нужно каждый раз напоминать ИИ в диалоге, как себя вести, — правила сработают автоматически. Правила хранятся в файле .pastukhov/hooks.yml — это настройки проекта, которые удобно держать под контролем версий. Pastukhov Agent автоматически передаёт их собственной системе хуков Claude Code, а менять их можно в наглядном диалоге, не редактируя файлы вручную. Самое частое применение хуков на практике — не защита от опасных команд, а экономия времени и денег. Сборки проекта запускаются сами при изменении файлов, поэтому каждая ручная сборка или проверка кода, которую агент решает выполнить дополнительно, — это лишние минуты и потраченные токены. Если запретить такие команды хуками, обычный сеанс экономит десятки ненужных шагов — за день набегает заметная экономия. Типы хуков В Pastukhov Agent есть два вида хуков — они решают разные задачи: Запрещающие хуки Запрещающий хук не даёт выполнить действие, если оно совпадает с заданным образцом. Совпало — вызов инструмента отклоняется, и пользователь видит сообщение о запрете. Для команд терминала (инструмент Bash) — образец сравнивается с текстом команды Для остальных инструментов — используйте .* как универсальный образец (он совпадает со всем), чтобы запретить инструмент целиком У каждого запрещающего хука три настройки: Образец (Pattern) — текст или шаблон, с которым сравнивается ввод инструмента Регулярное выражение (Regex) — включите, чтобы образец обрабатывался как регулярное выражение — язык поиска по шаблону; регистр букв при этом не важен. Когда выключено, образец ищется как обычный фрагмент текста. Сообщение (Message) — текст, который увидит пользователь, когда хук сработает Выполняемые хуки Выполняемый хук перед действием запускает команду оболочки. Он получает данные о вызове инструмента (в формате JSON — структурированном виде данных) и может вернуть ответ, который повлияет на поведение Claude Code. Команда (Command) — команда оболочки для запуска. Доступна переменная окружения $CLAUDE_PROJECT_DIR — в ней лежит полный путь к проекту. События хуков Хуки сгруппированы по событиям. К одному событию можно привязать несколько хуков — для разных инструментов: PreToolUse — срабатывает перед выполнением инструмента. Здесь задают запреты и команды предварительной проверки. Доступные инструменты: Agent, Bash, Edit, Write, Read, Glob, Grep, WebFetch, WebSearch, NotebookRead, NotebookEdit и другие. UserPromptSubmit — срабатывает, когда пользователь отправляет сообщение ИИ. Удобно, если ввод нужно проверить или изменить до обработки. Диалог хуков Диалог хуков можно открыть из главного меню. Он устроен по событиям: Слева выберите событие — «Перед использованием инструмента» (PreToolUse) или «Отправка пользователем» (UserPromptSubmit) Инструменты внутри события перечислены по алфавиту — выберите нужный, чтобы увидеть его хуки Добавьте хук через форму: выберите тип (запрещающий или выполняемый) и заполните поля Нажмите «Сохранить» — настройки запишутся в .pastukhov/hooks.yml Распространённые случаи использования Предотвращение ручной сборки и линтинга Сборки запускаются автоматически при изменении файлов, поэтому агенту не нужно собирать проект, проверять код или запускать его вручную. Создайте запрещающие хуки для инструмента Bash в событии PreToolUse — на каждую команду, которую агент может попытаться выполнить: Образец: dotnet build — сообщение: «Не собирайте проекты вручную — это делается автоматически» Образец: npm run build — сообщение: «Не собирайте проекты вручную — это делается автоматически» Образец: npm run link — сообщение: «Не линтуйте проекты вручную — это делается автоматически» Образец: npx svelte-check — сообщение: «Не линтуйте проекты вручную — это делается автоматически» Образец: npm run check — сообщение: «Не линтуйте проекты вручную — это делается автоматически» Образец: npm run dev — сообщение: «Не запускайте проекты вручную — это делается автоматически» Образец: dotnet run — сообщение: «Не запускайте проекты вручную — это делается автоматически» Без таких хуков агент регулярно запускает сборку и проверки после каждого изменения файла — тратя время и токены на то, что система сборки уже делает сама. Это самое выгодное применение хуков в Pastukhov Agent. Файл конфигурации Все правила хранятся в файле .pastukhov/hooks.yml. Структура простая: событие → инструмент → список хуков: preToolUse: Bash: - type: deny pattern: "dotnet build" message: "Don't build projects manually - it's done automatically" - type: deny pattern: "npm run build" message: "Don't build projects manually - it's done automatically" - type: deny pattern: "npm run link" message: "Don't lint projects manually - it's done automatically" - type: deny pattern: "npx svelte-check" message: "Don't lint projects manually - it's done automatically" - type: deny pattern: "npm run check" message: "Don't lint projects manually - it's done automatically" - type: deny pattern: "npm run dev" message: "Don't start projects manually - it's done automatically" - type: deny pattern: "dotnet run" message: "Don't start projects manually - it's done automatically" userPromptSubmit: {} Сохранённые в диалоге правила автоматически передаются собственной системе хуков Claude Code: определения превращаются в формат JSON и записываются в .claude/settings.local.json. Хуки действуют со следующего обращения к ИИ в чате; уже запущенные сеансы работают со старыми правилами до отправки нового сообщения. Устранение неполадок Хук не срабатывает — проверьте, что он сохранён и передан Claude Code: нажмите «Сохранить» в диалоге и убедитесь, что файл .claude/settings.local.json обновился. Правила вступают в силу при следующем сообщении — идущий разговор продолжает использовать старые. Регулярное выражение не срабатывает — поиск по регулярному выражению не различает регистр букв. Убедитесь, что образец учитывает все варианты ввода, и при необходимости проверьте его в онлайн-тестере регулярных выражений. Выполняемый хук завершается без результата — у команд хуков есть тайм-аут 60 секунд: если команда работает дольше, она прерывается. Проверьте синтаксис команды и убедитесь, что она доступна в системном пути (PATH). Ошибка сохранения YAML — если диалог показывает ошибку формата, проверьте, что в строках образцов нет специальных символов YAML без правильных кавычек. Текст ошибки появляется в нижней части диалога. ← MCP-серверы Скрипты → ### Чат Чат — это главный способ общения с агентом. Вы описываете задачу обычными словами, агент отвечает, показывает, какие файлы читал и изменял, и держит вас в курсе прогресса — всё в одном окне, в реальном времени. Поле ввода чата Внизу окна чата находится область ввода — здесь вы набираете сообщения и запросы. Текстовое поле Поле принимает длинные, многострочные тексты и расширяется само до удобной высоты. Чтобы отправить сообщение, нажмите Enter дважды: первый Enter добавляет новую строку, а второй Enter на получившейся пустой строке — отправляет. Так длинные сообщения не улетают случайно. Нажмите Ctrl+Enter (или Cmd+Enter на Mac), чтобы продолжить в новом чате — то есть перенести разговор в отдельный чат, не смешивая темы. Используйте Ctrl+V или Shift+Insert для вставки из буфера обмена — включая изображения и файлы. Кнопка отправки Нажмите кнопку отправки, чтобы передать сообщение агенту. Новые сообщения можно отправлять в любой момент — даже пока агент ещё обрабатывает предыдущее: они встанут в очередь и будут выполнены по одному. Удерживайте Ctrl (или Cmd) при нажатии кнопки отправки, чтобы продолжить в новом чате. Рядом с кнопкой отправки есть отдельная кнопка Продолжить (иконка стрелки вверх) — она тоже открывает сообщение в новом чате. И быстрое Ctrl+Click, и кнопка «Продолжить» отключены, пока сообщение отправляется. Автодополнение команд Навык — это инструкция для агента, как выполнять определённый вид работы (например, «спланировать задачу» или «работать с сайтом»). Быстрый выбор навыка — ввести / и первую букву имени: появится список подходящих навыков, а выбор привяжет навык к чату. Введите /, чтобы увидеть все доступные навыки Продолжайте ввод — список отфильтруется по имени Навигация — стрелками, выбор — Enter, Tab или стрелка вправо Нажмите Escape, чтобы закрыть список Можно просто нажать на нужное предложение При выборе навыка слеш-команда /имянавыка убирается из текста, а навык привязывается к текущему чату: можно сразу писать сообщение — загрузка навыка произойдёт автоматически, отдельной командой просить её не нужно. Кнопка микрофона Кнопка микрофона появляется только когда в настройках включено распознавание речи (Настройки → Распознавание речи). Распознавание выполняет модель Whisper, работающая на сервере, а не встроенная функция браузера. Нажмите микрофон, чтобы начать запись — появится красный пульсирующий индикатор ●. Говорите чётко и нажмите микрофон снова для остановки. Аудио отправляется на сервер, распознанный текст автоматически вставляется в поле ввода. Пока аудио обрабатывается, рядом с кнопкой виден спиннер. Примечание: перед первым использованием распознавания модель Whisper нужно загрузить в настройках. Доступны размеры tiny, base, small, medium, large, turbo — модели побольше распознают точнее, но работают медленнее. Можно задать конкретный язык или использовать автоопределение. Кнопка вставки Кнопка вставки (иконка буфера обмена) появляется в правом верхнем углу текстового поля при наведении. Нажмите её или используйте Ctrl+V / Shift+Insert, чтобы вставить содержимое из буфера обмена. Вставка работает умно: обычный текст вставляется в место курсора, а изображения и файлы загружаются на сервер — их пути сами подставляются в поле ввода. По умолчанию изображения попадают в папку assets/images, а файлы — в assets/files проекта. Файлы больше установленного ограничения отклоняются с уведомлением. Все параметры буфера обмена настраиваются в Настройки → Буфер обмена: Вставка изображений — включать/выключать вставку изображений (включено по умолчанию) Путь для изображений — куда класть загружаемые изображения (по умолчанию: assets/images) Вставка файлов — включать/выключать вставку файлов (включено по умолчанию) Путь для файлов — куда класть загружаемые файлы (по умолчанию: assets/files) Ограничение размера — максимальный размер файла в МБ, диапазон 1–1000 (по умолчанию: 100 МБ) Панель управления вводом Ниже текстового поля находится панель управления — быстрый доступ к настройкам и инструментам чата. Она разделена на левую и правую части: Левая панель Модель — выпадающий список: какая нейросеть обрабатывает ваши запросы. Модель можно переключить прямо в чате — изменение применится к следующему сообщению. Если у модели настроена переменная MODEL_PEAK_HOURS и сейчас пиковое время, рядом появится оранжевый значок с подсказкой «Пиковые часы модели с HH:MM до HH:MM, дороже». Индикатор обновляется сам каждые 30 секунд. У провайдера z.ai рядом с селектором есть индикатор квоты — тонкая полоска расхода токенов за последние 5 часов; нажатие открывает подробный диалог с тремя лимитами (5-часовой, недельный и месячный по MCP-инструментам), обратным отсчётом до сброса и графиком расхода за 48 часов. Подробнее — в Модели. Навык — выпадающий список навыков (инструкций для агента). Все навыки всегда доступны: при выборе агент загрузит его в следующем сообщении. Дополнительные навыки можно подключать по ходу разговора. Подробнее — в Навыки. Автоисправление — переключатель фонового сервиса: он следит за результатами автоматических проверок, а найденные ошибки и предупреждения сам отправляет агенту на исправление. Подробнее — в Автоисправление. Правая панель Промпты — очередь сохранённых запросов: заготовьте запросы заранее, включите AutoSend, и агент сам отправит их по очереди в новые чаты. Подробнее — в Промпты. Навыки — диалог со всеми доступными навыками: просмотр и управление. Подробнее — в Навыки. Хуки — диалог настройки хуков: автоматические действия, которые выполняются в определённые моменты работы чата (например, после ответа агента). MCP — диалог MCP-серверов: внешние программы-инструменты, которые подключаются к агенту и расширяют его возможности. Микрофон — запись голосового сообщения (виден только при включённом распознавании речи) Отправить / Продолжить — кнопка отправки и кнопка «Продолжить» (см. Кнопка отправки) Навыки Навыки — это документы с инструкциями, похожие на файл CLAUDE.md, но загружаемые по запросу, только когда нужны. Преимущество перед CLAUDE.md: навык — это папка, где могут лежать поддокументы, скрипты и примеры. При загрузке в контекст агента попадает корневой файл SKILL.md, а агент сам решает, что ещё из папки ему понадобится. Выбрать навык можно двумя способами: из выпадающего списка Навык на панели ввода или слеш-командой (/имянавыка) прямо в поле ввода. Выбор привязывается к чату (пункт «Без навыка» отвязывает навык), а загрузка выполняется автоматически: требование доставляется обвязке внеполосным каналом, и само сообщение остаётся чистым. Кнопка Навыки в правой панели открывает полный диалог со всеми доступными навыками. Подробнее о навыках — в документации Навыков. Продолжить в новом чате «Продолжить в новом чате» переносит текущий разговор в отдельный чат, сохраняя контекст: агент помнит всю историю обсуждения. Удобно, когда тема разрастается и не хочется смешивать её с другой работой. Сделать это можно тремя способами: Ctrl+Enter (или Cmd+Enter) при вводе сообщения Ctrl+Click (или Cmd+Click) по кнопке отправки Кнопка Продолжить (иконка стрелки вверх) рядом с кнопкой отправки Если выбран навык или введена команда /имянавыка, префикс навыка автоматически попадёт в первое сообщение нового чата. Поле ввода очистится, а новый чат откроется в новой вкладке браузера. Селектор моделей Выпадающий список моделей показывает, какая нейросеть обрабатывает ваши запросы. Модели отличаются возможностями, скоростью и ценой — выбор зависит от задачи. Доступные модели Модели создаются и настраиваются на странице Модели. Поддерживается наследование настроек: модель glm-5-turbo автоматически берёт переменные от моделей glm-5 и glm — удобно, когда нужны несколько близких конфигураций. Модель можно создать из встроенного шаблона провайдера (Anthropic, z.ai, OpenRouter и др.) — шаблон сам подставит API-ключ, адрес, цены и флаги поведения. Переключение моделей Нажмите на выпадающий список и выберите другую модель — изменение применится к следующему отправленному сообщению. Селектор показывает текущую модель и подсвечивает изменения относительно предыдущего выбора. Подробнее о настройке моделей — в документации Моделей. Понимание ответов AI В чате встречаются разные типы сообщений — у каждого своё оформление и свой смысл. Разберём их по порядку. Сообщения пользователя Ваши сообщения отображаются с зелёной рамкой с правой стороны — так ваш ввод легко отличить от ответов агента. Текстовые ответы AI Обычные ответы агента имеют синюю рамку: это объяснения, рекомендации и общение. Текст поддерживает markdown — простые правила оформления (заголовки, списки, фрагменты кода, ссылки), знакомые по переписке и форумам. Чтение файлов Когда агент читает файл, его содержимое появляется в сворачиваемой панели. Нажмите на заголовок, чтобы развернуть или свернуть содержимое: чат остаётся чистым, а файлы можно посмотреть при необходимости. В панели виден путь к файлу и количество строк; большие файлы обрезаются, чтобы не перегружать чат. Правки файлов Когда агент меняет существующий файл, изменения показываются в виде diff — сравнения «было/стало»: добавленные строки зелёным, удалённые красным, неизменённые — как контекст. Видно точно, что изменилось. Нажмите на путь к файлу, чтобы открыть diff в увеличенном виде. Запись и создание файлов Когда агент создаёт новый файл или полностью перезаписывает существующий, полное содержимое показывается в блоке кода с подсветкой синтаксиса и номерами строк — удобно для чтения. Путь к файлу указан над блоком. Списки задач Списки задач отображаются как интерактивные чек-листы: у каждого пункта статус — ожидает, выполняется или завершён, обновления видны в реальном времени. Списки задач помогают следить за многошаговой работой и понимать, что ещё осталось. Подробнее — Плавающая панель задач ниже. Вопросы AI Когда агенту нужно уточнение, он показывает кликабельные карточки с вариантами ответа. Нажмите на карточку, чтобы отправить ответ, или напишите свой в поле ввода. Это ускоряет работу: меньше набора текста, проще выбор между вариантами и подтверждение действий. Запросы разрешений Сообщения, требующие вашего одобрения, выделяются жёлтой рамкой. Это запросы на потенциально опасные действия: удаление файлов, запуск команд, изменение базы данных. Каждый запрос включает: Чёткое описание того, что агент собирается сделать Конкретные файлы или ресурсы, которых это касается Кнопки «Разрешить» и «Запретить» Без вашего одобрения агент не продолжит. Это защитный механизм: изменения в вашей системе не происходят без вашего ведома. Сообщения об ошибках Ошибки и сбои показываются с красной рамкой: объясняется, что пошло не так, и часто предлагается, как исправить. Типичные случаи — файл не найден, доступ запрещён, неверная команда. Такие сообщения сворачиваются — нажмите, чтобы убрать с глаз; в истории чата они останутся свёрнутыми. Системные сообщения Служебные уведомления (серая рамка) информируют о фоновой активности: «обработка запроса», «операция выполнена успешно». Они не прерывают разговор, но держат вас в курсе. Действия с сообщениями Наведите курсор на любой ответ агента — появятся кнопки быстрых действий. Копировать Кнопка «Копировать» копирует весь текст сообщения в буфер обмена — включая блоки кода и форматирование. Удобно, чтобы перенести объяснение, фрагмент кода или команду в другое место. Продолжить Кнопка «Продолжить» (иконка воспроизведения) на любом ответе позволяет продолжить разговор с этого конкретного сообщения: в поле ввода появится приглашение продолжить с этой точки, «забыв» всё, что было сказано и сделано после неё. По сути — перемотка контекста разговора к выбранному сообщению. Просмотр JSON Кнопка «Просмотр JSON» показывает «сырые» данные сообщения в формате JSON — структурированном текстовом формате. Видна внутренняя структура ответа: метаданные, выполняемые действия и другие технические детали, которые скрыты в красивом виде. Пригодится для разбора, как агент обработал запрос, или для извлечения данных из ответов. Индикатор использования токенов Вверху чата есть индикатор расхода токенов — сколько «порций текста» израсходовано в текущей сессии. Токены — это единицы текста, за которые вы платите поставщику ИИ. Как читать индикатор Индикатор показывает два значения: Использовано — токенов потрачено в этой сессии на данный момент Лимит — максимум токенов для текущего расчётного периода Цветная заливка показывает заполненность: зелёный — большой запас, жёлтый — расход растёт, красный — приближаетесь к лимиту. Подробная разбивка Нажмите на индикатор, чтобы увидеть подробности: расход по каждому сообщению, отдельно входные токены (ваши сообщения) и выходные (ответы агента). Так видно, какие запросы стоят дороже всего, и можно расходовать токены разумнее. Индикатор лимитов z.ai При использовании провайдера z.ai под полем ввода отображаются две тонкие полоски расхода: за текущие 5 часов и за неделю. Каждая показывает процент от лимита: синяя при обычном расходе, жёлтая от 70%, красная на 100%. При наведении видна точная цифра и обратный отсчёт до сброса. Данные обновляются автоматически каждые 15 минут и при переключении вкладки браузера. Диалог квот z.ai Нажатие на полоску открывает подробный диалог с тремя типами лимитов: 5-часовой лимит токенов — процент расхода за последние 5 часов и обратный отсчёт до сброса Недельный лимит — процент расхода за текущую неделю и обратный отсчёт до сброса MCP-инструменты (месячный) — сколько вызовов внешних инструментов использовано из месячного лимита Внизу диалога — столбчатая диаграмма расхода токенов за 48 часов с разбивкой по моделям, а под ней сводка по каждой модели с общим числом токенов и вызовов. Индикатор z.ai работает только для моделей с ANTHROPIC_BASE_URL, указывающим на api.z.ai. Очередь сообщений Если отправить несколько сообщений подряд, они не выполняются все сразу, а встают в очередь над полем ввода и обрабатываются по одному. Так агент не перегружается одновременными запросами. Отображение очереди Очередные сообщения видны списком над полем ввода: у каждого — текст и позиция в очереди, а счётчик показывает, сколько сообщений ждёт обработки. Управление очередью С сообщениями в очереди можно делать три вещи: Пауза — остановить обработку очереди: текущее сообщение завершится, остальные подождут до возобновления Редактировать — поправить очередь до отправки: изменить текст, добавить детали, исправить опечатки Удалить — убрать сообщение из очереди совсем, не затрагивая остальные Очередь не только защищает агента от перегрузки, но и даёт вам время скорректировать или отменить запрос до его выполнения. Плавающая панель задач Когда агент составляет список задач для вашей сессии, вверху по центру экрана появляется плавающая панель — отдельное представление прогресса, не перегружающее чат. Статусы задач Панель показывает все задачи текущего списка и их статус: Ожидает — задача ещё не начата Выполняется — работа в процессе (подсвечивается) Завершена — выполнена успешно (отмечена) В каждый момент «выполняется» видна только одна задача — всегда понятно, чем агент занят сейчас. Обновления в реальном времени Панель обновляется сама: задачи переходят из «ожидает» в «выполняется» и «завершена» на глазах. Не нужно спрашивать «ты ещё не закончил?» — всё видно сразу. Сворачивание панели Кнопка сворачивания (шеврон) в заголовке убирает панель до маленькой вкладки на правом краю экрана. Нажмите на вкладку, чтобы снова развернуть панель. Сворачивание не влияет на работу: агент продолжает выполнять задачи, а статусы обновляются в фоне. Панель особенно полезна для многошаговых операций — рефакторинга кода, запуска тестов, сложных сборок — где важно видеть прогресс. Навигация Продолжайте изучение документации: Назад:Начало работы Далее:Файлы ### Лицензирование Все лицензии Pastukhov Agent — пожизненные: вы платите один раз и пользуетесь программой без подписок. Каждая лицензия включает 12 месяцев бесплатных обновлений; после этого обновления при желании продлеваются ещё на 12 месяцев со скидкой 50% от цены покупки. Лицензирование работает офлайн — ключ проверяется прямо на вашем компьютере, интернет и «обращение на сервер» не нужны, поэтому ваш ключ действительно пожизненный. Бесплатный период Вы можете бесплатно пользоваться программой 30 дней, а затем, если она вам подходит, купить лицензию. Даже после окончания бесплатного периода приложение остаётся полностью работоспособным — не будет работать только общение с моделями ИИ. Вас ничего не удерживает: все данные (чаты и настройки) хранятся в вашей базе данных (SQLite или локальная Postgres — компактные базы данных, которые приложение ведёт само), и вы можете в любой момент их выгрузить и перенести куда угодно. Персональная лицензия — 9 700 ₽ Лицензия для одного разработчика — например, для вас лично или для компании из одного человека. Один платёж 9 700 ₽ — и вы получаете неограниченное количество проектов на любом числе компьютеров и серверов. Действуют общие условия: пожизненная лицензия, 12 месяцев бесплатных обновлений, далее — продление со скидкой 50%. Корпоративная лицензия — 97 000 ₽ Для компании или команды: пользоваться программой могут все её разработчики, включая внешних подрядчиков — без ограничений по количеству людей, проектов, компьютеров и серверов. Один платёж 97 000 ₽ за пожизненную лицензию с 12 месяцами бесплатных обновлений и продлением обновлений со скидкой 50% по желанию. Сервисная лицензия — 297 000 ₽ Для тех, кто хочет запустить Pastukhov Agent как собственный сервис: неограниченное количество копий программы под вашим доменом плюс полный исходный код с правом изменять его как угодно — подстраивать оформление и брендинг под вашу компанию, тесно интегрировать с вашей инфраструктурой. Любой посетитель вашего домена может пользоваться программой как частью ваших сервисов. Один платёж 297 000 ₽ за пожизненную лицензию с 12 месяцами бесплатных обновлений. Совет: если хотите легко получать будущие обновления, меняйте только оформление и интеграцию — чем меньше изменений во внутренней логике, тем проще объединять их с новыми возможностями. Бесплатные лицензии В некоторых случаях я готов подарить лицензию бесплатно: вы нашли баг или уязвимость в безопасности любого из моих продуктов (бюджета на платные программы вознаграждений у меня, к сожалению, нет); вы предложили удачную идею по улучшению моих продуктов — кодить не обязательно, достаточно полезной идеи, и вы получите лицензию, если я включу её в план разработки; вы активно участвуете в open-source проектах (я люблю открытый код — просто у меня нет времени поддерживать свои продукты в этом формате); вы ведёте популярный блог, Telegram-канал или YouTube-канал о программировании, ИИ, аналитике, маркетинге, бизнесе, финансах или IT в целом (реклама не требуется — это полностью на ваше усмотрение); вы активный партнёр-аффилиат (продажи не обязательны, но нужен хоть какой-то контент о моих продуктах). Если что-то из этого про вас — просто напишите мне в Telegram, укажите имя и email, и я сгенерирую ваш персональный пожизненный лицензионный ключ. ### Установка WSL WSL (Windows Subsystem for Linux) — встроенная в Windows возможность запускать Linux без виртуальной машины и переустановки системы. Простыми словами: вы получаете «настоящий Linux» внутри Windows, с теми же командами и программами. Для Pastukhov Agent это удобный способ запустить его в контейнере Docker на компьютере с Windows: контейнер полностью изолирует программу от остальной системы, а работает всё на скорости родного Linux. Windows 11 В Windows 11 WSL 2 уже встроен — достаточно одной команды, всё остальное система сделает сама. Откройте терминал (PowerShell или Командная строка) и выполните: wsl --install Эта команда установит WSL 2 вместе с Ubuntu — популярным дистрибутивом Linux, который будет играть роль окружения. Перезагрузите компьютер, когда система попросит. После перезагрузки Ubuntu откроется сама — останется только придумать имя пользователя и пароль для Linux, как при первом включении нового компьютера. Установка Docker Теперь нужно установить Docker — технологию «контейнеров», в которой работает Pastukhov Agent. В терминале WSL выполните: # Подготовка (нужные вспомогательные программы) sudo apt update && sudo apt install -y ca-certificates curl # Добавление ключа и репозитория Docker sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Установка Docker Engine sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin # Запуск Docker sudo service docker start # Добавляем себя в группу docker, чтобы не вводить sudo при каждой команде sudo usermod -aG docker $USER После добавления в группу docker закройте и снова откройте терминал WSL — так изменения вступят в силу. Проверьте, что Docker работает: docker --version docker compose version Запуск Pastukhov Agent Создайте папку для вашего проекта и следуйте Руководству по настройке Docker — там по шагам показано, как настроить и запустить Pastukhov Agent. Файлы проекта можно открывать и из Windows (путь \\wsl$\Ubuntu\ в Проводнике), и из терминала WSL — это одна и та же папка, просто видимая с двух сторон. Windows 10 В Windows 10 WSL 2 требует один дополнительный шаг — включение платформы виртуальной машины. Откройте PowerShell от имени администратора и выполните: # Включение WSL dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart # Включение платформы виртуальной машины (обязательно для WSL 2) dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart Перезагрузите компьютер, снова откройте PowerShell и укажите WSL 2 как версию по умолчанию: wsl --set-default-version 2 Установите Ubuntu из Microsoft Store (найдите «Ubuntu») или выполните: wsl --install -d Ubuntu После установки откройте Ubuntu и задайте имя пользователя и пароль. Дальше — те же шаги установки Docker, что и для Windows 11 выше. Доступ к приложению Когда Pastukhov Agent запущен, откройте браузер в Windows и перейдите по адресу http://localhost:5001 (или тому порту, который вы указали при настройке). WSL 2 сам перенаправляет порты в Windows, поэтому ничего дополнительно настраивать не нужно. Если адрес по какой-то причине не открывается, узнайте IP-адрес WSL: # В терминале WSL hostname -I Затем откройте в браузере Windows адрес http://<этот-ip>:5001. Полезные советы Где хранить файлы проекта — диски Windows доступны из WSL по адресам /mnt/c/, /mnt/d/ и так далее. Но для скорости работы Docker лучше держать файлы проекта внутри файловой системы WSL (например, в ~/projects/), а не на дисках Windows. Автозапуск Docker — чтобы Docker стартовал сам при открытии WSL, добавьте sudo service docker start в файл ~/.bashrc или ~/.zshrc. Нужен графический интерфейс? — если удобнее управлять Docker мышью, используйте Docker Desktop: см. руководство по Docker Desktop в Windows. Docker Desktop сам интегрируется с WSL 2, и ручная установка Docker из этого раздела не понадобится. Подробности настройки Docker (файлы compose, переменные окружения, учётные данные) — в Руководстве по настройке Docker. Для установки через нативный установщик Windows — см. Руководство по установке Windows. ### Установка в Docker Docker — это технология «контейнеров»: приложение запускается в полностью изолированной среде, где для него уже подготовлены все нужные инструменты. Для каждого проекта — свой контейнер. Это безопасно: даже если модель ИИ начнёт вести себя некорректно, пострадать может только её контейнер, а не ваш сервер или компьютер. Сломанный контейнер пересоздаётся за секунды. Ещё один плюс: инструменты и настройки можно добавлять под конкретный проект, не раздувая универсальный образ. Минимальные системные требования Минимальный Docker-образ уверенно работает даже на однопроцессорном VPS с 2 ГБ оперативной памяти — вместе с другими сервисами вроде Apache, PHP, MySQL или nginx на живом сайте: 1 ГБ RAM — контейнер потребляет ~430 МБ в покое, до 800 МБ в активном режиме (зависит от вызываемых инструментов) 1 ядро CPU — ~6% в покое, до 80% одного ядра в активном режиме (зависит от вызываемых инструментов) Пользователи Docker Desktop: если вам удобнее графический интерфейс для Docker, воспользуйтесь инструкциями для вашей платформы: Windows Docker Desktop или Mac Docker Desktop. Я подготовил два готовых Docker-образа: maxpastukhov/agent:dev-latest и maxpastukhov/agent:min-latest. Разница — в составе инструментов, и от неё зависит размер. Dev-образ (2.8 ГБ) содержит Pastukhov Agent и всё необходимое для его разработки и сборки — в первую очередь набор для сборки .NET-приложений (ASP.NET Core SDK) и Node.js с инструментами сборки и проверки кода. Выбирайте его, если разрабатываете клиент-серверные приложения на ASP.NET Core и Node.js. Что входит в dev-образ ASP.NET Core 9.0 SDK — сборка и запуск .NET-приложений Node.js (LTS) — среда выполнения JavaScript с менеджером пакетов npm Python 3 — язык Python с pip и venv Claude Code CLI — консольный ИИ-агент, на базе которого работает Pastukhov Agent dotnet-ef — управление миграциями базы данных Entity Framework Core JetBrains ReSharper CLI — проверка и очистка кода .NET flake8 — проверка стиля кода Python Docker + Docker Compose — управление контейнерами изнутри контейнера git — система контроля версий mc — файловый менеджер Midnight Commander ncdu — анализ занятого места на диске sqlite3 — работа с базой данных SQLite из командной строки curl, wget, rsync, zip, unzip — сетевые утилиты и архиваторы Минимальный образ (570 МБ) содержит Pastukhov Agent с Python и всеми необходимыми для работы инструментами — это полнофункциональный образ для проектов, которым не нужна сборка .NET. Он заметно меньше, но всё необходимое для работы агента уже есть. Не хватает какой-то библиотеки? Попросите ИИ-агента установить её прямо в контейнере. Или соберите свой образ на его основе — под ваши задачи. Если нужна помощь с этим, напишите мне в Telegram. Что входит в минимальный образ ASP.NET Core 9.0 Runtime — запуск .NET-приложений (сборка не нужна, поэтому SDK нет) Node.js (LTS) — среда выполнения JavaScript с менеджером пакетов npm Python 3 — язык Python с pip и venv Claude Code CLI — консольный ИИ-агент, на базе которого работает Pastukhov Agent flake8 — проверка стиля кода Python Docker + Docker Compose — управление контейнерами изнутри контейнера git — система контроля версий mc — файловый менеджер Midnight Commander ncdu — анализ занятого места на диске sqlite3 — работа с базой данных SQLite из командной строки curl, wget, rsync, zip, unzip — сетевые утилиты и архиваторы В планах — образы под конкретные языки и фреймворки. Напишите мне в Telegram, какой стек вы используете, — мне несложно собирать и поддерживать новые образы, главное знать, что реально нужно вам на практике. Расширение образа собственными инструментами Оба образа уже содержат всё, что нужно для работы агента. Но если ваш проект использует особые языки или инструменты, вы можете собрать собственный образ на основе maxpastukhov/agent:min-latest — с теми инструментами, что нужны именно вам. Тогда каждый новый контейнер сразу запускается с готовой средой, а не доустанавливает пакеты при каждом пересоздании. Создание собственного Dockerfile В папке с вашим docker-compose.yml создайте файл Dockerfile — это «рецепт» сборки образа, в котором указано, какие пакеты добавить: FROM maxpastukhov/agent:min-latest # Add system packages RUN apt-get update && apt-get install -y \ ruby \ default-jdk \ && rm -rf /var/lib/apt/lists/* # Add Python packages RUN python3 -m pip install --break-system-packages \ fastapi \ pytest # Add Node.js packages (Node.js is pre-installed in min image) RUN npm install -g \ typescript \ @angular/cli # Add global tools RUN dotnet tool install -g Your.Tool.Name Затем укажите в docker-compose.yml свой образ вместо готового — Docker сам соберёт его из вашего Dockerfile: services: my_project: container_name: my_project build: . # builds from Dockerfile in this directory image: my-project:latest # tag for the built image ports: - "5001:80" volumes: - "./MyProject:/project" environment: - AGENT_LOGIN=agent # ... rest of your environment variables restart: unless-stopped working_dir: /app Соберите и запустите: docker compose up -d --build Флаг --build пересобирает ваш образ, если изменился Dockerfile; без него Docker использует последнюю готовую сборку. Или просто попросите модель Возиться с Dockerfile необязательно: можно просто попросить ИИ-агента установить нужные пакеты внутри уже запущенного контейнера — у него есть доступ sudo, и он умеет ставить всё через apt, pip или npm. Минус такого способа в том, что при пересоздании контейнера установки теряются — собственный образ делает их постоянными. services: pastukhov_agent_demo: # переименуйте в соответствии с названием вашего проекта container_name: pastukhov_agent_demo # переименуйте в соответствии с названием вашего проекта image: maxpastukhov/agent:dev-latest ports: - "5001:80" volumes: - "./DemoProject:/project" # замените ./DemoProject на папку с вашим проектом environment: - AGENT_LOGIN=agent - AGENT_PASSWORD=5694d08a2e53ffcae0c3103e5ad6f6076abd960eb1f8a56577040bc1028f702b # SHA256-хеш пароля `agent` - JWT_SECRET_KEY= # должна быть уникальная, сложная для guessing случайная строка (минимум 32 символа). Любой, кто знает этот ключ, может генерировать валидные токены аутентификации. Если опущено, ключ генерируется автоматически, но теряется при пересоздании контейнера, заставляя всех пользователей перелогиниваться - ASPNETCORE_ENVIRONMENT=Production - ASPNETCORE_URLS=http://+:80 # порт внутри контейнера - AGENT_PROJECT_PATH=/project # путь к проекту внутри контейнера - AGENT_GIT_USER_NAME=User # ваше имя для git-коммитов - AGENT_GIT_USER_EMAIL=me@gmail.com # ваш email для git-коммитов - AGENT_GIT_URL=https://github.com/pastukhov/DemoProject.git # замените на git-URL вашего проекта - AGENT_GIT_LOGIN= # ваш git-логин - AGENT_GIT_PASSWORD= # ваш personal access key для git # опционально: хранение данных в Postgres, а не в локальном SQLite. Рекомендуется иметь отдельные базы для каждого из ваших проектов. # - AGENT_DATABASE=Server=postgres;Port=5433;User Id=code;Password=code;Database=code;Pooling=false;Timeout=600;CommandTimeout=600;KeepAlive=600; # опционально: отправка статистики чатов в Clickhouse для визуализации в Grafana # - AGENT_CLICKHOUSE_URL=Host=clickhouse;Port=8127;Protocol=http;Database=code;Username=code;Password=code # опционально: ваш лицензионный ключ, если он есть # - AGENT_LICENSE= restart: unless-stopped working_dir: /app Это полный готовый пример запуска — замените в нём имя проекта, папку, git-адрес и учётные данные на свои. ports — это внешний и внутренний порты: по первому приложение открывается в браузере, второй — порт внутри контейнера. volumes — папка проекта: она подключается в контейнер, поэтому все файлы и база данных сохраняются между перезапусками. Docker CLI с файлом .env Запустить Pastukhov Agent можно и напрямую командой docker run, вынеся переменные окружения в файл .env. Так секреты не попадают в файл конфигурации или командную строку. Создайте файл .env рядом с папкой вашего проекта: # .env AGENT_LOGIN=agent AGENT_PASSWORD=5694d08a2e53ffcae0c3103e5ad6f6076abd960eb1f8a56577040bc1028f702b JWT_SECRET_KEY= ASPNETCORE_ENVIRONMENT=Production ASPNETCORE_URLS=http://+:80 AGENT_PROJECT_PATH=/project AGENT_GIT_USER_NAME=User AGENT_GIT_USER_EMAIL=me@gmail.com AGENT_GIT_URL=https://github.com/pastukhov/DemoProject.git AGENT_GIT_LOGIN= AGENT_GIT_PASSWORD= Затем запустите контейнер: docker run -d \ --name pastukhov_agent_demo \ --env-file .env \ -p 5001:80 \ -v ./DemoProject:/project \ --restart unless-stopped \ -w /app \ maxpastukhov/agent:dev-latest Флаг --env-file считывает все переменные из файла. Отдельные значения можно переопределить дополнительными флагами -e — например, -e AGENT_LICENSE=your-key. Автоматически генерируемые учетные данные Если не задавать переменные окружения AGENT_LOGIN и AGENT_PASSWORD, приложение само создаст временные учётные данные при запуске: логин будет agent, а случайный пароль появится в консоли контейнера. Посмотреть его можно командой: docker logs pastukhov_agent_demo Такие учётные данные действуют до перезапуска контейнера. На странице входа появится уведомление о временных учётных данных — и предложение задать постоянные через переменные окружения. Генерация хеша пароля В переменную AGENT_PASSWORD нужно записывать не сам пароль, а его SHA256-хеш — «отпечаток» пароля, по которому нельзя восстановить оригинал. Хранить пароль в открытом виде в файлах конфигурации небезопасно — достаточно одного взгляда на файл, чтобы его украсть. На странице входа есть встроенный генератор: нажмите ссылку «▾ SHA256-генератор» под кнопкой входа. Он работает полностью на вашем устройстве: введите пароль, скопируйте хеш и вставьте его в конфигурацию окружения. Рекомендации по безопасности Файл .pastukhov/models.yml внутри проекта предназначен для сохранения в системе контроля версий — чтобы одинаковые настройки были на каждой установке. А вот секреты (API-ключи, лицензионные ключи и т.п.) коммитить не стоит: передавайте их как переменные окружения в Docker-контейнере и ссылайтесь на них по имени через синтаксис $VARIABLE_NAME в models.yml. Полный список переменных и принципы работы — на странице Модели: # .pastukhov/models.yml environments: production: variables: API_KEY: $MY_API_KEY # resolved from the container's environment at runtime LICENSE_KEY: $MY_LICENSE_KEY # not committed to git PUBLIC_URL: https://example.com # non-sensitive values are fine to commit directly Так фактические значения секретов остаются только в конфигурации окружения Docker (compose-файл, .env или флаги -e), а models.yml безопасно попадает в систему контроля версий. Размещение в подпапке сайта (nginx) Pastukhov Agent — веб-приложение, поэтому его можно разместить в подпапке уже существующего сайта — отдельный домен или поддомен не обязателен. С любого устройства приложение открывается как обычно, а на телефон или рабочий стол его можно установить как приложение. Размещение настраивается через nginx с реверс-проксированием в нужную подпапку: location /agent/ { proxy_pass http://127.0.0.1:5001/; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # SignalR WebSocket } location /api/ { proxy_pass http://127.0.0.1:5001; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; } Переменная окружения DEV_BASE_PATH задаёт префикс пути, если часть ресурсов приложения должна ссылаться на подпапку. Благодаря ей один и тот же экземпляр можно держать и на корневом домене, и внутри любого сайта. SSL-сертификаты Pastukhov Agent умеет выпускать бесплатные сертификаты Let's Encrypt прямо из интерфейса — без certbot и ручных манипуляций. Откройте страницу /ssl в приложении, укажите домен и email, и сертификат будет получен автоматически. Подробнее — на странице SSL-сертификаты. ### Установка в Windows Минимальные системные требования 1 ГБ оперативной памяти — программа в покое занимает ~430 МБ, в активной работе до 800 МБ (зависит от того, какие инструменты она вызывает) 1 ядро процессора — ~6% нагрузки в покое и до 80% одного ядра в активной работе (зависит от вызываемых инструментов) Последняя версия Используете в первый раз? Скачайте последнюю версию — ежедневную сборку самого свежего кода и функционала. Скачать (Mb) Архив старых версий Полный архив всех прошлых версий — пригодится, если в свежей сборке что-то пойдёт не так: вы всегда сможете откатиться на предыдущую. Учтите: старые версии идут со старыми демо-ключами, поэтому пробный период в них короче. Открыть архив Предпочитаете Docker? Запустите Pastukhov Agent в Docker Desktop на Windows (на базе WSL 2) — контейнер полностью изолирует программу от остальной системы. Открыть инструкцию по Docker Desktop для Windows Важное замечание Экземпляры для каждого проекта Pastukhov Agent работает по принципу «один проект — один экземпляр программы». Каждый экземпляр полностью изолирован от остальных: у проекта свои файлы, свои настройки и свой адрес. Это упрощает жизнь — вы запускаете и останавливаете ровно тот экземпляр, который нужен, не затрагивая остальные. По умолчанию приложение устанавливается вместе с демо-проектом — готовым примером на нескольких языках программирования, чтобы вы сразу увидели все возможности: от разработки до сборки, развёртывания, автоматического исправления ошибок и управления навыками. Если запустить приложение без своих настроек, вы попадёте именно в демо-проект с демо-навыками. Как настроить свой проект Для своей папки создайте .bat-файл, который задаёт для неё переменные окружения, или ярлык, передающий их через командную строку. Переменные окружения — это технические параметры запуска: вы прописываете их один раз, и программа применяет их автоматически каждый раз. Запоминать их не нужно — просто откройте чат с агентом, передайте ему ссылку на документацию по настройке (pastukhov/agent/docs.md или файл любой модели по вашему выбору) и попросите создать такой файл или список параметров командной строки для вашего проекта. Общие навыки Навыки — это свод правил, по которым агент работает. Они хранятся в папке .claude/skills/ внутри проекта и сохраняются в системе контроля версий вместе со всем кодом — у каждого проекта свои навыки. Демо-проект поставляется с готовыми навыками для планирования и редактирования навыков, которые удобно использовать как шаблоны для своих. Установка Ниже — пошаговый обзор мастера установки. Большую часть настроек мастер делает сам: создаёт файл конфигурации демо-проекта и ярлыки, вручную заполнять нужно лишь пару шагов. Эта справка пригодится и офлайн — например, когда интернет недоступен, а онлайн-документация под рукой. Порт — номер, по которому приложение будет открываться в браузере (например, http://localhost:5101). Установщик подставляет порт демо-проекта — можете оставить как есть. Каждому вашему проекту можно назначить свой порт, они не будут мешать друг другу. Путь к демо-проекту — папке с примерами, чтобы сразу увидеть возможности программы. Можете оставить путь по умолчанию. Свои проекты вы запустите точно так же: у каждого будет своя папка, заданная переменными окружения. Логин и пароль — ваши данные для входа в приложение, как в личный кабинет. Они сохраняются в системе и по умолчанию действуют для всех ваших проектов. Обновить их можно, запустив установщик повторно. Хотите другой логин и пароль для отдельного проекта — задайте их через переменные окружения этого проекта. Лицензионный ключ — если он у вас уже есть. Ключ хранится в системе и автоматически применяется ко всем проектам. Если ключа нет — оставьте поле пустым: установщик выдаст пробную лицензию, которой хватит, чтобы всё попробовать. Свою лицензию для отдельного проекта тоже можно задать. Ярлыки на рабочем столе и в меню «Пуск» — по желанию. Помните: ярлыки открывают демо-проект, а для своей папки нужно настроить отдельный запуск с переменными окружения. Финальный шаг — сводка всех параметров. Проверьте настройки и подтвердите установку. Установка завершена. Приложение откроется в браузере — войдите под логином и паролем, которые вы задали, и начинайте работать с демо-проектом. ### Pastukhov MultiAgent Централизованное управление флотом ИИ-агентов на любом количестве серверов Подключает любое количество серверов (Linux) и управляет ими Docker на серверах устанавливается и настраивается сам Агент запускается в один клик: установка, старт, стоп, перезапуск Уже работающих агентов можно подключить без переустановки Адреса и порты распределяются сами — конфликтов не будет Общая база данных для всех агентов сервера Встроенное хранилище кода (Git) с автосинхронизацией Чаты всех агентов — в одном окне Рабочие пространства: живые чаты агентов сеткой на одном экране Общая аналитика по всем агентам Промпт-очередь, задачи по расписанию, боты, MCP и навыки — прямо в чатах агентов Собственный ассистент (Own Agent): панель чата и боковая панель на каждой странице Балансы и лимиты аккаунтов ИИ видны в одном месте Библиотека готовых сервисов — ставятся на сервер по шаблону Все приложения — на одном домене: у каждого своя подпапка, у сервера — общая закладка Agent API: другим агентам можно доверить управление системой — по ключу доступа Полностью на русском языке Пароли и ключи доступа хранятся в зашифрованном виде Обновления в реальном времени — перезагружать страницу не нужно Файлы серверов — прямо из браузера Резервные копии данных делаются автоматически Всё работает на ваших серверах — никаких внешних облаков Тёмная и светлая темы, удобно с телефона Каталог продуктов: MultiAgent, Research, Analytics, Data и Proxy — с готовым агентом под каждый Защищённое соединение (HTTPS): сертификаты самоподписанные, свои или от Let's Encrypt Установка в Docker Документация FAQ Лицензирование Установка на Windows Управление серверами Сервер добавляется за минуту: адрес, пользователь, пароль или ключ Все нужные программы ставятся и настраиваются сами Автоматическая проверка сервера: доступ, программы, папки, базы, бэкапы Общие папки проектов и данных для всех агентов сервера Адреса приложений и сертификаты настраиваются из интерфейса, без ручных правок на сервере Домашняя страница сервера (Heimdall) — в корне, со своим входом и закладками Подробнее Развёртывание агентов Агент создаётся просто: выберите сервер, приложение и ответьте на вопросы Полное управление: установить, запустить, остановить, перезапустить, удалить Перед запуском видно, что именно будет установлено, — с проверкой Журналы, нагрузка и проверка подключения — прямо из интерфейса Готовые продукты (Research, Analytics, Data, Proxy) ставятся вместе со своим агентом — из того же окна Обновления проходят без простоя: MultiAgent дожидается паузы в чатах и сам перезапускает агента на новой версии Подробнее Централизованные чаты Все чаты всех агентов в одном списке, с фильтрами Сообщения отправляются без входа в каждый агент отдельно По каждому сообщению: расход, стоимость, скорость Всё обновляется в реальном времени Промпт-очередь, задачи по расписанию, боты, MCP-серверы и навыки — не выходя из чата Подробнее Рабочие пространства Чаты нескольких агентов — сеткой на одном экране (1–6 колонок) Сводная статистика: сообщения, расходы, стоимость, изменения В каждой карточке — мини-чат с отправкой сообщений Любой чат можно развернуть на весь экран Подробнее Собственный ассистент (Own Agent) Свой агент — рядом с вашими задачами MultiAgent может получить своего постоянного ассистента — отдельного агента, с которым вы общаетесь встроенным чатом, не переключаясь между программами. Панель чата доступна с любой страницы: поле ввода, выбор модели и навыка, голосовой ввод. В боковой панели — блок со сводкой активных чатов, очередью заготовленных запросов и кнопками Prompts и Chats. Подключается ассистент один раз, при запуске: задали адрес и ключ — и он уже здесь. Ключ хранится только на сервере и не попадает в браузер. Очередь запросов у ассистента — как своя: заготовили строки заранее (текст + модель + навык), отправили вручную или включили автоотправку — агент сам разберёт очередь. Есть голосовой ввод и звуковые уведомления о фоновых чатах. Работает это в обе стороны: ассистент не только отвечает вам, но и сам может управлять MultiAgent — создавать серверы, разворачивать агентов и продукты, следить за их состоянием. Вам достаточно один раз выдать ему ключ. Подключение один раз — адрес и ключ агента задаются при запуске, ключ не попадает в браузер Панель чата и блок в боковой панели на всех страницах: поле ввода, модели и навыки, живая сводка чатов Промпт-очередь с автоотправкой, голосовой ввод и звуки чатов Подробнее Задачи, боты и промпты в чатах Возможности агента — прямо из чата Агент умеет работать сам, без вашего участия: запускать задачи по расписанию (например, каждое утро собирать нужные данные), отвечать в мессенджерах через ботов и подключать внешние сервисы. Всё это открывается прямо со страницы агента в MultiAgent — журнал выполненных задач, боты, навыки и очередь заготовленных запросов — переключаться между программами не нужно. Сами данные живут у агента: MultiAgent только показывает их и передаёт команды. Всё, что происходит на агенте, видно сразу, без перезагрузки страницы: запустилась задача, изменилась очередь запросов, пришло новое сообщение. Отправка новых сообщений проверяет лицензию: если она недействительна, появится предложение её продлить. Работа по расписанию, боты в мессенджерах и внешние сервисы — всё со страницы агента, без переключения окон Заготовьте запросы заранее — агент отправит их сам, по очереди, или по вашей команде Все настройки и данные — собственные у агента: MultiAgent ничего не хранит у себя Подробнее Agent API — автоматизация из других агентов Другие агенты управляют MultiAgent сами Agent API — это способ дать другому агенту право управлять MultiAgent по секретному ключу X-API-Key: он сам создаёт серверы, разворачивает агентов и инструменты и следит за их состоянием. Представьте, что настройку системы вы доверили надёжному помощнику — вам больше не нужно каждый раз нажимать кнопки в браузере, ключ даётся один раз. Помощнику не нужна отдельная инструкция: он сам запрашивает у MultiAgent список доступных команд и видит, как каждой пользоваться. Долгие операции устроены просто — запустил и время от времени проверяешь, закончилось ли. Всё, что делает помощник, видно в интерфейсе как обычные операции — вы всегда знаете, что происходит. Запускать произвольные программы агент не может, только заранее предусмотренные действия, а чужие без вашего ключа доступ не получат. Доступ только по секретному ключу X-API-Key, который выдаёте вы Помощник сам узнаёт доступные команды — отдельная инструкция не нужна Только штатные действия, без произвольных программ; всё видно в интерфейсе Подробнее Каталог продуктов Пять продуктов — в несколько кликов MultiAgent умеет ставить другие продукты семейства — готовые приложения со всеми настройками: Исследовательский агент (Research), Аналитический (Analytics), Агент данных (Data), Прокси-агент (Proxy). Вы выбираете продукт — MultiAgent сам создаёт приложение, подготавливает для него своего агента и связывает их. Никакого ручного заполнения: пароли и адреса генерируются сами. Где нужно, автоматически поднимаются общая база данных и общая папка — документы для Research, скрипты для Data. Расширяется каталог просто: добавили папку с шаблоном продукта — и он сразу появился в интерфейсе. MultiAgent (6000), Research (6010), Analytics (6020), Data (6030), Proxy (6040) Учётные данные генерируются сами, приложение и агент сразу знают друг о друге Общая база и общие папки (документы, скрипты) настраиваются автоматически Подробнее Установка на Windows Мастер установки вместо Docker MultiAgent ставится на Windows как обычная программа — мастер установки проводит по шагам: порт (по умолчанию 3991), папка данных, вход, лицензия. Docker и дополнительное ПО на этом компьютере не нужны — только сам Windows, а Linux-серверы подключаются по SSH, и всё необходимое MultiAgent установит на них сам. Все данные — база, ключи, сертификаты, лицензия — хранятся в одной папке и переживают переустановку и удаление программы. Там же можно включить работу с базой PostgreSQL, программный API и своего ассистента. Мастер установки: порт 3991 по умолчанию, ярлыки и меню «Пуск» Папка данных сохраняется при переустановке и удалении — ничего не потеряется Вход, лицензия и все подключения настраиваются в мастере Подробнее Централизованная аналитика Все чаты всех агентов собираются в одну базу Графики расходов, объёма работы и изменений Фильтры по агентам и времени — от часов до месяцев Видно, когда агенты работают активнее всего Подробнее Учёт аккаунтов поставщиков ИИ Все аккаунты поставщиков ИИ — в одном списке Балансы и лимиты обновляются в реальном времени Вход в аккаунт Codex — прямо из интерфейса Аналитика расходов по каждому поставщику и аккаунту Подробнее Инструменты и сервисы Библиотека готовых сервисов для ваших задач Сервис ставится на любой сервер, параметры вводятся по шагам Параметры: текст, секреты, числа, варианты выбора Полное управление запущенными сервисами Подробнее Все приложения на одном домене Один адрес для всего Вместо того чтобы давать каждому агенту и сервису отдельный адрес и сертификат, вы даёте серверу один домен — и все приложения на нём живут в своих подпапках: https://вашсервер/агент/, https://вашсервер/research/. Запомнить надо один адрес, а не десяток. MultiAgent сам создаёт и обновляет веб-сервер, который раздаёт приложения, — при развёртывании нового агента или сервиса его подпапка появляется автоматически. Вот что получается на практике: агенты и продукты получают свои подпапки сами, инструменты с веб-интерфейсом — тоже, а свои собственные маршруты вы добавляете вручную, когда нужно (например, привязать к подпапке любой внешний адрес). Всё это живёт на одном домене, а служебные адреса самого MultiAgent защищены от случайных совпадений. Защищённое соединение настраивается там же: можно использовать самоподписанный сертификат, свои файлы сертификата или сертификат Let's Encrypt — он выпускается автоматически, если у вас есть домен. Приложения соединяются между собой по внутренней сети серверов, а если одно из них упадёт, пострадает только его подпапка — остальные продолжают работать. Один домен на сервер: каждый агент, продукт и инструмент получает свою подпапку, а сводный список приложений — в корне Всё настраивается само: развернули агента или сервис — его подпапка появилась Три вида маршрутов: агенты и продукты, инструменты с веб-интерфейсом и свои собственные — на любой адрес Сертификаты: самоподписанные, свои или Let's Encrypt — HTTPS включается одной настройкой Приложения общаются по внутренней сети; упавший сервис не задевает остальные подпапки Подробнее Безопасность и резервное копирование Пароли и ключи доступа хранятся в зашифрованном виде Программный API и свой ассистент включаются только по секретному ключу — по умолчанию выключены Данные серверов копируются в бэкап автоматически Лицензии агентов хранятся и переиспользуются без ручной работы Подробнее Установка в Docker Документация FAQ Лицензирование Установка на Windows Бесплатный период Бесплатное использование в течение 30 дней — пробная лицензия уже включена в программу. Даже после истечения бесплатной лицензии приложение остаётся полностью функциональным: блокируются только создание новых серверов и агентов и отправка новых сообщений. Никакой привязки — вы можете вынести свои данные в любую базу. Персональная лицензия Любое количество серверов и агентов для одного человека. 9 700 ₽ — единоразовый платёж за пожизненную лицензию. 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Ключ работает без интернета и действует всю жизнь. Корпоративная лицензия Любое количество серверов и агентов для всех сотрудников компании или команды, включая внешних подрядчиков. 97 000 ₽ — единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Ключ работает без интернета и действует всю жизнь. Сервисная лицензия Любое количество установок под вашим доменом + полный исходный код с правом менять его как угодно, обновлять оформление или брендинг под вашу компанию и интегрировать в вашу инфраструктуру. Продуктом может пользоваться любой посетитель вашего домена как частью ваших сервисов. 297 000 ₽ — единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Чтобы обновления устанавливались легко, рекомендую менять только брендинг и интеграцию — тогда слияние с новыми возможностями и исправлениями пройдёт гладко. Бесплатные лицензии В некоторых случаях я готов подарить бесплатную лицензию: если вы нашли баг или уязвимость безопасности в любом из моих продуктов (у меня буквально нет бюджета на платные баг-баунти, к сожалению); если вы предложили дельную идею по улучшению моих продуктов (кодить не обязательно, достаточно полезной идеи — вы получите лицензию, если я включу её в план разработки); если вы активный контрибьютор open-source проектов (я люблю open-source, просто у меня нет времени поддерживать свои продукты как open-source); если вы ведёте популярный блог, Telegram-канал или YouTube-канал о программировании, AI, аналитике, маркетинге, бизнесе, финансах или IT в целом (упоминание или реклама не требуются, это полностью на ваше усмотрение); если вы активный партнёр-аффилиат (продажи не обязательны, но у вас должен быть хотя бы какой-то контент, посвящённый моим продуктам). Если что-то из перечисленного про вас, просто напишите мне в Telegram. Укажите имя и email, и я сгенерирую ваш персональный пожизненный лицензионный ключ. ### FAQ MultiAgent Чем MultiAgent отличается от Agent? Pastukhov Agent работает с одним проектом в изолированном контейнере. MultiAgent — центральный пульт над флотом экземпляров Agent на любом количестве серверов: развёртывание, обновление, контроль, аналитика и бэкапы — всё из одного окна. Agent решает задачи, MultiAgent управляет армией агентов. Какие требования к управляемым серверам? Linux (Ubuntu/Debian) с SSH-доступом и правами root/sudo. Docker и все зависимости установит сам MultiAgent — одной кнопкой прямо из интерфейса. Ничего ставить вручную не нужно. Где хранятся данные? Сам MultiAgent хранит всё в volume /data: базу SQLite (или PostgreSQL, если указан MULTIAGENT_DATABASE), ключи шифрования и лицензию. Данные на управляемых серверах лежат в настраиваемых папках — агенты, данные, проекты и инструменты, по умолчанию под /root. Как обеспечивается безопасность? SSH-ключи, пароли агентов и API-ключи шифруются в базе — ключи шифрования хранятся в /data/keys и не покидают сервер. Программный доступ (Agent API) закрыт ключом X-API-Key и работает только если он явно задан переменной окружения MULTIAGENT_API_KEY; вход для человека и программный доступ разделены. Проверка входа пользователей — JWT-токенами сроком 90 дней. Можно ли управлять уже работающими агентами? Да. MultiAgent умеет импортировать агентов: он сканирует сервер, находит существующие контейнеры агентов и регистрирует их без пересоздания. Все чаты, проекты и данные остаются на месте. Нужен ли отдельный домен каждому агенту? Нет. На каждом сервере MultiAgent ставит свой Nginx-контейнер (agents-nginx), который раздаёт все приложения по подпапкам одного домена: каждый агент, продукт и инструмент получает адрес вида https://ваш-домен/имя/. Домен и SSL-сертификат настраиваются один раз — для подпапок ничего отдельно настраивать не нужно, а в корне / nginx живёт домашняя страница сервера (Heimdall) с карточками приложений. Подробнее — на странице Nginx-роутинг. Как работает Nginx-роутинг и нужен ли свой сертификат? Сертификаты трех видов выдаются во вкладке Nginx страницы сервера: самоподписанный (по умолчанию), собственная пара PEM или Let's Encrypt через ACME — для последнего нужен ваш домен. Без домена достаточно самоподписанного: браузер один раз попросит подтвердить его, дальше соединение шифруется. Если домен есть — удобнее Let's Encrypt: он выдаётся по webroot-методу через сам nginx и автоматически обновляется при обновлении конфигурации маршрутов. Что такое свой агент (Own Agent)? Свой агент — внешний Xedant Agent, которого MultiAgent подключает переменными окружения AGENT_API_URL и AGENT_API_KEY. Его интерфейс встроен в каждую страницу: блок в боковой панели со сводкой чатов, глобальный панель чата, очередь промптов и голосовой ввод. Обратное направление — агент управляет MultiAgent — работает через программный интерфейс по ключу MULTIAGENT_API_KEY. Подробнее — на странице Собственный ассистент. Что такое Agent API? Agent API — программный интерфейс /api/agent/* для автоматических клиентов, закрытый ключом X-API-Key (переменная MULTIAGENT_API_KEY хранит его отпечаток SHA-256). Через неё внешний агент управляет серверами, агентами, инструментами и продуктами; запрос GET /api/agent возвращает каталог всех операций с описаниями. Без переменной интерфейс отвечает 503 Agent API is disabled («API выключен»). Подробнее — на странице Agent API. Что такое домашняя страница сервера (Heimdall)? Домашняя страница сервера — единая закладка, с которой открываются все приложения сервера. Она устанавливается из вкладки Heimdall страницы сервера и раздаётся в корне / nginx: у каждого сервера может быть своя страница со своим входом, а карточки приложений синхронизируются из базы MultiAgent автоматически. Подробнее — на странице Домашняя страница сервера. Чем задачи и боты отличаются от прежних триггеров и менеджеров? Прежние менеджеры и триггеры (cron, вебхуки, email, Telegram) убраны из продукта. Вместо них в чатах агентов живут задачи по расписанию, боты и очередь промптов — а также MCP-серверы и навыки. Это собственные сущности агента: MultiAgent передаёт их, а не переизобретает — диалоги открываются из страницы агента и работают через его же API. Подробнее — на странице Задачи и боты. Как установить MultiAgent на Windows? Мастером установки PastukhovMultiAgent-Setup-<версия>.exe: приложение работает локально на http://localhost:3991 с папкой данных %LOCALAPPDATA%\Pastukhov\MultiAgent\data — Docker, WSL и .NET не нужны. Управляемые серверы остаются Linux-машинами, подключаемыми по SSH. Подробнее — на странице Установка на Windows. Работает ли MultiAgent без интернета? MultiAgent полностью self-hosted: сервер, база, Git-сервер Forgejo и файлы — всё внутри вашей инфраструктуры. Наружу нужен только доступ к API моделей и, при обновлении, к Docker-реестру. Почему не open-source? Я уже пробовал запускать и поддерживать бесплатные продукты — больше 20 лет назад. Это того не стоит — объём поддержки намного выше, при этом нет ресурсов на дальнейшее развитие. Я предпочитаю иметь гораздо меньше пользователей, которые действительно любят продукты и готовы за них платить. Ещё одна важная причина — контроль: я предпочитаю сохранять продукты простыми и минималистичными. С открытым исходным кодом я ожидаю тонны AI-сгенерированных PR с функциями, которые я намеренно избегал из-за их сложности и плохих решений. ### Документация MultiAgent Начало работы Установка и первый вход, добавление первого сервера и агента. Серверы Подключение по SSH, установка Docker, папки, Postgres, Forgejo, Nginx-роутинг, Heimdall, бэкапы. Агенты Мастер создания, жизненный цикл, graceful updates, продукты, адрес по подпапке nginx, compose.yml. Свой агент (Own Agent) Собственный ассистент: блок в боковой панели, панель чата, очередь промптов, голосовой ввод. Задачи и боты Задачи по расписанию, боты, промпт-очередь, MCP-серверы и навыки — в чатах агентов. Чаты Централизованные чаты всех агентов, статистика, обновления в реальном времени. Продукты Готовые приложения-агенты: Research, Analytics, Data, Proxy и MultiAgent — со связанным агентом. Инструменты Шаблоны Docker-сервисов, развёртывание на серверах, жизненный цикл. Рабочие пространства Сетки живых чатов, агрегированная статистика, выдвижные панели. Аналитика Сводка чатов, графики, фильтры, распределения по времени. Аккаунты Учёт LLM-аккаунтов, квоты и балансы, вход в Codex. Nginx-роутинг На каждом сервере свой Nginx-контейнер: агенты, продукты, инструменты и кастомные маршруты по подпапкам, сертификаты, Heimdall в корне. Домашняя страница сервера Heimdall в корне / nginx: карточки приложений сервера, собственный вход. Agent API Программный API /api/agent/* с X-API-Key: серверы, агенты, инструменты, продукты, операции. Безопасность и лицензирование Шифрование секретов, программный API (Agent API), бэкапы через rsync, лицензии агентов. Установка Docker-образ, переменные окружения, свой агент, первый вход, добавление сервера. Установка на Windows Мастер установки для Windows: порт 3991, папка данных, подключение к серверам по SSH. ### Agent API Agent API — это способ управлять MultiAgent без интерфейса. Другие программы и агенты получают доступ к серверам, агентам, инструментам и продуктам по набору команд, закрытых ключом. То, что вы делаете кнопками в браузере, через API можно поручить автоматике: например, ваш ассистент сам создаёт сервер, разворачивает новый агент и проверяет, что он работает. Набор команд повторяет возможности интерфейса, но безопаснее: секреты принимаются только «на запись», произвольных команд нет, а долгие операции запускаются по отработанной схеме «запустил — проверяй». Список доступных команд программа получает из самого API — отдельная документация не нужна. Ключ и проверка доступа Каждый запрос к /api/agent/ должен нести ключ в заголовке X-API-Key. Сам ключ на сервере не хранится: в переменной окружения MULTIAGENT_API_KEY лежит его «отпечаток» (SHA-256 хеш — короткая строка, по которой нельзя восстановить ключ). При каждом запросе сервер вычисляет отпечаток присланного ключа и сравнивает с сохранённым. Переменная не задана — весь API отвечает 503, «Agent API is disabled»: API выключен целиком; Неверный или отсутствующий ключ — 401 Unauthorized (попытка записывается в журнал с адресом клиента); Поверхности раздельны — ключ интерфейса не открывает API, а API-ключ не открывает браузерные страницы. Будьте внимательны к окончанию адреса: /api/agent/... — программный интерфейс, доступ по ключу; /api/agents/... — обычный интерфейс с входом по учётной записи. Каталог GET /api/agent Первый запрос, который стоит сделать, — к адресу GET /api/agent: он возвращает полный каталог команд. В нём описано, чем управляет MultiAgent, как устроена проверка ключа (что означают ошибки 503 и 401), базовые понятия (сервер, агент, продукт), как протекают долгие операции и как передаются секреты, а также каждая команда: метод, адрес, поля запроса и форма ответа. Каталог собирается из кода, поэтому всегда актуален — тому, кто знает только адрес и ключ, отдельная документация не нужна. Долгие операции: запустил — проверяй Долгие операции — установка Docker, развёртывание агентов и инструментов — выполняются одинаково. Команда запуска сразу возвращает номер операции, а программа периодически спрашивает статус, пока не увидит «готово» или «сбой». Это как заказ в ресторане: вам не нужно ждать у плиты — вы получаете номер заказа и возвращаетесь, когда блюдо готово. Повторно запускать команду не нужно — операция уже идёт. POST /api/agent/servers # создали сервер → 202 { "operationId": "op_123", "message": "..." } GET /api/agent/operations/op_123 # проверка статуса → { "operationId": "op_123", "kind": "...", "status": "running", "lines": [{ "text": "...", "isError": false }], ... } GET /api/agent/operations/op_123 # конечное состояние → { "operationId": "op_123", "status": "done", "lines": [...], ... } Ответ на запрос статуса содержит lines — строки прогресса операции по порядку, а последняя строка называет исход. Записи операций живут в памяти и не вечно: неизвестный или истёкший номер операции отвечает 404 с подсказкой проверить текущее состояние ресурса. Так же проверяются операции, запущенные из браузера. Секреты — только запись Ни один ответ API не содержит значение секрета — паролей, приватных ключей, токенов. Они принимаются при создании и обновлении, хранятся зашифрованными и наружу выдаются только косвенные признаки: задан ли пароль (флаг hasPassword), есть ли приватный ключ (hasPrivateKey), имена дополнительных переменных, маскированные значения. Возможностей «подсмотреть» секрет через API нет намеренно: ни показа пароля сервиса, ни раскрытия секретов агента, ни значений дополнительных переменных, ни смены пароля менеджера, ни генерации SSH-ключей. Отдать сгенерированный приватный ключ через API значило бы дать любому, кто владеет ключом API, прямой доступ к серверу — такие действия доступны только человеку в интерфейсе. Только заранее определённые операции Через API нельзя выполнить на сервере произвольную команду — только заранее определённые действия MultiAgent: установить, очистить, запустить, остановить, развернуть. Ввод каждой операции ограничен идентификаторами, именами, портами и проверяемыми полями; ни одна команда не принимает скрипты или произвольную конфигурацию. Даже действия по удалению (удаление сервера или контейнера с данными, очистка Docker) — это заранее определённые, хорошо очерченные операции. Такая защита означает: даже ошибка или сбой автоматического клиента не сможет выполнить ничего непредусмотренного. Что можно делать через API Серверы — список со статусом соединения, просмотр данных об одном сервере и его расходе, проверка установленных служб (docker, postgres, forgejo, rsync, nginx), тест подключения (SSH + Docker + папки), создание, изменение, удаление, а также длинные операции починки: установка Docker, проверка, создание папок, очистка Docker, установка postgres/forgejo/резервного копирования, импорт найденных на сервере агентов; Агенты — список с типом (обычный агент или продукт), слагом, портом, публичным адресом и состоянием контейнера; просмотр состояния (статус, журналы, статистика, конфигурация, проверка API); создание — порт подбирается автоматически, для продуктов — из каталога продуктов с переменными; жизненный цикл: развернуть, запустить, остановить, перезапустить, пересоздать, удалить. Отдельной команды «скачать образ» нет — пересоздание само тянет свежий образ; Инструменты и продукты — шаблоны инструментов (каталог и полное описание с переменными) и их установка на сервер с проверкой переменных; каталог продуктов доступен для чтения — с описаниями переменных. Примеры вызовов # Каталог — самоописывающаяся документация поверхности curl -H "X-API-Key: my-key" https://multiagent.example.com/api/agent # Список серверов со статусом соединения curl -H "X-API-Key: my-key" https://multiagent.example.com/api/agent/servers # Создать агента и развернуть (202 + проверка статуса operations/{id}) curl -X POST -H "X-API-Key: my-key" -H "Content-Type: application/json" \ -d '{"name":"bot","serverId":3,"slug":"bot"}' \ https://multiagent.example.com/api/agent/agents curl -X POST https://multiagent.example.com/api/agent/agents/42/provision Формат ошибок единый — тело ответа всегда { error, message }. Неверные данные — 400 InvalidRequest; неизвестный ресурс — 404 NotFound; конфликты (например, удаление сервера, на который ссылаются агенты) — 409 Conflict с числом затронутых агентов; лицензионные ограничения создания — 403 с признаком истекшей лицензии; недоступный сервер при удалённой проверке — 502 RemoteError с причиной. Сообщения API — на английском языке. ← Оглавление документации ### Nginx-роутинг MultiAgent никогда не распределяет запросы сам: на каждом сервере работает свой Nginx-контейнер agents-nginx, который MultiAgent разворачивает, настраивает и обновляет. Все приложения сервера — агенты, продукты, инструменты с веб-интерфейсом и произвольные сервисы — раздаются по подпапкам одного адреса: {база}/{слаг}/. Никаких отдельных доменов, поддоменов и ручных конфигов под каждое приложение: у сервера один адрес, и каждое приложение живёт в своей подпапке. Как это работает На каждом управляемом сервере MultiAgent поднимает один контейнер agents-nginx (образ nginx:alpine, сервис nginx). Контейнер ставится из вкладки Nginx страницы сервера: MultiAgent создаёт файлы конфигурации на сервере (загружаются по защищённому каналу), присоединяет контейнер к общей docker-сети и запускает его. Конфигурация маршрутов собирается из базы MultiAgent автоматически: при каждом изменении (создали агента, продукт или инструмент, добавили или отредактировали кастомный маршрут, изменили порты) конфиг пересобирается и применяется сам. Установки показывают свои шаги в ленте прогресса, изменения записей применяются в фоне. Кнопка «Apply configuration» во вкладке прогоняет то же обновление вручную — удобно, когда правку сделали прямо на сервере. Источники маршрутов Общая таблица маршрутов собирается из трёх источников: Агенты и продукты — каждая развёрнутая запись агента (включая продукты из каталога) автоматически даёт маршрут: появляется вместе с записью и исчезает с её удалением; Инструменты с веб-интерфейсом — инструмент, у шаблона которого объявлен веб-порт, получает маршрут автоматически (порт берётся из шаблона и обновляется при каждом развёртывании); без веб-порта инструмент остаётся на прямом адресе http://{хост}:{порт}; Кастомные маршруты — единственный вид с ручным управлением: произвольный http(s)-адрес (не обязательно управляемый MultiAgent — служба на своём порту, локальный сервис, внешняя система), с редактированием, отключением и удалением. Вкладка показывает все маршруты, отсортированные по слагу, с публичным адресом и целью для каждого; автоматические виды помечены «Managed by MultiAgent» и кликом ведут к исходной записи. Схема трафика Трафик идёт так: http(s)://{хост сервера}/{слаг}/ → Nginx сервера → контейнер приложения во внутренней docker-сети ({имя контейнера}:{порт}). Приложения адресуются по именам контейнеров, поэтому публиковать порты наружу не нужно. Резолвинг на лету — конфиг использует внутренний резолвер и переменные адресов: Nginx стартует и работает независимо от того, какие приложения существуют. Неработающее, остановленное или ещё не развёрнутое приложение даёт ошибку только на своей подпапке, остальные маршруты продолжают работать; WebSocket и большие ответы — поддерживаются постоянные соединения (живые чаты агентов), длинные таймауты и безлимитный размер передаваемых данных; Заголовки — приложению передаются служебные данные о префиксе, хосте и схеме, поэтому чувствительные к префиксу приложения строят правильные абсолютные адреса; за внешним прокси приложения получают https-схему и исходный хост; Корень / — отдаётся домашней страницей сервера Heimdall, когда она установлена (см. ниже); без неё корень ведёт себя как обычная резервная страница. Пространство имён и зарезервированные префиксы Слаг первого уровня — единое пространство имён на каждый сервер, общее для агентов, продуктов, инструментов и кастомных маршрутов: один и тот же слаг может существовать на разных серверах, но на одном сервере его можно занять только один раз. Слаги — только строчные буквы, цифры и дефисы ([a-z0-9-]+). Служебные пути MultiAgent зарезервированы и не могут стать слагами: api, v1, swagger, servers, agents, tools, workspaces, analytics, accounts, data и другие пути интерфейса. Агента с именем api или servers создать нельзя — форма подсветит это сразу, а сервер отклонит запись. Кастомные маршруты Кастомный маршрут направляет подпапку на любой абсолютный http(s)-адрес, доступный с сервера: служба на своём порту, локальное приложение, внешняя система. Для создания нужны имя, слаг по правилам пространства имён и цель — абсолютный адрес вида http(s)://... (значение без схемы отклоняется). Каждое изменение (создание, редактирование, включение, отключение, удаление) сразу пересобирает и применяет конфиг; Отключённый маршрут убирает свою подпапку — она начинает отвечать ошибкой 404, запись остаётся в таблице; Удаление освобождает слаг для любого вида — другой агент, инструмент или маршрут сможет его занять; Если у цели есть собственный базовый путь (например, http://host/wiki), он подставляется вместо слага: /{слаг}/docs/page достигает /wiki/docs/page. Сертификаты Сертификаты управляются из того же вкладки Nginx — три вида: Самоподписанный — генерируется MultiAgent и служит резервным сертификатом; его можно скачать как файл .crt и импортировать в доверенные сертификаты системы; Собственная пара PEM — вставляется или загружается; цепочка и ключ проверяются до записи (ключ должен совпадать с сертификатом, просроченный отклоняется с предупреждением); Let's Encrypt — бесплатные сертификаты через сам Nginx (проверка владения доменом по протоколу ACME): тестовая (staging) и рабочая площадка, один запрос за раз, домен должен указывать на сервер. Ключевые материалы хранятся только на сервере (папка ssl/{домен}/: полная цепочка + приватный ключ) и монтируются в контейнер только для чтения — в базе MultiAgent лишь метаданные. Каждое обновление конфигурации продлевает сертификаты, истекающие в течение 30 дней (самоподписанные перегенерируются, Let's Encrypt запрашивается заново), плюс есть ручное продление по строке. HTTPS-порт опционален: пока он пуст, публикуется только HTTP, и сертификаты хранятся, но не раздаются. Домашняя страница сервера (Heimdall) Корень / Nginx отдаёт домашнюю страницу сервера Heimdall, когда контейнер установлен (вкладка Heimdall страницы сервера; требуется установленный Nginx). Карточки приложений синхронизируются из базы MultiAgent с реальными логотипами проектов, а страница защищена собственным входом — отдельной учётной записью, не связанной с аккаунтами MultiAgent. Подробнее — на странице Домашняя страница сервера. Подпапки приложений всегда имеют приоритет над путями Heimdall: агент со слагом settings будет отдан по /settings/, а сама домашняя страница продолжит работать в корне. Если Heimdall остановлен, страдает только корень — подпапки приложений продолжают работать. Публичный адрес Канонический публичный адрес каждого приложения — {база}/{слаг}/. База выводится в одном месте: это база из шаблона адреса агентов, когда он имеет вид {база}/{slug} (так за проксированным сервером получаются https-ссылки без собственного сертификата); иначе — http(s)://{хост сервера}[:{порт nginx}]. Схема следует одному правилу: любой сертификат + включённый HTTPS-порт → https, иначе http. Прямой доступ http://{хост}:{порт} остаётся запасным путём и помечен «direct access» в интерфейсе. ← Оглавление документации ### Агенты Агент — экземпляр Pastukhov Agent на управляемом сервере. MultiAgent генерирует для каждого агента собственный compose.yml, разворачивает контейнер и следит за его жизненным циклом, а чаты агента собирает в централизованный интерфейс. Создание агента Кнопка «Новый агент» открывает мастер: сначала выбирается тип — Standalone (автономный экземпляр Agent) либо один из продуктов (Research Agent, Analytics Agent, Data Agent, Proxy Agent, MultiAgent). Затем форма: имя, сервер, образ (для продукта подставляется автоматически) и порт — он подбирается автоматически из диапазонов (5000+ для агентов, 6000+ для продуктов), поэтому конфликты исключены. Дополнительно задаются теги и лицензия (по умолчанию наследуется от сервера). Продукты разворачиваются со связанным агентом: у переменной «Linked agent» по умолчанию выбран пункт «Create new agent» — мастер создаёт полноценного агента тем же механизмом, а приложение получает его адрес и ключ для обратной связи. Учётные данные (пароль пользователя, пароль менеджера, JWT-секрет, API-ключ) генерируются сами. Подробнее — Продукты. Жизненный цикл Развернуть (provision) — сгенерировать compose.yml, скачать образ и поднять контейнер; Запустить / Остановить / Перезапустить — управление контейнером; Пересоздать (recreate) — единое действие обновления: перерисовывает compose, тянет свежий образ и пересоздаёт контейнер. Отдельной операции Pull нет; Удалить — удалить запись управления и зеркальные чаты; контейнер и данные на сервере не затрагиваются. Все операции выполняются в фоновом режиме, а прогресс приходит в интерфейс в реальном времени — виден каждый шаг: подключение к серверу, подготовка файла настройки, загрузка образа, запуск контейнера. Развёртывание, пересоздание и удаление обновляют и Nginx-роутинг сервера. Для автономных агентов доступен переключатель «Graceful updates» на вкладке «Общие» (выключен по умолчанию, у продуктов отсутствует). Пока он включён, «Пересоздать» не останавливает работающий чат: если агент что-то обрабатывает или последняя активность была меньше 5 минут назад, обновление откладывается (тост «Agent update scheduled»), а фоновый сервис запустит его сам, как только чаты замолчат на 5 минут. Внутренние изменения конфигурации (база, SSL, git) пересоздание не откладывают. Статус контейнера агента берётся у Docker напрямую: running, restarting, stopped, paused, exited или dead. Вкладки редактирования Статус — потребление CPU, RAM и диска контейнером; Журналы — последние 300 строк логов контейнера; Общие — имя, теги, образ, опции; Git — привязка репозитория Forgejo, ветки; Подключение — порт, URL, шаблон адреса; Учётные данные — пароли доступа к агенту; Порты — список проброшенных портов; Тома — монтирования поверх автогенерируемых; Окружение — дополнительные переменные окружения (extra-env); compose.yml — предпросмотр итогового файла с подсветкой синтаксиса; Модели — модели и лимиты параллельных чатов; Файлы — файловый менеджер на сервере, привязанный к агенту; Project Settings — настройки проекта агента; Навыки (Skills) и MCP-серверы — диалоги конфигурации агента, открываются со страницы агента; Задачи (Tasks) и Боты (Bots) — расписания и боты агента; Промпты (Prompts) — очередь промптов агента. compose.yml Файл настройки генерируется по шаблону сервера: порты — из записей агента, тома и переменные окружения — слияние автоматических (папки сервера, строка Postgres, лицензия) и ваших явных значений. Предпросмотр показывает итоговый файл до развёртывания — ошибки конфигурации видны заранее. Учётные данные Для каждого агента доступны две операции с паролями: генерация пользовательского пароля (для входа в веб-интерфейс агента) и смена пароля менеджера (rotating manager password) — пароля, под которым MultiAgent обращается к API агента. Смена пароля менеджера пересоздаёт контейнер агента с новым значением в окружении. Docker.sock и развёртывание Агенту можно подключить /var/run/docker.sock хост-сервера (по умолчанию выключено, включается на каждого агента отдельно). Это нужно, когда сам агент должен управлять контейнерами — например, для деплоя сервисов из своего проекта. Учитывайте: с docker.sock агент получает полный контроль над Docker хоста, поэтому включайте его только доверенным агентам. Импорт агентов Если на сервере уже работают агенты, развёрнутые вручную, их не нужно пересоздавать. Команда «Импортировать агентов» сканирует сервер, находит контейнеры агентов, разбирает их compose-файлы и регистрирует агентов в MultiAgent с сохранением портов, томов и переменных окружения. Обратный прокси и адрес агента Основной способ доступа — подпапка на Nginx сервера. Каждый агент получает свой адрес вида {база}/{слаг}/: Nginx-контейнер сервера (ставится с вкладки Nginx) проксирует подпапку на контейнер агента по внутренней docker-сети, а сертификат — самоподписанный, собственная пара или Let's Encrypt — закрывает HTTPS. Приложения соединяются контейнер-контейнер, публиковать порты наружу не нужно: неразвёрнутый или упавший агент отдаёт 502 только на своей подпапке. Подробнее — на странице Маршруты. Прежняя схема тоже работает как запасная: каждый агент доступен напрямую по адресу http://{сервер}:{порт} (для шифрования можно включить самоподписанный сертификат одним переключателем), а поле «Адрес» на вкладке подключения позволяет задать любой свой URL — например, когда агент спрятан за внешним туннелем. Переопределённый адрес учитывается везде: тест API, прокси-запросы, синхронизация чатов и генерация compose.yml. MultiAgent также работает как передаточный пункт между браузером и API управляемых агентов: запросы вида /api/agents/{agentId}/proxy/... пересылаются на API агента от имени менеджера (если вход устарел, он обновляется сам и запрос повторяется). Благодаря этому браузер и внешние интеграции общаются с агентами через MultiAgent — открывать порты агентов наружу не требуется. Каталог образов Вместо фиксированного каталога образов — каталог продуктов: из мастера «Новый агент» одним диалогом ставятся пять продуктов семейства — MultiAgent (порт 6000), Research Agent (6010), Analytics Agent (6020), Data Agent (6030) и Proxy Agent (6040) — каждый со своим реальным логотипом, портом из диапазона продукта и генерируемыми учётными данными. Шаблоны продуктов лежат на диске MultiAgent в папке AGENT_PRODUCTS и добавляются простым помещением новой папки. Для автономного агента образ выбирается из каталога сервера — его можно пополнять своими образами. Репозитории Forgejo Каждому агенту можно привязать git-репозиторий: существующий на Git-сервере Forgejo или новый, который MultiAgent создаст сам. Ключ доступа выпускается и хранится автоматически. Репозиторий монтируется агенту как папка проекта — все коммиты агента сразу попадают в git. ← Оглавление документации ### Аккаунты LLM-провайдеров Раздел «Аккаунты» учит ваши аккаунты LLM-провайдеров и следит за их квотами и балансами, пока агенты работают. Когда у аккаунта заканчивается квота или баланс — вы узнаете об этом из MultiAgent, а не по упавшим чатам. Учёт аккаунтов Поддерживаются провайдеры Z.ai, BigModel (китайский endpoint Z.ai), Codex, DeepSeek и OpenRouter. У каждого аккаунта — провайдер, учётные данные, статус, теги с цветами и фильтры по ним: можно собрать группу «рабочие аккаунты команды A» или «резерв на ночь». Счётчики вверху показывают, сколько аккаунтов под риском и сколько отслеживается. Контроль квот и балансов Фоновый poller регулярно опрашивает провайдеров и пишет снапшоты состояния: краткосрочная история хранится снапшотами, долгосрочная — часовыми rollup. Отсюда графики: баланс во времени, квота во времени, балансы и квоты по провайдерам и по аккаунтам, распределения и паттерны по часам и дням недели, таблица снапшотов. Событие обновления квоты приходит в UI в реальном времени — графики и бейджи обновляются без перезагрузки. Вход в Codex Для аккаунтов Codex доступен вход через ChatGPT прямо из MultiAgent — device-login по HTTP: кнопка «Войти через ChatGPT» запускает поток, статус можно проверить или отменить, а выход обнулит привязку. Копировать код на страницу OpenAI не обязательно вручную — MultiAgent ведёт поток от начала до конца. Квоты Codex Codex отдаёт два окна лимитов: 5-часовое и недельное. MultiAgent показывает заполненность каждого окна, время следующего сброса и предупреждает, когда сброс близко, а также учитывает пиковые часы. Планируя запуск тяжёлых задач, вы видите, влезут ли они в окно. Модели и лимиты Модели связывают аккаунты с агентами: агенту подключается модель, и его ключи автоматически попадают в переменные окружения контейнера. На уровне модели задаются лимиты параллельных чатов и задержка между вызовами — тот же механизм, которым пользуются очередь промптов и задачи по расписанию при запуске новых чатов. ← Оглавление документации ### Аналитика Аналитика MultiAgent собирает данные всех агентов в единую базу: специальный сервис каждую минуту копирует новые чаты и сообщения, а события агентов приходят в реальном времени через SignalR. Отчёт строится по локальной копии — при открытии страницы запросов к живым агентам не выполняется. В результате получается полная картина работы флота — стоимость, токены, сообщения и коммиты по всем агентам сразу. Обзор Верх страницы — карточки сводки: суммарная стоимость, токены, сообщения и длительность за выбранный период. Ниже — детальные графики. Временные ряды Стоимость, токены, сообщения, промпты и коммиты по времени с гранулярностью от часов до месяцев: hourly, daily, weekly, monthly. Часовая детализация показывает рабочий день, месячная — тренды. Разрезы и паттерны время × модель — как распределяется нагрузка между моделями; время × агент — кто из агентов потребляет ресурсы и когда; по часам суток и дням недели — когда агенты работают эффективнее и сколько это стоит; распределения — стоимость, токенов/с и сообщ./с: какие чаты выбиваются из нормы. Фильтры Все графики подчинены фильтрам: конкретный агент, мультивыбор тегов и временной диапазон (пресеты плюс произвольный период). Выбор агента и тегов взаимоисключающий, а выбранные фильтры, гранулярность и свёрнутые секции сохраняются между визитами. Исторические агрегаты не ломаются при удалении чата — мягко удалённые записи продолжают входить в статистику прошлых периодов. Таблицы чатов Внизу — таблицы «Недавние чаты» и «Чаты субагентов» с сортировкой и постраничной выдачей: стоимость, токены и длительность по каждому чату. Бейдж последних статистик подсвечивает свежие значения, а секции страницы сворачиваются — можно оставить только нужные графики. Балансы и квоты LLM-аккаунтов анализируются отдельно — см. Аккаунты. ← Оглавление документации ### Безопасность и лицензирование MultiAgent хранит чувствительные данные всей инфраструктуры: SSH-ключи серверов, пароли агентов, токены реестров и API-ключи. Эта страница — о том, как всё это защищено, как настроено резервное копирование и как устроены лицензии. Шифрование секретов Все секреты шифруются на хранении симметричным шифрованием AES-256-GCM. 32-байтный ключ лежит в /data/keys/management-secret.key — внутри volume MultiAgent, вне базы данных. Что защищено: SSH-пароли и приватные ключи серверов (включая учётные данные proxy jump); пароли Postgres и Forgejo на серверах; токены реестров образов (Registry Auth); пароли менеджеров агентов и переменные-секреты моделей и инструментов; пароль домашней страницы сервера (Heimdall) и ключи программного интерфейса. Проверка входа пользователей — JWT-токены со сроком 90 дней, подписанные отдельным ключом из /data/keys. Все действия API требуют проверки ключа; анонимна только страница входа, а программный интерфейс /api/agent/* открывается отдельным ключом X-API-Key. Agent API — программный интерфейс Программный интерфейс /api/agent/* предназначен для автоматических вызовов — например, из агентов и внешних систем. Каждый запрос проверяется заголовком X-API-Key: в переменной окружения MULTIAGENT_API_KEY хранится только «отпечаток» ключа (SHA-256), а сам ключ задаётся один раз при установке. Без переменной интерфейс отвечает 503 и не работает вовсе. Особенности безопасности: GET /api/agent возвращает каталог всех операций с описаниями; секреты можно только записать — назад они не выдаются, только приметы «есть значение»; удалённого выполнения кода нет — только заранее определённые операции; долгие операции запускаются по схеме «запустил — проверяй» по адресу operations/{id}. Подробнее — Agent API. Резервное копирование На каждом сервере MultiAgent поднимает rsyncd-контейнер с пятью read-only модулями: агенты, данные, проекты, инструменты и Forgejo. Ваши машины-бэкаперы забирают данные по rsync по расписанию — типичной nightly-задачей: # nightly backup of all server data rsync -avz rsync://backup@server-host:873/data/ /backups/server-host/data/ rsync -avz rsync://backup@server-host:873/projects/ /backups/server-host/projects/ Сам MultiAgent бэкапится вместе с volume /data: база, ключи шифрования и лицензия лежат там же. Подробнее о структуре данных — в инструкции по установке. Лицензии агентов Раздел «Лицензии» — центральное хранилище лицензионных ключей Pastukhov Agent. Ключ проверяется при добавлении, шифруется на хранении и никогда не возвращается из API — интерфейс показывает только распарсенные метаданные (тип, владелец, срок). Один ключ назначается любому числу агентов и автоматически попадает в их переменную AGENT_LICENSE при развёртывании. Лицензия, назначенная хотя бы одному агенту, не удалится, пока её не отсоединить. Лицензирование MultiAgent Сам MultiAgent распространяется с 30-дневным триалом, встроенным в образ. Лицензия — самодостаточная подписанная строка: загружается через переменную AGENT_LICENSE (ту же, что читают все продукты семейства) или файлом активации в папке данных и проверяется офлайн по встроенному ключу. Универсальный ключ (без списка продуктов) покрывает все продукты; действующая лицензия блокирует только создание новых сущностей и отправку сообщений. Типы лицензий и цены — на странице Лицензирование. ← Оглавление документации ### Домашняя страница сервера (Heimdall) Heimdall — домашняя страница сервера: единая закладка, с которой открываются все приложения сервера. Вместо того чтобы запоминать адреса каждого агента и инструмента, вы заходите на одну страницу и видите их карточки. Heimdall устанавливается из вкладки Heimdall страницы сервера и раздаётся в корне / вашего Nginx — у каждого сервера может быть своя домашняя страница со своим входом. Установка Вкладка Heimdall расположена справа от вкладки Nginx. Установка разворачивает контейнер agents-heimdall (образ lscr.io/linuxserver/heimdall) с файлом настройки и папкой data/, куда Heimdall сохраняет своё состояние (папка подключается к контейнеру как /config), в общей docker-сети сервера. Собственных опубликованных портов у контейнера нет: страница доступна только через корень Nginx, поэтому сначала устанавливается Nginx — попытка поставить Heimdall без него завершится понятной ошибкой в потоке прогресса. Если на сервере ещё работает прежний Dashy, установка Heimdall аккуратно заменяет его: останавливает контейнер и удаляет папку dashy/, показывая свои шаги прогресса. Вкладка браузера получает заголовок «Agents», а иконка вкладки — логотип MultiAgent. Собственный вход Домашняя страница защищена собственной учётной записью — логином и паролем, которые задаются во вкладке Heimdall и никак не связаны с аккаунтами MultiAgent. Пароль хранится в зашифрованном виде, а на сервере дополнительно защищён (bcrypt внутри контейнера); страница открывается только после входа. Если при установке логин или пароль не задавались, они генерируются автоматически (логин — admin). Смена учётных данных во вкладке применяется фоновой синхронизацией без перезапуска контейнера; очистка логина открывает страницу вообще без входа. Синхронизация карточек Карточки на странице — это набор карточек, который MultiAgent ведёт из своей базы: по одной закреплённой карточке на каждого агента, продукт и инструмент с адресом (маршрут Nginx или прямой хост:порт для инструментов без веб-порта). Синхронизация проходит при каждом обновлении конфигурации Nginx, при установке и по кнопке Применить — MultiAgent собирает желаемое состояние из тех же записей базы, что и маршрутизация, и скрипт внутри контейнера применяет его одной операцией в базу Heimdall. Реальные иконки — карточки несут логотипы реальных проектов: агенты — логотип Agent, приложения — логотип своего шаблона продукта, инструменты — логотип шаблона; файлы иконок загружаются в папку иконок Heimdall без обращения в интернет из контейнера; Только своё — MultiAgent владеет ровно теми карточками, что создал: всё, что пользователь добавил в Heimdall сам (свои элементы, категории, тему, фон), не трогается, а выбранная пользователем иконка карточки сохраняется; Разъехавшиеся карточки чинятся — откреплённая или убранная с доски управляемая карточка возвращается следующей синхронизацией; удалённая из MultiAgent запись исчезает с доски. Доступ и приоритеты Корень Nginx передаёт запросы на Heimdall по внутренней сети (http://heimdall:80) с теми же заголовками, что и маршрутизируемые подпапки. Приложения всегда имеют приоритет над внутренними путями Heimdall: агент со слагом settings будет отдан по /settings/, а сама домашняя страница продолжит работать в корне (вход /login и служебные пути /api/... нельзя перекрыть — так уже устроено). Если Heimdall остановлен или недоступен, ошибку получает только корень — подпапки приложений продолжают работать. ← Оглавление документации ### Задачи, боты и промпт-очередь В чатах агентов живут автоматизация и ассистентские возможности: задачи по расписанию, боты и очередь заготовленных запросов, а также MCP-серверы и навыки. Всё это — собственные сущности агента, и MultiAgent их не копирует, а показывает: диалоги открываются со страницы агента, обращаются к его же данным, а обновления приходят тем же каналом, что и события чатов. MultiAgent не добавляет своей логики и ничего не хранит на своей стороне — «всё своё ношу с собой», только для агента. Задачи по расписанию Диалог Задачи открывается со страницы агента и показывает его расписания: время и дни запуска (задаются строками вроде «каждый день в 9 утра»), условия запуска и журнал выполненных запусков. Условия вроде «уведомить в чате» позволяют запускать сценарий только по итогам проверки — например, когда вывод скрипта содержит нужную строку; у таких задач в списке стоит соответствующий значок. В журнале у каждого запуска — когда сработало расписание и что вернул сценарий; журналы открываются вкладками. Все поля и действия задач — это команды агента, которые MultiAgent передаёт как есть: создание, правки и запуск применяются на самом агенте. Боты Диалог Боты управляет ботами агента — каналами в мессенджерах, через которые агент общается с пользователями. Конфигурация читается и сохраняется через API самого агента, обновления событий приходят тем же каналом, что и чаты. Как и задачи, боты — «чужое имущество» в чистом виде: MultiAgent показывает интерфейс агента как есть и не хранит настройки у себя. Очередь промптов Кнопка Prompts в поле ввода чата открывает очередь промптов агента — список заготовленных запросов «текст + модель + навык». Ручная отправка строки создаёт на агенте чат с моделью и навыком этой строки, отправляет текст, убирает строку из очереди и открывает новый чат. Настройки AutoSend (включено/выключено, максимум одновременно активных чатов, интервал проверки, автопереход) — настройки самого агента: его внутренний распорядитель сам отправляет накопившиеся промпты в новые чаты, даже когда никто не смотрит в интерфейс. Очередь хранится у агента — MultiAgent только показывает её, у каждого агента очередь своя, а синхронизация между вкладками идёт через события настроек. MCP-серверы и навыки Кнопка «MCP-серверы» на странице агента открывает конфигурацию его MCP-серверов — внешних программ-«посредников», через которые агент получает доступ к базам данных, файлам и веб-сервисам, — тоже через API агента, без промежуточного хранения. Диалог «Управление навыками» показывает дерево файлов и редакторы навыков агента; правки пишутся в его же данные. Первая строка первого сообщения со слагом навыка (/deploy) назначает навык чату и убирается из текста — команда, которая навыком не является, отправляется как есть. Как это устроено Браузер никогда не общается с агентом напрямую. Все запросы идут через один «передаточный пункт»: сервер MultiAgent пересылает их агенту от имени менеджера, чей вход он хранит у себя (устаревший вход обновляется сам, с одним повтором запроса). Живой трафик идёт через постоянное соединение: пока хотя бы один клиент смотрит на агента, сервер держит одно подключение к нему и раздаёт события всем браузерам — поток ответов чата, изменения очереди и итоги, жизненный цикл агента, статистика, git и развёртывание, навыки, модели, лицензия, звуки, сценарии, задачи и боты, изменения настроек и перенаправления очереди. Управлять чатом агента из MultiAgent можно только ограниченным набором действий: отправить сообщение, отправить/изменить/удалить сообщение очереди, остановить обработку и ответить на вопрос. Отправка нового сообщения (включая очередь) проверяет лицензию: при недействительной лицензии вызов до агента не доходит и открывается диалог продления; остановка обработки и ответ на вопрос лицензию не проверяют. ← Оглавление документации ### Инструменты Инструменты — быстрое развёртывание Docker-сервисов на управляемые серверы по шаблонам. Сервис (Postgres, Redis, nginx, что угодно) описывается один раз как шаблон, а затем разворачивается сколько угодно раз — каждый экземпляр со своими настройками. В библиотеке поставляются готовые встроенные инструменты — Dozzle, Watchtower, pgAdmin, Playwright, Forgejo и nginx — с реальными логотипами проектов. Два уровня Библиотека шаблонов (раздел «Инструменты») — глобальная, хранится на диске MultiAgent в папке AGENT_TOOLS и общая для всех серверов. Шаблоны редактируются прямо в интерфейсе: манифест, файлы и compose.yml — как сырой текст; Экземпляры на сервере (страница сервера → «Инструменты на этом сервере») — развёрнутые копии: жизненный цикл, статусы, логи, файлы и переменные каждого экземпляра. Структура шаблона Каждый шаблон — папка со слагом из строчных букв, цифр и дефисов: {AGENT_TOOLS}/ redis/ ← слаг шаблона = имя папки tool.json ← название, описание, иконка, категория, переменные compose.yml ← Scriban-шаблон redis.conf ← произвольные дополнительные файлы init/ 01-init.sh ← вложенные подпапки поддерживаются Переменные описываются в tool.json со схемой типов: string — текстовое поле; secret — поле-пароль: значение шифруется в базе и маскируется в интерфейсе; int — числовое поле; choice — выпадающий список из заданных опций; bool — переключатель да/нет. При первом запуске библиотека наполняется примерами: redis, pgAdmin, dozzle и watchtower. Каждый шаблон несёт свой логотип (logo.svg/logo.png — настоящая эмблема проекта), который каталог показывает вместо значка-глифа. Примеры можно править — затирается библиотека только если она пуста. Развёртывание Выберите шаблон и сервер — откроется форма с переменными шаблона; Заполните значения (секреты сразу шифруются) и посмотрите предпросмотр рендера compose против введённых переменных; MultiAgent отрендерит все файлы шаблона через Scriban, скопирует их в папку инструментов сервера и выполнит docker compose up -d. Имя compose-проекта — короткое имя экземпляра, поэтому экземпляры изолированы по сетям и томам. В шаблонах доступны значения переменных плюс встроенные контексты сервера: {{ instance_slug }}, {{ instance_name }}, {{ data_folder }}, {{ tools_folder }}, {{ server_host }} и другие. Используйте {{ instance_slug }} в container_name, чтобы два экземпляра одного шаблона сосуществовали на сервере. Инструмент, у шаблона которого объявлен веб-порт, становится публично доступным по подпапке сервера {база}/{слаг}/ через Nginx — та же проекция маршрутов, что и для агентов (маршрут появляется вместе с экземпляром и исчезает с его удалением). Без веб-порта инструмент остаётся на прямом адресе http://{хост}:{порт}. Подробнее — Маршруты. Жизненный цикл экземпляра Запустить / Остановить / Перезапустить / Pull — управление контейнером, файлы не трогаются; Пересоздать — единственная операция, перерендеривающая файлы из шаблона с сохранёнными переменными. Ручные правки файлов будут перезаписаны — интерфейс предупреждает об этом заранее; Удалить — останавливает и удаляет контейнер, его файлы и именованные тома. После развёртывания файлы экземпляра на сервере свободны для правок — через вкладку «Файлы» экземпляра или по SSH. Экземпляры — обычные Docker-контейнеры, поэтому переиспользуют знакомый UX агентов: кнопки жизненного цикла, бейджи статусов, просмотр логов и файловый браузер с прогрессом операций через SignalR. Персистентность библиотеки По умолчанию AGENT_TOOLS указывает на /project/tools — внутри контейнера, без сохранения при пересоздании. Чтобы шаблоны переживали пересборку контейнера, укажите AGENT_TOOLS=/data/tools: volume /data сохраняется между пересозданиями. Так же устроен и каталог продуктов — папка AGENT_PRODUCTS с шаблонами Research, Analytics, Data, Proxy и MultiAgent. Подробнее — в инструкции по установке. ← Оглавление документации ### Начало работы Pastukhov MultiAgent — центральный пульт над флотом ИИ-агентов (экземпляров Pastukhov Agent). Он подключается к любому количеству Linux-серверов по SSH, разворачивает на них агентов и продукты (Research, Analytics, Data, Proxy, сам MultiAgent), собирает их чаты и аналитику в одном интерфейсе, а доступ к приложениям раздаёт по своим подпапкам сервера через Nginx-роутинг. Системные требования: сам MultiAgent — один Docker-контейнер (Установка в Docker) либо мастер установки на Windows (Установка на Windows). Управляемые серверы — Linux (Ubuntu/Debian) с SSH-доступом и правами root/sudo. Docker и зависимости на серверах MultiAgent устанавливает сам. Первый вход После запуска контейнера откройте http://localhost:3990. Логин и пароль не задаются переменными окружения — первый пользователь создаётся кнопкой «Регистрация» на странице входа, последующие аккаунты так же. Аутентификация работает через JWT-токены сроком 90 дней — входить заново придётся редко. Главный экран После входа открывается главный экран с карточками навигации по разделам продукта. Постоянное дерево навигации — в левом сайдбаре: по одному корневому пункту на раздел (Серверы, Агенты, Инструменты, Рабочие пространства, Аккаунты LLM, Аналитика, Модели, Лицензии) с живыми подпунктами под сущностями — каждый добавленный сервер и агент появляется в дереве сам. Серверы — подключение и onboarding управляемых серверов, Nginx-роутинг и сертификаты; Агенты — создание, развёртывание и жизненный цикл агентов и продуктов; Лицензии — лицензионные ключи агентов; Аналитика — централизованная статистика по всем агентам; Аккаунты — учёт LLM-аккаунтов, квоты и балансы; Инструменты — библиотека Docker Compose-шаблонов сервисов; Рабочие пространства — сетки живых чатов агентов; Модели — конфигурации моделей для агентов. Если заданы переменные окружения AGENT_API_URL и AGENT_API_KEY, внизу боковой панели появляется блок собственного ассистента (Own Agent): список активных чатов с таймерами и сводкой токенов/стоимости, кнопки Prompts (очередь промптов) и Chats, а глобальный панель чата открывается с любой страницы. Подробнее — Own Agent. Типичный путь Добавьте сервер — имя, хост, SSH-порт, пользователь, пароль или приватный ключ. Подробнее — Серверы. Проверьте подключение — MultiAgent протестирует SSH и покажет статус соединения. Установите Docker — одной кнопкой, с потоковым выводом в интерфейс. Добавьте агента — мастер New Agent: выберите тип — автономный агент (Standalone) или продукт (Research, Analytics, Data, Proxy, MultiAgent); имя, сервер, образ и порт подставятся автоматически. Подробнее — Агенты. Разверните агента или продукт — MultiAgent сгенерирует compose.yml и поднимет контейнер на сервере. Продукты разворачиваются со связанным агентом, который создаётся тем же мастером — «Создать нового агента». Включите маршрут — установите Nginx из вкладки сервера, и агент сразу получит свою подпапку {база}/{слаг}/ на сервере. Подробнее — Маршруты. Установите домашнюю страницу — Heimdall в корне сервера со своим входом соберёт карточки всех приложений. Подробнее — Серверы. Откройте чаты — все чаты всех агентов появятся в едином списке. Подробнее — Чаты. Язык интерфейса Интерфейс полностью переведён на русский. Язык (English/Russian) переключается в настройках профиля и сохраняется для каждого пользователя отдельно. ← Оглавление документации ### Продукты Продукты — готовые приложения-агенты, которые можно развернуть из каталога в несколько кликов: MultiAgent, Research Agent, Analytics Agent, Data Agent и Proxy Agent. Продукт ставится из диалога «Новый агент» вместе со связанным агентом — учётные данные генерируются сами, переменные подставляются заранее, а приложение и агент сами узнают друг о друге. Никакого ручного создания файлов настройки и обмена ключами. Что такое продукт Продукт — это папка-шаблон в каталоге продуктов (по умолчанию /project/products, можно указать свою переменной AGENT_PRODUCTS): файл описания product.json (название, описание, иконка, схема переменных), шаблон конфигурации приложения compose.yml, вспомогательные файлы и, опционально, собственный логотип (logo.svg/logo.png). Каталог читается при каждом показе: добавить продукт — значит положить папку с шаблоном в каталог, перезапуск не нужен. Повреждённый файл описания не ломает каталог — такой шаблон показывается с запасной идентичностью. Установка со связанным агентом Продукты разворачиваются из диалога «Новый агент»: переключатель типа предлагает карточку отдельного агента и карточку каждого продукта каталога. Диалог собирает имя, сервер, образ, порт (заранее подставлен из шаблона) и значения переменных. Переменная типа «agent» (Связанный агент) по умолчанию равна «Создать нового агента»: мастер создаёт полноценного отдельного агента тем же механизмом, что и при обычном создании, а приложение получает его адрес и ключ для связи. У развёртывания — две записи: одна для приложения (слаг вида {шаблон}-app или объявленный appSlug) и, когда связанный агент создан, ещё одна для агента — с именем и слагом шаблона. Оба имени получают свободный вариант («Research App 2», research-app-2), если заняты на сервере. Учётные данные (логин пользователя, пароли, секреты, ключ API) генерируются сервером — для установки не нужно ничего знать заранее. Каталог продуктов Мультиагент (порт 6000) — сам MultiAgent как продукт: связанный агент по умолчанию и переменные для собственного ассистента (own-agent); Исследовательский агент (Research Agent, порт 6010) — исследования и планирование; общая папка документов /project/docs и общая база Postgres, если она настроена на сервере; Аналитический агент (Analytics Agent, порт 6020) — анализ и визуализация данных, со связанным агентом для функции «редактирование с помощью ИИ»; Агент данных (Data Agent, порт 6030) — работа с данными: общая папка сценариев /project/scripts и Postgres; Прокси-агент (Proxy Agent, порт 6040) — лёгкий прокси с собственной базой данных. Возможности шаблона объявляются в его файле описания: sslEnvVar — поддержка самоподписанного HTTPS (переключатель SSL есть только у таких шаблонов), databaseEnvVar — строка подключения к общей базе Postgres сервера, когда она настроена (иначе приложение без проблем работает на встроенной базе), docsMount — общая папка документов связанного агента. Связь приложение ↔ агент Когда шаблон объявляет переменные адреса и ключа приложения (например, у research-agent это RESEARCH_AGENT_BASE_URL/RESEARCH_AGENT_API_KEY), каждый связанный агент получает в своей конфигурации две производные строки: адрес приложения для вызовов контейнер-контейнер (внутри одного сервера — адрес docker-сети, между серверами — публичный адрес) и открытый входящий ключ приложения. Строки выводятся при сборке конфигурации и пересоздаются при каждом развёртывании; один агент могут связывать несколько приложений — тогда значения объединяются через запятую (адреса и ключи — параллельные списки). Шаблон multiagent сам объявляет связанного агента: в его конфигурацию выводятся переменные собственного ассистента (исходящие) и ключ (как отпечаток), а связанный агент получает адрес MultiAgent и открытый ключ. Подробнее — на странице Собственный ассистент. Общая папка документов Шаблон с docsMount делит со связанным агентом его git-управляемую папку документов: со стороны сервера — подпапка репозитория агента, подключённая к приложению по тому же пути внутри контейнера. Оба контейнера видят одни и те же файлы по одному абсолютному пути, а git агента покрывает и общие документы. Общей папки нет, когда агент не связан или живёт на другом сервере. Управление Продукт управляется как обычная запись агента с меткой Product: жизненный цикл (пересоздание тянет свежий образ — отдельной команды «скачать образ» нет), журналы по всей конфигурации (покрывают все сервисы стека), маршрут в Nginx. Переменные и связанный агент редактируются на вкладке Product (кнопка «Сохранить и пересоздать» применяет изменения; связь можно перенацелить, создать нового агента или отключить выбором «Нет»). Продукт не работает как обычный агент: у него нет подключения к живому каналу чатов и отражения чатов, а проверка API отвечает, что тест для продуктов не поддерживается. ← Оглавление документации ### Рабочие пространства Рабочее пространство — панель наблюдения за группой агентов: сетка живых чатов на одной странице. Вместо переключения между вкладками вы видите, что делает каждый агент прямо сейчас. Создание воркспейса Задайте название воркспейса и добавьте карточки агентов через пикер. Сетка настраивается от 1 до 6 колонок; на мобильных карточки всегда складываются в одну колонку. Свойства воркспейса (название, сетка, состав) меняются в любой момент. Карточка агента Каждая карточка привязана к одному агенту и (опционально) одному из его чатов: показывает имя и иконку агента, сервер, статус контейнера и живые метрики чата — сообщения, токены, стоимость, скорость (токенов/с), коммиты и таймер обработки, пока ответ пишется. У карточки два действия: новый чат (создаётся на агенте и привязывается к карточке) и остановить обработку, а кнопка разворачивает чат в выдвижную панель на весь экран — там полная история, отправка сообщений и создание нового чата. Карточку можно переместить или удалить из воркспейса — сам чат при этом не удаляется. Чат, удалённый на агенте, возвращает карточку в «пустое» состояние. Агрегированная статистика Вверху воркспейса — сводка по всем его агентам: сообщения, токены, стоимость, скорость генерации (токенов/с) и коммиты, плюс счётчики запущенных, простаивающих и онлайн-агентов. Показатели обновляются в реальном времени по мере работы агентов. Типичные сценарии воркспейсов: утренний обзор «что делали агенты за ночь», наблюдение за выполнением задач по расписанию и промпт-очереди агентов и контроль параллельной работы нескольких агентов над общей задачей. Воркспейс — только панель наблюдения: он ничего не отправляет и не удаляет сам. ← Оглавление документации ### Серверы Сервер — управляемая Linux-машина, на которой MultiAgent разворачивает агентов и инструменты. Всё управление идёт по SSH: MultiAgent выполняет команды, передаёт файлы и читает статусы контейнеров, не требуя на сервере ничего, кроме базовой системы. Добавление сервера Кнопка «Добавить сервер» открывает форму: имя, хост, SSH-порт, пользователь и аутентификация — пароль или приватный PEM-ключ. Для соединений через бастион настраивается proxy jump: отдельные хост, порт, пользователь и учётные данные прыжка. После сохранения доступен статус соединения: не проверено, OK или ошибка. Кнопка «Проверить подключение» выполняет тест с выводом каждого шага в реальном времени проверки в интерфейс. Onboarding-проверки Для каждого сервера MultiAgent прогоняет набор onboarding-проверок и подсвечивает, что готово, а что требует внимания: SSH — доступность подключения; Docker — установлен ли и запущен ли демон; daemon.json — корректность конфигурации Docker; Папки — наличие папок для агентов, данных, проектов и инструментов; Postgres — общий экземпляр Postgres для агентов; Forgejo — встроенный Git-сервер; Бэкапы — rsyncd-контейнер для резервного копирования. Установка Docker Если Docker на сервере отсутствует, MultiAgent установит его сам — одной кнопкой, с потоковым выводом команд в интерфейс. Там же можно отредактировать /etc/docker/daemon.json (например, зеркала реестра или логирование) — MultiAgent применит файл и перезапустит демон. Для образов из частного реестра на сервере настраивается Registry Auth: пользователь и токен реестра, которые MultiAgent использует при pulling образов агентов и инструментов. Папки сервера MultiAgent хранит файлы агентов в четырёх папках сервера — все настраиваются, значения по умолчанию: Папка агентов — /root/agents: по подпапке на каждого агента с его compose.yml; Папка данных — /root/data: данные агентов, у каждого своя подпапка, монтируется внутрь контейнера в /data; Папка проектов — /root/projects: git-репозитории агентов, монтируются в /project; Папка инструментов — /root/tools: файлы сервисов, развёрнутых из библиотеки инструментов. Единая структура папок упрощает бэкапы: все данные всех агентов сервера лежат в одном дереве каталогов. Общий Postgres Вместо отдельной SQLite-базы у каждого агента можно поднять общий Postgres на сервере: MultiAgent развернёт контейнер docker-compose (по умолчанию порт 5436), сохранит пароль и проверит соединение. Для агентов с включённым Postgres в их окружение автоматически подставляется строка подключения AGENT_DATABASE. Git-сервер Forgejo MultiAgent разворачивает на сервере Forgejo — self-hosted Git-сервер (по умолчанию порт 3200) с выделенным admin-пользователем. Для каждого агента можно привязать существующий репозиторий или создать новый; SSH-ключи для доступа MultiAgent выпускает и хранит сам. Подробнее — в разделе Агенты. Резервное копирование Onboarding устанавливает на сервер rsyncd-контейнер с пятью read-only модулями, покрывающими все папки: агенты, данные, проекты, инструменты и Forgejo. Бэкапы забираются с сервера вашими клиентскими машинами по rsync — например, nightly-заданием на машине с бэкап-хранилищем: rsync -avz rsync://backup@server-host:873/data/ /backups/server-host/data/ Nginx-роутинг и сертификаты MultiAgent сам никогда не маршрутизирует запросы: на каждом сервере свой Nginx-контейнер (agents-nginx, образ nginx:alpine), который устанавливается и обновляется из вкладки Nginx страницы сервера. Конфигурация маршрутов — проекция базы: она пересобирается и применяется автоматически при каждом изменении (создали агента, продукт или инструмент — он сразу получил свою подпапку). Три вида маршрутов — агенты и продукты (read-only), инструменты с веб-интерфейсом (read-only) и пользовательские маршруты на любой http(s)-адрес (единственный вид с ручным управлением: редактирование, отключение, удаление); Единое пространство имён — слаг первого уровня [a-z0-9-]+ на сервер для всех видов; системные пути MultiAgent (api, agents, servers, data и другие) зарезервированы; Внутренняя сеть контейнеров — приложения адресуются по именам контейнеров в общей docker-сети; упавший сервис отдаёт 502 только на своей подпапке, остальные маршруты работают. Сертификаты — три вида из той же вкладки: самоподписанный (становится запасным сертификатом), собственная пара PEM и Let's Encrypt (ACME через сам Nginx, тестовая и рабочая CA, один запрос за раз). Подписи и ключи хранятся только на сервере — в базе лишь метаданные. Просрочка отслеживается при каждом обновлении конфигурации (renew за 30 дней до истечения). HTTPS-порт опционален: пока он пуст, публикуется только HTTP. Домашняя страница сервера (Heimdall) В корне сервера можно поднять домашнюю страницу Heimdall — таб Heimdall (справа от Nginx) устанавливает контейнер agents-heimdall без собственного порта: он доступен только через корень nginx, поэтому сначала ставится Nginx. Страница получает свой вход: логин и пароль (bcrypt-хэш создаётся внутри контейнера) задаются во вкладке, при установке без значений они генерируются автоматически. Карточки на странице синхронизируются из базы MultiAgent: по карточке на каждого агента, продукт и инструмент с адресом — с реальными логотипами проектов, а вкладка страницы подписывается «Agents». Синк проходит при каждом обновлении конфигурации nginx; всё, что пользователь добавил в Heimdall сам, не трогается. Если Heimdall остановлен, страдает только корень — подпапки приложений продолжают работать. Шаблон URL агентов Для адресации агентов используется шаблон URL с плейсхолдерами {slug}, {host} и {port}. Если шаблон имеет вид {база}/{slug}, его база становится публичной базой сервера — и публичный адрес каждого приложения выводится как {база}/{slug}/ (схема берётся из шаблона, поэтому сервер за внешним прокси получает https-ссылки без собственного сертификата). Прямой доступ http(s)://{хост}[:{порт}] остаётся запасным путём. https://apps.example.com/{slug} Файловый менеджер У каждого сервера есть встроенный файловый менеджер: просмотр дерева каталогов, чтение и редактирование файлов, загрузка и скачивание, подсчёт токенов текстовых файлов. Это позволяет поправить конфиг или посмотреть логи на сервере, не покидая MultiAgent. ← Оглавление документации ### Собственный ассистент (Own Agent) MultiAgent может получить собственного ассистента — отдельного агента, чей интерфейс встраивается прямо в страницы MultiAgent: вы общаетесь с ним в чате, не переключаясь между программами. Внизу боковой панели — блок со сводкой активных чатов, глобальная панель чата открывается с любой страницы, у ассистента есть очередь заготовленных запросов, голосовой ввод и звуковые уведомления. Подключение — это разовая настройка: задаёте адрес и ключ агента при запуске, и всё работает. Никаких экранов настройки в интерфейсе и никакого хранения данных на стороне MultiAgent. Подключение Ассистент подключается переменными окружения — техническими параметрами запуска, которые задаются один раз в файле настройки при установке. Нужны два независимых направления, у каждого свой ключ: MultiAgent → агент (исходящее) — AGENT_API_URL (адрес агента) и AGENT_API_KEY (ключ, которым агент пускает свои автоматические клиенты). Именно эта пара включает панель чата и блок в боковой панели. Ключ хранится только на сервере MultiAgent и никогда не попадает в браузер; Агент → MultiAgent (входящее) — MULTIAGENT_API_KEY: ключ программного интерфейса /api/agent/*, через который ассистент сам управляет серверами, агентами и инструментами MultiAgent. Направления не зависят друг от друга: чтобы просто общаться с ассистентом в чате, достаточно исходящей пары «адрес + ключ агента»; а управлять MultiAgent ассистент может и без включённого чата. Боковая панель и панель чата Интерфейс ассистента встроен в каждую страницу MultiAgent. Внизу постоянной боковой панели — блок ассистента: сводка активных чатов (таймер, расход токенов и стоимость — обновляются в реальном времени), предупреждение, если соединение с агентом пропало, и кнопки Prompts (N) — сколько заготовленных запросов ждёт в очереди — и Chats (чаты). Панель чата — нижняя панель, открываемая с любой страницы. Это и есть поле общения с агентом: выбор модели и навыка (с цветами), кнопка промптов, микрофон для голосового ввода, ответы агента в реальном времени, карточки сообщений очереди (можно править, поставить на паузу, отменить), статистика расхода — токены, стоимость, скорость — и кнопка «Открыть в новом окне», которая открывает тот же чат в самом агенте. Выбранные модель и навык запоминаются и становятся значениями по умолчанию для новых чатов. Все обращения к агенту идут через сервер MultiAgent — браузер с агентом напрямую не разговаривает, поэтому ключ агента не покидает сервер. Живые обновления раздаются через постоянное соединение: сервер держит одно подключение к агенту и пересылает события всем открытым браузерам. Соединение устанавливается по необходимости и само восстанавливается при разрыве. Очередь промптов Очередь промптов — это список заготовленных запросов («промптов»), которые агент выполняет по очереди. Очередь принадлежит самому агенту, MultiAgent только показывает её: строки «текст + модель + навык» читаются и сохраняются в настройках агента, на сервере MultiAgent ничего не хранится. Ручная отправка строки создаёт чат с моделью и навыком этой строки и сразу открывает его в панели чата. Настройки AutoSend (включено/выключено, максимум одновременно активных чатов, интервал проверки, автопереход к новому чату) — тоже настройки агента: его внутренний распорядитель сам запускает накопившиеся промпты, даже когда браузер закрыт. Сколько промптов ждёт в очереди, видно на кнопке Prompts в боковой панели. Голосовой ввод и звуки В поле ввода панели есть микрофон: проговорите сообщение, и оно отправится агенту как обычный текст. Фоновые чаты (те, что обрабатываются, пока вы закрыли панель или находитесь в другом чате) сообщают о завершении звуковым уведомлением — у открытого чата звуков нет. Голосовой ввод и проверка лицензии работают так же, как в чатах обычных агентов MultiAgent. Если ассистент не настроен или недоступен Блок ассистента появляется только когда заданы обе переменные AGENT_API_URL и AGENT_API_KEY. При загрузке приложение проверяет, доступен ли агент, и ведёт себя соответственно: Не настроено — кнопки «Новый чат» нет, панель показывает «Агент не настроен», в боковой панели — предупреждение о недостающих переменных; Настроено, но агент недоступен — интерфейс на месте, над нижней частью боковой панели появляется предупреждение о недоступности; Ключ не задан — любой запрос к агенту по программному интерфейсу отвечает ошибкой «API агента не настроен». Отправка сообщений и настройка очереди промптов проверяют лицензию продукта: если она истекла или недействительна, MultiAgent отвечает ошибкой, а приложение открывает диалог продления лицензии. Обратное направление: ассистент управляет MultiAgent Ассистент может управлять самим MultiAgent: создавать серверы, разворачивать агентов и инструменты, следить за их состоянием. Ему достаточно адреса MultiAgent и ключа — доступные команды он узнаёт из каталога /api/agent (MultiAgent сам публикует список своих возможностей) и действует как любой другой автоматический клиент. Запущенные им операции видны в интерфейсе в той же ленте прогресса, что и ваши собственные. Как продукт Когда MultiAgent разворачивается как продукт из каталога (шаблон multiagent), ассистент подключается автоматически: при установке выбирается связанный агент (по умолчанию — «Создать нового агента»), и обе пары переменных прописываются сами, без ручной настройки: одни — в конфигурацию приложения, другие — в конфигурацию связанного агента. Подробнее — на странице Продукты. ← Оглавление документации ### Установка на Windows MultiAgent ставится на Windows мастером установки — программой PastukhovMultiAgent-Setup-<версия>.exe: приложение работает локально на http://localhost:3991 и подключается к вашим удалённым Linux-серверам по SSH. Docker, WSL и SSH-инструменты на этом компьютере не нужны — всё, что нужно серверам, MultiAgent установит на них сам. Системные требования Windows 10 или новее (64-разрядная); минимум 1 ГБ оперативной памяти, около 500 МБ свободного места на диске; среда выполнения .NET не требуется — установщик включает всё необходимое, ничего дополнительно ставить не нужно; права администратора не нужны — приложение устанавливается для текущего пользователя. Мастер установки Запустите установщик и пройдите шаги мастера: Порт — по умолчанию 3991, приложение будет работать по адресу http://localhost:3991; порт можно поменять во время установки (диапазон 1–65535); Папка данных — по умолчанию %LOCALAPPDATA%\Pastukhov\MultiAgent\data: здесь хранятся база данных, ключи и сертификаты, а также файл активированной лицензии. Папка лежит вне каталога приложения, поэтому данные сохраняются при переустановке и удалении; повторный запуск установщика запоминает ранее выбранную папку. Чтобы отказаться от локальной базы, укажите адрес PostgreSQL в MULTIAGENT_DATABASE; Вход — имя пользователя (по умолчанию admin) и пароль (хранится в виде защищённого отпечатка). Учётная запись создаётся при первом запуске; если пароль пропустить, MultiAgent откроет страницу первичной регистрации. Обновить учётные данные можно повторным запуском мастера; Лицензия — пустой ключ даёт встроенную 30-дневную пробную лицензию; ключ можно ввести сразу или обновить позже мастером или диалогом лицензии в приложении. Приобрести лицензию можно на странице лицензирования; Параметры — ярлык на рабочем столе и в панели быстрого запуска (опционально). Что устанавливается Файлы приложения в %LOCALAPPDATA%\Pastukhov\MultiAgent: исполняемый файл и библиотеки, веб-клиент, встроенные шаблоны инструментов и продуктов, файлы переводов; Переменные окружения в реестре Windows (см. ниже); Группа в меню «Пуск»: Pastukhov MultiAgent. Переменные окружения Ярлыки запуска передают настройки как параметры командной строки, поэтому приложение стартует с правильной конфигурацией независимо от пользовательского окружения: MULTIAGENT_DATA — корень данных (база, ключи, сертификаты, лицензия); MULTIAGENT_PROJECT_PATH — корень приложения (файлы переводов брендов); AGENT_TOOLS / AGENT_PRODUCTS — встроенные шаблоны инструментов и продуктов; MULTIAGENT_LOGIN / MULTIAGENT_PASSWORD — создание пользователя при запуске (пароль — SHA256-хеш); AGENT_LICENSE — ключ лицензии при первом запуске; MULTIAGENT_BRAND — необязательное переопределение бренда; обычно определяется по имени exe-файла; MULTIAGENT_DATABASE — необязательная строка подключения PostgreSQL (по умолчанию — локальная база в папке данных); AGENT_API_URL / AGENT_API_KEY / MULTIAGENT_API_KEY — необязательное подключение собственного ассистента: встроенный чат и программный API (входящий ключ принимается как отпечаток). Переменные можно передавать и прямо в командной строке в формате КЛЮЧ=ЗНАЧЕНИЕ — они переопределяют настройки для этого запуска: :: Изменить порт для одного запуска PastukhovMultiAgent.exe --urls=http://localhost:3992 :: Указать другую папку данных PastukhovMultiAgent.exe MULTIAGENT_DATA=D:\MultiAgentData :: Использовать PostgreSQL вместо локального SQLite PastukhovMultiAgent.exe MULTIAGENT_DATABASE="Host=db.local;Port=5432;User Id=multiagent;Password=secret;Database=multiagent" После установки Запускайте MultiAgent через меню «Пуск» → Pastukhov MultiAgent → MultiAgent (или ярлык на рабочем столе), откройте http://localhost:3991 и войдите с учётными данными, заданными при установке. Затем добавьте первый сервер: Linux-машину с установленным Docker и доступом по SSH (по паролю или ключу — ключи загружаются в приложении и хранятся в базе в зашифрованном виде). Всё остальное — установку Docker и зависимостей на серверах — MultiAgent делает сам. Бренд интерфейса определяется по имени исполняемого файла: сохраняйте имя PastukhovMultiAgent.exe либо закрепите бренд переменной MULTIAGENT_BRAND. Обновление и удаление Обновление — повторный запуск установщика новой версии: папка данных сохраняется. Удаление — через «Параметры → Приложения» или ярлык удаления в меню «Пуск»: удаляются файлы приложения и переменные окружения, но папка данных сохраняется — если нужно удалить всё, удалите %LOCALAPPDATA%\Pastukhov\MultiAgent\data вручную. ← Оглавление документации ### Чаты MultiAgent собирает чаты всех агентов в единую базу, поэтому весь рабочий контекст флота доступен в одном списке — без входа в каждый агент отдельно. Список чатов Список показывает чаты всех агентов с фильтрацией по агенту и тегам и постраничной выдачей. Агентские (субагентские) чаты — те, что агенты создают для собственных подзадач, — скрыты из основного списка и вынесены в отдельный раздел аналитики. Работа с чатом Открыв чат, вы работаете с агентом как в родном интерфейсе: отправляете сообщения, читаете ответы и останавливаете обработку одним кликом, если модель ушла не туда. Всё отображается в реальном времени — прогресс инструментов и новые сообщения приходят без перезагрузки страницы. вызовы инструментов (Read, Grep, Bash, Task и другие) с русскими подписями; блоки размышлений (thinking) модели; задачи Todo с прогрессом выполнения; просмотр исходного JSON любого сообщения. Очередь промптов Кнопка Prompts в поле ввода открывает очередь промптов агента — список заготовленных запросов «текст + модель + навык». Отправка строки создаёт на агенте новый чат с этой моделью и навыком, отправляет промпт и удаляет строку из очереди. Настройки AutoSend (включено, максимум одновременно активных чатов, интервал проверки, автопереход) — это настройки самого агента: его внутренний распорядитель сам запускает накопившиеся промпты в новые чаты, даже когда никто не смотрит в интерфейс. Очередь хранится у агента — MultiAgent только показывает её, и у каждого агента она своя. Боты Диалог Боты, открывающийся со страницы агента, управляет ботами агента: их конфигурация читается и пишется через API самого агента. MultiAgent не добавляет собственной логики и не хранит эти данные — он показывает интерфейс агента как есть. Задачи по расписанию Диалог Задачи показывает расписания агента с условиями запуска — например, «уведомить в чате только если вывод скрипта содержит строку» — и журналом выполненных запусков. Как и боты, задачи — собственные сущности агента: их данные читаются и сохраняются через передаточный механизм MultiAgent, а обновления приходят тем же каналом, что и события чатов. MCP-серверы Кнопка «MCP-серверы» на странице агента открывает конфигурацию его MCP-серверов — тоже через API агента, без промежуточного хранения. Все изменения применяются на самом агенте. Навыки и модели У каждого чата — свои выбранные модель и навык (включая явное «нет навыка»); выбор сохраняется и становится значением по умолчанию для следующего нового чата. В первой строке первого сообщения слаг навыка (/deploy) назначает навык чату и убирается из текста. Диалог «Управление навыками» открывает дерево файлов и редакторы навыков агента — правки отправляются самому агенту. Голосовой ввод и звуки В поле ввода есть микрофон для голосового ввода сообщений. Звуковые уведомления сопровождают новые сообщения, завершение ответа и ошибки — их можно отключить в настройках. Статистика сообщений У каждого сообщения — токены, стоимость и скорость ответа (токенов в секунду). Эти же метрики агрегируются в аналитике по всем агентам. Использование контекста Индикатор «Использование контекста» показывает, насколько заполнено контекстное окно чата: процент, израсходованные и доступные токены. Когда контекст приближается к лимиту, чат стоит завершить или продолжить с более раннего сообщения. Продолжение с сообщения Команда «Продолжить из этого сообщения» разворачивает новую ветку разговора от выбранного сообщения — удобно для отката к моменту до ошибки модели или эксперимента с другим направлением решения. ← Оглавление документации ### Лицензирование MultiAgent Все лицензии — пожизненные: единоразовый платёж, без подписок, количество серверов и агентов не ограничено. Лицензирование работает офлайн: ключ — самодостаточная подписанная строка, проверяемая по встроенному публичному ключу, без соединения с сервером. Универсальный ключ покрывает все продукты семейства; ключ, выпущенный под конкретный продукт, должен называть MultiAgent. Ключ вводится в диалоге лицензии в интерфейсе или передаётся при первом запуске переменной окружения AGENT_LICENSE (активированный в интерфейсе ключ сохраняется в папке данных и имеет приоритет). Каждая лицензия включает 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Бесплатный период Бесплатное использование в течение 30 дней — триал уже встроен в Docker-образ и в Windows-установщик. Даже после истечения бесплатной лицензии приложение остаётся полностью функциональным: блокируются только создание новых серверов и агентов и отправка новых сообщений. Существующие агенты и серверы продолжают работать — их можно редактировать, запускать, останавливать, пересоздавать и удалять, импорт уже работающих агентов также не блокируется. Никакой привязки — вы можете экспортировать данные из SQLite или PostgreSQL. Персональная лицензия — 9 700 ₽ Неограниченное количество серверов и агентов для одного разработчика. 9 700 ₽ единоразовый платёж за пожизненную лицензию. 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. Корпоративная лицензия — 97 000 ₽ Неограниченное количество серверов и агентов для всех разработчиков компании или команды, включая внешних подрядчиков. 97 000 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. Сервисная лицензия — 297 000 ₽ Неограниченное количество экземпляров под вашим доменом + полный исходный код с правом изменять его как угодно, обновлять UI или брендинг в соответствии с вашей компанией или доменом, тесно интегрировать с вашей инфраструктурой. Может использоваться любым посетителем вашего домена как часть ваших сервисов. 297 000 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. Для плавных обновлений рекомендую изменять только брендинг и интеграцию, чтобы минимизировать усилия при слиянии с новыми функциями и исправлениями. Бесплатные лицензии В некоторых случаях я готов подарить бесплатную лицензию: если вы нашли баг или уязвимость безопасности в любом из моих продуктов (у меня буквально нет бюджета на платные баг-баунти, к сожалению); если вы предложили дельную идею по улучшению моих продуктов (кодить не обязательно, достаточно полезной идеи — вы получите лицензию, если я включу её в план разработки); если вы активный контрибьютор open-source проектов (я люблю open-source, просто у меня нет времени поддерживать свои продукты как open-source); если вы ведёте популярный блог, Telegram-канал или YouTube-канал о программировании, AI, аналитике, маркетинге, бизнесе, финансах или IT в целом (упоминание или реклама не требуются, это полностью на ваше усмотрение); если вы активный партнёр-аффилиат (продажи не обязательны, но у вас должен быть хотя бы какой-то контент, посвящённый моим продуктам). Если что-то из перечисленного про вас, просто напишите мне в Telegram. Укажите имя и email, и я сгенерирую ваш персональный пожизненный лицензионный ключ. ### Установка MultiAgent в Docker Pastukhov MultiAgent — центральный пульт управления флотом ИИ-агентов. Он разворачивается одним Docker-контейнером, а управляемые серверы подключаются по SSH: MultiAgent сам установит на них Docker и всё необходимое. Ничего настраивать на серверах вручную не требуется. Приложения каждого сервера раздаются по подпапкам одного домена — например, https://ваш-домен/agent1/, https://ваш-домен/research/ — благодаря Nginx-контейнеру (agents-nginx) на самом сервере: отдельные домены, сертификаты и веб-сервер под каждое приложение не нужны (см. Nginx-роутинг). Минимальные требования Сам контейнер MultiAgent лёгкий: по умолчанию он использует встроенный SQLite, а PostgreSQL подключается опционально через переменную окружения. Достаточно любого Docker-хоста с 1 ГБ RAM. Для каждого управляемого сервера требуется: Linux (Ubuntu/Debian) с SSH-доступом; доступ root или sudo — Docker и зависимости установит сам MultiAgent; подключение по паролю или приватному PEM-ключу. Docker Compose Создайте файл compose.yml и запустите docker compose up -d: services: multiagent: image: maxpastukhov/multiagent:min-latest container_name: multiagent ports: - "3990:80" volumes: - multiagent-data:/data environment: - ASPNETCORE_ENVIRONMENT=Production - ASPNETCORE_URLS=http://+:80 - MULTIAGENT_BRAND=pastukhov - MULTIAGENT_DATA=/data # опционально: собственный ассистент (Own Agent) и программный API # - AGENT_API_URL=https://agents.example.com/my-agent # - AGENT_API_KEY=your-agent-key # - MULTIAGENT_API_KEY=<sha256 hex of the same key> restart: unless-stopped sysctls: fs.inotify.max_user_watches: "524288" fs.inotify.max_user_instances: "512" volumes: multiagent-data: После запуска интерфейс будет доступен на порту 3990: http://localhost:3990. Переменные окружения MULTIAGENT_DATABASE — путь к SQLite-файлу или строка подключения PostgreSQL. По умолчанию /data/data.db. Если строка начинается с Host= или Server=, используется PostgreSQL. MULTIAGENT_DATA — корень постоянных данных (по умолчанию /data): база, ключи шифрования, лицензия, шаблоны инструментов. MULTIAGENT_BRAND — брендинг интерфейса: pastukhov для русской версии (значение по умолчанию в RU-образе). MULTIAGENT_LICENSE — путь к файлу лицензии или Base64-ключ. 30-дневный триал уже встроен в образ (переменная AGENT_LICENSE читается тем же механизмом, что у агентов). AGENT_API_URL / AGENT_API_KEY — подключение собственного ассистента (Own Agent): базовый адрес внешнего Xedant Agent и ключ, который агент принимает как X-API-Key. MULTIAGENT_API_KEY — ключ программного API /api/agent/* (Agent API), нижний регистр отпечатка SHA-256 ключа. AGENT_TOOLS — папка библиотеки шаблонов инструментов. Для сохранения при пересоздании контейнера рекомендуется /data/tools. AGENT_PRODUCTS — папка каталога продуктов (по умолчанию /project/products): готовые шаблоны Research, Analytics, Data, Proxy и самого MultiAgent. AGENT_ERROR_REPORTING — отправка ошибок в Sentry. Установите 0 для отключения. ASPNETCORE_URLS — порт внутри контейнера (по умолчанию http://+:80). Свой агент (Own Agent) MultiAgent может вести собственного ассистента — внешний Xedant Agent, подключаемый парой переменных окружения. Его интерфейс встроен в каждую страницу: блок в боковой панели, глобальная панель чата, очередь промптов и голосовой ввод. Настройка — это только переменные, никакого экрана в интерфейсе и ничего в базе: AGENT_API_URL / AGENT_API_KEY — исходящее направление (MultiAgent → агент): через них работает встроенный чат (запросы агент пересылает агенту и отдаёт события чатов). Ключ прикрепляется только на сервере и никогда не попадает в браузер; MULTIAGENT_API_KEY — входящее направление (агент → MultiAgent): ключ программного API /api/agent/*, через который ассистент управляет серверами, агентами и инструментами. Направления работают независимо. Когда MultiAgent сам развёрнут как продукт, обе пары переменных проставляются автоматически (см. Продукты). Подробнее — на странице Собственный ассистент. Хранение данных Все постоянные данные живут в volume /data и переживают пересоздание контейнера. Volume обязателен — без него вы потеряете базу, ключи шифрования и активированную лицензию при первом же docker compose down. /data/data.db — база SQLite (если не используется PostgreSQL); /data/keys/ — ключ шифрования и подписи JWT; /data/auth/ — ключи ASP.NET Data Protection; /data/tools/ — шаблоны инструментов (при AGENT_TOOLS=/data/tools); /data/<бренд>/license.txt — активированная лицензия. Первый вход В отличие от Pastukhov Agent, логин и пароль не задаются переменными окружения. Первый пользователь регистрируется прямо в веб-интерфейсе: откройте http://localhost:3990 и нажмите «Регистрация» на странице входа. Последующие аккаунты создаются так же — в интерфейсе. Аутентификация работает через JWT-токены сроком 90 дней — снова входить придётся редко. Добавление первого сервера После входа добавьте первый сервер: имя, хост, SSH-порт, пользователь и пароль или приватный ключ. MultiAgent проверит подключение, предложит установить Docker и проведёт сервер через onboarding-проверки. Подробнее — в разделе Серверы. Установка на Windows MultiAgent ставится на Windows мастером установки PastukhovMultiAgent-Setup-<версия>.exe: приложение работает локально на http://localhost:3991 и подключается к вашим удалённым Linux-серверам по SSH — Docker, WSL и SSH-инструменты на этом компьютере не нужны. Данные хранятся в папке %LOCALAPPDATA%\Pastukhov\MultiAgent\data (база SQLite, ключи, сертификаты, лицензия), среда выполнения .NET не требуется. Подробнее — на странице Установка на Windows. Docker CLI с файлом .env Можно запустить MultiAgent и без compose — командой docker run, сохранив переменные окружения в файле .env: # .env ASPNETCORE_ENVIRONMENT=Production ASPNETCORE_URLS=http://+:80 MULTIAGENT_BRAND=pastukhov MULTIAGENT_DATA=/data # опционально: собственный ассистент (Own Agent) и программный API # AGENT_API_URL=https://agents.example.com/my-agent # AGENT_API_KEY=your-agent-key # MULTIAGENT_API_KEY=<sha256 hex of the same key> # опционально: каталог продуктов # AGENT_PRODUCTS=/data/products # опционально: PostgreSQL вместо встроенного SQLite # MULTIAGENT_DATABASE=Host=postgres;Port=5432;User Id=multiagent;Password=secret;Database=multiagent; # опционально: лицензионный ключ, если он у вас есть # MULTIAGENT_LICENSE= docker run -d \ --name multiagent \ --env-file .env \ -p 3990:80 \ -v multiagent-data:/data \ --restart unless-stopped \ --sysctl fs.inotify.max_user_watches=524288 \ --sysctl fs.inotify.max_user_instances=512 \ maxpastukhov/multiagent:min-latest Флаг --env-file считывает все переменные из файла. Отдельные значения можно переопределить дополнительными флагами -e после него, например -e MULTIAGENT_LICENSE=your-key. ← Вернуться на главную раздела MultiAgent ### Бесплатная консультация по ИИ‑агентам Бесплатно помогу разобраться с ИИ‑агентами: где они реально полезны именно вам, а где — пустая трата денег Вы наверняка уже слышали про ИИ-агентов, пробовали ChatGPT, смотрели ролики про «автоматизацию всего бизнеса» и, скорее всего, остались в ощущении «звучит круто, но непонятно, как это применить конкретно ко мне». Вот именно на этот вопрос я и помогу ответить — бесплатно, без обязательств и без предварительных договоров. Я больше 25 лет занимаюсь разработкой коммерческих программных продуктов в бизнес-аналитике и финансовой аналитике — с реальными данными, реальными клиентами и задачами из реального мира. Прикладным ИИ занимаюсь последние ~3 года, и моя собственная агентская система Pastukhov Agent работает на десятках проектов и прямо сейчас управляет этим сайтом. То есть я не теоретик и не маркетолог — я практик, который каждый день решает задачу «как сделать так, чтобы модель не просто болтала, а реально приносила деньги и не теряла данные». В рамках бесплатной консультации я с удовольствием обсужу ваши задачи и проблемы, отвечу на вопросы и при необходимости даже запущу своего внутреннего исследовательского агента по вашему бизнесу, чтобы он подсказал конкретные идеи автоматизации. Дальше вы сможете либо заказать услугу ИИ-агент под заказ, либо научиться делать агента самостоятельно в формате ИИ‑агент своими руками — уже с полным пониманием того, чем я могу быть полезен. Или просто сказать мне «большое человеческое спасибо», если вдруг ни одна из идей не понравится. Бывает. Получить бесплатную консультацию Что я помогу выяснить бесплатно Главное, что люди хотят понять, но стесняются спросить: «а ИИ вообще сможет мою работу?». Спрашивайте — для этого я тут и есть. Конкретно помогу с такими вещами: Помогу узнать, что ИИ-агенты реально могут, а чего пока не могут — без хайпа и маркетинговых сказок про «искусственный интеллект заменит всех» Помогу выбрать подходящие именно вам задачи для автоматизации — и, что важнее, отсеять те, за которые не стоит браться: денег и нервов потратите больше, чем сэкономите Помогу подобрать оптимальную модель под ваши задачи — Claude, GPT, GLM, DeepSeek, локальные модели; объясню разницу в цене, качестве и доступе из России Помогу выбрать архитектуру системы под ваши конкретные проблемы — где хостить, как изолировать данные, что вынести в скрипты, а что оставить модели Помогу оценить реальные затраты — сервер, модели, ваше время, время на обучение; чтобы вы понимали цену до старта, а не когда уже поздно Помогу прикинуть окупаемость: какие задачи автоматизировать в первую очередь ради быстрого результата, а какие оставить на потом Помогу решить «делать самому, нанимать или покупать готовое» — часто правильный ответ вовсе не тот, что напрашивается первым Помогу с данными — что именно нужно собрать, где взять, как очистить и в каком виде подать модели, чтобы она не галлюцинировала. Это и есть моя главная специальность И главное — я всегда готов просто обсудить ваши проблемы и задачи, даже если вы пока не понимаете, причём тут ИИ. Часто правильный вопрос важнее правильного ответа, и за 25 лет я научился их задавать. Что входит в бесплатную консультацию Это не «15 минут зум-звонка с продажником» и не шаблонное письмо. Вот что вы реально получаете, не заплатив ни рубля: Личная переписка в Telegram или по почте — в удобном вам темпе, текстом, без звонков и голосовых. Я в сети по 12–16 часов в сутки, включая выходные Запуск моего внутреннего исследовательского агента под конкретно ваш бизнес: он разберётся в вашей нише, процессах и данных и сам подскажет идеи автоматизации, до которых руками можно доходить неделями Предварительное исследование по идеям и вариантам автоматизации в вашем бизнесе — структурированный разбор: что можно автоматизировать, как, на чём, с примерной оценкой затрат и эффекта Честный ответ «это не ваша история» — если задачу автоматизировать пока рано, дорого или бессмысленно, я так и скажу, а не буду впаривать вам решение проблемы, которой нет Подбор модели и провайдера под ваш бюджет — оплата за токены, без помесячных подписок; помощь с регистрацией, оплатой и обходом блокировок, если вы в России Разбор безопасности и закона: где данные можно отдавать модели, где нельзя, как анонимизировать персональные данные клиентов, чтобы не «попасть» под 152-ФЗ Сравнение с существующими инструментами — ChatGPT, OpenClaw, Claude Code, Codex, GigaChat, YandexGPT и прочими; объясню, чем они отличаются и что реально подходит именно вам Без обязательств и без предварительных договоров: вы ничего не подписываете, ничего не предоплачиваете. В любой момент можно просто сказать «спасибо, я подумаю» — и на том спасибо Какие задачи и ниши можно рассмотреть Моя сильная сторона — бизнес-аналитика и финансовая аналитика, но агентская система универсальна. Ниже — области, где я уже что-то делал или прямо сейчас делаю в своём бизнесе. Если ваша задача похожа — это вообще легко. Если не похожа — напишите всё равно: возможно, я просто ещё до неё не дошёл, а решить её вполне реально. Аналитика и данные Сбор и анализ конкурентов, рыночных трендов Маркетинговая и финансовая аналитика, отчёты Визуализация данных, панели, метрики Машинное обучение и прогнозы на ваших данных Бизнес-аналитик и советник на основе ваших цифр Маркетинг и продажи Поиск и планирование рекламы в платных каналах Управление Telegram- и YouTube-каналами Прямой поиск и обогрев потенциальных клиентов Отслеживание новостей и рынка в реальном времени Создание контента, SEO, ведение соцсетей Продукты и операции Разработка и развитие программных продуктов Управление сайтами, интернет-магазинами, контентом Налоговая и бухгалтерская отчётность в малом бизнесе Управление внутренней инфраструктурой и серверами Отслеживание инцидентов и немедленная реакция на них Это далеко не полный список — это то, что уже работает у меня или у клиентов. Буквально любая повторяющаяся работа с текстом, таблицами, данными или документами потенциально автоматизируется. Расскажите свою — посмотрю, что можно сделать. Честно о том, что ИИ‑агенты пока НЕ умеют Я зарабатываю на ИИ, но я не продаю вам ИИ любой ценой. Поэтому сразу — где он сегодня слаб и где без человека не обойтись: Считать «в уме» и принимать финансовые решения без проверки. Любые расчёты нужно выносить в скрипты — и именно этому я учу своих агентов. «Галлюцинации» в деньгах стоят дорого Работать без контроля «как взрослый сотрудник». Модель — это талантливый, но рассеянный стажёр: может шикарно, но может и тихо нафантазировать. Контроль и дообучение обязательны Магически получить доступ к данным без ваших усилий. Без правильно организованных данных агент бесполезен — и 80% работы обычно именно в данных, а не в модели Решить задачу, где у вас нет экспертизы для проверки результата. Наилучшие результаты будут у специалиста в своей области, а не у «специалиста по ИИ» — ИИ лишь усиливает экспертизу Быть «волшебной кнопкой» без участия человека. Кто обещает «внедрил и забыл» — врёт. Реальные агенты требуют контроля и дообучения, но всё меньше и меньше с каждым днём Для кого это полезно Владельцам малого и среднего бизнеса, которые устали от рутины и хотят понять, что реально можно переложить на ИИ Специалистам в своей нише (маркетологи, финансисты, аналитики, бухгалтеры), у которых есть экспертиза, но не хватает рук на повторяющуюся работу Тем, кто уже пробовал ChatGPT, разочаровался и хочет понять — это ИИ такой слабый, или его просто неправильно используют Тем, кто боится «потерять данные» или «попасть под закон», но не понимает, где реальные риски, а где — паника из новостей И просто любопытным, кто хочет разобраться честно и без воды — даже если пока ничего покупать не собирается Как проходит консультация Шаг 1. Вы пишете мне в Telegram или на почту и в двух словах описываете бизнес и задачу. Готовить ничего не нужно — разберусь по ходу Шаг 2. Я задаю уточняющие вопросы и при необходимости прошу примеры данных или процессов — без доступа к вашим «боевым» системам, всё анонимно и по доброй воле Шаг 3. Запускаю своего исследовательского агента по вашей нише и собираю из результатов конкретные идеи автоматизации под вас Шаг 4. Отдаю вам предварительное исследование: что автоматизировать, на чём, сколько примерно стоит и чего ждать по эффекту. Бесплатно и без обязательств Шаг 5. Дальше можете уйти подумать с кучей идей, конкретными ценами и сроками. Если после раздумий закажете услугу «ИИ-агент под заказ» — отлично, будем начинать уже не с чистого листа. Не страшно, если не умеете формулировать «технически грамотно» — я и есть тот, кто переведёт с русского языка на язык агентов. Страшно упустить конкурентное преимущество, когда всё ещё есть возможность обгонять, а не догонять других. Получить бесплатную консультацию ×Получить бесплатную консультацию можно через Telegram @maxedant или по почте max@pastukhov.comЯ в онлайн по 12-16 часов в сутки без выходных, с удовольствием пообщаюсь. Текстом, без звонков и голосовых. ### ИИ-агент для Telegram Весь маркетинг в Telegram в одном окне: свои каналы, публикации по расписанию, мониторинг конкурентов и ИИ-комментарии Telegram Agent соберёт в одном интерфейсе всё, что связано с вашим маркетингом в Telegram: свои каналы публикуются по расписанию сами, чужие каналы и чаты отслеживаются в реальном времени, а ИИ помогает писать комментарии и управлять делами обычным языком. Никакого переключения между десятком сервисов: подключили канал — и интерфейс сам подскажет, что запостить, когда опубликовать, что говорят конкуренты и куда ответить. Подключение каналов через бота или личный аккаунт Публикации в один клик: текст, медиа, альбомы, ссылки на YouTube Недельное расписание: слоты «день + время» для каждого канала Авто-публикация: очередь сама уходит в канал в назначенный час Очередь контента: идея → черновик → проверка → расписание Предпросмотр поста себе перед публикацией История постов со статистикой: просмотры, вовлечённость Источники: RSS, чужие каналы, чаты и ветки комментариев Следите за конкурентами в реальном времени Лента сообщений с фильтрами, поиском и клавиатурным триажем Авторы: кто пишет в источниках, их теги и история Теги и ключевые тэггеры для разбора входящего потока Маршрутизация: категории сами направляют контент в каналы ИИ-классификация сообщений: ключевые слова или LLM Комментарии с ИИ: черновики, шаблоны, лимиты, обсуждения Кнопка «Вызвать агента» на странице канала и в очереди Чат с Pastukhov Agent: навыки, окружения, живой поток Аналитика каналов: подписчики, вовлечённость, просмотры Защита от ошибок: лимиты и проверки при публикации Self-hosted: один Docker-контейнер, все данные в volume /data Полная русская локализация интерфейса Установка Документация FAQ Лицензирование Каналы под вашим контролем Подключение через бота: достаточно @имени канала и токена от @BotFather Или через личный аккаунт — каналы, где вы владелец или администратор Настройки канала: часовой пояс, авто-публикация, закреп постов Шаблоны постов: префикс, суффикс и хэштеги для единого стиля Подробнее Публикации без рутины Полноэкранный редактор с форматированием текста и живым предпросмотром Фото, видео и документы: перетащите или вставьте — и в пост Альбомы из нескольких файлов и подписи к каждому Ссылки на YouTube — карточкой с превью, не просто текстом Подробнее Расписание на неделю вперёд Слоты публикации: выберите дни и время для каждого канала Сетка «день × время» — видно весь график недели Даты публикации считаются сами из очереди слота Авто-публикация: пост уходит в канал в назначенный час Подробнее Очередь контента Конвейер: идея → черновик → проверка → расписание Идеи из сообщений конкурентов — в один клик Черновики можно переставлять — порядок сохраняется Утверждение на проверке: один клик, и элемент в расписании Подробнее Наблюдение за конкурентами RSS-ленты, чужие каналы, чаты и ветки комментариев — как источники Массовое добавление из подписок вашего аккаунта История подкачивается сама с заданным интервалом Папки источников и цветные категории Подробнее Лента сообщений Всё собранное в одной ленте: фильтры, теги, поиск Три макета: список, компактно и карточки Быстрый разбор с клавиатуры: отметить, скрыть, затегать Новое приходит в реальном времени без перезагрузки Подробнее Авторы Кто пишет в интересующих вас каналах — единая карточка Один автор в разных источниках связывается автоматически История сообщений автора и каналы, где он пишет Теги автора распространяются на все его сообщения Подробнее Маршрутизация контента Роутеры по ключевым словам: «BTC» и «bitcoin» → категория «Крипта» ИИ-классификация: LLM сам относит сообщение к категории Правила: категория → ваш канал + очередь Тест-панель: проверьте правило, ничего не меняя в данных Подробнее Комментарии с ИИ Черновики комментариев от ИИ — три варианта, выберите лучший Шаблоны с подстановкой имени канала и автора Лимиты защиты: не больше заданного числа в день на аккаунт Публикация в обсуждении поста и ответы на комментарии Подробнее Аналитика каналов Карточка канала: подписчики, просмотры, вовлечённость за неделю Хронология недели: опубликованное и запланированное рядом Графики подписчиков, просмотров, вовлечённости и комментариев Топ самых просматриваемых постов за период Подробнее ИИ-агент рядом «Вызвать агента» на странице канала, в очереди и в комментариях Промпт уже знает контекст: канал, очередь, сообщения Чат внизу экрана: сообщения, правки файлов, todo-список Навыки и окружения (модели) — как в Pastukhov Agent Подробнее Установка Документация FAQ Лицензирование Бесплатный период Бесплатное использование в течение 30 дней — пробная лицензия встроена в Docker-образ. Этого достаточно, чтобы оценить продукт в деле: подключить каналы, составить расписание, собрать источники и попробовать комментарии с ИИ. Даже после истечения бесплатного периода приложение остаётся полностью функциональным — лицензия ограничивает только отправку сообщений в чат агента. Статус лицензии всегда виден в подвале главного экрана. Никакой привязки: все данные хранятся в вашем контейнере. Персональная лицензия Все функции Telegram Agent без ограничений для частных лиц: неограниченное количество установок на любых ваших компьютерах и серверах. 19 700 ₽ единоразовый платёж за пожизненную лицензию. 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Лицензия нужна для отправки сообщений в чат агента; всё остальное — каналы, публикации, очередь, источники, комментарии и аналитика — работает и без неё. Корпоративная лицензия Все функции Telegram Agent без ограничений для всех сотрудников компании или команды, включая внешних подрядчиков. 49 700 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Лицензия нужна для отправки сообщений в чат агента; всё остальное работает и без неё. Сервисная лицензия Неограниченное количество экземпляров Telegram Agent под вашим доменом + полный исходный код с правом изменять его как угодно, обновлять интерфейс или брендинг в соответствии с вашей компанией или доменом, тесно интегрировать с вашей инфраструктурой. Может использоваться любым посетителем вашего домена как часть ваших сервисов. 97 000 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена сервисная лицензия на Pastukhov Agent, который является частью продукта. Исходный код Agent доступен только при покупке сервисной лицензии на сам Pastukhov Agent. Для бесшовных обновлений рекомендую изменять только брендинг и интеграцию, чтобы минимизировать усилия при слиянии с новыми функциями и исправлениями. Бесплатные лицензии В некоторых случаях я готов подарить бесплатную лицензию: если вы нашли баг или уязвимость безопасности в любом из моих продуктов (у меня буквально нет бюджета на платные баг-баунти, к сожалению); если вы предложили дельную идею по улучшению моих продуктов (кодить не обязательно, достаточно полезной идеи — вы получите лицензию, если я включу её в план разработки); если вы активный контрибьютор open-source проектов (я люблю open-source, просто у меня нет времени поддерживать свои продукты как open-source); если вы ведёте популярный блог, Telegram-канал или YouTube-канал о программировании, AI, маркетинге, бизнесе или IT в целом (упоминание или реклама не требуются, это полностью на ваше усмотрение); если вы активный партнёр-аффилиат (продажи не обязательны, но у вас должен быть хотя бы какой-то контент, посвящённый моим продуктам). Если что-то из перечисленного про вас, просто напишите мне в Telegram. Укажите имя и email, и я сгенерирую ваш персональный пожизненный лицензионный ключ. ### FAQ Telegram Agent Что такое Telegram Agent и кому он нужен? Telegram Agent — это инструмент для тех, кто ведёт каналы в Telegram и занимается маркетингом. Свои каналы публикуются по расписанию без рутины, чужие каналы и чаты отслеживаются как источники контента, а ИИ помогает писать комментарии и отвечать на вопросы простым языком. Всё в одном интерфейсе, на русском. Нужно ли уметь программировать? Нет. Бота для канала создаёт @BotFather в Telegram за минуту — токен вставляется в интерфейс и проверяется автоматически. Личный аккаунт подключается номером телефона и кодом. Очередь, расписание и аналитика устроены наглядно, без кода. Программирование нужно только тем, кто захочет свои скрипты для маршрутизации через API. Безопасно ли подключать личный Telegram-аккаунт? Сессии хранятся только в вашем контейнере (volume /data/sessions) и переживают перезапуски. Отключение аккаунта удаляет сессию, повторное подключение требует новый код Telegram. Аккаунт используется ровно для того, что вы настроили: источники и каналы, к которым у него есть доступ. В чём разница между «каналом» и «источником»? Каналы — ваши: ими вы управляете, в них публикуете. Источники — чужие каналы, чаты и RSS-ленты, за которыми вы наблюдаете: их сообщения собираются в ленту, разбираются тегами и могут попадать в вашу очередь контента. Как ИИ помогает с комментариями? ИИ предлагает три варианта комментария к посту из чужого канала, вы выбираете и правите перед публикацией. Есть шаблоны с подстановкой названия канала и имени автора, а лимиты (сколько комментариев в день на аккаунт) защищают канал от ошибок. Можно ли пользоваться без Pastukhov Agent? Да. Каналы, публикации, расписание, очередь, источники, лента, авторы, комментарии и аналитика работают самостоятельно. Интеграция добавляет кнопки «Вызвать агента» и чат с агентом — для этого нужен адрес и API-ключ вашего Pastukhov Agent. Как активировать лицензию и что она даёт? Ключ вводится в диалоге лицензии (подвал главного экрана) или через переменные окружения. Лицензия нужна только для отправки сообщений в чат агента; всё остальное работает и без неё. Цены — 19 700 / 49 700 / 97 000 ₽ (см. страницу лицензирования). Где хранятся данные? Всё в volume /data вашего контейнера: база, сессии Telegram-аккаунтов, медиа, ключи. Volume переживает пересоздание контейнера; при необходимости данные переносятся вместе с ним. ### Документация Telegram Agent Начало работы Что такое Telegram Agent, первый вход, интерфейс, первые шаги. Каналы Подключение через бота или аккаунт, настройки, шаблоны постов. Публикации Редактор постов: форматирование, медиа, альбомы, ссылки, предпросмотр. Расписание Недельные слоты публикации, часовые пояса, авто-публикация. Очередь контента Идеи → черновики → проверка → расписание; теги и тэггеры. Источники RSS, чужие каналы, чаты и ветки комментариев; мониторинг. Лента сообщений Фильтры, поиск, разбор, отметки прочитанного, реальное время. Авторы Кто пишет в источниках: карточки, теги, история. Маршрутизация Категории сообщений и правила «категория → канал → очередь». Комментарии с ИИ Проекты комментирования, черновики от ИИ, шаблоны, лимиты. Аналитика Обзорная сводка каналов, хронология, графики, топ постов. ИИ-агент Чат с Pastukhov Agent, «Вызвать агента», навыки, окружения. Установка Docker Compose, переменные окружения, первый вход. ### Авторы «Авторы» — кто пишет в ваших источниках. Один и тот же человек, оставляющий сообщения в разных каналах, собирается в одну карточку: видно всё, что он писал, где и сколько раз. Это помогает быстро понять, кто реально влияет на вашу тему. Кто такой автор Автор — человек, который пишет в ваших источниках. Один автор = одна карточка: если один и тот же Telegram-пользователь пишет в двух каналах, его записи из обоих собираются у одной карточки — связывание идёт по Telegram user id, а где его нет — по точному имени. Разные имена никогда не сливаются. Откуда берутся авторы Автоматически — из собранных сообщений. Каждое новое сообщение создаёт или находит свою карточку и обновляет её счётчики. При запуске сервера служебная дозагрузка связывает сообщения, оставшиеся без автора, — ничего не дублируя и не удаляя: карточки авторов живут дальше, даже если их сообщения удалены. Список авторов По 50 на страницу, поиск по имени (живой, по мере ввода) и сортировка — по имени, последнему сообщению, числу источников или числу сообщений. У каждой строки — имя, теги, время последней записи, счётчики источников и сообщений. При поступлении новых сообщений список обновляется на месте, и ранее невиданные авторы появляются без перезагрузки. Страница автора шапка — аватар-заглушка (первая буква имени), имя, Telegram user id, если известен, и итоги по сообщениям и источникам; вкладка «Сообщения» — его записи по 20 с кнопкой «ещё», новое приходит в реальном времени; вкладка «Каналы» — где он писал и сколько, по порядку последней активности, каждая строка ведёт в ленту этого источника. Теги авторов Автору можно повесить теги из общего пула — они немедленно распространятся на все уже собранные сообщения автора, а его новые сообщения получат эти теги сами при поступлении. Снятие тега с автора убирает его и с сообщений. Так, повесив автору тег «эксперт», вы автоматически помечаете всё, что он пишет. Что дальше Где читать записи авторов — в разделе Лента сообщений, как теги работают в конвейере — в Очередь контента. ← Оглавление документации ### Аналитика «Аналитика» — цифры по вашим каналам: карточки на главном экране, хронология недели, графики и топ постов. Данные собираются в фоне сами, так что цифры всегда свежие, а вам не нужно открывать Telegram для ответа на вопрос «как там канал?». Главный экран «Каналы» Карточка каждого канала, по убыванию подписчиков: подписчики с изменением за день; всего просмотров постов за последние 24 часа; недельная вовлечённость — доля подписчиков, которые открыли посты; зелёным — выше 30%, жёлтым — 15–30%, красным — ниже 15%; комментарии за 30 дней (если они есть); последний опубликованный пост и следующий запланированный — а если ничего не запланировано, предупреждение об этом. Хронология Объединённая неделя всех каналов — Пн–Вс: опубликованные посты, запланированные элементы и пустые слоты. У каждого канала есть своя хронология на его странице. Пустой слот — кнопка «создать идею» прямо из хронологии; запланированные элементы можно переставлять в очереди слота стрелками вверх/вниз. Аналитика канала На вкладке «Аналитика» канала выбирается период: сегодня, вчера, 7, 14, 30 (по умолчанию), 90 дней или свои даты. Вверху — обзор: подписчики, средняя вовлечённость, число постов, всего просмотров, лучший пост и комментарии. Ниже — графики и таблица: график подписчиков — за всю историю снимков (период на него не влияет); графики просмотров, вовлечённости и комментариев — за выбранный период, с разбивкой по дням, неделям или месяцам; таблица топ-20 постов периода: дата, отрывок, просмотры, вовлечённость, пересылки; сортировка по просмотрам или вовлечённости. Обзор канала Вкладка «Обзор»: текущие подписчики с изменением за день и неделю, вовлечённость за 7 дней и четыре графика за 30 дней — подписчики, просмотры, вовлечённость, комментарии. Пока страница открыта, цифры обновляются сами. Как данные обновляются Фоновый цикл каждые ~30 минут обновляет по каждому подключённому каналу: число подписчиков из Telegram (с дневным снимком), просмотры постов за последние 48 часов и дневные снимки за вчера и сегодня — поэтому данные за сегодня видны, не дожидаясь полуночи. При первом запуске снимки восстанавливаются из истории постов канала. Канал, чьи данные не удалось получить, пропускается — цифры просто остаются прежними. Что дальше Подключение каналов — в разделе Каналы, как устроено расписание и слоты — в Расписание, как контент движется к публикации — в Очередь контента. ← Оглавление документации ### ИИ-агент Раздел «ИИ-агент» — интеграция с Pastukhov Agent: внутри Telegram Agent появляется чат с помощником, которому можно поручить «займись каналом», «разбери очередь», «посмотри источники» — обычным языком. Без настройки все поверхности чата скрыты, а остальной продукт работает как обычно. Настройка Достаточно двух переменных окружения при запуске: AGENT_API_URL — адрес вашего Pastukhov Agent и AGENT_API_KEY — его API-ключ. После этого появляются кнопки «Вызвать агента» и панель чата. Как задать переменные — в разделе Установка. Где вызывать Кнопки «Вызвать агента» есть на странице канала, в очереди канала и в проектах комментирования. В промпт автоматически подставляется контекст — название канала и его @имя — так что агенту не нужно угадывать, о каком канале речь. Чаты Список чатов с поиском по названию: у каждого чата — время последнего обновления, длительность обработки, число сообщений, скорость сообщений и токенов в секунду, стоимость, число правок файлов, окружение и навык. Новые чаты появляются в списке сами, в реальном времени: активный чат показывает «обработка» и счётчики, работающий — кнопку остановки. Панель чата Чат открывается панелью внизу экрана. Сообщения агента — в Markdown, вызовы инструментов — компактными карточками: правки файлов с различиями, списки задач; у текущей задачи — закреплённая панель. Сообщения, ожидающие очереди работающего чата, видны карточками над полем ввода — их можно править, ставить на паузу или убрать. Прямо в панели — итоговые счётчики токенов и стоимости. Навыки и окружения При создании чата можно выбрать навык (скилл) из списка агента — набор инструкций для специализированной работы — и окружение (модель). Выбор запоминается и становится значением по умолчанию для следующих чатов. Навык честно показывается у чата, под которым он создан. Звуки и фон Пока чат работает в фоне, приходят звуки: новое сообщение, ошибка, завершение. Сводка активных чатов — с таймером и стоимостью — живёт на главной и страницах каналов: её можно свернуть в одну кнопку с итогами. Тихий режим выключает звуки. Лицензия Отправка сообщений и ответов на вопросы агента требует действующей лицензии — без неё приложение предложит ввести ключ. Всё остальное в продукте — каналы, публикации, расписание, очередь, источники, комментарии, аналитика — работает и без лицензии. Важное преимущество: чат — единственное, что гейтезируется. Подробнее — на странице Лицензирование. Внешний API (v1) Все разделы продукта доступны и для скриптов и интеграций: каналы, боты, аккаунты, источники, очередь, сообщения, авторы, комментарии, расписание и аналитика. API-ключи создаются в настройках — полный ключ показывается один раз, дальше только его начало; отозвать ключ можно в любой момент, и он перестанет работать сразу. Интерактивная документация со всеми командами открывается по ссылке из настроек и позволяет пробовать запросы прямо в браузере. Ошибки API приходят с кодом, понятным текстом и подсказкой, что исправить. Что дальше О самом Pastukhov Agent — его возможностях и установке — читайте в разделе Pastukhov Agent на этом сайте. Как развернуть Telegram Agent вместе с интеграцией — в разделе Установка. ← Оглавление документации ### Источники «Источники» — каналы наблюдения, откуда приложение собирает сообщения. Это чужие каналы и чаты, RSS-ленты и списки подписок вашего аккаунта: всё, что стоит отслеживать, — в одном месте. Собранное попадает в ленту сообщений, откуда превращается в идеи, теги и комментарии. Виды источников RSS/Atom-лента — нужен только адрес ленты; Telegram-канал через бота — @имя канала; Telegram-чат (группа) через бота — числовой идентификатор чата; Ветка комментариев через бота — числовой идентификатор; Канал через личный аккаунт — числовой идентификатор чата; так сообщения из канала приходят в реальном времени; Папка — объединяет несколько источников: папка собирает всё, что собрали её дочерние источники. Добавление вручную Выберите вид, имя и адрес: для RSS — адрес ленты, для канала — @имя, для чата или ветки комментариев — числовой идентификатор. Интервал подкачки — от 1 до 1440 минут, по умолчанию 15; категории — цветные метки, по желанию. Источник появится в списке сразу, первые сообщения придут при ближайшей подкачке. Массовое добавление из подписок аккаунта Кнопка «Найти в моём аккаунте» показывает каналы, на которые подписан ваш личный аккаунт: название, @имя, число подписчиков, пометки «владелец/админ» и поиск. Отметьте нужные — приложение создаст по источнику на канал и покажет прогресс загрузки начальной истории; каналы, уже ставшие источниками, в списке не повторяются. Начальная загрузка истории Первые 50 сообщений источника загружаются сразу, старше — постранично кнопкой «загрузить старше», пока Telegram не ответит, что нового больше нет. Уже известные сообщения пропускаются — дублей не будет. Подкачка Фоновый цикл раз в минуту проверяет, чей интервал наступил, и забирает новое — одновременно не больше трёх источников, чтобы не перегружать Telegram. RSS при неизменной ленте даже не перечитывается: ответ ленты проверяется заголовками. Для источников через личный аккаунт новые сообщения приходят в реальном времени, не дожидаясь интервала, а пропуски заделываются автоматически после перезапуска сервера. Без дублей и с защитой от сбоев Каждое сообщение сохраняется один раз: позиция чтения хранится у источника и переживает перезапуски. Если подкачка упала, ошибка записывается, а уже собранное и курсор остаются нетронутыми — при следующем цикле всё продолжится с того же места. Категории Категории — цветные метки, общие для источников и сообщений. Сообщение получает категории своего источника автоматически, категориями можно фильтровать ленту и вести их в маршрутизацию. Список источников Каждый источник в списке: имя, число сообщений и авторов, интервал, время последней подкачки с кнопкой «подкачать сейчас» и метки категорий. При появлении новых сообщений счётчики обновляются на месте, без перезагрузки. Страница источника Обзор — итоги: всего сообщений, категории, интервал, состояние; для папки — её дочерние источники; Сообщения — лента только этого источника; Авторы — кто писал в источнике, с числом сообщений и временем последней записи; Настройки — имя, интервал, фильтр-выражение. Удаление источника убирает и всё собранное им — сообщения, их теги и связи, — поэтому приложение попросит подтверждение. Что дальше Разбор собранного — в разделе Лента сообщений и Авторы, автоматическая сортировка — в Маршрутизация, вежливое присутствие в обсуждениях — в Комментарии с ИИ. ← Оглавление документации ### Каналы Раздел «Каналы» — управление вашими Telegram-каналами: подключение, настройки публикаций, шаблоны постов и история. Подключить канал можно двумя способами — через бота или через личный аккаунт. Подключение через бота Выберите бота из списка зарегистрированных (токены создаются в @BotFather и проверяются автоматически), введите @имя канала — и всё. Бот должен быть администратором канала с правом публиковать посты: если права не хватает, приложение скажет, какого именно права и в каком канале не хватает, до того как что-то сохранит. Данные канала — название, описание, фото, число подписчиков — подтягиваются из Telegram сами. Подключение через личный аккаунт Выберите подключённый личный аккаунт — приложение покажет список каналов, где вы владелец или администратор, с пометкой и числом подписчиков. Можно подключить сразу несколько, отметив их в списке. Каждый канал подключается один раз: если попробовать подключить его вторым способом, приложение попросит сначала отключить старое подключение; повторное подключение тем же способом просто обновляет данные канала. Страница канала У каждого канала своя страница: фото, название, @имя и кнопка обновления данных из Telegram. Вкладки — Обзор, Хронология, Аналитика, Расписание, Очередь, Контент и Настройки; полноэкранный редактор постов открывается для написания и правки. Пока страница открыта, она обновляется сама: новые посты и цифры появляются без перезагрузки. Настройки канала Часовой пояс — список IANA; в нём считаются времена слота расписания и оценочные даты публикаций; Авто-публикация — вкл./выкл.: когда она включена, первый пост из очереди слота публикуется сам в момент наступления слота; Тихий режим по умолчанию — публиковать без звука уведомлений у подписчиков; Авто-закреп — закреплять последний опубликованный пост, при желании с временем жизни закрепа. Настройки сохраняются сразу при изменении — кнопку «Сохранить» искать не нужно. Шаблоны постов Для единого стиля публикаций у канала могут быть шаблоны: префикс, суффикс и хэштеги. Шаблоны создаются, правятся и удаляются на вкладке «Настройки». Контент канала Вкладка «Контент» — история постов канала: фильтр по статусу и дате, сортировка по дате или просмотрам, статистика (сколько всего постов, средние просмотры, посты за неделю). Отдельно стоит импорт истории канала — до 500 постов: он доступен только для каналов, подключённых через личный аккаунт, и загружает прошлые публикации с просмотрами. Один пост можно обновить отдельно — приложение перечитает из Telegram его текст и свежие просмотры. Отключение и удаление Отключение освобождает подключение к Telegram, но исторические данные остаются на месте. Удаление убирает канал вместе со всеми собранными данными — настройками, слотами, шаблонами, импортированными постами — и необратимо, поэтому приложение попросит подтвердить. Что дальше Как писать и публиковать посты — в разделе Публикации, как задать график — в Расписание, как устроен путь контента — в Очередь контента, как читать цифры канала — в Аналитика. ← Оглавление документации ### Комментарии с ИИ «Комментарии с ИИ» — вежливое присутствие вашего канала в обсуждениях чужих постов: конкурентов и партнёров. Приложение предлагает черновики комментариев, следит за лимитами и показывает живые ветки обсуждений — вам остаётся выбрать и опубликовать. Проекты комментирования Проект — группа настроек: имя, ИИ-параметры (провайдер, модель, температура, дополнительная инструкция) и лимиты. Лимиты по умолчанию: 25 комментариев на аккаунт в день, 1 комментарий на канал в день и задержка от 30 секунд между комментариями одного аккаунта. Лимиты — это защита от ошибок: они не дают «разозлить» канал или ускориться сверх меры. Цели Цель — источник, ставший площадкой для комментирования: у него выбираются приоритет (высокий / средний / низкий) и статус (активен, пауза, чёрный список). Один источник может быть целью только в одном проекте. При добавлении цели пять последних постов становятся «новыми», остальные — «пропущенными»: работа начинается с чистого листа, без долга за прошлое. Лента комментариев Посты целей — по 30 на страницу — с фильтрами по проекту, источнику и статусу (новый / пропущен / отложен / прокомментирован) и поиском. Над лентой итоги по статусам; новые посты подъезжают сами после обновления целей. Редактор комментария шесть типов: опыт, эксперт, дополнение, вопрос, короткий, свой; выбор аккаунта для публикации (по умолчанию — первый активный); поле до 4096 символов со счётчиком и предпросмотром в стиле Telegram; клавиатурные сочетания для быстрой работы; черновик можно сохранить, а опубликованный комментарий — только оставить как есть. ИИ-черновики Кнопка «сгенерировать» — и ИИ предлагает три варианта комментария к посту, с учётом выбранного типа. Первый вставляется сразу, любой можно применить кнопкой. Без ключа ИИ в настройках приложение честно скажет, что ключ не настроен — и ничего не запросит. Шаблоны Заготовки с подстановкой значений сообщения: {channel_name}, {channel_username}, {author_name}, {author_username}. Например, «Спасибо {author_name} из {channel_name}!» превращается в «Спасибо Иван из Новостной канал!». Первые пять шаблонов — быстрые кнопки прямо в редакторе, остальные — в каталоге с поиском и фильтром по типу. Публикация Комментарий уходит ответом в обсуждение поста от выбранного аккаунта. Если у поста нет обсуждения, приложение объяснит это понятной ошибкой, и комментарий останется неопубликованным. На любой комментарий в ветке можно ответить — ответ тоже публикуется в обсуждении. Перед публикацией проверяются лимиты проекта: сработал дневной лимит — будет отказ с названием лимита. Живая ветка Обсуждение под постом видно прямо в редакторе и обновляется в реальном времени: новые комментарии, правки и удаления приходят без перезагрузки, счётчик комментариев поста растёт. Аналитика комментариев За период — сегодня, неделя, месяц или всё время: всего комментариев, уникальных каналов, в среднем в день, полученные ответы и их доля, разбивка по дням, по проектам и типам, топ-10 каналов — и всё это в сравнении с прошлым периодом в процентах. Что дальше Откуда берутся цели — в разделе Источники, помощник внутри проектов — кнопка «Вызвать агента», о ней — в разделе ИИ-агент. ← Оглавление документации ### Лента сообщений «Лента сообщений» — общий список всего собранного из всех источников: новые сверху. Здесь контент конкурентов и партнёров просматривается, размечается тегами и превращается в идеи — быстро и без лишних кликов. Фильтры по тегам — несколько тегов, «все совпадают»; по источникам и авторам — несколько, «любой из»; по статусу — без тегов / с тегами / отмечено / скрыто; по периоду — сегодня, неделя, месяц; по прочитанности, по категориям и по флагам обработки; плюс поиск по заголовку, тексту и автору. Фильтры применяются сразу; активные видны в панели и снимаются одним кликом. Статистика над лентой Над лентой — итоги: всего сообщений (за всё время, сегодня, за час), сколько без тегов, с тегами, отмечено, без категории, без маршрута и сколько непрочитанных. Клик по цифре включает соответствующий фильтр — например, клик по «непрочитанным» оставляет в ленте только их. Просмотр сообщения Текст показывается в формате Telegram: спойлеры открываются кликом, цитаты сворачиваются. До четырёх превью-картинок, если их больше — «+N». Если у сообщения есть внешний адрес, рядом плашка «открыть оригинал». Три макета Лента переключается между макетами — список, компактно, карточки — на лету, без перезагрузки и потери фильтров. Выбор макета удобен и клавиатурой. Разбор Звёзды — отметить важное; отметка сохраняется; Скрытие — убрать сообщение из текущего вида; Теги — добавить, убрать или создать на одном сообщении, а также массово на выделенных; Категории — назначить прямо с ленты. Клавиатурный триаж Лента управляется с клавиатуры: j/k — движение по ленте, Enter — открыть, t — тег, s — звезда, x — выделить, X — выделить всё, a — массовые теги, r — скрыть, 1/2/3 — макеты, / — поиск, ? — памятка по клавишам. Разбор сотен сообщений перестаёт быть рутиной. Прочитанное При прокрутке лента сама помечает сообщения прочитанными — маркер идёт только вперёд, назад ничего не «перечитывается». Для источников через личный аккаунт отметка синхронизируется и с самим Telegram: прочитанное в одном месте — прочитано везде. В реальном времени Новые сообщения появляются сверху без перезагрузки, счётчики обновляются, дубли не возникают. Старая история подтягивается кнопкой «загрузить старше» — следующими 50 сообщениями, пока Telegram отвечает новыми. Что дальше Откуда берётся лента — в разделе Источники, кто пишет — в Авторы, как сообщение становится идеей — в Очередь контента. ← Оглавление документации ### Маршрутизация «Маршрутизация» — автоматический разбор собранного: сообщения из источников сами получают категории, целевые каналы и превращаются в идеи в очереди. Это избавляет от ручного прокручивания ленты в поисках ценного: контент сам находит дорогу к вашим каналам и очередям. Категории Категории — цветные метки источников и сообщений. У источника с категориями все его сообщения получают их автоматически; сообщения без категорий классифицирует маршрутизация. Роутеры — способы определить категорию Роутер — это правило классификации одного из трёх типов: Ключевые слова — фразы без учёта регистра, режим «любой» (достаточно одной) или «все» (нужны все), стоп-фразы (если есть — сообщение не подходит); при совпадении роутер предлагает свои категории; ИИ (LLM) — OpenAI-совместимая модель сама относит текст к категориям из заданного вами списка; можно задать свой промпт; модель не может выйти за рамки вашего списка категорий. LLM — это большая языковая модель, тот же класс технологий, что чат-боты; Скрипт — внешняя программа получает сообщения на вход и возвращает категории; тип для тех, кто умеет программировать. Цепочка роутеров Включённые роутеры работают по порядку, каждый на новом сообщении классифицируется один раз — первый совпавший выигрывает, остальные уже не спрашиваются. Сбой одного роутера (например, неверный ключ ИИ) не останавливает остальных: цепочка просто идёт дальше. Сообщение без совпадения остаётся без категорий — и без маршрута. Правила «категория → канал» Каждой категории можно указать канал назначения с действием «добавить в очередь» и, по желанию, целевым слотом расписания. У одной категории может быть несколько каналов — по сообщению тогда создаётся по идее в очереди каждого. Что получается У сообщения появляются категории и список целевых каналов. Для каждого правила «добавить в очередь» в очереди канала создаётся идея с текстом сообщения (и целевым слотом, если задан) — дальше её ведут по конвейеру как обычную: черновик, проверка, расписание. Маршрутизация выполняется один раз, в момент сбора сообщения — и виден результат сразу и на сообщении, и в очередях. Тест-панель Любой роутер можно проверить на примере текста: совпадёт ли, какие категории предложит, что ответил движок и сколько это заняло. Проверка ничего не меняет в данных — безопасно экспериментировать в любом количестве. Что дальше Откуда берутся сообщения — в разделе Источники, как читать ленту — в Лента сообщений, что происходит с идеей дальше — в Очередь контента. ← Оглавление документации ### Начало работы Telegram Agent — это один интерфейс для всего вашего маркетинга в Telegram. Свои каналы: публикации в удобном редакторе и публикация по расписанию, без рутины. Чужие каналы и чаты: наблюдение за конкурентами и партнёрами через источники. Разбор собранного: лента сообщений, авторы, теги — чтобы ничего ценного не терялось. И ИИ-комментирование чужих каналов, которое вежливо напоминает о вашем канале там, где обсуждают вашу тему. Для кого Для владельцев каналов, маркетологов и предпринимателей, которые ведут Telegram без программистов. Если вы публикуете вручную, следите за конкурентами в ленте вручную и мечтаете об одном месте, где видно всё — от расписания постов до того, что говорят чужие каналы, — это ваш инструмент. Системные требования Любой Linux-хост с Docker: приложение разворачивается одним контейнером, все данные — в постоянном хранилище /data, база данных встроена и работает из коробки. Пошаговая инструкция — в разделе Установка. Первый вход Саморегистрация открыта, пока в приложении не создан ни один пользователь: первый зарегистрировавшийся становится администратором. Альтернатива — задать логин и пароль переменными окружения при запуске (пароль передаётся SHA-256-хэшем). Если не задано ничего, приложение само выдаст одноразовый пароль и напечатает его в консоль. Сессия входа живёт 90 дней — повторно входить часто не придётся. Подробнее — в разделе Установка. Интерфейс Главный экран — раздел «Каналы»: карточка каждого вашего канала с подписчиками, просмотрами за 24 часа, вовлечённостью, последним опубликованным и следующим запланированным постом — и объединённая хронология недели всех каналов. «Вовлечённость» — это доля подписчиков, которые открыли пост: она показывает, насколько контент интересен аудитории. Главное меню ведёт в разделы продукта: Каналы, Очередь, Боты, Аккаунты, Источники, Сообщения, Авторы, Комментарии, Чаты, Настройки и API-ключи. Статус лицензии — в подвале главного экрана: сколько дней осталось в бесплатном периоде или имя владельца лицензии. Первые шаги Создайте бота в @BotFather и вставьте его токен в раздел «Боты». Токен — секретный ключ доступа бота, его выдаёт @BotFather; через бота приложение подключается к каналам. Либо подключите личный Telegram-аккаунт в разделе «Аккаунты» — понадобится номер телефона и код подтверждения; Подключите свой канал в разделе «Каналы» — через бота (бот должен быть администратором канала) или из списка каналов вашего аккаунта; Настройте слоты расписания — дни недели и времена, когда вы обычно публикуете: дальше даты публикации будут считаться сами; Напишите первый пост в редакторе и опубликуйте его — сразу или в ближайший слот расписания; Добавьте источник — RSS-ленту или чужой канал — и откройте ленту сообщений: собранное уже там. Язык и тема Язык интерфейса определяется брендом при установке (TELEGRAM_AGENT_BRAND=pastukhov — русский, xedant — английский). Тема — тёмная или светлая — переключается в интерфейсе одной кнопкой, так же как и звуки уведомлений. Ярлык на рабочий стол Приложение можно установить как PWA — обычный ярлык на рабочий стол или в меню приложений из браузера, без магазинов и установщиков. Открывается как отдельное окно. Интернет при этом нужен: офлайн-режима нет. Что дальше Подключение и настройка каналов — в разделе Каналы, написание постов — в Публикации, расписание — в Расписание. Конвейер от идеи до публикации — в Очередь контента. Наблюдение за чужими каналами начинается с Источников, разбор собранного — с Ленты сообщений и Авторов. Автоматический разбор контента — в Маршрутизации, вежливые комментарии под постами других — в Комментарии с ИИ, цифры по каналам — в Аналитике, помощник внутри продукта — в ИИ-агент. ← Оглавление документации ### Очередь контента «Очередь» — конвейер контента канала: Идеи → Черновики → Проверка → Расписание → Опубликовано. Одна вкладка показывает, что накопилось, что готово к правке, что ждёт вашего «да», что запланировано и что уже вышло. Плюс общий пул тегов и ключевые тэггеры, которые размечают собранные сообщения сами. Конвейер Пять вкладок с живыми счётчиками на странице канала: Идеи — сырые заготовки: текст, медиа, слот, сгруппированы по дате создания. У идеи, созданной из сообщений конкурентов, видно происхождение — источник, заголовок, автор и ссылка на ленту; Черновики — рабочие копии. Порядок задаётся перетаскиванием и сохраняется; «Редактировать в редакторе» открывает полноэкранный редактор; Проверка — шлюз перед расписанием: «Утвердить» (если слот не задан, откроется его выбор) или «Отклонить» с причиной; Расписание — список по датам (у каждого элемента — «редактировать», «вернуть на проверку», «удалить») и недельный календарь: элементы лежат в ячейках слотов, в цвете слота; Опубликовано — сгруппировано по датам публикации; элемент открывает настоящий пост в Telegram. Создание вручную Элемент создаётся кнопками «Добавить идею» или «Новый черновик» в очереди — или сразу пишется пост в редакторе: он сам появится среди черновиков. Переходы между состояниями гибкие: идея может пойти сразу в расписание или в отклонённые, черновик — в проверку и так далее. Идеи из чужих сообщений В ленте сообщений у каждого сообщения есть действие «захватить идею»: идея создаётся в выбранном канале и ссылается на исходные сообщения — их происхождение видно прямо в списке идей. Авто-идеи создаёт маршрутизация: сообщение, подошедшее под правило, само попадает в очередь канала с текстом и названием источника — подробнее в разделе Маршрутизация. Теги и тэггеры Теги — общий пул цветных меток для сообщений, авторов и тэггеров: создание, переименование, цвет, описание и поиск; удаление тега убирает его назначения везде сразу. Ключевой тэггер — правило «если в тексте есть слово, назначить эти теги»: ключевые слова по одному на строку, режим «любой» (достаточно одного) или «все» (нужны все), стоп-слова, которые блокируют совпадение, и выбор полей для поиска — текст, заголовок, автор. Тэггер можно проверить на примере текста (ничего не меняя в данных), запустить по всем уже собранным сообщениям или оставить работать автоматически: каждое новое сообщение проверяется всеми включёнными тэггерами по порядку, сбой одного не останавливает остальных. Теги автора наследуются всеми его новыми сообщениями — подробнее в разделе Авторы. Что дальше Где смотреть и разбирать сообщения, из которых рождаются идеи — в разделе Лента сообщений, как слоты определяют даты — в Расписание, как устроен редактор — в Публикации. ← Оглавление документации ### Публикации Раздел «Публикации» — про написание и отправку постов: редактор с форматированием как в Telegram, медиа и альбомы, предпросмотр и публикация сейчас. Редактор открывается из очереди, хронологии или карточки канала. Редактор постов Текст форматируется так же, как в Telegram: жирный, курсив, подчёркивание, зачёркивание, спойлер, код, цитаты и ссылки — с живым предпросмотром рядом. Черновик сохраняется сам через пару секунд после правки: не нужно помнить о кнопке. Лимит длины — 4096 символов, а с приложенным медиа — 1024; счётчик краснеет, когда вы подходите к границе (сам Telegram всё равно оставит последнее слово за собой). Медиа фото — до 10 МБ; видео, документы, аудио и другие файлы — до 50 МБ; добавление — выбором файла, перетаскиванием или вставкой изображения; удаление — с подтверждением; лишний файл не уйдёт в публикацию. Альбомы и подписи Два и более файла в одном посте публикуются альбомом — до десяти изображений или видео, как позволяет Telegram. У каждого файла может быть своя подпись, и у каждой подписи свой счётчик символов. Ссылки на YouTube Ссылку на YouTube можно добавить отдельным вложением: адрес проверяется на сервере и приводится к единому виду, а в редакторе ссылка показывается карточкой с миниатюрой и названием. Адрес, который не является YouTube-ссылкой, будет отклонён. При публикации ссылка уходит отдельным сообщением, чтобы Telegram показал встроенный предпросмотр видео. Предпросмотр «себе» Перед публикацией пост можно отправить себе — в выбранный канал, подключённый через личный аккаунт, с пометкой «Предпросмотр — {канал}». Так видно, как пост будет выглядеть у подписчиков: текст, одиночное медиа, альбом или карточки ссылок. Выбор канала запоминается, и в следующий раз предпросмотр — в один клик. Публикация «Опубликовать сейчас» — пост сразу уходит в свой канал, а по желанию и в дополнительные каналы (кросс-постинг), каждый канал обрабатывается независимо; Тихая отправка — без push-уведомлений подписчикам; Защита контента — запрет копирования и пересылки (для каналов, подключённых через бота); Авто-закреп — закрепить последнее опубликованное сообщение; Пометка «реклама» — если пост является рекламой. Что происходит после публикации Для каждого канала создаётся запись поста: текст, время публикации, просмотры (сначала ноль). Очередь помечает элемент опубликованным, канал получает обновление в реальном времени, и пост появляется в контенте канала и в хронологии. Если что-то пошло не так Если доставка в один из каналов не удалась, остальные всё равно получают пост — сбой одного канала не останавливает остальных. Если не удалось доставить вообще никуда, черновик остаётся в очереди на своём месте и ничего не теряется — можно повторить. Что дальше Как устроен путь поста от идеи до публикации — в разделе Очередь контента, как публиковать без ручного участия — в Расписание. ← Оглавление документации ### Расписание Раздел «Расписание» — недельный график публикаций канала: слоты, сетка «время × день недели», оценочные даты и авто-публикация. Он превращает «надо бы запостить» в предсказуемый поток контента. Слоты — недельный график канала Слот — это набор дней недели (Пн–Вс) с одним или несколькими временами: например, Пн/Ср/Пт в 10:00 и 18:00. У слота есть имя, описание, цвет и иконка, слот можно выключить и включить. Имя можно не придумывать — оно подсказывается из выбранных дней и времён. Сетка расписания Расписание рисуется сеткой: строки — времена, столбцы — дни недели. Занятая ячейка показывает слот своим цветом, пустая приглашает создать слот ровно на этот день и время — они подставятся сами. Клик по ячейке и есть создание; отдельная кнопка «Добавить слот» создаёт слот с понедельником по умолчанию. Недопустимые времена отбрасываются тихо, а слот без дня или без времени не сохранится — приложение объяснит, чего не хватает. Часовой пояс Времена слотов задаются в часовом поясе канала (по умолчанию UTC, выбирается в настройках канала) — и редактор слота показывает, в каком поясе вы вводите времена. Переход на летнее время учитывается при расчёте наступлений; если часовой пояс не удалось распознать, расчёт безопасно вернётся к UTC. Дата публикации считается сама У элемента, поставленного в слот, дата публикации выводится из его позиции в очереди слота: первый берёт ближайшее наступление слота, следующий — следующее, и так далее. Расчёт смотрит на 60 дней вперёд. Дата нигде не хранится, поэтому перестановки в очереди тут же двигают все даты — ничего пересчитывать вручную не нужно. Подсказки при планировании «Ближайший слот» — самое раннее наступление любого включённого слота канала; «Ближайший пустой слот» — ближайшее наступление слота, где ещё нет запланированного контента. Если на 30 дней вперёд свободного наступления нет, приложение честно скажет об этом. Авто-публикация Когда наступает момент слота, первый запланированный элемент публикуется сам — при условии, что у канала включена авто-публикация. Один пост за одно наступление, без «догоняния»: если сервер был выключен в момент слота, пропущенное наступление не публикуется, а следующий слот берёт следующий пост. Если авто-публикация выключена, слоты не публикуют ничего сами — ручная публикация при этом работает как обычно. Что дальше Как контент попадает в слоты — в разделе Очередь контента, как устроена сама публикация — в Публикации. ← Оглавление документации ### Лицензирование Telegram Agent Все лицензии — пожизненные: единоразовый платёж, без подписок, без ограничений на количество каналов, источников и постов. Лицензирование работает офлайн, ваш ключ действительно пожизненный. Ключ активируется в диалоге лицензии (подвал главного экрана) или через переменные окружения TELEGRAM_AGENT_LICENSE/TELEGRAM_AGENT_LICENSE_ARG. Каждая лицензия включает 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Важное преимущество: по-настоящему лицензия нужна только для отправки сообщений в чат агента. Каналы, публикации, расписание, очередь, источники, лента сообщений, комментарии и аналитика работают и без неё — платная лицензия добавляет именно ИИ-диалог, а не разблокирует удержанные функции. Бесплатный период Telegram Agent можно попробовать бесплатно — каналы, публикации, расписание, очередь, источники, лента, авторы, комментарии и аналитика работают без лицензии с первого дня. Ограничен только чат с ИИ-агентом: кнопки «Вызвать агента» появляются после подключения вашего Pastukhov Agent, но без лицензии сообщения в чат не отправляются — интерфейс откроет диалог лицензии. Никакой привязки — ваши данные остаются вашими: всё хранится в вашем volume /data, а доступ к Telegram идёт через ваши аккаунты и ботов. Персональная лицензия — 19 700 ₽ Все функции Telegram Agent без ограничений для частных лиц: неограниченное количество установок на любых ваших компьютерах и серверах. 19 700 ₽ единоразовый платёж за пожизненную лицензию. 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Корпоративная лицензия — 49 700 ₽ Все функции Telegram Agent без ограничений для всех сотрудников компании или команды, включая внешних подрядчиков. 49 700 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Сервисная лицензия — 97 000 ₽ Неограниченное количество экземпляров Telegram Agent под вашим доменом + полный исходный код с правом изменять его как угодно, обновлять UI или брендинг в соответствии с вашей компанией или доменом, тесно интегрировать с вашей инфраструктурой. Может использоваться любым посетителем вашего домена как часть ваших сервисов. 97 000 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена сервисная лицензия на Pastukhov Agent, который является частью продукта. Исходный код Agent доступен только при покупке сервисной лицензии на сам Pastukhov Agent. Для бесшовных обновлений рекомендую изменять только брендинг и интеграцию, чтобы минимизировать усилия при слиянии с новыми функциями и исправлениями. Бесплатные лицензии В некоторых случаях я готов подарить бесплатную лицензию: если вы нашли баг или уязвимость безопасности в любом из моих продуктов (у меня буквально нет бюджета на платные баг-баунти, к сожалению); если вы предложили дельную идею по улучшению моих продуктов (кодить не обязательно, достаточно полезной идеи — вы получите лицензию, если я включу её в план разработки); если вы активный контрибьютор open-source проектов (я люблю open-source, просто у меня нет времени поддерживать свои продукты как open-source); если вы ведёте популярный блог, Telegram-канал или YouTube-канал о программировании, AI, маркетинге, бизнесе, финансах или IT в целом (упоминание или реклама не требуются, это полностью на ваше усмотрение); если вы активный партнёр-аффилиат (продажи не обязательны, но у вас должен быть хотя бы какой-то контент, посвящённый моим продуктам). Если что-то из перечисленного про вас, просто напишите мне в Telegram. Укажите имя и email, и я сгенерирую ваш персональный пожизненный лицензионный ключ. ### Установка Telegram Agent Telegram Agent — программа для управления вашим маркетингом в Telegram, которую вы запускаете на своём сервере. Разворачивается одним Docker-контейнером, все данные хранятся в постоянном volume /data. Своя база данных не нужна: встроенная SQLite работает из коробки, PostgreSQL подключается по желанию. Минимальные требования Достаточно любого Linux-хоста с Docker (например, недорогого VPS). Всё остальное уже встроено в образ: веб-сервер приложения (ASP.NET Core 9 runtime); база данных SQLite — работает без настройки; для чата с ИИ-агентом понадобится адрес и API-ключ вашего Pastukhov Agent — но это необязательно: без них работает всё, кроме чата с агентом. Docker Compose Создайте файл compose.yml и запустите docker compose up -d: services: telegram-agent-ru: image: maxpastukhov/telegram-agent:latest container_name: telegram-agent-ru ports: - "3998:80" volumes: - telegram-agent-data-ru:/data environment: - ASPNETCORE_ENVIRONMENT=Production - ASPNETCORE_URLS=http://+:80 - TELEGRAM_AGENT_BRAND=pastukhov - TELEGRAM_AGENT_DATA=/data # Optional "Call Agent" integration (leave unset to hide all Agent chat surfaces): # - AGENT_API_URL=https://your-agent-host # - AGENT_API_KEY=your-agent-API-key # Serve from a first-level subfolder (see ../subfolder-hosting.md): # - TELEGRAM_AGENT_BASE_PATH=/telegram restart: unless-stopped sysctls: fs.inotify.max_user_watches: "524288" fs.inotify.max_user_instances: "512" volumes: telegram-agent-data-ru: После запуска интерфейс будет доступен на порту 3998: http://localhost:3998. Две строки sysctls повышают системные лимиты отслеживания изменений файлов — они нужны, чтобы новые сообщения из источников и посты подхватывались мгновенно, в реальном времени. Без них на больших потоках часть обновлений может не дойти до интерфейса. Переменные окружения Настройки приложения передаются переменными окружения — так удобно задать их один раз в compose.yml и менять без правки кода: ПеременнаяНазначениеПо умолчаниюTELEGRAM_AGENT_BRANDбренд и язык интерфейса: pastukhov (русский) или xedant (английский)xedantTELEGRAM_AGENT_DATAпапка данных (в контейнере — /data)/dataTELEGRAM_AGENT_LOGINлогин первого пользователя (пароль — SHA-256-хэш в TELEGRAM_AGENT_PASSWORD)— (саморегистрация)TELEGRAM_AGENT_PASSWORDSHA-256-хэш пароля, не сам пароль: echo -n "ваш-пароль" | sha256sum—TELEGRAM_AGENT_LICENSEлицензионный ключ (или путь к файлу с ним)— (без чата с агентом)TELEGRAM_AGENT_LICENSE_ARGлицензионный ключ (приоритетнее TELEGRAM_AGENT_LICENSE)—AGENT_API_URLадрес Pastukhov Agent для чата с агентом— (кнопки «Вызвать агента» скрыты)AGENT_API_KEYAPI-ключ Pastukhov Agent—TELEGRAM_AGENT_BASE_PATHразмещение в подпапке первого уровня (например, /telegram)—TELEGRAM_AGENT_DBстрока подключения PostgreSQL; пустое значение — встроенная SQLiteSQLite (/data/data.db) Обратите внимание: TELEGRAM_AGENT_PASSWORD содержит не пароль, а его SHA-256-хэш — «отпечаток», по которому пароль восстановить нельзя. Хэш вычисляется командой echo -n "ваш-пароль" | sha256sum. При входе приложение хэширует введённый пароль и сравнивает с заданным значением. Первая настройка выполняется прямо в интерфейсе: саморегистрация открыта, пока не создан ни один пользователь — первый зарегистрировавшийся становится администратором. Если пользователей ещё нет и логин с паролем не заданы переменными, приложение само создаст одноразовый пароль (логин code) и выведет его в консоль контейнера. Сессия входа живёт 90 дней. Хранение данных Все постоянные данные живут в volume /data и переживают пересоздание контейнера: /data/data.db — база данных SQLite (когда не используется PostgreSQL); /data/sessions/ — сессии подключённых Telegram-аккаунтов; /data/media/ — загруженные медиафайлы; /data/keys/ — ключ подписи входа (JWT); /data/auth/ — ключи защиты данных. Volume обязателен: без него вы потеряете подключённые аккаунты, каналы и настройки при первом же docker compose down. Первый вход Откройте интерфейс в браузере и зарегистрируйтесь первым пользователем — вы станете администратором. Либо войдите под логином, заданным переменными окружения (в переменной — хэш, при входе вводите сам пароль) или выданным в консоли контейнера. Сразу после входа можно сменить язык и тему интерфейса. Настройка после запуска Сначала подключите ботов — токены создаются в @BotFather за минуту и проверяются автоматически — и (по желанию) личные Telegram-аккаунты по номеру телефона и коду. Затем подключите каналы: через бота достаточно имени и токена, через аккаунт — выбрать из списка ваших каналов. Подробнее — в разделе Каналы. Чат с ИИ-агентом включается переменными AGENT_API_URL и AGENT_API_KEY: появляются кнопки «Вызвать агента» на страницах канала и очереди и панель чата. Подробнее — в разделе ИИ-агент. Лицензия Лицензионный ключ активируется в диалоге лицензии (подвал главного экрана) или передаётся переменными TELEGRAM_AGENT_LICENSE/TELEGRAM_AGENT_LICENSE_ARG при запуске. Важное преимущество: без лицензии работает всё — каналы, публикации, расписание, очередь, источники, комментарии и аналитика. Лицензия нужна только для отправки сообщений в чат агента. Подробнее — на странице Лицензирование. Docker CLI с файлом .env Можно запустить Telegram Agent и без compose — командой docker run, сохранив переменные окружения в файле .env: # .env ASPNETCORE_ENVIRONMENT=Production ASPNETCORE_URLS=http://+:80 TELEGRAM_AGENT_DATA=/data TELEGRAM_AGENT_BRAND=pastukhov TELEGRAM_AGENT_LOGIN=admin TELEGRAM_AGENT_PASSWORD=sha256-хэш-пароля # опционально: чат с ИИ-агентом через Pastukhov Agent # AGENT_API_URL= # AGENT_API_KEY= # опционально: лицензионный ключ # TELEGRAM_AGENT_LICENSE= docker run -d \ --name telegram-agent-ru \ --env-file .env \ -p 3998:80 \ -v telegram-agent-data-ru:/data \ --sysctl fs.inotify.max_user_watches=524288 \ --sysctl fs.inotify.max_user_instances=512 \ --restart unless-stopped \ maxpastukhov/telegram-agent:latest Флаг --env-file считывает все переменные из файла. Отдельные значения можно переопределить дополнительными флагами -e после него, например -e TELEGRAM_AGENT_BRAND=xedant. ← Вернуться на главную раздела Telegram Agent ### ИИ-агент для аналитики Быстрый анализ и визуализация данных: панели, в которые можно погрузиться глубже, чем в Grafana Analytics Agent создан аналитиком, который больше 25 лет работает с данными и их визуализацией, — это инструмент для настоящей аналитики, а не только для контроля. Панели здесь можно не просто смотреть, а погружаться в данные: фильтровать, сверять, считать в Python. Отчёты, графики и таблицы можно просить добавить у ИИ — обычным языком, не выходя из интерфейса. А о том, что что-то пошло не так, система сообщит сама: правила оповещений проверяют данные по расписанию и шлют сигнал в Telegram, Slack или на почту. Документы-отчёты из блоков: графики, таблицы, метрики 15 типов блоков — от Markdown до Jupyter Notebook Семь типов графиков: линии, столбцы, точки, свечи, box plot SQLite, PostgreSQL и ClickHouse из коробки Автоопределение схемы и кэширование таблиц и запросов Lakehouse: запросы к Parquet-файлам без настройки источников Интерактивные таблицы с постраничной выдачей и ссылками из ячеек Просите агента добавить отчёт, график или таблицу Кнопка «Исправить с помощью ИИ» рядом с любой ошибкой Работает на вашем центральном Pastukhov Agent — без лишних ключей и подписок Встроенные проверки документов, блоков и SQL-запросов Авто-коррекция: ошибки видны до публикации отчёта Jupyter Notebooks: Python внутри отчёта pandas, NumPy, Matplotlib, Seaborn для анализа данных Шаблоны Scriban и переменные в отчётах Единая боковая панель и чат с агентом на всех страницах Обновления отчётов в реальном времени через SignalR Отчёты — JSON-файлы: Git, версионирование, мгновенный reload 13 типов переопределений оформления блоков Публичные отчёты и разграничение доступа Полная русская локализация интерфейса Self-hosted: один Docker-контейнер, всё в volume /data Создан аналитиком с более чем 25-летним опытом Оповещения: правила на запросах и уведомления в 22 канала — от Telegram до email Установка Документация FAQ Лицензирование Отчёты из блоков Документ — сетка из блоков шириной от 1 до 24 колонок Перетаскивание блоков мышью (drag & drop) Отчёты хранятся как JSON-файлы — версионируйте в Git Изменения подхватываются мгновенно: в реальном времени через SignalR Подробнее Пятнадцать типов блоков Графики, таблицы, метрики и спидометры-гейджи Markdown-текст и заголовки разделов Закладки-ссылки и списки свойств сущностей Jupyter Notebooks как полноценные блоки отчёта Подробнее Графики для любых данных Линии, столбцы, точечные и кольцевые диаграммы Гистограммы распределения и box plot с квартилями Финансовые свечи OHLC с объёмом торгов Серии, стеки, сглаживание, легенды и анимации Подробнее Подключение к вашим базам SQLite, PostgreSQL, ClickHouse Автоопределение схемы источников данных Кэширование таблиц и результатов запросов Запросы проверяются до выполнения — ошибки видны сразу Подробнее ИИ прямо в отчёте «Добавь график продаж по неделям» — и блок появится Новые отчёты, графики и таблицы обычным языком Кнопка «Исправить с помощью ИИ» рядом с ошибкой Агент редактирует отчёт напрямую — обновление мгновенно Подробнее Проверки и авто-коррекция Валидация документов: блоки, ID, ширины, конфигурации Проверка SQL-запросов до выполнения Фоновая валидация всех отчётов с кэшем результатов Ошибки видно до публикации — с кнопкой исправления ИИ Подробнее Jupyter Notebooks Python внутри отчёта: исполнение через papermill pandas, NumPy, Matplotlib, Seaborn из коробки Автоматическое окружение и установка зависимостей Шаблоны: базовый, анализ данных, машинное обучение Подробнее Lakehouse Файловый браузер всех ваших данных Запросы к Parquet-файлам через Apache Arrow SQLite-файлы и Markdown без настройки источников Схемы таблиц и выборки прямо из браузера Подробнее Переменные и шаблоны Динамические отчёты на движке Scriban Переменные в путях и содержимом документов Селекторы диапазона дат и временных интервалов Один шаблон — сколько угодно отчётов Подробнее Оформление без границ 13 типов переопределений оформления блоков Цвета чисел по порогам, форматы с префиксами и суффиксами Переименование колонок и ссылки из ячеек таблиц Скрытие серий, стили линий, столбцов и точек Подробнее Оповещения — система следит сама Правило — это запрос к данным с условием: продажи упали ниже порога — сигнал вам Проверка по расписанию: от каждых 10 секунд до раза в день 22 канала уведомлений: Telegram, Slack, email, webhook и другие Тишина и график: не беспокоить по ночам, в выходные и в праздники История срабатываний и журнал отправок: кто, когда и что получил Запись результатов проверок в базу — для своих отчётов Подробнее Агент-помощник и боковая панель Единая боковая панель на всех страницах: разделы, документы и поиск Чат с агентом открывается из любого раздела — не нужно переключаться между приложениями Поручения обычным языком: добавь график, исправь ошибку, подготовь отчёт Очередь промптов с автозапуском: агент сам выполняет задачи одну за другой Выбор модели и навыка для каждого запроса Поиск по документам по мере ввода и недавняя история Подробнее Установка Документация FAQ Лицензирование Бесплатный период Бесплатное использование в течение 30 дней — триал встроен в Docker-образ. Даже после истечения бесплатной лицензии приложение остаётся полностью функциональным, кроме запуска новых запросов к вашим данным. Никакой привязки — отчёты остаются вашими: документы хранятся обычными JSON-файлами, а данные — в ваших базах. Персональная лицензия Все функции Analytics Agent без ограничений для частных лиц: неограниченное количество установок на любых ваших компьютерах и серверах. 19 700 ₽ единоразовый платёж за пожизненную лицензию. 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Корпоративная лицензия Все функции Analytics Agent без ограничений для всех сотрудников компании или команды, включая внешних подрядчиков. 49 700 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Сервисная лицензия Неограниченное количество экземпляров Analytics Agent под вашим доменом + полный исходный код с правом изменять его как угодно, обновлять UI или брендинг в соответствии с вашей компанией или доменом, тесно интегрировать с вашей инфраструктурой. Может использоваться любым посетителем вашего домена как часть ваших сервисов. 97 000 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена сервисная лицензия на Pastukhov Agent, который является частью продукта. Исходный код Agent доступен только при покупке сервисной лицензии на сам Pastukhov Agent. Для бесшовных обновлений рекомендую изменять только брендинг и интеграцию, чтобы минимизировать усилия при слиянии с новыми функциями и исправлениями. Бесплатные лицензии В некоторых случаях я готов подарить бесплатную лицензию: если вы нашли баг или уязвимость безопасности в любом из моих продуктов (у меня буквально нет бюджета на платные баг-баунти, к сожалению); если вы предложили дельную идею по улучшению моих продуктов (кодить не обязательно, достаточно полезной идеи — вы получите лицензию, если я включу её в план разработки); если вы активный контрибьютор open-source проектов (я люблю open-source, просто у меня нет времени поддерживать свои продукты как open-source); если вы ведёте популярный блог, Telegram-канал или YouTube-канал о программировании, AI, аналитике, маркетинге, бизнесе, финансах или IT в целом (упоминание или реклама не требуются, это полностью на ваше усмотрение); если вы активный партнёр-аффилиат (продажи не обязательны, но у вас должен быть хотя бы какой-то контент, посвящённый моим продуктам). Если что-то из перечисленного про вас, просто напишите мне в Telegram. Укажите имя и email, и я сгенерирую ваш персональный пожизненный лицензионный ключ. ### FAQ Analytics Agent Чем Analytics Agent отличается от Grafana? Grafana сфокусирована на observability — наблюдении за метриками систем. Analytics Agent — про интерактивную визуальную аналитику: глубокое погружение в данные, а не только панели индикаторов. Отчёты правятся ИИ обычным языком, внутрь встраиваются Jupyter Notebooks, документы — это JSON-файлы под Git, а источников достаточно трёх строк подключения. Продукт создан аналитиком с более чем 25-летним опытом работы с данными. Как ИИ добавляет отчёты и графики? Рядом с любым блоком или ошибкой есть кнопка ИИ: опишите словами, что нужно («добавь график продаж по неделям», «сделай таблицу топ-10 клиентов»), выберите модель — откроется чат агента. Агент редактирует JSON отчёта напрямую, file watcher подхватывает изменение, и график появляется на экране мгновенно. Какие базы данных поддерживаются? SQLite, PostgreSQL и ClickHouse как полноценные источники с автоопределением схемы. Плюс Lakehouse: запросы к Parquet- и SQLite-файлам прямо из файлового браузера, без настройки источников. Нужно ли уметь программировать? Для чтения отчётов — нет. SQL полезен для своих запросов, но ИИ напишет запрос за вас по словесному описанию. Для сложной аналитики — Jupyter Notebook с Python прямо в отчёте (pandas, NumPy, Matplotlib, Seaborn уже в комплекте). Что нужно для запуска? Docker-хост: один контейнер, volume для данных, логин и SHA-256-хэш пароля в переменных окружения. ИИ-функции включаются указанием URL и API-ключа Pastukhov Agent. Можно ли использовать без Pastukhov Agent? Да: отчёты, графики, таблицы, источники данных, проверки, Jupyter и Lakehouse работают самостоятельно. Интеграция добавляет ИИ-кнопки — добавление и исправление блоков обычным языком. Где хранятся отчёты? В виде JSON-файлов в volume /data/documents — можно версионировать в Git, редактировать руками, переносить копированием. Изменения подхватываются мгновенно без перезагрузки. ### Документация Analytics Agent Начало работы Что такое Analytics Agent, первый вход, интерфейс, первый отчёт. Отчёты и документы Документы из блоков, сетка 24 колонки, JSON-файлы, обновления в реальном времени. Типы блоков 15 типов контента: от Markdown-текста до Jupyter Notebook. Графики Семь типов графиков и гейджи: параметры серий, стеков, легенд. Оформление 13 типов переопределений: цвета, форматы, ссылки, стили. Источники данных SQLite, PostgreSQL, ClickHouse: подключение, схема, кэш. Запросы SQL-запросы: выполнение, валидация, кэширование, производительность. Переменные и шаблоны Scriban-шаблоны, переменные документов, селекторы дат. Интеграция с агентом Чаты и боковая панель на всех страницах, поручения языком, очередь промптов. Проверки и авто-коррекция Валидация документов, блоков и запросов; фоновая валидация. Jupyter Notebooks Python в отчётах: papermill, pandas, Matplotlib, шаблоны. Lakehouse Файлы Parquet, SQLite, Markdown: просмотр и запросы. Установка Docker Compose, переменные окружения, первый вход. Оповещения Правила на запросах, 22 канала уведомлений, тишины и история. ### Jupyter Notebooks Блок NotebookContent встраивает полноценный Jupyter Notebook прямо в отчёт — рядом с графиками и таблицами. Сложная статистика, прогнозы и ML-модели живут там же, где бизнес-отчёт. Исполнение ноутбук исполняется через papermill + ipykernel; результат отображается рядом с остальными блоками отчёта; таймаут исполнения — 10 минут; у блока видны статус и время последнего сохранения. Автоматическое окружение Python 3 уже встроен в Docker-образ — ничего ставить на хост не нужно; сервис сам создаёт virtualenv при первом запуске ноутбука; зависимости ставятся из data/requirements.txt — файл засеивается при первом запуске, его можно дополнять своими библиотеками. Встроенные библиотеки pandas и NumPy — обработка данных; Matplotlib и Seaborn — визуализация; SQLAlchemy — доступ к базам данных. Шаблоны и хранение шаблоны ноутбуков: basic, data-analysis, machine-learning; два способа хранения: встроенный JSON ноутбука в блоке или внешний файл .ipynb; у блока отображается счётчик ячеек. Доступ к данным Через SQLAlchemy ноутбук подключается к вашим базам, а файлы Lakehouse (Parquet, SQLite, Markdown) читаются напрямую из папки данных. Подробнее — в разделе Lakehouse. ← Оглавление документации ### Lakehouse Lakehouse — файловый интерфейс к вашим данным: дерево папок в браузере, просмотр и запросы к файлам без настройки источников данных. Положили файл в папку — и уже строите по нему отчёт. Структура /lakehouse/ ├── ProjectName/ │ ├── DataSource1/ │ │ ├── file.md │ │ ├── data.parquet │ │ ├── database.sqlite │ │ └── subfolder/ │ └── DataSource2/ └── AnotherProject/ Структура: проект → источник → файлы и подпапки. В интерфейсе — путь вида /lakehouse/{проект}/{источник}, главная страница показывает все комбинации проекта и источника, отсортированные по свежести файлов. Корень задаётся переменной ANALYTICS_LAKEHOUSE_PATH. Поддерживаемые форматы Markdown — просмотр как готовой документации по данным: описания таблиц, глоссарии, методички; Parquet — чтение через Apache Arrow: схема файла и запросы без настройки источников; SQLite — запросы к файлам баз через общий query pipeline, как к обычному источнику. API содержимое папок и файлов; схема Parquet- и SQLite-файлов; запросы к файлам прямо из файлового браузера. Сценарий Экспортировали данные в Parquet, собрали SQLite-файл, написали документацию в Markdown — просто положите всё в папку Lakehouse. Файлы сразу видны в браузере, по ним работают запросы, а отчёты подключают их как данные. Для Python-аналитики файлы читаются и из Jupyter-блоков — подробнее в разделе Jupyter Notebooks. ← Оглавление документации ### Графики Графики рендерятся на ECharts. Семь типов графиков плюс гейдж — от линий и столбцов до финансовых свечей и box plot. Данные берутся из SQL-запросов к подключённым источникам. Линейный и столбчатый колонки X и Y — по одной серии на пару, поддерживаются многоосевые серии; стеки для суммирования категорий; сглаживание линий; легенда и длительность анимации настраиваются в конфигурации блока. Точечный колонки X и Y данных; размер точки по данным — sizeColumn и symbolSize; цвет точки по данным — colorColumn. Кольцевой колонки «имя + значение»; внутренний и внешний радиус настраиваются; режим розовой диаграммы — roseType. Гистограмма колонка данных и количество бинов; расчёт выполняется на сервере (POST /api/query/histogram) — данные не гоняются в клиент целиком. Box plot ориентация, ширина коробки; порог выбросов; квартили считаются на сервере (POST /api/query/boxplot). Свечи и гейдж Свечи — колонки open/high/low/close + объём торгов: финансовые данные из ваших баз; Гейдж — метрика в виде спидометра с зонами значений. Общие возможности Заголовки, легенды и тултипы — у каждого графика. Внешний вид данных меняется без правки запроса — переопределениями оформления: цвета по порогам, стили линий и точек, скрытие серий. Подробнее — в разделе Оформление. ← Оглавление документации ### Запросы Блоки данных работают через SQL-запросы к подключённым источникам. Запрос описывается в конфигурации блока, проверяется до выполнения и кэшируется. Выполнение и проверка выполнение — POST /api/query/execute к любому подключённому источнику; проверка до выполнения — POST /api/query/validate: синтаксис, колонки, источники; у запроса есть таймаут (30 000 мс по умолчанию) и лимит строк (10 000 по умолчанию) — защита от случайных «SELECT * FROM огромная_таблица»; описание запроса поддерживает Scriban-переменные документа. Кэширование кэш результатов ускоряет повторные открытия отчёта; статистика кэша — GET /api/query/cache/statistics; очистка — POST /api/query/cache/clear. Серверные вычисления Тяжёлая аналитика считается на сервере: гистограммы (POST /api/query/histogram) и box plot (POST /api/query/boxplot) не гоняют данные в клиент целиком — на клиент уходит готовый результат. Привязка к блоку Запрос живёт в конфигурации блока и привязывается по queryId. Валидатор проверяет существование запроса и его источника — подробнее в разделе Проверки и авто-коррекция. ИИ и производительность Не хотите писать SQL? Опишите словами, что нужно — ИИ напишет или исправит запрос (подробнее — ИИ-агент в отчёте). Рекомендации по производительности: фильтруйте по датам, считайте агрегаты в SQL, а не в блоке, и используйте лимит строк. ← Оглавление документации ### Интеграция с агентом Analytics Agent тесно интегрируется с Pastukhov Agent — общим ИИ-помощником всех ваших приложений. Чат с агентом и единая боковая панель доступны на любой странице Analytics Agent: отчёты, графики и таблицы добавляются обычным языком, ошибки исправляются кнопкой «Исправить с помощью ИИ», а цепочки поручений можно поставить в очередь. Интеграция опциональна: без неё всё остальное работает. Включение Задайте переменные AGENT_API_URL и AGENT_API_KEY — URL и API-ключ установленного Pastukhov Agent. Без них кнопки ИИ скрыты, остальная функциональность не страдает. Один помощник — несколько приложений. Analytics Agent использует уже настроенный Pastukhov Agent: те же модели, ключи и навыки, что и во всех остальных ваших приложениях. Отдельные подписки и ключи LLM для аналитики не нужны — всё настраивается один раз в центре. Добавление обычным языком опишите словами, что нужно: «добавь график продаж по неделям», «разбей таблицу по регионам»; откроется чат агента с уже подготовленным промптом: URL отчёта, путь к документу, ID блока; выберите модель ИИ из списка — и отправьте запрос. Как агент правит отчёт Агент редактирует JSON отчёта напрямую — через тот же механизм, что и ручная правка. File watcher подхватывает изменение файла, и блок появляется на экране мгновенно, без перезагрузки страницы. Цикл «попросил → увидел» занимает секунды. Исправить с помощью ИИ Рядом с ошибками валидации и блоков есть кнопка «Исправить с помощью ИИ»: текст ошибки автоматически вкладывается в промпт, агент получает контекст блока и правит JSON. Механизм единый для всех кнопок — fixWithAI. Модели ИИ список моделей берётся из вашего Pastukhov Agent — те же модели и настройки, что и во всех остальных приложениях; модель выбирается при отправке запроса; управление моделями и их цветами — в разделе «Модели» самого Pastukhov Agent. Боковая панель и чаты на всех страницах У Analytics Agent есть единая боковая панель, которая видна на любой странице: в ней дерево разделов (Чаты, Источники данных, Lakehouse, Оповещения, Документы), поиск по документам и недавняя история. Здесь же — список активных чатов и кнопка «Промпты». Чат с агентом открывается из любого места, переключаться между приложениями не нужно. из отчёта можно одним действием начать чат о конкретном документе — система сама подставит в запрос путь к файлу и адрес страницы; ход работы агента виден в реальном времени: сообщения, инструменты, время обработки; о новых сообщениях можно получать звуковые уведомления (звук отключается одной кнопкой); для каждого запроса выбирается модель ИИ и навык из списка вашего Pastukhov Agent; вся история чатов сохраняется и доступна из той же панели. Очередь промптов и автоотправка «Промпты» — это список поручений, которые агент выполнит по очереди. Вы вписываете задачи обычным языком, включаете «Автоотправку» — и агент берёт поручения одно за другим, пока список не закончится. Например, наутро можно положить в очередь десяток запросов по отчётам и получить готовые чаты к началу дня. Генератор: вставьте список строк (например, названия товаров) и образец — по каждой строке создастся своё поручение по образцу; Максимум активных чатов ограничивает, сколько задач агент выполняет одновременно, чтобы не перегружать модель; Автопереход: когда запускается новое поручение, панель чата переходит к нему сама; Пиковые часы: настройка управляет тем, отправлять ли промпты моделей в часы их пиковой нагрузки или дождаться спада; очередь общая — она одинакова в Analytics Agent и в интерфейсе самого Pastukhov Agent, изменения с любой стороны сразу видны везде. Что такое Pastukhov Agent и как его установить — на странице Pastukhov Agent. ← Оглавление документации ### Источники данных Источники данных подключаются в разделе Data Sources веб-интерфейса: создание, проверка подключения, детали источника. Поддерживаются три СУБД — SQLite, PostgreSQL и ClickHouse. Типы источников SQLite — путь к файлу базы, таймаут (30 с по умолчанию), режим read-only; PostgreSQL — host, port (5432), база, логин, пароль, SSL, таймаут; ClickHouse — host, HTTP-порт (8123), база, логин, пароль, SSL, таймаут. Схема и кэш автоопределение схемы (autoDetect) — таблицы и колонки подхватываются автоматически; периодическое обновление схемы — по умолчанию раз в 3600 секунд; кэширование таблиц (cacheTables) — схема не запрашивается заново при каждом отчёте; кэш результатов запросов со статистикой и очисткой — подробнее в разделе Запросы. Валидация DataSourceValidationService проверяет доступность источников: ошибки подключения видны до построения отчётов, а не на сломанной панели. Несуществующий источник в запросе блока ловится валидатором (DATA_SOURCE_NOT_FOUND). Файловые данные без настройки Если данные лежат в файлах — Parquet, SQLite, Markdown — настраивать источник не нужно: положите файлы в папку Lakehouse и запрашивайте их прямо из файлового браузера. Подробнее — в разделе Lakehouse. ← Оглавление документации ### Начало работы Analytics Agent — веб-платформа интерактивной визуальной аналитики: быстрые панели и отчёты из ваших данных с глубоким погружением, ИИ прямо в интерфейсе и встроенным Python. Похоже на Grafana, но с фокусом не на наблюдении, а на настоящей аналитике: здесь можно не только смотреть метрики, но и копать глубже — фильтровать, сверять, считать, спрашивать у ИИ. Для кого Analytics Agent рассчитан на аналитиков и команды, которым мало панелей «только посмотреть». Продукт создан аналитиком с более чем 25-летним опытом работы с данными и их визуализацией — это видно в деталях: от сетки блоков до серверных вычислений гистограмм. Системные требования Любой Linux-хост с Docker: приложение разворачивается одним контейнером, все данные — в volume /data, Python для Jupyter Notebooks уже встроен в образ. Пошаговая инструкция — в разделе Установка. Первый вход Логин и пароль задаются переменными окружения ANALYTICS_ADMIN_LOGIN и ANALYTICS_ADMIN_PASSWORD (в переменной — SHA-256-хэш пароля). Без них вход в приложение невозможен. Сессия работает через JWT-токены со сроком жизни 90 дней. Интерфейс Главный экран — «Лучшие документы» и «Недавние документы», поиск по всем документам; Документы — дерево отчётов с хлебными крошками для вложенных папок; Lakehouse — файловый браузер данных: Parquet, SQLite, Markdown; Data Sources — источники данных: SQLite, PostgreSQL, ClickHouse; Models — модели ИИ для запросов к агенту; Logout — выход из приложения. Язык интерфейса (английский или русский) выбирается брендом при установке, тема — тёмная или светлая — переключается в интерфейсе. Первый отчёт создайте документ кнопкой «Новый документ»; добавьте блоки: график, таблицу, метрику — перетаскивайте их по сетке; подключите источник данных в разделе Data Sources; напишите SQL-запрос в конфигурации блока — или попросите ИИ сделать всё это за вас обычным языком. Что дальше Как устроены документы — в разделе Отчёты и документы, из чего они состоят — в Типы блоков и Графики. Подключение баз — в Источниках данных, работа ИИ — в ИИ-агент в отчёте. ← Оглавление документации ### Оповещения Оповещения — это способ поручить системе следить за данными вместо вас. Вы задаёте правило: запрос к данным и условие. Система проверяет его по расписанию, и когда условие выполняется, отправляет уведомление туда, куда вы указали — в Telegram, Slack, на почту и ещё в два десятка каналов. Проверять показатели вручную больше не нужно: система сама сообщит, когда что-то пойдёт не так. Правила оповещений Правило — это обычный SQL-запрос к вашему источнику данных плюс условие. Пример: правило «мало заказов» считает число заказов за последний час и срабатывает, когда их стало меньше десяти. Условия задаются просто: порог «выше/ниже числа», диапазон значений, математическое выражение — или сводка по группам данных. правила собираются в группы, и для каждой группы задаётся интервал проверки — от 10 секунд до раза в сутки; перед срабатыванием можно задать период ожидания: например, сигналить только если проблема держится две минуты подряд, чтобы разовые колебания не создавали шум; после восстановления можно удерживать сигнал какое-то время, чтобы тревога не мигала при каждом изменении; любое правило можно проверить вручную: оно выполнит запрос, покажет, что сработало бы, и ничего не отправит; правило можно приостановить (пауза) или продублировать — например, чтобы сделать копию под другой источник. Что происходит при срабатывании Каждое правило живёт жизнью: спокойно → ожидание → сработало → восстановилось. Переходы видны в списке «экземпляров» правила (по одному на каждую группу данных) и записываются в историю: когда сработало, какие были значения, что изменилось. Есть и особые состояния: Нет данных — запрос вернул пустой результат. Это само по себе может быть тревогой: например, если счётчики с сервера перестали приходить, значит, что-то сломалось; Ошибка — проверка не смогла выполниться (например, отключился источник данных). Можно настроить, считать ли это тревогой или просто пометить. Куда отправлять уведомления Получатели задаются в разделе «Точки контакта». Одна точка контакта — это один получатель (например, Telegram-группа вашей команды), и у неё может быть несколько способов доставки сразу: и Telegram, и почта. Поддерживается 22 канала: мессенджеры и чаты: Telegram, Slack, Discord, Teams, Google Chat, WhatsApp-подобные (Line, WeCom); почта, webhook, SMS-сервисы и системы дежурств: email, webhook, PagerDuty, Opsgenie, VictorOps, Pushover; инструменты команд: Jira, Confluence-подобные (Sensu), Kafka, MQTT и другие. У каждой точки контакта есть кнопка проверки: она отправляет настоящее тестовое уведомление, чтобы убедиться, что всё настроено правильно, — ещё до того, как случится первая тревога. Кому и когда отправлять «Политики уведомлений» — это дерево правил, которое решает, какая тревога кому уходит. Например: все тревоги — в общий чат, а тревоги с меткой «база данных» — дополнительно команде дежурных. Политики умеют: Группировка — похожие тревоги собираются в одно сообщение и приходят одним уведомлением, а не десятью; Повтор — если тревога не ушла, система напомнит через заданный интервал; Наследование — можно задать общее правило для всех и дополнять его для отдельных команд: новые политики подхватывают настройки родительских. Тишина Не всякая тревога требует немедленного вмешательства. Два механизма позволяют «замолчать» уведомления: Интервалы тишины — повторяющееся расписание: по ночам, в выходные и в праздники уведомления не шлются. Время считается по вашему часовому поясу, интервалы могут переходить через полночь; Тишины — разовое затишье по меткам: «замолчи на два часа в обед» для конкретного сервера или правила. Тишина начинается сразу и действует до указанного времени; в любой момент её можно завершить досрочно. Тишины удобно включать прямо из списка сработавших тревог: одна кнопка создаёт тишину для этого правила и этих данных. Шаблоны сообщений Текст уведомлений настраивается шаблонами: название, суть, ссылки на отчёт и правило. На каждый канал есть готовый шаблон по умолчанию (для Telegram, Slack, почты и других), и его можно переопределить своим — например, чтобы в письме сразу была таблица с цифрами. История и журнал доставки В разделе «История» видно всё, что происходило: история срабатываний — переходы состояний каждого правила с датами, значениями и комментариями; журнал доставки — какие уведомления ушли, каким каналом, кому и удалось ли их доставить; повторы при сбоях — если канал не ответил, доставка повторяется с постепенно увеличивающейся паузой и в журнале видно каждую попытку; срок хранения — история хранится заданное число дней (по умолчанию 30) и автоматически подчищается. Запись результатов проверок Отдельный тип правил — «запись метрик»: правило, которое просто выполняет запрос по расписанию и складывает результат в базу Analytics Agent. Из сохранённых данных можно строить свои графики и панели, а поверх них — другие правила оповещений. Хранение ограничено сроком (по умолчанию 90 дней). Все настройки оповещений хранятся обычными JSON-файлами в папке data/alerting — как и отчёты, их удобно версионировать и переносить между установками. ← Оглавление документации ### Отчёты и документы Документ — это отчёт или панель: сетка блоков с графиками, таблицами, метриками и текстом. Документы образуют дерево папок, хранятся как обычные JSON-файлы и обновляются на экране в реальном времени. Структура документа Каждый документ описывается JSON-файлом document.json: заголовок, массив блоков, переменные, права доступа и метаданные. { "title": "Название документа", "blocks": [], "variables": {}, "permissions": { "access": "admin-only" }, "settings": { "rangeSelector": false, "timeframeSelector": false }, "metadata": { "created": "ISO8601", "modified": "ISO8601", "version": 1, "tags": ["тег1"], "icon": "filename.svg" } } Вложенность и навигация документы образуют дерево папок — вложенность не ограничена; навигация по дереву — через хлебные крошки; пути документов могут содержать переменные — один шаблон порождает семейство отчётов (подробнее — Переменные и шаблоны); перемещение и удаление документов выполняются прямо в интерфейсе. Хранение: JSON-файлы Документы хранятся в /data/documents/ как JSON-файлы. Это значит: версионирование в Git, ручное редактирование в любом редакторе, перенос между экземплярами простым копированием папки. Мгновенный reload file watcher на inotify отслеживает изменения файлов документов; кэш списка документов инвалидируется — новые и изменённые отчёты появляются сразу; правки ИИ или ручные правки JSON видны на экране без перезагрузки; обновления блоков транслируются клиентам через SignalR/WebSocket. Права доступа admin-only — документ виден только администратору; authenticated — всем вошедшим пользователям; public — публичные отчёты можно показывать без входа: удобно для внешних панелей. Метаданные, поиск, импорт и экспорт метаданные: версия, теги, иконка, даты создания и изменения; поиск по всем документам — с главного экрана; импорт и экспорт документов для переноса между экземплярами; «Лучшие документы» и «Недавние документы» на главном экране. ← Оглавление документации ### Оформление Переопределения оформления меняют то, как данные выглядят, — без изменения запроса. 13 типов: цвета, форматы, подписи, ссылки, скрытие и стили графиков. Цвета BlockColorOverride — цвет рамки блока; NumberColorOverride — цвет числа по порогам: упало ниже нуля — красный; StringColorOverride — цвет строки по совпадению значения. Форматы NumberFormatOverride — формат чисел: сокращения, префиксы и суффиксы («1,2 млн» вместо длинного числа); DateFormatOverride — формат даты и времени. Подписи NameOverride — переименование колонок таблиц и серий графиков: вместо usr_cnt — «Пользователи»; StringReplaceOverride — найти/заменить в значениях. Ссылки LinkOverride — кликабельные ячейки таблицы: ссылка собирается из значения, ведёт на другой отчёт с нужным фильтром; BlockLinkOverride — ссылка на весь блок. Скрытие HideOverride — скрыть колонки таблиц и серии графиков: служебные поля не попадают на экран, оставаясь в запросе. Стили графиков LineStyleOverride — стили линий; BarStyleOverride — стили столбцов; PointStyleOverride — стили точек. Примеры метрика «−3%» подсвечивается красным при падении ниже нуля; «1,2 млн» вместо 1 234 567 — сокращения и суффиксы; ячейка таблицы «Регион» — ссылка на отчёт по этому региону. ← Оглавление документации ### Переменные и шаблоны Переменные и шаблоны Scriban делают документы динамическими: один шаблон порождает семейство отчётов, а значения подставляются в конфигурацию блоков и запросы. Движок Scriban Шаблонизация построена на движке Scriban: выражения вида {{ variable }} подставляются в заголовки, содержимое блоков и тексты запросов. Движок кэширует шаблоны для производительности. Переменные в путях Путь документа может содержать переменные: шаблон regions/{{ region }}/sales.json порождает отдельный отчёт для каждого региона — без дублирования JSON. Переменные в содержимом определения переменных задаются в JSON документа в поле variables; значения подставляются в конфигурацию блоков и тексты SQL-запросов; заголовок документа тоже может быть шаблоном — имя отчёта меняется вместе с данными; пустое имя переменной ловится валидатором (EMPTY_VARIABLE_NAME). Селекторы settings.rangeSelector — селектор диапазона дат в хлебных крошках отчёта; settings.timeframeSelector — селектор временного интервала (гранулярности); выбранные значения доступны запросам — отчёт пересчитывается под выбранный период. Безопасность шаблонов TemplateSecurityService ограничивает исполнение шаблонов: произвольный код через Scriban не исполнить — доступны только разрешённые объекты и функции. ← Оглавление документации ### Проверки и авто-коррекция Analytics Agent проверяет отчёты на трёх уровнях: документ → блоки → запросы. Смысл простой: отчёт с ошибками не увидит читатель — всё ловится до публикации, а рядом с каждой ошибкой есть кнопка исправления ИИ. Уровень документа MISSING_TITLE — у документа нет заголовка; NO_BLOCKS — документ без блоков; MISSING_BLOCK_ID — у блока нет ID; DUPLICATE_BLOCK_ID — дублирующийся ID блока; INVALID_BLOCK_WIDTH — ширина блока вне диапазона 1–24; EMPTY_BLOCK_CONFIG — пустая конфигурация блока; INVALID_ACCESS_LEVEL — неизвестный уровень доступа; DUPLICATE_QUERY_ID, DUPLICATE_OVERRIDE_ID — дубли ID запросов и переопределений. Уровень контента тип блока известен реестру — опечатка в contentType ловится сразу; ссылки queryId существуют, источник запроса найден (DATA_SOURCE_NOT_FOUND); конфигурация графика заполнена: колонки указаны (EMPTY_CONTENT_DATA, INVALID_CONTENT_DATA_TYPE). Уровень запросов SQL-запросы проверяются до выполнения: синтаксис, колонки, источники. Подробнее — в разделе Запросы. Фоновая валидация все документы проверяются автоматически, в фоне; результаты кэшируются — повторные проверки не нагружают сервер; при изменении файлов документов — перепроверка. API и отображение POST /api/validation/document — валидация документа; POST /api/validation/content — валидация контента блоков; GET /api/validation/data-sources — проверка источников данных; ошибки отображаются в интерфейсе рядом с блоком — с кнопкой «Исправить с помощью ИИ» (подробнее — ИИ-агент в отчёте). ← Оглавление документации ### Типы блоков Документ собирается из блоков — 15 типов контента в четырёх категориях: текстовые, утилиты, данные и графики. Каждый блок занимает в сетке документа от 1 до 24 колонок и перетаскивается мышью. Текстовые MarkdownContent — форматированный текст: пояснения, выводы, ссылки; NotebookContent — полноценный Jupyter Notebook как блок отчёта (подробнее — Jupyter Notebooks). Утилиты BookmarksContent — закладки-карточки со ссылками на другие отчёты и страницы; SectionContent — заголовок раздела: группирует блоки в длинных отчётах; DetailsContent — список свойств сущности: компактная карточка «ключ — значение». Данные TableContent — интерактивная таблица с постраничной выдачей и ссылками из ячеек; MetricContent — одиночная метрика/KPI крупным числом; GaugeContent — спидометр-гейдж с зонами значений. Графики LineChartContent — линейный график; BarChartContent — столбчатая диаграмма; ScatterChartContent — точечная диаграмма; DoughnutChartContent — кольцевая диаграмма; HistogramChartContent — гистограмма распределения; CandlestickChartContent — свечи OHLC с объёмом торгов; BoxPlotChartContent — box plot с квартилями и выбросами. Параметры каждого графика — в разделе Графики. Сетка документа ширина блока — от 1 до 24 колонок; ширина вне диапазона ловится валидатором (INVALID_BLOCK_WIDTH); блоки перетаскиваются мышью (drag & drop); у каждого блока уникальный ID вида block_{timestamp}_{random}; конфигурация блока — словарь параметров: заголовок, размеры, тип контента, данные, запросы, переопределения оформления. Notebook-блок Ноутбук хранится двумя способами: как встроенный JSON прямо в блоке или как ссылка на внешний файл .ipynb. У блока отображаются счётчик ячеек и время последнего сохранения. ← Оглавление документации ### Лицензирование Analytics Agent Все лицензии — пожизненные: единоразовый платёж, без подписок, без ограничений на количество отчётов. Лицензирование работает офлайн, ваш ключ действительно пожизненный. Каждая лицензия включает 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Бесплатный период Бесплатное использование в течение 30 дней — триал уже встроен в Docker-образ. Даже после истечения бесплатной лицензии приложение остаётся полностью функциональным, кроме запуска новых запросов к вашим данным. Никакой привязки — отчёты остаются вашими: документы хранятся обычными JSON-файлами, а данные — в ваших базах. Персональная лицензия — 19 700 ₽ Все функции Analytics Agent без ограничений для частных лиц: неограниченное количество установок на любых ваших компьютерах и серверах. 19 700 ₽ единоразовый платёж за пожизненную лицензию. 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Корпоративная лицензия — 49 700 ₽ Все функции Analytics Agent без ограничений для всех сотрудников компании или команды, включая внешних подрядчиков. 49 700 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Сервисная лицензия — 97 000 ₽ Неограниченное количество экземпляров Analytics Agent под вашим доменом + полный исходный код с правом изменять его как угодно, обновлять UI или брендинг в соответствии с вашей компанией или доменом, тесно интегрировать с вашей инфраструктурой. Может использоваться любым посетителем вашего домена как часть ваших сервисов. 97 000 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена сервисная лицензия на Pastukhov Agent, который является частью продукта. Исходный код Agent доступен только при покупке сервисной лицензии на сам Pastukhov Agent. Для бесшовных обновлений рекомендую изменять только брендинг и интеграцию, чтобы минимизировать усилия при слиянии с новыми функциями и исправлениями. Бесплатные лицензии В некоторых случаях я готов подарить бесплатную лицензию: если вы нашли баг или уязвимость безопасности в любом из моих продуктов (у меня буквально нет бюджета на платные баг-баунти, к сожалению); если вы предложили дельную идею по улучшению моих продуктов (кодить не обязательно, достаточно полезной идеи — вы получите лицензию, если я включу её в план разработки); если вы активный контрибьютор open-source проектов (я люблю open-source, просто у меня нет времени поддерживать свои продукты как open-source); если вы ведёте популярный блог, Telegram-канал или YouTube-канал о программировании, AI, аналитике, маркетинге, бизнесе, финансах или IT в целом (упоминание или реклама не требуются, это полностью на ваше усмотрение); если вы активный партнёр-аффилиат (продажи не обязательны, но у вас должен быть хотя бы какой-то контент, посвящённый моим продуктам). Если что-то из перечисленного про вас, просто напишите мне в Telegram. Укажите имя и email, и я сгенерирую ваш персональный пожизненный лицензионный ключ. ### Установка Analytics Agent Analytics Agent — self-hosted веб-приложение для быстрого анализа и визуализации данных. Разворачивается одним Docker-контейнером, все данные хранятся в постоянном volume /data. Python для Jupyter Notebooks уже встроен в образ. Отчёты — это JSON-файлы: их можно версионировать в Git и переносить простым копированием. Минимальные требования Достаточно любого Linux-хоста с Docker. Всё остальное уже в образе: ASP.NET Core 9 runtime — веб-сервер приложения; Python 3 + venv + pip — для исполнения Jupyter Notebooks; sqlite3 и другие файловые утилиты для работы с данными. СУБД не нужна: документы-отчёты хранятся файлами в volume, а источники данных (SQLite, PostgreSQL, ClickHouse) подключаются по мере надобности через интерфейс. Docker Compose Создайте файл compose.yml и запустите docker compose up -d: services: analytics-agent: image: maxpastukhov/analytics-agent:latest container_name: analytics-agent ports: - "5011:80" volumes: - analytics-agent-data:/data environment: - ASPNETCORE_ENVIRONMENT=Production - ASPNETCORE_URLS=http://+:80 - ANALYTICS_DATA_PATH=/data - ANALYTICS_BRAND=pastukhov - ANALYTICS_SECRET_KEY=change-me-in-production - ANALYTICS_ADMIN_LOGIN=admin - ANALYTICS_ADMIN_PASSWORD={sha256-хэш пароля} restart: unless-stopped sysctls: fs.inotify.max_user_watches: "524288" fs.inotify.max_user_instances: "512" volumes: analytics-agent-data: После запуска интерфейс будет доступен на порту 5011: http://localhost:5011. Sysctls повышают лимиты inotify — они нужны file watcher'у, который отслеживает изменения файлов отчётов: правки подхватываются мгновенно, без перезагрузки. Без этих лимитов на больших объёмах документов watcher может не увидеть часть изменений. Переменные окружения ANALYTICS_ADMIN_LOGIN — логин администратора (по умолчанию admin из appsettings). ANALYTICS_ADMIN_PASSWORD — SHA-256-хэш пароля, а не сам пароль. Хэш вычисляется командой echo -n "ваш-пароль" | sha256sum. Приложение хэширует введённый при входе пароль и сравнивает с этим значением. ANALYTICS_SECRET_KEY — ключ подписи JWT-токенов (по умолчанию default-secret-key-change-in-production — обязательно замените в продакшене). ANALYTICS_DATA_PATH — папка данных (по умолчанию /project/data; в контейнере — /data). ANALYTICS_BRAND — бренд и язык интерфейса: pastukhov (русский) или xedant (английский, по умолчанию). ANALYTICS_LAKEHOUSE_PATH — корневая папка Lakehouse (по умолчанию /lakehouse). AGENT_API_URL и AGENT_API_KEY — URL и API-ключ Pastukhov Agent для ИИ-функций. Без них кнопки ИИ скрыты, всё остальное работает. Без установленных ANALYTICS_ADMIN_LOGIN и ANALYTICS_ADMIN_PASSWORD вход в приложение невозможен. JWT-токен живёт 90 дней (129600 минут), сессия — 1 час. Хранение данных Все постоянные данные живут в volume /data и переживают пересоздание контейнера. Volume обязателен — без него вы потеряете отчёты и настройки окружения при первом же docker compose down. /data/documents/ — документы-отчёты в виде JSON-файлов; /data/requirements.txt — зависимости Python для Jupyter Notebooks: засеивается при первом запуске, можно дополнять своими библиотеками; ANALYTICS_LAKEHOUSE_PATH — файлы данных Lakehouse: Parquet, SQLite, Markdown. Первый вход Используйте логин и пароль, заданные переменными ANALYTICS_ADMIN_LOGIN и ANALYTICS_ADMIN_PASSWORD (в переменной — хэш, вводите при входе сам пароль). После входа можно сразу сменить язык и тему интерфейса. На главном экране — список «Новый документ» и каталог отчётов. Настройка после запуска Источники данных — SQLite, PostgreSQL и ClickHouse — подключаются в разделе Data Sources веб-интерфейса: создание, проверка подключения, автоопределение схемы. Подробнее — в разделе Источники данных. ИИ-функции включаются переменными AGENT_API_URL и AGENT_API_KEY: появляются кнопки добавления блоков обычным языком и «Исправить с помощью ИИ». Список моделей ИИ (конфигурации и модели) задаётся файлом environments.txt. Подробнее — в разделе ИИ-агент в отчёте. Docker CLI с файлом .env Можно запустить Analytics Agent и без compose — командой docker run, сохранив переменные окружения в файле .env: # .env ASPNETCORE_ENVIRONMENT=Production ASPNETCORE_URLS=http://+:80 ANALYTICS_DATA_PATH=/data ANALYTICS_BRAND=pastukhov ANALYTICS_SECRET_KEY=длинная-случайная-строка ANALYTICS_ADMIN_LOGIN=admin ANALYTICS_ADMIN_PASSWORD=sha256-хэш-пароля # опционально: ИИ-функции через Pastukhov Agent # AGENT_API_URL= # AGENT_API_KEY= docker run -d \ --name analytics-agent \ --env-file .env \ -p 5011:80 \ -v analytics-agent-data:/data \ --sysctl fs.inotify.max_user_watches=524288 \ --sysctl fs.inotify.max_user_instances=512 \ --restart unless-stopped \ maxpastukhov/analytics-agent:latest Флаг --env-file считывает все переменные из файла. Отдельные значения можно переопределить дополнительными флагами -e после него, например -e ANALYTICS_BRAND=xedant. ← Вернуться на главную раздела Analytics Agent ### ИИ-агент для данных Соберите данные откуда угодно — просто попросите агента. Он напишет скрипты, запустит их в нужное время, а Analytics Agent превратит результат в наглядные отчёты Data Agent — это сбор данных без программирования. Вы описываете в чате, какие данные нужны («собери цены конкурентов раз в день», «выгрузи статистику по заказам»), — агент пишет и поддерживает скрипты, запускает их вручную или по расписанию и складывает результат в аккуратный Lakehouse: исходные файлы, базу для визуализации, описание и логи по каждому источнику. Дальше в дело вступает Analytics Agent: он строит по собранным данным отчёты, графики и панели. В интерфейсе Data Agent нет ни ручного ввода данных, ни ручного редактирования скриптов — этим занимается агент. Сбор данных откуда угодно: API, сайты, базы — всё, что можно вытащить скриптом Скрипты пишет и поддерживает агент в чате — программировать не нужно Запуск в один клик и по расписанию: от «каждые 15 минут» до раза в день Скрипты — обычные файлы в папке: Git, версионирование, перенос копированием Вывод запусков в реальном времени с логами и историей Данные складываются в Lakehouse: Parquet — исходные, SQLite — для визуализации README описывает каждый источник данных: что, откуда и как собирается Источники данных обнаруживаются автоматически — по одному на папку Lakehouse SQLite-базы после загрузки готовы для визуализации в Analytics Agent Встроенный планировщик: изменения расписания подхватываются на лету Пропущенный запуск не теряется: выполнится при первом же удобном случае Аналитика агента: токены, стоимость и нагрузка по часам и дням Модель и навык выбираются под каждую задачу в чате Очередь промптов: агент выполняет задачи одну за другой Работает на вашем центральном Pastukhov Agent — без лишних ключей и подписок Папка скриптов общая с Pastukhov Agent: обе стороны видят одни и те же файлы Всё на вашем сервере: один Docker-контейнер, данные в volume /data SQLite или PostgreSQL на выбор Полная русская локализация интерфейса Мобильный интерфейс: следить за запусками с телефона Часть экосистемы ИИ-агентов: Research Agent собирает знания, Data Agent — данные, Analytics Agent — отчёты Установка Документация FAQ Лицензирование Данные — по вашей просьбе Опишите словами, какие данные нужны — агент напишет скрипт и запустит его Скрипты создаются и исправляются в чате — в интерфейсе редактировать ничего не нужно Выбор модели и навыка под каждую задачу Изменения агента фиксируются в Git — вся история правок под рукой Подробнее Скрипты — простая папка Каждый источник данных — отдельная папка: скрипты, документация, заметки Страница каждой папки и файла с понятным форматированием Поиск по всем файлам по мере ввода Изменения агента появляются мгновенно, без перезагрузки Подробнее Запуск в один клик Кнопка «Запустить» на странице любого скрипта Вывод идёт в реальном времени — видно, что происходит прямо сейчас История запусков с результатами, логами и метками: вручную / по расписанию / агентом Остановка, таймауты и общая очередь Подробнее Расписание без хлопот Расписание — один файл schedule.yml, агент меняет его по вашей просьбе Интервалы («каждые 15 минут», «раз в день») и точное время — минута, час, день месяца Изменения подхватываются на лету, без перезагрузки Пропущенный запуск не теряется: выполнится при первом удобном случае Подробнее Lakehouse — данные в порядке Структура «проект → источник»: всё лежит по полочкам Parquet — всегда исходные данные, SQLite — база для визуализации README описывает каждый источник, логи запусков лежат рядом с данными Обзор источников: размер, свежесть, просмотр прямо из браузера Подробнее Источники данных Автоматическое обнаружение: появилась база в Lakehouse — источник готов Схемы таблиц видны сразу Переопределения и внешние базы подключает агент Обновление после каждого запуска скрипта — свежие данные сразу Подробнее Данные для Analytics Agent Собранные данные готовы к визуализации сразу после загрузки Analytics Agent строит по ним отчёты, графики и панели Чистая SQLite-база — результат каждого конвейера Data Agent собирает, Analytics Agent показывает — одна связка Подробнее Аналитика агента Сколько токенов и средств уходит на сбор данных Нагрузка по часам дня и дням недели Распределения длительности и скорости ответов Стоимость по моделям и по чатам Подробнее Работает на Pastukhov Agent Чат и функции ИИ — из вашего центрального Pastukhov Agent Без лишних ключей и подписок Единый чат с агентом на всех страницах интерфейса Агент управляет сбором через программный интерфейс (API): сессии, запуски, расписания Подробнее Всё на вашем сервере Один Docker-контейнер — и всё работает Все данные в volume /data — переживают пересоздание контейнера Папка скриптов общая с Pastukhov Agent — обе стороны видят одни файлы SQLite или PostgreSQL на выбор Подробнее Установка Документация FAQ Лицензирование Лицензия активируется ключом в интерфейсе. Без действующей лицензии не работают отправка сообщений агенту и управление очередью промптов; запуски, планировщик, Lakehouse и просмотр данных работают и без лицензии. Данные остаются вашими: скрипты — обычные файлы в папке, данные — в Lakehouse на вашем диске. Персональная лицензия Все функции Data Agent без ограничений для частных лиц: неограниченное количество установок на любых ваших компьютерах и серверах. 19 700 ₽ единоразовый платёж за пожизненную лицензию. 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Корпоративная лицензия Все функции Data Agent без ограничений для всех сотрудников компании или команды, включая внешних подрядчиков. 49 700 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Сервисная лицензия Неограниченное количество экземпляров Data Agent под вашим доменом + полный исходный код с правом изменять его как угодно, обновлять интерфейс или брендинг в соответствии с вашей компанией или доменом, тесно интегрировать с вашей инфраструктурой. Может использоваться любым посетителем вашего домена как часть ваших сервисов. 97 000 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена сервисная лицензия на Pastukhov Agent, который является частью продукта. Исходный код Agent доступен только при покупке сервисной лицензии на сам Pastukhov Agent. Для бесшовных обновлений рекомендую изменять только брендинг и интеграцию, чтобы минимизировать усилия при слиянии с новыми функциями и исправлениями. Бесплатные лицензии В некоторых случаях я готов подарить бесплатную лицензию: если вы нашли баг или уязвимость безопасности в любом из моих продуктов (у меня буквально нет бюджета на платные баг-баунти, к сожалению); если вы предложили дельную идею по улучшению моих продуктов (кодить не обязательно, достаточно полезной идеи — вы получите лицензию, если я включу её в план разработки); если вы активный контрибьютор open-source проектов (я люблю open-source, просто у меня нет времени поддерживать свои продукты как open-source); если вы ведёте популярный блог, Telegram-канал или YouTube-канал о программировании, AI, аналитике, маркетинге, бизнесе, финансах или IT в целом (упоминание или реклама не требуются, это полностью на ваше усмотрение); если вы активный партнёр-аффилиат (продажи не обязательны, но у вас должен быть хотя бы какой-то контент, посвящённый моим продуктам). Если что-то из перечисленного про вас, просто напишите мне в Telegram. Укажите имя и email, и я сгенерирую ваш персональный пожизненный лицензионный ключ. ### FAQ Data Agent Кто пишет скрипты? Агент. Вы описываете в чате, какие данные нужны, — он создаёт и поддерживает скрипты: пишет новые, чинит ошибки, добавляет источники. В интерфейсе нет редактора кода: вся работа со скриптами ведётся через разговор с агентом, интерфейс нужен для запуска, расписания и просмотра результатов. Чем Data Agent отличается от ручной выгрузки данных? Ручная выгрузка — это разовые усилия каждый раз: кому-то нужно писать или править код, не забывать запускать его, следить за ошибками. Data Agent делает всё сам: скрипты уже написаны, запускаются вручную или по расписанию, история и логи каждого запуска сохраняются, а собранные данные сразу готовы для визуализации в Analytics Agent. Как Data Agent связан с Analytics Agent? Data Agent — источник данных для Analytics Agent. Сбор и подготовка — здесь: скрипты, запуски, расписание, хранилище. Визуализация — в Analytics Agent: отчёты, графики, панели по базам, которые подготовил Data Agent. Вместе они образуют один конвейер: собрал → подготовил → показал. Где хранятся данные? В Lakehouse — папке /lakehouse на вашем сервере, организованной по проектам и источникам. В папке каждого источника: исходные файлы Parquet, база SQLite для визуализации, описание README и логи запусков. Данные ваши: переносятся простым копированием папки. Как задаётся расписание? Расписание — один файл schedule.yml в папке скриптов. Меняет его агент по вашей просьбе («запускай каждый день в 8 утра»). Изменения подхватываются на лету, без перезагрузки, а запуски, пропущенные из-за простоя, не теряются. Нужно ли уметь программировать? Нет. Скрипты, расписания и источники — всё создаёт агент по словесному описанию. Python нужен только агенту, а окружение для него уже встроено в Docker-образ. Что нужно для запуска? Docker-хост: один контейнер, папка скриптов, папка постоянных данных и корень Lakehouse. Чат с агентом включается адресом и API-ключом Pastukhov Agent. Можно ли использовать без Pastukhov Agent? Да: запуски, планировщик, Lakehouse, источники данных и просмотр результатов работают самостоятельно. Интеграция добавляет чат с агентом — именно агент пишет и поддерживает скрипты, поэтому без подключения к Pastukhov Agent собирать новые данные некому. Уже собранные данные можно смотреть и визуализировать в Analytics Agent. ### Документация Data Agent Начало работы Что такое Data Agent, первый вход, интерфейс, первый скрипт. Чат с агентом Задачи обычным языком, модели и навыки, очередь промптов, Git. Скрипты Папка скриптов: структура, страницы, поиск, обновления. Запуски Кнопка «Запустить», вывод в реальном времени, история и логи. Планировщик Расписание одним файлом: интервалы, точное время, горячая перезагрузка. Lakehouse Хранилище данных: проект → источник, Parquet, SQLite, README, логи. Источники данных Автоматическое обнаружение, переопределения, запросы к данным. Данные для Analytics Agent Визуализация собранных данных в Analytics Agent: отчёты и графики. Аналитика агента Токены, стоимость и нагрузка: обзор работы агента. Интеграция с Pastukhov Agent Чат через центральный агент и его API управления данными. Установка Docker Compose, монтирования, первый вход, переменные окружения. ### Lakehouse Lakehouse — это корневая папка данных на вашем сервере, куда скрипты складывают всё, что собрали. Данные разложены по полочкам «проект → источник», и браузер Lakehouse показывает их наглядно. Название заимствовано из дата-инженерии: «озеро данных» (lake) + «склад» (house). Данные — это ваши обычные файлы на вашем диске, их можно копировать и переносить. Что лежит в папке источника README.md — описание источника: откуда данные, структура, поля, история изменений; *.parquet — исходные данные, выгруженные скриптом extract.py; Parquet — всегда источник правды, его не пересобирают; *.sqlite — база для запросов и визуализации: собирается скриптом load.py и пересобирается при каждом запуске; *.log — журналы извлечения, подготовки и загрузки. Обзор проектов и источников Главный экран Lakehouse — таблица всех проектов и источников: размер, свежесть данных, есть ли готовая база (обозначается иконкой). Работают поиск и сортировка. Если хранилище пустое, интерфейс подскажет: запустите скрипт загрузки — данные появятся здесь. Браузер папок Внутри источника — обычный браузер файлов: хлебные крошки наверху, папки перед файлами, сводка размера папки. Если в папке есть README, он рендерится над списком — вы сразу видите описание источника, не открывая файлы. Просмотр файлов по типу Parquet — схема данных и первые строки (Apache Arrow) — быстрая проверка, что выгрузилось; SQLite — браузер таблиц: таблицы, поля, строки; Markdown — готовый документ, как на странице; текст и журналы — окно просмотра; любые другие типы — можно открыть как текст или Markdown. Связь с источниками данных База SQLite, на которую ссылается источник данных, помечена в Lakehouse бейджем — сразу видно, что источник зарегистрирован и к нему можно обращаться с запросами. Подробнее — на странице Источники данных. Зачем это вам Вы всегда видите, что собрано, откуда и насколько свежие данные — не нужно верить на слово журналам запусков. Удалить лишнее или перенести на другой сервер — это обычные операции с файлами. А подготовленные базы из Lakehouse автоматически становятся источниками для Analytics Agent — про это отдельная страница. Читайте также: Скрипты, Источники данных. ← Оглавление документации ### Аналитика агента Страница «Аналитика» показывает, как агент работает за вас: сколько уходит токенов (единиц текста, которыми агент «думает») и средств, когда нагрузка выше, какие модели используются. Это контроль расходов на язык: видно, окупается ли автоматизация сбора данных и где можно сэкономить. Обзор чатов Таблица всех чатов с сортировкой по любому столбцу: по названию, дате, количеству сообщений, токенам, стоимости, длительности, сообщениям в секунду и по модели. Удобно находить самые дорогие или самые долгие диалоги и понимать, на что уходят ресурсы. Метрики сообщения — сколько задач и вопросов отправлено; токены — входные (что агент прочитал), выходные (что написал) и «токены кэша» — из временного хранилища, где агент держит готовые куски ответов; стоимость — сколько это стоит в деньгах; сообщения в секунду и длительность — насколько быстро агент отвечает. Распределения Стоимость, токены, длительность и сообщения в секунду показаны распределениями: видно, где большинство задач дешёвые и быстрые, а редкие — дорогие и долгие. Нагрузка по времени Часы дня и дни недели — сообщения, скорость ответа и стоимость. Видно, когда агент занят больше всего, чтобы переносить тяжёлые задачи на спокойное время или, наоборот, держать дешёвые модели под пики. По моделям Стоимость, токены и скорость в разрезе моделей. Это выбор по эффективности и цене: если рутинные задачи (проверка выгрузок, мелкие правки) гоняются на самой дорогой модели, их можно перевести на дешёвую — качество не пострадает, а расходы заметно упадут. Диапазоны Данные можно смотреть за 7, 14, 30, 90, 365 дней — или за всё время. Обзор легко сузить до нужного периода, например чтобы оценить месяц после внедрения. Зачем это вам Автоматизация сбора данных — это не просто удобство, а статья расходов, которую стоит держать под контролем. Аналитика показывает её окупаемость: сколько агент «работает» в день и во что это обходится — и где экономия (например, дешёвая модель для рутинных задач по расписанию) снизит счёт без потери качества. Читайте также: Чат с агентом. ← Оглавление документации ### Данные для Analytics Agent Data Agent служит источником данных для Analytics Agent. Вместе они образуют конвейер «собрал → подготовил → показал»: Data Agent регулярно собирает данные и приводит их к единому виду, а Analytics Agent строит на них отчёты, графики и панели. Каждый продукт делает своё, и оба работают на вашем сервере. Как это устроено Скрипты Data Agent выгружают данные в Parquet — это исходные данные, источник правды. Затем скрипт load.py собирает их в единую базу SQLite — именно эту базу использует Analytics Agent для визуализации. Parquet при этом остаётся рядом: по нему всегда можно проверить целостность данных, не трогая базу. Что нужно сделать Попросите агента в чате собрать нужные данные — он создаст источник, скрипты и запустит их. После запуска load.py база появится в Lakehouse, а источник зарегистрируется автоматически (как — на странице Источники данных). В Analytics Agent подключите этот источник — раздел «Источники данных» в его документации — и стройте отчёты и графики. Пример: демо-конвейер В Data Agent есть демонстрационный конвейер — симулятор данных рынка Forex: папка forex-simulator/api со скриптами extract.py и load.py. После запуска в Lakehouse появляется база forex-simulator_api.sqlite — готовый пример того, что получит Analytics Agent: источники, схемы, таблицы. Правила согласованности Parquet — всегда источник правды: исходные данные не пересобираются; SQLite — производная база: пересобирается каждый запуск, поэтому всегда соответствует последним исходным данным; README рядом с базой описывает её: откуда данные, какая структура, какие поля — Analytics Agent и человек понимают данные одинаково. Подробнее о возможностях Analytics Agent — на странице ИИ-агент для аналитики. Читайте также: Lakehouse, Источники данных. ← Оглавление документации ### Запуски Все запуски скриптов — ручные, по расписанию и из чата агента — идут через один и тот же движок: одинаковые правила, очередь, окружение и история. Поэтому поведение предсказуемо: что работает по расписанию, так же работает и из чата. Как запустить Кнопка «Запустить» — на странице запускаемого скрипта. Запускаются только файлы Python (.py) и shell-скрипты (.sh). Запуск принимается мгновенно: запись о нём создаётся сразу, а сам процесс может подождать свободного места в очереди, если параллельные запуски ограничены. Вывод в реальном времени Вывод скрипта идёт потоком в консоль запуска — видно каждую строку по мере появления, а не после завершения. Запуск можно остановить кнопкой «Стоп», если скрипт завис или пошёл не туда. Окружение — одинаковое для всех запусков Каждый запуск получает детерминированное окружение: тот же интерпретатор Python (встроенный в образ или заданный в настройках), рабочая папка — корень скриптов. Файл .env читается на каждый запуск заново, поэтому правки секретов или настроек подхватываются без перезапуска приложения. Пароли попадают в процесс переменными окружения, из кода их не видно. Откуда запуск Каждый запуск несёт метку источника: запущен вручную, по расписанию или агентом из чата. Запуски агента дополнительно привязаны к ETL-сессии и чату — на запуске виден бейдж сессии, по которому можно перейти в чат и посмотреть, о чём шла речь. История и логи Все запуски сохраняются в базе приложения. Раздел «Запуски» — это список с фильтром: у каждого запуска открываются детали, полный вывод и журналы. Даже если скрипт запускался неделю назад, его результат можно посмотреть в любой момент. Ограничения и состояния таймаут: скрипт, работающий дольше положенного, останавливается автоматически; лимит параллельных запусков: слишком много одновременных скриптов не перегружают сервер — остальные ждут очереди; состояния запуска: идёт, завершён успешно, завершён с ошибкой, остановлен пользователем, ожидает в очереди. После запуска — свежие данные После успешного запуска папка источника в Lakehouse пересканируется: новые и обновлённые данные становятся доступны для запросов сразу, без ручной настройки. Источник появляется или обновляется автоматически — подробнее на странице Источники данных. Читайте также: Скрипты, Планировщик, Lakehouse. ← Оглавление документации ### Интеграция с Pastukhov Agent Data Agent работает на вашем центральном Pastukhov Agent: чат и все функции искусственного интеллекта берутся из него. Не нужно заводить отдельные ключи и подписки на модели — Data Agent пользуется моделями, навыками и чат-инфраструктурой вашего агента, а сам занимается только скриптами, запусками и данными. Чат: агент наружу Переменные AGENT_API_URL и AGENT_API_KEY соединяют Data Agent с Pastukhov Agent. Приложение проксирует общение: чат открывается на всех страницах, модели и навыки — ваши, из панели Pastukhov Agent. Единый агент работает и в Data Agent, и в остальных продуктах — настраивать каждое приложение отдельно не нужно. Подробнее о чате — на странице Чат с агентом. Общая папка скриптов Pastukhov Agent работает на той же папке scripts/, что монтирует Data Agent (это папка AGENT_PROJECT_PATH агента). Обе стороны видят одни и те же файлы: агент пишет и правит скрипты, Data Agent их выполняет и планирует. Роли разделены, конфликтов нет — агент не запускает скрипты через приложение, а только готовит их. Агентские API: агент внутрь Для управления данными у Data Agent есть программные интерфейсы — адреса API /api/agent/*, доступ к которым закрыт ключом в заголовке X-API-Key (в переменной DATA_AGENT_API_KEY хранится SHA-256-хэш этого ключа). Через них агент умеет: открывать ETL-сессии, привязанные к чату; смотреть источники данных и их схемы, выполнять запросы (только чтение): SELECT; работать с Lakehouse: списки, папки, файлы; управлять скриптами: список, запуск, опрос статуса, остановка; читать и заменять расписание целиком. ETL-цикл из чата Типичный цикл выглядит так: агент открывает сессию → смотрит доступные источники → пишет или правит extract.py и load.py → запускает → проверяет данные запросом → ставит расписание → закрывает сессию. Запуски, сделанные в рамках сессии, несут бейдж сессии и ссылку на чат — всегда видно, что и зачем запускалось. Документация API Описание агентских API живёт в проекте Data Agent (файл data-agent-api.md) — оно нужно разработчикам и самому агенту. Пользователю достаточно знать, что агент умеет всё это сам: вы просто описываете задачу в чате. Лицензия Чат и управление очередью промптов требуют действующей лицензии Data Agent. Типы лицензий и цены — на странице Лицензирование Data Agent. Подробнее о самом Pastukhov Agent — на странице Pastukhov Agent. Читайте также: Чат с агентом, Планировщик. ← Оглавление документации ### Источники данных Источник данных — это то, к чему можно обращаться с запросами: таблицы с полями, из которых Analytics Agent строит отчёты, а агент — проверяет результаты. В Data Agent источники не нужно настраивать руками: они появляются сами, как только в данных появляется готовая база. Автоматическое обнаружение Каждая папка Lakehouse, в корне которой есть файл базы SQLite, становится источником с именем {проект}_{источник} — например, market_prices. Источник указывает на самую свежую базу папки и открыт только для чтения: скрипты пишут данные, а запросы их не меняют. Если база удалена, источник исчезает при следующем пересканировании. Свежесть данных Пересканирование происходит после завершения каждого запуска скрипта в папке источника, а также при обращении к ещё неизвестному имени. Поэтому свежие данные, которые только что собрал скрипт, доступны для запросов сразу — ничего не нужно «обновлять» вручную. Переопределения и внешние базы Иногда нужно изменить обнаруженный источник: указать другую базу, поправить название или настройки — или подключить базу, которая лежит не в Lakehouse. Для этого служат JSON-файлы в папке переопределений (volume /data). Один битый файл не ломает реестр: он пропускается с предупреждением, остальные источники работают. Запросы к данным Сегодня запрашиваются SQLite-источники. Разрешены запросы только на чтение (SELECT): агент проверяет данные после загрузки, вы — используете их в своей аналитике. Схема таблиц доступна сразу — видно, какие поля и типы лежат в каждой таблице. Интерфейс — дашборд только для чтения Раздел «Источники данных» показывает список источников, детали каждого и счётчик таблиц. Регистрирует источники агент — в интерфейсе их нельзя создать или изменить, но и случайно сломать тоже нельзя. Смысл простыми словами Раньше подключение базы данных — это настройка соединений, прав доступа и форматов. Здесь — ничего этого: скрипт собрал базу в Lakehouse, и источник готов к использованию. Один принцип «положил базу — получил источник» покрывает и новые задачи. Читайте также: Lakehouse, Запуски, Данные для Analytics Agent. ← Оглавление документации ### Начало работы Data Agent — это ИИ-агент для сбора и подготовки данных. Вы описываете в чате, какие данные нужны, — агент сам пишет и поддерживает Python-скрипты, запускает их вручную или по расписанию, а результаты складывает в хранилище Lakehouse. Data Agent служит источником данных для Analytics Agent: всё, что он собрал и подготовил, Analytics Agent показывает в отчётах и графиках. ETL — сбор, подготовка и загрузка данных — полностью выполняется агентами: в интерфейсе нет ни ручного ввода данных, ни правки скриптов. Для кого это Для владельцев бизнеса и команд, которым нужны регулярные данные: цены конкурентов, статистика заказов, выгрузки из API внешних сервисов. Раньше для этого приходилось нанимать разработчика или разбираться в выгрузках самому. Здесь достаточно объяснить агенту, что нужно, — он напишет код, настроит расписание и будет поддерживать выгрузку в рабочем состоянии. Системные требования Нужен только Linux-сервер с Docker. Окружение Python со всеми библиотеками для работы с данными встроено в образ — отдельно устанавливать ничего не придётся. Подробная установка — на странице Установка Data Agent. Первый вход — саморегистрация Логин и пароль не задаются заранее: при первом запуске приложение открыто для регистрации, и первый созданный аккаунт становится администратором. После этого регистрация закрывается. Вход работает по токену сессии (90 дней), пароли хранятся в виде хэшей — их невозможно прочитать из базы. Разделы интерфейса Главный экран — обзор: запуски за сегодня и состояние экземпляра, быстрые переходы в нужные разделы; Чаты — общение с агентом: здесь вы просите собрать данные и править выгрузки обычным языком. Раздел появляется, когда заданы AGENT_API_URL и AGENT_API_KEY (адрес и ключ вашего агента); Скрипты — дерево папок и файлов, которые написал агент: у каждой папки есть описание, у каждого файла — страница с кодом; Запуски — история всех запусков с живым выводом и журналами; Планировщик — расписание запусков: агент управляет им по вашим просьбам, здесь видно, что и когда запускается, и есть кнопка «Запустить сейчас»; Lakehouse — хранилище собранных данных, разложенных по проектам и источникам: Parquet, базы, описания, журналы; Источники данных — реестр источников, к которым можно обращаться с запросами: они появляются автоматически; Аналитика — обзор работы агента: токены, стоимость, нагрузка по часам и дням; Настройки — тема, язык, размер шрифта, интерпретатор Python для запусков; Мобильный — мобильное веб-приложение для iOS и Android: те же возможности на телефоне. Тёмная тема включена по умолчанию, язык интерфейса — русский (в настройках каждый пользователь выбирает своё). Первый скрипт за пять минут Опишите агенту в чате, какие данные нужны и откуда их брать (например: «Каждый день собирай цены конкурентов из каталога»). Агент создаст папку источника в папке скриптов: скрипт выгрузки extract.py, скрипт сборки базы load.py и файл с описанием. Попросите запустить — данные появятся в Lakehouse, а источник станет доступен автоматически. Попросите поставить расписание — дальше данные будут обновляться сами. Подключите источник в Analytics Agent — и стройте отчёты и графики на свежих данных. Дальше по документации Чат с агентом — как просить о задачах, модели и очередь сообщений; Скрипты — как устроена папка скриптов и что в ней лежит; Запуски — выполнение скриптов вручную и по расписанию; Планировщик — расписание запусков и его правила; Lakehouse — хранилище данных: что и где лежит; Источники данных — как данные становятся готовыми к запросам; Данные для Analytics Agent — связка «собрал → подготовил → показал»; Аналитика агента — токены, стоимость, нагрузка; Интеграция с Pastukhov Agent — как устроена связка с центральным агентом. ← Оглавление документации ### Планировщик Встроенный планировщик запускает скрипты по расписанию — для этого не нужен ни «крон» на сервере (системный планировщик задач), ни другие внешние инструменты. Всё расписание — это один файл schedule.yml в папке скриптов, которым управляет агент: вы просите в чате «запускай каждый день в 9 утра» — агент вносит запись сам. Как устроено расписание Файл schedule.yml — это список записей. У каждой записи: id — название записи; script — путь к скрипту внутри папки; описание — зачем эта задача; и одно из двух: every — интервал (например, 15m, 24h, 7d) или cron — точное время по полям: минута, час, день месяца, месяц, день недели (по UTC); дополнительные флаги: enabled (запись включена), overlap — что делать, если прошлый запуск ещё идёт (пропустить или поставить в очередь), catchUp — догонять ли пропущенные запуски. Интервалы: без дрейфа Новая запись с интервалом запускается сразу, а дальше тикает по фиксированной сетке: каждые 15 минут, каждые 24 часа — точно, без накопления задержек. Если приложение простаивало (например, сервер перезагружался), следующий запуск — первая точка сетки в будущем, а не «плавающее» время от включения. Точное время Запись с точным временем ждёт совпадения по часам (UTC): «каждый будний день в 7:00». Выражения, у которых будущих срабатываний нет (например, 31 февраля), не теряются — перепроверяются позже. Валидация «всё или ничего» Весь файл проверяется целиком: одна плохая запись — и весь новый файл отклоняется, а действует последняя рабочая версия расписания. Сломать расписание одной опечаткой невозможно, данные не останутся без запусков. Отсутствие файла — не ошибка: просто расписания нет, ничего не запускается. Пропущенные запуски Если время запуска пришло, пока приложение было выключено, запуск выполнится при старте (если включён catchUp) или будет пропущен по правилам очереди. Запуски не теряются молча — поведение всегда предсказуемо. Управление в интерфейсе Раздел «Планировщик» показывает все записи: что запускается, когда и с каким интервалом. Отсюда можно приостановить всё расписание целиком, поставить на паузу одну запись, запустить скрипт прямо сейчас кнопкой «Запустить сейчас» и посмотреть историю запусков по расписанию. Сам файл в интерфейсе не редактируется: изменения расписания просите в чате — агент обновит schedule.yml, а правки подхватятся на лету, без перезапуска приложения. Читайте также: Запуски, Чат с агентом. ← Оглавление документации ### Скрипты Папка скриптов — сердце Data Agent. Это обычная папка обычных файлов на вашем сервере: по папке на каждый источник данных. Все скрипты пишет и поддерживает агент — вы их читаете и запускаете, а править руками не нужно. Интерфейс читает папку напрямую, поэтому изменения агента видны мгновенно. Структура папки Каждый источник данных — это папка scripts/{проект}/{источник}/, в которой живут: README.md — обязательное описание источника: откуда данные, что внутри, какие поля. Оно же становится страницей папки в интерфейсе; extract.py — скрипт выгрузки: берёт данные из внешнего сервиса и сохраняет в Parquet; load.py — скрипт сборки: приводит выгруженные данные к единой базе SQLite для запросов и визуализации; опционально download.py — скачивание файлов (если выгрузка идёт через файлы), test.py — проверки, заметки PLAN.md. Правила папки Parquet — всегда исходные данные: то, что выгрузил скрипт, не трогается; SQLite — производная база: пересобирается скриптом load.py при каждом запуске; журналы запусков пишутся рядом с данными в Lakehouse, а не в папке скриптов; пароли и ключи — только в файле .env, в код их писать нельзя: они попадают в процесс переменными окружения на каждый запуск; новая библиотека добавляется в requirements.txt — при старте контейнер доустановит её сам. Дерево в интерфейсе Раздел «Скрипты» показывает папки и файлы деревом. Страница папки — это её описание README, отформатированное как документ (заголовок, описание, заметки). Страница файла — код с подсветкой; для Markdown — готовый документ. Наверху всегда хлебные крошки, по которым видно, где вы находитесь. Поиск, отметки, иконки поиск по папкам и файлам работает по мере ввода — результат виден сразу; непрочитанные изменения подсвечиваются, пока вы их не откроете; у каждой папки можно настроить иконку — это единственная запись раздела наряду с отметками прочтения, сам код интерфейс не меняет. Живые обновления Слежение за файлами встроено в приложение: агент поправил скрипт — правка появляется на экране мгновенно, без перезагрузки. То же самое с новыми папками, описаниями и заметками: вы всегда видите текущее состояние папки. Действия со страницы постоянная ссылка на папку или файл — удобно делиться; кнопка «Спросить агента» — открывает чат, куда уже подставлен путь к файлу: можно попросить исправить или объяснить; у запускаемых файлов — кнопка запуска и история запусков прямо на странице. Распространение и перенос Папка скриптов самодостаточна: её можно скопировать, упаковать в архив или держать отдельным Git-репозиторием — тогда агент работает прямо с репозиторием. Перенос на другой сервер — это просто перенос папки. Читайте также: Запуски, Планировщик, Чат с агентом. ← Оглавление документации ### Чат с агентом Вся работа со скриптами и данными происходит через чат. Вы пишете агенту обычным языком — он отвечает, пишет код, запускает его и сообщает результат. Приложение при этом работает как посредник: оно показывает чат и живой поток событий, а сам разговор ведёт ваш центральный Pastukhov Agent. Подключение Чат подключается двумя переменными окружения: AGENT_API_URL — адрес вашего Pastukhov Agent и AGENT_API_KEY — его API-ключ. Пока они не заданы, раздел «Чаты» показывает уведомление, что агент не настроен, — всё остальное в Data Agent продолжает работать. Как это работает Браузер общается только со своим сервером Data Agent, а сервер пересылает запросы агенту, подставляя ключ на своей стороне. Ключ агента никогда не попадает в браузер, все функции чата живут на внешнем Pastukhov Agent — приложение ничего из него не сохраняет, а только показывает. Поток в реальном времени Все события чата — новые сообщения, этапы обработки, состояние очереди — приходят одной живой лентой обновлений, без перезагрузки страницы. Ответ агента «печатается» у вас на экране, и вы видите, что он делает: читает файлы, правит скрипт, запускает его. Модели и навыки Для каждого сообщения можно выбрать модель (быстрая для простых вопросов, мощная для сложного кода) и навык — специализацию агента. Список моделей и навыков агент отдаёт сам, он обновляется вживую: подключили новую модель в панели агента — она сразу появится в списке. Очередь промптов Если агент занят, отправленные сообщения становятся в очередь и видны карточками над полем ввода. Каждую карточку можно приостановить, изменить или убрать, пока очередь не дошла до неё. Задачи при этом выполняются одна за другой, ничего не теряется. Git: каждое изменение на контроле Агент коммитит каждое изменение скриптов в Git. В панели чата видно историю коммитов, можно отменить незафиксированные правки, если что-то пошло не так. Это гарантия, что любое состояние папки скриптов можно восстановить. Лицензирование Отправка сообщений агенту и управление очередью промптов требуют действующей лицензии. Без неё приложение предупреждает: активируйте лицензию, чтобы отправлять сообщения. Запуски, планировщик, Lakehouse и просмотр данных работают и без лицензии. Подробнее — на странице Лицензирование Data Agent. ETL-сессии Когда агент выполняет по вашей просьбе задачу со сбором данных, он открывает ETL-сессию — рабочий цикл, привязанный к чату. Запуски скриптов, сделанные в рамках сессии, получают бейдж сессии и ссылку на чат: всегда видно, зачем запускался скрипт и кто его запустил. О цикле ETL подробнее — на странице Интеграция с Pastukhov Agent. ← Оглавление документации ### Лицензирование Data Agent Все лицензии Data Agent — пожизненные: единоразовый платёж, без подписок, без ограничений на количество данных и запусков. Лицензирование работает офлайн, ваш ключ действительно пожизненный. Каждая лицензия включает 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензия активируется ключом — в интерфейсе (диалог лицензии) или переменной окружения AGENT_LICENSE. Без действующей лицензии не работают отправка сообщений агенту и управление очередью промптов; запуски, планировщик, Lakehouse и просмотр данных работают как обычно. Персональная лицензия — 19 700 ₽ Все функции Data Agent без ограничений для частных лиц: неограниченное количество установок на любых ваших компьютерах и серверах. 19 700 ₽ единоразовый платёж за пожизненную лицензию. 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Корпоративная лицензия — 49 700 ₽ Все функции Data Agent без ограничений для всех сотрудников компании или команды, включая внешних подрядчиков. 49 700 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Сервисная лицензия — 97 000 ₽ Неограниченное количество экземпляров Data Agent под вашим доменом + полный исходный код с правом изменять его как угодно, обновлять оформление и брендинг, интегрировать со своей инфраструктурой. Может использоваться любым посетителем вашего домена как часть ваших сервисов. 97 000 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена сервисная лицензия на Pastukhov Agent, который является частью продукта: его исходный код доступен только при покупке сервисной лицензии на сам Pastukhov Agent. Для бесшовных обновлений рекомендую изменять только брендинг и интеграцию, чтобы минимизировать усилия при слиянии с новыми функциями и исправлениями. Бесплатные лицензии В некоторых случаях я готов подарить бесплатную лицензию: если вы нашли баг или уязвимость безопасности в любом из моих продуктов (у меня буквально нет бюджета на платные баг-баунти, к сожалению); если вы предложили дельную идею по улучшению моих продуктов (кодить не обязательно, достаточно полезной идеи — вы получите лицензию, если я включу её в план разработки); если вы активный контрибьютор open-source проектов (я люблю open-source, просто у меня нет времени поддерживать свои продукты как open-source); если вы ведёте популярный блог, Telegram-канал или YouTube-канал о программировании, AI, аналитике, маркетинге, бизнесе, финансах или IT в целом (упоминание или реклама не требуются, это полностью на ваше усмотрение); если вы активный партнёр-аффилиат (продажи не обязательны, но у вас должен быть хотя бы какой-то контент, посвящённый моим продуктам). Если что-то из перечисленного про вас, просто напишите мне в Telegram. Укажите имя и email, и я сгенерирую ваш персональный пожизненный лицензионный ключ. ### Установка Data Agent Data Agent — веб-приложение для сбора и подготовки данных, которое разворачивается на вашем сервере одним Docker-контейнером. В образ уже встроено окружение Python, в котором выполняются скрипты агента. Папка скриптов монтируется отдельно — это та же папка, на которой работает Pastukhov Agent, поэтому оба продукта видят одни и те же файлы. Минимальные требования Достаточно любого Linux-хоста с Docker. Всё остальное уже в образе: веб-сервер приложения (ASP.NET Core 9); окружение Python со всеми зависимостями для работы с данными (pandas, pyarrow, SQLAlchemy); инструменты для файловых операций с данными. СУБД не нужна: по умолчанию данные приложения хранятся во встроенной SQLite в volume /data. PostgreSQL подключается одной переменной окружения, если она у вас уже есть. Docker Compose Создайте файл compose.yml и запустите docker compose up -d: services: dataagent-ru: image: maxpastukhov/data-agent:min-latest container_name: dataagent-ru ports: - "8081:8080" volumes: - ./data-ru:/data # Папка скриптов — агент работает с ней напрямую (AGENT_PROJECT_PATH) - ../../scripts:/project/scripts # Корень Lakehouse — данные организованы по проектам и источникам - /lakehouse:/lakehouse environment: - ASPNETCORE_ENVIRONMENT=Production - ASPNETCORE_URLS=http://+:8080 # Пусто = SQLite /data/data.db; строка подключения — PostgreSQL - DATA_AGENT_DB= - DATA_AGENT_BRAND=pastukhov # Связь с Pastukhov Agent для чата - AGENT_API_URL= - AGENT_API_KEY= # SHA-256-хэш ключа для агентских API /api/agent/* - DATA_AGENT_API_KEY= # встроенное окружение Python в образе - DATA_AGENT_PYTHON=/app/venv/bin/python restart: unless-stopped sysctls: fs.inotify.max_user_watches: "524288" fs.inotify.max_user_instances: "512" После запуска интерфейс будет доступен на порту 8081: http://localhost:8081. В compose три монтирования: ./data-ru:/data — постоянные данные приложения: база, ключи, переопределения источников; ../../scripts:/project/scripts — папка скриптов: та самая, на которой работает Pastukhov Agent (его AGENT_PROJECT_PATH), — агент и приложение видят одни файлы; /lakehouse:/lakehouse — корень данных, организованных по проектам и источникам. Sysctls повышают лимиты отслеживания файлов (inotify) — они нужны, чтобы изменения, которые агент вносит в скрипты, подхватывались мгновенно, без перезагрузки. Без этих лимитов на большом объёме файлов часть изменений может быть не замечена. Окружение Python встроено прямо в образ: при каждом старте контейнер сверяет зависимости из requirements.txt и сам доустанавливает новые. Чтобы агент мог использовать новую библиотеку, достаточно добавить её в этот файл. Переменные окружения DATA_AGENT_BRAND — бренд и язык интерфейса: pastukhov (русский) или xedant (английский, по умолчанию). DATA_AGENT_DB — путь к базе SQLite или строка подключения PostgreSQL. Пусто = SQLite /data/data.db. AGENT_API_URL и AGENT_API_KEY — адрес и API-ключ Pastukhov Agent для чата. Без них раздел «Чаты» скрыт, всё остальное работает. DATA_AGENT_API_KEY — SHA-256-хэш ключа, которым агент ходит в агентские API /api/agent/*. Без него эти API закрыты. DATA_AGENT_PYTHON — интерпретатор Python для запусков скриптов (по умолчанию /app/venv/bin/python — встроенный в образ). DATA_AGENT_CLICKHOUSE_URL — строка подключения ClickHouse: опциональный сбор статистики запусков. Пусто = выключено. DATA_AGENT_INSTANCE — имя экземпляра для статистики (по умолчанию — имя машины). AGENT_LICENSE — лицензионный ключ продукта (или активация в интерфейсе). Важно: DATA_AGENT_API_KEY — это SHA-256-хэш ключа, а не сам ключ. Хэш вычисляется командой echo -n "ключ" | sha256sum, и именно это значение Pastukhov Agent передаёт в заголовке X-API-Key. Ключ в открытом виде в переменной не хранится. Первый вход — саморегистрация В отличие от других агентов, логин и пароль не задаются в переменных окружения. При первом запуске приложение открыто для регистрации: первый созданный аккаунт становится администратором. После этого регистрация закрывается. Пароли хранятся в виде SHA-256-хэшей, сессия работает через JWT-токены (90 дней), настройки интерфейса — тёмная тема, язык, размер шрифта — задаются каждым пользователем отдельно. Настройка после запуска Чат с агентом: задайте AGENT_API_URL и AGENT_API_KEY — появятся раздел «Чаты» и боковая панель с агентом на всех страницах. Список моделей и навыков агент отдаёт сам. Агентские API (/api/agent/*): задайте DATA_AGENT_API_KEY — агент сможет управлять скриптами, запусками, расписанием и запросами к данным из своего чата. Для этого Pastukhov Agent должен работать на той же папке scripts/ (его AGENT_PROJECT_PATH). Лицензия: активируется ключом в интерфейсе (диалог лицензии) или переменной AGENT_LICENSE. Без действующей лицензии не работают отправка сообщений агенту и управление очередью промптов; запуски, планировщик, Lakehouse и просмотр данных работают. Хранение данных Всё постоянное хранится в volume /data и переживает пересоздание контейнера: /data — база приложения, ключи JWT, переопределения источников; /lakehouse — данные скриптов, по проектам и источникам: Parquet, SQLite, README, логи; /project/scripts — обычная папка скриптов: её можно копировать, версионировать в Git, отдать агенту отдельным репозиторием. Обновление Обновление — две команды: git pull, затем docker compose pull && docker compose up -d. Volume /data переживает обновление, миграции схемы выполняются автоматически при старте. Откат — указанием предыдущего тега образа и восстановлением резервной копии /data. ← Вернуться на главную раздела Data Agent ### ИИ-агент для исследований и планирования Глубокие исследования, идеи и планы: десятки поисков и сотни страниц за одну сессию Десятки поисковых запросов по одной теме за одно исследование Шесть провайдеров поиска: Serper, Brave, Tavily, DuckDuckGo, Keenable, SearXNG Скачивание сотен страниц с обходом блокировок и защит Конвертация веб-страниц в чистый Markdown Удалённый браузер для страниц, требующих JavaScript Батчинг: обработка объёмов больше контекста модели Структурированное извлечение данных в TSV и JSON Генерация идей, планов и описаний интерфейсов Результаты готовы к передаче агентам разработки Верификация фактов с критикой и альтернативами Action Research: деятельность в циклах plan → act → observe → reflect Иерархические циклы: стратегия, тактика, прикладной уровень Исследование за 20–30 минут и 10–30 центов на DeepSeek-V4-Flash — ещё дешевле на DeepSeek-V4-Flash-Mini через OpenRouter Глубже Perplexity и ChatGPT с поиском — сотни источников Работает на вашем центральном Pastukhov Agent — без лишних ключей и подписок Очередь промптов: готовьте задания заранее — агент отправит их сам, по очереди, с ограничением одновременных чатов Управление Pastukhov Agent прямо из интерфейса Чаты агента с обновлениями в реальном времени — без вкладок браузера Редактирование документов с помощью ИИ (Edit with AI) Любые OpenAI-совместимые модели с запасными вариантами Библиотека исследований по маркетингу и продажам в поставке Полная русская локализация интерфейса Self-hosted: SQLite или PostgreSQL, тёмная и светлая темы Голосовой ввод в чатах агента — надиктуйте задачу, печатать не обязательно Установка Документация FAQ Лицензирование Навык онлайн-исследования Фиксированный конвейер: поиск → скачивание → извлечение → отчёт → верификация Десятки запросов и сотни страниц по одной теме Оценки времени завершения и статусы выполнения в реальном времени Полнота важнее краткости: отчёты без сокращений Подробнее Поиск через шесть провайдеров Serper (Google), Brave, Tavily, DuckDuckGo, Keenable, SearXNG Автоматическая подстраховка при ошибках провайдера Фильтрация результатов по релевантности Поисковые сессии с историей и статусами Подробнее Скачивание с обходом блокировок Четыре метода: прямые запросы, прокси, эмуляция браузера, удалённый браузер Обход анти-бот защит и блокировок на уровне CDN Конвертация в чистый Markdown с помощью Trafilatura Хранение по датам с превью прямо в интерфейсе Подробнее Извлечение структурированных данных Разбивка Markdown на чанки с бюджетом токенов Пакетное извлечение таблиц в TSV и JSON Учёт токенов и стоимости каждой операции Работа с объёмами, превышающими контекст модели Подробнее Библиотека исследований Дерево Markdown-документов с навигацией по категориям Встроенный редактор с подсветкой синтаксиса Превью скачанных исходников у каждого отчёта Редактирование документов с помощью ИИ Подробнее Идеи, планы и интерфейсы Генерация идей и стратегий на основе собранных фактов Планы разработки со стадиями и критериями проверки Описания интерфейсов, готовые для агентов разработки Конкуренты, отзывы и документация → архитектура за 30–60 минут Подробнее Action Research Методология plan → act → observe → reflect Три уровня: стратегический, тактический, прикладной Agile — одна из реализаций Action Research Double-loop learning и мета-циклы развития Подробнее Встроенные исследования Маркетинг и продажи: готовая база исследований автора B2B-продажи, генерация спроса, лидогенерация, аутрич Telegram, YouTube и каталог маркетинговых задач Ядро для расширения под свою тематику Подробнее Чаты Pastukhov Agent Управление агентом из интерфейса исследований Трансляция событий чатов в реальном времени через SignalR «Вызвать агента» прямо из документа исследования Всё в одном окне — без десятка вкладок браузера Счётчик расхода у сообщений: сколько «порций текста» (токенов) потрачено, стоимость и скорость обработки — разбивка по наведению; понятно, куда уходят деньги Живые статусы инструментов по-русски: Читаю, Создаю, Ищу, Исполняю, Запускаю подагента… — видно, чем агент занят прямо сейчас Состояние чата восстанавливается после перезагрузки страницы Подробнее Модели и стоимость Любые OpenAI-совместимые модели Приоритеты и автоматическая подстраховка сервисов Исследование за 10–30 центов на DeepSeek-V4-Flash — ещё дешевле на DeepSeek-V4-Flash-Mini через OpenRouter Полная статистика: токены, вызовы, стоимость Ключи доступа можно не хранить в базе — записать ссылку на переменную окружения ($NAME), для смены достаточно поправить настройки и перезапустить контейнер Подробнее Очередь промптов Промпт — это текстовое задание агенту. Такие задания набрасывают в очередь заранее, а агент выполняет их по очереди сам — не нужно сидеть и отправлять каждое вручную Список общий с интерфейсом Pastukhov Agent — одни и те же строки видны и там, и там Ручная отправка одного промпта в новый чат в один клик; генератор повторяющихся заданий — фраза-заготовка с подстановкой разных значений (шаблон VAR) Автоотправка: агент сам отправляет задания из очереди. Одновременно выполняется не больше нескольких чатов (по умолчанию 3), задержку проверок и автопереход к новому чату можно настроить Учёт часов пиковой нагрузки моделей: в «горячее» время задания подождут, в «спокойное» — уйдут сразу Изменения синхронизируются в реальном времени между вкладками и устройствами Подробнее Голосовой ввод Кнопка микрофона в поле ввода чата агента — нажали, проговорили, нажали снова Распознанная речь попадает текстом в сообщение и уходит агенту обычным путём Работает прямо в браузере — ничего дополнительно устанавливать не нужно Доступен везде, где открыт чат агента Подробнее Установка Документация FAQ Лицензирование Бесплатный период Бесплатное использование в течение 30 дней — триал встроен в Docker-образ. Даже после истечения бесплатной лицензии приложение остаётся полностью функциональным, кроме запуска новых исследований. Никакой привязки — вы можете экспортировать данные из SQLite или PostgreSQL. Персональная лицензия Все функции Research Agent без ограничений для частных лиц: неограниченное количество установок на любых ваших компьютерах и серверах. 19 700 ₽ единоразовый платёж за пожизненную лицензию. 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Корпоративная лицензия Все функции Research Agent без ограничений для всех сотрудников компании или команды, включая внешних подрядчиков. 49 700 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Сервисная лицензия Неограниченное количество экземпляров Research Agent под вашим доменом + полный исходный код с правом изменять его как угодно, обновлять UI или брендинг в соответствии с вашей компанией или доменом, тесно интегрировать с вашей инфраструктурой. Может использоваться любым посетителем вашего домена как часть ваших сервисов. 97 000 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена сервисная лицензия на Pastukhov Agent, который является частью продукта. Исходный код Agent доступен только при покупке сервисной лицензии на сам Pastukhov Agent. Для бесшовных обновлений рекомендую изменять только брендинг и интеграцию, чтобы минимизировать усилия при слиянии с новыми функциями и исправлениями. Бесплатные лицензии В некоторых случаях я готов подарить бесплатную лицензию: если вы нашли баг или уязвимость безопасности в любом из моих продуктов (у меня буквально нет бюджета на платные баг-баунти, к сожалению); если вы предложили дельную идею по улучшению моих продуктов (кодить не обязательно, достаточно полезной идеи — вы получите лицензию, если я включу её в план разработки); если вы активный контрибьютор open-source проектов (я люблю open-source, просто у меня нет времени поддерживать свои продукты как open-source); если вы ведёте популярный блог, Telegram-канал или YouTube-канал о программировании, AI, аналитике, маркетинге, бизнесе, финансах или IT в целом (упоминание или реклама не требуются, это полностью на ваше усмотрение); если вы активный партнёр-аффилиат (продажи не обязательны, но у вас должен быть хотя бы какой-то контент, посвящённый моим продуктам). Если что-то из перечисленного про вас, просто напишите мне в Telegram. Укажите имя и email, и я сгенерирую ваш персональный пожизненный лицензионный ключ. ### FAQ Research Agent Чем Research Agent отличается от Pastukhov Agent? Pastukhov Agent — инструмент разработчика: IDE вокруг Claude Code для написания кода. Research Agent — рабочий кабинет аналитика: исследование рынка, планирование и документирование без работы с кодом. При этом Research Agent умеет управлять агентом в фоновом режиме — чаты и запуск задач видны в том же интерфейсе. Чем он лучше Perplexity или ChatGPT с поиском? Они отвечают на вопрос по нескольким источникам за один запрос. Research Agent выполняет десятки поисков, скачивает и анализирует сотни страниц, извлекает данные пакетами — объёмы, недоступные контексту моделей. На выходе — верифицированный отчёт с первоисточниками, который вручную собрать нереально. Сколько стоит одно исследование? С моделью DeepSeek-V4-Flash — порядка 10–30 центов, выполняется за 20–30 минут; ещё дешевле обойдётся DeepSeek-V4-Flash-Mini через OpenRouter. Поддерживаются любые OpenAI-совместимые модели: можно выбрать любую другую, статистика токенов и стоимости ведётся по каждому вызову. Что нужно для запуска? Docker-хост — контейнер один, база SQLite встроена. После запуска задайте в разделе Services API-ключ хотя бы одного поискового провайдера и LLM-сервиса. Для интеграции с Pastukhov Agent — URL и API-ключ агента в переменных окружения. Можно ли использовать без Pastukhov Agent? Да. Поиск, скачивание, извлечение, библиотека исследований и отчёты работают самостоятельно. Интеграция лишь добавляет чаты агента и кнопки «Вызвать агента» на страницах документов. Где хранятся данные? Всё self-hosted в volume /data: база (SQLite или PostgreSQL), скачанный Markdown, ключи. Наружу уходят только запросы к выбранным вами поисковым и LLM-провайдерам. Почему не open-source? Я уже пробовал запускать и поддерживать бесплатные продукты — больше 20 лет назад. Это того не стоит — объём поддержки намного выше, при этом нет ресурсов на дальнейшее развитие. Я предпочитаю иметь гораздо меньше пользователей, которые действительно любят продукты и готовы за них платить. Ещё одна важная причина — контроль: я предпочитаю сохранять продукты простыми и минималистичными. С открытым исходным кодом я ожидаю тонны AI-сгенерированных PR с функциями, которые я намеренно избегал из-за их сложности и плохих решений. Что такое очередь промптов и зачем она нужна? Промпт — это текстовое задание агенту: «собери данные о конкурентах», «найди и распиши преимущества пяти моделей». Обычно каждое такое задание нужно оформить и отправить вручную. Очередь промптов позволяет заранее набросать список заданий, а агент выполнит их сам — одно за другим, без ручной отправки. Включите Автоотправку — и одновременно будет выполняться несколько заданий: как только одно завершилось, сразу запускается следующее. Главное «зачем»: вы один раз подготовили список, а дальше агент работает сам — можно заниматься другими делами. Очередь общая с интерфейсом Pastukhov Agent: задания, добавленные там, видны и здесь. Есть ли голосовой ввод? Да. Рядом с полем ввода сообщения есть кнопка микрофона: длинное задание агент можно просто надиктовать — распознавание речи работает прямо в браузере, а надиктованный текст появляется в сообщении и уходит агенту. Печатать не обязательно, а надиктовать можно даже задания в очереди промптов. Безопасно ли хранить ключи в переменных окружения? Да. В настройках сервиса секрет можно записать не как сам ключ, а как ссылку на переменную окружения — $NAME или ${NAME}. Сам ключ в базе не хранится: значение берётся из окружения сервера при каждом обращении. Сменить ключ — значит изменить значение переменной и перезапустить контейнер: править базу не нужно. ### Документация Research Agent Начало работы Что такое Research Agent, первый вход, настройка сервисов, первое исследование. Навык онлайн-исследования Конвейер глубокого исследования: поиск, скачивание, извлечение, отчёт, верификация. Поиск Шесть провайдеров, запасные варианты, сессии поиска, фильтрация релевантности. Скачивание страниц Четыре метода скачивания, обход блокировок, конвертация в Markdown. Извлечение данных Чанкинг, пакетное извлечение TSV/JSON, батчи, токены и стоимость. Библиотека исследований Дерево документов, редактор, превью исходников, Edit with AI. Планирование и идеи Генерация идей, планов и интерфейсов для агентов разработки. Action Research Циклы plan → act → observe → reflect на трёх уровнях. Встроенные исследования Готовая база по маркетингу и продажам, структура для расширения. Интеграция с Pastukhov Agent Чаты агента в интерфейсе, вызов агента из документа, agent API. Сервисы и модели Поисковые провайдеры, LLM-сервисы, приоритеты, запасные варианты. Установка Docker Compose, переменные окружения, первый вход. Очередь промптов Готовьте задания заранее, а агент выполнит их сам по очереди: Автоотправка, лимит одновременных чатов, генератор повторяющихся заданий. Голосовой ввод Надиктуйте задание прямо в чат агента — печатать не обязательно; распознавание работает в браузере. ### Action Research Action Research (AR) — методология превращения бизнеса и любой деятельности в иерархические циклы plan → act → observe → reflect. Research Agent хранит циклы как документы библиотеки: рефлексия одного цикла становится планом следующего — деятельность закручивается в спираль, а не топчется на месте. Цикл Цикл — это plan → act → observe → reflect, и он не «завершается»: непрерывная итерация до желаемого результата и дальше. Фазы не изолированы — act и observe переплетаются, рефлексия идёт весь цикл, а не только в конце. Agile в разработке ПО — одна из реализаций Action Research: та же спираль коротких итераций с наблюдением и корректировкой. AR применяет её к любому бизнесу. Три уровня Стратегический (часовая стрелка) — эволюция бизнеса в целом: бизнес-план, KPI → researches/strategic-cycles/; Тактический (минутная) — эволюция направлений: оффер, очередь маркетинговых задач → researches/tactical-cycles/; Прикладной (секундная) — конкретные задачи-мини-циклы → researches/applied-cycles/. Правило часов: секунды должны двигать минуты. Короткие циклы обязаны реально двигать длинные — скорость эволюции бизнеса равна скорости итерации циклов на всех уровнях. Double-loop learning Single-loop меняет тактики при тех же допущениях, double-loop — сами допущения. Стратегический цикл явно решает, чем он занимается: оптимизацией модели (first-order) или сменой допущений (second-order). Поверх уровней работает мета-цикл — периодическое ревью самих циклов: какие живы, какие выдохлись, где не хватает итераций. Правила ведения циклов гипотеза публичная и тестируемая, с метрикой проверки — не «попробуем и посмотрим»; исполнение — только факты сделанного; планы и чеклисты живут в разделе планирования; новые стадии цикла не пишутся авансом — observe и reflect появляются по мере накопления данных; рефлексия завершается конкретным решением: продолжить, изменить или закрыть цикл; краткость и никакого взаимодействия в процессе: работа идёт с наилучшими допущениями, которые перечисляются в конце. Живые примеры В поставке — действующие циклы автора: стратегические C1 (бизнес-план), C2 (методология Action Research), C3 (KPI); тактические — оффер и очередь маркетинговых задач. Смотрите Встроенные исследования. ← Оглавление документации ### Библиотека исследований Библиотека исследований — рабочее пространство аналитика: дерево Markdown-документов по категориям, встроенный редактор и просмотр исходников каждого отчёта. Сюда попадают результаты исследований, планы и документы циклов. Дерево документов Документы организованы в дерево категорий с навигацией. У каждого файла — frontmatter с title, order и description: из них строится порядок и подписи в дереве. Дерево перечитывается при изменениях, поэтому новые отчёты и правки появляются мгновенно — обновление идёт на лету, без перезагрузки. История, поиск и фильтры В большой библиотеке документы легко находить. Рядом со строкой поиска в боковой панели есть кнопка-часы: она переключает, что показывать в списке — всё дерево, недавно просмотренные, недавно обновлённые или недавно созданные документы. «Недавно просмотренные» хранятся на этом устройстве, а «обновлённые» и «созданные» определяются по времени изменения файлов. Поиск полнотекстовый: ищет по мере ввода по заголовкам, путям и содержимому документов. Дополнительно библиотеку можно отобрать по свойствам документов (frontmatter) — например, оставить только помеченные определённым тегом. Такие запросы составляются в диалоге расширенного поиска, а доступные значения полей подсказываются автоматически. У каждого документа можно поставить значок из встроенной коллекции — дерево категорий становится нагляднее, и нужный раздел находится с первого взгляда. Позиция прокрутки страницы запоминается на сутки: открыли документ — и вы на том же месте. Внизу боковой панели — кнопки «Промпты (N)» и «Чаты»: первая открывает общую очередь промптов (см. «Очередь промптов»), вторая — список чатов агента. Редактор Встроенный редактор с подсветкой синтаксиса (CodeMirror) позволяет править любой документ прямо в браузере — отчёты, планы, циклы. Это обычный Markdown: файлы можно править, удалять и наращивать без ограничений. Исходники отчёта У каждого отчёта видна история: сессии поиска и скачанные страницы, из которых он собран. Скачанный Markdown читается прямо в интерфейсе — проверить любой факт по первоисточнику можно в один клик, без выхода из приложения. Edit with AI и «Вызвать агента» Рядом с кнопкой редактирования — иконка ИИ. Она открывает drawer с полем промпта: опишите, что изменить в документе, и промпт уходит в Pastukhov Agent (запрос {AGENT_API_URL}/api/remote/chats), который выполняет правку. Абсолютный путь исследования подставляется в промпт автоматически, модель выбирается из /data/environments.txt (например, prod и staging) — файл правится напрямую или через API. Готовый чат агента открывается из интерфейса. Функция включается переменными AGENT_API_URL и AGENT_API_KEY (задаются вместе); без них кнопки скрыты. Подробнее — в разделе Интеграция с Pastukhov Agent. Чаты агента Дополняет библиотеку страница Chats: чаты Pastukhov Agent с обновлениями в реальном времени — агент работает с документами, а вы видите каждый шаг в том же окне. ← Оглавление документации ### Встроенные исследования В поставке Research Agent — библиотека глубоких исследований по маркетингу и продажам, выполненных автором для собственного бизнеса. Это одновременно примеры качества отчётов и ядро, которое расширяется под вашу тематику. Структура дерева Planning бизнес-стратегия и обзор pastukhov.com; модель knowledge-to-action — как исследования переходят в практику; дорожная карта исследований; переход исследований в практику: B2B и ИИ-агенты; реальные кейсы исполнения агентами. Strategic cycles C1 — бизнес-план, C2 — Action Research (методология), C3 — KPI. Подробности — в разделе Action Research. Tactical cycles Оффер и очередь маркетинговых задач — тактический уровень иерархии циклов. Research Action Research — методология; ИИ-агенты: рынок, конкуренты, кейсы; досье экспертов ниши ИИ; B2B-продажи и генерация спроса (модель 95:5); лидогенерация и аутрич; Telegram и YouTube; каталог маркетинговых задач и бухгалтерия. Расширение под себя Все документы — обычный Markdown в дереве библиотеки: их можно править, удалять и наращивать. Заведите свои категории и циклы рядом с существующими — структура под любую тематику уже готова. ← Оглавление документации ### Голосовой ввод Голосовой ввод — это диктовка заданий голосом прямо в чат агента. Нажмите кнопку микрофона в поле ввода, проговорите задание — распознанная речь появится текстом в поле, и сообщение уйдёт агенту как обычное. Печатать длинное задание не обязательно. Что это и зачем Длинные задания удобно надиктовывать — особенно с телефона или планшета, где печатать несподручно. Проговорили — и текст готов в поле ввода, остаётся только отправить. Больше никакого «разбираюсь, как сформулировать, и печатаю пять минут»: сказали своими словами — агент получил задание. Как включить Настраивать ничего не нужно: кнопка микрофона уже есть в поле ввода сообщения в интерфейсе Research Agent. Она появляется, когда распознавание речи включено в настройках Pastukhov Agent, — Research Agent использует его возможности и собственных настроек речи не имеет. Если кнопки микрофона нет, включите распознавание речи в настройках агента. Как это работает Всё просто: нажали кнопку микрофона («Начать запись голоса») — началась запись, кнопка пульсирует. Проговорили задание, нажали снова («Остановить запись») — и распознанный текст уже в поле сообщения, в том месте, где вы печатали. Отправьте его как обычное сообщение — кнопкой отправки или нажатием Enter. Перед отправкой текст можно поправить. Останавливаться после каждой фразы не нужно. Серверные способы распознавания отправляют накопленный фрагмент примерно каждые пять секунд и вставляют текст по мере поступления. Браузерное распознавание показывает живой предварительный текст над полем ввода, пока вы говорите, и вставляет готовые фразы сразу. Движки распознавания Способ распознавания выбирается в настройках агента, а Research Agent подстраивается под него сам. Работают два семейства: Браузерный — встроенное в браузер распознавание речи (Web Speech API). Распознаёт прямо в браузере, бесплатно и без ключей; работает в Chrome, Edge и Safari. Звук обрабатывается облачным сервисом браузера, а интерфейсу нужно подключение к интернету; Серверные — локальный Whisper на сервере агента или облачные сервисы (OpenAI, Groq, OpenRouter, Deepgram, ElevenLabs и собственный OpenAI-совместимый сервис). Research Agent записывает голос с микрофона и передаёт аудио агенту, а тот распознаёт его своим движком. Какой именно серверный движок настроен, интерфейсу неважно: модель, язык и ключи разрешаются на стороне агента. Что может пойти не так Обо всех проблемах интерфейс сообщает понятными подсказками: браузер не поддерживает распознавание речи — например, во встроенном распознавании Firefox такой возможности нет; в этом случае выберите серверный движок в настройках агента; нет доступа к микрофону — разрешите доступ в настройках браузера; если микрофон не определяется — проверьте настройки устройства; браузерному движку нужно подключение к интернету; если запись оказалась пустой или слишком тихой, появится подсказка «Проверьте микрофон или говорите громче». Где доступно Голосовой ввод работает в любом чате агента в интерфейсе Research Agent — кнопка микрофона стоит в поле ввода сообщения. Та же кнопка есть и в каждой строке очереди промптов: задание можно надиктовать и добавить в очередь, не печатая (см. «Очередь промптов»). Два уточнения. Распознанный текст всегда уходит агенту как обычное сообщение — отдельного голосового канала нет. И сам Research Agent речь не распознаёт: он либо отдаёт её браузеру, либо записывает и передаёт агенту — поэтому для голосового ввода нужен настроенный и работающий Pastukhov Agent. ← Оглавление документации ### Извлечение данных Извлечение решает главную проблему глубоких исследований: объём скачанного материала в разы превышает контекст любой языковой модели. Research Agent разбивает текст на управляемые чанки и извлекает структурированные данные пакетами — сотни страниц превращаются в таблицы. Chunk API Скачанный Markdown разбивается на чанки с бюджетом токенов: каждый фрагмент гарантированно влезает в контекст модели. Чанки сохраняются как файлы с заголовками-источниками — видно, из каких скачанных страниц состоит каждый фрагмент. Extract API Извлечение идёт через LLM: каждый чанк обрабатывается отдельным вызовом, из него вытягиваются структурированные записи по заданной схеме. Форматы результатов — TSV (по умолчанию) и JSON. Обработка пакетная (batch): по таблице результатов на каждый чанк, агрегация — уже по всем чанкам сразу. Для работы извлечения нужен хотя бы один включённый LLM-сервис в разделе Services — иначе операция завершится со статусом Failed и ошибкой сервисов. Это единственная восстанавливаемая ошибка конвейера: включите сервис и повторите. Токены и стоимость Каждое извлечение учитывается: токены, вызовы и стоимость. Раздел Completions показывает полную историю LLM-вызовов, так что экономика исследования — 10–30 центов на дешёвой модели — прозрачна до цента. Дополнительные API Links — извлечение URL по паттерну из скачанных страниц (например, собрать Telegram-каналы ниши); Markdown Clean — нормализация Markdown: отчёты и документы приводятся к единому виду; Telegram Verify — проверка метаданных t.me-каналов: подписчики и активность по ссылке. ← Оглавление документации ### Интеграция с Pastukhov Agent Research Agent управляет Pastukhov Agent и тесно интегрирован с ним на уровне интерфейса: чаты агента, запуск задач и правка документов видны в том же окне, где живут исследования, — без десятка вкладок браузера. Включение интеграции Задайте переменные AGENT_API_URL и AGENT_API_KEY — обе вместе: URL вашего экземпляра Pastukhov Agent и его API-ключ. Без них функции интеграции скрыты и в интерфейсе не появляются. Один помощник — несколько приложений. Research Agent не требует собственных ключей LLM и своих подписок: он работает через вашего Pastukhov Agent, который уже настроен — со своими моделями, навыками, хуками и проверками. Тот же агент может одновременно обслуживать и Analytics Agent, и другие приложения: вы управляете моделями и ключами один раз в центре, а все приложения пользуются ими автоматически. Раздел Chats Список чатов агента с фильтрацией и постраничной выдачей, статусы обработки, прогресс и итоги по каждому чату. События транслируются в реальном времени через SignalR-мост: новое сообщение, смена статуса, таймеры и очередь сообщений чата обновляются на экране без перезагрузки. Сам чат открывается в выдвижной панели поверх списка. Рядом с каждым сообщением — счётчик расхода: сколько «порций текста» (токенов) потрачено, сколько это стоит и с какой скоростью идёт обработка; подробная разбивка появляется по наведению. Статусы инструментов показываются по-русски — Читаю, Создаю, Ищу, Исполняю, Запускаю подагента… — и видно, чем агент занят прямо сейчас. У чата выбираются модель и навык, как у самого агента; после перезагрузки страницы состояние чата — заголовок, таймер, статус — восстанавливается. Изображения и файлы вставляются в сообщение прямо из буфера обмена. Очередь промптов Промпт — это просто текстовое задание агенту. Очередь промптов позволяет заранее набросать список таких заданий: агент сам отправит их по очереди, без ручной отправки каждого. Очередь одна на всех — ею пользуются и Research Agent, и интерфейс самого Pastukhov Agent, так что одни и те же строки видны и там, и там. Кнопка промптов стоит в правой части поля ввода сообщения в чате. Подробнее — в разделе Очередь промптов. Голосовой ввод Задание агенту можно надиктовать, а не печатать: в поле ввода сообщения есть кнопка микрофона. Распознанная речь появляется в сообщении текстом и уходит агенту как обычное сообщение. Подробнее — в разделе Голосовой ввод. Мост событий AgentBridgeService ретранслирует события агента в интерфейс: structuredEvent, messageUpdate, processingStateUpdate, timerUpdate, queueStatusUpdate и другие. queueStatusUpdate относится к очереди сообщений отдельного чата — это не очередь промптов, а сообщения, которые ждут обработки внутри чата. При обрыве связи мост переподключается автоматически — live-картина восстанавливается сама. «Вызвать агента» из документа На странице любого исследования кнопка ИИ открывает drawer с промптом. При отправке промпт уходит в Pastukhov Agent ({AGENT_API_URL}/api/remote/chats), в него подставляется путь к документу — плейсхолдеры [path] и [url] резолвятся сервером. Окружение исполнения (например, prod или staging) выбирается из /data/environments.txt; готовый чат открывается из интерфейса. Обратное направление: agent API Интеграция двусторонняя. Переменная RESEARCH_AGENT_API_KEY включает машинный интерфейс /api/agent/* для внешних агентов — включая Pastukhov Agent из другого проекта. Доступные команды: /api/agent/search (поиск), /api/agent/fetch (скачивание), /api/agent/extract (извлечение) — а также сессии и контентные API (chunk, links, markdown/clean, telegram/verify). Аутентификация — заголовок X-API-Key с тем же значением; без переменной API возвращает 503. Статус agent API (включён/выключен, сам ключ не показывается) виден в Settings → Agent API. ← Оглавление документации ### Навык онлайн-исследования Навык онлайн-исследования — главный сценарий Research Agent: по-настоящему глубокое изучение любой темы. Не один запрос с парой источников, а десятки поисков, скачивание и анализ сотен страниц, пакетное извлечение данных и верифицированный отчёт в библиотеке исследований. Фиксированный конвейер Исследование выполняется как линейный конвейер, без импровизаций на месте: create session — именованная сессия исследования, объединяющая все операции темы; search — один START-вызов с ~10 поисковыми запросами по теме (русские и английские запросы идут вместе, язык задаётся у каждого запроса); fetch — фильтрация результатов по релевантности и скачивание всех подходящих страниц; extract — чанкинг скачанного Markdown и пакетное извлечение структурированных данных; write — написание отчёта в Markdown с frontmatter в дерево researches/; verify — верификация: поиск подтверждающих и опровергающих источников. Ожидание в темпе агента Все операции асинхронные: старт возвращает идентификатор, дальше агент опрашивает статус с интервалом, который называет сам сервер (ожидаемое время доставки). Сессии показывают статусы Pending, Running, Completed и Failed, а также уверенность оценки. Поиск, скачивание и особенно LLM-извлечение спокойно занимают несколько минут — большие извлечения больше десяти. Это нормальный ход работы, а не зависание. Отчёт Отчёт пишется в Markdown с frontmatter (title, order) и сразу появляется в дереве исследований — библиотека обновляется мгновенно. Перед записью текст нормализуется через markdown/clean. Каждый отчёт лежит в существующей категории дерева: новые категории без запроса владельца не создаются. Верификация Готовый отчёт не выдаётся за истину в последней инстанции: агент ищет источники, подтверждающие и опровергающие ключевые утверждения, и добавляет в отчёт секцию критики с альтернативными интерпретациями. Первоисточники (сессии поиска и скачанные страницы) остаются у отчёта — любой факт можно проверить. Полнота важнее краткости Главное правило навыка: цель отчёта — полнота, а не краткость. Таблица из 50 метрик остаётся таблицей из 50 метрик, список из 30 инструментов — списком из 30 инструментов. Факты, цифры и источники не выбрасываются ради «аккуратности»: каждый пропущенный номер — решение вслепую. Экономика По данным автора, одно исследование на модели DeepSeek-V4-Flash стоит 10–30 центов и выполняется за 20–30 минут — при глубине, недоступной сервисам вроде Perplexity или ChatGPT с поиском. Статистика токенов и стоимости каждой операции доступна в разделе Completions. ← Оглавление документации ### Начало работы Research Agent — веб-приложение для глубоких онлайн-исследований, планирования и документирования. Он выполняет десятки поисков по теме, скачивает и анализирует сотни страниц, извлекает структурированные данные и собирает верифицированный отчёт в библиотеку документов. Pastukhov Agent при этом работает в фоновом режиме — его чаты видны и управляются из того же интерфейса. Для кого Research Agent рассчитан на аналитику рынка, планирование и документирование — без навыков разработки. В отличие от Pastukhov Agent, который выглядит и работает как IDE, здесь весь путь проходит в терминах исследований: темы, поисковые сессии, скачанные страницы, отчёты и планы. Системные требования Любой Linux-хост с Docker: приложение разворачивается одним контейнером, база SQLite встроена, PostgreSQL — опционально. Пошаговая инструкция — в разделе Установка. Первый вход Первый пользователь регистрируется в веб-форме на странице входа: логин, пароль (от 4 символов), имя и email. Пароль хранится в виде SHA-256-хеша, сессия работает через JWT-токены. Переменных окружения для логина и пароля нет. Главный экран Research — библиотека исследований: дерево Markdown-документов с категориями; Search — поисковые сессии и их результаты; Fetch — сессии скачивания и скачанный Markdown; Completions — история LLM-вызовов с токенами и стоимостью; Sessions — исследовательские сессии: поиски, скачивания и извлечения одной темы; Chats — чаты Pastukhov Agent с обновлениями в реальном времени; Service — поисковые провайдеры, методы скачивания и LLM-сервисы. Первое исследование настроить в разделе Service поисковый провайдер (API-ключ) и LLM-сервис; дать агенту тему исследования — он выполнит поиски, скачает и проанализирует страницы; наблюдать прогресс: статусы и оценки времени завершения каждой операции; прочитать готовый отчёт в библиотеке Research — вместе с сессиями поиска и исходниками. Несколько тем удобно подготовить заранее: занесите их в очередь промптов — агент выполнит задания одно за другим сам (см. «Очередь промптов»). Длинное задание можно не печатать, а надиктовать голосом («Голосовой ввод»). Интерфейс Язык интерфейса переключается между английским и русским в настройках, тема — между тёмной и светлой. События исследований озвучиваются — ход работы слышно, даже когда вкладка не на экране. Что дальше Как устроено глубокое исследование — в разделе Навык онлайн-исследования. Поиск и скачивание — в разделах Поиск и Скачивание страниц, извлечение данных — в Извлечение данных. Работа с документами описана в Библиотеке исследований. ← Оглавление документации ### Очередь промптов Промпт — это просто текстовое задание агенту, например «собери сведения о компании N». Очередь промптов позволяет заранее набросать список таких заданий, а агент выполнит их одно за другим сам — без ручной отправки каждого. Удобно, когда нужно много раз запустить однотипный процесс: подготовили десяток строк, ушли по делам и вернулись к готовым результатам. Что это и зачем Очередь устроена как обычный список строк. Каждое задание выполняется в отдельном чате, а заголовок чата берётся из текста задания. Написали строку — можно сразу отправить её вручную, а можно оставить в очереди и доверить Автоотправке. Очередь одна на всех: ею пользуются и Research Agent, и интерфейс самого Pastukhov Agent. Это одни и те же строки в едином порядке поступления — добавили задание в любом из интерфейсов, и оно сразу видно в обоих. Где находится У очереди два входа, и оба открывают один и тот же диалог: кнопка промптов в правой части поля ввода сообщения в чате; кнопка «Промпты (N)» внизу боковой панели документов — счётчик показывает текущее число строк в очереди. Работа со строкой Диалог очереди — это список строк, и каждая строка полностью в вашем распоряжении: добавление — кнопка «Новый промпт» создаёт пустую строку; первую строку можно просто начать печатать сразу, без лишних кликов; правка — текст задания, модель и навык меняются прямо в строке; порядок — строки перемещаются вверх и вниз; новые добавляются в начало списка, а отправка идёт снизу вверх, так что строка, добавленная раньше, уходит первой. Переместили строку ниже — она уйдёт раньше; удаление — ненужную строку можно убрать в любой момент. Изменения сохраняются сами, без кнопки «Сохранить»: через полсекунды после остановки ввода. Новые строки по умолчанию подхватывают модель и навык, выбранные в текущем чате. Генератор промптов Если заданий много и они однотипные, вводить каждое вручную не нужно: кнопка «Сгенерировать промпты» превращает шаблон и список значений (по одному на строку) в готовые строки очереди. Подстановка работает по простому правилу — место для значения в шаблоне обозначается словом NAME: в шаблоне есть NAME — вместо него подставляется значение из списка; в шаблоне нет NAME — значение дописывается к шаблону через пробел; шаблон пустой — значение добавляется как есть. Порядок строки сохраняется: первая строка списка оказывается внизу очереди и запускается первой. Например, шаблон «Исследуй рынок NAME» со значениями «солнечных панелей» и «ветряков» создаст два задания — и первым уйдёт «Исследуй рынок солнечных панелей». Ручная отправка У каждой строки есть кнопка отправки: в один клик задание уходит в новый чат. Заголовок чата берётся из первой строки задания (до 100 символов), заданные в строке модель и навык применяются, и приложение сразу открывает новый чат. Строка удаляется из очереди только после успешного запуска. Если что-то помешало создать чат, строка останется на месте — можно просто повторить. Автоотправка Включите Автоотправку — и агент сам будет брать задания из очереди по расписанию, без вашего участия. Очередь работает, даже когда все вкладки закрыты: можно уйти и вернуться к готовым результатам. Три настройки рядом с переключателем: Максимум активных чатов — сколько заданий может выполняться одновременно, от 1 до 10 (по умолчанию 3); Проверять каждые N секунд — как часто агент заглядывает в очередь, от 1 до 3600 секунд (по умолчанию 10); Автопереход — переходить ли к чату, который только что запустила автоотправка (по умолчанию включено). Отдельное приятное свойство: как только одно задание завершилось, следующее запускается сразу, не дожидаясь ближайшей проверки. Пиковые часы Настройка «Пиковые часы» (по умолчанию включена) касается нагрузки на модели. Если её выключить, задания для моделей в часы пиковой нагрузки не отправляются автоматически и ждут в очереди, а задания для моделей вне пика продолжают уходить сразу. Синхронизация Очередь живёт в настройках агента, поэтому все видят одно и то же. Изменение из любой вкладки, с любого устройства или из интерфейса самого Pastukhov Agent мгновенно появляется везде — и наоборот. Пока вы печатаете, чужие правки не мешают: они применяются, только когда вы закончили ввод. На всякий случай раз в пять секунд список дополнительно обновляется заново — даже если какое-то сообщение о смене потерялось. Лицензии Если лицензия недействительна, добавление строк и отправка заданий блокируются: приложение открывает диалог лицензирования и поясняет, что запись не выполнена. Смотреть очередь можно и без активной лицензии. ← Оглавление документации ### Планирование и идеи Research Agent не останавливается на сборе информации. Собранные факты превращаются в идеи, стратегии, планы разработки и описания интерфейсов — документы, которые можно напрямую передать агентам разработки и сэкономить на прототипировании. От фактов к решениям Глубокое исследование даёт полную картину рынка: конкуренты, цены, отзывы клиентов, документация. На этой базе агент генерирует идеи и стратегии — не выдуманные, а опирающиеся на собранные источники, с цифрами и ссылками на первоисточники. Структура планов Планы пишутся как Markdown-файлы: основной файл и файлы стадий (plans/NAME.md, NAME_1.md, NAME_2.md…). В каждом плане обязательная секция Verification & Validation — критерии проверки того, что результат правильный. Такая структура читается и человеком, и агентом разработки. Сценарий: конкурентный анализ → архитектура Типичный сценарий автора: запрос «собери конкурентов, отзывы их клиентов и документацию» — и через 30–60 минут у вас подробная архитектура и интерфейсы приложения, построенные на фактах: кто что делает, чего не хватает пользователям, за что платят. Дальше — реализация за несколько часов в режиме «планирование → исполнение» с качеством, достаточным для прототипа. Примеры планов В поставке — живые примеры: дорожные карты исследований, планы разработки и бизнес-стратегия. Смотрите раздел Встроенные исследования — документы планирования входят в библиотеку. ← Оглавление документации ### Поиск Поиск — входная точка любого исследования. Research Agent работает с шестью провайдерами и умеет распределять запросы между ними с автоматической подстраховкой: недоступность одного сервиса не останавливает исследование. Шесть провайдеров Serper — поиск через Google, API-ключ; Keenable — API-ключ; Brave — API-ключ; Tavily — API-ключ, возвращает и готовый AI-ответ; DuckDuckGo — работает без ключа; SearXNG — self-hosted метапоисковик, подключается своим base URL. Настройка Провайдеры настраиваются в разделе Services веб-интерфейса — по одному сервису-экземпляру на каждого. API-ключи Serper, Keenable, Brave и Tavily задаются там же, SearXNG — основной адрес собственного экземпляра. Переменных окружения для ключей нет. Каждый сервис можно протестировать прямо из интерфейса и задать приоритет для запасных вариантов. Подробнее — в разделе Сервисы и модели. Поисковые сессии Поиск выполняется сессиями: запросы уходят пакетом, статусы обновляются в реальном времени. Раздел Search показывает список сессий с фильтрацией и постраничной выдачей, статусы (Pending, Running, Completed, Failed) и результаты каждой сессии. Результаты можно фильтровать по релевантности перед скачиванием — позиция в выдаче ещё не значит полезность, ссылки выбираются по заголовку и сниппету. Запасной вариант Запросы распределяются между провайдерами: при ошибке или недоступности система автоматически переходит к следующему сервису по приоритету. Одна тема спокойно ищется на нескольких провайдерах сразу — для покрытия выдачи. Доступ внешних агентов Поиск доступен и снаружи — например, из Pastukhov Agent другого проекта: POST /api/agent/search с заголовком X-API-Key (переменная RESEARCH_AGENT_API_KEY). Без ключа API возвращает 503. Подробнее — в разделе Интеграция с Pastukhov Agent. ← Оглавление документации ### Сервисы и модели Раздел Service — единая точка настройки всех внешних сервисов Research Agent. Поисковые провайдеры, методы скачивания и LLM-модели подключаются здесь, в интерфейсе, а не через переменные окружения. Категории сервисов Поисковые провайдеры — Serper, Keenable, Brave, Tavily (API-ключи) и SearXNG (base URL собственного экземпляра); по одному экземпляру-сервису на провайдера; Методы скачивания — прокси для Proxied и адрес remote-browser (Playwright) для скачивания страниц с JavaScript; LLM — любые OpenAI-совместимые провайдеры для извлечения данных. Приоритеты и запасные варианты Внутри категории сервисы упорядочиваются приоритетом: при ошибке или недоступности запрос уходит к следующему — автоматически, без вмешательства. Для извлечения данных рекомендуется дешёвая модель с низким приоритетом (номер меньше — выбирается раньше) и платная по требованию с более высоким — как запасной вариант. Ключи через переменные окружения Секрет в настройках сервиса можно не хранить в базе, а записать как ссылку на переменную окружения сервера: $NAME или ${NAME}. При каждом обращении продукт подставляет значение переменной — реальный ключ в базе не появляется. В интерфейсе такая ссылка показывается как есть: это указатель, а не сам ключ, поэтому маскировать её незачем. Что это даёт: чтобы сменить ключ, не нужно править базу — достаточно поправить значение переменной в окружении и перезапустить контейнер. Если переменная не задана, продукт сообщит об этом понятной ошибкой с именем переменной (например, «ApiKey references environment variable “X” which is not set…»), а не отправит запрос без ключа. Модели и стоимость Для извлечения данных подходят любые OpenAI-совместимые модели. Рекомендация автора — DeepSeek-V4-Flash: исследование целиком стоит 10–30 центов; ещё дешевле обойдётся DeepSeek-V4-Flash-Mini (OpenRouter). Для более тяжёлых задач (написание отчётов, планирование) работает агент с той моделью, что настроена у него, — сервисы Research Agent касаются только извлечения. Каждый запрос к поставщику моделей помечается строкой PastukhovResearchAgent/0.1.6 — название продукта и его версия, так что провайдеры видят, какой продукт к ним обращается. Тестирование сервисов Каждый сервис проверяется прямо из интерфейса — тестеры выполняют реальный запрос к провайдеру и показывают ответ. Битый ключ виден до того, как он сломает исследование. При редактировании сервиса рядом показывается индикатор «Сохранено/Изменено» — всегда видно, применились ли правки. Статус agent API В Settings → Agent API показано, включён ли REST-доступ для внешних агентов (сам ключ не отображается). Управляется переменной RESEARCH_AGENT_API_KEY — подробнее в разделе Интеграция с Pastukhov Agent. Статистика Completions — история LLM-вызовов: токены, стоимость, скорость по каждому; Sessions — исследовательские сессии: поиски, скачивания и извлечения одной темы с итоговыми счётчиками. ← Оглавление документации ### Скачивание страниц Скачивание превращает найденные ссылки в материал для анализа: страницы сохраняются, конвертируются в чистый Markdown и раскладываются по датам. Для упрямых сайтов — четыре метода скачивания с эскалацией от прямого запроса до полноценного браузера. Четыре метода Direct — прямые HTTP-запросы: быстро и дёшево, работает для большинства сайтов; Proxied — запросы через прокси: смена IP для обхода гео- и rate-ограничений; BrowserEmulation — эмуляция браузера: правильные заголовки и отпечаток клиента для анти-бот проверок; RemoteBrowser — удалённый браузер на Playwright: рендеринг JavaScript,SPA и страницы, которые без него не отдают контент. Методы подключаются как сервисы в разделе Services и выстраиваются в цепочку запасных вариантов: Direct → Proxied → BrowserEmulation → RemoteBrowser: если URL не скачивается одним способом, система сама пробует следующий. Обход блокировок и анти-бот защит на уровне CDN происходит без участия пользователя. Конвертация в Markdown Каждая скачанная страница конвертируется в чистый Markdown с помощью Trafilatura: остаётся содержимое, уходит навигация, реклама и разметка. Дальнейшая работа — чанкинг, извлечение, чтение — идёт уже по тексту, а не по HTML. Хранение Файлы раскладываются по датам: {RESEARCH_AGENT_FETCH_FOLDER}/yyyy-MM-dd/{domain}_{slug}_{hash8}.md — по умолчанию /data/fetch внутри постоянного volume. В базе хранится абсолютный путь и размер каждого файла, интерфейс отдаёт содержимое через защищённый адрес отдачи файла — Markdown можно читать прямо в приложении. Сессии скачивания Раздел Fetch показывает сессии скачивания: статусы, историю и результаты, повторные запуски. У отчёта в библиотеке видны сессии поиска и скачанные исходники — проследить, откуда взят каждый факт, можно в один клик. Доступ внешних агентов Скачивание доступно снаружи через POST /api/agent/fetch с заголовком X-API-Key — внешние агенты получают тот же конвейер с запасными методами и конвертацией в Markdown. ← Оглавление документации ### Лицензирование Research Agent Все лицензии — пожизненные: единоразовый платёж, без подписок, без ограничений на количество исследований. Лицензирование работает офлайн, ваш ключ действительно пожизненный. Каждая лицензия включает 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Бесплатный период Бесплатное использование в течение 30 дней — триал уже встроен в Docker-образ. Даже после истечения бесплатной лицензии приложение остаётся полностью функциональным, кроме запуска новых исследований. Никакой привязки — вы можете экспортировать данные из SQLite или PostgreSQL. Персональная лицензия — 19 700 ₽ Все функции Research Agent без ограничений для частных лиц: неограниченное количество установок на любых ваших компьютерах и серверах. 19 700 ₽ единоразовый платёж за пожизненную лицензию. 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Корпоративная лицензия — 49 700 ₽ Все функции Research Agent без ограничений для всех сотрудников компании или команды, включая внешних подрядчиков. 49 700 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Сервисная лицензия — 97 000 ₽ Неограниченное количество экземпляров Research Agent под вашим доменом + полный исходный код с правом изменять его как угодно, обновлять UI или брендинг в соответствии с вашей компанией или доменом, тесно интегрировать с вашей инфраструктурой. Может использоваться любым посетителем вашего домена как часть ваших сервисов. 97 000 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена сервисная лицензия на Pastukhov Agent, который является частью продукта. Исходный код Agent доступен только при покупке сервисной лицензии на сам Pastukhov Agent. Для бесшовных обновлений рекомендую изменять только брендинг и интеграцию, чтобы минимизировать усилия при слиянии с новыми функциями и исправлениями. Бесплатные лицензии В некоторых случаях я готов подарить бесплатную лицензию: если вы нашли баг или уязвимость безопасности в любом из моих продуктов (у меня буквально нет бюджета на платные баг-баунти, к сожалению); если вы предложили дельную идею по улучшению моих продуктов (кодить не обязательно, достаточно полезной идеи — вы получите лицензию, если я включу её в план разработки); если вы активный контрибьютор open-source проектов (я люблю open-source, просто у меня нет времени поддерживать свои продукты как open-source); если вы ведёте популярный блог, Telegram-канал или YouTube-канал о программировании, AI, аналитике, маркетинге, бизнесе, финансах или IT в целом (упоминание или реклама не требуются, это полностью на ваше усмотрение); если вы активный партнёр-аффилиат (продажи не обязательны, но у вас должен быть хотя бы какой-то контент, посвящённый моим продуктам). Если что-то из перечисленного про вас, просто напишите мне в Telegram. Укажите имя и email, и я сгенерирую ваш персональный пожизненный лицензионный ключ. ### Установка Research Agent Research Agent — self-hosted веб-приложение для глубоких онлайн-исследований, планирования и документирования. Разворачивается одним Docker-контейнером, все данные хранятся в постоянном volume /data. Интеграция с Pastukhov Agent опциональна и включается двумя переменными окружения. Минимальные требования Достаточно любого Linux-хоста с Docker. База SQLite встроена — PostgreSQL подключается опционально через переменную окружения. Для полной функциональности понадобятся (настраиваются в интерфейсе после запуска, не в переменных окружения): API-ключ хотя бы одного поискового провайдера — Serper, Keenable, Brave или Tavily (или собственный SearXNG); API-ключ LLM-провайдера для извлечения данных — любой OpenAI-совместимый сервис. Docker Compose Создайте файл compose.yml и запустите docker compose up -d: services: research-agent: image: maxpastukhov/research-agent:latest container_name: research-agent ports: - "3978:80" volumes: - research-agent-data:/data environment: - ASPNETCORE_ENVIRONMENT=Production - ASPNETCORE_URLS=http://+:80 restart: unless-stopped volumes: research-agent-data: После запуска интерфейс будет доступен на порту 3978: http://localhost:3978. Переменные окружения Все переменные опциональны — приложение запускается и работает без единой из них: RESEARCH_AGENT_DB — путь к SQLite-файлу (по умолчанию /data/data.db) или строка подключения PostgreSQL вида Host=...;Port=...;Database=.... RESEARCH_AGENT_API_KEY — включает agent API (/api/agent/*) для вызовов из внешних агентов: они передают ключ в заголовке X-API-Key. Без переменной API возвращает 503. Это отдельный механизм — не связан с JWT-аутентификацией веб-интерфейса. RESEARCH_AGENT_FETCH_FOLDER — папка для скачанного Markdown (по умолчанию /data/fetch). Файлы раскладываются по датам: {folder}/yyyy-MM-dd/{domain}_{slug}_{hash8}.md. AGENT_API_URL и AGENT_API_KEY — включают интеграцию с Pastukhov Agent: кнопки «Вызвать агента» и Edit with AI на страницах исследований, чаты агента и общую очередь промптов. Задаются вместе, иначе функции скрыты. Исходящий запрос идёт в {AGENT_API_URL}/api/remote/chats. AGENT_ERROR_REPORTING — отправка ошибок в Sentry. Установите 0 для отключения. ASPNETCORE_URLS — порт внутри контейнера (по умолчанию http://+:80). RESEARCH_AGENT_SSL — автоматический HTTPS: значение auto включает генерацию самоподписанного сертификата и HTTPS-порт (по умолчанию — следующий за HTTP-портом). RESEARCH_AGENT_BASE_PATH — подпапка, по которой размещён интерфейс (например, /research), если приложение публикуется за прокси по адресу вида example.com/research. Хранение данных Все постоянные данные живут в volume /data и переживают пересоздание контейнера. Volume обязателен — без него вы потеряете базу, скачанные исследования и ключи при первом же docker compose down. /data/data.db — база SQLite (если не используется PostgreSQL); /data/auth/ — ключи ASP.NET Data Protection; /data/keys/ — ключ подписи JWT; /data/fetch/ — скачанный Markdown, разложенный по датам. Первый вход Логин и пароль не задаются переменными окружения. Первый пользователь регистрируется прямо в веб-форме на странице входа: логин, пароль (от 4 символов), имя и email. Пароль хранится в виде SHA-256-хеша, сессия работает через JWT-токены. Настройка после запуска Поисковые провайдеры и модели настраиваются в разделе Services веб-интерфейса — не через переменные окружения. Там задаются API-ключи Serper, Keenable, Brave и Tavily, base URL собственного SearXNG, прокси и адрес remote-browser для скачивания, а также LLM-сервисы для извлечения данных. Каждый сервис можно протестировать прямо из интерфейса. Подробнее — в разделе Сервисы и модели. Версия и обновление Актуальная версия Research Agent — 0.1.6. Образы публикуются в docker.io (maxpastukhov/research-agent:latest), поэтому обновление — это две команды: docker compose pull и docker compose up -d. Номер версии виден в интерфейсе, и после обновления он обновляется сам: приложение замечает новую версию после переподключения и обновляет интерфейс, ничего вручную делать не нужно. Режимы развёртывания Интерфейс можно установить как приложение: Research Agent отдаёт PWA-манифест, и на телефоне или рабочем столе он открывается в отдельном окне, как обычная программа. Если нужен HTTPS, включите RESEARCH_AGENT_SSL=auto — сервер сам выпустит самоподписанный сертификат и поднимет HTTPS-порт рядом с HTTP. При размещении за прокси по адресу с подпапкой (например, example.com/research) укажите её в RESEARCH_AGENT_BASE_PATH — все адреса интерфейса будут строиться с учётом этой подпапки. Связь с Pastukhov Agent Чтобы управлять агентом из интерфейса исследований, задайте переменные AGENT_API_URL и AGENT_API_KEY — появятся чаты агента с обновлениями в реальном времени и кнопка «Вызвать агента» в документах. Подробнее — в разделе Интеграция с Pastukhov Agent. Docker CLI с файлом .env Можно запустить Research Agent и без compose — командой docker run, сохранив переменные окружения в файле .env: # .env ASPNETCORE_ENVIRONMENT=Production ASPNETCORE_URLS=http://+:80 # опционально: PostgreSQL вместо встроенного SQLite # RESEARCH_AGENT_DB=Host=postgres;Port=5432;User Id=research;Password=secret;Database=research; # опционально: интеграция с Pastukhov Agent # AGENT_API_URL= # AGENT_API_KEY= docker run -d \ --name research-agent \ --env-file .env \ -p 3978:80 \ -v research-agent-data:/data \ --restart unless-stopped \ maxpastukhov/research-agent:latest Флаг --env-file считывает все переменные из файла. Отдельные значения можно переопределить дополнительными флагами -e после него, например -e RESEARCH_AGENT_API_KEY=your-key. ← Вернуться на главную раздела Research Agent ### ИИ‑агент для WordPress Управляйте сайтом на WordPress через чат — в браузере, телефоне, планшете или Telegram Жизнь без ИИ Платите «за поддержку» цену ипотеки — а то вдруг всё сломается? Ищете фрилансера, он не в ресурсе на три дня, потом просит доплатить «Поменяй цвет кнопки» —_invoice.pdf за 4,500 рублей Сайт сломался. Разработчик в отпуске. У вас нет бекапа. Паника. Смыть. Повторить. Копаетесь в админке WordPress — 17 вкладок. Не совсем понятно, но очень интересно. Объясняете новому исполнителю то же самое, что объясняли предыдущим трём. День сурка. Хотите как у конкурента — «150 тысяч наличкой и безлимитный смузи» Жизнь с ИИ Если что-то «сломалось» или «захотелось» — платите копейки за уровень команды профессионалов, скорость в 10-100 раз выше и немедленный результат, без писем и согласований Пишете «поменяй цвет кнопки» — кнопка меняет цвет за 20 секунд. Скучно Без счёта. Без «Давай после праздников». Без «По цене чашки кофе в Москве» Сайт не сломался после очередной мелкой правки. Нет драйва, адреналина, срочных звонков и митингов на выходных Админка? Какая админка? Зачем тебе адрес Джона Коннора? Система помнит всё. Лучше быть повежливее, а то знаете ли… «Что, уже скопировал и проверил?». Миссия выполнима. Скучно, без огонька ИИ-агент для WordPress — это установка готовой ИИ-системы на ваш сервер, глубоко адаптированной именно под ваш сайт. Система управляет сайтом через чат — вы пишете обычным языком, она выполняет. Но это не просто «чат с ИИ» — под капотом работает мощная обвязка, которая делает работу безошибочно и безопасно. Задать вопросы или попробовать демо Что умеет система Это полноценный администратор сайта, который работает 24/7, никогда не устаёт и запоминает все особенности вашего сайта. Управление контентом Создание, редактирование и удаление страниц, записей блога, медиафайлов — всё через обычный разговор в чате. «Добавь страницу Услуги с тремя колонками» — и система создаёт страницу с готовой вёрсткой, корректным заголовком и подстроенными стилями. Создание и редактирование страниц и записей блога Работа с медиафайлами: загрузка, замена, оптимизация Управление структурой сайта: иерархия страниц, меню, ссылки SEO-оптимизация: мета-теги, описания, структурированные данные Полное администрирование Система не ограничивается простым добавлением текста. Она способна выполнять всё, что делает администратор сайта — от настройки плагинов до изменения кода темы. Установка, обновление и удаление плагинов и аддонов Исправление ошибок в установленных плагинах и расширение их функционала Создание собственных плагинов под ваши задачи Установка и редактирование тем, создание новых тем с нуля Копирование дизайна любого сайта — покажите и скажите «сделай так же» Настройка WordPress: опции, конфигурация, производительность Управление базой данных — безопасно и с резервными копиями Безопасность и контроль Каждое изменение проходит через многоуровневую систему проверок. Система не просто выполняет — она контролирует себя сама. Автоматическое резервное копирование перед каждым изменением Полная история изменений в git — откат в любой момент Автоматическая проверка вёрстки и структуры страниц после каждого изменения Легко добавлять свои правила проверок под специфику сайта Автоматическое исправление найденных ошибок в фоновом режиме Контроль доступа — можно безопасно передавать сотрудникам Самообучение Система не стоит на месте. Она запоминает особенности вашего сайта, учится на своих ошибках и становится всё точнее с каждым днём. Набор навыков под безошибочное управление именно вашим сайтом Встроенное самообучение — достаточно попросить расширить навыки, если система ошибается Знание структуры сайта: все страницы, шаблоны, медиа, иерархия Знание активной темы, плагинов, блочной архитектуры Автоматическая обратная связь по результатам каждой операции Доступ через Telegram или веб-чат Управлять сайтом можно тремя способами — через Telegram, через упрощённый веб-чат или через полный веб-интерфейс. Telegram-бот — полный контроль сайта из телефона, не нужно читать документацию Упрощённый веб-чат — минималистичный интерфейс для тех, кому недоступен Telegram Полный веб-интерфейс — для тех, кто хочет видеть технические детали Все три интерфейса можно безопасно делегировать сотрудникам Чем это отличается от ChatGPT, Claude или Codex Вы могли уже пробовать управлять сайтом через чат — в ChatGPT, Claude или каком-нибудь Codex. Результат, скорее всего, был разочаровывающим: ИИ хорошо пишет текст, но ломает вёрстку, не знает структуру вашего сайта, не понимает блочную архитектуру WordPress и не может проверить, не сломал ли он что-то. ИИ-агент для WordPress принципиально отличается: Система установлена на вашем сервере и работает с вашим сайтом напрямую — через базу данных и файлы, а не через экран админки Подробная карта сайта — все страницы, иерархия, шаблоны, медиа — загружена в контекст ИИ Набор навыков с подробной документацией под конкретно ваш сайт Автоматические проверки после каждого изменения — система сама находит и исправляет свои ошибки Каждая страница хранится как отдельный файл с полной историей в git Изменения мгновенно синхронизируются с живым сайтом Контент управляется как JSON-файлы — это даёт version control, batch-операции и полную предсказуемость Скрипты для всех стандартных операций — создание страниц, загрузка изображений, запросы к базе данных Полная изоляция — система полностью на вашем сервере, данные никуда не уходят Аналитика — статистика по каждому действию: токены, стоимость, скорость Поддержка любых AI-моделей — Claude/GPT/Gemini, китайские модели GLM/DeepSeek/MiniMax/Qwen, локальные модели, OpenRouter Проверено на реальном сайте — этим же инструментом управляется pastukhov.com Как это работает Установка и настройка занимает один день. После этого ваш сайт полностью управляется через чат. Не нужен выделенный сервер — достаточно обычного VPS с 1 процессором и 1 ГБ памяти. Этого хватает и для WordPress, и для самой системы управления. День 1. Анализ вашего сайта: структура, тема, плагины, шаблоны, контент День 1. Установка системы на ваш сервер, подключение к сайту День 1. Создание навыков: документация, скрипты, правила проверок Следующие дни. Вы просите сделать то, что вам нужно, система делает, мы вместе проверяем результат. Если возникают ошибки или проблемы, я помогаю их исправить, попутно расширяя набор навыков системы, всё сильнее адаптируя её к вашему сайту и вашим личным предпочтениям и бизнес-требованиям. Чем дальше — тем реже требуется моя помощь, поскольку система справляется и так. Две недели — это не про срок внедрения, это про гарантию того, что я буду рядом, пока система не заработает на 100% лично для вас. За это время и система лучше адаптируется, и вы намного увереннее сможете её использовать и дообучать. Что вы получаете Не абстрактный «доступ к ИИ», а готовую рабочую систему, адаптированную под ваш конкретный сайт. Установленную и настроенную систему на вашем сервере Набор навыков под управление вашим сайтом Скрипты для всех стандартных операций Правила проверок, специфичные для вашего сайта Telegram-бот для удалённого управления Git-репозиторий с полной историей сайта Обучение и поддержка на этапе ввода в эксплуатацию Документация на русском языке Попробуйте сами Есть демо — wordpress-demo.pastukhov.com, настоящий рабочий сайт магазина/мастерской пластиковых окон на WordPress с полностью функциональным магазином, корзиной и формой заказа в свободной форме. В ходе демо можно редактировать и администрировать этот сайт вживую — через простой веб-чат или Telegram-чат. Задайте вопрос, попросите создать страницу, изменить текст — и увидите, как это работает на практике. Даже это демо система создала сама — с нуля, с «голого» только что установленного WordPress без плагинов и тем. Сайт магазина с товарами, корзиной и формой заказа — всё с нуля, по описанию. Достаточно дать системе пустой сайт и описать, что вы хотите, и она всё сделает: установит тему, настроит плагины, наполнит контентом. Задать вопросы или попробовать демо Масштабирование Вам не нужно платить за каждый новый сайт. Если вы разберётесь, как инструктировать систему для работы с новыми сайтами — а это несложно, навыки хорошо документированы — вы сможете масштабировать её на любое количество своих сайтов. Вместе с первым сайтом вы получаете пожизненную корпоративную лицензию на Pastukhov Agent. Вы сможете использовать её на любом количестве своих сайтов — без дополнительных оплат или даже контактов с автором. Одна лицензия — любое количество ваших сайтов Автономная система лицензирования — если pastukhov.com или автор вдруг исчезнет, с вашими нынешними и будущими сайтами и проектами ничего не случится Навыки документированы — легко адаптировать систему для нового сайта Стоимость 19,700 рублей — установка, полная настройка и отладка системы вместе с вами в течение двух недель. В эту сумму уже входит корпоративная лицензия на Pastukhov Agent (обычная цена 97,000 рублей), которая позволяет использовать систему на любом количестве своих проектов — не только сайтов. Это одноразовая оплата — без помесячных платежей, без долгосрочных контрактов, без скрытых комиссий. Заплатили один раз — и система ваша навсегда. Единственные текущие расходы — это оплата ИИ-модели. Но вы выбираете модель сами, под свой бюджет и задачи: Эпизодическое редактирование — модели с оплатой за токены (DeepSeek) стоят от 1 до 20 рублей за правку, в зависимости от сложности задачи Легко переключать модели на лету — дешёвые под мелкие задачи, более мощные под сложные задачи вроде аддонов, скриптов или клонирования Оплата идёт за токены в DeepSeek — без подписок. Для старта достаточно пополнить счёт примерно на 1,000 рублей, при активном использовании (разработка скриптов, аддонов, тем) — от 1 до 3 тысяч рублей в месяц, в зависимости от задач Китайские модели уже очень высокого уровня — при этом стоят в 10-100 раз дешевле американских Автор помогает с выбором моделей, подбором вариантов оплаты и избеганием блокировок DeepSeek и другие китайские модели не банят за локацию. Никаких помесячных подписок и не нужно — оплата идёт строго за токены, а значит, нет и проблемы «один аккаунт на несколько человек»: вы платите ровно за то, что используете, и все ваши сотрудники могут работать одновременно. Поддержка Автор практически всегда в сети, включая выходные, и готов решать любые возникающие проблемы или просто пообщаться по Telegram. Единственная просьба — писать текстом, без звонков и голосовых сообщений. Этот сайт, pastukhov.com, полностью управляется этой же системой — от создания страниц до правки CSS и установки плагинов. Каждая страница, которую вы видите, была создана и отредактирована через чат с помощью модели DeepSeek — с оплатой за токены, без каких-либо подписок. Задать вопросы или попробовать демо ×Задать вопросы и получить доступ к демонстрационной системе можно через Telegram @maxedant или по почте max@pastukhov.comЯ в онлайн по 12-16 часов в сутки без выходных, с удовольствием пообщаюсь. ### ИИ‑агент под заказ ИИ-сотрудник, разработанный и обученный конкретно под ваши бизнес-задачи, под полным вашим контролем ИИ-агент под заказ — это не просто «свой собственный ChatGPT». Это полноценная агентская ИИ-система, установленная на вашем сервере и глубоко обученная решать именно ваши задачи. Она не работает «из коробки» — она обучается под вашим контролем, и чем дальше — тем лучше работает и тем меньше внимания требует. Под капотом — мощная обвязка, которая превращает обычную ИИ-модель в надёжного «сотрудника»: с набором навыков, автопроверками, резервным копированием и мгновенным исправлением ошибок. Можно посмотреть, как это выглядит вживую, в услуге ИИ-агент для WordPress — есть демо на реальном сайте, чтобы вы оценили, насколько быстро и точно система выполняет даже самые сложные задачи, и как вы можете её дообучить, если вдруг не справилась. Решаемые бизнес-задачи Теоретически, возможно всё. Без шуток и преувеличений: модели уже достаточно разумные, чтобы при дообучении решать любые задачи. Основной вопрос здесь — именно в доступности данных для их работы, затратах времени на дообучение и наличии инструментов исполнения задач. Тут бы я разделил задачи на две категории: которые я уже успешно решил с помощью агентов. И те, которые я решаю прямо сейчас или планирую решать в ближайшее время в своём бизнесе. Если ваша задача похожа на любую из описанных — пишите, получите быстрый результат. Если нет — напишите и уточните: возможно, она мне просто ещё в голову не пришла, хотя решить её было бы не так сложно. Успешно решённые задачи Разработка программных продуктов Управление сайтами, наполнение их контентом Разработка системы управления внутренней инфраструктурой Проверка инфраструктуры на защищённость от атак и ошибок Система визуальной аналитики Сбор и анализ конкурентов, рыночных трендов Сбор и анализ потенциальных рекламных каналов Бизнес-аналитик и советник Планируемые и решаемые задачи Управление Telegram-каналом Управление YouTube-каналом Управление бизнес-аккаунтами в социальных сетях Поиск и планирование рекламы в платных каналах Прямой поиск потенциальных клиентов Глубокое и автоматизированное изучение рынка Отслеживание новостей и рынка в реальном времени Управление налоговой отчётностью в малом бизнесе Автоматическое улучшение существующих агентов Отслеживание и немедленная реакция на инциденты Обсудить вашу задачу Что это такое, простыми словами? Это профессиональная услуга по разработке полноценного ИИ-агента с нуля под конкретные бизнес-задачи заказчика. От идеи до результата, который выражается в решении конкретных проблем или измеримой прибыли на выходе. Это НЕ вайб-кодинг. НЕ OpenClaw. НЕ тренинг и НЕ коучинг. Это профессиональная разработка от специалиста с 25-летним опытом создания систем маркетинговой и финансовой аналитики — где на первом месте стоят именно данные: их качество, доступность, защита и сохранность. Ключевое в агенте — именно данные. Большую часть времени мы с вами будем заниматься именно ими: сбор, извлечение из существующих систем, валидация, очистка, организация в удобном для работы агента виде Делать это руками не нужно — но под эту задачу нужно будет обучить агента: понимать, что у вас есть и как это можно использовать, как правильно с данными обращаться, что на их основании можно сделать Когда данные есть в наличии, дальше уже можно будет легко и красиво «наворачивать» интерактивные штуки: ботов, отчёты, действия в реальном мире Второе по важности в бизнес-задачах — замена (где возможно) галлюцинаций модели на код (скрипты). Вместо того, чтобы считать «в уме», модель обучается писать, отлаживать, сохранять и переиспользовать конкретные узкие скрипты под конкретные задачи Именно скрипты в комбинации с качественными данными дают гарантию отсутствия «галлюцинаций» модели и принятия ей плохих решений, особенно когда она выполняет какие-либо действия Даже если вы не просите модель писать скрипты, она всё равно их пишет, просто одноразово и скрыто от вас — именно это приводит к ошибкам в ответах и высокому расходу токенов в системах, где нет своих скриптов Когда данные и скрипты готовы, а система научилась их использовать и автоматически расширять и исправлять — вы сможете самостоятельно творить в своё удовольствие, на пользу и рост прибыли своего бизнеса Кто уже попробовал вайб-кодинг на реальных бизнес-данных, может вполне понять, о чём я тут говорю :) Сначала с ИИ всё чётко, а потом начинаются фантазии, которые ещё попробуй заметь. Как будто твой ответственный сотрудник сошёл с ума и начинает бредить. И руки опускаются, что надо все с начала его учить — отзыв недавнего клиента по его прошлому опыту использования ChatGPT для тех же задач На моём примере круто, что данные по товарам хранятся в базе. Обновляются. Да, я заметил, что ИИ считает криво. Так он мне все тут же разложил, откуда что. Я показал ошибку. Он поправил скрипт и всю базу пересчитал. Такого обычно хрен добьёшься. Особенно когда товаров за сотню. Чувствуешь, что-то в выводах не то пошло. ИИ просто говорит: «чёт товаров много, я решил первые 10 анализировать просто» — отзыв недавнего клиента по его нынешнему опыту использования его личного агента Чем это отличается от ChatGPT и аналогов Вы наверняка пробовали ChatGPT, Claude, DeepSeek или что-то похожее. Результат, скорее всего, был таким: хорошо генерирует текст, но плохо решает конкретные задачи, не знает ваших данных и не может быть дообучен. Ваш агент принципиально отличается: Под капотом — полноценная агентская система, а не просто чат. Она выполняет любые сложные задачи, непрерывно получая и накапливая глубокие знания про ваш бизнес, недоступные публичным чатам и сервисам Если ChatGPT «тупит» — вам остаётся только тихо ругаться. В своём агенте можно немедленно исправить поведение одним коротким сообщением о том, что не так и что вы хотели бы видеть на самом деле Система установлена на вашем сервере — данные никуда не уходят, полная изоляция Набор навыков — текстовые инструкции, которые система получает при каждом обращении. Это не «встроенная память модели», а ваш контролируемый и документированный набор знаний Автоматические проверки после каждого действия — система сама находит и исправляет свои ошибки Резервное копирование, версионирование и восстановление — навыки и данные защищены Поддержка любых ИИ-моделей — Claude, GPT, GLM, DeepSeek, MiniMax, локальные модели и другие Доступ через веб-чат или Telegram — откуда удобно Аналитика — статистика по каждому действию: токены, стоимость, скорость Проверено на реальных задачах — от управления сайтами до маркетинговых исследований, управления рекламными кампаниями, разработки и развития продуктов, глубокой аналитики и машинного обучения Даже когда модели неизбежно меняются со временем, ваш личный помощник лишь умнеет благодаря накопленным навыкам Чем это отличается от OpenClaw, Hermes, Claude Code, OpenCode, Codex и подобных Инструменты вайб-кодинга: Claude Code, OpenCode, Codex Claude Code, OpenCode, Codex и другие — системы вайб-кодинга, заточенные под именно разработку приложений. Ими хорошо пользоваться либо разработчикам, которые хорошо понимают, что они хотят получить в результате, и проконтролировать процесс выполнения (тут претензий нет, я сам такой). Либо тем самым вайб-кодерам, которые делают «что-то» на свой страх и риск, без понимания реальных внутренностей интерфейсов, которые они видят. Тут уже как повезёт на самом деле: может получиться красиво, но со скрытыми серьёзными рисками потери или утечки данных, что в случае с российским бизнесом может быть дорого и больно. И сам процесс разработки не всегда приятен: если ты не понимаешь, что происходит, можешь часами писать «опять то же самое», и модель будет послушно править один баг, добавляя ещё два других и ломая то, что отлично работало раньше. «Виртуальные помощники»: OpenClaw, Hermes OpenClaw, Hermes и другие — «виртуальные помощники», универсальная обёртка вокруг языковых моделей с памятью. Теоретически, они должны подстраиваться под пользователя и учиться на лету. На практике добиться от них стабильной работы даже сложнее, чем от инструментов вайб-кодинга. Почему? А потому, что в системе вайб-кодинга ты хотя бы видишь, что происходит «под капотом», можешь отредактировать файлы инструкций и навыков. Тут же перед тобой — чёрный ящик, который вчера мог работать хорошо, но сегодня он решил учесть твои последние пожелания и чаты, изменил внутренние правила и внезапно отупел. Просить его «учти, что эту работу нужно делать вот так вот…» равносильно дать обезьяне гранату: тут уж как повезёт. Может учесть и правильно выполнять, может проигнорировать, может даже сломать то, что раньше работало. И ещё один важный нюанс подобных «помощников»: они потребляют токены постоянно и очень неэкономно. Там, где вайб-кодинговых инструментов хватило бы на неделю, OpenClaw может сожрать лимит за пару часов. Личный опыт, если что. «Самописные» обвязки: Pi, Aider и другие «Самописные» обвязки вроде Pi, Aider или любых других из бесчисленного числа поделок Кулибиных-одиночек — их приятно писать для себя, но практически нереально использовать в серьёзных задачах. Вместо решения реальных проблем ты непрерывно занимаешься решением проблем технических, героически преодолеваешь трудности и ограничения своего «велосипеда». Особенно это тяжело, когда «велосипед» чужой — мало того, что там куча багов, так ещё и разработчик отвечает, хорошо если раз в неделю или даже раз в месяц. С учётом обилия завайбкоженных pull requests в опенсорсе, многие авторы уже даже стали просто удалять и запросы в саппорт, и предлагаемые фиксы багов, требуя подтверждения того, что и запрос, и предлагаемый код были написаны или хотя бы проверены людьми. Мой подход Я с самого начала решал конкретные задачи онлайн-бизнеса, поэтому попытался взять лучшее из обеих миров: вместо написания своей обвязки с нуля просто «обернул» Claude Code. Фактически, на текущий момент это самая сильная из существующих обвязок, которая легко адаптируется под любые модели любых провайдеров, не обязательно от Антропик. Но я пошёл гораздо дальше, чем просто веб-интерфейс к ней: итеративно, за год, наворотил над ней целую инфраструктуру, которая позволяет создавать именно автономных и легко обучаемых агентов. Превратил инструмент командной строки для разработчика в инфраструктуру для агентской системы. Я могу даже заменять Claude Code на любую другую обвязку с любыми другими моделями при желании, просто на текущий момент этого не требуется — моя система работает стабильно и подобных экспериментов не требует. Это НЕ инструмент вайб-кодинга. Если вам нужен именно вайб-кодинг, вам на самом деле будет проще взять любой продукт из списка выше. Это НЕ «виртуальный ассистент» вроде OpenClaw. Если вам нужен именно «помощник», вам опять же проще будет взять и настроить любое существующее «коробочное» решение. Это НЕ «самописная обвязка» вроде Pi. Это полноценная агентская система именно для бизнеса, где Claude Code (самая «взрослая» на текущий момент обвязка) работает лишь как один из «кирпичиков», причём легко заменяемый при необходимости. Желания писать свои велосипеды у меня нет. У меня вы получаете лучшее из двух миров: хотя вы можете разговаривать с агентом как с живым человеком, «под капотом» агент пишет большие объёмы кода и работает с реальными данными. Поэтому его ответы и действия получаются всегда быстрыми, точными и недорогими. С одной стороны, это программный продукт и система для разработки программного продукта. Но эта сложность скрыта от вас «живым» общением и возможностью дообучаться на лету. Когда вы просите учесть что-то на будущее — система не просто добавляет правила, но может попутно обновить десятки скриптов, с полностью автоматической их проверкой и исправлением ошибок. За счёт того, что система превращает любые задачи во внутренние скрипты, она получается реально быстрее и реально дешевле и в разработке, и в использовании. Когда вы просите «сделай мне отчёт по продажам за предыдущий квартал» где-нибудь в OpenClaw, он всё равно пойдёт писать все те же скрипты, просто на лету. Будет ошибаться, исправлять свои ошибки на лету ценой вашего времени и лимитов на токены. Следующий чат — всё с начала. У меня же система один раз пишет скрипт при первом вашем запросе, и дальше знает, когда и как его нужно вызывать, способна на лету и незаметно для вас исправлять и расширять его. Правильный подход к автоматизации ваших задач Главная проблема — не в генерации. Генерация сейчас дешёвая и практически безлимитная. Главная проблема — в контроле. Без контроля и дообучения система будет работать плохо и нестабильно — генерировать много, но низкого качества. Именно тут приходит разочарование от ИИ: вроде и похоже на то, что нужно, но всё равно «не то». Наилучшие результаты будут не у тех, кто специалист в ИИ или разработке. А у тех, кто является специалистом в конкретной решаемой проблеме — именно он сможет адекватно контролировать и дообучать систему Быть техническим специалистом может быть даже вредно — он привык говорить «что» надо сделать и «как» это сделать, лишая систему возможности проявить себя в полной мере Эффективнее просить о результатах работы, о целях — не «что сделать», а «что я хочу получить на выходе» Нельзя «прощать» системе даже мелкие ошибки — лучше один раз попросить их исправить и самообучиться, благо это всего лишь простая просьба в чате в свободной форме Основное — не установка и настройка, а предоставление системе актуальных данных, её контроль и дообучение, обеспечение стабильности и безопасности Нужно отучать себя от привычки всё делать руками, даже если это «всего лишь одну строчку поправить». На практике, гораздо проще и быстрее попросить систему что-то исправить, быстро дообучая если вдруг она ошибается. Сэкономите и время, и силы в итоге Аппетит приходит во время еды. Больше экспериментируйте, особенно с теми задачами, которые сейчас вам кажутся слишком сложными или даже невозможными для ИИ. Именно там вы получите максимальную выгоду и конкурентное преимущество Навыки — главный актив Самая ценная часть всей системы — навыки. Это набор текстовых инструкций, которые система получает при каждом обращении. Именно навыки делают систему умной, именно их дольше всего восстанавливать в случае потери. Навыки — просто текстовые файлы небольшого размера, их легко копировать и хранить Навыки, созданные для одной задачи, часто подходят для любых похожих задач — с косметическими правками Ваш личный навык развивать навыки системы будет бесценным — именно это определяет конкурентное преимущество в будущем Полная история изменений навыков хранится в git — всегда можно откатиться к любой прошлой версии. Но лучше всё-таки иметь много копий в разных местах — я покажу как это сделать, автоматически и несложно Если вдруг не знаете, что такое git — это мировой стандарт сохранения полной истории изменений текстовых файлов, с полностью автоматической синхронизацией между компьютерами и практически любыми электронными устройствами Масштабирование Однажды разобравшись с работой системы, вы поймёте, что она может не только решать текущую задачу — но и настраивать свои копии для решения любых других задач под вашим контролем. Это на самом деле не сложно. Но стоит иметь технического специалиста под рукой — чтобы он саму систему проконсультировал по доступным механизмам масштабирования и ограничил полёт её фантазии в процессе. Технический специалист нужен не для того, чтобы всё делать за вас — а чтобы подстраховать и показать границы. Навыки из одной задачи переносятся на похожие задачи с минимальными правками Одна система — любое количество задач и проектов Навыки — вечный актив: можно копировать, масштабировать и передавать Автономная система лицензирования — если автор исчезнет, с вашими проектами ничего не случится Установка, настройка и дообучение Процесс состоит из трёх этапов: покупка необходимых аккаунтов, установка и настройка, обучение. Наша работа начинается с покупки вами сервера и доступа к языковым моделям. Вы самостоятельно покупаете VPS-сервер и пополняете счёт ИИ-модели (DeepSeek) под свои данные — это безопаснее и проще в долгосрочной перспективе. Помогу с выбором подходящих вариантов, посоветую проверенных провайдеров и способы оплаты. Подробнее о необходимых расходах — в разделе Расходы в конце страницы. Установка и настройка выполняются мной самостоятельно после предоставления доступа к купленному вами VPS-серверу — участия клиента или его команды на этом этапе не требуется. Обучение — совместное: вы лучше меня знаете свою задачу, я лучше вас знаю свою систему и её особенности. Чем дальше — тем меньше работы и для вас, и для меня: система становится стабильнее и умнее с каждым запросом, не то что с каждым днём. Уже через 1-2 недели я буду не нужен, разве что эпизодически, на пару минут. Покупка необходимых аккаунтов — 1 час. Аккаунты покупаются вами самостоятельно, под ваши данные — это безопаснее и проще в долгосрочной перспективе. Я помогу с выбором подходящих вариантов и поиском способов оплаты. Подробнее — в разделе Расходы Установка и настройка — 1 день. Вы предоставляете доступ к купленному VPS-серверу, я устанавливаю и настраиваю систему, подключаю ИИ-модель, создаю базовые навыки: начальная документация, правила работы, защита данных Обучение базовым навыкам — 1 неделя. Вы ставите задачи, система выполняет, вместе проверяем результат и дообучаем. Если система ошибается — вы пишете, что не так, я проверяю чтобы это превратилось в исправленный навык и даю практические рекомендации в процессе. За несколько дней система обучается достаточно чтобы работать уверенно и стабильно, с эпизодическими ошибками, но типовые задачи выполняет, как правило, практически безошибочно Чем дальше — тем реже требуется моя помощь. Система справляется всё лучше, а вы уже способны дообучать ее самостоятельно, без моего участия. Моя роль на этом этапе — техническая подстраховка и помощь с расширением. Можете ли вы сделать это своими руками? Теоретически да, это возможно. Самому зарегистрироваться у провайдера ИИ-модели (например, DeepSeek) и пополнить счёт, установить и настроить обвязку, написать и отладить первые навыки и скрипты проверок, добиться безопасности доступа к данным, сохранения и накопления опыта моделей. И ещё сотни моментов, о которых я мог бы часами рассказывать по итогам своего опыта. Это, конечно, интересный опыт. Но основной вопрос — вы хотите свой бизнес развивать или свои технические навыки? Это будет игрушка или инструмент? Я начал заниматься прикладным ИИ примерно 3 года назад, а до этого программировал больше 25 лет по 8-12 часов в сутки без выходных. И обвязка моя писалась, использовалась и отлаживалась уже больше года суммарно на почти 50 проектах. Чтобы ваш результат автоматизации бизнес-задач был хотя бы «не хуже», лучше бы иметь подобный моему опыт. Иначе вы потонете в мелочах, которые к ИИ имеют слабое отношение, но без них всё остальное ломается. Не сегодня, так завтра — обязательно. И это попутно отвечает на вопрос, почему я иногда могу настаивать на тех или иных подходах или инструментах. Это, как правило, результат своего печального опыта. Цена ошибки — дни и недели потерянного времени, а в случае если вы займётесь популярным ныне вайб-кодингом «на коленке», добавьте туда ещё и риски потери данных, утечки информации о клиентах, проблемы с законом из-за мелких технических ошибок в процессе. Так что да: вы можете поиграться в разработчика. Только не воспринимайте это как способ решения реальных бизнес-задач. Прототипировать идеи можно, но вот их реализацию лучше всё-таки отдавать людям, кто сможет проверить и исправить неочевидные для вас проблемы. Напомню, что основная проблема — не в генерации, а в контроле. Вы способны проконтролировать бизнес-логику, но вряд ли заметите важные технические нюансы. А если вам нравится идея делать самому, но не хочется разбираться в одиночку — для этого есть отдельная услуга «ИИ-агент своими руками»: я устанавливаю систему на ваш сервер, настраиваю систему и две недели веду вас за руку — до состояния, когда вы решаете сложные задачи полностью самостоятельно. Это дешевле заказа, потому что основную работу делаете вы. За что вы на самом деле платите Заказывая эту услугу, вы на самом деле платите не за обвязку и даже не за услугу её установки и настройки. Вы платите за мой опыт правильной работы с бизнес-данными — 25+ лет в разработке бизнес-продуктов, с тысячами клиентов и очень массивными объёмами данных. Мало сказать модели «вот у меня база, вот мои требования, давай делай»: на практике всегда возникает очень много нюансов форматов данных, доступа к ним, безопасности, резервного копирования, правильной организации процесса работы с ними Я могу вовремя заметить, где модель совершает критичные для работы с данными ошибки, поправить её и дообучить на лету, чтобы вы с этим больше не сталкивались Я могу помочь обеспечить доступ к данным там, где это технически сложно, где ещё нет публичной документации или даже открытого доступа к ним Я могу правильно организовать структуру данных под разные задачи — от аналитики до реал-таймовых систем принятия решений Особенно ценны мои услуги в задачах, связанных с маркетинговой аналитикой и финансовой аналитикой — именно эти области у меня всегда в приоритете Безопасность будет на высоте: я всегда жёстко контролирую доступ моделей к данным, предлагаю и реализую решения по защите и анонимизации персональных данных, чтобы не «попасть» под проблемы с законодательством Я учу вас правильно работать с моделями, правильно их контролировать и дообучать: накопление того же опыта вживую потребовало бы у вас месяцы проб и ошибок Это не означает, что я или даже мои продукты становятся незаменимыми. Когда вы разберётесь с моей помощью, как система работает и как с ней правильно работать, вы сможете в любой момент мигрировать на другие решения или даже написать свои, если это по душе. Моя цель тут — не привязать вас к себе, а наоборот: сделать вас самостоятельными и самодостаточными как можно быстрее. Расходы Для начала работы есть несколько неизбежных расходов, без которых работа будет невозможна или сильно сложнее и дольше. Все эти расходы — не оплата мне за услугу: вы покупаете их самостоятельно, под свои аккаунты. Это и безопаснее, и проще в долгосрочной перспективе. VPS-сервер — от 600 ₽/мес. Минимум 2 ядра и 4 ГБ памяти для Docker, обвязки и вспомогательных инструментов работы с данными. Можно поставить на ваш существующий сервер, но тогда сразу возникают риски «а вдруг я чего сломаю» или «а вдруг его конфигурации будет недостаточно». Например, старые сервера могут не поддерживать AVX2 — тогда доступны только старые версии обвязки, более медленные и хуже по качеству исполнения задач. Когда система будет полностью настроена и выполнять ваши задачи — могу перенести её на вашу инфраструктуру, по желанию. Но в первый месяц лучше всё-таки на свежем выделенном VPS, желательно от AdminVPS в России (для российских клиентов) DeepSeek (оплата за токены) — для старта достаточно пополнить счёт примерно на 1,000 рублей. При активном использовании — а в первый месяц разработки работы действительно много — расходы составят от 1 до 3 тысяч рублей в месяц, в зависимости от задач. Никаких помесячных подписок и обязательств: оплата строго за фактически потраченные токены. Помогу с регистрацией и подбором способов оплаты За Claude Code или модели Антропик платить НЕ нужно. Хотя обвязка и использует «под капотом» Claude Code, но с моделью DeepSeek, доступ к которой вы оплачиваете сами. Ничего «сверху» не требуется, как и регистрации где-либо ещё ~3-4 часа ежедневно вашего времени в первые несколько дней работы — но не постоянно, а эпизодически. Вместе будем подбирать и реализовывать автоматизацию ваших бизнес-задач, я буду обучать как правильно использовать и дообучать систему. Чем дальше — тем меньше моего и вашего времени потребуется. Система будет выполнять всё больше и больше работы, без вашего или моего участия Давайте обсудим ваши идеи Просто напишите мне и расскажите, какую задачу вы хотите решить. Без предварительных договоров и предоплат за консультирование. Разработка стоит 59,700 рублей за две недели. Этого времени обычно хватает, чтобы довести агента до уровня, после которого вы сможете дальше дорабатывать его в режиме чата самостоятельно. Если моя помощь вдруг потребуется и дальше — 19,000 рублей за каждую последующую неделю. Чтобы оценить сроки, не нужно пугать себя опытом предыдущих проектов по разработке. Тут уже есть «коробочная» часть, установка и настройка которой занимает от силы один день — вашу прямую помощь на этом этапе не требуется, всё делается мной после предоставления доступа к купленному VPS. Дальше это уже превращается в процесс не сильно сложнее контроля и обучения начинающего удалённого сотрудника, в режиме чата. Обсудить вашу задачу ×Обсудить задачу и задать вопросы можно через Telegram @maxedant или по почте max@pastukhov.comЯ в онлайн по 12-16 часов в сутки без выходных, с удовольствием пообщаюсь. ### ИИ‑агент своими руками Свой ИИ-сотрудник, которого вы строите и обучаете сами — я устанавливаю систему, настраиваю систему и две недели веду за руку ИИ-агент своими руками — брат-близнец услуги «ИИ-агент под заказ»: та же система, те же возможности. Разница одна — разработку ведёте вы, а я наставник. Я устанавливаю всё необходимое на ваш сервер, настраиваю систему, а дальше две недели помогаю с любыми вопросами: работа агентов, данные, технические нюансы. Даже если вы никогда не программировали — уже через две недели будете решать своими руками действительно сложные задачи. Никакого преувеличения: вся «разработка» происходит в режиме чата, вы разговариваете с системой как с толковым сотрудником, а моя задача — научить вас делать это правильно и не дать утонуть в мелочах. Под капотом — та же связка, что я использую сам каждый день: Pastukhov Agent, Pastukhov MultiAgent, Pastukhov Research Agent, Pastukhov Analytics Agent и ИИ-агент для WordPress. Всё ставится на ваш сервер, данные остаются у вас: Research Agent полезен с первых же дней — исследования, идеи и планы руками вашего агента, Analytics Agent добавляет аналитику, отчёты и графики по вашим данным, а ИИ-агент для WordPress берёт на себя сайты. Если предпочитаете, чтобы всё сделал я — вам на страницу «ИИ-агент под заказ». Здесь же — путь «сделать самому, но не в одиночку». Что входит в услугу Установка на ваш сервер Pastukhov Agent, Pastukhov MultiAgent, Pastukhov Research Agent, Pastukhov Analytics Agent и ИИ-агента для WordPress — этим занимаюсь я, после предоставления доступа к купленному вами VPS Настройка окружения под ваши задачи — тоже полностью моя забота Две недели моей помощи по всем аспектам: работа агентов, работа с данными, любые технические вопросы Обучение правильной организации бекапов, безопасности и защиты данных — чтобы ничего не потерять и ничего не утекло Обучение работе с навыками — как использовать существующие и создавать свои Лицензии всех пяти продуктов — Agent, MultiAgent, Research Agent, Analytics Agent и ИИ-агент для WordPress. Купленные по отдельности, они стоят 78,500 ₽ (9,700 + 9,700 + 19,700 + 19,700 + 19,700) — то есть более чем вдвое дороже всей услуги целиком, вместе с установкой и двумя неделями наставничества. Лицензии дают право создавать и масштабировать неограниченное количество агентов под любые задачи Для старта достаточно одной подписки OpenCode Go за 5 долларов — больше ничего покупать не нужно Нужен ли опыт программирования? Нет, не нужен — и это не маркетинг. Система сама пишет код, скрипты и проверки; вы ставите задачи и контролируете результат на обычном русском языке. Программирование осталось «под капотом». Гораздо важнее знать свою задачу. Наилучшие результаты получают не технари, а специалисты в конкретной проблеме — именно они понимают, что «правильно», и могут контролировать и дообучать систему. Вся постановка задач — в чате, в свободной форме: «сделай», «проверь», «а теперь учти вот это» Эффективнее просить о результате — «что я хочу получить на выходе», а не «какими командами это сделать» Нельзя «прощать» системе даже мелкие ошибки: один раз поправили — и она больше не повторяет Быть техническим специалистом даже вредно: тянет командовать «как», лишая систему возможности проявить себя Чем отличается от услуги «ИИ-агент под заказ» Обе услуги ведут к одному результату — работающему агенту на вашем сервере. Разница в том, кто делает основную работу, и в цене. Я делаю — вы пользуетесь Услуга «ИИ-агент под заказ» — 59,700 ₽ за две недели Всю разработку, настройку и дообучение веду я, вы ставите задачи и принимаете результат Минимум вашего времени — от вас в основном знания о вашей задаче Подходит, когда важно получить результат быстро и без вашего погружения Вы делаете — я веду за руку Эта услуга — 29,700 ₽ за две недели Вы разрабатываете сами, я устанавливаю систему и наставляю: дешевле, потому что основной труд — ваш Вы получаете не только агента, но и навык создавать и развивать агентов — он останется навсегда Подходит, если вам интересно разобраться и строить дальше своими руками Подробно о том, чем агентская система отличается от ChatGPT, «виртуальных помощников» вроде OpenClaw и инструментов вайб-кодинга — на странице услуги «ИИ-агент под заказ». Как проходят две недели Процесс устроен так, что технически сложное делаю я, а вы с первого дня работаете со своим агентом в чате. Подготовка — 1 час. Вы покупаете VPS-сервер и подписку OpenCode Go (5 долларов). Я помогу с выбором провайдеров и способов оплаты Установка — 1 день. Вы даёте доступ к серверу — я устанавливаю Agent, MultiAgent, Research Agent, Analytics Agent и ИИ-агент для WordPress, настраиваю систему, подключаю модель, создаю базовые навыки: документацию, правила работы, защиту данных Неделя 1 — первые задачи. Вы ставите задачи в чате, мы вместе разбираем результаты, я показываю, как контролировать и дообучать систему. Она накапливает навыки под ваши задачи Неделя 2 — самостоятельность. Вы работаете сами, я на подстраховке. Углубляемся в организацию данных, бекапы, безопасность и создание навыков Дальше — сами. После двух недель вы справляетесь самостоятельно. Если помощь всё же нужна — 9,700 ₽ за неделю Чему вы научитесь Правильно организовывать данные: сбор, извлечение из ваших систем, валидация, очистка, структура под задачи агента Заменять «галлюцинации» модели скриптами: система пишет, отлаживает и сохраняет код под конкретные задачи — вместо того чтобы считать «в уме» и ошибаться Использовать и создавать навыки — главный актив системы: текстовые инструкции, которые делают агента умнее с каждым днём Организовывать бекапы, безопасность и защиту данных — включая анонимизацию персональных данных, чтобы не попадать под проблемы с законодательством Управлять флотом агентов через MultiAgent: серверы, рабочие пространства, задачи и боты Проводить исследования через Research Agent: поиск, скачивание сотен страниц, извлечение данных, готовые отчёты Строить аналитику через Analytics Agent: отчёты и графики по вашим данным, запросы к источникам, встроенные Jupyter-ноутбуки Управлять сайтами на WordPress через ИИ-агент: страницы и записи, плагины и темы, медиафайлы, SEO, автоматические бекапы При желании — создавать коммерческие продукты на агентах: не только решать мелкие задачи, у меня 25+ лет опыта разработки именно коммерческого ПО, есть чем поделиться Что у вас останется после обучения Курс заканчивается, а всё, что вы построили, — остаётся вашим. Агент, сделанный вами, — и навыки развивать его дальше без моей помощи Полноценная инфраструктура: Pastukhov Agent + MultiAgent + Research Agent + Analytics Agent + ИИ-агент для WordPress на вашем сервере Лицензии всех пяти продуктов (отдельно — 78,500 ₽): право разрабатывать и масштабировать неограниченное количество агентов под любые задачи Никакой привязки ко мне: система автономна, данные и навыки — ваши, навсегда Расходы Неизбежные расходы сверх оплаты услуги — вы покупаете их самостоятельно, под свои аккаунты: это безопаснее и проще в долгосрочной перспективе. VPS-сервер — от 600 ₽/мес. Минимум 2 ядра и 4 ГБ памяти. Помогу с выбором (для российских клиентов рекомендую AdminVPS) Подписка OpenCode Go — 5 долларов в месяц. Для старта и дальнейшей работы этого достаточно: доступ к моделям входит в подписку, докупать токены отдельно не нужно ~3–4 часа вашего времени ежедневно в первые дни, дальше меньше: чем дальше, тем больше работы система делает сама Давайте обсудим ваши идеи Просто напишите мне и расскажите, какую задачу хотите решить. Без предварительных договоров и предоплат за консультирование. Две недели настройки и обучения стоят 29,700 рублей. В цену входит установка Agent, MultiAgent, Research Agent, Analytics Agent и ИИ-агента для WordPress, настройка системы и всё моё сопровождение. Если после этого захотите продолжить работу со мной — 9,700 рублей за каждую дополнительную неделю помощи. Для оценки выгоды: лицензии пяти продуктов, купленные по отдельности, обошлись бы в 78,500 рублей — более чем вдвое дороже всей услуги, вместе с установкой и двумя неделями наставничества. Ваша экономия — 48,800 рублей. Не пугайте себя словом «разработкой»: технически сложное делаю я, ваше участие — ставить задачи и разбираться в своей же задаче, в режиме чата. Обсудить вашу задачу ×Обсудить задачу и задать вопросы можно через Telegram @maxedant или по почте max@pastukhov.comЯ в онлайн по 12-16 часов в сутки без выходных, с удовольствием пообщаюсь. ### Полный комплект ИИ-агентов Все ИИ-агенты Pastukhov одним платежом — пожизненные ключи на пять продуктов более чем вдвое дешевле Полный комплект ИИ-агентов — все мои агентские продукты одной покупкой: Pastukhov Agent, Pastukhov MultiAgent, Pastukhov Research Agent и Pastukhov Analytics Agent, а также ИИ-агент для WordPress. Один платёж 29,700 ₽ — и пожизненные лицензионные ключи на все пять продуктов. Купленные по отдельности, эти продукты стоят 78,500 ₽. Комплект экономит вам 48,800 ₽ — более чем вдвое. А продление обновлений стоит 9,700 ₽ в год вместо 29,400 ₽ при раздельных покупках. Это лицензии, а не услуга: вы скачиваете продукты, устанавливаете на свои компьютеры и серверы, пользуетесь без ограничений. У каждого продукта — подробная документация на русском. Если нужна помощь с установкой и обучением, это отдельные услуги, о них ниже. Что входит в комплект Pastukhov Agent — универсальная агентская система с навыками, автоматическими проверками и исправлением ошибок. Отдельная лицензия — 9,700 ₽ Pastukhov MultiAgent — управление флотом агентов на любом количестве серверов: развёртывание, чаты, задачи и боты. Отдельная лицензия — 9,700 ₽ Pastukhov Research Agent — глубокие исследования: десятки поисков и сотни страниц за одно исследование, идеи, планы и документы. Отдельная лицензия — 19,700 ₽ Pastukhov Analytics Agent — аналитика и визуализация данных: отчёты-документы, графики, встроенные Jupyter Notebooks. Отдельная лицензия — 19,700 ₽ ИИ-агент для WordPress — управление сайтами на WordPress через чат: страницы и записи, плагины и темы, медиафайлы, SEO, бекапы. Отдельная цена — 19,700 ₽ Пожизненные лицензионные ключи на все пять продуктов: единоразовый платёж, без подписок, лицензирование работает офлайн Без лимитов: неограниченное количество установок на любых ваших компьютерах и серверах, неограниченное количество агентов и сайтов Сколько вы экономите Посчитаем вместе. Персональные лицензии по отдельности: Pastukhov Agent — 9,700 ₽ Pastukhov MultiAgent — 9,700 ₽ Pastukhov Research Agent — 19,700 ₽ Pastukhov Analytics Agent — 19,700 ₽ ИИ-агент для WordPress — 19,700 ₽ Итого: 78,500 ₽ Полный комплект стоит 29,700 ₽. Ваша экономия — 48,800 ₽: все пять агентов более чем вдвое дешевле. Экономия не заканчивается после покупки. Обновления лицензий по отдельности продлеваются со скидкой 50% от каждой — уже четыре лицензионных продукта обошлись бы в 29,400 ₽ в год (4,850 + 4,850 + 9,850 + 9,850). В комплекте год обновлений всех пяти продуктов сразу стоит 9,700 ₽ — ещё 19,700 ₽ экономии каждый год, когда вы продлеваете обновления. Обновления и новые агенты Все мои продукты активно развиваются. Комплект включает обновления на выгодных условиях: Первый год обновлений всех пяти продуктов — бесплатно, включён в стоимость комплекта Дальше — по желанию: 9,700 ₽ за год обновлений всего комплекта Все новые агенты по мере выпуска попадают в комплект, пока действует срок оплаченных обновлений — вы получаете их ключи автоматически Продлевать никогда не обязательно — ключи остаются пожизненными в любом случае Пожизненные ключи — это действительно пожизненные Ключи не имеют срока действия: даже если никогда не продлевать обновления, все продукты продолжают работать Без продления ключи действуют на все версии продуктов, выпущенные до последней даты оплаченных обновлений Лицензирование работает офлайн: без онлайн-проверок, ваш ключ действительно пожизненный Что не входит Комплект — это лицензии на продукты. Услуги, связанные с ними, оплачиваются отдельно: «ИИ-агент под заказ» — я устанавливаю и настраиваю агентскую систему под ваш бизнес и обучаю её вашим задачам «ИИ-агент своими руками» — наставничество: установка системы и две недели моей поддержки (те же лицензии уже включены в эту услугу) Бесплатная консультация — разбор задач и подбор решения, бесплатно и без обязательств Кому подходит комплект Тем, кому нужен полный цикл: разработка в Agent, управление флотом в MultiAgent, исследования в Research Agent, аналитика в Analytics Agent, сайты в ИИ-агенте для WordPress Тем, кто готов устанавливать и настраивать самостоятельно — у каждого продукта есть подробная документация на русском Тем, кому важна полная изоляция: всё работает на ваших серверах, данные не уходят наружу Тем, кто хочет зафиксировать расходы: один платёж вместо четырёх, обновления — опционально и недорого Продукты интегрированы друг с другом: Research Agent управляет чатами Agent из одного интерфейса, Analytics Agent строит отчёты по вашим данным Работает с любыми ИИ-моделями: Claude, GPT, GLM, DeepSeek, локальные и другие Как купить Полный комплект стоит 29,700 ₽ — одноразовый платёж за пожизненные лицензионные ключи на все пять продуктов и год бесплатных обновлений. Отдельно эти продукты обошлись бы в 78,500 ₽ — ваша экономия 48,800 ₽. Напишите мне в Telegram — я выставлю счёт и пришлю ключи сразу после оплаты. Если остались вопросы про продукты, лицензии или обновления — задавайте там же, без обязательств. Купить комплект ×Обсудить задачу и задать вопросы можно через Telegram @maxedant или по почте max@pastukhov.comЯ в онлайн по 12-16 часов в сутки без выходных, с удовольствием пообщаюсь. ### Макс Пастухов Превращение любой бизнес-задачи в ИИ‑агента за две недели ИИ‑агент своими руками Обучаете агента сами, я помогаю с установкой и настройкой, работой с данными и навыками Установлю Agent, MultiAgent, Research Agent, Analytics Agent и ИИ-агента для WordPress на ваш сервер Настрою систему и подключу ИИ-модели Две недели обучения и помощи: реальные задачи, данные, технические вопросы Обучение бекапам, безопасности и защите данных Обучение использованию и созданию навыков Научу выполнять исследования, генерировать идеи и планы на уровне гораздо выше любых существующих решений вроде ChatGPT/Perplexity Даже без навыков разработки сможете решать реальные проблемы своего бизнеса уже через пару дней Вся разработка — в режиме чата, на обычном русском языке Агент, инфраструктура и навыки остаются вашими навсегда Лицензии всех пяти продуктов включены — отдельно они стоили бы 78,500 ₽ Можно легко масштабировать на любое количество серверов, агентов и задач Бесплатные эпизодические консультации после первых двух недель Та же система, что в услуге «ИИ-агент под заказ» — но за 29,700 ₽ вместо 59,700 ₽ Вы получаете не только готового агента, но и навык создавать последующих агентов самостоятельно Помогать вам будет специалист с 25+ годами опыта коммерческой разработки продуктов для бизнеса Научу создавать коммерческие продукты, а не только решать мелкие задачи Для старта достаточно подписки OpenCode Go за 500 рублей Я в онлайне по 12–14 часов в сутки 7 дней в неделю, пишите в Telegram Подробнее ИИ‑агент под заказ Обучаемый ИИ-сотрудник под любые бизнес-задачи — на вашем сервере, под вашим контролем Агентская система, а не энциклопедия: выполняет работу, а не просто отвечает на вопросы Установлена на вашем сервере — полная изоляция данных Обучается под вашим контролем — чем дальше, тем лучше работает Доступ к вашим внутренним данным, недоступным публичным чатам Навыки — контролируемый и документированный набор знаний Для использования не нужно быть техническим специалистом Работает 24/7, не выгорает и не увольняется Автоматические проверки — система сама находит и исправляет ошибки Резервное копирование и версионирование навыков Любые ИИ-модели: Claude, GPT, GLM, DeepSeek, локальные и другие Доступ через веб-чат или Telegram — откуда удобно Упрощённый интерфейс — выглядит как обычный ChatGPT Моментальное исправление ошибок и самообучение одним сообщением Масштабирование на любые задачи и проекты Навыки — вечный актив, можно копировать и передавать Установка и настройка за один день Нужна всего неделя обучения до реально хороших результатов Проверено на реальных задачах, от управления сайтами до исследований рынка, аналитики, управления рекламными кампаниями, разработки продуктов Даёт конкурентное преимущество отнюдь не технарям, а тем, кто имеет опыт в решении реальных бизнес-задач Подробнее Полный комплект ИИ-агентов Пожизненные лицензии на пять агентов со скидкой больше 50% Все пять продуктов одним платежом: Agent, MultiAgent, Research Agent, Analytics Agent и ИИ-агент для WordPress Пожизненные лицензионные ключи на всё — без подписок и онлайн-проверок Отдельно эти продукты стоят 78,500 ₽ — комплект более чем вдвое дешевле Цена комплекта — 29,700 ₽, ваша экономия — 48,800 ₽ Неограниченное количество установок на своих компьютерах и серверах Все продукты полностью на русском и работают с любыми ИИ-моделями Бесплатные обновления всех продуктов в течение первого года Дальше по желанию: 9,700 ₽ за год обновлений всего комплекта Продления четырёх лицензий по отдельности — уже 29,400 ₽ в год; в комплекте всё сразу за 9,700 ₽ Все новые агенты по мере выпуска — пока действует срок оплаченных обновлений Даже без продления ключи работают пожизненно Ключи действуют на все версии, выпущенные до последней даты оплаченных обновлений Полный цикл работы: разработка, управление флотом агентов, исследования, аналитика Продукты интегрированы друг с другом и управляются из одного интерфейса Всё на ваших серверах — полная изоляция данных (self-hosted) Навыки и исследования остаются вашими навсегда Документация на русском у каждого продукта — установка своими силами Проверено на реальных проектах — этой связкой управляется pastukhov.com Подробнее ИИ-агент для исследований и планирования Глубокие исследования, идеи и планы — Pastukhov Research Agent Десятки поисков и сотни страниц за одно исследование Шесть поисковых провайдеров с запасными вариантами Скачивание с обходом блокировок Конвертация страниц в Markdown Батчинг: объёмы больше контекста модели Извлечение данных в TSV и JSON Генерация идей, планов и интерфейсов Результаты готовы для агентов разработки Верификация фактов с критикой альтернатив Action Research: циклы plan → act → observe → reflect Планы со стадиями и критериями проверки Исследование за 20–30 минут и 10–30 центов Управление Pastukhov Agent из одного интерфейса Чаты агента с обновлениями в реальном времени Библиотека исследований по маркетингу в поставке Любые OpenAI-совместимые модели Полная русская локализация Self-hosted: SQLite или PostgreSQL Очередь промптов и голосовой ввод Подробнее ИИ-агент для данных Сбор и подготовка данных — Pastukhov Data Agent Сбор данных откуда угодно — просто попросите агента Скрипты пишет и поддерживает агент в чате Запуск в один клик и по расписанию Скрипты — обычные файлы: Git и версионирование Данные в Lakehouse: Parquet и SQLite по полочкам Источники данных обнаруживаются автоматически Встроенный планировщик без cron История запусков с логами и выводами Аналитика агента: токены, стоимость, нагрузка Данные готовы для визуализации в Analytics Agent Работает на вашем центральном Pastukhov Agent Папка скриптов общая с Pastukhov Agent Self-hosted: один Docker-контейнер, всё в volume /data Полная русская локализация интерфейса Часть экосистемы: Research Agent — знания, Data Agent — данные, Analytics Agent — отчёты Подробнее ИИ-агент для аналитики Быстрый анализ и визуализация данных — Pastukhov Analytics Agent Быстрый анализ и визуализация данных Документы-отчёты из блоков: графики, таблицы, метрики 15 типов блоков — от Markdown до Jupyter Семь типов графиков: линии, столбцы, точки, свечи, box plot SQLite, PostgreSQL и ClickHouse из коробки Lakehouse: запросы к Parquet-файлам Просите агента добавить отчёт, график или таблицу Кнопка «Исправить с помощью ИИ» рядом с ошибкой Встроенные проверки документов, блоков и SQL-запросов Авто-коррекция: ошибки видны до публикации Jupyter Notebooks: Python внутри отчёта pandas, NumPy, Matplotlib, Seaborn из коробки Панели с глубоким погружением в данные — не просто контроль Глубже Grafana и сильнее интегрировано с ИИ Обновления отчётов в реальном времени через SignalR Отчёты — JSON-файлы: Git и мгновенный reload Полная русская локализация интерфейса Создан аналитиком с более чем 25-летним опытом Подробнее ИИ-агент для Telegram Весь маркетинг в Telegram в одном окне — Pastukhov Telegram Agent Публикации в свои каналы в один клик Недельное расписание с авто-публикацией Очередь контента: идея → черновик → проверка История постов со статистикой Подключение через бота или личный аккаунт Источники: RSS, чужие каналы, чаты и комментарии Лента сообщений с фильтрами и поиском Авторы: кто пишет и их теги Маршрутизация: категории направляют контент в каналы ИИ-классификация сообщений Комментарии с ИИ: черновики, шаблоны, лимиты Кнопка «Вызвать агента» из любого места Чат с Pastukhov Agent: навыки и окружения Аналитика: подписчики, вовлечённость, просмотры Self-hosted в одном Docker-контейнере Подробнее ИИ‑агент для WordPress Управляйте сайтом на WordPress через чат — в браузере, телефоне, планшете или Telegram Создание, редактирование и удаление страниц и записей блога Установка и настройка плагинов, тем и шаблонов Управление медиафайлами, SEO, структурой сайта Создание собственных плагинов под ваши задачи Копирование дизайна любого сайта — покажите и скажите «сделай так же» Автоматическое резервное копирование перед каждым изменением Полная изоляция — система на вашем сервере, данные никуда не уходят Управление через Telegram-бот — полный контроль с телефона Управление через сайт или мобильное приложение Самообучение — система запоминает особенности вашего сайта Автоматические проверки и исправление ошибок после каждого изменения Полная история изменений в git — откат в любой момент Изменения мгновенно синхронизируются с живым сайтом Поддержка любых AI-моделей: Claude, GPT, GLM, DeepSeek и другие Управление базой данных — безопасно и с бекапами Контент как JSON-файлы — version control и batch-операции Демо — живой сайт магазина с корзиной и формой заказа Одна лицензия — любое количество ваших сайтов Пожизненная корпоративная лицензия Pastukhov Agent в комплекте Одноразовая оплата — без помесячных платежей и контрактов Проверено на реальном сайте — этим управляется pastukhov.com Подробнее и демо Pastukhov MultiAgent Централизованное управление ИИ-агентами на любом количестве серверов Управление любым количеством серверов через SSH Автоматическая установка Docker и зависимостей Развёртывание агентов в один клик Импорт уже работающих агентов Централизованные чаты всех агентов Рабочие пространства — сетки живых чатов Очередь промптов, задачи по расписанию и боты в чатах агентов Свой ассистент (Own Agent): панель чата и сайдбар на каждой странице Централизованная аналитика по всем агентам Контроль квот и балансов LLM-провайдеров Развёртывание сервисов по Docker Compose-шаблонам Встроенный Git-сервер Forgejo Nginx-роутинг: подпапка на сервере для каждого агента и сервиса Agent API: машина-машина автоматизация с ключом X-API-Key Полная русская локализация Шифрование секретов в базе Резервное копирование через rsync Обновления в реальном времени через SignalR Тёмная и светлая темы Полная независимость (self-hosted) Настраиваемый каталог образов: Agent, Research, Analytics и другие продукты Подробнее Pastukhov Agent Универсальная агентская система с навыками, автоматической проверкой и исправлением ошибок Работает с любыми моделями, включая локальные и OpenRouter Claude, GLM, Deepseek, MiniMax, Kimi, OpenAI, Qwen и т.д. Встроенные обвязки: Claude Code, Codex, OpenCode, Pi, MiniAgent и другие Полная изоляция (self-hosted) Автоматические сборки, линтинг, тестирование Быстрый и безопасный код на сервере и клиенте Упрощённый интерфейс для не-технических пользователей Автоматическая обратная связь по ошибкам и предупреждениям Автоматическое исправление ошибок и предупреждений в коде Автоматическая проверка кода с помощью моделей Легко добавлять свои типы проверок Автоматический перезапуск отладочных сборок Ежедневные глубокие проверки и тесты по безопасности Полный контроль через своего Telegram-бота Отслеживание и разбор вывода отладочных сборок Легко интегрировать в свои системы через REST API Полная и глубокая локализация Подробная документация для людей и машин Встроенные инструменты авто-настройки конфигурации Полная независимость от внешних сервисов Встроенный прокси-сервер для анализа и исправления протоколов Каждое приложение устанавливается на телефон и рабочий стол как обычное приложение — без магазинов приложений Автоматические SSL-сертификаты Let's Encrypt из интерфейса Подробнее и демо Новое в Pastukhov Agent Свежие возможности: расширенный API, очередь промптов, голосовой ввод, профили MiniAgent, пиковые часы и навыки у чатов API и интеграции HTTP-доступ к чатам и управление очередью промптов, подписка на живые события SignalR. Очередь промптов Сохранённые промпты и серверный AutoSend: отправка в новые чаты даже без открытых вкладок. Профили MiniAgent Именованные профили встроенного агента: инструменты, таймауты, системный промпт и parallel_bash. Голосовой ввод Восемь движков распознавания речи и кнопка микрофона на панели ввода сообщений. Пиковые часы Индикатор пиковых периодов у модели и правила автоотправки промптов и автоклика. Навыки у чатов Навык привязан к чату и загружается автоматически — промпты остаются чистыми. Вся документация Бесплатная консультация по ИИ‑агентам Бесплатно разберу ваш бизнес и подскажу, что реально автоматизировать, а что лучше не трогать Полный разбор вашего бизнеса и задач — совершенно бесплатно Запуск исследовательского агента по вашей нише и процессам Предварительное исследование по идеям автоматизации в вашем бизнесе Подбор ИИ-модели под ваш бюджет и задачи — Claude, GPT, GLM, DeepSeek, российские провайдеры Помощь с архитектурой, данными и безопасностью под вашу специфику Разбор реальных затрат и окупаемости — сервер, модели, время Честный ответ, нужно ли вам это вообще — без впаривания Бизнес-аналитика и финансовая аналитика — моя главная специальность Сбор и анализ конкурентов, рынка и трендов Маркетинг, реклама, контент и ведение соцсетей Управление сайтами, интернет-магазинами и контентом Аналитика данных, панели, прогнозы и отчёты Автоматизация рутины и повторяющихся задач Налоговая и бухгалтерская отчётность в малом бизнесе Больше 25 лет разработки коммерческих продуктов в аналитике Практик, а не теоретик — система работает на десятках проектов Без обязательств и без предварительных договоров Общение в Telegram или по почте — без звонков и голосовых Онлайн 12–16 часов в сутки, без выходных Честно о том, что ИИ пока не умеет — без хайпа Идеи забираете вы — даже если не закажете ничего Подробнее ### О проекте Макс Пастухов Основатель и разработчик О проекте Pastukhov Agent — это независимый проект, созданный с упором на качественный код и продуманный интерфейс. Основное направление — инструменты для автоматизации, анализа данных и веб-разработки. Более 25 лет опыта Каждый продукт создаётся с нуля, с вниманием к деталям и производительности. Используются современные технологии: Svelte, ASP.NET Core, PostgreSQL. Связаться Открыт для сотрудничества, вопросов и предложений. Самый быстрый способ связи — Telegram. Отвечаю в течение 12 часов, даже в выходные. Написать в Telegram ### Политика конфиденциальности Кто мы Адрес нашего сайта: http://pastukhov.com. Комментарии Когда посетители оставляют комментарии на сайте, мы собираем данные, отображаемые в форме комментариев, а также IP-адрес и строку пользовательского агента браузера для выявления спама. Анонимизированная строка, созданная на основе вашего адреса электронной почты (так называемый хеш), может быть передана сервису Gravatar для проверки, используете ли вы его. Политика конфиденциальности сервиса Gravatar доступна здесь: https://automattic.com/privacy/. После одобрения вашего комментария фотография профиля будет видна публично в контексте вашего комментария. Медиафайлы Если вы загружаете изображения на сайт, вам следует избегать загрузки изображений с встроенными данными о местоположении (EXIF GPS). Посетители сайта могут скачать и извлечь любые данные о местоположении из изображений на сайте. Файлы cookie Если вы оставляете комментарий на нашем сайте, вы можете дать согласие на сохранение вашего имени, адреса электронной почты и сайта в файлах cookie. Это сделано для вашего удобства, чтобы вам не нужно было повторно вводить свои данные при оставлении нового комментария. Эти файлы cookie будут храниться один год. Если вы посетите нашу страницу входа, мы установим временный файл cookie, чтобы определить, принимает ли ваш браузер файлы cookie. Этот файл не содержит личных данных и удаляется при закрытии браузера. При входе в систему мы также установим несколько файлов cookie для сохранения информации о вашем входе и ваших настройках отображения. Файлы cookie входа хранятся два дня, а файлы cookie настроек экрана — один год. Если вы выберете «Запомнить меня», ваш вход в систему будет сохраняться в течение двух недель. При выходе из аккаунта файлы cookie входа будут удалены. Если вы редактируете или публикуете статью, в вашем браузере будет сохранён дополнительный файл cookie. Этот файл не содержит личных данных и просто указывает идентификатор поста, который вы только что отредактировали. Он истекает через 1 день. Встроенный контент с других сайтов Статьи на этом сайте могут содержать встроенный контент (например, видео, изображения, статьи и т. д.). Встроенный контент с других сайтов ведёт себя точно так же, как если бы посетитель перешёл на другой сайт. Эти сайты могут собирать данные о вас, использовать файлы cookie, встраивать дополнительный сторонний отслеживание и отслеживать ваше взаимодействие с этим встроенным контентом, включая отслеживание вашего взаимодействия, если у вас есть учётная запись и вы вошли на этот сайт. С кем мы делимся вашими данными Если вы запросите сброс пароля, ваш IP-адрес будет включён в письмо для сброса. Как долго мы храним ваши данные Если вы оставляете комментарий, комментарий и его метаданные сохраняются бессрочно. Это необходимо для того, чтобы мы могли автоматически распознавать и одобрять последующие комментарии, не помещая их в очередь модерации. Для пользователей, зарегистрированных на нашем сайте (если таковые имеются), мы также храним личную информацию, указанную ими в профиле пользователя. Все пользователи могут просматривать, редактировать или удалять свою личную информацию в любое время (за исключением имени пользователя). Администраторы сайта также могут просматривать и редактировать эту информацию. Какие права вы имеете в отношении своих данных Если у вас есть учётная запись на этом сайте или вы оставляли комментарии, вы можете запросить экспортный файл с личными данными, которые мы храним о вас, включая любые данные, предоставленные вами. Вы также можете запросить удаление всех личных данных, которые мы храним о вас. Это не включает данные, которые мы обязаны хранить в административных, юридических или целях безопасности. Куда отправляются ваши данные Комментарии посетителей могут проверяться с помощью автоматизированной службы обнаружения спама. ### Связаться с автором Макс Пастухов — независимый разработчик ПО, ранее известный по базам ключевых слов и инструментам интернет-маркетинга. Последние три года активно занимаюсь применением технологий искусственного интеллекта для автоматизации маркетинговой и финансовой аналитики. Все продукты на этом сайте активно используются и развиваются, по принципу: «Сделали реально полезный внутренний инструмент — обкатали и отполировали на реальных задачах — только потом релизим». Я почти всегда онлайн и отвечаю на вопросы в течение 12 часов или меньше, даже в выходные. Лучший способ связаться со мной — через Telegram: @maxedant. Не стесняйтесь — я всегда рад пообщаться с умными людьми (но ненавижу голосовые вызовы и голосовые сообщения). Telegram: @maxedant Email: max@pastukhov.com Реквизиты Пастухов Максим Александрович Самозанятый, плательщик Налога на профессиональный доход (НПД). После оплаты покупателю направляется официальный чек из приложения «Мой налог». Лицензионный ключ выдаётся в электронном виде (электронная почта, мессенджеры) с указанием реквизитов покупателя, доступных при расшифровке публичным ключом. По запросу покупателя высылается бумажный договор с передачей неисключительных прав на программные продукты (лицензии). Правообладатель гарантирует, что он является надлежащим Правообладателем программного Продукта, а также обладает всеми необходимыми правами или лицензиями на каждый элемент программного Продукта в отдельности, которые требуются для предоставления лицензии. В случае если гарантии, содержащиеся в настоящем абзаце, будут нарушены, Правообладатель обязуется принять меры, которые обеспечат Пользователю беспрепятственное использование передаваемых прав, а в случае невозможности обеспечить беспрепятственное использование передаваемых прав — частично возместить Пользователю понесенные убытки, которые могут возникнуть у Пользователя в связи с таким нарушением гарантий. Сумма возмещения убытков ограничена 50% суммы, уплаченной за Продукт. QR-код для оплаты моих продуктов и услуг через Сбер/СБП ## Blogs ### ИИ-агент своими руками — запуск услуги Сегодня запускается услуга «ИИ-агент своими руками» — брат-близнец услуги «ИИ-агент под заказ»: та же система, те же возможности. Разница одна — разработку ведёте вы, а я наставник. Я устанавливаю всё необходимое на ваш сервер и настраиваю окружение, а дальше две недели помогаю с любыми вопросами: работа агентов, данные, технические нюансы. Даже если вы никогда не программировали — уже через две недели будете решать своими руками действительно сложные задачи. Никакого преувеличения: вся «разработка» происходит в режиме чата, вы разговариваете с системой как с толковым сотрудником, а моя задача — научить вас делать это правильно и не дать утонуть в мелочах. Что входит в услугу Установка на ваш сервер Pastukhov Agent, Pastukhov MultiAgent, Pastukhov Research Agent и Pastukhov Analytics Agent — этим занимаюсь я Настройка окружения под ваши задачи — тоже полностью моя забота Две недели моей помощи по всем аспектам: работа агентов, работа с данными, любые технические вопросы Все данные остаются на вашем сервере, под полным вашим контролем Стоимость — 29,700 ₽ за две недели наставничества. Если предпочитаете, чтобы всё сделал я, — вам на страницу услуги «ИИ-агент под заказ». Здесь же — путь «сделать самому, но не в одиночку». Подробности — на странице услуги «ИИ-агент своими руками». ### Pastukhov MultiAgent — запуск продукта Сегодня представлен Pastukhov MultiAgent — инструмент централизованного управления флотом ИИ-агентов на любом количестве серверов. Пока агентов один-два, с ними можно справляться вручную; когда их становится больше, ручное администрирование перестаёт масштабироваться — и здесь на помощь приходит MultiAgent. Ключевые возможности Управление любым количеством Linux-серверов через SSH Автоматическая установка и настройка Docker на серверах Развёртывание агентов в один клик: provision, start, stop, restart Импорт уже работающих на серверах агентов Автоматическое распределение портов между агентами Централизованный Postgres, обслуживание Git-репозиториев и резервное копирование MultiAgent сильно упрощает настройку серверов, установку всех необходимых инструментов, развёртывание и управление агентами. Вместе с Pastukhov Agent это полноценная инфраструктура для команд ИИ-агентов — от одного сервера до любого масштаба. Подробности, документация и инструкции по установке — на странице Pastukhov MultiAgent. ### ИИ-агент для исследований — запуск продукта Сегодня запускается ИИ-агент для исследований — инструмент для агентных исследований и управления идеями, планами и документами. За одну сессию он выполняет десятки поисковых запросов по теме, скачивает сотни страниц, извлекает из них информацию с помощью LLM и собирает структурированный отчёт. Ключевые возможности Десятки поисковых запросов по одной теме за одно исследование Шесть провайдеров поиска: Serper, Brave, Tavily, DuckDuckGo, Keenable, SearXNG Скачивание сотен страниц с обходом блокировок и защит Конвертация веб-страниц в чистый Markdown и извлечение данных через LLM Удалённый браузер для страниц, требующих JavaScript Библиотека исследований, планирование и идеи, встроенные исследования Продукт интегрируется с Pastukhov Agent и является частью экосистемы: исследования, идеи и планы — руками вашего агента. Он одинаково полезен и как самостоятельный инструмент для аналитика или маркетолога, и как «глаза» агентской системы, которой нужны свежие данные из внешнего мира. Подробности, документация и инструкции по установке — на странице ИИ-агент для исследований. ### ИИ-агент для аналитики — запуск продукта Сегодня представлен ИИ-агент для аналитики — инструмент для анализа и визуализации данных, похожий на Grafana, но с глубокой интеграцией агентского ИИ и фокусом не только на наблюдении за работой системы, а на настоящих аналитических задачах: погружении в данные, поиске причин и следствий, построении отчётов. Продукт создан аналитиком, который больше 25 лет работает с данными и их визуализацией. Дашборды здесь можно не просто смотреть, а погружаться в них: фильтровать, сверять, считать в Python. А отчёты, графики и таблицы можно просить добавить у ИИ — прямо в интерфейсе отчёта. Ключевые возможности Документы-отчёты из блоков: графики, таблицы, метрики — 15 типов блоков, от Markdown до Jupyter Notebook Семь типов графиков: линии, столбцы, точки, свечи, box plot и другие SQLite, PostgreSQL и ClickHouse из коробки, автоопределение схем и кэширование запросов Встроенные Jupyter-блоки: расчёты на Python прямо в отчёте ИИ внутри отчёта: попросить добавить график или пересчитать метрику можно в обычном чате Автоматические проверки и авто-коррекция отчётов Подробности, документация и инструкции по установке — на странице ИИ-агент для аналитики. ### ИИ-агент под заказ — запуск услуги Сегодня запускается услуга «ИИ-агент под заказ»: я устанавливаю агентскую ИИ-систему на сервер заказчика, обучаю её решать конкретные бизнес-задачи и сопровождаю её развитие. Это не «свой собственный ChatGPT», а полноценный ИИ-сотрудник — с набором навыков, автопроверками, резервным копированием и мгновенным исправлением ошибок. Система не работает «из коробки» — она обучается под контролем заказчика, и чем дальше, тем лучше работает и тем меньше внимания требует. Фундамент — Pastukhov Agent, обвязка, обкатанная на десятках проектов. Какие задачи уже решаются Разработка программных продуктов Управление сайтами и наполнение их контентом Сбор и анализ конкурентов, рыночных трендов и рекламных каналов Системы визуальной аналитики, бизнес-аналитик и советник Проверка инфраструктуры на защищённость от атак и ошибок За последние три года я решал такие задачи агентскими системами в собственном бизнесе — финансовая аналитика, маркетинговая аналитика, разработка. Теоретически возможно практически всё: вопрос только в доступности данных и времени на дообучение. Если ваша задача похожа на любую из описанных — пишите, получите быстрый результат. Если не похожа — тем более напишите: возможно, она решается проще, чем кажется. Посмотреть систему вживую можно в услуге ИИ-агент для WordPress — там есть демо на реальном сайте. Подробности об услуге — на странице «ИИ-агент под заказ». ### Pastukhov.com — официальный перезапуск Сегодня официально перезапускается pastukhov.com — сайт, вокруг которого сложился целый стек продуктов в области применения искусственного интеллекта для бизнеса. До 2022 года я занимался базами ключевых слов для SEO. Это была интересная ниша, где мой продукт был одним из самых популярных — но с повышением сложности алгоритмов поисковых систем и одновременным падением эффективности SEO-инструментов продукт потерял актуальность. Вместо того чтобы пытаться оживить уходящий рынок, я переориентировался на то, во что уже тогда верил: применение ИИ для решения реальных бизнес-задач. Последние три года я работал исключительно в двух направлениях — финансовая аналитика и маркетинговая аналитика. Исследование рынков, анализ рекламных кампаний, конкурентный мониторинг, построение аналитических моделей — всё это делалось с помощью ИИ. Не в формате «спроси у ChatGPT», а в формате полноценных агентских систем, которые работают автономно, проверяют свои результаты и учатся на своих ошибках. Параллельно росла и улучшалась внутренняя инфраструктура. Ключевой её элемент — Pastukhov Agent, веб-интерфейс поверх Claude Code, который превращает консольный инструмент в удобное приложение для работы через браузер или Telegram. Эта система появилась в июле прошлого года как внутренний инструмент и с тех пор использовалась на более чем 50 внутренних и внешних проектах — прежде чем стать самостоятельным продуктом. Что сегодня доступно на сайте Pastukhov Agent — локальный/серверный веб-интерфейс для Claude Code с автоматической проверкой и исправлением кода, поддержкой любых ИИ-моделей и глубокой русскоязычной локализацией ИИ-агент для WordPress — готовая система управления сайтом через чат, установленная на вашем сервере с полной изоляцией данных Что дальше С точки зрения развития, ожидается постепенное улучшение как самого Pastukhov Agent, так и типизированных решений на его основе — агент для WordPress останется флагманским коробочным продуктом. Уровень автоматизации будет расти — от простых аналитических ботов до полноценных систем, управляющих целыми процессами. А в ближайшие недели здесь появятся новые продукты и услуги — все анонсы будут публиковаться в этом блоге. Все продукты построены на одном фундаменте — Pastukhov Agent. Это означает, что улучшения в ядре автоматически касаются всех продуктов и услуг. Лицензирование полностью автономно и не зависит от меня или от pastukhov.com. Кстати — этот сайт полностью управляется тем же самым ИИ-агентом, который предлагаю клиентам. Каждая страница создана и отредактирована через чат, с автоматическими проверками, резервным копированием и мгновенной синхронизацией с живым сайтом. Это не демо — это один из примеров реального использования новых технологий, товар лицом. ### ИИ-агент для WordPress — запуск продукта Сегодня запускается ИИ-агент для WordPress — готовая система управления сайтом через чат: в браузере, телефоне, планшете или Telegram. Вы пишете обычным языком — «поменяй цвет кнопки», «добавь раздел с отзывами», «почини форму» — и агент выполняет. Это не «чат с ИИ», прикрученный к сайту. Под капотом — мощная обвязка, которая делает работу безошибочной и безопасной: каждая правка автоматически проверяется перед публикацией, держатся резервные копии, и если что-то пошло не так — изменения откатываются. Система ставится на сервер владельца сайта, данные полностью изолированы и никуда не уходят. Что меняется Правки занимают минуты вместо дней — без переписки с фрилансерами и счетов за «поменять цвет кнопки» Сайт не ломается после правок: автоматические проверки и резервные копии перед каждым изменением Не нужно разбираться в админке WordPress — всё делается через чат обычным языком Система запоминает устройство вашего сайта и со временем работает всё точнее Работу системы можно оценить прямо сейчас, не выходя из этой страницы: сайт, на котором вы читаете этот текст, полностью управляется тем же ИИ-агентом. Каждая страница и каждый пост созданы и отредактированы через чат — с автоматическими проверками, резервным копированием и мгновенной синхронизацией с живым сайтом. Это не демо, а реальное использование, товар лицом. Подробности и демо на реальном сайте — на странице ИИ-агент для WordPress. ### Pastukhov Agent — запуск продукта Сегодня Pastukhov Agent официально становится самостоятельным продуктом. Это веб-интерфейс поверх Claude Code, который превращает консольный инструмент в полноценное приложение: работа через браузер, телефон или Telegram, автоматические проверки, мгновенное исправление ошибок и глубокая русскоязычная локализация. Система появилась в июле прошлого года как внутренний инструмент и с тех пор прошла обкатку на более чем 50 проектах — от разработки программных продуктов до финансовой и маркетинговой аналитики. За это время она научилась тому, чего нет в «просто чате с ИИ»: сама проверяет результат своей работы, находит ошибки, исправляет их и перезапускает сборку — без участия человека. Ключевые возможности Любые ИИ-модели: Claude, GLM, Deepseek, MiniMax, Kimi, OpenAI, Qwen, локальные модели и OpenRouter — с лёгким переключением между ними Полная изоляция: всё работает на вашем сервере, self-hosted Автоматические сборки, линтинг и тестирование Автоматическая обратная связь по ошибкам и предупреждениям — с самостоятельным исправлением Упрощённый интерфейс для не-технических пользователей Доступ из браузера, телефона и через Telegram-бота Первый месяц продукт доступен бесплатно, после чего можно выбрать лицензию — персональную, сервисную или корпоративную. Лицензирование полностью автономно: ваша копия не зависит от моего сайта и продолжит работать при любых обстоятельствах, а данные можно в любой момент экспортировать. Подробности, документация и инструкции по установке — на странице продукта Pastukhov Agent.