QQNT
QQNT是腾讯为其QQ客户端重构的一套跨平台技术架构,2022 年 3 月正式立项,用于替换桌面端原有各平台各自独立开发的代码。它把登录、消息、关系链、富媒体、长连接、数据库等核心逻辑下沉到一套用 C++ 编写的通用内核,窗口界面层则采用 Electron 框架实现,从而让 Windows、macOS、Linux 三个系统共用一套核心代码[1]。
定义
QQNT是腾讯QQ客户端的一次底层技术重构方案,其名称中的「NT」被解释为「New Technology」之意[2]。它并非单一框架的名称,而是一整套分层设计:下层是与平台无关的通用内核,上层是按平台适配的界面实现。
按照QQ技术团队的说明,NT内核包含核心登录、消息系统、关系链、富媒体、长连接、数据库等模块,全部以 C++ 编写并在各平台通用;Electron 只承担桌面端界面层的跨平台职责,在整个项目中所占比重很小。因此,NT版本并不等同于网页版QQ或内嵌浏览器,主要业务逻辑仍运行在本地 Native 层[3]。
从工程目标看,该架构要解决的是旧版QQ代码复用率低的问题。历史上Windows、macOS、Linux三端由不同团队各自实现,功能与更新节奏差异明显,维护成本较高[1]。NT架构通过统一内核拉平各平台的功能与体验。
原理
QQNT采用分层依赖的组织方式。手机端新架构按业务划分模块,模块之间相互解耦,通过接口与路由通信;层级自上而下单向依赖,上层可以调用下层,下层不能反向依赖上层[4]。原先由各平台原生语言实现的即时通讯核心逻辑、通用组件,以及线程、网络、IO 等资源管理模块和操作系统封装部分,统一沉淀到 C++ 跨平台层[4]。
桌面端的界面层基于 Electron 构建,该框架以 Chromium 渲染引擎与 Node.js 运行时为基础,可使用 JavaScript、HTML 与 CSS 编写跨平台桌面应用[1]。Electron 本身是多进程结构:主进程承担窗口管理与跨进程通信,每个窗口对应一个渲染进程,另有 GPU 进程负责图形相关任务[5]。QQNT 在主进程中额外集成了一个 NT 核心数据模块(C++ addon),负责与服务端交互并向界面提供本地数据服务[5]。
聊天窗口的渲染路径也做了针对性设计。复杂消息上屏采用 JavaScript 事件机制配合 WebWorker 实现异步处理,并使用 OffscreenCanvas 与 Worker 池完成绘制[5]。消息列表则通过虚拟滚动控制同时挂载的组件数量,以在滚动体验与内存占用之间取得平衡[5]。
发展历程
2020 年,QQ开发团队开始着手架构升级,考虑到手机QQ业务复杂度与代码量级,采取分阶段、逐步演进的推进方式[4]。具体的QQNT项目于 2022 年 3 月正式启动。
2022 年 6 月,macOS 版QQ开始内测,同年 9 月上架 App Store,这是桌面端首次以新架构重构的版本;随后团队着手Linux版本开发,并在当年最后一天上架各Linux应用市场。为控制质量风险,团队先以用户量较小、功能补齐需求较迫切的桌面端作为验证平台,再向移动端迁移[4]。
2023 年 4 月,Windows 版NT架构客户端开启内测与公测,7 月 3 日NT架构Windows版上架官网,跨平台三端重构由此统一[1][4]。同期,手机QQ安卓与iOS版本也完成基于NT架构的正式发布[4]。桌面QQ在NT版本中首次提供 64 位支持,为此需重新编译音视频、安全、字节码、图形库等 C++ 模块及Electron框架。2023 年 10 月,NT桌面版上架微软应用商店[6]。
应用
该架构首先应用于QQ自身的多端客户端。基于NT架构的Windows版在界面与功能上做了较大调整,消息界面改用三栏式布局,并增加夜间模式、一键截图、群应用、全局搜索等能力[7]。NT版Windows客户端安装包约 160MB,小于旧版纯原生客户端的约 201MB[7]。
在性能侧,团队围绕内存设定了分阶段目标:第一阶段要求单个进程内存在 300MB 以下,第二阶段要求单进程低于 100MB、整体低于 300MB[5]。优化前的测试中,主进程、GPU 进程与渲染进程合计曾达到 600MB[5]。经过代码与静态资源瘦身、分包按需加载、虚拟滚动、渲染合成层优化、修正Electron接口误用等措施后,官方公布核心聊天场景内存基本控制在 300MB 以内,安装包约 150MB,整体应用内存平均占用约 228MB[5]。
由于Electron的跨平台特性,Windows平台的多数内存优化措施同样适用于macOS与Linux平台[5]。
局限
Electron的多进程模型使内存管理成为该架构的主要技术难点。每个窗口对应独立渲染进程,窗口数量直接影响内存占用,而QQ主面板本身由上百个复杂程度不等的模块构成,缺乏精细控制时容易导致内存持续增长[5]。QQ用户单次登录后长时间挂机的使用习惯,也放大了这一问题,控制不当会出现响应变慢甚至闪退[5]。
跨平台框架本身存在取舍。有从业者指出,跨平台方案需要额外处理平台差异性,第三方库的丰富程度与健壮性往往不及原生平台,实质是以部分功能与体验换取开发速度和一致性[1]。同类产品中亦有反向案例:微软新版Teams从Electron转向Edge WebView2,官方称内存消耗最多减少约 50%[1]。
在平台适配方面,Linux客户端面临发行版碎片化、编译环境缺失等困难,部分适配问题需要外部协助测试,处理周期较长。此外,旧版客户端积累的大量历史功能如何在重构中取舍,也是推进过程中的现实约束。
参见
参考资料
- 十年架构重构,为多端统一,QQ选用了 Electron [引用日期2026-10-29]
- QQ 用 Electron 重构后,终实现 Linux、macOS、Windows 三端架构统一! [引用日期2026-10-29]
- 腾讯开发者谈基于 Electron 技术的 Windows 版 QQ,将带来哪些新变化? [引用日期2026-10-29]
- QQ 大一统 NT 架构,腾讯开发者介绍技术架构升级变迁史 [引用日期2026-10-29]
- 新 QQ NT 桌面版如何实现内存优化探索? [引用日期2026-10-29]
- QQ NT [引用日期2026-10-29]
- 跨平台三端重构正式统一!腾讯全新架构QQ体验_电脑报在线 [引用日期2026-10-29]