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_path | distilbert-base-uncased | Имя предобученной модели. |
activation | "gelu" | Функция активации (GELU - Gaussian Error Linear Unit). |
architectures | ["DistilBertForSequenceClassification"] | Архитектура модели для классификации текста. |
attention_dropout | 0.1 | Вероятность dropout |
dim | 768 | Размерность эмбеддингов (векторное представление слов/токенов). |
dropout | 0.1 | Базовый уровень dropout для всех слоёв. |
hidden_dim | 3072 | Размерность скрытого слоя в feed-forward сети. |
id2label | {"0": "LABEL_0", ...} | Соответствие числовых ID меткам классов (3 класса в примере). |
label2id | {"LABEL_0": 0, ...} | Обратное соответствие меток к ID. |
initializer_range | 0.02 | Диапазон инициализации весов. |
max_position_embeddings | 512 | Максимальная длина обрабатываемого текста (в токенах). |
model_type | "distilbert" | Тип модели (упрощённая версия BERT). |
n_heads | 12 | Количество голов в механизме “внимания”. |
n_layers | 6 | Количество трансформерных слоёв (у оригинального BERT - 12). |
pad_token_id | 0 | ID токена для дополнения текста. |
qa_dropout | 0.1 | Dropout для вопросно-ответных задач |
seq_classif_dropout | 0.2 | Специфичный dropout для слоя классификации. |
sinusoidal_pos_embds | false | Использование синусоидальных позиционных эмбеддингов (здесь отключено). |
tie_weights_ | true | Связывание весов между слоями (для эффективности). |
torch_dtype | "float16" | Тип данных PyTorch (половинная точность для экономии памяти). |
transformers_version | "4.44.2" | Версия библиотеки Hugging Face Transformers. |
vocab_size | 30522 | Размер словаря . |
Также рядом с конфигом у нас лежат и веса и 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 и т.д. Прям лежат скрипты, можно подсмотреть.