Мой блог
AWS представила Pizza Bot: открытый почтовый ящик для фоновых ИИ-агентов
Входящие для асинхронных ИИ-задач
Компания AWS официально представила открытый проект Pizza Bot — специализированное self-hosted приложение, созданное для организации автономной работы фоновых ИИ-агентов. Главная идея сервиса заключается в том, чтобы перенести длительные и рутинные задачи нейросетей в фоновый режим, пока пользователь занимается другими делами, а полученные результаты и запросы на подтверждение действий собирать в привычном формате почтового ящика (Inbox).
Изначально этот инструмент разрабатывался для внутреннего использования внутри Amazon: ранние версии системы прошли обкатку более чем на 2000 сотрудников компании. Я отметил, что Pizza Bot успешно применялся для подготовки к деловым встречам, генерации черновиков электронных писем, суммаризации переписки в Slack, автоматического ведения записей в CRM и глубокого поиска информации. Теперь же архитектура сервиса полностью переработана и выложена в открытый доступ под свободной лицензией Apache 2.0.
Пользователям доступны готовые сборки десктопного клиента под операционные системы macOS, Windows и Linux, а также веб-интерфейс и терминальные клиенты, подключаемые к локальному или выделенному серверному бэкенду.
Основой пользовательского интерфейса Pizza Bot выступает концепция асинхронной почты, где весь поток процессов четко структурирован по трем основным категориям:
- «Все» (All) — полная история всех диалогов и запущенных потоков;
- «Непрочитанные» (Unread) — успешно завершенные фоновые задачи, готовые к ознакомлению и проверке;
- «Action» — процессы, приостановленные системой в ожидании ответа, уточнения или прямого решения со стороны пользователя.
Для удобства навигации потоки можно распределять по пользовательским папкам, а контроль над отдельными изолированными воркерами осуществляется через специальную панель активности (Activity panel). Запуск асинхронных задач поддерживается сразу в трех форматах: вручную через интерфейс, автоматически по расписанию cron или через внешние вебхуки (webhooks).
За планирование времени отвечает исключительно серверная часть. При восстановлении работы сервера после сбоя или простоя отработанные интервалы cron не запускаются повторно сотни раз: система выполняет всего один компенсирующий прогон (catch-up run). При этом все факты срабатывания триггеров фиксируются в надежном хранилище.
Архитектура выполнения и фоновый режим
С технической точки зрения Pizza Bot построен на базе фреймворков DeepAgents и LangGraph, обеспечивающих сохранение состояния при вычислениях (stateful execution). Сервер обработки запросов и хранения данных работает на базе API-сервера Hono. Десктопная версия на Electron и браузерный клиент используют единый пользовательский интерфейс на React, взаимодействуя с сервером по протоколам HTTP и Server-Sent Events (SSE).
Состояние каждого диалогового потока, включая паузы для ожидания пользовательских подтверждений, фиксируется через контрольные точки (checkpoints) LangGraph. Общая память между различными потоками и метаданные приложения хранятся отдельно в базах данных SQLite. При повторном подключении клиента к серверу буферизованные события воспроизводятся автоматически.
Я обратил особое внимание на важный нюанс работы бэкенда: простое закрытие окна диалога или отключение клиентского приложения не приводит к остановке процессов на работающем сервере. Однако завершение работы самого десктопного приложения останавливает встроенный в него локальный сервер, что ведет к прекращению активных задач. Хотя контрольные точки сохраняют структуру потока, текущий выполняемый шаг может быть потерян. Именно поэтому для полноценного непрерывного выполнения асинхронных задач при закрытом клиенте требуется запуск автономного, постоянно работающего бэкенда (always-on backend). Каждая директория данных SQLite при этом поддерживает ровно один процесс бэкенда.
Настройка навыков, интеграция MCP и правила подтверждения
Pizza Bot демонстрирует высокую гибкость в выборе языковых моделей. В настройках приложения (Settings > Providers) можно подключить решения от Amazon Bedrock, Anthropic, Google Gemini, OpenAI, OpenRouter, а также локально развернутые модели через Ollama.
Автономный агент имеет в своем распоряжении инструмент для работы с временными черновиками (scratch-files) и изолированную песочницу JavaScript, у которой полностью отсутствует доступ к сети и файловой системе хост-машины. При наличии подходящих модулей навыков агент способен делегировать задачи встроенным воркерам через команду task when ready. Файловый слой приложения отдельно поддерживает выдачу явных прав доступа к выбранным папкам и постоянную память.
Интеграция с внешними сервисами реализована через MCP-серверы (Model Context Protocol). Инструкции для воркера и границы доступных ему инструментов прописываются в файле SKILL.md. Навык становится доступным для вызова только тогда, когда все его заявленные зависимости присутствуют в системе. Проект полностью поддерживает существующие конфигурации формата .mcp.json от Claude Code, а плагины позволяют упаковывать навыки вместе с MCP-серверами.
Безопасность и контроль над автономией настраиваются разработчиками навыков с помощью параметров interruptOn и allowedDecisions. Если для конкретного инструмента задано правило остановки, перед его вызовом система запрашивает одобрение у человека. Пользователь может утвердить предлагаемое действие, отредактировать аргументы запроса или отклонить его выполнение.
Практический сценарий работы и интерактивный процесс
Чтобы наглядно продемонстрировать механики Pizza Bot, рассмотрю пример создания исследовательского отчета (research brief) с помощью кастомного навыка:
1. Подготовка и запуск
Пользователь формирует запрос на создание отчета. В коде кастомного навыка функция публикации publish_brief({title: "Research brief"}) ограничена правилом interruptOn.
2. Фоновое выполнение
После запуска процесса десктопное приложение можно закрыть. Если бэкенд развернут на постоянно активном сервере (always-on backend), сбор и обработка данных продолжатся в фоновом режиме без участия пользователя.
3. Пауза и уведомление
Агент доходит до этапа публикации готового отчета и автоматически приостанавливает выполнение, направляя уведомление в категорию «Action» входящих сообщений.
4. Проверка и утверждение
Открыв десктопный клиент, пользователь проверяет inbox. В зависимости от задач предложенные параметры публикации можно утвердить, изменить прямо в форме или полностью отклонить действие.
Ключевые особенности и итоги
Выпуск Pizza Bot под лицензией Apache 2.0 открывает отличные возможности для организации безопасной асинхронной работы с нейросетями. Подводя итог, я выделяю следующие сильные стороны этого решения:
- Удобная организация входящих: Почтовый формат с категориями All, Unread и Action, а также поддержкой триггеров по кнопке, cron и вебхукам.
- Надежное сохранение состояния: Использование DeepAgents и LangGraph позволяет корректно ставить процессы на паузу и сохранять прогресс при отключении клиентов.
- Мультипровайдерность: Простая настройка подключения к провайдерам Amazon Bedrock, Anthropic, Gemini, OpenAI, OpenRouter и Ollama.
- Безопасность и расширяемость: Поддержка протокола MCP, файловых инструкций SKILL.md и гибких политик подтверждения критических действий.
- Self-hosted инфраструктура: Возможность локального или серверного развертывания с жесткой привязкой базы SQLite к единому бэкенд-процессу.
Источник: www.marktechpost.com
