Начать разговор
IT-разработка27 августа 2026 г. · 21 мин чтения
Серия «Агентный веб» · часть 4 из 4

Агент внутри твоего продукта

Первые части серии были про то, как впустить чужого агента и что для этого менять в своём продукте. Эта — про обратную задачу: ты берёшь готовый кодагент и сажаешь его внутрь своего продукта, для своих пользователей. Материал даёт два подробных кейса — бизнес-система и графический редактор — и один очень отрезвляющий блок про безопасность.

Кейс: кодагент в послепродажном обслуживании

Маттиас Любкен в докладе «Piece of Pi: Embedding the OpenClaw Coding Agent in Your Product» разбирает реальное внедрение. Боль клиента бытовая: квоты на запчасти в послепродажном обслуживании делаются вручную и медленно.

Архитектура скопирована с самого OpenClaw: гейтвей, агент-контейнер на каждого клиента, сессия на каждый кейс. Контекст собирается из переиспользуемых AGENTS.md — общий бизнес, задача, специфика конкретного клиента и его скидки. Инструментов всего три: состояние кейса (CRM), поиск запчастей (ERP), черновик письма.

Три инструмента на одну продуктовую возможность — это позиция. Любкен настаивает: главное архитектурное решение здесь — набор инструментов, а рабочий процесс вторичен, и магия OpenClaw ровно в том, что у агента под рукой много мелких инструментов вместо заранее прописанного сценария.

Второе решение того же доклада — где живут гарантии.

СО СЦЕНЫ: ГАРДРЕЙЛ В КОДЕ, А НЕ В ПРОМПТЕ

  • Кто и где: Маттиас Любкен, доклад «Piece of Pi: Embedding the OpenClaw Coding Agent in Your Product», AI Native DevCon 2026
  • Что показали: LLM сама решает, какой инструмент позвать, — это неотчуждаемо. Но на before-tool-call и after-tool-result вешается своя логика. В кейсе с квотами после генерации черновика письма проверяется, что домен адресата принадлежит клиенту. Те же хуки используют для инъекции динамического контекста в результат инструмента.
  • Цифры: цифр не назвали
  • Что это меняет: Проверка перестаёт зависеть от того, послушалась модель инструкции или нет. Формулировка докладчика: «мы не полагаемся на инструкции — мы проверяем».

Третье — форма встраивания. Любкен показывает три уровня, которые переиспользуют одни и те же инструменты и контекст:

УровеньДля когоЧто видит пользователь
Стройный автоматический рабочий процессобычный пользовательрезультат, агента не видно
Полноценный чат со встроенным кодагентомопытный пользователь«Cowork внутри вашей системы»
Промежуточный слой в духе MCP UI / MCP appsмежду нимивместо сырого JSON от инструмента «поиск запчастей» рендерится карточка, где можно поправить количество

Третий уровень — самый интересный для продуктовой команды, потому что он не требует от пользователя ни доверия к автоматике, ни навыка работы с чатом.

Отдельно стоит забрать себе идею сессии как дерева событий. В Pi (агент Марио Зехнера, на котором всё построено) сессия — это JSONL-лог событий с древовидной структурой: можно откатиться из тупиковой ветки и попробовать другой путь, сохранив контекст; есть пользовательские сообщения, видимые или невидимые для модели. Раз на каждый кейс есть аудит-лог, на нём можно запускать других агентов, переигрывать шаги и вытаскивать повторяющиеся паттерны в skill, вокруг которого потом строятся evals. То есть лог из отладочного артефакта превращается в источник продуктовых улучшений.

Сам Pi при этом определяется через отсутствие: ни MCP-серверов, ни субагентов, ни всплывающих запросов разрешений, ни plan mode, ни встроенных todo, ни фонового bash. Всё это агент дописывает себе сам — «сделай расширение, которое спрашивает разрешение при пуше в main», и получаешь TypeScript-хук pre-push guard и markdown-описание. Реакция Любкена: «внезапно я поменял своего агента так, чтобы он работал ровно как мне нужно». Финальный тезис доклада — malleable software (со ссылкой на эссе Ink & Switch): софт должен быть экосистемой мелких инструментов, которые пользователь адаптирует с минимальным трением, вместо набора предопределённых сценариев. Метафора эссе — навороченная овощерезка против ножа.

Кейс: агенты на канвасе

Стив Руис, основатель и CEO tldraw, в докладе «Agents on the canvas with tldraw» проходит ту же дорогу с другого конца — от эксперимента к продукту.

Началось всё в ноябре 2023 с Make Real: первый доступ к GPT-4 with vision, нарисованный от руки макет превращается в работающий прототип. Ключевое открытие ждало на следующем шаге: поверх уже сгенерированного сайта можно рисовать и отправлять новый скриншот обратно, и аннотация становится частью промпта. Идею подхватили клиенты SDK: Google Stitch, Luma, Runway. Условия тогда: API давал около 30 запросов в день и был, по словам Руиза, «до смешного дорогим».

Дальше канвас показал себя как среда для промптов вообще. В tldraw computer каждая нода — маленький промпт со своей структурой, входы — то, что в неё указывает. Получается направленный граф. То, что тяжело в одномерном чате — ветвление, повторяемые многошаговые цепочки, динамическая сборка контекста, — на канвасе тривиально, а ремикс сводится к «поменяй вход и перезапусти».

Самая содержательная часть — про форму присутствия агента. Фирменная возможность канваса — коллаборация, отсюда вопрос «почему бы не посадить туда и агента». Сначала скопировали сайдбар Cursor: полный agent-loop с ревью и подтверждением или отклонением правок. Команде не понравилось: агент оказался «заперт в сайдбаре». Тогда сделали fairies: экземпляры того же харнесса живут прямо на канвасе как объекты — их видно, их можно таскать, с ними можно разговаривать, видно состояние (думает, ревьюит, работает). И агент создаёт те же примитивы, что и человек: «мы говорим на одном языке». Цифры: до 10 человек в одном документе, у каждого по 3 феи — около 30 агентов одновременно. Сами fairies бесплатны, моделью читатель обеспечивает себя сам (bring your own token).

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

Чего это стоило — Руиз рассказывает честно, и это самое полезное:

  • Демонстрация оркестрации провалилась прямо на сцене: агенты не распознали выигрыш и «победили все».
  • Крупные пространственные перемещения даются агенту хуже всего — передвинуть кота на стол он не может.
  • Позиционные правки не работают и в 2026-м: «поменяй кнопки местами» не отработало, смена цвета отработала. Это ровно то же ограничение, что было в Make Real.
  • Code mode быстрым не бывает. В десктоп-версии с локальным MCP-сервером вместо новых инструментов открыли агенту прямой доступ к editor API (editor.selectAll и подобное). Результат Руиз называет «безумным метапрограммированием поверх канваса»: агент делает интерактивными фигуры, которых нет в примитивах — высота круга влияет на рост человечка, кнопки начинают работать, — фактически внедряя скрипты в приложение. Его же оценка кода: «Python шаблонизирует JavaScript внутри bash-вызова — самый странный код, что я видел в жизни. Но он работает». И работает это медленно.

И рамка, которую стоит применять ко всем агентным демонстрациям, включая чужие. Руиз прямо говорит, что все его демонстрации «очень широкие и довольно бессмысленные». Клиенты SDK берут ту же идею, сужают её до конкретного типа пользователя и продукта, поднимают качество — и она начинает работать. Ценность появляется при сужении.

Сюда же примыкает наблюдение Трилофа из Adobe: раз софт стало очень легко строить, он становится расходником. Интерфейс, который живёт ровно одну презентацию и который не жалко: слайд с three.js в его докладе был именно таким одноразовым приложением, сгенерированным на лету. Его формулировка: «он не просто становится лёгким в постройке — он становится одноразовым».

Цена галлюцинаций

Всё вышеописанное означает, что твой продукт слушается агента. Дальше речь о том, во что это обходится, когда агент ошибается уверенно.

СО СЦЕНЫ: ПАКЕТ, КОТОРОГО НЕ БЫЛО, ПОСТАВИЛИ 30 000 РАЗ

  • Кто и где: Эндрю Оутс, distinguished engineer в Snyk, доклад «MCP Mayhem: Fun Ways AI Agents Write Bad Code»
  • Что показали: Модель регулярно придумывала несуществующий пакет huggingface-cli. Исследователь зарегистрировал это имя в реестре и стал смотреть, что будет.
  • Цифры: больше 30 000 установок за три месяца
  • Что это меняет: Агенты у разных людей раз за разом галлюцинировали одно и то же имя и ставили пакет. В нём могла быть кража локальных учётных данных или рабочая функциональность с удалённо эксплуатируемой уязвимостью. Галлюцинация перестала быть индивидуальной ошибкой и стала воспроизводимой точкой входа: чтобы атаковать, достаточно узнать, что придумывает модель, и занять это имя первым.

Оутс раскладывает риски на три класса, и третий — новый:

КлассПримерЧто под угрозой
Doom spiralагент удаляет код, чтобы «программа запускалась»продуктивность
Галлюцинации пакетовhuggingface-cli, 30 000 установокбезопасность сгенерированного кода
Опасное действие без понимания последствийагент Replit, стёрший боевую базу данных и красноречиво извинившийся постфактумбезопасность самого процесса разработки

Третий класс, настаивает Оутс, надо защищать отдельно от артефакта: проверка кода на выходе эту угрозу не закрывает. Его резюме: «не оставляйте их наедине с детьми или продовыми данными».

Из этого же доклада — тезис, который стоит держать при проектировании: среда агента не должна совпадать со средой разработчика. Сейчас мы даём агенту тот же доступ, что себе: те же CLI, тот же код, ту же документацию, тот же терминал. Оутс считает это неисследованной ошибкой — агенту нужен собственный, отличный и куда более ограниченный вид на мир. Это перекликается и с мотивацией Трилофа (браузер как контейнер), и с подходом Любкена к границам.

Границы Любкен проводит двумя уровнями, и оба живут в коде, вне текста промпта:

  1. Дизайн инструментов — что вообще возможно. Распространённая ошибка: написать в инструкциях «не используй этот тул», но выдать его. Дал инструмент — считай, что он будет вызван. Его формулировка: «не удивляйтесь, что агент удалил базу». В его кейсе граница проведена на уровне возможностей — система умеет только черновики писем и физически не умеет их отправлять.
  2. Хуки-валидаторы поверх результатов. Отвечая на вопрос из зала о безопасности malleable software («power-юзеры правят расширения — а что с безопасностью, по глупости или со зла?»), он говорит: свобода агента и пользователя всегда остаётся внутри заданных границ. LLM может вызывать инструменты как угодно, но множество последствий очерчено заранее.

Стоит понимать и то, чего эти границы не дают. Трилоф демонстрирует Slick Start, который находит запущенные Electron-приложения, перезапускает их в debug-режиме и внедряет свой стартовый код — так агент дистанционно управляет Slack, Teams и почтовым клиентом. Slack поддался тривиально. Тяжелее всех оказался Claude Desktop, где electron fuses убивают бинарный файл при попытке подключиться к debug-порту (обходится патчем бинарного файла и снятием fuses). Его реакция — «это же вайб-кодед приложение, как у них такие защиты?» — объяснилась просто: автор Electron работает над десктопным Claude. Вывод для нас прямой: «агент в браузере» остальную систему изолирует слабо.

И последнее — про слепые пятна. Роксана Фишер, CEO anyshift, в докладе «Your Infra is a Graph» показывает, что агент, не видящий живого состояния, уверенно генерирует фикцию. Просьба «сделай VPC peering в Terraform»: Copilot знает лучшие практики и строит динамические зависимости, но не знает, где лежит существующий main VPC, — и досоздаёт новый. Формально решение валидно, практически оно бесполезно. В живой демонстрации Cursor нашёл небезопасных IAM-пользователей, определённых в репозиториях, но пропустил temp-пользователя с administrator access, созданного кликами в консоли и нигде в коде не описанного. Всё, что заведено мимо кода, для кодового агента просто не существует. MCP-серверы (например, AWS) частично закрывают дыру и легко внедряются внутри команды, но дают фрагментированную картину без связей и упираются в rate limits при большом числе вызовов.

Коротко

  • Архитектура — это набор инструментов, рабочий процесс вторичен (Любкен). Три узких инструмента и контекст в AGENTS.md закрыли реальный бизнес-кейс.
  • Гарантии живут в хуках: before-tool-call и after-tool-result проверяют то, на что нельзя полагаться в инструкции.
  • Форма присутствия агента важнее его силы: сайдбар запирает агента (Руиз), объект на канвасе или карточка вместо сырого JSON — работают. И ценность появляется при сужении демонстрации.
  • Галлюцинация — это уже вектор атаки: выдуманный huggingface-cli набрал больше 30 000 установок за три месяца (Оутс, Snyk).
  • Дал инструмент — считай, что он будет вызван. Границы проводи возможностями системы (только черновики, отправлять нечем) и отдельной, более узкой средой для агента.

Что делать сейчас

Если свести восемь докладов к одному утверждению, оно будет таким: у твоего продукта появился второй пользователь, и он уже принимает решения о выборе стека. Билманн из Netlify измеряет это в сайтах — около 10 000 в день создаются непосредственно кодагентами против чуть больше тысячи в день в 2023-м, когда единственным каналом был custom GPT в GPT store. Фиртман измеряет в секундах и токенах: 5–10 секунд между скриншотом и кликом, за которые JavaScript успевает передвинуть кнопку, и весь цикл оплачивается заново.

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

Порядок действий

Чек-лист ниже отсортирован по принципу «сначала то, что окупается независимо от судьбы WebMCP». Первые два блока имеет смысл пройти всем. Третий — если у тебя формы и транзакции. Четвёртый — если ты сажаешь агента внутрь продукта.

БЛОК 1. БАЗА — окупается независимо от стандартов

  • Проверь, что видит агент без JS: чистый CSR означает «не могу прочитать эту страницу» для значительной части агентного трафика (Фиртман)
  • Разметка семантична? DOM после React — «сотня div'ов», смысла не несёт
  • Актуальная документация доставляется в контекст модели: llms.txt, cursor rules или MCP. Иначе агент строит по случайному устаревшему руководству (Билманн)
  • Сообщения об ошибках API технические: какие аргументы неверны и почему, без «что-то пошло не так», — тогда агент чинит вызов сам
  • Регистрация перед первым действием убрана или отложена (паттерн deploy-then-claim: живой URL и claim-ссылка)

БЛОК 2. ИЗМЕРЬ, ПРЕЖДЕ ЧЕМ ЧИНИТЬ — один вечер

  • Тест пяти пользователей на агенте: дай ему свой CLI и API, попроси сделать задачу, не подсказывай. Запиши, какие несуществующие возможности он придумал и какие эндпоинты понял неправильно (Билманн)
  • Добавь инструмент сбора отзывов и собери agent NPS — у Билманна на его MCP-сервере он равен 50
  • Посмотри в логи: сколько запросов к тебе уже идёт от агентов и в каких паттернах

БЛОК 3. WEBMCP — если у тебя есть формы и транзакции

  • Убедись, что сценарий использования есть: «нет форм на сайте — нет юзкейса» (контентным сайтам это по большей части бессмысленно)
  • Выбери ОДНУ высокоценную страницу или состояние
  • Выставь ТОЛЬКО диагностические инструменты: список ошибок сессии, «опиши текущий вид», run diagnostics — они ничего не меняют
  • Прогони вручную из Claude Code, Cursor или Codex через Chrome DevTools MCP и посмотри, какие инструменты агент выбирает и с какими аргументами
  • Только после этого — действующие инструменты. Правила: одна цель на инструмент, без пересечений; описание для модели; строгая валидация; маленький выход; регистрация по состоянию, не всё на загрузке
  • Покрой инструменты юнит-тестами — это новый публичный контракт
  • На платных и необратимых действиях подключай подтверждение через браузер: доверие к агенту его не заменяет
  • Подпишись на события tool-activated и tool-cancel: впервые можно узнать, что тобой управляет агент, и перестроить UI

БЛОК 4. АГЕНТ ВНУТРИ ПРОДУКТА

  • Проектируй набор инструментов, рабочий процесс вторичен; определения узкие и раскрывающие намерение (Любкен)
  • Границу проводи возможностями: если отправлять письма нельзя — пусть система физически умеет только черновики
  • Дал инструмент — считай, что он будет вызван. «Не используй его» в инструкции не работает
  • Гардрейлы — в хуках before-tool-call и after-tool-result; промпт проверок не заменяет
  • Секреты мимо контекста: агент оперирует именем токена, значение в контекст не попадает (приём Трилофа)
  • Среда агента отличается от твоей: более узкий доступ, отдельный вид на мир (Оутс)
  • Пин зависимостей и проверка существования пакетов — галлюцинация имени пакета стала воспроизводимым вектором атаки
  • Сессии логируй деревом событий: на аудит-логе потом строятся skills и evals

Что здесь молодое и переделают

Оговорка обязательная, и лучше её проговорить самому, чем услышать на ревью.

WebMCP пока эксперимент. Фиртман говорит об этом прямым текстом: спецификация обсуждается, что-то добавят, что-то выкинут. Предложен он командой Chrome и целится в их же agent mode. Ни OpenAI, несмотря на спонсорство OpenClaw, ни Anthropic — авторы самого MCP — в обсуждении в W3C пока не участвуют: для них веб-стандарты новая территория. Сегодня это Chrome-only под флагом, origin trial открылся в Chrome 149 — буквально на следующий день после доклада. В headless-браузерах не работает вовсе, в Puppeteer доступно под экспериментальным флагом. Имя API в двух выступлениях одного и того же докладчика разное — document.modelContext и navigator.modelContext, — и это неплохой индикатор стадии.

Слой авторизации не готов ни у кого. MCP, по оценке Билманна, выиграл слой стандарта, но «история с авторизацией там всё ещё сырая и мутная». Он же перечисляет открытые вопросы, на которые ни у кого нет ответа: как выставлять tool use через сам веб, а не через отдельные MCP-серверы; как дать более гранулярные паттерны доступа, чем позволяет текущий OAuth; как отдавать агентам платный контент так, чтобы это монетизировалось. Пока трение остаётся большим: «постоянно проходить OAuth десятком тулов, прежде чем агент вообще что-то сделает».

Индустрия одновременно открывается и закрывается. У Netlify AX-инструменты и блокировка AI-ботов едут параллельно, и блокировка — вторая по частоте просьба клиентов. Управлять ими можно по отдельности: дешёвый структурированный доступ и неконтролируемый скрейпинг — разные вещи. Но означает это и то, что единой отраслевой позиции «пускать или не пускать» сейчас нет, и твоё решение будет твоим.

Демонстрации врут в предсказуемую сторону. Руиз из tldraw сам называет свои демонстрации «очень широкими и довольно бессмысленными» — работать начинает то, что клиенты SDK сузили до конкретного пользователя и продукта. У него же на сцене провалилась оркестрация фей, а позиционные правки не работают с 2023 года. Читая любую агентную демонстрацию, включая эту серию, держи поправку на широту.

Одна мысль на вынос

Если из всего списка выбирать одно действие, я бы поставил на первое место тест пяти пользователей на агенте. Он бесплатный, занимает вечер и даёт то, чего не даст ни один чек-лист: список конкретных мест, где твой продукт непонятен новой персоне. После него станет очевидно, нужен ли тебе стандарт вообще — или сначала надо починить сообщения об ошибках и написать llms.txt.

А аргумент, ради которого стоит начинать раньше конкурентов, у Билманна сформулирован жёстче всего: через пару лет плохой AX обнулит хороший DX, потому что разработчик придёт к тебе через агента. Дифференциация пойдёт по вопросу «какой продукт предпочитает агент вашего пользователя», и отвечать на него будет агент.

Построим такой контур в вашей компании

coMind переводит команды и компании в AI-Native: первый контур за 30 дней, методика — в книгах серии «Путь компании к AI-Native».

Начать разговорНаши книги

Серия «Агентный веб»

← Часть 3Что делать со своим продуктом