[{"data":1,"prerenderedAt":63},["ShallowReactive",2],{"case-dev-build-log-electron-to-tauri-zh":3,"blog-list-zh":13},{"slug":4,"title":5,"summary":6,"date":7,"featured":8,"seoDescription":9,"series":10,"seriesOrder":11,"html":12},"dev-build-log-electron-to-tauri","DevPeek 架构改造：抛弃 Electron，拥抱 Tauri","联调工具不该为「开一个窗口」再拖一整套 Chromium。我们把业务收到 Core，桌面壳换成 Tauri，安装更轻、后台更省，关窗后托盘里也能随时唤回来。","2026-08-08",false,"DevPeek 开发实录：桌面壳从 Electron 迁到 Tauri，业务留在 Core，壳只负责窗口与系统能力，体积与资源占用更友好。","dev-build-log",2,"\u003Ch2>联调工具最不该胖的是「壳」\u003C\u002Fh2>\n\u003Cp>DevPeek 的核心是本机代理：解密 HTTPS、跑 \u003Ca href=\"\u002Fdocs\u002Fmock\u002F\">Mock\u003C\u002Fa>、\u003Ca href=\"\u002Fdocs\u002Fparam-transform\u002F\">参数转换\u003C\u002Fa>、断点与页面调试。这些事本来就吃 CPU、占端口，还要挂很久——上一篇开发实录里，我们还专门为「挂一整天」换过存储。\u003C\u002Fp>\n\u003Cp>早期桌面版却多背了一层：整份 \u003Cstrong>Electron\u003C\u002Fstrong>（等于再带一个 Chromium），只为了开主窗口、托盘和几个系统对话框。代理在干活，壳也在常驻；任务管理器里常能看到「工具本身」和「壳」叠在一起占内存。\u003C\u002Fp>\n\u003Cp>对浏览器扩展或偶尔开一下的工具，这还能忍。对\u003Cstrong>早上开、傍晚关\u003C\u002Fstrong>的联调代理，壳太重就变成日常成本。\u003C\u002Fp>\n\u003Ch2>先拆业务，再换壳\u003C\u002Fh2>\n\u003Cp>我们不是某天突然「删掉 Electron」。改造分三步，一步一步来：\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>业务进 Core\u003C\u002Fstrong>：代理、规则、证书、配置、抓包存储收进独立的 Core 进程（Gateway + engine），UI 通过 HTTP \u002F WebSocket 与之交互。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>托盘独立成 Launcher\u003C\u002Fstrong>（约 v1.1.7）：系统托盘、模式切换、拉起与监控 Core，不再绑死在 Electron 主进程里——关掉主窗口，Core 里的代理仍会继续跑。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>桌面壳变薄\u003C\u002Fstrong>：主窗口只负责加载 Core 托管的那套 Web UI，再补上窗口控件、外链、文件对话框等系统能力。\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>走到第三步，Electron 越来越像「过度包装」：业务已经不在壳里，却还要为窗口打包一整套 Chromium，还要跟原生模块 ABI、杀软误报、安装体积反复较劲。\u003C\u002Fp>\n\u003Cp>v1.2.1 起，桌面壳换成 \u003Cstrong>Tauri 2\u003C\u002Fstrong>：用系统 WebView 打开同一套 UI，\u003Cstrong>不再内嵌 Chromium\u003C\u002Fstrong>。\u003C\u002Fp>\n\u003Ch2>现在长什么样\u003C\u002Fh2>\n\u003Cp>Launcher 管进程，Core 跑业务，界面有两种入口——标准模式走 Tauri 壳，Lite 模式走系统浏览器：\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>层\u003C\u002Fth>\n\u003Cth>干什么\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Cstrong>Launcher\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>托盘、启动\u002F停止 Core、Lite \u002F 标准模式切换\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>Core\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>代理与全部业务能力\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>Tauri Shell\u003C\u002Fstrong>（标准模式）\u003C\u002Ftd>\n\u003Ctd>薄桌面窗口：加载 Core URL、无边框控件、回放独立窗、系统对话框等\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>浏览器 Lite\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>系统浏览器打开同一 Core URL，不依赖桌面壳；适合只想用 Web UI、或不想多开一个桌面窗口的场景\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>两种模式加载的是同一套 Web UI，差别只在「谁负责开窗」——Tauri 壳或浏览器标签页，而不是两套产品逻辑。换成 Tauri 之后，这条分工更清晰：Shell 只服务标准模式，Lite 本来就不需要内嵌 Chromium。\u003C\u002Fp>\n\u003Cp>工程上，Shell 目录很克制——业务不往 Rust 里搬，只做窗口与少量系统桥接。抓包、Mock、证书信任，仍然走 \u003Ca href=\"\u002Fdocs\u002Finstall\u002F\">安装与首选项\u003C\u002Fa>、\u003Ca href=\"\u002Fdocs\u002Fproxy-ssl\u002F\">代理与 SSL 证书\u003C\u002Fa> 那条你已经熟悉的路径。\u003C\u002Fp>\n\u003Ch2>换壳时踩过的坑\u003C\u002Fh2>\n\u003Cp>迁壳不是改个打包脚本就完事。窗口与系统能力要重新对齐，否则「看起来像桌面 App」的部分会先出问题：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>最大化 \u002F 最小化 \u002F 关闭\u003C\u002Fstrong>：无边框窗口控件要按新壳重接；关闭主窗口后，仍应能从托盘重新打开并聚焦。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>外链与存文件\u003C\u002Fstrong>：链接用系统默认浏览器打开；保存文本等走系统对话框，不再走旧的 IPC 路径。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>录制回放\u003C\u002Fstrong>：本地录制文件要能打开并导入回放窗，离线复盘不能因为换壳断掉。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>安装与更新（Windows）\u003C\u002Fstrong>：安装前检测进程占用、附带必要运行库、应用内改为拉完整安装包——壳换了，发布通道也要跟着稳。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>这些在 \u003Ca href=\"\u002Fchangelog\u002F\">更新日志 1.2.1\u003C\u002Fa> 里有对应条目。升级后若某块窗口行为不对劲，优先对照这一版。\u003C\u002Fp>\n\u003Ch2>改完之后，你能感知到的变化\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>壳更轻\u003C\u002Fstrong>：主窗口不再绑一整套 Chromium；同样是「开着 DevPeek 联调」，后台常驻更克制。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>关窗不会停代理\u003C\u002Fstrong>：Launcher 管 Core；关主窗口只是藏起界面，需要时再从托盘打开——更贴近「代理挂在后台」的用法。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Lite 与标准模式更顺\u003C\u002Fstrong>：Lite 仍是浏览器里同一套 UI；标准模式只是换了更薄的桌面壳。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>安装与更新更稳\u003C\u002Fstrong>：Windows 仍是熟悉的安装包名与更新流程，壳侧体积与依赖结构按 Tauri 重做了一遍。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>说白了：我们想让 DevPeek \u003Cstrong>胖在该胖的地方\u003C\u002Fstrong>（代理、规则、历史、调试），而不是胖在「显示一个本地网页」上。\u003C\u002Fp>\n\u003Ch2>和上一篇是同一条线\u003C\u002Fh2>\n\u003Cp>\u003Ca href=\"\u002Fblog\u002Fdev-build-log-sqljs-to-better-sqlite3\u002F\">抓包历史从 sql.js 迁到原生 SQLite\u003C\u002Fa>，解决的是「挂久了内存与卡顿」。\u003Cbr>这篇换壳，解决的是「为开窗多背一整套浏览器」——两条都指向同一目标：\u003Cstrong>长时间联调时，工具自己少添乱\u003C\u002Fstrong>。\u003C\u002Fp>\n\u003Cp>若你从 Electron 时代某版一路升级上来，欢迎在长会话里试一下内存占用和关窗\u002F托盘行为；有异常到 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FGYPengDev\u002Fdevpeek\u002Fdiscussions\">GitHub Discussions\u003C\u002Fa> 说说场景（系统版本、Lite 还是标准模式、大概挂多久）。\u003C\u002Fp>\n\u003Ch2>相关文档\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Finstall\u002F\">安装与首选项\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fquick-start\u002F\">快速上手\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fproxy-ssl\u002F\">代理与 SSL 证书\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fchangelog\u002F\">更新日志\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr>\n\u003Cp>欢迎 \u003Ca href=\"\u002F\">下载最新 DevPeek\u003C\u002Fa> 试用标准模式与托盘常驻；若只想先看界面，也可在 Lite \u002F 浏览器模式下打开同一套 UI，再决定要不要用桌面壳。\u003C\u002Fp>\n",{"items":14},[15,16,23,30,36,44,50,57],{"slug":4,"title":5,"summary":6,"date":7,"featured":8,"seoDescription":9,"series":10,"seriesOrder":11},{"slug":17,"title":18,"summary":19,"date":20,"featured":8,"seoDescription":21,"series":10,"seriesOrder":22},"dev-build-log-sqljs-to-better-sqlite3","抓包历史为什么从 sql.js 迁到原生 SQLite","早期 DevPeek 用纯 JavaScript 版 SQLite 存抓包记录，联调一忙就占内存、列表发紧。我们换成系统级原生 SQLite 后，代理可以连续挂一整天，内存也稳。","2026-08-05","DevPeek 开发实录：抓包历史存储从 sql.js 换成原生 SQLite，解决长时间联调内存上涨、列表卡顿，让代理可以挂一整天。",1,{"slug":24,"title":25,"summary":26,"date":27,"featured":8,"seoDescription":28,"series":29,"seriesOrder":11},"mock-map-route-split-api","API 已迁新服务，前端还没发版？用「转发规则」联调","服务拆分后，前端仍请求旧 API，订单接口却已经迁到新服务。使用 DevPeek「转发规则」无需修改前端代码，即可把指定接口转发到新域名；若新服务未完成，还可以用 Mock 先跑通页面。","2026-07-26","微服务联调与 API 域名迁移：用 DevPeek「转发规则」做 API 转发，不改前端即可把旧域名请求指到新服务；服务迁移未完成时可用 Mock 先验页面。附接口联调 Demo。","api-debug-new-tricks",{"slug":31,"title":32,"summary":33,"date":34,"featured":8,"seoDescription":35,"series":29,"seriesOrder":22},"api-param-encryption-debug","H5 接口参数加密？DevPeek 一键解密调试","联调时接口参数 AES 加密看不到明文？用 DevPeek 参数转换功能，填好密钥和 IV 就能自动解密，还能改参重放。","2026-07-18","用 DevPeek 参数转换功能解密 AES-GCM 加密的 H5 API 请求，支持双向转换、明文编辑、调试重放。",{"slug":37,"title":38,"summary":39,"date":40,"featured":41,"seoDescription":42,"series":43,"seriesOrder":11},"h5-debug-console-mock","H5 调试实战（二）：Android WebView 白屏排查，从 Console 远程定位到 Mock 验证","活动 H5 在部分 Android 设备中点击按钮后白屏，请求全部 200 却没有页面反馈。通过 DevPeek Console 获取线上 WebView 运行日志，远程 eval 确认 polyfill 覆盖问题，再使用 Mock 验证异常状态下的降级页面。","2026-07-13",true,"H5 调试实战第二篇：排查 Android WebView 白屏问题。通过 Console 远程调试定位 JavaScript polyfill 兼容问题，并结合 Mock 验证接口异常场景下的页面降级逻辑。","h5-debug",{"slug":45,"title":46,"summary":47,"date":48,"featured":41,"seoDescription":49,"series":43,"seriesOrder":22},"wechat-h5-storage-debug","H5 调试实战（一）：微信 H5 localStorage 调试，在电脑上修改真机缓存","微信 H5 换测试号后头像仍显示旧用户，抓包确认接口正常，却定位到 localStorage 遗留旧数据。本文记录一次真实联调过程，以及如何在电脑上查看、修改微信 WebView 的 localStorage、sessionStorage 和 IndexedDB。","2026-07-11","微信 H5 调试实战：通过真实案例定位 localStorage、sessionStorage、IndexedDB 导致的数据缓存问题，对比 vConsole、Remote Debug 等方案，介绍真机 WebView 调试思路。",{"slug":51,"title":52,"summary":53,"date":54,"featured":41,"seoDescription":55,"series":56,"seriesOrder":11},"why-we-built-devpeek-h5-debug","我们为什么做 DevPeek（二）：App 里那页 H5，在电脑上也能对着查","登录接口用参数转换啃下来了，活动页 H5 却在 App WebView 里才崩。真机 remote debug 折腾一圈，DOM 和抓包还是两拨窗口——于是把镜像和自研调试面板收进 DevPeek。","2026-07-10","DevPeek 起源系列第二篇：App 内嵌 H5 只在真机出问题、remote debug 与抓包割裂的联调痛点，以及调试 Tab 如何把页面镜像到电脑并用自研面板查 DOM、Console 与 Network。","origin",{"slug":58,"title":59,"summary":60,"date":61,"featured":41,"seoDescription":62,"series":56,"seriesOrder":22},"why-we-built-devpeek","我们为什么做 DevPeek（一）：HTTPS 解密了，Body 还是天书","版本日前那晚，TLS 早就解开了，改请求里一个字段却还要翻脚本加解密。于是萌生做一个把业务加解密收进代理的工具——DevPeek 从这儿开始。","2026-07-09","DevPeek 起源系列第一篇：联调时请求体加解密的手工折腾，以及为什么先做一款把业务加解密收进代理的工具。",1786418274573]