Блог
Смерженные изменения Queen показывают действия по мере поступления, сохраняют компактный журнал и позволяют вводу человека запрашивать управление на сервере — с явными ограничениями передачи руля.

Подписи на изображении — на английском.
Слова агента «готово» — не то же самое, что возможность увидеть, что произошло. Браузер может оказаться на нужной странице после ошибочного клика, отказа в разрешении или нескольких бесполезных попыток. 21–22 сентября серия смерженных изменений связала Queen с браузером более осмысленно: человек и агент работают с одним окном, действия видны ещё до завершения ответа, а последние шаги остаются под изображением страницы.
PR #1088 добавил на доску Queen раздел BROWSER. Он обращается к существующему удалённому браузеру пользователя, а не запускает для панели ещё одну машину. Копия доски по адресу app.t27.ai/queen/ находится на том же origin, что и приложение; адрес окна просмотра обязан вести на этот же origin по пути /live/. В другом месте панель предлагает перейти в приложение, а не делает вид, будто авторизованное окно уже доступно.
Сам переход в раздел только читает состояние сессии. Чтобы запустить браузер, нужно нажать Open; предварительный просмотр на главной странице даже не запрашивает это состояние у брокера. Затем PR #1094 направил сообщения из этого раздела агенту пользователя, у которого есть браузерные инструменты. Вместе с вопросом передаются контекст вкладки и до восьми предыдущих реплик. Исправлена конкретная несостыковка: разговор рядом с браузером должен попадать к агенту, способному действовать именно в нём.
PR #1096 изменил чтение ответа. Вместо ожидания всего текста Queen обрабатывает события, разделённые переводами строк, по мере поступления. Вызов браузерного инструмента появляется в чате отдельным шагом; рядом постепенно растёт ответ. Это события инструментов и текст ответа, а не показ внутренних рассуждений модели. Само название инструмента ещё не доказывает, что задача завершилась успешно.
Для русскоязычного читателя здесь важна небольшая инженерная деталь: сетевой фрагмент может оборваться посередине кириллической буквы. Декодер сохраняет состояние между фрагментами, а неполное событие ждёт следующих байтов. Контрактный тест разбивает ответ на куски по семь байтов и проверяет две вещи: буквы остаются целыми, а шаг инструмента появляется до текста ответа. Он также проверяет, что промежуточные состояния передаются копиями: позднее обновление не должно незаметно переписывать то, что наблюдалось раньше.
Живое изображение показывает страницу сейчас. PR #1107 добавил другой взгляд: последние записанные действия под окном, с временем, глаголом и коротким фактом либо ошибкой. PR #1111 не дал повторным наблюдениям занять весь список. Панель читает до 24 записей и показывает не более шести свёрнутых строк. Обновление происходит каждые пять секунд, пока браузер работает и документ видим.
В строку со счётчиком сворачиваются только соседние записи с одинаковыми инструментом, исходом и отображаемым текстом. Сохраняется самое новое время. Ошибка между двумя успешными наблюдениями разрывает серию, а не исчезает внутри успокаивающего числа повторов. Это компактное представление недавней работы, а не полный архив и не утверждение, что каждое действие независимо проверено.
PR #1109 связал нажатия указателя и клавиатуры внутри окна доски с запросами к серверному механизму «руля». Публичный отчёт описывает право управления на десять минут: агент может наблюдать и спрашивать, но не должен кликать или вводить текст, пока управление у человека. Это поведение сервера приведено по отчёту PR, а не независимо продемонстрировано здесь. Открытый код панели отправляет запросы продления не чаще одного раза в тридцать секунд продолжающегося ввода и предоставляет кнопку запроса на возврат управления агенту.
Здесь остаётся существенное ограничение. Текущая панель меняет индикатор управления до подтверждения запроса и не показывает отказ запроса на передачу руля. Поэтому индикатор сам по себе не доказывает, что сервер принял передачу управления. Реализация также не устанавливает, что отменяется каждое уже начатое действие. Если вкладку закрыли, выданное право управления может сохраняться до истечения срока. Это границы, которые нужно проверять и улучшать, а не прятать за словом «безопасно».
PR #1104 также научил панель заново читать состояние сессии, когда её собственное окно сообщает о переподключении или зависшем соединении. Сообщения от другого окна или origin игнорируются. Это позволяет заменить застывшее изображение завершённой сессии соответствующим состоянием интерфейса, но не обещает, что сеть перестанет отказывать.
При подготовке статьи мы изучили публичные смерженные изменения и 23 сентября повторно запустили check:queen-browser: проверка прошла. В связанном запуске CI также зафиксирован успешный контракт. Эти проверки вызывают функции принятия решений и моделируют поток ответа; это не новая сквозная проверка браузера в авторизованной сессии. Практический результат конкретен: интерфейс раскрывает больше действий агента, не позволяет повторам вытеснять полезные события и позволяет вводу человека запрашивать управление на сервере. Оставшиеся ограничения названы рядом с результатом.
Поработаем вместе
Я аудирую RTL и строю независимые побитово точные модели, затем провожу результат через синтез и, когда это полезно, проверяю на плате Artix-7. Первый модуль проверки — бесплатно.