10 июня 2026 года Simon Willison — создатель Datasette и один из самых внимательных практиков в экосистеме LLM — выпустил datasette-agent 0.2a0. Ключевое нововведение: инструменты теперь могут задавать пользователю вопросы прямо в процессе выполнения. Не до, не после — а в середине агентного цикла. Плюс новый встроенный инструмент save_query, который сохраняет SQL только с явного одобрения человека.
Контекст
Datasette — опенсорсный инструмент для исследования SQLite-баз данных. Willison строит его годами, последовательно добавляя AI-возможности. datasette-agent — это слой, который позволяет LLM писать и исполнять SQL-запросы внутри Datasette через инструментальный вызов.
Новый релиз построен на LLM-библиотеке, которую Willison разрабатывает параллельно. Для реализации ask_user() он использовал Claude Fable 5 — модель, представленную 9 июня 2026 года. Тот факт, что ключевая архитектурная фича появилась буквально на следующий день после релиза новой модели, говорит о темпе разработки в этой экосистеме.
Datasette-agent не претендует на роль корпоративного продукта — это исследовательский проект, опережающий большинство production-систем в части паттернов. Willison регулярно формулирует идеи, которые потом массово копирует индустрия.
Аналитика
Паттерн ask_user() решает одну из главных проблем агентных систем: агент либо действует автономно и ошибается, либо требует полной спецификации задачи заранее. Третий путь — suspension-and-resume: агент приостанавливается, рендерит форму с вопросом в чат-интерфейсе, ждёт ответа и продолжает. Разговор при этом переживает перезапуск сервера, потому что хранится в базе данных. Это не просто удобство — это архитектурное решение для долгоживущих задач.
Второй важный момент — идемпотентность через replay. Инструмент перезапускается с начала, но сохранённые ответы воспроизводятся автоматически. Это значит: вызывай ask_user() до любых side effects, не после. Паттерн знаком разработчикам, которые работали с event sourcing или sagas, — но здесь он применён к AI-агентам.
save_query — отдельная история. Агент показывает полный SQL, предложенное имя, базу и видимость. Ничего не сохраняется без нажатия «Да». Это образцовая реализация human-in-the-loop для деструктивных операций: агент предлагает, человек решает. Именно так должны работать агенты в production, где у них есть права на запись.
Кейсы применения в бизнесе
B2B-SaaS стартап: если у вас есть аналитический AI-агент, который строит отчёты по запросу клиента, — добавьте ask_user() перед запуском тяжёлых запросов. Агент уточняет диапазон дат, фильтры, метрики — и только потом идёт в базу. Итог: меньше «нет, я имел в виду другое», меньше холостых запросов, выше удовлетворённость.
Корпорация с legacy-данными: AI-агент анализирует несколько БД с непрозрачной схемой. Перед любым обновлением данных — save_query-подобный паттерн: агент показывает SQL оператору, тот подтверждает. Аудит-трейл автоматически формируется из истории вопросов и ответов. Compliance-требования закрываются без отдельной системы логирования.
SMB и локальный бизнес в КР/СНГ: небольшая компания с таблицами в SQLite или локальной PostgreSQL хочет давать сотрудникам возможность задавать вопросы к данным на русском языке. Агент с ask_user() может уточнять неоднозначности («за этот месяц — календарный или последние 30 дней?») прямо в Telegram-боте, не требуя технической грамотности от пользователя.
Кейсы в личной жизни
Разработчик: строишь локального агента для анализа собственных данных — логов, метрик, истории коммитов в SQLite. ask_user() позволяет сделать агента интерактивным без написания полноценного UI: вопрос рендерится как форма, ответ сохраняется, агент продолжает. Это проще, чем городить Streamlit-интерфейс с нуля.
Контент-мейкер: ведёшь базу данных публикаций, охватов, тегов в SQLite. Агент помогает находить паттерны («какие темы давали лучший охват в Q1?»), но прежде чем запустить анализ — спрашивает, какие каналы включить. Не нужно каждый раз писать точный промпт — агент сам уточняет.
Студент или исследователь: датасет с опросами или экспериментальными данными. Агент строит SQL-запросы под задачи анализа, save_query позволяет накапливать библиотеку проверенных запросов с именами и описаниями. Через месяц — готовый репозиторий аналитики, а не каша в истории чата.
Как применить сегодня
- Установи
datasette-agent 0.2a0и изучи реализацию ToolContext иask_user()— это референсная реализация паттерна human-in-the-loop для Python-агентов. - Если строишь собственного агента, реши какие шаги требуют подтверждения человека — и добавь ask_user() до любых операций с записью. Это правило, а не рекомендация.
- Посмотри на persistence-слой: как suspended conversations хранятся в БД и воспроизводятся. Это применимо к любому агентному фреймворку — LangGraph, CrewAI, собственная реализация.
- Для SQL-агентов внедри паттерн show-before-save: агент всегда показывает финальный запрос перед исполнением деструктивной операции (INSERT, UPDATE, DELETE).
- Следи за LLM-библиотекой Willison — именно там появляются паттерны, которые потом становятся стандартом.