Discord弃用Electron转Rust:内存占用290.2MB,省70%?
“在内存短缺的时候,终于有一家软件公司开始把内存还给用户了。”
Discord 联合创始人兼 CTO Stanislav Vishnevskiy 近日在 X 上宣布,客户端正迁往 Rust,桌面端将不再使用 Electron,移动端也会放弃 React Native。他晒出的 Windows 任务管理器截图里,新客户端名为“Discord Phoenix”,内存占用约 290.2MB。作为对照,现有 Windows 客户端加入多个服务器后,内存很容易冲到 1GB 甚至更高。Vishnevskiy 之后补充说,截图中的客户端同时挂着两个账户。

Vishnevskiy 说:“新版 Discord 客户端内存占用更低,这还只是其中一点。点击操作流畅无比,我再也回不去了。看看启动速度就知道了。”他还展示了新版客户端的效果。
移动端他也给出了评价:“我觉得它现在可能是我手机上响应速度最快的应用了。”Vishnevskiy 一并展示了移动端效果。
后来有网友追问网页客户端会怎么变,Vishnevskiy 答复称,“我们会有一个 HTML 渲染器,但逻辑系统将采用 WASM 而非 JS。”
正式上线时间还没定。Discord 只表示,希望尽快开放用户测试。
有网友在 Vishnevskiy 帖子下留言:“恭喜你们终于发现 Vibe Coding 了。”他没有正面接话。不过 Discord 工程副总裁 Mark Smith 早在 3 月份就公开介绍过公司内部 AI 开发平台 Vibeyard。按他的说法,Discord 员工以前交付一款内部应用要几天甚至几周,现在借助 Claude、CLAUDE.md、GitHub Actions 和 Cloudflare 基础设施,约两分钟就能完成部署。
所以这次重构,多数人把它归为 AI Coding,官方并没有明确这一说法。
内存飙到 4GB,Discord 甚至试过自动重启
Discord 的内存问题不是一天两天了。
2025 年 10 月,Discord 针对 Windows 客户端启动专项排查。到当年 12 月,团队已修复至少 9 项问题,涉及内存泄漏、死锁、缓冲区溢出等,还补上了遥测和内存分析工具。
问题没有就此根除。Discord 披露,客户端正常使用时内存通常低于 1GB,可部分用户会碰上超过 4GB 的异常占用。有些问题还牵涉操作系统、驱动程序和硬件,团队得和外部合作伙伴一起定位。
一轮修复下来,Discord 把内存占用的 P95 降低了约 5%。但对长期运行、频繁切换频道和服务器的用户来说,这还远远不够。
自动重启实验就是这么来的。
2025 年底,Discord 工程团队在 Reddit 上解释了这项特殊的性能实验。Windows 客户端内存占用超过 4GB 时,程序可以在用户离开电脑后自行重启,给持续增长的内存压力降降温。触发条件卡得很严:客户端必须运行至少一小时、用户处于离开状态、没有进行语音通话,每天也只能重启一次。团队想借此缓解部分用户的内存压力,同时收集更多异常数据。
Discord 当时明确表示,这只是临时措施,不是解决内存问题的长久之计。
这个决定当时在社区里引起讨论。一些用户认可 Discord 主动处理问题,也有人认为,一款聊天软件要靠自动重启控制内存,本身就说明客户端的性能问题已经相当严重。
之后,Discord 继续沿着原有技术路线优化。今年 9 月 8 日,Discord 公布了一轮性能改进:桌面端升级至 Electron 42,调整部分调用方式后,CPU 占用中位数下降约 17%,但内存占用中位数反而增加约 4%。
移动端也做了类似优化。React Native 版本升级后,Android 和 iOS 应用的平均 CPU 占用下降约 5%,平均启动时间缩短约 5%。
可见 Discord 在 Electron 上花过不少功夫,也谈不上因某次性能故障就拍板重写客户端。团队长期投入了大量优化工作,只不过在旧架构里,各项性能指标之间始终得做取舍。
Discord 这类产品对此格外敏感。用户打游戏、开直播或共享屏幕时,它往往还在后台挂着。聊天客户端多吃的那部分 CPU 和内存,很可能直接抢走游戏和其他应用的运行资源。
Discord 拿出了一套更彻底的方案:放弃 Electron,用 Rust 重写整个客户端。
已经为这次 Rust 重构准备了多年
Rust 并不是 Discord 临时选中的一门新语言。
Vishnevskiy 表示,公司早在 2018 年就开始采用 Rust。目前 Discord 的大量基础设施、语音技术和部分现有客户端代码已经使用 Rust 开发,将整个客户端迁移过去一直是团队希望实现的目标。
2020年的时候,Discord曾发布过一篇工程博客,专门说明为何要把一项核心后端服务从Go换成Rust。这项服务叫Read States,干的是记录用户读过哪些频道、哪些消息的活。数十亿条已读状态压在身上,每秒都要处理大量缓存更新和数据库写入,属于高频访问的典型场景。
那会儿的Go版本平时跑得挺快,可差不多每两分钟就冒一次明显的延迟尖峰。工程团队查下来,发现毛病出在垃圾回收器(GC)扫描大型LRU缓存上。
调GC参数、缩小缓存规模,Discord都试过。问题是缓存一缩,更多数据就得回头从数据库读,尾延迟反而更难看。最终团队拍板:用Rust把这项服务重写。
Rust靠所有权机制在编译阶段就把内存访问管起来,不依赖传统的垃圾回收器。迁移完成后,缓存里的对象不用了就能及时释放,原先周期性出现的GC延迟也消失了。Discord还借着Rust版本进一步调整了缓存结构和容量,把服务整体性能往上提了一截。
当然,这次迁移并非没有代价。Discord当时也坦言,早期Rust异步编程生态还不够成熟,开发团队得额外解决不少技术问题。系统规模一大,换语言要操心的远不止运行效率。
这段经历给此次桌面客户端重构铺了底。多年Rust开发经验攒下来,Rust在高频、低延迟业务里的价值,Discord已经验证过了。
不选Tauri,押注GPUI:Discord连界面都要推倒重来
Discord这回真正让人关注的技术选择,是GPUI。
Vishnevskiy公布重构计划之后,有开发者猜Discord会上Tauri。Tauri同样以Rust为核心,但界面通常交给操作系统自带的WebView渲染,开发者照样能用HTML、CSS和JavaScript那套技术栈。这么一来,Electron携带完整Chromium运行环境的部分开销可以省掉,Web开发的便利也保住了。
可Vishnevskiy说得很明确:Discord没用Tauri,选的是GPUI。
GPUI最早由Zed编辑器团队开发,是一个基于Rust、靠GPU加速渲染的界面框架。它跟把Web界面塞进桌面应用的路子不一样,开发者可以直接用Rust写界面和交互逻辑。
Discord并不想让新版本看起来像另一个产品。按Vishnevskiy的说法,新客户端的外观和功能基本保持不变,但应用本身走原生实现,只有在YouTube、Activities等特定功能里才用系统WebView。
GPUI也不是拿过来就能直接满足Discord需求的。一位参与重构的Discord开发人员透露,团队以Zed的GPUI为基础做了大量修改,现在用的版本实际上已经接近一个私有分支。Discord希望日后与Zed合作,把部分改动贡献回上游项目。
移动端也会走新的技术路线。
“从一开始,Discord的iOS端就是用React Native开发的;安卓端几年前也迁移到了React Native,目的是抹平两端差异,安卓版之前在功能上一直落后于iOS版本。”Vishnevskiy说道。
眼下Discord打算逐步把React Native移除,但不会简单地把桌面界面搬到手机上。按Vishnevskiy的说法,iOS和Android各自保留原生界面,核心应用代码则通过Rust与桌面端共享。
不过,Rust和GPUI并不是没有成本的选择。
先说Rust。它的内存安全机制能帮开发者避开大量内存错误,可业务逻辑引起的内存泄漏、资源缓存过大、GPU显存占用这些问题,它没法自动消掉。客户端最终吃多少资源,还是得看整体架构和代码怎么写。
再看GPUI。它的生态成熟度跟Electron、跟成熟的浏览器技术栈比还有差距。输入法、文本选择、窗口管理、辅助功能、操作系统集成,这些平台适配工作Discord得自己维护一大摊。用了大幅修改过的GPUI分支,也意味着团队往后要持续承担框架维护和版本同步的成本。
无障碍支持尤其值得关注。Electron背后的Chromium积累了多年的无障碍基础设施,能跟Windows UI Automation、macOS辅助功能等系统机制打交道。GPUI这边虽然已经有了通过AccessKit等方式实现无障碍支持的方案,但有接口不等于实际应用马上就能拿到完整的屏幕阅读器和键盘导航体验。
对Discord这种普通用户量巨大、又要服务不同设备和使用习惯的产品来说,这些能力不是能放到最后再补的附属功能。
GPU加速渲染这套机制,并不意味着GPUI在每项界面操作上就一定更快。真正跑起来的速度,还要看渲染调度、字体处理、GPU驱动以及平台兼容性这些环节。
所以说,Discord这次重构的难点,在于能不能用新的一套技术栈把整个产品稳定复现出来。
“Electron已经不再适合AI时代”
对 Discord 的这一决定,不少开发者表达了支持。有用户直接喊话,盼着其他公司赶紧跟上,Slack 这类通信软件尤其被点名。也有开发者持另一种看法:倘若这轮变化能促使工程师重新盯住内存和 CPU 占用,那就算得上好事。
这些声音的背后,其实是开发者对桌面应用长期吃资源的不满。借助 Electron,开发者可以用成熟的 Web 技术快速做出 Windows、macOS 和 Linux 应用,不必为每个平台单独维护一套代码。可代价是应用得打包 Chromium 运行环境,多个应用各自占掉一大块内存的情况,用户遇到的频率越来越高。
有开发者说:“Discord 本来就是一款面向游戏和直播场景的应用,客户端理应尽量减少 CPU 占用,避免影响正在运行的游戏。”
到了 AI 时代,把内存占用压下去,意义还要更大。
Zack Shutt 的评价是:“在内存短缺的时候,终于有一家软件公司开始把内存还给用户了。”
用户一旦在电脑上跑起本地模型,其他应用占多少资源就变得格外扎眼。许久的抱怨是:“Electron 为了兼顾跨平台开发,作出了太多妥协。在 AI 能够帮助 Web 开发者完成原生开发任务之后,Electron 已经不再适合 AI 时代。”
Guillermo Flor 是投资人,他的判断是:本地工具的技术栈正在往 Rust UI 靠拢,这类界面可以跟本地模型运行时配合。他提到,真正的机会在于让用户时刻感知到 AI 智能体的存在,又不至于把笔记本电脑压垮。应用得能快速启动,给模型运行留够系统资源,同时在智能体后台干活时,前台界面仍要保持流畅、响应及时。
也有开发者提到,过去做原生应用,人力成本压不下来,企业选 React、Electron 和 JavaScript,本质上是拿多出来的内存开销去换更低的软件开发成本。现在 LLM 和 Agent 正在压低写代码、做性能分析、搞迁移的成本,原生应用值得重新考虑。这位开发者还批评,Claude、GPT 这些 AI 工具本身就采用基于 Web 的桌面封装,相当浪费。
已经做本地 AI 工作台的开发者里,有人转向 Tauri 和 Rust,为的是缩小安装包、让启动更快。可也有人提醒,界面再轻量,后台 Agent 运行时照样占几百 MB 内存的话,整体开销未必好看。
软件膨胀的锅该它背吗?
当然,把板子全打在 Electron 身上的人并不多。
有开发者认为,Electron 最大的价值从来不是性能拉满,而是让一个团队用相对低的成本维护多个平台的应用。对功能迭代快、平台覆盖要求高的公司来说,这个优势仍然难以忽视。
还有用户觉得,比起重写客户端,Discord 更该做的是给产品本身瘦身。在这位用户看来,Discord 如今塞进了大量商业化入口、推荐功能、弹窗和界面元素。底层技术就算换成 Rust,只要功能还在不停往上堆,资源消耗和使用体验也未必能一直变好。
性能之外,客户端修改是另一个争议点。
Discord 的第三方修改生态活跃了很久。一些用户借 Vencord 等工具调整客户端样式、隐藏不需要的界面元素,或者加上官方没有的功能。Electron 用 Web 技术构建界面,这类修改实现起来相对容易,用户围绕现成的 JavaScript 和 CSS 结构就能动手定制。
可客户端一旦迁到 Rust 和 GPUI 上,这些改法可能就行不通了。对依赖第三方插件和自定义主题的用户来说,性能上的收益未必补得回功能和自由度上的损失。有人担心,换成 Rust 之后 Discord 反而更容易卡住第三方客户端的修改,甚至怀疑这也是公司推动重构的动机之一。
参与此次重构的一位 Discord 开发人员随后回应称,团队的工作重点是提高性能,让客户端拥有更好的使用体验。
参考链接: