Skip to content

Electron 桌面应用

Investment Agent 的 Electron 桌面应用将完整的 Web 功能封装为本地应用,提供以下核心优势:

本地数据库

SQLite 数据库存储在用户目录,数据完全本地可控,支持离线使用。

系统级集成

原生通知、托盘图标、Dock 徽章、自动更新等系统级功能。

独立运行

内置 Node.js 服务端,无需额外部署,开箱即用。

安全隔离

主进程与渲染进程隔离,IPC 安全通信,敏感操作受控执行。

仅支持 macOS 平台:

  1. 访问 GitHub Releases
  2. 下载 ig-x.x.x-arm64.dmg(Apple Silicon)或 ig-x.x.x-x64.dmg(Intel)
  3. 打开 DMG,将 ig 拖入 Applications 文件夹
  4. 首次启动如遇安全提示,前往 系统设置 → 隐私与安全性 点击”仍要打开”

macOS 上应用数据存储在以下位置:

平台数据目录
macOS~/Library/Application Support/ig/
┌─────────────────────────────────────────────┐
│ Electron 主进程 │
│ • 窗口管理 • 托盘图标 • 自动更新 │
│ • IPC 处理 • 服务端子进程管理 │
├─────────────────────────────────────────────┤
│ UtilityProcess (Node.js) │
│ • Next.js App Router • SQLite 数据库 │
│ • AI 引擎 • 业务 API │
├─────────────────────────────────────────────┤
│ 渲染进程 (Chromium) │
│ • React 前端界面 • 图表渲染 │
│ • 通过 IPC 与主进程通信 │
└─────────────────────────────────────────────┘
  1. 主进程启动:Electron 加载应用入口
  2. 加载环境变量:从用户 Shell(.zshrc/.bashrc)读取环境变量,确保 API Key 等配置可用
  3. 启动服务端:以 UtilityProcess 启动 Next.js standalone 服务端,自动寻找可用端口
  4. 打开窗口:等待服务端就绪后加载本地地址
  5. 初始化完成:窗口显示、Tray 图标创建、自动更新检查

应用启动后 30 秒首次检查更新,之后每小时自动检查一次。后台下载完成后弹出通知,用户可选择立即安装或稍后重启。

Electron 从 GUI 启动(Dock/Finder)时,默认不加载 Shell 环境变量。应用会自动执行登录 Shell 读取用户配置,确保 API Key(OPENAI_API_KEYANTHROPIC_API_KEY 等)可用。建议将 API Key 添加到 ~/.zshrc,这样从任何位置启动应用都能正确读取。

Electron 使用 utilityProcess 启动独立的 Node.js 服务端,具备进程隔离、端口自分配、优雅退出和错误恢复能力,服务端崩溃不会导致 Electron 主进程退出。

原因:应用未经过 Apple 公证(Notarization)。

解决

Terminal window
# 移除隔离属性
xattr -rd com.apple.quarantine /Applications/ig.app
# 或在 系统设置 → 隐私与安全性 → 安全性 中点击"仍要打开"

原因:Electron 从 Dock/Finder 启动时无法读取 Shell 配置文件。

解决

  1. 确保 API Key 已添加到 ~/.zshrc
  2. 或使用 .env 文件放置在应用数据目录
  3. 重启应用使其重新加载环境

如需了解 Electron 开发环境搭建、构建打包和 IPC 通信等开发者内容,请参阅 开发者文档:Electron 开发与打包