- 主页前置下一步与真实服务状态,服务卡直达对应设置;概览与热力图排布调整 - 设置按任务分类并支持搜索、焦点返回与 Escape 语义;旧 section ID 保持稳定 - AI 分区拆分语言模型/语音识别/本地模型/连接;渠道列表与表单重构,设置实底 - 本地模型管理与下载目录重排,补空态、主操作与窄屏布局 - Core 生成 provider descriptor 公开目录供浏览器预览懒加载,原生 IPC 合同不变 - Linux egui 按开始/听写/AI 服务/模型/工具/手机输入/历史/设置组织页面并加环境引导 - 五语言文案与文档(体验梳理、架构、计划收口)同步
3.5 KiB
Core 2.0 架构
状态:canonical;阶段:implementation-backed;更新:2026-09-07;源码基线:fc38edd1,应用版本 2.0.0-Beta.1,公开合同 2.0.0。
分层与入口
flowchart LR
UI[React 桌面界面] --> IPC[typed IPC / 启动合同]
IPC --> Tauri[Tauri Host]
Egui[Linux egui 界面] --> Linux[Linux Host facade]
Tauri --> Core[openless-core 共享业务]
Linux --> Core
Core --> Ports[Host interfaces]
Ports --> Native[录音 / 系统凭据 / 热键 / 目标输入 / 窗口]
Core --> Events[带 sequence 与 session 的事件]
Events --> Tauri
Events --> Linux
应用工作目录为 openless-all/app。
| 层 | 实现位置 | 职责 |
|---|---|---|
| React | src/App.tsx、src/components/FloatingShell.tsx、src/pages/ |
启动显示、页面、草稿、操作与结果反馈 |
| IPC | src/lib/ipc/shared.ts、src/lib/ipc/ |
2.0.0 启动检查,typed invoke,业务调用前等待 Core 可用 |
| 共享 Core | crates/openless-core/src/lib.rs、api.rs、domains.rs |
公开门面、领域服务、状态机、配置、迁移与会话规则 |
| 原生接口 | crates/openless-core/src/ports.rs |
录音、插入、资源、目标上下文、窗口等 Host effect 合同 |
| Tauri Host | src-tauri/src/commands/、core_adapters.rs、tauri_coordinator_host.rs、tauri_events.rs |
连接现有 Windows/macOS 原生实现并桥接 React |
| Linux Host/UI | linux-egui/src/{backend,lib,main}.rs |
共享 Core 接入、现有 Linux Adapter、egui 页面与事件显示 |
| 合同 | contract/backend-2.0.json、crates/openless-core/tests/、前端 IPC 测试 |
版本、DTO、事件和领域行为回归 |
听写与状态
UI/热键发起 → Core 获取会话及真实目标 → Host 录音与识别 → Core 转写/润色 → Host 向原目标输入 → 真实结果、历史与事件反馈。停止录音、取消会话和正常结束分别调用已有门面,页面导航不接管录音资源。
主窗口与胶囊、问答、选区预览、Agent 等 WebView 共用启动合同检查。布局改进只改变启动说明,不跳过检查。recordingReady 由首帧 PCM 证据驱动,不能用定时器伪造就绪。
事件以 sequence 去重,以 sessionId 归属;Unicode delta 的 offset 是 scalar 数量。QA 全量 messages 校准与 Agent 多轮重放仍遵循各自规则。具体语义的规范来源是 Linux 事件与会话合同及对应代码。
凭据状态、provider descriptor 与有效 pipeline 由 Core 提供。UI 不在渠道 ID 上猜认证规则,不回显已有密钥,不把“已配置”当成设备或网络测试成功。普通写入、已发送粘贴、已复制回退和未知结果分别反馈。
平台边界
当前完整支持范围、Linux 交接要求与发布验收统一指向 2.0 当前范围。Linux 有运行与界面起点,但 缺口登记仍存在。React 的 Linux 外观预览不能替代 egui 产品验收。
验证入口
npm test 会先构建 React,再跑前端与源码合同;其中 check-hotkey-injection.mjs 还会运行 Core 的实际快捷键测试。Core 全量验证使用 cargo test -p openless-core --locked;Linux 使用 cargo test -p openless-linux-egui --locked,原生目标验证遵循 Linux 验收。本次实际执行结果在 体验梳理,不要将列出的命令视作已经执行。