Skip to content

Latest commit

 

History

History
112 lines (85 loc) · 13.8 KB

File metadata and controls

112 lines (85 loc) · 13.8 KB

v0.9.0 — 第九阶段:视频档案框架 v2(四维解耦重新设计)

状态: 开发中(2026-08-21 头脑风暴定稿,已排期;v0.8.0 完成后启动;M1M5 代码建设已完成——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,本版替代)

一、阶段目标

  1. 四维解耦(REQ-188):形态 7 类独立决定产物模板;画面价值 4 档独立决定采样/OCR/存储;13 类→7 类映射迁移(记忆库 kind 映射、参数拆解到「7 形态 × 4 画面档」矩阵、消费端契约零改动)
  2. 画面价值自动检测(REQ-189):开始前默认「中档」+诚实声明;会话中每 2-3 分钟重评(帧切换率+OCR 密度+区域构成三信号);升档静默、降档确认;维度独立于形态
  3. 领域标签体系(REQ-190):粗 15 领域(内置种子词表)+ 细标签开放;接线 hotwords 预热/术语表筛选/区域预期
  4. 平台信号适配(REQ-191):轻量平台适配器(bilibili 分区标签 + local 文件路径)+ OCR 标签通用化;无平台信号零回归
  5. 检测卡 v2(REQ-192):三维一体交互(形态/画面/领域各自可调、修改即记忆、未知维"识别中"不阻塞);档案卡不含开始按钮
  6. 叙事结构模板变体(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 复测:应产出 解说×中档×经济管理) 验收记录 + 回归全绿

三.五、实施记录(2026-08-21 代码建设 M1~M5 完成)

依据 video-profile-framework-v2.md 与需求池 REQ-188~193;自底向上:原子层(类型/纯函数)→ 业务层(检测/适配)→ 系统层(command/worker/UI)。消费端契约零改动(cargo test 1352 全绿 + clippy 零警告)。

M1 四维解耦数据模型(REQ-188)

  • 新模块 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 契约对齐

M2 画面价值自动检测(REQ-189)

  • 新模块 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<Rich
    • TierObserver 重评窗口聚合(默认 150s=2.5 分钟;短视频 2 分钟内定档;窗口滑动续观测)
  • 系统层接线:DualRateScheduler::retune(动态调档);screen worker 集成 TierObserver(每采样 tick 注入帧切换/OCR 面积观测);升档静默 retune + live:tier-changed 事件;降档发 live:tier-downgrade-request 事件(含 from/to)→ 前端确认 → confirm_tier_downgrade command → 共享 override 回流 worker
  • 单测 15 个(三信号矩阵/升降档/窗口聚合/JSON roundtrip)

M3 领域标签体系(REQ-190)

  • 新模块 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)

M4 平台信号适配(REQ-191)

  • 新模块 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 通用化/零回归)

M5 检测卡 v2(REQ-192)+ 叙事变体(REQ-193)

  • 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_detect EP 布尔简化、video_profile_domain 两处 clone 优化

真机验收发现与修复(2026-08-21,M6 执行中)

  • 采集态档案不可见 + M2 前端断链:采集时右栏被 LiveActivityPanel 独占、档案卡(ProfileDetector)被隐藏,且 live:tier-changed/live:tier-downgrade-request 事件与 confirm_tier_downgrade command 前端零接线——降档请求无人应答、降档永不生效(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_模板_零回归)