SSparkWorkruntime architecture
architecture / current state

从桌面窗口,到一轮可恢复的 Agent 执行。

事实源:docs/architecture/overview.md · 最后核对 2026-09-22

SparkWork 的主线不是“把模型接进窗口”,而是把模型、工具、权限、事件、持久化和交付结果放进同一条可观察的执行链。

五个主要边界

Renderer对话、代码、终端、浏览器、画布和审查视图。
Electron Main生命周期、窗口、IPC、文件、Git、终端与系统集成。
Agent Runtime会话、执行器、Provider、MCP、Skills、权限、工作流与团队。
StorageSQLite/WAL、迁移、Repository、事件、用量和审计。
Spark Engineturn machine、tool runner、权限、事件账本与 CLI/TUI。

启动顺序

  1. 主进程先隔离开发数据目录,安装日志、异常、退出和特权协议保护。
  2. Electron ready 后初始化 SQLite、迁移前备份、迁移和恢复检查。
  3. 启动会话、Provider、MCP、浏览器、终端、Computer Use、更新、通知和后台维护服务。
  4. 注册集中式 typed IPC,再创建安全配置的 BrowserWindow 和 preload。
  5. 窗口 ready-to-show 后显示;退出按注册的清理步骤停止任务、释放服务和关闭数据库。

任务流

  1. Renderer 接收消息,负责队列、计划审批和用户可见状态。
  2. Main IPC 将请求交给 Session Service/Turn Registry,不让 UI 直接调用 SDK。
  3. Runtime 选择 Claude SDK、Codex 或 Spark Engine,合并 Provider、Model、Skill、Rule 和 MCP 上下文。
  4. Executor 执行模型轮次;工具调用进入权限闸门,可一次允许、会话允许、拒绝或暂停。
  5. 事件、用量、性能、checkpoint、产物和失败原因写入存储或本地 workspace。
  6. 流式事件回到 renderer,形成时间线、审查面板、任务面板、通知和可恢复的后续操作。

仓库落点

目录 看什么 变更时注意
apps/desktop Electron main / preload / renderer IPC、权限、窗口生命周期和跨平台原生依赖
packages/agent-runtime 会话、执行器、Provider、MCP、工作流、团队、媒体 取消、重试、事件恢复和上下文预算
packages/storage SQLite、迁移和 Repository 旧数据库启动、备份、schema 兼容
spark-engine 内核、工具、权限、CLI、serve 保持独立构建、边界检查和包 smoke
apps/website 自有域名官网和用户文档 与 GitHub Pages 工程手册分开发布

必须守住的安全约束

Electron

  • contextIsolation: true
  • nodeIntegration: false
  • sandbox: true
  • preload 只暴露最小 bridge

运行时

  • 工具不绕过权限闸门
  • 凭据不进 SQLite 或日志
  • 外部能力有 adapter 和失败降级
  • 长任务有取消、关闭和恢复路径

阅读完整仓库架构文档 →