
На этой неделе в рамках Fuchsia Friday мы рассмотрим нашу самую запрашиваемую тему: Maxwell, умный центр Fuchsia.
Maxwell управляет интеллектом Fuchsia. Этот интеллект на самом деле представляет собой не одну большую программу, а, в истинном стиле Fuchsia, собран из множества небольших программ. Эти программы, называемые агентами (мы уже немного говорили об агентах), можно просто рассматривать как фоновые задачи. Однако я нахожу название «агент» очень подходящим: агенты работают в фоновом режиме (секретный агент!), собирают информацию (как любой хороший шпион) и отправляют ее на базу.
Чтобы лучше понять, как работают агенты и что они делают, давайте рассмотрим трех агентов, которые работают совместно без прямого взаимодействия. Первый агент называется maxwell_btl, что является сокращением от «basic text listener» (базовый прослушиватель текста). В настоящее время он просто сканирует текст на наличие адресов электронной почты и создает сущность электронной почты (хотите освежить информацию о сущностях?). Затем эта сущность помещается в контекст.
Контекст, проще говоря, — это способ Maxwell узнать, что вы видите и делаете в данный момент, а Maxwell знает только то, что ему сообщают его агенты. Контекст разделен на различные темы, которые помогают агентам слушать только изменения контекста, имеющие к ним отношение. Например, агент, связанный с музыкой, захочет знать только об изменениях, связанных с музыкой, а не об адресах электронной почты.
Когда контекст обновляется, все агенты уведомляются об изменении и реагируют, если это необходимо. В данном случае пока ничего не происходит. Следующий агент для рассмотрения — maxwell_entity_selector. Этот агент отслеживает изменения в выделении текста и проверяет, содержит ли выделенный в данный момент текст сущность. Если бы я выделил адрес электронной почты, агент проверил бы контекст на наличие сущностей в этом выделении и поместил бы сущность электронной почты в контекст под другой темой.
Как только это произойдет, третий агент, maxwell_proposal_maker, который отслеживает только тему выделенных сущностей, увидит изменения контекста и сделает предложение открыть Gmail и составить письмо на этот адрес.
Я намеревался показать видео этого процесса в действии, но недавние изменения в коде сломали этот пример. Когда он заработает, я обновлю этот пост видео. Если что-то и демонстрирует этот случай, так это раннюю стадию разработки, на которой все еще находится Fuchsia.
Сейчас Maxwell использует небольшую группу других агентов:
- Module_suggester отвечает за поиск и результаты, которые вы видите на главном экране Armadillo. Это делается очень просто с помощью предварительно загруженных результатов для определенных поисковых запросов. Вероятно, это будет заменено или значительно расширено в будущем.
- Eddystone_agent — еще один простой пример агента, демонстрирующий, как прослушивать Bluetooth-маячок Eddystone и предлагать открыть связанный URL.

Агент Eddystone в действии – Изображение: @g123k
- Usage_log отслеживает открытие модулей (модули — это небольшие части больших приложений) и отправляет анонимизированные отчеты в программное обеспечение для метрик Cobalt Fuchsia. Любые сотрудники Google, просматривавшие журналы Cobalt несколько недель назад, могли быть озадачены открытием незнакомого модуля, поскольку мы недавно создали собственное приложение Flutter и запустили его на Fuchsia.
До сих пор большинство этих агентов выглядят как заполнители или просто примеры того, как кодировать более крупные и сложные агенты. Ситуация меняется, когда мы доходим до Kronk. Kronk в настоящее время является единственным агентом Fuchsia с голосовыми ответами. Как мы узнали несколько недель назад, Kronk — это кодовое название Google Assistant для команды Fuchsia. На данный момент Kronk является одним из немногих компонентов Fuchsia, который не является открытым исходным кодом. Это, конечно, имеет смысл, поскольку он, безусловно, содержит код, который Google хочет сохранить как собственность. Судя по полученной нами копии, кажется, что для Assistant все идет как обычно.
Это лишь агенты, которые включены непосредственно в систему Maxwell. Агенты могут быть включены в любое устанавливаемое приложение, но все агенты отчитываются перед Maxwell. Поскольку Maxwell находится в центре, ни один агент не нуждается в прямом общении друг с другом или даже в знании друг о друге. Spotify-плеер мог бы сообщать агенту, какую песню вы слушаете, а другой агент мог бы предложить вам текст этой песни, не требуя прямого общения со Spotify.
О, и на случай, если вы задаетесь вопросом (как и я), имя Maxwell, по-видимому, происходит от секретного агента Максвелла Смарта из телешоу 60-х годов Get Smart. Хотя это не совсем отсылка, которую я могу полностью оценить, моему отцу это показалось забавным, по крайней мере.
Если у вас есть вопросы о том, как будет работать Fuchsia, задавайте их в комментариях или в Twitter. Возможно, вы найдете ответы в будущей статье!
Fuchsia Friday — это еженедельная серия, в которой мы погружаемся в исходный код Fuchsia и интерпретируем, что текущее состояние ОС может означать для финального продукта. Вся информация в этой статье является спекуляцией, основанной на доступной информации, и может быть изменена.
Читайте больше в нашей серии Fuchsia Friday:
- Fuchsia Friday: Система, созданная для «мгновенных приложений» на стероидах
- Fuchsia Friday: Объяснение структуры модульной ОС Google, подобной Lego
- Fuchsia Friday: Как Flutter прокладывает путь для Fuchsia (и наше первое приложение Fuchsia!)
- Fuchsia Friday: Amber поддерживает Fuchsia в актуальном состоянии и безопасности
- Fuchsia Friday: Четыре уровня Fuchsia
Посетите 9to5Google на YouTube для получения дополнительных новостей: