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

3.2 KiB

长视频分段分析功能 - 开发记录

日期: 2026-02-06 任务: 解决 obsidian-kb 技能中长视频上下文溢出问题 方案: 方案C - 动态混合策略(<30min直接分析,30-60min分2段,60min+分多段)


已完成工作

✅ Checkpoint 1: 基础结构

  • 创建 src/content_chunker.py - 字幕分段工具类
  • 更新 config.yaml - 添加 chunking 配置节点
  • 配置支持:30分钟/60分钟阈值,15分钟分段,6000字符限制

✅ Checkpoint 2: 核心逻辑

  • 修改 src/multi_ai_client.py
  • 添加 _analyze_in_chunks() - 分段分析主方法
  • 添加 _analyze_chunk() - 单段摘要生成
  • 添加 _merge_summaries() - 合并摘要生成最终结果

✅ Checkpoint 3: 测试

  • 创建 tests/test_chunking.py - 单元测试框架
  • 创建 tests/fixtures/sample_long_video.srt - 测试数据
  • 创建 test_long_video.py - 手动测试脚本
  • 所有测试通过

功能说明

分段策略

视频时长 处理策略 API调用次数
< 10分钟 直接分析 1次
10-30分钟 截断至8000字符分析 1次
30-60分钟 分2段分析 3次
60分钟+ 每15分钟一段 N+1次

使用方法

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" 错误。