
AI-инструментарий для создания надежных браузерных автоматизаций
Libretto — это набор инструментов для создания надёжных веб-интеграций. Он предоставляет вашему агенту кодирования живой браузер и эффективный CLI с минимальным потреблением токенов, позволяющий:
Мы в Saffron Health создали Libretto, чтобы поддерживать наши браузерные интеграции с распространённым медицинским ПО. Мы открываем его исходный код, чтобы другим командам было проще сделать то же самое.
https://github.com/user-attachments/assets/9b9a0ab3-5133-4b20-b3be-459943349d18
# Добавьте Libretto в свой проект. Требуется Node.js и npm.
npm install libretto
# Первоначальная настройка: установка навыков и загрузка Chromium
npx libretto setup
# Проверка готовности рабочего пространства в любое время
npx libretto status
setup создаёт каталог .libretto/, устанавливает навыки агента и загружает Chromium, если не указан флаг --skip-browsers.
Libretto предназначен для использования в качестве навыка вашего агента кодирования. Вот несколько примеров запросов:
Используй навык Libretto. Зайди на LinkedIn и собери первые 10 постов: содержание, кто опубликовал, количество реакций, первые 25 комментариев и первые 25 репостов.
Ваш агент кодирования откроет окно для входа в LinkedIn, а затем автоматически начнёт исследование.
Я покажу тебе рабочий процесс в EHR eclinicalworks для получения первичного ID страховки пациента. Используй навык libretto, чтобы превратить его в скрипт Playwright, который принимает имя и дату рождения пациента и возвращает ID страховки. URL: ...
Libretto может считывать ваши действия в браузере, поэтому вы можете выполнить рабочий процесс, а затем попросить его восстановить его на основе ваших действий.
У нас есть браузерный скрипт в ./integration.ts, который автоматизирует переход на Hacker News и получает первые 10 постов. Преобразуй его в скрипты прямых сетевых запросов. Используй навык Libretto.
Libretto может считывать сетевые запросы из браузера, что позволяет обратно спроектировать API и создать скрипт, который напрямую вызывает эти запросы. Прямые вызовы API быстрее и надёжнее, чем автоматизация пользовательского интерфейса. Вы также можете попросить Libretto провести анализ безопасности, который анализирует запросы на предмет распространённых куки безопасности, чтобы понять, будет ли безопасным подход с сетевыми запросами.
У нас есть браузерный скрипт в ./integration.ts, который должен зайти на Availity и выполнить проверку права на получение услуги для пациента. Но при выполнении возникает ошибка сломанного селектора. Исправь его. Используй навык Libretto.
Агенты могут использовать Libretto для воспроизведения сбоя, приостановки рабочего процесса в любой точке, проверки живой страницы и исправления проблем — всё автономно.
Вы также можете использовать Libretto напрямую из командной строки. Все команды принимают --session <name> для указания конкретной сессии.
npx libretto open <url> # запустить браузер и открыть URL
npx libretto run ./integration.ts --headless # выполнить рабочий процесс и закрыть при успехе
npx libretto run ./integration.ts --headless --stay-open-on-success # оставить успешный запуск для проверки
npx libretto snapshot --session <name> # сделать снимок экрана и компактное дерево доступности
npx libretto exec "<code>" # выполнить Playwright TypeScript на открытой странице
npx libretto close # закрыть браузер
Сессии run можно проверять с помощью тех же команд, работающих через демон, что и сессии open. Успешные запуски по умолчанию закрывают браузер; укажите --stay-open-on-success, чтобы оставить браузер открытым для команд pages, snapshot и exec. Неудачные или приостановленные рабочие процессы оставляют браузер открытым, чтобы вы могли проверить точное состояние страницы перед исправлением или возобновлением.
Выполните npx libretto help для получения полного списка команд.
Всё состояние Libretto хранится в каталоге .libretto/ в корне вашего проекта. См. документацию по конфигурации для подробностей о файлах конфигурации, сессиях и профилях.
Libretto записывает телеметрию CLI, чтобы понимать использование CLI и помогать нам расставлять приоритеты в улучшениях. Каждая выполненная команда может отправлять только идентификатор установки, временную метку, имя события команды (например, libretto run), флаг ошибки, версию пакета, канал сборки (node_modules, source или unknown), а при входе в Libretto Cloud — идентификатор пользователя облака. Libretto не отправляет аргументы команд, URL, пути проектов, куки сессий, ключи API, сообщения об ошибках или их детали, а также электронные письма.
Идентификатор установки хранится в файле телеметрии ~/.libretto/telemetry.json. Реализация находится в packages/libretto/src/cli/core/telemetry.ts.
Чтобы отключить телеметрию, установите LIBRETTO_TELEMETRY_DISABLED=1, DO_NOT_TRACK=1, запустите с CI=1 или отредактируйте ~/.libretto/telemetry.json и установите "enabled": false.
Присоединяйтесь к нашему Discord, чтобы общаться с другими разработчиками, получать помощь и делиться тем, что вы создали:
Для более длинных обсуждений заходите на GitHub Discussions. Нашли ошибку? Откройте issue.
MIT License — свободно используйте в коммерческих проектах и проектах с открытым исходным кодом.
Для локальной разработки в этом репозитории:
pnpm i
pnpm build
pnpm type-check
pnpm test
Структура исходников:
packages/libretto/src/cli/ — команды CLIpackages/libretto/src/runtime/ — среда выполнения браузера (сеть, восстановление, загрузки)packages/libretto/src/shared/ — общие утилиты (конфигурация, LLM-клиент, логирование, состояние)packages/libretto/test/ — тестовые файлы (*.spec.ts)packages/libretto/README.template.md — источник истины для README репозитория и пакетаpackages/libretto/skills/libretto/ — источник истины для навыка LibrettoЗапускайте pnpm sync:mirrors после редактирования packages/libretto/README.template.md или всего, что находится в packages/libretto/skills/libretto/.
Чтобы проверить, что сгенерированные README, зеркала навыков и метаданные версии навыка синхронизированы без исправления, выполните pnpm check:mirrors. Для релиза выполните pnpm prepare-release.
[!NOTE] Это проект на ранней стадии активной разработки. API могут измениться до версии 1.0. Рекомендуем закреплять конкретные версии в продакшене.
Создано командой Saffron Health.