В мире разработки инструментов для работы с данными и искусственным интеллектом тишина часто нарушается не громкими заявлениями, а точными, технически выверенными обновлениями, которые меняют правила игры. 31 июля 2026 года Саймон Уиллисон (Simon Willison), один из самых влиятельных голосов в сообществе Python и LLM, выпустил версию 0.4a0 своего проекта datasette-agent. Это не просто очередная итерация с исправлением багов; это фундаментальный сдвиг в том, как языковые модели взаимодействуют с веб-интерфейсами и пользовательскими данными. Если вы когда-либо задумывались, как сделать анализ данных по-настоящему интерактивным, не выходя из контекста чата с ИИ, то это обновление — ваш ответ.
До сих пор большинство LLM-агентов, работающих с данными, ограничивались серверной частью. Они отправляли запросы к базе данных, получали JSON-ответы и генерировали текстовые сводки или статические графики. Но реальная жизнь пользователей — это браузер. Это интерактивные таблицы, фильтры, диаграммы, которые можно перетаскивать, и JavaScript-приложения, которые реагируют на действия пользователя. Новая возможность, представленная в datasette-agent, стирает границу между «серверным интеллектом» и «клиентским интерфейсом», позволяя агентам запускать код непосредственно в браузере пользователя.
В этой статье мы подробно разберем, что такое datasette-agent, как работает новый механизм await context.browser_task(), почему это важно для экосистемы MCP (Model Context Protocol) и как разработчики могут использовать эту функцию для создания мощных плагинов. Мы также рассмотрим контекст, в котором появилось это обновление, и его влияние на будущее агентного ПО.
01Что такое Datasette Agent и зачем он нужен?
Чтобы понять масштаб обновления, нужно вспомнить, что такое Datasette. Datasette — это открытый инструмент с открытым исходным кодом, созданный Саймоном Уиллисеном, который позволяет публиковать данные в виде интерактивного веб-интерфейса. Он работает поверх SQLite, но может подключаться к любым источникам данных. Datasette автоматически генерирует API, таблицы с возможностью сортировки и фильтрации, а также поддерживает плагины.
Datasette Agent — это плагин (или набор плагинов), который добавляет к Datasette возможности Large Language Models (LLM). Он позволяет пользователям задавать вопросы о данных на естественном языке, а ИИ-агент преобразует эти вопросы в SQL-запросы, выполняет их и возвращает результаты. Раньше этот процесс был линейным: вопрос → SQL → результат → текст. Пользователь видел только финальный ответ.
Однако в версии 0.4a0 подход меняется. Агент теперь не просто «отвечает», он может «действовать» в интерфейсе. Это становится возможным благодаря интеграции с браузером пользователя. Представьте себе сценарий: вы спрашиваете у агента: «Покажи мне тренд продаж за последний год, но выдели аномальные пики». Раньше агент мог бы сгенерировать статический график. Теперь он может запустить JavaScript-код, который динамически обновит график на вашей странице, добавит маркеры аномалий и даже интерактивно подсветит соответствующие строки в таблице. Это переход от «ответа на вопрос» к «совместному исследованию данных».
02Механизм browser_task(): как это работает технически
Сердцем нового обновления является асинхронная функция await context.browser_task(). Эта конструкция является частью API контекста агента. Давайте разберем, что она делает и почему она так важна.
В традиционных архитектурах LLM-агентов выполнение кода происходит на сервере. Это безопасно, но ограничено. Сервер не знает, какой именно браузер использует пользователь, какая версия JavaScript поддерживается, или какие библиотеки (например, D3.js, Chart.js или Plotly) уже загружены на странице. browser_task() решает эту проблему, предоставляя агенту безопасный канал связи с браузером клиента.
Когда агент вызывает await context.browser_task(), он передает туда фрагмент JavaScript-кода. Этот код выполняется в контексте страницы пользователя. Результат выполнения (или ошибка) возвращается обратно в агент. Это позволяет агентам:

- Читывать текущее состояние DOM (Document Object Model) страницы.
- Модифицировать элементы интерфейса (например, менять цвета, добавлять анимации).
- Запускать сложные вычисления на стороне клиента, используя мощь современного браузера.
- Взаимодействовать с внешними API, если это разрешено политикой безопасности браузера.
Это создает новую парадигму: агент становится «мозгом», который управляет «руками» (интерфейсом) пользователя. Он не просто говорит, что делать, он делает это за пользователя, но с его разрешения и в его среде.
03Безопасность и изоляция: почему это не опасно?
Любая возможность выполнения произвольного JavaScript-кода на странице пользователя вызывает вопросы о безопасности. Как можно быть уверенным, что агент не украдет данные или не сломает сайт? Саймон Уиллисон и команда datasette-agent подошли к этому вопросу с характерной для него тщательностью.
Механизм browser_task() работает в изолированной среде. Код, выполняемый агентом, не имеет прямого доступа к критически важным системным ресурсам браузера, таким как cookies других доменов или локальное хранилище, если это не явно разрешено. Кроме того, выполнение кода происходит только по запросу агента, а не автоматически. Это означает, что пользователь всегда видит, что происходит, если интерфейс правильно спроектирован.
Кроме того, поскольку Datasette часто используется для внутренних корпоративных данных или личных проектов, риск внешнего воздействия минимален. Однако для публичных сайтов разработчикам плагинов рекомендуется использовать строгие проверки входных данных и ограничивать объем выполняемого кода. В будущих версиях ожидается появление более детализированных политик безопасности, позволяющих администраторам настраивать, какие именно действия разрешены агентам.
browser_task() мощен, но требует ответственного использования. Всегда проверяйте, какой код выполняется, особенно в публичных средах.04Практические примеры: что могут делать плагины?
Давайте рассмотрим несколько конкретных сценариев, где новая функция browser_task() становится незаменимой. Эти примеры показывают, как разработчики плагинов могут использовать эту возможность для создания уникального пользовательского опыта.
1. Динамическая визуализация аномалий
Представьте, что вы анализируете логи сервера. Вы спрашиваете агента: «Найди всплески ошибок 500 за последние 24 часа». Агент выполняет SQL-запрос, находит временные интервалы с высокой частотой ошибок, а затем использует browser_task() для запуска скрипта, который:
- Находит элемент графика на странице.
- Добавляет красные маркеры в точках всплесков.
- Добавляет всплывающие подсказки (tooltips) с деталями ошибок при наведении.

Пользователь видит не просто текст «Обнаружено 3 всплеска», а интерактивный график, где он может кликнуть на маркер и увидеть, какие именно эндпоинты вызвали проблемы. Это экономит время и углубляет понимание данных.
2. Автоматическая фильтрация и сортировка
Если у вас есть большая таблица с тысячами строк, ручной поиск может быть утомительным. Агент может использовать browser_task() для применения сложных фильтров к таблице Datasette. Например, запрос «Покажи только тех клиентов, у которых средний чек выше 1000 рублей и они не покупали в прошлом месяце» может быть выполнен не только через SQL, но и через JavaScript, который мгновенно скроет ненужные строки в интерфейсе, оставив только релевантные данные. Это особенно полезно, когда SQL-запрос слишком сложен для прямой фильтрации или когда нужно комбинировать данные из нескольких источников.
3. Генерация отчетов в реальном времени
Агент может сгенерировать HTML-отчет и вставить его в текущую страницу. Например, после выполнения анализа, агент может создать красивую карточку с выводами, используя встроенные стили Datasette, и добавить ее в конец страницы. Это создает эффект «живого документа», где анализ и результаты существуют в одном месте.
05Интеграция с MCP и экосистемой
Обновление datasette-agent 0.4a0 не существует в вакууме. Оно является частью более широкого движения к стандартизации взаимодействия между LLM и внешними инструментами через Model Context Protocol (MCP). Саймон Уиллисон недавно писал о том, как stateless MCP (безопасный контекст без сохранения состояния) возвращает интерес к этому протоколу, вдохновляя такие проекты, как mcp-explorer и datasette-mcp.
Интеграция browser_task() с MCP означает, что агенты, работающие через MCP, теперь могут не только запрашивать данные, но и управлять интерфейсом. Это открывает путь к созданию универсальных агентов, которые могут работать с любыми данными, опубликованными через Datasette, независимо от того, где они находятся — на локальном компьютере или в облаке.
Для разработчиков это означает возможность создавать плагины, которые являются «агент-агностичными». То есть, один и тот же плагин может работать с Claude, GPT-4, или любой другой моделью, поддерживающей MCP, предоставляя им единый интерфейс для взаимодействия с браузером. Это снижает порог входа для создания сложных агентов и ускоряет развитие экосистемы.
06Как начать использовать datasette-agent 0.4a0?
Если вы хотите попробовать новые возможности, вот пошаговое руководство для разработчиков. Установка и настройка остаются простыми, но теперь требуют понимания основ JavaScript и работы с DOM.
Шаг 1: Установка
Убедитесь, что у вас установлен Python 3.10+ и Datasette. Затем установите последнюю альфа-версию агента:

pip install datasette-agent==0.4a0Шаг 2: Создание простого плагина
Создайте файл плагина, например, my_agent_plugin.py. В нем вы можете определить инструмент, который использует browser_task():
from datasette_agent import AgentPlugin
class MyPlugin(AgentPlugin):
name = "highlight_anomalies"
description = "Highlight anomalies in the current chart"
async def run(self, context, **kwargs):
# Получаем данные об аномалиях (упрощенно)
anomalies = await self.get_anomalies_from_db()
# Формируем JavaScript-код
js_code = f"""
// Найти все элементы с классом 'anomaly-point'
const points = document.querySelectorAll('.anomaly-point');
points.forEach(point => {{
point.style.fill = 'red';
point.style.strokeWidth = '3';
}});
"""
# Выполняем код в браузере
result = await context.browser_task(js_code)
return {"status": "success", "points_highlighted": len(anomalies)}Шаг 3: Активация плагина
Добавьте плагин в конфигурацию Datasette и перезапустите сервер. Теперь, когда вы зададите вопрос, соответствующий описанию инструмента, агент автоматически вызовет ваш код.
07Вызовы и ограничения текущей версии
Несмотря на потенциал, версия 0.4a0 является альфа-версией, и у нее есть свои ограничения. Во-первых, поддержка браузеров. Хотя современные браузеры (Chrome, Firefox, Safari, Edge) поддерживают необходимые API, старые версии или специфические браузеры (например, некоторые мобильные браузеры) могут вести себя непредсказуемо. Разработчикам плагинов рекомендуется тестировать код в нескольких средах.
Во-вторых, производительность. Выполнение JavaScript в браузере пользователя может быть медленным, если код сложный или если устройство пользователя слабое. Агент должен быть умным и избегать отправки тяжелых скриптов. В будущем ожидается появление механизмов кэширования и оптимизации кода.
В-третьих, отладка. Отладка кода, который выполняется в браузере пользователя, со стороны сервера, может быть сложной. Ошибки в JavaScript могут привести к тому, что интерфейс «зависнет» или поведет себя странно. Необходимы лучшие инструменты для логирования и мониторинга выполнения browser_task().
browser_task(). Это поможет избежать падения интерфейса при ошибках и позволит агенту корректно обработать исключение.08Что это значит на практике
Выход datasette-agent 0.4a0 — это не просто техническое достижение, это сигнал о том, что будущее анализа данных лежит в плоскости интерактивного, агентного взаимодействия. Мы переходим от эпохи, когда ИИ был «ответчиком на вопросы», к эпохе, когда ИИ становится «партнером по исследованию».
Для аналитиков данных это означает возможность быстрее находить инсайты, не тратя время на ручное создание графиков и фильтров. Для разработчиков — возможность создавать более богатые и интерактивные веб-приложения, используя силу LLM. Для бизнеса — возможность принимать решения на основе более глубокого и быстрого анализа данных.
Механизм browser_task() стирает грань между сервером и клиентом, делая анализ данных по-настоящему живым. И хотя это только начало, потенциал этой технологии огромен. Следите за обновлениями, экспериментируйте с плагинами и будьте готовы к тому, что ваш браузер скоро станет не просто окном в интернет, но и мощной средой для работы с данными под управлением ИИ.
В заключение, datasette-agent 0.4a0 — это шаг в правильном направлении. Он демонстрирует, как можно безопасно и эффективно использовать возможности современных браузеров для расширения функциональности LLM-агентов. Если вы работаете с данными и интересуетесь ИИ, это обновление обязательно стоит вашего внимания. Попробуйте его, создайте свой первый плагин и посмотрите, как меняется ваш рабочий процесс.
Источник: Simon Willison ↗
