ИИ-помощник
Содержание
- Что такое ИИ-помощник в ZennoPoster?
- Два режима работы: Assistant и Agent
- Как агент строит проекты: три сценария
- Лимиты ходов и протокол продолжения
- Контекст и память чата
- Подключение и выбор модели
- Известные ограничения
- Советы по формулировке задач
- Частые ошибки и FAQ
- Архитектура решения (для продвинутых)
- Подключение внешних AI-ассистентов (опционально)
- Развитие ИИ-помощника
1. Что такое ИИ-помощник в ZennoPoster?
ИИ-помощник – это встроенный в ProjectMaker чат-интерфейс, который позволяет:
- описать задачу словами → агент сам добавит кубики в проект;
- задавать вопросы о ZennoPoster, C#, автоматизации браузера;
- отлаживать и исправлять уже собранные проекты.
Под капотом помощник использует языковую модель (LLM) через Semantic Kernel (Microsoft) и два MCP-сервера:
| Сервер | Адрес | Что умеет |
|---|---|---|
| Project MCP | http://localhost:6107 | Читать структуру проекта, добавлять/редактировать кубики, управлять списками и переменными |
| Browser MCP | http://localhost:6108 | Управлять живым браузером внутри ProjectMaker: клики, заполнение форм, навигация, чтение DOM |
MCP-серверы запускаются автоматически вместе с ProjectMaker. Адреса портов нужны только если вы подключаете внешний AI-ассистент (см. раздел 11) – для встроенного чата ничего настраивать не нужно.
2. Два режима работы: Assistant и Agent
В интерфейсе ProjectMaker доступны два режима. Это принципиально разные вещи.
2.1 Assistant (Ассистент) – только чтение
Assistant работает в режиме read-only: он видит ваш проект и может всё про него рассказать, но ничего не меняет. Это безопасный режим для боевых сценариев – случайно сломать проект нельзя.
| Параметр | Значение |
|---|---|
| Доступ к проекту | ✅ Только чтение (структура, кубики, параметры) |
| Изменение проекта | ❌ Нет |
| Доступ к браузеру | ❌ Нет |
| Что умеет | Отвечать на вопросы, объяснять, анализировать, советовать |
Что умеет Assistant:
- Читать структуру проекта и объяснять, что делает выбранный кубик
- Разбирать ошибки последнего запуска и подсказывать причину
- Рассказывать о доступных параметрах кубиков
- Объяснять, как работает та или иная функция ZennoPoster
- Помогать с кодом C# и советовать по архитектуре автоматизации
Не ждите от Assistant:
- Что он добавит, изменит или удалит кубики в проекте
- Что он откроет или будет управлять браузером
- Что он самостоятельно построит автоматизацию
2.2 Agent (Агент) – полный доступ
Agent имеет полный доступ на чтение и запись. Он может самостоятельно:
- добавлять, изменять, перемещать и удалять кубики;
- выстраивать связи между кубиками (по успеху/ошибке), создавать и переименовывать группы;
- создавать и заполнять таблицы, списки, переменные, привязывать таблицы к Google Sheets;
- управлять запущенным браузером – вкладки, переход по URL, чтение DOM, клики, ввод текста, эмуляция событий;
- запускать отдельные кубики и читать их логи – чтобы пошагово отлаживать сценарий;
- писать код для кубиков OwnCode|CSharp – ассистент знает актуальный C# API проекта (
IZennoPosterProjectModel,Instanceи другие).
| Параметр | Значение |
|---|---|
| Инструменты (MCP) | ✅ Есть |
| Доступ к проекту | ✅ Читает и изменяет структуру |
| Доступ к браузеру | ✅ Управляет живым браузером |
| Что умеет | Автономно строить/редактировать проекты |
Используйте Agent, когда:
- Хотите, чтобы ИИ построил автоматизацию с нуля
- Нужно добавить новые шаги к существующему проекту
- Хотите отладить/исправить проект
- Нужно записать действия в браузере как кубики
Помните:
- Агент работает поэтапно – каждое действие (вызов инструмента) это один "ход"
- На один запрос есть лимит ходов (см. раздел 4)
- После завершения работы агента проверьте результат – иногда нужна корректировка
3. Как агент строит проекты: три сценария
Агент выбирает одну из трёх стратегий в зависимости от вашей задачи. Понимание этих стратегий поможет вам правильно формулировать запросы.
Сценарий A: RECORD – запись действий в браузере
Когда используется: задача связана с браузером – кликнуть, заполнить форму, авторизоваться, спарсить страницу.
Как работает:
- Агент включает режим записи (
SetRecording = true) - Управляет браузером через Browser MCP (реальные клики/навигация)
- Все действия автоматически превращаются в кубики в проекте
- По завершении выключает запись (
SetRecording = false)
Пример запроса:
"Авторизуйся на сайте example.com с логином user@mail.com и паролем 12345"
Что вы увидите в проекте: цепочку кубиков – навигация, ввод текста, клик по кнопке.
Важно знать:
- Браузер должен быть открыт в ProjectMaker
- Не трогайте браузер во время работы агента – он управляет им сам
- Если сайт требует CAPTCHA, агент остановится и попросит помощи
Сценарий B: BUILD – программная сборка логики
Когда используется: логика без браузера – работа с переменными, списками, условия, циклы, HTTP-запросы, C#-код.
Как работает:
- Агент ищет нужные типы кубиков (
FindActions) - Получает схему параметров кубика (
GetActionSchema) - Добавляет кубик с заполненными параметрами (
AddAction) - Настраивает связи между кубиками (
SetActionLinks)
Пример запроса:
"Добавь проверку: если переменная
statusравнаok, иди по ветке успех, иначе – по ветке ошибка"
Что вы увидите в проекте: кубики условий и переходов со связями.
Важно знать:
- BUILD медленнее RECORD – каждый кубик требует нескольких ходов
- Сложные проекты лучше строить частями (запрос → проверка → следующий запрос)
Сценарий C: EDIT – редактирование существующих кубиков
Когда используется: нужно исправить параметры уже существующего кубика.
Как работает:
- Агент получает детали кубика (
GetActionDetails) - Вносит изменения (
EditAction)
Пример запроса:
"Исправь в кубике с XPath-селектор на новый: //div[@class='new-class']"
Критически важно: перед редактированием агент обязан сначала прочитать текущее состояние кубика. Если агент пытается редактировать "вслепую" – остановите его и скажите "сначала прочитай параметры кубика".
Смешанные задачи (RECORD + BUILD)
Если задача требует и браузерных действий, и логики – агент сначала полностью завершает RECORD-часть, выключает запись, а потом переходит к BUILD. Не ждите, что обе части будут идти вперемешку – это сознательное архитектурное решение для надёжности.
4. Лимиты ходов и протокол продолжения
Что такое "ход"
Каждый вызов инструмента агентом (открыть браузер, добавить кубик, прочитать DOM и т.д.) – это один ход. Агент не может делать бесконечное количество ходов за один запрос.
Лимиты
| Ситуация | Поведение |
|---|---|
| Задача выполнена за лимит | Агент завершает и отчитывается |
| Задача не выполнена, лимит близко | Агент останавливается на логическом рубеже и просит продолжить |
| Бесконечный цикл (DOM без кубиков) | Агент получает предупреждение и должен изменить стратегию |
Как продолжать работу
Когда агент сообщает, что остановился – напишите:
продолжай
При получении этой команды агент автоматически:
- Читает текущую структуру проекта (
GetProjectStructure) - Узнаёт положение курсора (
GetCursor) - Проверяет статус записи (
GetRecording) - Продолжает с того места, где остановился
⚠ Не нужно повторять всё задание заново – агент восстанавливает контекст сам.
Признак зависания (loop-guard)
Если агент читает DOM страницы много раз подряд, но не добавляет кубики – это признак зависания. Агент должен либо включить запись и совершить действие, либо использовать уже увиденные селекторы, либо спросить вас. Если вы видите, что агент "читает страницу" по кругу без результата – напишите:
ты зависаешь, не добавляешь кубики. используй уже найденные селекторы или спроси меня
5. Контекст и память чата
Как работает память
ИИ-модель не имеет долговременной памяти. Она работает с "окном контекста" – определённым количеством токенов (слов/символов), которые помещаются в один запрос к модели.
| Аспект | Реальность |
|---|---|
| Помнит ли прошлые сессии | ❌ Нет – каждый новый чат с чистого листа |
| Помнит ли начало длинного диалога | ⚠ Частично – ранние сообщения могут "выпасть" из окна |
| Помнит ли структуру проекта | ✅ Да – через вызов GetProjectStructure каждый раз |
Практические последствия
-
Длинные диалоги деградируют. Если чат стал очень длинным (50+ сообщений), начните новый – агент не "запоминал" историю, он всё равно будет читать проект заново.
-
Не рассчитывайте на "ты же помнишь". Не говорите "сделай как раньше" без указания, что именно. Лучше повторить детали.
-
После разрыва сессии – начните новый чат. Агент не знает, что было до.
-
Структура проекта – из инструментов, не из памяти. Агент всегда читает актуальное состояние через MCP, а не "помнит" его из чата.
6. Подключение и выбор модели
Это обязательный первый шаг. Без подключения хотя бы одной модели ИИ-помощник работать не будет – ни в режиме Assistant, ни в режиме Agent. Модель и ключ доступа задаются один раз в настройках программы.
Шаг 1. Откройте настройки моделей
Главный экран ZennoPoster → Настройки (значок шестерёнки) → вкладка "ИИ" → блок "Настройки модулей ИИ сервисов".
Шаг 2. Введите ключ для нужного сервиса
Встроенные сервисы. "Из коробки" доступно несколько провайдеров. У каждого два поля – "Секретный ключ" и "Дополнительные параметры" (адрес API-сервера):
| Сервис | Адрес сервера ("Дополнительные параметры") |
|---|---|
| OpenAI | https://api.openai.com |
| Claude (Anthropic) | https://api.anthropic.com |
| DeepSeek | https://api.deepseek.com |
| Gemini (Google) | https://generativelanguage.googleapis.com |
Порядок настройки:
- В поле "Секретный ключ" вставьте свой API-ключ от выбранного сервиса (например,
sk-...для DeepSeek,sk-ant-...для Claude). - Поле "Дополнительные параметры" – адрес API-сервера. Менять нужно только если используете прокси или совместимый сторонний endpoint; для официальных сервисов оставьте значение по умолчанию.
- Перезапустите ZennoPoster – без перезапуска настройки не применятся (об этом предупреждает красная надпись вверху окна: "Для применения настроек необходимо перезапустить программу").
Где взять ключ: в личном кабинете соответствующего сервиса (OpenAI Platform, Anthropic Console, DeepSeek, Google AI Studio). Ключ привязан к вашему платному аккаунту.
Шаг 3. Какую модель выбрать
Мы протестировали разные модели на реальных задачах ZennoPoster. Кратко:
- DeepSeek – рекомендуем для большинства пользователей. Самый экономичный вариант: сотни запросов обходятся менее чем в несколько долларов. При этом результаты на задачах ZennoPoster очень хорошие. В среднем запрос на проект съедает 10-100 тысяч токенов, в зависимость от объема проекта.
- Claude – самая сильная модель (чище вывод, надёжнее с циклами, аккуратные остановки), но заметно дороже в использовании.
- Разница в качестве между ними небольшая – DeepSeek не сильно уступает Claude. Поэтому по соотношению "цена / качество" для повседневной работы выгоднее DeepSeek.
| Модель | Когда выбрать |
|---|---|
| DeepSeek | По умолчанию – лучший баланс цены и качества, очень дёшево на больших объёмах |
| Claude | Когда нужен максимум качества и стоимость не критична |
Вывод: начните с DeepSeek – для подавляющего большинства задач его достаточно, а расходы минимальны. Переходите на Claude только если упёрлись в качество на сложных проектах.
Добавление сервиса
Нажмите ссылку "Добавить свой сервис" – откроется окно "Добавление нового AI модуля":
| Поле | Что вписать |
|---|---|
| Название модуля | Произвольное имя, под которым сервис появится в списке |
| API | Формат API из выпадающего списка (например, DeepSeek) – выберите тот, с которым совместим ваш сервис |
| Token | Ключ доступа к сервису |
| Server | Адрес API-сервера (например, https://api.openai.com или адрес вашего локального сервера) |
Нажмите "Добавить" и перезапустите программу. После этого модуль появится в общем списке сервисов наравне со встроенными, и его можно будет выбрать для работы агента.
⚠ Безопасность ключей. API-ключ – это доступ к вашему платному аккаунту. Не показывайте его на скриншотах и в записях экрана, не пересылайте в чатах и не храните в открытом виде. Если ключ засветился – немедленно отзовите (revoke) его в кабинете провайдера и создайте новый.
7. Известные ограничения
7.1 Что агент делает плохо или нестабильно
| Ограничение | Пояснение | Обходной путь |
|---|---|---|
| CAPTCHA | Агент не решает CAPTCHA | Решите вручную, затем попросите агента продолжать |
| Сложные CSS/XPath | На нестандартных сайтах может взять неверный селектор | Проверяйте селекторы после сборки, поправьте вручную |
| Длинные проекты (100+ кубиков) | GetProjectStructure возвращает много данных – модель может потерять нить | Стройте проект частями, давайте задания по блокам |
| Редактирование "вслепую" | Если агент редактирует кубик без GetActionDetails – параметры могут слететь | Требуйте явно: "сначала прочитай кубик, потом редактируй" |
| Вложенные группы | Глубоко вложенные группы кубиков могут быть неверно интерпретированы | Упрощайте структуру, работайте с одним уровнем вложенности |
| Динамические сайты (SPA) | JS-приложения с динамической подгрузкой сложнее для записи | Дождитесь загрузки вручную, потом говорите агенту продолжать |
| "Думает вслух" (think-aloud) | На длинной RECORD-сессии модель (особенно DeepSeek) комментирует каждый шаг – "давайте посмотрим… DOM большой… попробую иначе" – вместо чистого результата | Не критично для итога, но мешает читать. Если мешает – выберите модель с более чистым выводом или попросите "выведи только финальную сводку кубиков" |
7.2 Что агент не может делать в принципе
- Запустить проект на исполнение – только строить структуру
- Обращаться к внешним API напрямую (без соответствующего кубика в проекте)
- Сохранять шаблоны между сессиями
- Видеть результаты выполнения уже запущенного задания в ZennoPoster (только структуру проекта)
- Работать с файлами на диске (только через переменные/списки проекта)
8. Советы по формулировке задач
✅ Хорошие запросы
Конкретные, с деталями:
"Зайди на https://example.com/login, введи логин
{login}в поле #username и пароль{password}в поле #password, кликни кнопку "Войти", дождись загрузки страницы профиля"
С указанием переменных:
"Результат парсинга сохрани в переменную
parsed_data"
С уточнением ветвления:
"Если элемент .success-msg найден – иди по ветке успех. Если элемент .error-msg – по ветке ошибка"
С разбивкой на блоки:
"Сначала сделай только авторизацию. Когда будет готово – скажи, я проверю и дам следующий блок"
❌ Плохие запросы
Слишком общие:
"Сделай автопостинг в соцсети"
Проблема: агент не знает что именно делать, на какой платформе, с какими данными.
Без контекста:
"Добавь проверку"
Проблема: какую проверку? Где? После какого кубика?
"Всё сразу":
"Сделай авторизацию, парсинг всех постов, обработку данных, запись в базу и отправку отчёта"
Проблема: агент скорее всего упрётся в лимит ходов на половине. Лучше – по одному блоку.
Без указания где вставить:
"Добавь кубик условия"
Агент не знает, куда именно. Укажите: "добавь после кубика с id X" или "в начало группы Y".
Шаблон хорошего запроса
[Что нужно сделать] + [Где именно] + [С какими данными/переменными] + [Условия ветвления] + [Что сохранить в результате]
Пример:
"После кубика авторизации добавь получение HTML-кода страницы профиля методом GET. Найди в нём значение тега
<span class="username">и сохрани в переменнуюcurrent_username. Если элемент не найден – иди по ветке ошибка"
9. Частые ошибки и FAQ
❓ Агент ничего не делает – просто отвечает текстом
Причина: вы в режиме Assistant, а не Agent.
Решение: переключитесь в режим Agent.
❓ Агент "завис" – читает DOM снова и снова
Причина: не может найти нужный элемент или не знает как действовать.
Решение: напишите:
Ты читаешь DOM по кругу без действий. Либо включи запись и кликни на элемент, либо скажи мне, что не можешь найти – я помогу
❓ Агент сказал "продолжай" но не помнит что делал
Причина: контекст переполнен или вы начали новый чат.
Решение: при новом чате дайте агенту контекст:
Ты собирал проект авторизации для example.com. Авторизация сделана (кубики 1-5). Нужно добавить парсинг – ты остановился перед этим шагом. Продолжай
❓ В кубике C# появились ``` в коде
Причина: агент вставил markdown-обёртку вместо чистого кода.
Решение: удалите строки ```csharp в начале и ``` в конце вручную. Или попросите агента:
Перезапиши код кубика C# с id=X – убери markdown-обёртки, оставь только чистый C#
❓ Агент добавил кубики не туда
Причина: курсор (SetCursor) стоял не там, где вы ожидали.
Решение: перед добавлением кубиков явно укажите позицию:
Добавь кубики после кубика с id=N, в группу "Авторизация"
❓ Агент "придумал" метод C# которого не существует
Причина: языковая модель галлюцинирует API, особенно специфичный для ZennoPoster.
Решение:
- Проверяйте C#-код перед запуском
- Используйте официальную документацию
- Спросите у агента: "Этот метод существует в ZennoPoster? Покажи пример из документации"
❓ Агент начал что-то делать, но сделал не то. Как откатить?
Проблема: ZennoPoster не имеет "отменить" для действий агента (Ctrl+Z).
Профилактика: перед сложной задачей сохраните копию проекта.
После ошибки: попросите агента удалить добавленные кубики по названию/id или удалите вручную.
❓ Могу ли я работать с браузером пока агент работает?
Ответ: нет. В режиме RECORD агент управляет браузером – параллельная работа приведёт к конфликту действий. Дождитесь завершения или остановите агента.
10. Архитектура решения (для продвинутых)
Схема компонентов
ProjectMaker (UI)
│
▼
Chat Interface
│
▼
Semantic Kernel ───────────────────────────────┐
(Microsoft, оркестратор) │
│ │
├──► LLM Model (выбирается пользователем) │
│ │
├──► Project MCP Server ◄─────────────────┘
│ │
│ ├── GetProjectStructure
│ ├── AddAction / EditAction
│ ├── GetActionDetails / GetActionSchema
│ ├── FindActions
│ ├── SetCursor / GetCursor
│ ├── SetRecording / GetRecording
│ ├── SetActionLinks
│ └── Variables / Lists / Groups
│
└──► Browser MCP Server
│
├── Navigate
├── Click / Type / Select
├── GetDomText / GetDomSnapshot
├── Screenshot
└── Scroll / Hover
Как проходит один "ход" агента
Пользователь пишет запрос
│
▼
Semantic Kernel отправляет запрос в LLM
(системный промпт + история + контекст проекта)
│
▼
LLM решает: ответить текстом ИЛИ вызвать инструмент
│
┌─────┴─────┐
│ │
Ответ Вызов инструмента
текстом (Project MCP / Browser MCP)
│ │
│ ▼
│ Инструмент выполняется
│ Результат возвращается в LLM
│ │
└─────┬─────┘
│
▼
LLM формирует следующее действие или финальный ответ
Режим записи (SetRecording)
Режим записи – ключевой механизм RECORD-сценария. Когда он включён:
- Каждое действие Browser MCP (клик, ввод, навигация) автоматически создаёт кубик в проекте
- Кубики добавляются последовательно в текущую позицию курсора
- Агент не вызывает
AddActionявно – браузер пишет за него
Когда выключен:
- Browser MCP действия выполняются, но не записываются в проект
- Используется для "чтения" состояния страницы без загрязнения проекта лишними кубиками
Курсор проекта (SetCursor / GetCursor)
Курсор определяет, куда будет вставлен следующий кубик. Состоит из двух параметров:
actionId– id кубика, после которого будет вставлен следующийgroupId– id группы, в которую будет вставлен кубик
Перед добавлением серии кубиков агент должен установить курсор в нужное место. Если этого не сделать – кубики могут появиться в неожиданном месте проекта.
11. Подключение внешних AI-ассистентов (опционально)
Встроенный чат в ProjectMaker работает "из коробки" – настраивать ничего не нужно. Но те же MCP-серверы (Project MCP и Browser MCP) можно подключить и к внешним AI-ассистентам, чтобы управлять проектом и браузером из своего редактора или терминала.
Это две разные вещи. Встроенный чат и внешний ассистент – независимые точки входа к одним и тем же MCP-серверам. Если вам хватает встроенного чата – этот раздел можно пропустить.
Общее требование: ProjectMaker должен быть запущен – MCP-серверы стартуют вместе с ним и слушают:
- BrowserMCP →
http://localhost:6108 - ProjectMCP →
http://localhost:6107
GitHub Copilot
- Убедитесь, что ProjectMaker запущен.
- Откройте папку профиля:
Win + R→%USERPROFILE%→ Enter. - Создайте файл
.mcp.json(например,C:\Users\YourName\.mcp.json) со следующим содержимым:
{
"servers": {
"BrowserMCP": { "type": "http", "url": "http://localhost:6108" },
"ProjectMCP": { "type": "http", "url": "http://localhost:6107" }
}
}
- Перезапустите Visual Studio (или перезагрузите расширение Copilot).
Claude Code (CLI)
claude mcp add BrowserMCP --transport http http://localhost:6108
claude mcp add ProjectMCP --transport http http://localhost:6107
claude mcp list # проверка
Удалить позже: claude mcp remove BrowserMCP и claude mcp remove ProjectMCP.
OpenAI Codex (CLI)
codex mcp add BrowserMCP --url http://localhost:6108
codex mcp add ProjectMCP --url http://localhost:6107
codex mcp list # проверка
12. Развитие ИИ-помощника
ИИ-помощник в ZennoPoster активно развивается. Мы постоянно дорабатываем его возможности, расширяем набор инструментов, повышаем стабильность работы агента и качество понимания задач. С развитием самих языковых моделей помощник тоже становится точнее и быстрее.
Это значит, что ограничения, описанные в разделе 7, со временем будут уменьшаться, а сценарии работы – расширяться.
На данный момент мы активно работаем над:
- добавлением лимитированной дефолтной бесплатной модели
- возможностью работать с несколькими чатами одновременно, а также переключением между ними с сохранением контекста и истории чата
- добавлением работы с openrouter
- другими улучшениями работы ИИ-помощника
Нам важно ваше мнение. Мы будем рады комментариям и предложениям пользователей: что работает хорошо, чего не хватает, какие ошибки возникают, какие задачи хотелось бы автоматизировать с помощью ИИ. Ваш реальный опыт напрямую влияет на то, в каком направлении мы развиваем помощника. Делитесь обратной связью – это помогает делать инструмент лучше.