Агент внутри твоего продукта
Первые части серии были про то, как впустить чужого агента и что для этого менять в своём продукте. Эта — про обратную задачу: ты берёшь готовый кодагент и сажаешь его внутрь своего продукта, для своих пользователей. Материал даёт два подробных кейса — бизнес-система и графический редактор — и один очень отрезвляющий блок про безопасность.
Кейс: кодагент в послепродажном обслуживании
Маттиас Любкен в докладе «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, тот же код, ту же документацию, тот же терминал. Оутс считает это неисследованной ошибкой — агенту нужен собственный, отличный и куда более ограниченный вид на мир. Это перекликается и с мотивацией Трилофа (браузер как контейнер), и с подходом Любкена к границам.
Границы Любкен проводит двумя уровнями, и оба живут в коде, вне текста промпта:
- Дизайн инструментов — что вообще возможно. Распространённая ошибка: написать в инструкциях «не используй этот тул», но выдать его. Дал инструмент — считай, что он будет вызван. Его формулировка: «не удивляйтесь, что агент удалил базу». В его кейсе граница проведена на уровне возможностей — система умеет только черновики писем и физически не умеет их отправлять.
- Хуки-валидаторы поверх результатов. Отвечая на вопрос из зала о безопасности 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».