Dia - это новый веб-браузер, разработанный компанией The Browser Company, ранее известной по продукту Arc. В отличие от своего предшественника(который они закрыли), Dia ориентирован на максимально простое и привычное взаимодействие, но с интеграцией AI. Кстати данный браузер вы не установите на мак на процессоре Intel, только на M чипы. И браузер не работает из РФ. Вы просто не залогинились в аккаунт.

Для проверки откуда вы его запускаете браузер использует сервис LaunchDarkly, который и дает комманду на установку флагов в браузере и проверяет запуск.

Я решил немного потрогать их алфа версию и отпишусь по особенностям и что нашел.

На чем основан? Link to heading

Кратко:Chromium Engine Version 138.0.7204.101

Подсмотрим в /Applications/Dia.app/Contents/Info.plist

Version: 0.37.1

SDK Used: macOS 15.2 (macOS Sequoia beta)

Minimum OS: macOS 14.0 (Sonoma)

Build Number: 65361

Также обновления с адреса https://releases.diabrowser.com/BoostBrowser-updates.xml проверяются каждые 8 часов.

AI Ассистент Link to heading

  • Встроенный ИИ-ассистент: Чат-бот интегрирован прямо в адресную строку

Из РФ ассистент не работает корректно, мы получаем ошибку:

authenticationFailed(AuthClient.AccountServiceError
(code: AuthClient.AccountServiceErrorCode.restrictedCountry, message: nil))
  • AI ассисент на странице

Ассистенту можно задать вопрос про контент на странице:

  • Выбирать несколько элементов или несколько вкладок и уточнить необходимые вам детали, я вот попросил выбрать лучший роутер и сравнить их:

Что под копотом? Link to heading

Расширения и фреемворки Link to heading

Посмотрим какие расширения у нас стоят из коробки в браузере. Link to heading

Открываем страницу : chrome://extensions-internals, которая нас редектит на dia://extensions-internals/ и подсматриваем в json. Что у нас есть:

РасширениеНазначение
Web StoreАналог Chrome Web Store, адаптирован под Arc/Dia
Arc internal extensionВнутренняя логика браузера
Chromium PDF ViewerПросмотр PDF
Google HangoutsИнтеграция с Google Hangouts

Посмотрим фреемворки приложении: Link to heading

Переходим в папку:

cd /Applications/Dia.app/Contents/Frameworks

Смотрим что у нас есть:

ФреймворкНазначение
ArcCore.frameworkОсновное ядро браузера Arc - управление интерфейсом, вкладками, Spaces и т.д.
GRDB.frameworkЛокальное хранение данных через SQLite (история, закладки, настройки и т.п.).
libAIInfra.dylibВнутренняя библиотека.
libAIInfraTestBindings.dylibСудя по названию для отладки и тестирования либы libAIInfra.
Lottie.frameworkАнимаций в интерфейсе (например, при переключении между вкладками).
Sentry.frameworkСбор краш-репортов
Sparkle.frameworkАвтоматическое обновление приложения на macOS.

Содержимое ./Resources/ Link to heading

Посмотрим что у нас по ресурсам? Что интересно бандлы до сих пор имеют преффиксы в названиях сторого творения компании ARC..

Есть такие бандлы как:

  • ADK_ADK.bundle и ARCClients_BlockListClient.bundle AdBlock встренный из интересного, есть вот такая структура:
      "id": "ua",
      "display_name": "RU AdList",
      "type": "regional",

B большой список адресов. Я их себе скачал, засуну в свой AdGuard DNS

  • ARCClients_AppRestartClient.bundle Перезапускалка браузера. Внутри короткий sh скипт, который мониторит запуск браузера

  • AIInfra_LocalClassification.bundle Модуль отвечающий за локальную классификацию данных с помощью искусственного интеллекта. У нас лежит файл vocab.txt в котором у нас словарь токенизатора возможно для DistilBERT. Интересно что есть слова: russia,russian

  • swift-transformers_Hub.bundle Реализация Hugging Face Transformers на Swift.Для работы с NLP-моделями локально.

  • OnDeviceLoRAadaptors.bundle LoRA - метод дообучения LLM,т.е есть возможность адаптировать модели под конкретные задачи без полного переобучения В директории OnDeviceLoRAadaptors.bundle конфигурационный файл модели DistilBERT - config.json:

{
  "_name_or_path": "distilbert-base-uncased",
  "activation": "gelu",
  "architectures": [
    "DistilBertForSequenceClassification"
  ],
  "attention_dropout": 0.1,
  "dim": 768,
  "dropout": 0.1,
  "hidden_dim": 3072,
  "id2label": {
    "0": "LABEL_0",
    "1": "LABEL_1",
    "2": "LABEL_2"
  },
  "initializer_range": 0.02,
  "label2id": {
    "LABEL_0": 0,
    "LABEL_1": 1,
    "LABEL_2": 2
  },
  "max_position_embeddings": 512,
  "model_type": "distilbert",
  "n_heads": 12,
  "n_layers": 6,
  "pad_token_id": 0,
  "qa_dropout": 0.1,
  "seq_classif_dropout": 0.2,
  "sinusoidal_pos_embds": false,
  "tie_weights_": true,
  "torch_dtype": "float16",
  "transformers_version": "4.44.2",
  "vocab_size": 30522
}

Немного его расшифруем:

ПараметрЗначение/ТипОписание
_name_or_pathdistilbert-base-uncasedИмя предобученной модели.
activation"gelu"Функция активации (GELU - Gaussian Error Linear Unit).
architectures["DistilBertForSequenceClassification"]Архитектура модели для классификации текста.
attention_dropout0.1Вероятность dropout
dim768Размерность эмбеддингов (векторное представление слов/токенов).
dropout0.1Базовый уровень dropout для всех слоёв.
hidden_dim3072Размерность скрытого слоя в feed-forward сети.
id2label{"0": "LABEL_0", ...}Соответствие числовых ID меткам классов (3 класса в примере).
label2id{"LABEL_0": 0, ...}Обратное соответствие меток к ID.
initializer_range0.02Диапазон инициализации весов.
max_position_embeddings512Максимальная длина обрабатываемого текста (в токенах).
model_type"distilbert"Тип модели (упрощённая версия BERT).
n_heads12Количество голов в механизме “внимания”.
n_layers6Количество трансформерных слоёв (у оригинального BERT - 12).
pad_token_id0ID токена для дополнения текста.
qa_dropout0.1Dropout для вопросно-ответных задач
seq_classif_dropout0.2Специфичный dropout для слоя классификации.
sinusoidal_pos_embdsfalseИспользование синусоидальных позиционных эмбеддингов (здесь отключено).
tie_weights_trueСвязывание весов между слоями (для эффективности).
torch_dtype"float16"Тип данных PyTorch (половинная точность для экономии памяти).
transformers_version"4.44.2"Версия библиотеки Hugging Face Transformers.
vocab_size30522Размер словаря .

Также рядом с конфигом у нас лежат и веса и LoRA-адаптеры:

Resources ls
cmd_t_router_adapter_model_overrides.safetensors
cmd_t_router_adapter_model.safetensors
cmd_t_router_classification_head_overrides.safetensors
cmd_t_router_classification_head.safetensors
config.json
distilBERTbase_part1.safetensors
distilBERTbase_part2.safetensors
sensitive_content_adapter_model.safetensors
sensitive_content_classification_head.safetensors
skills_adapter_model.safetensors
skills_classifier_head.safetensors
  • mlx-swift_Cmlx.bundle MLX - фреймворк для работы с машинным обучением на Apple Silicon, т.е он нужен для ускорения вычислений для AI-моделей на Mac.

  • swift-transformers.Hub.resources Нужен для работы gpt2 и seq2seq моделями, об этом нам накают файлы: gpt2_tokenizer_config.json и t5_tokenizer_config.json

  • ARCClients_Integrations.bundle и ARCClients_LiveDataClient.bundle Интеграция с различными сервисами, а именно: Получение транскриптов и метаданных видео в Youtube, работа с Notion, Google Docs и т.д. Прям лежат скрипты, можно подсмотреть.