Skip to content

系统概览 ​

DeLive 是一个 Electron 桌面应用,在 主进程(Node.js 运行时)和 渲染进程(Chromium 浏览器上下文)之间有清晰的分离。

架构图 ​

录制数据流 ​

API 请求流程 ​

Provider 架构 ​

关键架构决策 ​

Renderer 中的 IndexedDB ​

所有会话数据存储在渲染进程的 IndexedDB 中,配合 sessionRepository 中的内存缓存。主进程无法直接访问 IndexedDB。当 API 服务器需要数据时,通过 IPC 请求渲染进程,后者从缓存响应(< 5ms 延迟)。

单一 HTTP 服务器 ​

端口 23456(被占用时依次尝试 23456–23460,再退回系统分配的空闲端口)在一个 http.createServer() 上托管多个 WebSocket 代理(/ws/volc、/ws/mistral、/ws/deepgram、/ws/assemblyai、/ws/elevenlabs、/ws/gladia、/ws/sixtydb)、REST API(/api/v1/*)和实时转录 WebSocket(/ws/live)。每个代理使用 noServer: true 模式并手动路由 upgrade 事件。

MCP 作为独立进程 ​

MCP 服务器是独立的 Node.js 脚本,未嵌入 Electron。Claude Desktop 将其作为子进程启动,通过 REST API 与 DeLive 通信。这种设计意味着 DeLive 和 MCP 服务器可以独立崩溃。

Provider 注册机制 ​

十四种 ASR 后端注册在单例 ProviderRegistry 中。每个 Provider 实现通用的 ASRProvider 契约,但使用不同的音频格式和传输方法。CaptureManager 根据 Provider 能力选择合适的音频管线。

模块映射 ​

层关键模块
桌面外壳main.ts, mainWindow.ts, captionWindow.ts, tray.ts, shortcuts.ts
IPCappIpc.ts, captionIpc.ts, safeStorageIpc.ts, updaterIpc.ts, diagnosticsIpc.ts, apiIpc.ts, localRuntimeIpc.ts
APIapiServer.ts, apiBroadcast.ts
代理volcProxy.ts, shared/volcProxyCore.ts, shared/mistralProxyCore.ts, shared/deepgramProxyCore.ts, shared/assemblyaiProxyCore.ts, shared/elevenlabsProxyCore.ts
渲染应用App.tsx, components/*, i18n/*
编排useASR.ts, captureManager.ts, providerSession.ts, captionBridge.ts
Providerregistry.ts, base.ts, windowedBatch.ts, implementations/*
状态sessionStore.ts, settingsStore.ts, uiStore.ts, topicStore.ts, tagStore.ts, transcriptStore.ts(向后兼容 facade)
持久化sessionRepository.ts, sessionStorage.ts, settingsStorage.ts, backupStorage.ts
契约shared/electronApi.ts, electron/preload.ts

Released under the Apache 2.0 License.