状态: 开发中(2026-08-21 头脑风暴定稿,已排期;v0.8.0 完成后启动;M1
M5 代码建设已完成——cargo test 1352 全绿 + clippy 零警告,M6 真机验收待执行) 目标: 用「形态 × 画面价值 × 领域 × 语言」四维解耦框架替代 13 类耦合档案——解决会话 33(动画科普)实证暴露的 类型缺失、维度耦合、检测时序缺口三个系统性问题;维度独立降级(形态 unknown 不再阻塞画面参数生效) 依据: video-profile-framework-v2.md([ ] 已归档)(2026-08-21 头脑风暴定稿,会话 33 实证驱动) 关联: brainstorming-video-profile-detection.md([ ] 已归档)(v1 检测改进候选)· 需求池 v0.9.0(REQ-188193)· REQ-043(视频类型档案 v1,本版替代)
- 四维解耦(REQ-188):形态 7 类独立决定产物模板;画面价值 4 档独立决定采样/OCR/存储;13 类→7 类映射迁移(记忆库 kind 映射、参数拆解到「7 形态 × 4 画面档」矩阵、消费端契约零改动)
- 画面价值自动检测(REQ-189):开始前默认「中档」+诚实声明;会话中每 2-3 分钟重评(帧切换率+OCR 密度+区域构成三信号);升档静默、降档确认;维度独立于形态
- 领域标签体系(REQ-190):粗 15 领域(内置种子词表)+ 细标签开放;接线 hotwords 预热/术语表筛选/区域预期
- 平台信号适配(REQ-191):轻量平台适配器(bilibili 分区标签 + local 文件路径)+ OCR 标签通用化;无平台信号零回归
- 检测卡 v2(REQ-192):三维一体交互(形态/画面/领域各自可调、修改即记忆、未知维"识别中"不阻塞);档案卡不含开始按钮
- 叙事结构模板变体(REQ-193):故事线/结构化条目/直接教学;"叙事线+要点提取"变体
本版本不做:语言维度实施(仅预留字段,当前中文单语);平台适配器扩展(网课平台/YouTube,先 bilibili+local); 档案自动校准(用户改选数据回流统计);AI 相关(问答/补缝 VLM 仍 V1.0)。
| REQ | 内容 | 验收要点 | 规划状态 |
|---|---|---|---|
| REQ-188 | 视频档案框架 v2 四维解耦:形态 7 类 + 画面价值 4 档 + 13 类映射迁移 | 7 形态 × 4 画面档参数矩阵生效;记忆库旧 kind 正确映射;产物模板随形态、采样随画面档独立切换;消费端零回归(cargo test 全绿) | 已排期 |
| REQ-189 | 画面价值档位自动检测:默认中档 + 2-3 分钟重评 + 升档静默/降档确认 | 短视频 2 分钟内定档;动画视频(会话 33 类)自动升中档;降档需确认;形态 unknown 时画面档照常生效 | 已排期 |
| REQ-190 | 领域标签体系:粗 15(种子词表)+ 细开放 + 四来源 | 领域命中→hotwords 预热生效(ASR 术语识别改善);术语表按领域词表筛选;区域预期接线(数学→公式区) | 已排期 |
| REQ-191 | 平台信号适配:bilibili/local 适配器 + OCR 标签通用化 | B站分区标签→领域/画面暗示;本地文件路径→投票;无平台信号零回归 | 已排期 |
| REQ-192 | 检测卡 v2 三维一体交互 | 三维各自可调+记忆;未知维"识别中";无开始按钮;形态低置信必问 | 已排期 |
| REQ-193 | 叙事结构模板变体 | 故事化科普产出"叙事线+要点";直接教学零回归(模板默认路径不变) | 已排期 |
| 步骤 | 内容 | 产出 |
|---|---|---|
| M0 | v0.8.0 收尾(真机验收 + 发布) | 干净基线 |
| M1 | 四维解耦数据模型 + 13→7 映射迁移(REQ-188) | 档案类型/参数矩阵/记忆迁移 + 单测 |
| M2 | 画面价值检测(REQ-189) | 观测器 + 重评调度 + 升降档事件 |
| M3 | 领域标签体系(REQ-190) | 领域词表 + 四来源检测 + 消费接线 |
| M4 | 平台信号适配(REQ-191) | 适配器 + OCR 标签通用化 |
| M5 | 检测卡 v2(REQ-192)+ 叙事变体(REQ-193) | 交互重构 + 模板变体 + golden |
| M6 | 真机验收(会话 33 复测:应产出 解说×中档×经济管理) | 验收记录 + 回归全绿 |
依据 video-profile-framework-v2.md 与需求池 REQ-188~193;自底向上:原子层(类型/纯函数)→ 业务层(检测/适配)→ 系统层(command/worker/UI)。消费端契约零改动(cargo test 1352 全绿 + clippy 零警告)。
- 新模块
video_profile_spec.rs(类型)+video_profile_spec_data.rs(参数矩阵)ContentForm(形态 7 类:讲授/实操/解说/对话/题目/代码/音频)、VisualTier(画面档 4 档:高/中/低/无)、DomainTag(领域粗+细)、LanguageTag(预留)、ProfileSpec(四维规格)- 13→7 映射:
ProfileKind::to_form()/default_tier()(framework-v2 §5 映射表逐行单测);whiteboard→讲授(画面档=高)、podcast/live→音频(无档) - 参数矩阵:形态→产物模板+后处理(
resolve_profile);画面档→采样/OCR/存储(Rich=2s/1.0/ImageFirst、Medium=5s/0.7/Balanced、Low=30s/0.1/TextFirst、None=跳过画面链) - 维度独立降级:形态 unknown(None)→ 默认讲义式模板不阻塞;画面档 none → disable_ocr=true(P4 短路)
- 记忆库迁移:
MemoryEntry增form字段(serde default 旧 JSON 零回归)+remember_form/lookup_form(form 优先、旧 kind 映射兑底);系列键剥离逻辑同口径 - command:
video_profile_for_spec(矩阵查询,tier 缺省按形态默认档)、video_profile_spec_by_kind(旧档案→四维规格)、remember_video_profile_form(形态记忆);detect_video_profile返回增memory_form/domain字段(serde default 兼容) - 前端
types.ts:ContentForm/VisualTier/DomainTag/LanguageTag/ProfileSpec/DomainDetection 契约对齐
- 新模块
video_tier_detect.rs:三信号加权投票(帧切换率 <5/分=低、5-20=高、>20=中——动画高切换属中档证据;OCR 文字面积占比 <0.15=低、<0.6=中、≥0.6=高;区域构成 <0.1=低、<0.45=中、≥0.45=高)- 平票取最高档(保守不丢信息——降档有确认门禁兑底);单信号/平票需确认
decide_change升降档裁决:升档静默(低→中/高)、降档需确认(高→中/低);档位序 None<Low<Medium<RichTierObserver重评窗口聚合(默认 150s=2.5 分钟;短视频 2 分钟内定档;窗口滑动续观测)
- 系统层接线:
DualRateScheduler::retune(动态调档);screen worker 集成 TierObserver(每采样 tick 注入帧切换/OCR 面积观测);升档静默 retune +live:tier-changed事件;降档发live:tier-downgrade-request事件(含 from/to)→ 前端确认 →confirm_tier_downgradecommand → 共享 override 回流 worker - 单测 15 个(三信号矩阵/升降档/窗口聚合/JSON roundtrip)
- 新模块
video_profile_domain.rs+video_profile_domain_data.rs:粗 15 领域(经济/编程/数学/语言/美妆/健身/法律/医学/职场/设计/音乐/手工/考试/游戏/心理)× 种子词表(8-15 词/域)- 四来源检测
detect_domain:平台分区(强信号)> 用户确认 > 标题词 > 术语频率;细标签开放(平台原文/术语原文保留) - 作用链接线:
hotword_candidates(领域种子词 → VocabManager 预热)、filter_glossary(术语表筛选)、expected_region(数学→公式区/代码→code 区/设计→图片区)
- 四来源检测
- command:
detect_video_domain(四来源 + OCR 标签通用化)、preheat_domain_hotwords(注入共享词表,幂等去重 + 落盘) - 单测 11 个(四来源优先级/细标签开放/消费接线/JSON roundtrip)
- 新模块
platform_adapter.rs:infer_platform(标题后缀/URL 主机名/本地文件扩展名)、adapt_bilibili(标题内联分区知识科普|经济管理提取——会话 33 实证形态)、adapt_local(路径分段:目录名/文件名→领域投票,扩展名剥离)、ocr_tags_to_domain(OCR 标签通用化——画面内标签/标题卡文字作为通用信号,不依赖平台枚举) detect_video_profile/detect_video_domain接线平台适配(显式 platformTags 优先 + 自动推断补入);无平台信号零回归- 单测 8 个(平台推断/分区提取/路径语义/OCR 通用化/零回归)
- REQ-193 叙事检测
narrative_detect.rs:故事化特征投票(角色词 + 口语转折词);命中 ≥2 转折或 1 角色+1 转折 → Storytelling(叙事线 + 要点提取变体);直接教学零回归talking_head_blocks接入:Storytelling →storytelling_blocks(叙事段保序为段落 + 编号要点为 Highlight);DirectTeaching → 现有 Claim/Quote 路径- golden 测试:会话 33 类故事化科普产出叙事线+要点;直接教学零回归
- REQ-192 检测卡 v2
ProfileDetector.tsx重写:三维一体(形态 7 下拉/画面 4 档下拉/领域 15 下拉各自可调)- 修改即记忆(形态→
remember_video_profile_form;领域→preheat_domain_hotwords预热) - 未知维"识别中"不阻塞;形态低置信必问(needs_confirmation 驱动);档案卡无"开始捕获"按钮(归采集控制区)
- 兼容 v1 通道:onProfileChange 传代表旧类(start_live_session 既有契约零改动)
- 修改即记忆(形态→
ai_client_tests::from_settings_uses_stored_key_when_no_env测试隔离缺陷(宿主 SILICONFLOW_API_KEY 泄漏导致失败——测试假定无 env)按既有 save/restore 模式修复- clippy 既有警告清零:
live_session_persist两处 mut 冗余、series_detectEP 布尔简化、video_profile_domain两处 clone 优化
- 采集态档案不可见 + M2 前端断链:采集时右栏被 LiveActivityPanel 独占、档案卡(ProfileDetector)被隐藏,且
live:tier-changed/live:tier-downgrade-request事件与confirm_tier_downgradecommand 前端零接线——降档请求无人应答、降档永不生效(v0.9.0 验收清单"降档确认行为可观测"原标记有误)。修复:LiveSessionManager新增applied_tier共享槽(worker 写入、command 查询,LiveSessionStatus.tier拉取兑底);新组件LiveProfileStrip(采集态常显形态×画面档×领域摘要 + 升档 3s 提示 + 降档确认条),标签映射从检测卡导出复用 - 热词解码崩溃(exit 0xffffffff):领域热词(心理成长种子词)首次真实注入流式会话暴露两类问题——① 热词含 tokens.txt 表外字(焦/冥/哲)时 sherpa-onnx 编码失败仍创建 ContextGraph;② 默认
greedy_search解码器不兼容 ContextGraph 流,解码断言 abort。修复:decoding_method切换modified_beam_search(sherpa-onnx 对热词的官方要求)+new_stream按 tokens.txt 单字集合词级过滤热词(全过滤回退普通流);新增崩溃回归集成测试(真实模型+热词解码) - 测试环境构建修复(comctl32 v6 manifest):Windows 25H2 system32 的 comctl32 为 5.82(无 TaskDialogIndirect 导出),Rust 测试 exe 默认无 manifest 加载失败(0xc0000139)。修复:build.rs 对测试目标注入 comctl32 v6 SxS manifest(应用本体由 tauri-build 生成不受影响);Cargo.toml 显式声明
[[test]] app_lib_tests(隐式 lib/bin test 无法注入且与 tauri resource.lib 资源冲突 CVT1100) - 全量代码审查修复(七维审查,2026-08-21):① applied_tier/tier_override 槽按会话复位(跨会话残留→新会话显示旧档位/降档被静默消费);② 降档请求每采样 tick 重发→前端"保持现状"按建议档去重(dismissedRef);③ 首次定档误标"升档"提示→按 tierRef 判定跃迁;④ token_chars 读取失败保守回退普通流(防御链补全);⑤ 监听先于拉取注册(毫秒级竞态)+ 停止过渡期清空确认条 + 档位标签查表回退
- 会话 33 复测:检测为「解说 × 中档画面 × 经济管理」(此前 unknown);采样按中档执行(M6 真机)
- 13 类旧记忆库/会话数据迁移无损(kind 映射正确——M1 单测 mapping_13_to_7_follows_framework_table + 旧 JSON 兼容测试)
- 画面档升档静默/降档确认行为可观测(M2 事件 + 确认 command + 采集态档案条接线——2026-08-21 补齐前端断链:LiveProfileStrip 监听 tier 事件并调 confirm_tier_downgrade;形态 unknown 会话画面档照常生效——tier_effective_when_form_unknown 单测)
- 领域命中后 hotwords 预热生效(转写术语命中率可对比——M3 通道已通;2026-08-21 修复热词解码崩溃后真机对比待 M6)
- B站 分区标签→领域正确(M4 ocr_tags_to_domain 通用化——
知识科普|经济管理→经济管理单测);无平台信号(独立播放器)零回归(infer_platform_no_signal_zero_regression 单测) - cargo test + clippy 全绿(1360 passed / 0 warnings);产物 golden 测试(7 形态 × 叙事变体——storytelling_科普_produces_narrative_line_and_points + direct_teaching_模板_零回归)