模块以 src/main.ts 为 Electron main 入口,通过 app.requestSingleInstanceLock() 保证单实例;使用 BrowserWindow + contextIsolation: true + nodeIntegration: false 隔离渲染进程,并通过 src/preload.ts 经 contextBridge.exposeInMainWorld('vibeDesktop', ...) 暴露最小 IPC 接口(状态订阅、重试、打开日志、重启后端、凭据读写)。

核心职责分层: - BackendManager(src/backend-manager.ts)封装后端发现与进程管理:按优先级解析可执行文件(VIBE_TRADING_EXECUTABLE → 打包资源目录 → .venv/Scripts/vibe-trading.exe → PATH),分配空闲 loopback 端口,通过环境变量(API_AUTH_KEY、VIBE_TRADING_DESKTOP_BACKEND_ARGUMENTS 等)向子进程传递参数,并 spawn backend-watchdog.js 作为 watchdog 守护 Python 进程树。 - SecureCredentialStore(src/secure-credentials.ts)使用 electron.safeStorage 加密存储用户凭据到 userData/credentials.v1.json,并在初始化时从 ~/.vibe-trading/.env 和 qveris.json 迁移旧格式。 - locales.ts 提供桌面侧 UI 文案的多语言支持(en/zh-CN/ja/ko/ar,含 RTL)。

安全边界:主进程生成 32 字节随机 apiAuthKey,通过 webRequest.onBeforeSendHeaders 仅对匹配后端 origin 的 http://127.0.0.1/* 请求注入 Bearer 头;禁止页面内导航离开后端 origin,外部链接仅允许 http(s)://;IPC 全部经 assertMainWindowSender 校验 sender 为当前窗口。

构建与打包由 package.json 中的 electron-builder 配置驱动,产物包含 dist/**、额外资源 runtime/backend 及许可证文件;Windows 安装器通过 scripts/build-review-installer.mjs / build-signed-installer.mjs 分别生成未签名 NSIS 审查包与需 Authenticode 签名的发布包。测试与冒烟脚本集中在 scripts/,包括生命周期、凭据、父进程死亡等场景。