July 13

Обзор Браузера Dia

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

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

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

На чем основан?

Кратко: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 Ассистент

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

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

authenticationFailed(AuthClient.AccountServiceError
(code: AuthClient.AccountServiceErrorCode.restrictedCountry, message: nil))

Но если вы не в РФ, то все работает отлично

  • AI ассисент на странице

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

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

Что под копотом?

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

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

Открываем страницу : 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

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

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

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/

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

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

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

И большой список адресов. Я их себе скачал, засуну в свой 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_path: "distilbert-base-uncased"Модель основана на предобученном DistilBERT (без регистра букв, английская версия).
  • model_type: "distilbert"-Тип архитектуры — дистиллированный BERT.
  • architectures: ["DistilBertForSequenceClassification"]Модель предназначена для классификации текста
  • vocab_size: 30522Размер словаря (количество уникальных токенов).
  • torch_dtype: "float16"Используется половинная точность (FP16) для экономии памяти и ускорения вычислений.
  • dim: 768Размерность эмбеддингов (векторное представление токенов).
  • hidden_dim: 3072 Размерность скрытого слоя в feed-forward сети (внутри трансформера).
  • n_layers: Количество слоёв трансформера (в оригинальном BERT — 12, тут в 2 раза меньше).
  • n_heads: 12Количество голов внимания (attention heads) в механизме self-attention.
  • max_position_embeddings: 512Максимальная длина входной последовательности (в токенах).

Также рядом с конфигом у нас лежат и веса и 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 и т.д. Прям лежат скрипты, можно подсмотреть.