4.4 KiB
阶段 F 收尾验收记录
日期:2026-09-05。对应 feat/multimodal-finalization,基于 6bdba2c(阶段 F 主分支合并)。
完成范围
本轮补齐运行诊断持久化、真实磁盘占用、后台索引优先级、CUDA 设备失败时 CPU 单次重试、上传与任务重试幂等、跨修订安全更新笔记、音频用量分项,以及请求 JSON 导入/导出/重置和实际聊天推理验证。原有 API 优先、无配置/无效响应使用本地模型、local_only 禁止远程调用的流程继续保留。
具体行为见开发说明,接口见开发版契约,故障与修复见问题记录 F-13~F-15。
自动化与页面验证
| 项目 | 结果 |
|---|---|
后端全量 python -m pytest -q -p no:cacheprovider |
559 通过;1 条已有 Starlette/httpx 弃用提示 |
前端全量 npm test -- --run |
29 个文件、103 项通过 |
类型与生产构建 npm run build |
vue-tsc 与 Vite 构建通过,仍有既有大 bundle 提示 |
git diff --check |
通过 |
| 真实页面 | 模型卡片读取实际大小;音频统计显示真实缺失;提供商表单展示请求编辑、恢复默认、导入/导出及推理验证入口 |
| 请求 Adapter 验证 | 隔离 HTTP Transport 检查最终流式/非流式请求和扩展字段,不访问外部供应商 |
| 失败恢复 | 初始化/OOM 故障注入、CPU 再失败、进程回收、队列顺序、重复提交、修订冲突和旧结果失效均覆盖 |
CPU / CUDA 真实模型闭环
Windows、Python 3.12。保留原 .venv-models CPU 环境,独立安装 .venv-models-cuda;安装后检查 torch=2.9.1+cu128、cuda_available=True。显卡为 NVIDIA GeForce RTX 4060 Laptop GPU。
CPU 与 CUDA 分别创建隔离 Vault、附件目录和 SQLite,只读取固定 revision 权重;运行短中文音频 → Qwen3-ASR → ERes2NetV2 片段聚类 → Markdown 笔记 → Bekko 语义检索 → 修订更新。两次均返回已完成,检索命中同一笔记,更新保留 note_id 和 embedding_local_only: true,结束后本地运行队列无活跃任务。CPU 实际设备为 cpu,CUDA 各次实际设备为 cuda:0。
| CUDA 环节 | 权重 revision | 加载 / 推理耗时 |
|---|---|---|
| Qwen3-ASR-0.6B | 5eb144179a02acc5e5ba31e748d22b0cf3e303b0 |
30.375 / 3.234 秒 |
| ERes2NetV2 片段聚类 | 3317286545c587ae682dbc166831d9448780eebb |
5.735 / 0.578 秒 |
| Bekko 首次笔记索引 | c721113d59a1d91b447450324f51c4b3332c924a |
19.860 / 0.656 秒 |
这些是单次功能冒烟观察值;运行期间有其他验证任务,不用于宣称吞吐或 CPU/GPU 性能倍率。短样本只产生 1 个片段和 1 个 speaker,不能验证多人重叠语音质量。CUDA OOM 恢复使用故障注入,并非实机显存耗尽测试。
中文 Embedding 小样本对照
固定 8 篇人工构造的短文,主题为线性代数、死锁、Python 函数、语义检索、光合作用、备份及两个无关干扰项(晚餐、篮球)。6 条改写查询,各有一个预期相关文档;对全部文档做余弦排序。
| 模型 | revision | Hit@1 / Recall@5 / MRR |
|---|---|---|
| Bekko A8M | c721113d59a1d91b447450324f51c4b3332c924a |
1.0 / 1.0 / 1.0 |
| Granite 97M Multilingual r2 | 835ad14087e140460703cf0fae09f97d469d65c2 |
1.0 / 1.0 / 1.0 |
两者在这 6 条查询上的目标排名均为 1。该结果仅证明中文检索冒烟可运行,样本量不足以区分模型优劣;继续保留 Bekko 默认、Granite 可选。
未关闭的专项验收
- 带参考转写和说话人标注的真实课程长录音尚未提供,不能报告 CER/WER、DER、阈值或长音频吞吐达标。
- 现阶段时间戳为片段级;逐字强制对齐、同段多人/重叠语音仍未实现,不将片段聚类视为完整说话人分离。
- 外部供应商特殊 JSON 的兼容性,需要在目标账号和模型上点击实际推理验证;离线协议通过不替代厂商验收。
- Tauri/Rust Host 和生产 MCP 沙箱按后续阶段安排;本轮数据持久化在后端 SQLite/Vault,为桌面集成保留稳定接口。
结论:阶段 F 本轮工程收尾已实现并完成 CPU/CUDA 功能验收;上述质量及外部服务专项保持待验收状态,不标记为全部通过。分支仍需独立审阅后决定合并。