开发实录

DevPeek 架构改造:抛弃 Electron,拥抱 Tauri

联调工具最不该胖的是「壳」

DevPeek 的核心是本机代理:解密 HTTPS、跑 Mock参数转换、断点与页面调试。这些事本来就吃 CPU、占端口,还要挂很久——上一篇开发实录里,我们还专门为「挂一整天」换过存储。

早期桌面版却多背了一层:整份 Electron(等于再带一个 Chromium),只为了开主窗口、托盘和几个系统对话框。代理在干活,壳也在常驻;任务管理器里常能看到「工具本身」和「壳」叠在一起占内存。

对浏览器扩展或偶尔开一下的工具,这还能忍。对早上开、傍晚关的联调代理,壳太重就变成日常成本。

先拆业务,再换壳

我们不是某天突然「删掉 Electron」。改造分三步,一步一步来:

  1. 业务进 Core:代理、规则、证书、配置、抓包存储收进独立的 Core 进程(Gateway + engine),UI 通过 HTTP / WebSocket 与之交互。
  2. 托盘独立成 Launcher(约 v1.1.7):系统托盘、模式切换、拉起与监控 Core,不再绑死在 Electron 主进程里——关掉主窗口,Core 里的代理仍会继续跑。
  3. 桌面壳变薄:主窗口只负责加载 Core 托管的那套 Web UI,再补上窗口控件、外链、文件对话框等系统能力。

走到第三步,Electron 越来越像「过度包装」:业务已经不在壳里,却还要为窗口打包一整套 Chromium,还要跟原生模块 ABI、杀软误报、安装体积反复较劲。

v1.2.1 起,桌面壳换成 Tauri 2:用系统 WebView 打开同一套 UI,不再内嵌 Chromium

现在长什么样

Launcher 管进程,Core 跑业务,界面有两种入口——标准模式走 Tauri 壳,Lite 模式走系统浏览器:

干什么
Launcher 托盘、启动/停止 Core、Lite / 标准模式切换
Core 代理与全部业务能力
Tauri Shell(标准模式) 薄桌面窗口:加载 Core URL、无边框控件、回放独立窗、系统对话框等
浏览器 Lite 系统浏览器打开同一 Core URL,不依赖桌面壳;适合只想用 Web UI、或不想多开一个桌面窗口的场景

两种模式加载的是同一套 Web UI,差别只在「谁负责开窗」——Tauri 壳或浏览器标签页,而不是两套产品逻辑。换成 Tauri 之后,这条分工更清晰:Shell 只服务标准模式,Lite 本来就不需要内嵌 Chromium。

工程上,Shell 目录很克制——业务不往 Rust 里搬,只做窗口与少量系统桥接。抓包、Mock、证书信任,仍然走 安装与首选项代理与 SSL 证书 那条你已经熟悉的路径。

换壳时踩过的坑

迁壳不是改个打包脚本就完事。窗口与系统能力要重新对齐,否则「看起来像桌面 App」的部分会先出问题:

  • 最大化 / 最小化 / 关闭:无边框窗口控件要按新壳重接;关闭主窗口后,仍应能从托盘重新打开并聚焦。
  • 外链与存文件:链接用系统默认浏览器打开;保存文本等走系统对话框,不再走旧的 IPC 路径。
  • 录制回放:本地录制文件要能打开并导入回放窗,离线复盘不能因为换壳断掉。
  • 安装与更新(Windows):安装前检测进程占用、附带必要运行库、应用内改为拉完整安装包——壳换了,发布通道也要跟着稳。

这些在 更新日志 1.2.1 里有对应条目。升级后若某块窗口行为不对劲,优先对照这一版。

改完之后,你能感知到的变化

  • 壳更轻:主窗口不再绑一整套 Chromium;同样是「开着 DevPeek 联调」,后台常驻更克制。
  • 关窗不会停代理:Launcher 管 Core;关主窗口只是藏起界面,需要时再从托盘打开——更贴近「代理挂在后台」的用法。
  • Lite 与标准模式更顺:Lite 仍是浏览器里同一套 UI;标准模式只是换了更薄的桌面壳。
  • 安装与更新更稳:Windows 仍是熟悉的安装包名与更新流程,壳侧体积与依赖结构按 Tauri 重做了一遍。

说白了:我们想让 DevPeek 胖在该胖的地方(代理、规则、历史、调试),而不是胖在「显示一个本地网页」上。

和上一篇是同一条线

抓包历史从 sql.js 迁到原生 SQLite,解决的是「挂久了内存与卡顿」。
这篇换壳,解决的是「为开窗多背一整套浏览器」——两条都指向同一目标:长时间联调时,工具自己少添乱

若你从 Electron 时代某版一路升级上来,欢迎在长会话里试一下内存占用和关窗/托盘行为;有异常到 GitHub Discussions 说说场景(系统版本、Lite 还是标准模式、大概挂多久)。

相关文档


欢迎 下载最新 DevPeek 试用标准模式与托盘常驻;若只想先看界面,也可在 Lite / 浏览器模式下打开同一套 UI,再决定要不要用桌面壳。