This repository has been archived on 2026-02-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
openclaw-skills/memory/2026-02-06.md
T
OpenClaw Agent 7e0acef4f9 feat: add skills and workspace files
- Add complete skill set including feishu, github, ci-gen, etc.
- Add workspace documentation (AGENTS.md, SOUL.md, etc.)
- Add memory system and project context
2026-02-06 19:14:24 +08:00

118 lines
3.2 KiB
Markdown

# 长视频分段分析功能 - 开发记录
**日期**: 2026-02-06
**任务**: 解决 obsidian-kb 技能中长视频上下文溢出问题
**方案**: 方案C - 动态混合策略(<30min直接分析,30-60min分2段,60min+分多段)
---
## 已完成工作
### ✅ Checkpoint 1: 基础结构
- [x] 创建 `src/content_chunker.py` - 字幕分段工具类
- [x] 更新 `config.yaml` - 添加 chunking 配置节点
- [x] 配置支持:30分钟/60分钟阈值,15分钟分段,6000字符限制
### ✅ Checkpoint 2: 核心逻辑
- [x] 修改 `src/multi_ai_client.py`
- [x] 添加 `_analyze_in_chunks()` - 分段分析主方法
- [x] 添加 `_analyze_chunk()` - 单段摘要生成
- [x] 添加 `_merge_summaries()` - 合并摘要生成最终结果
### ✅ Checkpoint 3: 测试
- [x] 创建 `tests/test_chunking.py` - 单元测试框架
- [x] 创建 `tests/fixtures/sample_long_video.srt` - 测试数据
- [x] 创建 `test_long_video.py` - 手动测试脚本
- [x] 所有测试通过
---
## 功能说明
### 分段策略
| 视频时长 | 处理策略 | API调用次数 |
|---------|---------|------------|
| < 10分钟 | 直接分析 | 1次 |
| 10-30分钟 | 截断至8000字符分析 | 1次 |
| 30-60分钟 | 分2段分析 | 3次 |
| 60分钟+ | 每15分钟一段 | N+1次 |
### 使用方法
```python
from src.content_chunker import ContentChunker, get_chunking_strategy
# 获取分段策略
strategy = get_chunking_strategy(duration_seconds=3600) # 60分钟视频
print(strategy['num_chunks']) # 输出: 4
# 分段字幕
chunker = ContentChunker(chunk_duration_seconds=900)
chunks = chunker.chunk_by_duration(srt_text)
```
---
## 文件变更
```
skills/obsidian-kb/
├── src/
│ ├── content_chunker.py [新增] 字幕分段工具
│ └── multi_ai_client.py [修改] 添加分段分析逻辑
├── config.yaml [修改] 添加 chunking 配置
├── tests/
│ ├── test_chunking.py [新增] 单元测试
│ └── fixtures/
│ └── sample_long_video.srt [新增] 测试数据
└── test_long_video.py [新增] 手动测试脚本
```
---
## 测试结果
```
============================================================
测试分段策略
============================================================
5分钟视频 (300秒):
策略: direct
分段: 1段
30分钟视频 (1800秒):
策略: chunk_2
分段: 2段
60分钟视频 (3600秒):
策略: chunk_4
分段: 4段
2小时视频 (7200秒):
策略: chunk_8
分段: 8段
============================================================
测试SRT解析和分段
============================================================
✅ 读取字幕文件: 6339 字符
📊 分段结果: 总分段数: 3
第1段: 00:00:00.000 - 00:15:30.000, 1331字符
第2段: 00:15:30.000 - 00:31:00.000, 1214字符
第3段: 00:31:00.000 - 00:43:00.000, 877字符
============================================================
测试完成!
============================================================
```
---
## 状态
🟢 **已完成** - 功能已实现并测试通过
现在30分钟以上的长视频会自动分段处理,不会再出现 "Context overflow: prompt too large for the model" 错误。