拆一拆 Dia 浏览器:它在 macOS 上是怎么做的?
如果你最近关注过 Arc,那你大概已经听说过 Dia。 这是 The Browser Company 推出的另一款浏览器产品,目前主要面向 macOS。
从使用层面看,Dia 延续了 Arc 的一些思路;但如果你打开 Dia.app 的包内容,会发现它在工程结构和系统集成上,其实挺“传统”,也挺有意思。
这篇文章不讨论体验好坏,也不预测方向,只做一件事:
看看 Dia 在技术上到底是怎么构建出来的。
Dia 背后的公司:The Browser Company 简介
先简单交代下背景。
The Browser Company 成立于 2019 年,总部位于纽约,最早因 Arc 浏览器 而受到关注。公司的公开目标一直比较明确:围绕“浏览器”这个载体,探索新的交互和使用方式。
在融资方面,根据公开资料整理:
公司累计融资约 1.28 亿美元 其中包括 2024 年的一轮 约 5000 万美元融资 投资方既有风投机构,也有多位互联网产品背景的个人投资者
截至目前,The Browser Company 并未被收购,仍作为独立公司运营,Dia 也是其自研产品线的一部分。
Dia 是什么形态的应用?
打开 Dia.app 的 Contents/MacOS/Dia,你会看到一个很熟悉的东西:
arm64 Mach-O 使用 Xcode 16.4 构建 最低系统版本:macOS 14 入口是 AppKit 的 MainMenu.nib
这基本已经把结论写在脸上了:
Dia 是一个标准的原生 macOS 应用。
它不是 Electron,也不是“套壳网页”。 这点从它对系统能力的使用上也能看出来,比如:
AppleScript( Dia.sdef)Dock Tile 插件 NSUserActivityTypeBrowsingWeb原生注册 http / httpsscheme对相机、麦克风、蓝牙、位置、桌面、下载等权限的声明
这些都是 AppKit 世界里的常规操作,但在跨平台框架里通常比较麻烦。
浏览器内核:不是 WebKit,而是 ArcCore
在渲染层面,Dia 并没有走 Safari 的 WebKit 路线。
它依赖的是一个叫 ArcCore.framework 的私有框架。 从 Info 信息可以看到:
版本号:143.0.7499.170 对应 Chromium: branch-heads/7499@{#3400}
也就是说,Dia 内嵌的是 Arc 团队维护的 Chromium 分支。
如果你用 otool -L 看依赖,会发现一个很典型的组合:
UI / 系统层:AppKit、SwiftUI、Combine 渲染 / 脚本:Chromium(通过 ArcCore)、JavaScriptCore 性能相关:Metal、Accelerate
整体结构可以理解成:
原生 macOS 应用 + Chromium 作为网页渲染组件
浏览器窗口、动画、交互都在原生层完成,Chromium 主要负责网页内容本身。
一个比较显眼的设计:大量 bundle
真正“有工程味”的地方,在 Contents/Resources。
这里不是一个简单的资源目录,而是塞满了 bundle,比如:
BoostBrowser_TabUI.bundle下载面板相关 bundle 个性化模块 Supertab 相关组件 一系列 ARC_*bundle
这些 bundle 的共同点是:
都有独立的 Info.plist由 Xcode 单独构建 各自声明最低 macOS 版本
这说明 Dia 在功能层面采用了 模块化拆分 的方式: 标签页 UI、下载、个性化等功能,并不是全部编进一个大二进制里。
从工程角度看,这种方式更容易:
独立开发和调试 控制功能加载 管理复杂 UI 组件
数据、更新和稳定性:比较“常规”的选择
在基础设施这块,Dia 用的都是成熟方案:
GRDB.framework(SQLite ORM)用于本地数据存储 Sparkle.framework用于应用自动更新 更新源在 Info.plist 中明确声明 Sentry.framework用于崩溃和性能监控
此外还能看到 Datadog、ZIPFoundation、SDWebImage 等依赖,基本都是围绕日志、资源处理和稳定性展开。
整体看下来,这一层并没有太多“实验性设计”,更偏向稳妥实现。
关于本地 AI:已经有基础设施
在资源目录里,还有一组比较引人注意的 bundle:
swift-transformers_Hub.bundlemlx-swift_Cmlx.bundleAIInfra_LocalClassification.bundleOnDeviceLoRAadaptors.bundle
从名称和 Info 信息来看,这些组件涉及:
Swift Transformers Apple MLX 本地模型推理 LoRA 适配
它们同样由 Xcode 构建,最低支持 macOS 13。 这说明 Dia 在工程上已经预留了本地 ML 推理的结构位置,至于具体用在什么功能上,则取决于产品层的实现。
简单收个尾
如果只从应用包和依赖结构来看,Dia 的轮廓其实很清晰:
它是一个 原生 macOS 应用 使用 定制 Chromium 分支 作为网页渲染内核 功能上采用 bundle 化的模块组织 基础设施选择偏向成熟、稳定 已经为本地 ML 能力准备了工程基础
不激进,也不保守,更像是在 macOS 体系里认真“做浏览器” 的一种实现方式。