Skip to content

Commit e2e4137

Browse files
committed
docs(foresight): 档案检测头脑风暴与数据提取清单
1 parent 25fa747 commit e2e4137

4 files changed

Lines changed: 262 additions & 0 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77

88
### 新增
99

10+
- **课堂助手体验三连(2026-08 用户需求)**:
11+
- 最近画面按时间先后排列:缩略图条去掉"最新在前"反转——前→后 = 旧→新,新画面追加在末尾(后端本就按时间戳升序返回)
12+
- ASR 未沉淀行多行展示:实时转写不再折叠为单行——识别中(灰斜)与已定稿待沉淀(黑)各行并存;连续定稿(快速短句)不再互相覆盖丢失,新句首个 partial 到达时统一沉淀入列表(纯前端状态机,后端单流协议不变)
13+
- 视频类型档案新增「未知」选项:自动检测零信号命中(无法识别)时如实选中「未知」并生效(参数走默认档零回归、产物模板同网课讲义);记忆偏好/会话 profile/产物构建全链路支持 unknown
1014
- **会话体验小版本(REQ-135~137,2026-08-19 头脑风暴)**:
1115
- 会话↔笔记双向关联:`notes.session_id` 列迁移(删除会话 `SET NULL` 只断关联不删笔记——笔记是用户资产;旧数据诚实 NULL 不猜不填);`list_sessions` 返回 `SessionListItem`(has_note/note_id/note_title/has_content 子查询标记);`artifact_to_note` 同步写关联(口径统一)
1216
- 批量转笔记 `batch_session_to_note`:≤50 条、部分成功语义(单条失败不阻塞、跳过原因显式回传)、重复 id 去重、跳过已转防重复;`convert_to_note` 核心提取——单条与批量共用同一过滤管线(REQ-081/082 原则延续)

‎docs/Foresight/README.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
| [brainstorming-no-cloud-ai-extraction-limit.md](./brainstorming-no-cloud-ai-extraction-limit.md) | 无云端 AI 的内容提取极限头脑风暴(2026-08-18:能力分层 + 挖掘方向 + 性能预算制) |
1818
| [brainstorming-classroom-assistant-mechanisms.md](./brainstorming-classroom-assistant-mechanisms.md) | 课堂助手机制摘要:系统快照 + 已实现/已排期/已否决清单 + A–G 机制候选 + ROI 排序(供其他 AI 模型头脑风暴输入) |
1919
| [brainstorming-classroom-assistant-mechanisms-fed-guide.md](./brainstorming-classroom-assistant-mechanisms-fed-guide.md) | 机制摘要投喂指南:文档结构与使用方法说明(配套 mechanisms 文档) |
20+
| [brainstorming-video-profile-detection.md](./brainstorming-video-profile-detection.md) | 档案自动检测准确度头脑风暴(2026-08:根因代码级定位(仅标题信号在生效/关键词重叠/无负证据/无反馈闭环)+ 20 项候选 + 三批落地建议) |
21+
| [video-data-extraction-inventory.md](./video-data-extraction-inventory.md) | 视频可提取数据清单(2026-08:音/字/图/构/行/产六层 30 项,逐项标注已投入/未接线/未实现) |
2022
| [brainstorming-classroom-assistant-gaps.md([ ] 已归档)](../archive/2026-08-19/brainstorming-classroom-assistant-gaps.md) | 课堂助手缺口评估:提取 / 性能 / 算法 / 体验 四维头脑风暴(2026-08:50 项机制评估;§9 裁决 22 项已排期 v0.6.0 → REQ-059~080;未选与远期项保留于归档副本待议) |
2123
| [brainstorming-video-types.md([ ] 已归档)](../archive/2026-08-19/brainstorming-video-types.md) | 视频类型 × 提取优化 × 图片配套 × 结构预处理 × 产物形态 × 补缝式 AI 头脑风暴(2026-08-18:六轮,已采纳进 v0.5.0;2026-08-19 归档) |
2224
| [2026-08-19-ocr-trigger-redesign.md([ ] 已归档)](../archive/2026-08-19/2026-08-19-ocr-trigger-redesign.md) | OCR 触发重做与 UI 面板抑制设计规格(2026-08-19:ADR-011/REQ-086/087 已实施 M1-M3,659 单测全绿,M4 真机验收待执行;2026-08-19 归档) |
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
# 头脑风暴记录:视频类型档案自动检测准确度提升
2+
3+
**状态**: 前瞻构想(未排期)——2026-08 用户反馈"档案自动化检测准确度较低",本文对
4+
根因做代码级定位并产出候选方案矩阵;落地项待裁决后进 requirements-pool。
5+
6+
## 基本信息
7+
8+
| 字段 | 内容 |
9+
|------|------|
10+
| 主题 | 视频类型档案(ProfileKind,13 类)自动检测准确度提升 |
11+
| 日期 | 2026-08 |
12+
| 目标 | 产出"信号 → 决策 → 反馈"全链路改进候选,按成本/收益排序,供裁决落地 |
13+
14+
---
15+
16+
## 1. 问题定义
17+
18+
### 核心问题
19+
20+
档案自动检测(`detect_video_profile` / `vote_detect`)准确度低:低置信/信号冲突频繁触发
21+
"请确认",或误选档案导致采样档位与产物模板不匹配(如把实操当网课、把直播当口播)。
22+
23+
### 根因(代码级证据,2026-08 核查)
24+
25+
1. **检测信号实际只有标题一个**:前端 `ProfileDetector` 只调 `detect_video_profile({ title })`;
26+
`url / frame_switch_rate / has_subtitle / duration_min` 参数在命令层存在但**从未被任何调用方填充**
27+
("会话中增量评估"是注释里的话,未接线)。而 `vote_detect` 打分里帧率区间(2 分)/字幕偏好(1 分)/
28+
时长达标(1 分)全部落空——检测事实上退化为"标题关键词投票"。
29+
2. **关键词重叠制造歧义**:"教程"同时命中 Lecture 与 HandsOn;"播客"同时命中 Interview 与 Podcast;
30+
url 关键词 `bilibili/b23` 同时命中 Lecture+HandsOn 等四个档案(无区分度);"第X章"加成只对
31+
Lecture 生效但其他档案标题同样可能含"章"。
32+
3. **检测时点过早**:选窗口瞬间,画面(帧率/字幕/版面)、音频(人声/语速/多人)、时长全都还没有。
33+
4. **只有正向证据,没有负向证据**:打分纯加分制——"标题含'直播'但回放中"这类互斥信号无法表达;
34+
"含'回放/录播'不太可能是直播"无机制。
35+
5. **无归一化**:各档案关键词表长度不等(Lecture 8 个 vs 部分档案 2 个),大词表档案天然多得分,
36+
阈值(`CONFIDENCE_THRESHOLD=2.5` / `CONFLICT_GAP=1.0`)是拍脑袋值,无标注集调参。
37+
6. **反馈闭环薄**:记忆偏好只做"完整标题子串 contains"(标题稍变即失配);用户每次"改选"
38+
的纠错数据(关键词 × 最终选择)不统计、不回流;会话结束后真实观测信号(帧率/字幕有无/
39+
时长/OCR 占比)不回写记忆。
40+
7. **标题形态噪声**:中文标题多变体(【】/()/无标点/英文/连载序号"第X集/EP.12"),
41+
现状无结构化解析。
42+
43+
### 约束条件
44+
45+
- 本地优先:检测必须可离线、纯本地、低延迟(选窗口 → 开始 的间隙内完成)
46+
- 已有管线零回归:采样/权重/后处理按档案查表,改检测不改消费端契约
47+
- 单测可注入:`vote_detect` 为纯函数(决策矩阵可注入 fake 信号),新逻辑须可 AAA 单测
48+
49+
### 成功标准
50+
51+
- 无需确认(高置信静默生效)的会话占比显著上升
52+
- 误选档案导致的产物/采样不匹配明显减少
53+
- 用户改选数据开始回流并可见地改善后续检测
54+
55+
---
56+
57+
## 2. 发散阶段(不评判,只产出)
58+
59+
| # | 想法 | 分组 | 备注 |
60+
|---|------|------|------|
61+
| 1 | 标题结构化解析:括号/分隔符内容作为强信号(【直播】/(回放)/「教程」/第X集/EP.xx) | 信号增量 | 零成本,纯文本 |
62+
| 2 | 负面关键词/互斥规则:含"回放/录播/重播"排除 Live;含"直播"强指向 Live;含"录屏"偏实操 | 决策升级 | 负证据机制 |
63+
| 3 | 档案内归一化:得分除以词表大小(或稀有词 IDF 加权)——"MOOC"比"教程"更有区分度 | 决策升级 | 修大词表偏置 |
64+
| 4 | 会话中增量再检测:frame_switch_rate/has_subtitle 实时可得(画面 worker + det 结果),会话开始 30s/1min 后重投一次票,与用户选择不一致时出"档案修正条"提示一次 | 信号增量 | 注释承诺未接线,成本最低、收益最直接 |
65+
| 5 | 选窗口时抓 1 帧预览做 OCR:字幕区有无/版面密度 → 有字幕=视频内容页 | 信号增量 | 预览帧已在窗口选择卡 |
66+
| 6 | 选窗口时录 5s 系统音频粗分析:无人声(纯图文课?)/单人口播/多人对话 | 信号增量 | 需权限与计时,成本中 |
67+
| 7 | 窗口进程名/窗口类信号:浏览器 vs 播放器 vs IDE(VS Code→coding)vs 会议软体(Zoom/腾讯会议→meeting) | 信号增量 | list_windows 已有 processName |
68+
| 8 | URL 细化:bilibili 域名下区分 视频页/直播页/课程合集页(路径级而非域名级) | 信号增量 | 需接入 URL 来源 |
69+
| 9 | 两级决策:先粗分(语音驱动:口播/播客/访谈 vs 屏幕驱动:网课/实操/编程 vs 图像流:白板/跟练),再细分类内 | 决策升级 | 决策树可解释 |
70+
| 10 | 候选冲突可视化:需确认时展示"哪两个信号打架"(如:标题像网课 × 画面高帧率像实操) | 交互 | 降低用户认知负担 |
71+
| 11 | 关键词命中统计反馈:每次用户确认/改选,记录"本次命中的关键词 × 最终档案";错判率高的关键词降权/移除 | 反馈闭环 | 用户纠错数据是免费标注集 |
72+
| 12 | 会话后复盘自动修正:会话结束用真实观测信号重投 → 与用户选择的档案对比 → 不一致(且置信高)时提示"下次可选 X"或直接修正记忆 | 反馈闭环 | 真实信号最可信 |
73+
| 13 | 质量报告反哺:产物质量指标(低置信段占比/OCR 占比/图集利用率)按档案聚合,间接验证档案参数匹配度 | 反馈闭环 | 慢反馈,辅助校准 |
74+
| 14 | 记忆模糊匹配:标题分词/编辑距离相似(而非精确 contains)命中记忆 | 反馈闭环 | 标题小变不再失配 |
75+
| 15 | 轻量分类器:用"用户确认历史 + 会话真实信号"训练标题 TF-IDF/朴素贝叶斯(几十 KB 本地模型) | 轻量学习 | 替代手写关键词表 |
76+
| 16 | 检测时点后移:开始会话不阻断;观察 1-2 分钟后档案修正条出现一次(真信号到手再问) | 交互 | 与 #4 配套 |
77+
| 17 | 阈值调参集:收集已确认会话构建小型标注集,网格搜索 CONFIDENCE_THRESHOLD/CONFLICT_GAP | 决策升级 | 用数据代替拍脑袋 |
78+
| 18 | "未知"兜底语义扩展:多次检测仍低置信的标题 → 自动沉淀为"该标题属于低识别区",累积后进人工校准队列 | 反馈闭环 | 与 v0.7.1 Unknown 联动 |
79+
| 19 | 弹幕/播放器元数据(如标题栏滚动信息)不采集(裁决不做),不进入候选 | 边界 | 明确不做防跑偏 |
80+
| 20 | OCR 混淆画像复用:混淆画像(REQ-120)里积累的常见字幕关键词可反哺标题识别(如"追剧"字样) | 信号增量 | 跨模块复用 |
81+
82+
---
83+
84+
## 3. 收敛阶段(评估与筛选)
85+
86+
### 评估矩阵(可行性/影响力 5 分制)
87+
88+
| 想法 | 可行性 | 影响力 | 创新性 | 总分 | 排名 |
89+
|------|--------|--------|--------|------|------|
90+
| 4 会话中增量再检测 | 5 | 5 | 3 | 13 | 1 |
91+
| 1 标题结构化解析 | 5 | 4 | 3 | 12 | 2 |
92+
| 2 负面关键词/互斥 | 5 | 4 | 3 | 12 | 2 |
93+
| 3 词表归一化 | 5 | 4 | 3 | 12 | 2 |
94+
| 12 会话后复盘修正 | 4 | 5 | 4 | 13 | 1 |
95+
| 11 关键词命中统计 | 4 | 4 | 4 | 12 | 2 |
96+
| 7 进程名信号 | 4 | 3 | 3 | 10 | 3 |
97+
| 5 首帧预览 OCR | 3 | 4 | 3 | 10 | 3 |
98+
| 10 冲突可视化 | 4 | 3 | 4 | 11 | 3 |
99+
| 14 记忆模糊匹配 | 4 | 3 | 3 | 10 | 3 |
100+
| 9 两级决策 | 3 | 4 | 4 | 11 | 3 |
101+
| 6 音频粗采样 | 2 | 4 | 4 | 10 | 3 |
102+
| 15 轻量分类器 | 2 | 5 | 5 | 12 | 2 |
103+
| 16 检测时点后移 | 3 | 4 | 3 | 10 | 3 |
104+
| 17 阈值调参集 | 3 | 3 | 2 | 8 | 4 |
105+
| 8 URL 路径细化 | 2 | 2 | 2 | 6 | 4 |
106+
| 13 质量报告反哺 | 3 | 2 | 3 | 8 | 4 |
107+
| 18 低识别区累积 | 3 | 2 | 3 | 8 | 4 |
108+
109+
### 分类
110+
111+
**第一批(立即执行,低成本高收益——纯逻辑可单测,不动采集链路):**
112+
- #4 会话中增量再检测接线(帧率/字幕信号已在管线中,仅接线 + 1 次提示)
113+
- #1 标题结构化解析(【直播】(回放)第X集 EP.xx 等强信号)
114+
- #2 负面关键词/互斥规则("回放/录播" 排除 Live 等)
115+
- #3 词表归一化(得分/词表大小或 IDF 加权)
116+
117+
**第二批(反馈闭环,中成本高收益):**
118+
- #12 会话后复盘自动修正记忆(真实信号重投对比)
119+
- #11 关键词命中统计(用户改选 = 免费标注集)
120+
- #14 记忆模糊匹配(分词/编辑距离)
121+
122+
**第三批(观察与长期):**
123+
- #5 首帧预览 OCR / #7 进程名 / #10 冲突可视化 / #16 检测时点后移(交互增强,与第一批可叠加)
124+
- #15 轻量分类器(依赖第二批积累的标注语料,V1.0+)
125+
- #6 音频粗采样(需新权限面,先搁置)
126+
- #17/#13/#8 依赖数据积累,随批次推进
127+
128+
---
129+
130+
## 4. 行动计划(建议)
131+
132+
| 批次 | 想法 | 下一步 | 备注 |
133+
|------|------|--------|------|
134+
| 一 | #4 增量再检测 | 接线 `detect_video_profile` 的 frame_switch_rate/has_subtitle 实参(画面 worker/det 结果已在内存),会话开始后定时重投;不一致且高置信时前端提示一次 | 前端 + 命令层小改 |
135+
| 一 | #1/#2/#3 | 扩展 `ObservedSignals` 决策矩阵:标题结构解析、负向规则、归一化;`vote_detect` 纯函数单测全覆盖 | 纯逻辑,AAA 单测 |
136+
| 二 | #12 | 会话结束时把真实观测信号回写检测(新命令或事件),与用户档案对比,不一致且新置信高 → 更新记忆 | 需记录"用户选择的档案"到会话(已有 profile 列) |
137+
| 二 | #11/#14 | 记忆库加关键词命中统计字段;lookup 改模糊匹配 | ProfileMemory schema 兼容演进 |
138+
139+
---
140+
141+
## 5. 遗留问题
142+
143+
- 需要验证:标题含"教程"的真实歧义占比(Lecture vs HandsOn vs Coding 三向冲突频率)
144+
- 需要验证:用户改选行为中"从 X 改到 Y"的分布(决定 #11 的降权方向是否正确)
145+
- 需要调研:bilibili/网课平台 URL 路径结构是否稳定可用(#8 前置)
146+
- 需要设计:增量再检测的"修正条"出现时机与打扰阈值(与"静默生效可改"哲学一致)
147+
148+
---
149+
150+
## 6. 回顾
151+
152+
- 产出想法数量:20
153+
- 最有价值方向:接线已有信号(#4)+ 负证据与归一化(#2/#3)+ 用户纠错回流(#11/#12)
154+
- 改进建议:检测准确度提升的关键不在"更多新信号采集",而在"已有信号接线 + 决策质量 + 反馈闭环"三件事

0 commit comments

Comments
 (0)