Перейти к содержанию

ADR 0035: Встроенный браузер в MFD, внешние веб-LLM и граница с MCP

Статус: Proposed (намерение и инварианты доверия; детали WebView и UX — по дорожной карте).
Дата: 2026-04-11

Связанные ADR

ADR Роль
0021 MFD как вторичный якорь; встроенный браузер в роли «навигационного» слоя
0016 внешний агент / мосты к другим средам
0008 MCP в IDE — контракт и границы процесса
0017 мультиоконность, MfdHostWindow / вторичные поверхности
0020 слои видимости рассуждения агента; честные ограничения провайдеров

Контекст

В 0021 зона MFD уже описана как место для вторичных инструментов, в том числе встроенного браузера — чтобы не уводить взгляд из «кокпита» во внешнее окно без необходимости. На практике удобно держать там и веб-интерфейсы сторонних LLM (например режим ИИ в поисковике): быстрый кросс-чек, документация, «второе мнение» рядом с кодом.

Одновременно в IDE остаётся контур MCP (0008) и встроенный/внешний агент (0016): доступ к инструментам, файлам, процессам — у нативного хоста с явной моделью доверия. Веб-страница внутри встроенного браузера живёт в песочнице origin’а провайдера: у неё нет того же API, что у процесса Cascade, и нет прямого подключения к MCP-серверам на машине пользователя.

Без явной фиксации границ легко смешать ожидания: «веб-Ассистент в MFD видит мой файл / репозиторий так же, как агент в Cursor». Это не следует из размещения вкладки в IDE и не должно подразумеваться по умолчанию.

Решение

  1. Встроенный браузер в MFD — намеренная поверхность. Реализация ориентируется на WebView2 (или эквивалент на целевой платформе) внутри региона MFD / вторичного окна по политике 0017 и пресета (0010): не четвёртый семантический якорь в смысле 0021, а вторичный инструмент в зоне MFD. Закладки, стартовый URL (в т.ч. прямая ссылка на веб-режим LLM) — предмет конфигурации продукта, не этого ADR.

  1. Инвариант доверия: веб ≠ нативный MCP-клиент. Содержимое произвольного HTTPS-origin во встроенном WebView не получает автоматического доступа к MCP, к файлам workspace, к секретам из ai-keys.toml (0028) и к прочим привилегиям процесса IDE. Это соответствует модели безопасности браузера и снимает класс атак «страница в MFD = расширенные права».

  1. Контекст «лобового» / редактора во внешний веб-LLM — только явно. Любая передача текста файла, фрагмента кода, пути или метаданных workspace из IDE в сторонний веб-сервис — осознанное действие пользователя (выделение, копирование, будущая кнопка «поделиться…» с подтверждением) и/или отдельная политика продукта с учётом приватности репозитория. Не подразумевается неявная синхронизация «как у встроенного агента с MCP».

  1. Гибридный рабочий процесс (канон для v1). Стыковка «веб-второе мнение» и «нативный агент с инструментами» — через человека-оператора и простые механизмы: буфер обмена, явная вставка, ссылки, при необходимости — мосты в духе 0016 (внешний клиент, deep link), без обязательной автоматизации.

  1. «Подружить веб с MCP» — отдельная архитектурная линия. Варианты вроде расширения-браузера, локального шлюза с согласием пользователя, туннеля к API — не часть baseline этого ADR; требуют собственного анализа угроз (XSS, подмена origin, утечки токенов), модели согласия и, при необходимости, отдельного ADR или приложения к 0008. До принятия такого решения продукт не обещает веб-странице в MFD доступ к MCP. Конкретное направление «встроенный веб-портал + Host Object → IdeCommands» — 0108 (Accepted).

Последствия

  • UX MFD может включать предсказуемый слой «документация и внешние LLM в одном кокпите» без смешения с привилегиями нативного агента.
  • Документация и онбординг должны явно различать: встроенный агент / MCP vs веб-интерфейс третьей стороны в WebView.
  • Любая будущая интеграция веб↔локальные инструменты оценивается отдельно и не ломает инварианты п. 2–3 без нового решения.

Отклонённые / вне scope

  • Полная унификация «веб-LLM в MFD» и «IDE-агент с MCP» в одну неразличимую сущность — отклонена как нарушающая границу доверия и усложняющая безопасность без отдельного проектирования.
  • Сертификация WebView или политики конкретного облачного провайдера — вне этого ADR.