保留目录骨架与文件名,内容全部以当前源码为依据重写:范围与版本锚点 (2.0.0-Beta.1 / crate 0.1.0 / com.openless.app)、架构分层与 Core 模块地图、 桌面验收清单(功能域→源码入口→证据)、Linux 交接 8 篇(沿用 L01-L12 登记体系, 锚点落到 settings.rs/audio.rs/ports.rs 等)、后端接口契约、Android 计划、 运营指南 5 篇(以 provider descriptor 与实际 CSP/.gitmodules 为锚)。 原过程中的计划叙述、截图与历史收口记录不再保留。
2.4 KiB
2.4 KiB
01:Core 合同(Linux 可调用的面)
状态:canonical(2026-09-07 以源码为准重写);更新:2026-09-07。前置:交接入口。本文只约束接入,不规定页面布局。
1. 合同文件与启动门
- 公开合同:
openless-all/app/contract/backend-2.0.json,顶层键contractVersion/startupSnapshot/backendEvent/lessComputerVoice/androidJni/linuxFacade/enums。启动时校验版本;UI 必须先消费 startup snapshot 再渲染状态。 - 构造:
LinuxBackendBuilder::from_shared_providers(config)(linux-egui/src/backend.rs)创建与 Tauri 同源的 Core 后端;云 ASR/LLM/Omni 实现两端共用,不复制第二套。 - 事件:Core
events.rs语义事件 →LinuxHost::drain_events(lib.rs)→ UI reducer;订阅用LinuxHost::subscribe返回EventSubscription。 - 会话/取消:所有长操作(听写、转写、下载、QA、Agent)走 Core session 取消语义;UI 只触发与显示,不自建取消规则。
2. Core 公开模块(crates/openless-core/src/lib.rs)
按域的模块地图见架构文档第 3 节。Linux 直接相关:
- 业务门面:
api(对外接口)、domains(领域出口)、events、ports(Host 注入接口,含NoopEditObservationAdapter等默认实现)。 - 听写:
dictation_engine、silence_auto_stop、streaming_insert、hotkey_interpreter。 - 服务:
provider_*系列、omni、credentials、endpoint_security。 - 本地模型:
model_store、local_asr_service、local_asr_catalog。 - 领域:
history、vocabulary、correction、style_pack_store、marketplace、qa_service、selection_*、less_computer、remote_input_service。
3. 注入点(ports.rs)
Host 必须实现并注入:AudioRecorder、TextPolisher、TextInserter、CredentialStore、SettingsRuntime、TaskSpawner、EditObservationAdapter(未接时为 NoopEditObservationAdapter,见缺口 L02)、LinuxHostActions。注入清单与默认值以 backend.rs builder 为准;缺省实现表示"未接线",不是"不支持"。
4. 纪律
- 保留启动、版本校验、事件与退出合同;改动先过
cargo test -p openless-core --locked与合同测试。 - 合同测试不替代真实平台证据(见07 验收)。