SuperAPI AI 工具集

services-layer

通用与其它

查看项目

更新于 10-15 21:38

技能介绍

用途:为 Whispering 应用的服务层提供架构准则,让服务层承载无 UI 的能力,调用方通过显式输入注入应用策略。服务可执行 IO 并持有服务本地运行时状态,不要求是纯函数,但必须不含 UI 与应用自有策略。\n\n主要能力与边界:服务不得在运行时读取 Svelte stores、settings、deviceConfig、toasts 或 report;凭据、模型名、端点、路径与用户选择须作为输入传入;返回领域数据与错误,而非展示文案或 UI 状态;在 #platform/* 接缝两侧暴露相同契约。$lib/operations 读取应用设置、选择 provider 并组合服务;$lib/queries 仅在 UI 需要时补充查询标识与可观察生命周期。\n\n可失败性:普通运行中可能失败的公开操作使用 Result<T, E>,可用错误处理技能适配会抛错的平台或库调用;无失败的内存操作或清理不要伪造 Result,如本地快捷键 register/unregister 返回 void、监听器初始化返回清理函数。错误归属于理解该失败的层,组合时保留下层带标签错误,仅为服务自身拥有的失败定义本地变体。\n\n对象或工厂:无构造输入或生命周期时默认使用直接的 ServiceLive 对象,download、analytics、text、transcription provider 采用该形态并用 satisfies <Service> 检查共享平台契约;只有拥有真实构造输入、可替换依赖或有状态生命周期时才用工厂,如 browser 与 CPAL recorder 工厂。不要为无状态对象机械地加 create 与 Live。\n\n平台与运行时选择:#platform/ 导入用于同时有浏览器与 Tauri 实现的能力,package.json#imports 在构建期决定实现,共享调用方只导入稳定名称,不检查 window.TAURI_INTERNALS;Tauri 专属能力使用可空的 #platform/tauri 命名空间。用户选择 provider 属于运行时策略而非平台接缝,分发保留在消费侧操作中。\n\nBarrel:$lib/services/index.ts 收集稳定的跨平台能力(analytics、text、blobs、blobSources、download、localShortcutManager、sound)。不必把所有 provider 实现塞入该 barrel,拥有分发表的运行时操作可直接导入其 provider 专属服务。\n\n限制:资料未提供具体安装命令、URL 之外的版本信息、收费方式或适用范围,暂未提供。