## 需求 **移除 macOS 客户端对 Ollama 的运行依赖。不要把“另装 Ollama / 启动服务 / 配置端口 / 安装模型”作为用户使用 LCT 的必经流程,也不要只是把 Ollama 安装器搬进向导。** LCT 应当先提供可直接使用的实时原文字幕;翻译能力通过应用自带、应用管理的推理引擎提供。用户安装一个 LCT 即可开始使用,不需要理解或维护另一个推理服务。 ## 本次 GUI 实测 - 环境:Apple M4、16 GB、macOS 26.4。 - 测试版本:从 master 的 `c3dd390b0e4844d6a123062b6ad7e3eacfac3b03` 源码本机编译,使用临时本机签名;不是已发布、已公证的 Mac 安装包。 - 欢迎向导、权限页面、主界面、设置、历史页面可以打开。 - 向导可以选择 `Skip for Now`,随后显示 `Setup Skipped` 并进入主界面。 - **进入主界面后点击 `start`,仍提示 `Ollama is not installed...`,保持 idle,连原文语音识别也无法启动。** 当前“跳过设置”只允许看界面,没有提供可用的基础模式。 - 已打开并确认 YouTube 英文视频正在播放;由于上述启动检查,未能进入“视频声音 → 原文字幕 → 翻译”的完整测试。不能据此宣称识别或翻译已经通过验证。 - 设置另提示默认英文缺少本地语音模型,麦克风设备不可用。这些是独立的环境前置条件:应分别引导处理,系统音频模式不应要求可用麦克风。 - 检查时正式 Releases 和现存 Actions 附件均无可下载的 macOS 应用包;macOS README 中的构建包下载说明与现状不符。 ## 问题所在 音频采集、苹果原生语音识别与翻译是不同能力,翻译引擎未就绪不应阻断基础字幕。 当前 `TranscriptionVM.start()` 在启动语音识别和音频采集之前,先要求 Ollama 服务可用、目标模型已安装且预热成功;任何一步失败直接 return: - [Ollama 服务、模型与预热检查](https://github.com/PCcoding666/LCT/blob/c3dd390b0e4844d6a123062b6ad7e3eacfac3b03/macos/LCTMac/ViewModels/TranscriptionVM.swift#L535-L623) - [随后才启动语音识别与音频采集](https://github.com/PCcoding666/LCT/blob/c3dd390b0e4844d6a123062b6ad7e3eacfac3b03/macos/LCTMac/ViewModels/TranscriptionVM.swift#L626-L656) 这是当前代码的启动耦合,不是语音识别必须依赖 Ollama。 ## 期望行为 ### 1. 首次启动即可使用的原文字幕模式 完成必要的系统授权、具备所选语言的苹果语音资源后,即可采集系统音频或麦克风并显示实时原文。默认提供这个可用路径,不要求翻译引擎或 LLM 模型先准备好。 所选语言缺少语音资源时,给出明确的安装/下载入口和进度或可执行指引;不能把语音资源问题混同为翻译服务问题。 ### 2. 翻译由 LCT 内置、管理推理运行时 - 采用可直接集成到应用的本地推理引擎,随应用交付并由 LCT 管理其生命周期,**不以 Ollama 为运行时或恢复路径**。 - 引擎与模型权重分开考虑:运行时随包;权重可在许可和包体积允许时随包,或在应用内一键下载,说明大小、硬件要求、进度、取消、失败重试及恢复方式。 - 不要求用户使用终端、包管理器、启动后台服务、配置 localhost 端口或管理外部程序。 - 翻译准备、下载、加载或失败期间,原文字幕持续可用;就绪后可在当前会话中开启翻译。 - 保持本地处理的产品定位;不要以强制云账号、API Key 或远程服务替代上述基础体验。 ### 3. 清晰的状态与可直接分发的 Mac 包 主界面分别展示“音频采集 / 语音识别 / 翻译”的状态。提供正式签名、公证的 Mac 发布包,并同步文档、向导及下载入口。 ## 验收标准 - [ ] 在未安装 Ollama、未运行 11434 服务、未下载 LLM 权重的干净 Mac 上,满足苹果语音资源和授权条件后,可直接显示 YouTube 英文视频的实时原文字幕。 - [ ] 系统音频模式在没有可用麦克风设备的 Mac 上可用。 - [ ] 暂停、恢复、停止及字幕导出可在原文模式工作。 - [ ] 原文模式不会执行 Ollama 安装探测、服务启动、健康检查、模型列表或预热请求。 - [ ] 翻译运行时随 LCT 交付;模型准备在应用内完成,无额外应用安装步骤。 - [ ] 模型下载取消/失败、翻译引擎加载失败或运行中失败,不会终止原文字幕或丢失已有会话内容。 - [ ] 模型和语音资源已就绪后,可离线完成识别与本地翻译。 - [ ] 发布包可直接下载、安装和启动,不要求用户先编译源码;文档与实际发布产物一致。
Activity