资讯动态

DeepSeek-Reasonix 桌面壳迁移性能基线:Wails 与 Electron 的启动、内存与进程树量化对比

发布时间:2026/9/12 12:31:08 来源:尧图企业网站定制
DeepSeek-Reasonix 桌面壳迁移性能基线Wails 与 Electron 的启动、内存与进程树量化对比【免费下载链接】DeepSeek-ReasonixDeepSeek-native AI coding agent for your terminal. Engineered around prefix-cache stability — leave it running.项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-Reasonix本篇技术指南以 docs/desktop-migration/baseline/README.md 为骨架完整呈现 DeepSeek-Reasonix 桌面壳Desktop Shell从 Wails 迁移到 Electron 过程中留下的量化基线Wails 冻结版本的启动耗时、进程树 RSS、进程数量与信号响应等指标以及同一脚本、同一机器上 Electron 开发构建的对照数据。读完本文你将掌握这套桌面壳资源测量的脚本化方法desktop-shell-metrics.sh、各指标的确切定义ready/healthy/RSS 采样口径并能对照 Phase F 验收门禁理解 Electron 壳在打包形态下的启动、标签页、泄漏与一小时持续使用表现。基线背景为什么冻结一个 Wails 基线DeepSeek-Reasonix 的桌面客户端原本基于 WailsWebView2/WebKitGTK在迁移到 Electron 壳之前团队先冻结了旧壳的一个构建用同一套测量脚本采集资源与性能数据作为后续所有 Electron 构建的对照基准。这套数据的约束条件写得很明确用scripts/desktop-shell-metrics.sh采集冻结基线构建为wails build -platform darwin/arm64运行环境为 Apple silicon、macOS 26.6共跑 3 次每次使用全新的一次性数据目录fresh disposable data home并设置REASONIX_DEV1。原始运行数据以 JSON 形式存放在 docs/desktop-migration/baseline/ 目录下wails-darwin-arm64-run{1,2,3}.json与本文并排。测量方法与指标口径要正确解读基线数字必须先理解脚本如何定义启动完成。从 scripts/desktop-shell-metrics.sh 的源码可以看到完整的测量流程一次性数据目录脚本用mktemp -d创建REASONIX_HOME/REASONIX_STATE_HOME/REASONIX_CACHE_HOME保证每次运行都是冷启动且通过REASONIX_DEV1跳过单实例锁对应 Electron 壳中REASONIX_DEV跳过 single-instance lock 的行为见 desktop/electron/README.md。ready与healthy两个阶段脚本以 100 ms 间隔轮询数据目录下**/diagnostics/lifecycle/*.json生命周期诊断文件ready是 Go 生命周期到达ready阶段healthy是 React 应用渲染完成且桥接心跳bridge heartbeat成功。注意起点是 Gomain开始执行对 Wails 是reasonix-desktop进程启动而非进程创建时刻。进程树 RSS脚本用ps -axo pid,ppid,rss,lstart,comm全量快照递归收集被测进程的后代再按WebKit、Electron Helper、reasonix-desktop、Reasonix Helper等进程名族把启动后出现的辅助进程并入家族macOS 上 WebKit XPC 辅助进程会 reparent 到 launchd必须按名字补抓求和得到 KiB。因此脚本注释明确警告只可比对同一脚本的多次运行不要与不同口径采样的数据比较。采样时机healthy之后 2 s、10 s、30 s可传第 4 个参数覆盖 idle 秒数。SIGTERM 响应发送SIGTERM后轮询 10 秒记录是否在 10 秒内退出并输出terminatedWithinMs与clean字段。Wails 冻结基线三次运行的中位数以下表格是原文档完整继承的基线中位数中位数取三次运行MetricMedian of 3Gostartup→ lifecycleready332 msGostartup→ frontendhealthyReact 挂载 桥接心跳3692 msProcess-tree RSS, healthy 2 s389 MiBProcess-tree RSS, healthy 10 s385 MiBProcess-tree RSS, healthy 30 s412 MiBProcesses in the tree4com.apple.WebKit.GPU、com.apple.WebKit.Networking、com.apple.WebKit.WebContent、reasonix-desktopSIGTERM honoured within 10 snoWails 壳忽略 SIGTERM脚本最终只能 SIGKILL从原始 JSON如 wails-darwin-arm64-run1.json可以看出单次运行形态run 1 的readyMs为 1248 ms、healthyMs为 4563 ms包含冷数据目录的首次启动开销run 2、run 3 复用热的 OS 文件缓存。RSS 采样中 run 1 在 healthy2 s 为约 389 MiB、10 s 约 380 MiB、30 s 约 404 MiBterminatedWithinMs11130 ms 且clean: false——正好印证了SIGTERM 不被响应、只能强杀的结论。该文档同时指出交互延迟会话切换、停止反馈、输入不在此脚本范围内由 desktop/frontend/bench 下的前端基准单独采集。同机同脚本的 Electron 对照Electron 侧使用 desktop/electron/scripts/metrics-launch.sh 启动该脚本把REASONIX_DESKTOP_SERVICE指向以-X main.versionv0.0.0-electron构建的 Go 服务二进制然后execElectron 二进制使被测量的 PID 就是壳本身这是让desktop-shell-metrics.sh能正确跟踪进程树的必要条件。Electron 版本为 44.2.0同样是三次运行、每次全新数据目录。原文档特别提示起点不同——Electron 的计时从 Electronmain进程启动含 Chromium 初始化开始因此其ready天然晚于从 Gomain计时的 Wails 数字。原文档完整对照表MetricWails (median of 3)Electron (median of 3)Deltalaunch → Go lifecycleready332 ms448 ms116 mslaunch → frontendhealthy3692 ms3742 ms50 msProcess-tree RSS, healthy 2 s389 MiB665 MiB276 MiBProcess-tree RSS, healthy 10 s385 MiB668 MiB283 MiBProcess-tree RSS, healthy 30 s412 MiB697 MiB285 MiBProcesses in the tree45Electron、Electron Helper、Electron Helper (Renderer)、reasonix-desktop-service-versionedSIGTERM honoured within 10 snoyes (247 ms)解读要点均来自原文档原文固定成本是 Chromium 运行时 第二个 renderer 类进程而前端达到 healthy的时间在噪声范围内与 Wails 持平50 ms。未打包的 Electron 壳通过reasonix://app处理器从frontend/dist加载 UI与打包构建走同一条路径——这正是 desktop/electron/README.md 所述架构rendererreasonix://app→ preloadwindow.reasonixDesktop→ main process → NDJSON JSON-RPC over stdio →reasonix-desktop --host-rpc。2 s 到 30 s 之间的空闲增长两个壳处于同一量级该增长会在 Phase F 验收运行中以一小时维度重新测量。打包形态的 Phase F 验收证据原文档指向的 PHASE_F_ACCEPTANCE.md 记录了打包 macOS 产物dist/Reasonix-darwin-arm64.zip候选 SHA650e01e31zip 191.7 MiB解包.app489 MB上的验收运行对应 docs/DESKTOP_SHELL_MIGRATION.md 中 Phase F 门禁的资源/性能行。三组数字放在一起对比均为中位数MetricWails baselineElectron dev shellElectron packagedΔ vs Wailslaunch → Go lifecycleready332 ms448 ms598 ms266 mslaunch → frontendhealthy3692 ms3742 ms3991 ms299 msProcess-tree RSS, healthy 2 s389 MiB665 MiB672 MiB283 MiBProcess-tree RSS, healthy 10 s385 MiB669 MiB673 MiB288 MiBProcess-tree RSS, healthy 30 s412 MiB698 MiB660 MiB248 MiBProcesses in the tree455Reasonix、Reasonix Helper ×2GPU/utility Renderer、reasonix-desktop1SIGTERM honouredno需 SIGKILLyes (247 ms)yes (239–252 ms3/3 干净退出)improved打包形态的额外结论run 1 承担了解包副本的首次启动成本ready 3901 ms、healthy 7592 msrun 2–3 为热缓存ready 595/598 ms、healthy 3945/3991 ms因此中位数反映热启动。time-to-healthy 比 Wails 多 299 ms——若套用max(1.2×, 50 ms) 4430 ms的启动门禁仍在范围内计划对启动/内存的规则是按测量结果发布固定开销本身不构成失败。~250–290 MiB 的 RSS 增量是 Chromium 运行时固定成本在 30 s 空闲窗口内保持平坦除 Wails 自身增长外无额外空闲增长。浏览器标签页场景temporary表面不同源空闲 683 MiB/5 进程/1 WebContents → 1 标签 750 MiB/6 进程/2 → 5 标签 1226 MiB/10 进程/6 → 全部关闭后 5 s 沉降回到 673 MiB/5 进程/1无标签残留。35 次打开/关闭循环门禁要求 ≥30WebContents 数量、每 WebContents 监听器总数、活动句柄数全程不动进程数沉降后回到 5RSS 在 35 个循环中漂移 30 MiB664→694且增量递减每 10 个循环 11/9/10、循环后不再攀升形态是 renderer/OS 缓存而非每循环泄漏结论为标签开合无持续泄漏。会话循环35 ×NewSessionDeleteSession中 Go 服务 RSS 69→70 MiB会话数 0→0——注意这是空白会话的 RPC/轮转路径验证。一小时持续使用5 个标签保持打开每 5 分钟一次临时标签开合 业务 RPCWebContents、监听器、句柄数与标签集合整小时恒定RSS 1271→1323 MiB52 MiB4%约第 35 分钟见顶 1381 MiB 后回落——减速、部分被 GC 回收的增长集中于主窗口 renderer245→352 MiB非单调泄漏。Wails 侧无对应一小时数据基线只覆盖 30 s按计划以测量值发布。交互 p95 门禁与未覆盖缺口迁移计划原要求交互 p95会话切换、停止反馈、输入延迟相对 Wails 基线保持在max(1.2 × baseline, baseline 50 ms)内但验收文档诚实记录了关键缺口Wails 交互基线从未记录——基线 README 声称交互延迟由desktop/frontend/bench单独采集但仓库中不存在任何 Wails 侧数字且 Wails 在本阶段已被移除相对门禁无法计算。作为替代同一机器同日测量了前端基准pnpm test:benchheadless Chromium 中的生产前端38 轮工具密集与 46 轮 markdown 密集会话冷打开首帧 p95 20 ms门禁 100 msPASS冷打开可交互 p95 944/337 ms门禁 300 msFAIL归因于首次冷打开的运行间方差会话切换 p95 471/475 ms门禁 300 msFAIL激活就绪 p95 98/101 msPASS输入事件 p95 24 ms门禁 200 msPASS长任务 p95 79/86 ms门禁 50 msFAIL p95100 次切换后保留堆增长 3.5 MiB门禁 20 MiBPASSDOM 节点增长 0.0%PASS。由于该 harness 与前端对两个壳完全相同这些数字不能归因于 Electron 迁移。打包壳内的真实探针PerformanceObserver 真实键盘事件15 次击键预热后keydown/input p50 24 ms、p95 40 ms、max 72 msn80与 headless 基准一致无预热时首次击键需支付一次性 composer 初始化。明确列出的未测量缺口停止反馈 p95 与流式/长会话内存需要配置了模型提供商的运行中 turn一次性数据目录中没有且无 Go 侧 mock 提供商带真实内容的会话开合新 home 中会话为空白35 循环只证明 RPC/轮转路径真实壳的会话切换 p95新 home 项目树为 0 主题侧边栏切换无法在打包壳内演练以前端基准数字代替。结论与阅读指引这套基线文档的价值在于它把换壳这种容易停留在定性讨论的工程决策落实为同一脚本、同一机器、同一采样口径下的可重复量化证据。Wails 在启动计时从 Gomain起算和常驻内存上占优Electron 的代价是 Chromium 运行时固定成本约 250–290 MiB 与一个额外进程但换来的是可靠、快速的 SIGTERM 响应与完整的浏览器表面能力前端可交互时间两者在噪声范围内持平。原始证据链完整可查Wails 三次运行见 wails-darwin-arm64-run1.jsonrun 2/3 同目录Electron 开发构建见electron-darwin-arm64-run{1,2,3}.jsonPhase F 各场景证据见electron-packaged-darwin-arm64-*.json系列。测量工具本身在 scripts/desktop-shell-metrics.sh迁移整体规划与门禁在 docs/DESKTOP_SHELL_MIGRATION.mdElectron 壳架构与构建方式在 desktop/electron/README.md。【免费下载链接】DeepSeek-ReasonixDeepSeek-native AI coding agent for your terminal. Engineered around prefix-cache stability — leave it running.项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-Reasonix创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价