近日,Discord 联合创始人兼 CTO Stanislav Vishnevskiy 在 X 上宣布,Discord 正将客户端迁移至 Rust,桌面端将移除 Electron,移动端也将放弃 React Native。他展示的 Windows 任务管理器截图显示,新客户端以“Discord Phoenix”的名称运行,内存占用约 290.2MB。相比之下,现有 Windows 客户端在加入多个服务器后,内存占用很容易达到 1GB 甚至更高。Vishnevskiy 随后补充称,截图中的客户端同时运行着两个账户。
“新版 Discord 客户端内存占用更低,这还只是其中一点。点击操作流畅无比,我再也回不去了。看看启动速度就知道了。”Vishnevskiy 展示了新版客户端的效果:
“我觉得它现在可能是我手机上响应速度最快的应用了。”Vishnevskiy 还展示了移动端效果:
之后,有网友询问网页客户端的变化,Vishnevskiy 回答道,“我们会有一个 HTML 渲染器,但逻辑系统将采用 WASM 而非 JS。”
目前,Discord 尚未公布正式上线时间,只表示希望尽快开放用户测试。
“恭喜你们终于发现 Vibe Coding 了。”有网友在 Vishnevskiy 帖子下评论,他没有正面回应。不过,Discord 工程副总裁 Mark Smith 早在 3 月份就公开介绍过公司的内部 AI 开发平台 Vibeyard。按照他的说法,Discord 员工过去需要几天甚至几周才能交付一款内部应用,如今通过 Claude、CLAUDE.md、GitHub Actions 和 Cloudflare 基础设施,约两分钟就能完成部署。
因此,对于这次重构,大部分人认为是 AI Coding, 不过官方没有明确这一说法。
Discord 的内存问题由来已久。
2025 年 10 月,Discord 针对 Windows 客户端启动专项排查。到当年 12 月,团队已经修复至少 9 项与内存泄漏、死锁、缓冲区溢出等有关的问题,还增加了遥测和内存分析工具。
但问题并没有彻底解决。Discord 披露,客户端正常使用时内存通常低于 1GB,部分用户却会遭遇超过 4GB 的异常占用。一些问题甚至涉及操作系统、驱动程序和硬件,团队需要与外部合作伙伴共同定位。
经过一轮修复,Discord 将内存占用的 P95 降低了约 5%,但对于长期运行、频繁切换频道和服务器的用户来说,这还远远不够。
于是,自动重启实验出现了。
2025 年底,Discord 工程团队在 Reddit 解释了这项特殊的性能实验。当 Windows 客户端内存占用超过 4GB 时,程序可以在用户离开电脑后自行重启,以缓解持续增长的内存压力。为了避免干扰用户,Discord 设置了严格的触发条件:客户端必须运行至少一小时、用户处于离开状态、没有进行语音通话,每天也只能重启一次。团队希望借此缓解部分用户的内存压力,同时收集更多异常数据。
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 并不是 Discord 临时选中的一门新语言。
Vishnevskiy 表示,公司早在 2018 年就开始采用 Rust。目前 Discord 的大量基础设施、语音技术和部分现有客户端代码已经使用 Rust 开发,将整个客户端迁移过去一直是团队希望实现的目标。
早在 2020 年,Discord 还专门发表过一篇工程文章,解释为什么将一项核心后端服务从 Go 迁移至 Rust。这项服务名为 Read States,负责记录用户读过哪些频道和消息。Discord 需要处理数十亿条已读状态,服务每秒涉及大量缓存更新和数据库写入,属于典型的高频访问场景。
当时的 Go 版本大多数时候运行很快,但几乎每隔两分钟就会出现一次明显的延迟峰值。工程团队排查后发现,问题与垃圾回收器(GC)扫描大型 LRU 缓存有关。
Discord 尝试过调整垃圾回收参数、缩小缓存规模等办法,但缩小缓存又会导致更多数据需要从数据库读取,反而影响尾延迟。团队最终决定用 Rust 重写这项服务。
Rust 通过所有权机制在编译阶段管理内存访问,不依赖传统垃圾回收器。迁移后,缓存中的对象可以在不再使用时及时释放,原有的周期性垃圾回收延迟问题也得到解决。Discord 还利用 Rust 版本进一步调整了缓存结构和容量,提高了服务整体性能。
不过,这次迁移并不是毫无代价。Discord 当时也提到,早期 Rust 异步编程生态还不够成熟,开发团队需要解决额外的技术问题。对于规模较大的系统,语言迁移需要考虑的远不只是运行效率。
这段经历为此次桌面客户端重构提供了背景。Discord 已经积累了多年 Rust 开发经验,也验证过 Rust 在高频、低延迟业务中的价值。
Discord 这次真正引人关注的技术选择,是 GPUI。
在 Vishnevskiy 公布重构计划后,有开发者猜测 Discord 会采用 Tauri。Tauri 同样以 Rust 为核心,但它通常使用操作系统提供的 WebView 渲染界面,开发者仍然可以沿用 HTML、CSS 和 JavaScript 技术栈。这种方案能够减少 Electron 携带完整 Chromium 运行环境带来的部分开销,同时保留 Web 开发的便利性。
但 Vishnevskiy 明确表示,Discord 没有采用 Tauri,而是选择了 GPUI。
GPUI 最初由 Zed 编辑器团队开发,是一个基于 Rust、利用 GPU 加速渲染的界面框架。与将 Web 界面装进桌面应用不同,GPUI 允许开发者直接用 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 这样拥有大量普通用户、同时服务不同设备和使用习惯的产品,这些能力并不是可以放到最后再处理的附属功能。
此外,GPUI 采用 GPU 加速渲染,并不意味着所有界面操作都天然更快。实际性能还受渲染调度、字体处理、GPU 驱动、平台兼容性等因素影响。
因此,Discord 此次重构的难点在于能否用新的技术栈稳定复现整个产品。
不少开发者对 Discord 的决定表示欢迎。一位用户直言,希望其他公司也能尽快跟进,尤其是 Slack 这样的通信软件。还有开发者表示,如果这次变化能让工程师重新重视内存和 CPU 占用,至少是一件好事。
这类观点背后,是开发者对桌面应用资源消耗长期积累的不满。Electron 让开发者能够使用成熟的 Web 技术快速开发 Windows、macOS 和 Linux 应用,避免为不同平台维护完全独立的代码。但与此同时,应用需要携带 Chromium 运行环境,用户也越来越容易遇到多个应用分别占用大量内存的情况。
“Discord 本来就是一款面向游戏和直播场景的应用,客户端理应尽量减少 CPU 占用,避免影响正在运行的游戏。”
但在 AI 时代,减少内存占用的意义更大。
“在内存短缺的时候,终于有一家软件公司开始把内存还给用户了。”Zack Shutt 评价道。
当用户开始在电脑上运行本地模型,其他应用的资源占用会变得更加敏感。“Electron 为了兼顾跨平台开发,作出了太多妥协。在 AI 能够帮助 Web 开发者完成原生开发任务之后,Electron 已经不再适合 AI 时代。”这样的吐槽已经很久了。
“本地工具的技术栈正逐渐向 Rust UI 收敛,这类界面能够与本地模型运行时协同工作。真正的机会在于,让用户随时感受到 AI 智能体的存在,却不会因此让笔记本电脑不堪重负。应用需要启动迅速,为模型运行留出足够的系统资源,并确保智能体在后台执行任务时,前台界面依然流畅、响应及时。”投资人 Guillermo Flor 表示。
还有开发者指出,以前开发原生应用的人工成本很高,企业选择 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 开发人员随后回应,团队的工作重点是提高性能,让客户端拥有更好的使用体验。
参考链接:
https://www.theverge.com/news/1027379/discord-ditching-electron-web-app
https://x.com/svishnevskiy/status/2118081920194203799
https://www.reddit.com/r/discordapp/comments/1pej7l7/restart_on_excessive_memory_usage_experiment/
https://discord.com/blog/discord-patch-notes-september-8-2026
https://discord.com/blog/why-discord-is-switching-from-go-to-rust
https://news.ycombinator.com/item?id=50378625
https://github.com/zed-industries/zed/tree/main/crates/gpui
声明:本文为 InfoQ 原创,不代表平台观点,也不构成投资建议,未经许可禁止转载。







