Wordless Desktop 技术架构
Desktop 全景图
Section titled “Desktop 全景图”这张图只描述 Wordless Desktop。它从用户可见的 React 工作台开始,经过强类型 Preload Bridge 与 IPC 边界,进入 Electron Main Process 中的 WordlessRuntime,再展开到 Profile、Driver、Pi 派生 Agent loop、扩展、权限策略、工具服务和本地数据。点击图片可以打开完整尺寸版本。
| 层 | 主要位置 | 负责 | 关键边界 |
|---|---|---|---|
| Renderer Process | apps/desktop/src/renderer |
Workbench、Composer、会话、搜索、审批卡、Artifact 预览、Settings、Skills & MCP | 不直接获得 Node.js 或任意 IPC 权限 |
| Preload + DesktopBridge | apps/desktop/src/preload、apps/desktop/src/bridge |
通过 contextBridge 暴露强类型、白名单化的方法和事件 |
Renderer 不能构造任意 IPC channel |
| Electron Main Process | apps/desktop/src/main |
窗口、菜单、更新、通知、账号、Cloud Sync、凭据和协议处理 | 承担操作系统权限与资源生命周期 |
| WordlessRuntime | packages/runtime |
会话、上下文、模型配置、Profile/Driver 选择、工具事件、审批、Skill/Connector registry | 不依赖某个具体 Renderer 组件 |
| Profiles | packages/profile-* |
定义 General、Coding、Presentation、Spreadsheet、Data Analysis 的说明、默认能力和连接器 | Profile 声明工作模式,不直接执行工具 |
| Agent Drivers | packages/agent-driver-* |
创建 Agent session、组装工具、把内核事件转换为 Runtime 事件 | Driver 通过 SDK 与 Runtime 解耦 |
| Agent kernel + extensions | packages/agent、packages/ai、packages/agent-extension-* |
模型流、Agent loop、tool call、计划、子任务和上下文压缩 | Pi 派生内核不绕过 Wordless 权限策略 |
| Workspace policy | packages/agent-workspace-policy |
工具执行前检查路径、访问级别和风险,产生审批决定 | 审批发生在副作用之前 |
| Capability services | apps/desktop/src/main、packages/platform-node |
OfficeCLI、数据分析、深度研究、工作区搜索、媒体与预览协议 | 只通过 Main/Runtime 受控调用 |
| Persistence | packages/persistence、Electron userData、工作区 |
SQLite、JSON、session journals、凭据、工作区文件和 artifacts | 默认本地保存;安全设置同步需要用户主动开启 |
一次请求如何流动
Section titled “一次请求如何流动”- Composer 将文本、
@文件/文件夹、$Skill、当前模型、思考深度与访问级别组合成结构化提交。 DesktopBridge通过 Preload 中的白名单方法发送wordless:*IPC 请求;Renderer 不能直接调用 Node.js。- Main Process 把请求交给
WordlessRuntime。Runtime 加载会话、Profile、Driver、已启用的 Skills、Connectors 和 Extensions。 - Driver 创建对应的 Agent session;Pi 派生 loop 调用配置的模型并流式产生文本或 tool call。
- 工具执行前,Workspace Policy 检查工作区边界、访问模式和风险。需要用户决定时,Runtime 发出 approval event 并暂停该操作。
- 获批工具由 Main Process 的 capability service、内置工具或已启用 MCP 执行。结果进入 session journal,并以 running、success 或 failed 事件返回 Renderer。
- Thread 和右侧 Artifact workspace 消费事件;Presentation、Spreadsheet 或 Data Analysis 产物变化时刷新对应预览。
数据与网络边界
Section titled “数据与网络边界”- 始终本地: 工作区文件、会话 journals、SQLite 数据、artifacts、API Key 与 OAuth 凭据。
- 按任务发送: 只有完成当前请求所需的提示词和上下文会发送给用户选择的模型 Provider。
- 显式启用: MCP Connector 必须配置并启用后才能提供工具;高风险操作仍进入审批流程。
- 可选同步: Google Drive
appDataFolder仅在用户开启 Cloud Sync 后同步允许的偏好和安全模型元数据。
Desktop 相关上游项目
Section titled “Desktop 相关上游项目”- Agent 内核:earendil-works/pi
- 桌面容器:electron/electron
- Renderer UI:facebook/react
- 虚拟消息列表:petyosi/react-virtuoso
- Office 引擎:iOfficeAI/OfficeCLI
- 工作区搜索:dmtrKovalenko/fff(pi-fff package)