安装程序审查:剩余发现与重叠¶
源代码评审基线: fb9a960c88744edc36daf2cf38d48df0971ee713,2026-10-04,应用 0.5.6。提案;该仅文档补丁未修复任何发现。当前活动的渲染器是 electron/src/renderer/src,而非旧版共享向导。以下历史测试使用的是该提交的干净归档,而非集成分支。
集成刷新:2026-10-05¶
该分支现已包含主分支 990f0627ba14dbb309b88c0051ebb953d3101800,其中包括来自 #2611 的 CPU 预算变更。本提案不添加任何运行时行为。这是一次文档集成刷新,而非重新运行源代码探测或原生验收。以下发现、按行定位的证据和本地结果仍是 2026-10-04 快照,必须在实现前重新验证。
- #2602 已在
5258077d5967d860da3954bad11be447256e8a61合并,包括磁盘余量措辞、Rosetta 指南和运行时包进度标识。保留这些修复;它们不再是开放 PR 的工作 - #2605 已在
3fcd381e5c3282b084384dbc38be28ddaba0e6bf合并,包括源代码 CPU 选择/无同步重启和原生兼容性辅助工具 - #2585 仍处于开放状态,位于
e87cba0449485b226674961be796b9d3e20ed0a1。主分支已通过 #2602 吸收了重叠的修复;在将此分支用作实现证据之前,请比较剩余的 diff - #2607 仍是草稿,现位于
51e4eb33cc7cbec39493cfeb9027e6a6b15710fb。其下方较早的已评审版本已过时。将当前的 Windows ROCm 工作与已落地的 #2605 选择器/解释器变更进行协调,并保留其原生资格验证门
这些状态检查并不确立新的平台支持或合并就绪。在集成 PR 头部上全新运行的托管 CI 才是合并门禁;以下任何本地测试或硬件结果均不声称适用于该头部。
源代码评审基线中已解决的问题¶
- #2500:已打包的非 NVIDIA x64 CPU wheels、CPU float32 和实验性 Windows ARM 打包。请勿重新引入旧的笼统 CPU/CUDA 引导声明
- #2578:Electron 原生平台安装指南、AppImage/deb 实际情况、当前的卸载文件夹/提权保护、尽力而为的
.pth修复以及仅稳定版桌面更新。撤销旧发现 R11(旧版安装指南);不要提议恢复 Preview 或一刀切的卸载脚本变更 - #2557:包管理的安装可以通过
VOICESTUDIO_DISABLE_UPDATER=1禁用应用内更新;Linux 指南涵盖了社区 AUR 包
这些已合并的变更不构成本次评审的原生验收。
开放 PR 重叠¶
历史快照:只读的 PR 元数据/diff 已于 2026-10-04 检查。要了解当前的合并/开放状态,请参阅集成刷新:
| PR / 已评审头部 | 已提出的相关工作 | 本处的处理方式 |
|---|---|---|
#2602 · 4cf3db00993b910a50c00b19ca6cb3cb823b440b · 开放 |
命名磁盘余量/总容量警告、Mac 架构/Rosetta 指南和运行时包进度标识 | 不要再次实现这些内容;落地后重新检查。余量措辞不同于 R5/R7;运行时包字节不同于 R3 的模型包聚合 |
#2585 · e87cba0449485b226674961be796b9d3e20ed0a1 · 开放 |
运行时包进度标识、存储扫描/清理以及更广泛的桌面/音频修复 | 避免重复的进度/存储工作。其通用存储清理变更不同于 R8 的 sidecar 卸载函数 |
#2605 · 441673e1ff5423e6713aef834ec0b1b62dc6c703 · 草稿 |
源代码 CPU/CUDA 依赖组、同步前的 CPU 选择、无同步重启、提取的原生兼容性辅助工具和 Electron 惰性可执行文件启动 | 复用此源代码安装工作;打包的 CPU 引导已在 #2500 中落地。R6 剩余的配方边界问题并未通过这项 CPU 变更解决 |
#2607 · 265295e7e1b1687308314aefe27e219c5994e95f · 草稿 |
更广泛的 Windows AMD/ROCm 桌面与引擎集成,依赖 #2600 的源代码配方;Windows x64 Python 3.12、HIP Torch/CT2 检查和配方感知的运行时标识 | 与 #2605 和 #2602 协调,而不是创建另一个选择器或配方。在启动器/解释器选择一致之前,保留文档中所述的独立源代码流程;此草稿不构成已发布或合格的 AMD 支持 |
此处未断言任何开放 PR 的测试或合并就绪状态。它们的作用域也相互重叠;本提案不挑选胜者,也不吸收这些分支。实现前请刷新此快照,尤其是当任何已评审头部发生变化时。
历史 #2605 / #2607 协调: 在上方头部有七个路径重叠:CHANGELOG.md、docs/install/windows.md、electron/src/main/runtime-project.ts、electron/src/main/runtime-project.test.ts、electron/src/main/runtime-torch-variant.test.ts、scripts/setup.py 和 tests/test_setup_rocm_variant.py。保留 #2605 的辅助工具提取和可选的 cuDNN HIP 排除,同时保留 #2607 的配方感知运行时工作。它们的运行时测试各自独立添加了全局 fetch 模拟(成功与离线拒绝);请选择一个明确的基线并辅以逐测试覆盖,而不是重复的桩代码。#2605 中的源代码选择器在 Windows ROCm 请求时会回退到 CPU/CUDA,其启动器在 x64 上不选择 Python 3.12。#2607 的设置门要求 Windows x64 Python 3.12:未经更改地合并这些分支可能会先同步 CPU/CUDA 栈,然后拒绝现有的 3.11 环境。保留其独立源代码配方,或在呈现统一路径之前协调并测试启动器。#2607 还保留了干净 Windows/打包工件、引擎覆盖和非 ASCII 路径验证门;其报告的硬件实验不构成本提案的验收。
剩余发现¶
P1:正确性达到首次可用工作状态。P2:恢复/资源/可用性差距。优先级并不暗示已观察到的数据丢失或实测用户失败率。
| ID | 证据 / 优先级 | 基线处的剩余行为 | 最小后续步骤 |
|---|---|---|---|
| R1 | 隔离来源探测 · P1 | 设置的正大小缓存谓词与目录完整性不一致 | 复用目标感知的完整性/就绪度投影 |
| R2 | 来源审查 · P2 | 简单包视图排除了失败行,且没有保留失败/取消控件;详细信息需要高级视图 | 在简单视图中公开现有的恢复功能 |
| R3 | 隔离来源探测 · P2 | 包百分比仅对活动任务求和,因此已完成的工作会消失 | 在已接受计划的分母中保留已完成的工作 |
| R4 | 来源审查 · P2 | 模型/sidecar 状态是进程本地的;详细的模型失败会在 60 秒后从状态中消失 | 将重试冷却与终态历史分离;持久保存中断状态 |
| R5 | 来源审查 · P2 | 包确认使用目录估计值;精确的文件/依赖元数据在已启动的任务内解析 | 确认前提供只读计划;明确大小不确定性 |
| R6 | 来源审查 · P2 | 显式 ROCm 同步在替换前默认同步 wheels;显式 CUDA/default 先于 Windows ARM 自动 CPU 分支 | 验证配方并避免 CUDA 优先替换;在添加运行时工作前协调 #2605 和 #2607 |
| R7 | 隔离来源探测 · P2 | 两个后端守卫都将测得的零空闲字节视为失败/未知探测 | 单独表示未知状态;在零空闲时拒绝正工作 |
| R8 | 隔离来源探测 · P2 | 受管理的 sidecar 移除忽略删除错误,并在仍有残留文件时清除注册 | 观察移除结果,并在失败时保留重试/注册 |
| R9 | 来源审查 · P2 | 向导位置和预览选择是组件状态;持久化的设置标志无法恢复它们 | 持久化并协调版本化的设置会话 |
| R10 | 来源审查 · P2 | 大多数预检文本绕过 i18n;紧凑进度没有 progressbar 语义;同意详情指向不存在的 FAQ | 本地化的原因代码、可访问的状态/焦点以及有效的隐私详情 |
证据详情¶
R1:setup_status 调用 is_cached,而 目录 也会调用 cache_is_complete。设置门控 使用 models_ready 来推进状态。一个新的 AST 提取探针在仅含一个 25 字节配置文件的临时快照和模拟 HF 清单下运行了未更改的谓词体:is_cached=true、cache_is_complete=false、models_ready=true、missing=[]。这证明了谓词不一致,而不是原生点击通过或完整的完整性规范。
R2–R3:PerformanceModelPacks 在求字节和之前过滤所有终态。使用两个 100 字节任务(分别为 90 和 10 字节)执行这些精确的聚合语句会得到 50%;当第一个任务完成到 100 字节时得到 10%,尽管合并后的总数应为 55%。仅终态的集合没有任何可见的活动行。同一个模块中存在详细恢复功能;这并非声称应用没有取消或重试实现。
R4:模型任务状态 在 now - failed_at >= 60 后省略失败;其映射以及 sidecar 任务 字典都驻留在内存中。现有的范围清单、缓存的局部文件、运行时标记和渲染器重连仍然有价值,但不能提供持久的用户可见操作历史。
R5:包解析器 对 size_gb 求和。下载 worker 在权重传输之前解析固定的快照/依赖并检查空间,但这是在用户启动任务之后。没有测量到具体的尺寸少计或传输基准。#2602 的余量警告没有引入预确认计划或按卷组合预留。
R6:运行时选择/同步 仅针对 CPU 排除 CUDA 包,然后在 ROCm 替换之前执行默认的冻结同步。显式 cuda/default 在 Windows ARM 自动 CPU 分支之前返回;ROCm 平台门控仅限操作系统。这是不支持/未经验证的配方边缘的源代码证据,而不是原生 ARM/ROCm 安装失败的证明。已发布的自动 CPU 路径已经存在;在 CPU/运行时工作活跃期间避免重复实现。#2605 在添加 CPU 源选择的同时保留这些基线边缘。#2607 提出了更窄的 Windows x64 ROCm 配方并更改运行时选择;它必须与 #2605 协调,而不能被视为基线 R6 已修复的证据。在组合代码中重新检查默认同步顺序和显式 Windows ARM 覆盖,并分别进行源码和打包验收。
R7:模型守卫 和 sidecar 守卫 在 free <= 0 时都返回无错误。将全新的提取函数探针设置为正请求字节数和零实测空闲空间后,对两者都重现了该行为。这涉及直接后端准入;紧凑 UI 的低磁盘门控仍可阻止其自身路径。现有预检和传输中 ENOSPC 处理并未被声称缺失。
R8:Sidecar 卸载 使用 rmtree(ignore_errors=True),并以删除前的存在状态作为成功依据。全新的未更改函数探针在隔离的受管理目录和模拟的忽略删除失败场景下返回了 uninstalled,清除了环境/偏好设置,并让文件仍然存在。没有触发真实的 Windows 共享冲突。#2578 的应用卸载脚本保护措施和开放的 storage-temp 清理工作是不同的路径。
R9–R10:设置标志 仅存储 started/completed;门控将步骤初始化为零。预检 仅翻译架构分支。紧凑包进度使用普通 div。同意 正确地为“不,谢谢”保存 enabled:false,并使用相同的描边按钮等待成功;其详情 URL 指向 README#-faq,但该锚点在 基线 README 中不存在。没有新复现的同意反转、全 Max 选择错误或性能基准。源代码检查不是屏幕阅读器/视口审计。
历史验证:2026-10-04¶
| 检查项 | 结果 / 限制 |
|---|---|
sh -n scripts/install.sh |
通过 |
从 electron/ 目录:node --test tests/shell-installer.test.mjs tests/installer-worker.test.mjs tests/native-linux-libraries.test.mjs |
27 通过,0 跳过;Linux / Node 24.19.0;夹具契约,而非原生安装程序 |
| Python 3.12.14 / Node 源码探针 | 在无 ML 依赖/网络的情况下复现了 R1、R3、R7 的两个防护逻辑以及 R8 |
本地 Markdown 目标/锚点、固定的源路径/行范围、SVG XML、git diff --check、干净基线的补丁应用 |
通过 |
| SVG | 现有示意性资源已渲染并目视检查;非产品截图 |
未更改任何运行时/依赖/工作流/版本文件。先前提案的 19 项 pytest 结果属于历史记录,不会作为新的通过项延续:当前审查环境中没有 pytest,且未安装任何软件。
未运行: 完整后端/React/Vitest 套件、类型检查、构建、PowerShell、打包安装/首次输出/更新/回滚、原生选择器/辅助功能工具、macOS/Windows/ARM/GPU 硬件。提案设计和源码级缺陷明确与平台验收分开。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 om/VoiceStudio