Z ZPI 文档 v0.3.8
介绍页

Electron 启动与进程边界

前置:整体设计。开发启动命令见开发向导。

入口和职责

main/index.ts 负责应用生命周期、窗口、单实例/存储初始化、服务装配和 IPC 注册。preload 暴露受控 bridge;renderer 通过 bridge 读取快照、订阅事件和请求操作。共享类型在 desktop/shared 中维护,UI 组件不直接操作 fs、凭据或子进程。

主窗口使用专属 preload、入口 HTML 和受控桥接。用户浏览器面板使用独立沙箱 <webview>,挂载前移除 preload,不能获得主界面的 bridge 权限。不要把预览页面当作受信任设置界面。

服务 owner

服务 持有状态 生命周期重点
SessionHost 会话、run、插件快照、队列及事件订阅 事实先持久化,维护会话事务与通用服务接口
BuiltinPluginRuntime 提问、联网、协作、后台命令、记忆、标题与通知的运行时状态及策略 负责装配、恢复、取消与清理,关闭后等待 drain
StateStore/SettingsStore 业务与设置/凭据 单写者锁、schema、generation
History Worker JSONL 写入和索引 durable ack、错误传播
PaneServices PTY 与浏览器视图 owner 校验、显示边界、释放
通知/快捷键服务 系统注册与焦点状态 注册回滚和窗口销毁清理

插件实现位于独立的 builtin-plugins 包,不依赖 Electron、UI 或具体 SQLite 实现。桌面注入模型调用、存储、历史、事件和原生通知等通用接口,详见插件运行时隔离。

IPC 校验与订阅

renderer 发出的 task ID、路径、请求 ID 和选项都需在主进程校验,不能因为 TypeScript 类型正确就信任运行时输入。文件预览、导出、编辑器打开、终端输入和任务操作各有授权范围和参数检查。

订阅返回清理函数,组件卸载时解除;异步响应核对当前 scope,避免旧任务结果覆盖新任务。快照带水位,随后只应用更新的增量事件。bridge 使用结构化可序列化数据,不跨进程传真实对象句柄。

启动与退出

开发模式加载本地 Vite,生产模式加载构建后的 renderer;入口选择由 load-renderer 集中处理。窗口加载不应自动触发模型请求。

退出先停止接收新工作,收尾会话/队列和持久化,释放 Worker、原生视图、PTY、快捷键与存储锁。renderer 崩溃可以重建视图,但不能因此复送已接受输入。捕获错误保存在本地日志,项目不包含遥测上传链路。