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
3. 考虑使用 monkey patch 或环境变量等非侵入式方案
## 知识库工作流(2026-02-13)
- **deep_analyzer.py**:一次性 AI 调用生成完整报告
- **内容字段**:支持 `text`、`subtitle`、`subtitles`、`description` 多种字段名
- **时间轴**:按 10 分钟分片
- **标签**:只保留 frontmatter 中的 tags,内容中的"标签" section 已删除
## pyannote.audio 兼容性问题(2026-02-13)
- **问题**: pyannote 4.0.4 与 torch 2.10+ 存在兼容性问题
- **症状**:
+43 -77
View File
@@ -1,88 +1,54 @@
# 2026-02-13
# 2026-02-13 工作日志
## kb-deep-analyzer 技能改进
## 完成事项
### 批处理模式
- 改为分批并发处理(3+3+3+1),避免同时启动所有AI请求
- `analyze()` 方法支持 `on_batch_complete` 回调
- `batch_size` 参数控制每批数量(默认3)
### deep_analyzer.py 重构
- 改为一次性 AI 调用生成完整报告
- 修复内容读取:支持 `text`、`subtitle`、`subtitles`、`description` 多种字段
- 时间轴分片策略:按 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 提取)
- frontmatter 添加 `url` 字段
- 删除"建议行动"章节
- 删除 `{% if timeline %}` 和最后的分析时间
- 新格式更简洁
## 标题
[AI 自总结标题]
### 提交记录
- `94370f2` - feat: 改为批处理模式
- `c8ddc1e` - feat: 添加流式写入器
- `518f8e4` - fix: 优化文档格式
- `c276df2` - feat(kb-workflow): 添加严格失败判断逻辑
## 摘要
[200-400字]
## 严格失败判断规则(15:19 添加)
## 主要主题
- 主题1
- 主题2
...
### kb-deep-analyzer 更新
- 新增判断逻辑:只有 AI 真正完成分析才算成功
- 判断条件:
- `summary` 不能以"共"开头(降级处理的默认内容)
- `main_topics` 不能为空
- `key_insights` 不能为空
- `full_analysis` 必须有值
- 失败时返回 `success: false` 并退出码 1
## 关键见解
- 见解1
- 见解2
...
### kb-workflow 更新
- 新增"严格失败处理原则"章节
- 明确:深度分析失败 = 整个流程失败
- 禁止降级处理或使用模板"假装成功"
## 时间轴
### 第 1 部分 (00:00 - 10:00)
[详细分析]
## 知识库添加:BV1W4f9B6EdC(第二次处理)
### 第 2 部分 (10:00 - 20:00)
[详细分析]
...
```
### 处理结果
- **标题**: 爱泼斯坦案惊天动地?美式司法:"没事,已经结束了"【逸语道破】
- **作者**: 沈逸老师
- **时长**: 32:38
- **Whisper**: ✅ 完成(8043字符,971段)
- **深度分析**: ❌ 卡住超时
- **归档**: ❌ 未执行
## 待办
- 无
### 执行记录
1. 环境变量检查 ✅
2. 链接解析 ✅ (BV1W4f9B6EdC)
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 | ❌ 卡住 |
## 待解决问题
- [ ] 排查深度分析卡住原因
- [ ] 验证严格失败判断逻辑是否正确工作
- [ ] 重新测试完整知识库流程
## 备注
- AI 模型:glm-4.7
- 内容长度:约 8000 字符输入,生成详细分析报告
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff