refactor: 重构 deep_analyzer 一次性调用 AI 生成完整报告

This commit is contained in:
2026-02-13 18:34:03 +08:00
parent 4ce74541bf
commit 84df9931c1
4 changed files with 2111 additions and 1614 deletions
+6
View File
@@ -35,6 +35,12 @@
2. 记录修改内容到 SkillBug.md 2. 记录修改内容到 SkillBug.md
3. 考虑使用 monkey patch 或环境变量等非侵入式方案 3. 考虑使用 monkey patch 或环境变量等非侵入式方案
## 知识库工作流(2026-02-13)
- **deep_analyzer.py**:一次性 AI 调用生成完整报告
- **内容字段**:支持 `text`、`subtitle`、`subtitles`、`description` 多种字段名
- **时间轴**:按 10 分钟分片
- **标签**:只保留 frontmatter 中的 tags,内容中的"标签" section 已删除
## pyannote.audio 兼容性问题(2026-02-13) ## pyannote.audio 兼容性问题(2026-02-13)
- **问题**: pyannote 4.0.4 与 torch 2.10+ 存在兼容性问题 - **问题**: pyannote 4.0.4 与 torch 2.10+ 存在兼容性问题
- **症状**: - **症状**:
+43 -77
View File
@@ -1,88 +1,54 @@
# 2026-02-13 # 2026-02-13 工作日志
## kb-deep-analyzer 技能改进 ## 完成事项
### 批处理模式 ### deep_analyzer.py 重构
- 改为分批并发处理(3+3+3+1),避免同时启动所有AI请求 - 改为一次性 AI 调用生成完整报告
- `analyze()` 方法支持 `on_batch_complete` 回调 - 修复内容读取:支持 `text`、`subtitle`、`subtitles`、`description` 多种字段
- `batch_size` 参数控制每批数量(默认3) - 时间轴分片策略:按 10 分钟分片
- 删除内容中的"标签" section,只保留 frontmatter 的 tags
### 流式写入功能 ### 报告格式
- 新增 `StreamingWriter` 类,支持多线程并发写入文档不同位置 ```
- `initialize_document()` 预先创建带占位符的文档结构 ---
- `write_batch()` 每批完成后写入对应位置 title: "xxx"
date: xxx
duration: xxx
author: xxx
bvid: xxx
platform: bilibili
url: xxx
tags: ["tag1", "tag2", ...]
---
### 文档格式优化 ## 标题
- `date` 改为视频发布日期(从 pubtime 提取) [AI 自总结标题]
- frontmatter 添加 `url` 字段
- 删除"建议行动"章节
- 删除 `{% if timeline %}` 和最后的分析时间
- 新格式更简洁
### 提交记录 ## 摘要
- `94370f2` - feat: 改为批处理模式 [200-400字]
- `c8ddc1e` - feat: 添加流式写入器
- `518f8e4` - fix: 优化文档格式
- `c276df2` - feat(kb-workflow): 添加严格失败判断逻辑
## 严格失败判断规则(15:19 添加) ## 主要主题
- 主题1
- 主题2
...
### kb-deep-analyzer 更新 ## 关键见解
- 新增判断逻辑:只有 AI 真正完成分析才算成功 - 见解1
- 判断条件: - 见解2
- `summary` 不能以"共"开头(降级处理的默认内容) ...
- `main_topics` 不能为空
- `key_insights` 不能为空
- `full_analysis` 必须有值
- 失败时返回 `success: false` 并退出码 1
### kb-workflow 更新 ## 时间轴
- 新增"严格失败处理原则"章节 ### 第 1 部分 (00:00 - 10:00)
- 明确:深度分析失败 = 整个流程失败 [详细分析]
- 禁止降级处理或使用模板"假装成功"
## 知识库添加:BV1W4f9B6EdC(第二次处理) ### 第 2 部分 (10:00 - 20:00)
[详细分析]
...
```
### 处理结果 ## 待办
- **标题**: 爱泼斯坦案惊天动地?美式司法:"没事,已经结束了"【逸语道破】 - 无
- **作者**: 沈逸老师
- **时长**: 32:38
- **Whisper**: ✅ 完成(8043字符,971段)
- **深度分析**: ❌ 卡住超时
- **归档**: ❌ 未执行
### 执行记录 ## 备注
1. 环境变量检查 ✅ - AI 模型:glm-4.7
2. 链接解析 ✅ (BV1W4f9B6EdC) - 内容长度:约 8000 字符输入,生成详细分析报告
3. 元数据提取 ✅
4. 视频下载 ✅
5. Whisper 识别 ✅ (15:29 完成)
6. 深度分析 ❌ (15:29 开始,20分钟后仍卡住,终止)
### 发现的问题
1. **参数名不匹配错误**
- 错误: `name 'on_batch_complete' is not defined`
- 修复: 统一使用 `on_segment_complete` 作为内部参数名
2. **batch_size 未定义**
- 错误: `name 'batch_size' is not defined`
- 修复: 在 `_analyze_chunks_concurrent()` 签名中添加 `batch_size: int = 3`
3. **深度分析卡住**
- 症状: 进程运行但无输出,20分钟后仍卡住
- 原因: 可能是批处理模式逻辑问题或 API 调用卡住
- 状态: 需要排查
## 技能状态
| 步骤 | 技能 | 状态 |
|------|------|------|
| 链接解析 | kb-link-parser | ✅ |
| 元数据提取 | kb-bilibili-metadata | ✅ |
| 字幕下载 | kb-bilibili-content | ✅ |
| 语音识别 | kb-whisper | ✅ |
| 深度分析 | kb-deep-analyzer | ❌ 卡住 |
## 待解决问题
- [ ] 排查深度分析卡住原因
- [ ] 验证严格失败判断逻辑是否正确工作
- [ ] 重新测试完整知识库流程
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff