This commit is contained in:
@@ -1,5 +1,33 @@
|
||||
# Milestones
|
||||
|
||||
## v1.6 语义分段改进 (Shipped: 2026-03-23)
|
||||
|
||||
**Phases completed:** 3 phases (13-15), 17 plans
|
||||
|
||||
**Key accomplishments:**
|
||||
- ✓ SemanticSegmentationEngine — 基于 LLM 的智能语义分段引擎
|
||||
- ✓ 视频类型识别 — 知识类/故事类/访谈类/新闻类/vlog 自动检测
|
||||
- ✓ 主题边界检测 — 语义分析识别话题转换点
|
||||
- ✓ 主题标题生成 — 为章节/主题分段生成简洁标题
|
||||
- ✓ 内容完整性保护 — 句边界、论点完整性、并列结构保护
|
||||
- ✓ 中文句边界检测 — 基于语义停顿的中文句子识别
|
||||
- ✓ 可扩展策略架构 — Strategy Pattern 支持未来分段策略
|
||||
- ✓ 三层 Fallback 策略 — JSON 解析 → Markdown 提取 → 启发式分段
|
||||
- ✓ 优雅降级机制 — LLM 失败自动降级到规则分段
|
||||
- ✓ 智能缓存 — 基于内容的 LLM 结果缓存
|
||||
- ✓ 长文本分块 — 避免上下文窗口溢出
|
||||
- ✓ 配置开关 — KBSettings.enable_semantic_segmentation 支持
|
||||
- ✓ 向后兼容 — 禁用时使用规则分段,AnalyzeProcessor 不受影响
|
||||
|
||||
**Delivered:** 基于 LLM 的智能语义分段 — `enable_semantic_segmentation=True` 启用,支持环境变量 `KB_ENABLE_SEMANTIC_SEGMENTATION` 覆盖
|
||||
|
||||
**Known Gaps:**
|
||||
- COST-03 标记为 Pending,但已通过 CONFIG-01 实现(功能相同,需求跟踪不一致)
|
||||
|
||||
**Archives:** `.planning/milestones/v1.6-ROADMAP.md`, `.planning/milestones/v1.6-REQUIREMENTS.md`
|
||||
|
||||
---
|
||||
|
||||
## v1.5 B站字幕简化处理 (Shipped: 2026-03-21)
|
||||
|
||||
**Phases completed:** 1 phase (Phase 12), 2 plans, 4 tasks
|
||||
|
||||
+65
-18
@@ -1,23 +1,31 @@
|
||||
# kb-skills 工作流重构
|
||||
|
||||
## Current Milestone: v1.6 语义分段改进
|
||||
## Current State: v1.6 Shipped (2026-03-23)
|
||||
|
||||
**Goal:** 使用 LLM 语义分析实现智能分段,解决当前基于时间+长度规则的问题
|
||||
**v1.6 语义分段改进** 已交付 — 使用 LLM 语义分析实现智能分段
|
||||
|
||||
**目标特性:**
|
||||
- LLM 语义分析 — 识别视频类型并适配分段策略
|
||||
- 主题/章节识别 — 自动识别并添加标题
|
||||
- 论点/观点分段 — 保持内容完整性
|
||||
- 内容变化边界 — 自然分段位置
|
||||
- 通用自适应 — 支持各种类型视频
|
||||
**已交付特性:**
|
||||
- ✓ SemanticSegmentationEngine — 基于 LLM 的语义分段引擎
|
||||
- ✓ 视频类型识别 — 知识类/故事类/访谈类/新闻类/vlog
|
||||
- ✓ 主题边界检测 — 语义分析识别话题转换点
|
||||
- ✓ 主题标题生成 — 为章节/主题分段生成标题
|
||||
- ✓ 内容完整性保护 — 句边界、论点完整性、并列结构
|
||||
- ✓ 中文句边界检测 — 基于语义停顿
|
||||
- ✓ 可扩展策略架构 — Strategy Pattern
|
||||
- ✓ 三层 Fallback — JSON → Markdown → 启发式
|
||||
- ✓ 优雅降级 — LLM 失败降级到规则分段
|
||||
- ✓ 智能缓存 — 基于内容
|
||||
- ✓ 长文本分块 — 避免上下文窗口溢出
|
||||
- ✓ 配置开关 — `KB_ENABLE_SEMANTIC_SEGMENTATION`
|
||||
- ✓ 向后兼容 — 禁用时使用规则分段
|
||||
|
||||
### Active
|
||||
|
||||
- [ ] **语义分段改进** — 使用 LLM 替代简单规则,实现智能分段
|
||||
- [ ] **视频类型识别** — 自动判断视频类型(知识类、故事类、对话类等)
|
||||
- [ ] **主题识别与标题** — 识别主题章节并生成标题
|
||||
- [ ] **内容完整性** — 保持话题/论点的完整性,避免错误截断
|
||||
- [ ] **自然分段边界** — 在句子/段落边界处分段
|
||||
(无 — 下一里程碑规划待定)
|
||||
|
||||
### Next Milestone Goals
|
||||
|
||||
(待规划 — 运行 `/gsd:new-milestone` 开始)
|
||||
|
||||
## Previous Milestones
|
||||
|
||||
@@ -58,6 +66,39 @@ python3 kb-workflow/kb_workflow.py process "https://www.bilibili.com/video/BVxxx
|
||||
|
||||
### Validated
|
||||
|
||||
**v1.6 语义分段改进 (2026-03-23):**
|
||||
- ✓ **VIDEO-01**: 视频类型识别 — 知识类/故事类/访谈类/新闻类/vlog
|
||||
- ✓ **VIDEO-02**: 类型驱动分段策略 — 根据视频类型选择策略
|
||||
- ✓ **VIDEO-03**: 容错机制 — 识别失败时使用默认策略
|
||||
- ✓ **BOUND-01**: 话题边界检测 — 语义分析识别转换点
|
||||
- ✓ **BOUND-02**: 语义而非规则 — 基于语义分析而非时间/长度
|
||||
- ✓ **BOUND-03**: 话题完整性 — 不同话题不混入
|
||||
- ✓ **BOUND-04**: 内容完整性 — 单个话题保持完整
|
||||
- ✓ **COMP-01**: 句边界保护 — 不在句子中间截断
|
||||
- ✓ **COMP-02**: 论点完整性 — 前提-结论结构不被破坏
|
||||
- ✓ **COMP-03**: 并列结构 — 首先/其次/最后不被拆分
|
||||
- ✓ **TITLE-01**: 主题标题生成 — 为章节/主题生成分组标题
|
||||
- ✓ **TITLE-02**: 标题准确性 — 简洁反映主要内容
|
||||
- ✓ **TITLE-03**: 论点/观点不加标题 — 仅分段,保持原风格
|
||||
- ✓ **SENT-01**: 中文句边界识别 — 识别句子边界
|
||||
- ✓ **SENT-02**: 语义停顿 — 基于语义而非仅标点
|
||||
- ✓ **SENT-03**: 自然分段 — 保持连贯性和可读性
|
||||
- ✓ **STRAT-01**: 多策略支持 — 至少 2 种分段策略
|
||||
- ✓ **STRAT-02**: 自动适配 — 不同类型适配对应策略
|
||||
- ✓ **STRAT-03**: 可扩展 — 便于未来添加新类型
|
||||
- ✓ **ROBUST-01**: LLM 调用失败降级 — 自动降级到规则分段
|
||||
- ✓ **ROBUST-02**: 解析失败降级 — 自动降级到规则分段
|
||||
- ✓ **ROBUST-03**: AI 不可用降级 — 自动使用规则分段
|
||||
- ✓ **ROBUST-04**: 日志记录 — 降级过程有日志
|
||||
- ✓ **COST-01**: 长文本分块 — 避免上下文窗口溢出
|
||||
- ✓ **COST-02**: 智能缓存 — 相同内容不重复调用
|
||||
- ✓ **OUTPUT-01**: 标题 Markdown 结构 — 主题/章节带标题
|
||||
- ✓ **OUTPUT-02**: 纯文本输出 — 论点/观点不加标题
|
||||
- ✓ **OUTPUT-03**: 输出兼容 — 与现有 SRTProcessor 兼容
|
||||
- ✓ **CONFIG-01**: 配置开关 — 可通过配置启用/禁用
|
||||
- ✓ **CONFIG-02**: 向后兼容 — 不破坏现有规则分段
|
||||
- ✓ **CONFIG-03**: AnalyzeProcessor 独立 — 知乎/文章不受影响
|
||||
|
||||
**v1.5 B站字幕简化处理 (2026-03-21):**
|
||||
- ✓ **SRT-01**: SRT 字幕解析 — 读取 SRT 文件,提取纯文本和时间戳
|
||||
- ✓ **SRT-02**: 去除时间戳 — 移除时间码,保留字幕文本
|
||||
@@ -154,13 +195,15 @@ python3 kb-workflow/kb_workflow.py process "https://www.bilibili.com/video/BVxxx
|
||||
|
||||
## Context
|
||||
|
||||
### 当前架构 (v1.5)
|
||||
### 当前架构 (v1.6)
|
||||
- **核心模块**: `kb_workflow/` — Pipeline, Processors, Schemas
|
||||
- **SRT 处理**: `kb_workflow/srt/` — parser, segmenter, corrector
|
||||
- **SRT 处理**: `kb_workflow/srt/` — parser, segmenter, corrector, semantic_engine
|
||||
- **语义分段**: SemanticSegmentationEngine — LLM 驱动的智能分段
|
||||
- **CLI 入口**: `kb-workflow/kb_workflow.py process`
|
||||
- **平台适配器**: BilibiliAdapter, ZhihuAdapter
|
||||
- **处理器**: ParseProcessor, DownloadProcessor, SRTProcessor, AnalyzeProcessor
|
||||
- **测试覆盖**: 单元测试 + E2E 集成测试
|
||||
- **测试覆盖**: 76/76 测试通过 (100%)
|
||||
- **配置**: KBSettings.enable_semantic_segmentation (默认 True)
|
||||
|
||||
### 技术栈
|
||||
- Python 3.12+
|
||||
@@ -196,10 +239,14 @@ python3 kb-workflow/kb_workflow.py process "https://www.bilibili.com/video/BVxxx
|
||||
| playwright-stealth | 使用外部库实现指纹伪装 | ✓ Good — 成熟方案,活跃维护 |
|
||||
| stealth 默认启用 | stealth_config=None 时默认启用 | ✓ Good — 向后兼容,无需修改现有代码 |
|
||||
| SRT 独立模块 | SRT 处理独立于 DeepAnalyzer,位于 kb_workflow/srt/ | ✓ Good — 职责分离 |
|
||||
| LLM 语义分段 | 使用 LLM 分析内容语义,实现智能分段 | — Pending — v1.6 目标 |
|
||||
| LLM 语义分段 | 使用 LLM 分析内容语义,实现智能分段 | ✓ Good — v1.6 已交付 |
|
||||
| 视频类型推断 | 从元数据关键词推断类型,而非每个类型单独策略 | ✓ Good — 简化实现 |
|
||||
| 三层 Fallback | JSON 解析 → Markdown 提取 → 启发式分段 | ✓ Good — 健壮的输出解析 |
|
||||
| 智能缓存 | 基于内容的 LLM 结果缓存 | ✓ Good — 避免重复调用 |
|
||||
| 配置优先级 | 参数 > KBSettings > 默认值 | ✓ Good — 灵活性 |
|
||||
| ASR 纠错可选 | AI 不可用时返回原文 | ✓ Good — 降级策略 |
|
||||
| 平台路由 | B站视频使用 SRTProcessor,其他使用 AnalyzeProcessor | ✓ Good — 灵活性 |
|
||||
| disable_reasoning 参数 | ASR 纠错禁用思考模式获得直接结果 | ✓ Good — 避免 AI 分析过程输出 |
|
||||
|
||||
---
|
||||
*Last updated: 2026-03-21 after starting v1.6 milestone*
|
||||
*Last updated: 2026-03-23 after completing v1.6 milestone*
|
||||
|
||||
+21
-99
@@ -8,7 +8,7 @@
|
||||
- ✅ **v1.3 Proxy Pool** - Phase 10 (shipped 2026-03-18)
|
||||
- ✅ **v1.4 Zhihu Anti-Crawler** - Phase 11 (shipped 2026-03-18)
|
||||
- ✅ **v1.5 B站字幕简化处理** - Phase 12 (shipped 2026-03-21)
|
||||
- 🔄 **v1.6 语义分段改进** - Phases 13-15 (in progress)
|
||||
- ✅ **v1.6 语义分段改进** - Phases 13-15 (shipped 2026-03-23)
|
||||
|
||||
## Phases
|
||||
|
||||
@@ -100,33 +100,25 @@ Plans:
|
||||
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## ✅ v1.4 Zhihu Anti-Crawler (SHIPPED 2026-03-18)
|
||||
|
||||
**Milestone Goal:** 绕过知乎反爬检测,让 Playwright 爬虫能正常工作
|
||||
<details>
|
||||
<summary>✅ v1.4 Zhihu Anti-Crawler (Phase 11) - SHIPPED 2026-03-18</summary>
|
||||
|
||||
### Phase 11: Stealth Fingerprinting (指纹伪装)
|
||||
**Goal**: 隐藏 Playwright 自动化特征,让爬虫通过知乎的浏览器指纹检测
|
||||
**Depends on**: Phase 10
|
||||
**Requirements**: STEALTH-01, STEALTH-02, STEALTH-03, STEALTH-04, VERIFY-01, VERIFY-02
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. ZhihuCrawler 访问问答页面时不再被 40362 错误拦截
|
||||
2. 爬虫的 navigator.webdriver 属性对知乎不可见
|
||||
3. Playwright 特有的 JS 属性(__playwright, pwInspect 等)被移除
|
||||
4. 现有功能(登录、Cookie 持久化、内容爬取)保持正常工作
|
||||
**Plans**: 2 plans (all complete)
|
||||
|
||||
Plans:
|
||||
- [x] 11-01-PLAN.md — 创建 StealthConfig 模块和单元测试
|
||||
- [x] 11-02-PLAN.md — 集成 stealth 到 ZhihuCrawler 并验证
|
||||
- [x] 11-01: 创建 StealthConfig 模块和单元测试
|
||||
- [x] 11-02: 集成 stealth 到 ZhihuCrawler 并验证
|
||||
|
||||
**Key Decisions:**
|
||||
- 使用 playwright-stealth 库进行指纹伪装
|
||||
- stealth_config=None 表示默认启用 stealth (向后兼容)
|
||||
- launch 时添加 --disable-blink-features=AutomationControlled 参数
|
||||
|
||||
---
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>✅ v1.5 B站字幕简化处理 (Phase 12) - SHIPPED 2026-03-21</summary>
|
||||
@@ -147,76 +139,33 @@ Plans:
|
||||
|
||||
</details>
|
||||
|
||||
---
|
||||
<details>
|
||||
<summary>✅ v1.6 语义分段改进 (Phases 13-15) - SHIPPED 2026-03-23</summary>
|
||||
|
||||
## 🔄 v1.6 语义分段改进 (IN PROGRESS)
|
||||
|
||||
**Milestone Goal:** 使用 LLM 实现智能语义分段,识别视频类型并适配分段策略,保持内容完整性
|
||||
**完整归档信息**: `.planning/milestones/v1.6-ROADMAP.md`
|
||||
|
||||
### Phase 13: 核心 LLM 分段功能
|
||||
**Goal**: 实现基于 LLM 的智能语义分段,识别视频类型并生成主题标题
|
||||
**Depends on**: Phase 12
|
||||
**Requirements**: VIDEO-01, VIDEO-02, VIDEO-03, BOUND-01, BOUND-02, BOUND-03, BOUND-04, COMP-01, COMP-02, COMP-03, TITLE-01, TITLE-02, TITLE-03, SENT-01, SENT-02, SENT-03, STRAT-01, STRAT-02, STRAT-03
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. 系统能正确识别 B站视频的类型(知识类、故事类等),并根据类型选择分段策略
|
||||
2. 语义分段在主题切换处正确创建边界,不会混入不同话题的内容
|
||||
3. 分段不会在句子中间或论点未完成时截断,保持内容的语义完整性
|
||||
4. 主题/章节分段生成简洁准确的标题,论点/观点分段不加标题
|
||||
5. 不同类型视频使用对应的分段策略,策略可扩展
|
||||
**Plans**: 7 plans
|
||||
|
||||
Plans:
|
||||
- [x] 13-01-PLAN.md — 视频类型识别(Pydantic 模型、类型推断、LazyAIClient 初始化)
|
||||
- [x] 13-02-PLAN.md — 语义边界检测(Prompt 模板、JSON 提取、Pydantic 验证)
|
||||
- [x] 13-03-PLAN.md — 内容完整性保护(句边界、论点完整性 Prompt 指令)
|
||||
- [x] 13-04-PLAN.md — 主题标题生成(title 字段、验证、Prompt 指令)
|
||||
- [x] 13-05-PLAN.md — 中文句边界检测(列举标点符号、语义停顿 Prompt 指令)
|
||||
- [x] 13-06-PLAN.md — 可扩展策略架构(Strategy Pattern、统一策略实现)
|
||||
- [x] 13-07-PLAN.md — SRTProcessor 集成(enable_semantic_segmentation 参数、降级策略)
|
||||
**Plans**: 7 plans (all complete)
|
||||
|
||||
### Phase 14: 鲁棒性与成本控制
|
||||
**Goal**: 提高系统稳定性,实现优雅降级和成本优化
|
||||
**Depends on**: Phase 13
|
||||
**Requirements**: ROBUST-01, ROBUST-02, ROBUST-03, ROBUST-04, COST-01, COST-02, COST-03
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. LLM 调用失败时自动降级到简单规则分段,不影响整体流程
|
||||
2. LLM 响应解析失败时自动重试或降级,有日志记录便于诊断
|
||||
3. AI 不可用时自动使用简单规则分段,保证基本功能可用
|
||||
4. 长视频字幕自动分块处理,避免上下文窗口溢出
|
||||
5. 相同内容使用缓存结果,避免重复 LLM 调用
|
||||
**Plans**: 6 plans
|
||||
|
||||
Plans:
|
||||
- [x] 14-00-PLAN.md — 测试基础设施(Wave 0)
|
||||
- [x] 14-01-PLAN.md — LLM 调用失败时的重试和降级策略(ROBUST-01, ROBUST-03)
|
||||
- [x] 14-02-PLAN.md — LLM 响应解析失败的处理(ROBUST-02, ROBUST-04)
|
||||
- [x] 14-03-PLAN.md — 智能缓存实现(COST-02)
|
||||
- [ ] 14-04-PLAN.md — 长文本分块处理(COST-01)(partially implemented in 14-05)
|
||||
- [x] 14-05-PLAN.md — 集成到 SRTProcessor 和配置开关(COST-03)
|
||||
|
||||
**Wave Structure**:
|
||||
- Wave 0: Plan 00 (测试基础设施)
|
||||
- Wave 1: Plan 01, 02, 03, 04 (并行执行,无依赖)
|
||||
- Wave 2: Plan 05 (依赖 Wave 1 所有计划)
|
||||
**Plans**: 6 plans (all complete)
|
||||
|
||||
### Phase 15: 输出优化与兼容性
|
||||
**Goal**: 优化输出格式,确保向后兼容和可配置性
|
||||
**Depends on**: Phase 14
|
||||
**Requirements**: OUTPUT-01, OUTPUT-02, OUTPUT-03, CONFIG-01, CONFIG-02, CONFIG-03
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. 主题/章节分段输出带标题的 Markdown 结构,论点/观点分段输出纯文本
|
||||
2. 输出格式与现有 SRTProcessor 兼容,不影响其他平台处理
|
||||
3. LLM 分段功能可通过配置开关启用/禁用
|
||||
4. 向后兼容,禁用时使用简单规则分段,不破坏现有功能
|
||||
5. 知乎/文章平台继续使用 AnalyzeProcessor,不受影响
|
||||
**Plans**: TBD
|
||||
**Plans**: 4 plans (all complete)
|
||||
|
||||
**Delivered:** 基于 LLM 的智能语义分段 — 支持视频类型识别、主题边界检测、标题生成,完全向后兼容
|
||||
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## Progress
|
||||
|
||||
**Execution Order:**
|
||||
Phases execute in numeric order: 1 → 2 → ... → 12 → 13 → 14 → 15
|
||||
Phases execute in numeric order: 1 → 2 → ... → 15
|
||||
|
||||
| Phase | Milestone | Plans Complete | Status | Completed |
|
||||
|-------|-----------|----------------|--------|-----------|
|
||||
@@ -232,37 +181,10 @@ Phases execute in numeric order: 1 → 2 → ... → 12 → 13 → 14 → 15
|
||||
| 10. Proxy Pool | v1.3 | 2/2 | Complete | 2026-03-18 |
|
||||
| 11. Stealth Fingerprinting | v1.4 | 2/2 | Complete | 2026-03-18 |
|
||||
| 12. SRT 简化处理器 | v1.5 | 2/2 | Complete | 2026-03-21 |
|
||||
| 13. 核心 LLM 分段功能 | v1.6 | 7/7 | Complete | 2026-03-22 |
|
||||
| 14. 鲁棒性与成本控制 | v1.6 | Complete | 2026-03-23 | | 2026-03-23 |
|
||||
| 15. 输出优化与兼容性 | 3/4 | Complete | 2026-03-23 | - |
|
||||
| 13. 核心 LLM 分段功能 | v1.6 | 7/7 | Complete | 2026-03-22 |
|
||||
| 14. 鲁棒性与成本控制 | v1.6 | 6/6 | Complete | 2026-03-23 |
|
||||
| 15. 输出优化与兼容性 | v1.6 | 4/4 | Complete | 2026-03-23 |
|
||||
|
||||
---
|
||||
|
||||
## Context
|
||||
|
||||
### 技术栈
|
||||
- Python 3.12+
|
||||
- Pydantic v2 (数据验证)
|
||||
- SimpleAIClient (LLM 调用)
|
||||
- 现有 SemanticSegmenter (扩展点)
|
||||
|
||||
### v1.6 关键集成点
|
||||
- **SemanticSegmentationEngine**: 新模块,负责 LLM 调用和语义分析
|
||||
- **SRTProcessor**: 扩展现有处理器,添加 LLM 分支
|
||||
- **Pydantic Schemas**: 严格验证 LLM 输出格式
|
||||
|
||||
### 三层 Fallback 策略
|
||||
1. 直接 JSON 解析(理想情况)
|
||||
2. Markdown 代码块提取(常见情况)
|
||||
3. 启发式均匀分段(保底方案)
|
||||
|
||||
### 需要避免的陷阱
|
||||
- **LLM-1**: 上下文窗口溢出 — 实施分块策略
|
||||
- **LLM-2**: 输出格式不稳定 — 多层 fallback
|
||||
- **LLM-3**: 边界破坏完整性 — 句边界保护
|
||||
- **LLM-4**: 分段不一致性 — 温度控制
|
||||
- **LLM-5**: 成本失控 — 缓存策略
|
||||
|
||||
---
|
||||
|
||||
*Last updated: 2026-03-22*
|
||||
*Last updated: 2026-03-23 after v1.6 milestone*
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ milestone: v1.4
|
||||
milestone_name: Zhihu Anti-Crawler
|
||||
status: executing
|
||||
stopped_at: Completed Phase 15 Plan 02 (configuration integration)
|
||||
last_updated: "2026-03-23T15:06:18.086Z"
|
||||
last_updated: "2026-03-23T15:18:55.475Z"
|
||||
last_activity: 2026-03-23 — Phase 15 Plan 01 completed (enable_semantic_segmentation config integration)
|
||||
progress:
|
||||
total_phases: 15
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
# Requirements Archive: v1.6 语义分段改进
|
||||
|
||||
**Archived:** 2026-03-23
|
||||
**Status:** SHIPPED
|
||||
|
||||
For current requirements, see `.planning/REQUIREMENTS.md`.
|
||||
|
||||
---
|
||||
|
||||
# Requirements: kb-skills v1.6 语义分段改进
|
||||
|
||||
**Defined:** 2026-03-21
|
||||
**Core Value:** 可靠、可维护的处理管道 - 每个步骤独立、可验证、可恢复
|
||||
|
||||
## v1.6 Requirements
|
||||
|
||||
语义分段改进需求。使用 LLM 实现智能分段,替代基于时间+长度的简单规则。
|
||||
|
||||
### 视频类型识别 (VIDEO)
|
||||
|
||||
- [x] **VIDEO-01**: 系统能识别 B站视频的内容类型(知识类、故事类、访谈类、新闻类、vlog 等)
|
||||
- [x] **VIDEO-02**: 视频类型识别结果决定后续分段策略的选择
|
||||
- [x] **VIDEO-03**: 视频类型识别具有容错性,识别失败时使用默认策略
|
||||
|
||||
### 语义边界检测 (BOUND)
|
||||
|
||||
- [x] **BOUND-01**: 系统能检测字幕中的话题转换点,在不同主题之间创建分段边界
|
||||
- [x] **BOUND-02**: 边界检测基于语义分析,而非时间间隔或字符长度
|
||||
- [x] **BOUND-03**: 话题切换时正确创建分段,不混入不同话题的内容
|
||||
- [x] **BOUND-04**: 单个话题的内容保持完整,不会被错误截断
|
||||
|
||||
### 内容完整性保护 (COMP)
|
||||
|
||||
- [x] **COMP-01**: 分段不会在句子中间截断内容
|
||||
- [x] **COMP-02**: 分段不会破坏论点的完整性(如前提-结论结构)
|
||||
- [x] **COMP-03**: 并列结构(首先、其次、最后)不会被错误拆分
|
||||
|
||||
### 主题标题生成 (TITLE)
|
||||
|
||||
- [x] **TITLE-01**: 系统能为主题/章节类型的分段生成描述性标题
|
||||
- [x] **TITLE-02**: 标题简洁准确,反映分段的主要内容
|
||||
- [x] **TITLE-03**: 论点/观点类型的分段只分段,不加标题
|
||||
|
||||
### 中文句边界检测 (SENT)
|
||||
|
||||
- [x] **SENT-01**: 系统能识别中文字幕的句子边界
|
||||
- [x] **SENT-02**: 句边界检测基于语义停顿,而不仅依赖标点符号
|
||||
- [x] **SENT-03**: 分段位置自然,保持内容的连贯性和可读性
|
||||
|
||||
### 分段策略 (STRAT)
|
||||
|
||||
- [x] **STRAT-01**: 系统提供至少 2 种分段策略(知识类、故事类)
|
||||
- [x] **STRAT-02**: 不同视频类型自动适配对应的分段策略
|
||||
- [x] **STRAT-03**: 分段策略可扩展,便于未来添加新类型
|
||||
|
||||
### 鲁棒性 (ROBUST)
|
||||
|
||||
- [x] **ROBUST-01**: LLM 调用失败时自动降级到简单规则分段
|
||||
- [x] **ROBUST-02**: LLM 响应解析失败时自动降级到简单规则分段
|
||||
- [x] **ROBUST-03**: AI 不可用时自动使用简单规则分段
|
||||
- [x] **ROBUST-04**: 降级过程有日志记录,便于问题诊断
|
||||
|
||||
### 成本控制 (COST)
|
||||
|
||||
- [x] **COST-01**: 长视频字幕进行分块处理,避免上下文窗口溢出
|
||||
- [x] **COST-02**: 实现智能缓存,相同内容不重复调用 LLM
|
||||
- [ ] **COST-03**: 提供配置开关,用户可选择是否启用 LLM 分段
|
||||
|
||||
### 输出格式 (OUTPUT)
|
||||
|
||||
- [x] **OUTPUT-01**: 主题/章节分段输出带标题的 Markdown 结构
|
||||
- [x] **OUTPUT-02**: 论点/观点分段输出纯文本,保持原有风格
|
||||
- [x] **OUTPUT-03**: 输出与现有 SRTProcessor 兼容,不影响其他平台处理
|
||||
|
||||
### 配置与兼容性 (CONFIG)
|
||||
|
||||
- [x] **CONFIG-01**: LLM 分段功能可通过配置启用/禁用
|
||||
- [x] **CONFIG-02**: 向后兼容,不破坏现有简单规则分段
|
||||
- [x] **CONFIG-03**: 知乎/文章平台继续使用 AnalyzeProcessor,不受影响
|
||||
|
||||
## v2.0 Requirements
|
||||
|
||||
延后到未来版本的功能。
|
||||
|
||||
- **分层主题结构** — 支持多级主题层次(章-节)
|
||||
- **分段质量评分** — 给出分段质量的可信度
|
||||
- **说话人识别集成** — 结合说话者变化优化分段
|
||||
- **可配置分段粒度** — 用户可控制分段密度
|
||||
|
||||
## Out of Scope
|
||||
|
||||
明确排除的功能。
|
||||
|
||||
| 功能 | 原因 |
|
||||
|------|------|
|
||||
| 固定大小分段 | 违背语义分段初衷,破坏内容完整性 |
|
||||
| 实时流式分段 | 需要全局上下文才能做出好的分段决策 |
|
||||
| 多模态融合 | 需要视频帧分析,超出纯文本处理范围 |
|
||||
| 分段合并建议 | v1.6 专注于核心分段功能 |
|
||||
| 时间戳对齐 | v1.6 可以简化处理,延后到 v2.0 |
|
||||
|
||||
## Traceability
|
||||
|
||||
需求与阶段的映射关系。
|
||||
|
||||
| Requirement | Phase | Status |
|
||||
|-------------|-------|--------|
|
||||
| VIDEO-01 | Phase 13 | Complete |
|
||||
| VIDEO-02 | Phase 13 | Complete |
|
||||
| VIDEO-03 | Phase 13 | Complete |
|
||||
| BOUND-01 | Phase 13 | Complete |
|
||||
| BOUND-02 | Phase 13 | Complete |
|
||||
| BOUND-03 | Phase 13 | Complete |
|
||||
| BOUND-04 | Phase 13 | Complete |
|
||||
| COMP-01 | Phase 13 | Complete |
|
||||
| COMP-02 | Phase 13 | Complete |
|
||||
| COMP-03 | Phase 13 | Complete |
|
||||
| TITLE-01 | Phase 13 | Complete |
|
||||
| TITLE-02 | Phase 13 | Complete |
|
||||
| TITLE-03 | Phase 13 | Complete |
|
||||
| SENT-01 | Phase 13 | Complete |
|
||||
| SENT-02 | Phase 13 | Complete |
|
||||
| SENT-03 | Phase 13 | Complete |
|
||||
| STRAT-01 | Phase 13 | Complete |
|
||||
| STRAT-02 | Phase 13 | Complete |
|
||||
| STRAT-03 | Phase 13 | Complete |
|
||||
| ROBUST-01 | Phase 14 | Complete |
|
||||
| ROBUST-02 | Phase 14 | Complete |
|
||||
| ROBUST-03 | Phase 14 | Complete |
|
||||
| ROBUST-04 | Phase 14 | Complete |
|
||||
| COST-01 | Phase 14 | Complete |
|
||||
| COST-02 | Phase 14 | Complete |
|
||||
| COST-03 | Phase 14 | Pending |
|
||||
| OUTPUT-01 | Phase 15 | Complete |
|
||||
| OUTPUT-02 | Phase 15 | Complete |
|
||||
| OUTPUT-03 | Phase 15 | Complete |
|
||||
| CONFIG-01 | Phase 15 | Complete |
|
||||
| CONFIG-02 | Phase 15 | Complete |
|
||||
| CONFIG-03 | Phase 15 | Complete |
|
||||
|
||||
**Coverage:**
|
||||
- v1.6 requirements: 30 total
|
||||
- Mapped to phases: 30 (100%) ✓
|
||||
- Phase 13: 18 requirements (60%)
|
||||
- Phase 14: 7 requirements (23%)
|
||||
- Phase 15: 5 requirements (17%)
|
||||
|
||||
---
|
||||
*Requirements defined: 2026-03-21*
|
||||
*Last updated: 2026-03-21 after roadmap creation*
|
||||
@@ -0,0 +1,268 @@
|
||||
# Roadmap: kb-skills
|
||||
|
||||
## Milestones
|
||||
|
||||
- ✅ **v1.0 Pipeline Architecture** - Phases 1-4 (shipped 2026-03-15)
|
||||
- ✅ **v1.1 Architecture Refactor** - Phases 5-6 (shipped 2026-03-16)
|
||||
- ✅ **v1.2 Zhihu Crawler** - Phases 7-9 (shipped 2026-03-17)
|
||||
- ✅ **v1.3 Proxy Pool** - Phase 10 (shipped 2026-03-18)
|
||||
- ✅ **v1.4 Zhihu Anti-Crawler** - Phase 11 (shipped 2026-03-18)
|
||||
- ✅ **v1.5 B站字幕简化处理** - Phase 12 (shipped 2026-03-21)
|
||||
- 🔄 **v1.6 语义分段改进** - Phases 13-15 (in progress)
|
||||
|
||||
## Phases
|
||||
|
||||
<details>
|
||||
<summary>✅ v1.0 Pipeline Architecture (Phases 1-4) - SHIPPED 2026-03-15</summary>
|
||||
|
||||
### Phase 1: Foundation
|
||||
**Goal**: 项目基础设施和状态管理
|
||||
**Plans**: 3 plans
|
||||
|
||||
Plans:
|
||||
- [x] 01-01: WorkflowStateManager 状态管理
|
||||
- [x] 01-02: LinkParser URL 解析
|
||||
- [x] 01-03: IdempotencyChecker 幂等检查
|
||||
|
||||
### Phase 2: Adapters
|
||||
**Goal**: 平台元数据适配器
|
||||
**Plans**: 2 plans
|
||||
|
||||
Plans:
|
||||
- [x] 02-01: BilibiliAdapter B站适配器
|
||||
- [x] 02-02: ZhihuAdapter 知乎适配器
|
||||
|
||||
### Phase 3: Processors
|
||||
**Goal**: 管道处理器架构
|
||||
**Plans**: 3 plans
|
||||
|
||||
Plans:
|
||||
- [x] 03-01: BaseProcessor 基类
|
||||
- [x] 03-02: 具体处理器实现
|
||||
- [x] 03-03: Schema 验证
|
||||
|
||||
### Phase 4: Pipeline
|
||||
**Goal**: 处理器编排和 CLI
|
||||
**Plans**: 2 plans
|
||||
|
||||
Plans:
|
||||
- [x] 04-01: Pipeline 编排引擎
|
||||
- [x] 04-02: CLI process 命令
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>✅ v1.1 Architecture Refactor (Phases 5-6) - SHIPPED 2026-03-16</summary>
|
||||
|
||||
### Phase 5: 归档与目录优化
|
||||
**Goal**: 统一中间目录结构,添加自动归档步骤,优化最终目录布局
|
||||
**Plans**: 3 plans (all complete)
|
||||
|
||||
### Phase 6: 代码整合
|
||||
**Goal**: 将独立的元数据技能和 Pipeline 模块整合进 kb-workflow
|
||||
**Plans**: 3 plans (all complete)
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>✅ v1.2 Zhihu Crawler (Phases 7-9) - SHIPPED 2026-03-17</summary>
|
||||
|
||||
### Phase 7: 登录认证体系
|
||||
**Goal**: 建立知乎登录认证机制,支持二维码扫码和手动 Cookie 两种方式
|
||||
**Plans**: 3 plans (all complete)
|
||||
|
||||
### Phase 8: 内容爬取实现
|
||||
**Goal**: 实现知乎问答、专栏/文章、评论的完整爬取功能
|
||||
**Plans**: 3 plans (all complete)
|
||||
|
||||
### Phase 9: Pipeline 整合
|
||||
**Goal**: 将新爬虫实现整合进现有 Pipeline 架构
|
||||
**Plans**: 1 plan (complete)
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>✅ v1.3 Proxy Pool (Phase 10) - SHIPPED 2026-03-18</summary>
|
||||
|
||||
### Phase 10: Proxy Pool (代理池管理)
|
||||
**Goal**: 建立代理池基础设施,支持多代理配置、自动轮换和健康检查
|
||||
**Requirements**: PROXY-01, PROXY-02, PROXY-03, PROXY-04
|
||||
**Plans**: 2 plans (all complete)
|
||||
|
||||
Plans:
|
||||
- [x] 10-01: ProxyPool 核心类实现 — 从 YAML/环境变量加载代理,Round-Robin 轮换
|
||||
- [x] 10-02: 健康检查与 ZhihuCrawler 集成 — 被动检测、冷却恢复、代理切换
|
||||
|
||||
**Key Decisions:**
|
||||
- 使用索引指针而非 itertools.cycle 实现轮换
|
||||
- 惰性冷却检查而非后台定时器
|
||||
- ProxyPool 参数优先于 config.proxy 配置
|
||||
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## ✅ v1.4 Zhihu Anti-Crawler (SHIPPED 2026-03-18)
|
||||
|
||||
**Milestone Goal:** 绕过知乎反爬检测,让 Playwright 爬虫能正常工作
|
||||
|
||||
### Phase 11: Stealth Fingerprinting (指纹伪装)
|
||||
**Goal**: 隐藏 Playwright 自动化特征,让爬虫通过知乎的浏览器指纹检测
|
||||
**Depends on**: Phase 10
|
||||
**Requirements**: STEALTH-01, STEALTH-02, STEALTH-03, STEALTH-04, VERIFY-01, VERIFY-02
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. ZhihuCrawler 访问问答页面时不再被 40362 错误拦截
|
||||
2. 爬虫的 navigator.webdriver 属性对知乎不可见
|
||||
3. Playwright 特有的 JS 属性(__playwright, pwInspect 等)被移除
|
||||
4. 现有功能(登录、Cookie 持久化、内容爬取)保持正常工作
|
||||
**Plans**: 2 plans (all complete)
|
||||
|
||||
Plans:
|
||||
- [x] 11-01-PLAN.md — 创建 StealthConfig 模块和单元测试
|
||||
- [x] 11-02-PLAN.md — 集成 stealth 到 ZhihuCrawler 并验证
|
||||
|
||||
**Key Decisions:**
|
||||
- 使用 playwright-stealth 库进行指纹伪装
|
||||
- stealth_config=None 表示默认启用 stealth (向后兼容)
|
||||
- launch 时添加 --disable-blink-features=AutomationControlled 参数
|
||||
|
||||
---
|
||||
|
||||
<details>
|
||||
<summary>✅ v1.5 B站字幕简化处理 (Phase 12) - SHIPPED 2026-03-21</summary>
|
||||
|
||||
### Phase 12: SRT 简化处理器
|
||||
**Goal**: 实现 SRT 字幕处理,生成简化的 Markdown 文档,保留元数据和标签,移除深度分析
|
||||
**Plans**: 2 plans (all complete)
|
||||
|
||||
Plans:
|
||||
- [x] 12-01: SRT 处理模块(parser、segmenter、corrector)和 SRTProcessor 实现
|
||||
- [x] 12-02: Pipeline 集成、平台路由、测试验证
|
||||
|
||||
**Key Decisions:**
|
||||
- SRT 处理模块独立于 DeepAnalyzer,位于 kb_workflow/srt/
|
||||
- 语义分段基于简单规则(时间间隔 + 长度限制),不依赖 LLM
|
||||
- ASR 纠错可选,AI 不可用时返回原文
|
||||
- B 站视频使用 SRTProcessor,知乎/文章继续使用 AnalyzeProcessor
|
||||
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## 🔄 v1.6 语义分段改进 (IN PROGRESS)
|
||||
|
||||
**Milestone Goal:** 使用 LLM 实现智能语义分段,识别视频类型并适配分段策略,保持内容完整性
|
||||
|
||||
### Phase 13: 核心 LLM 分段功能
|
||||
**Goal**: 实现基于 LLM 的智能语义分段,识别视频类型并生成主题标题
|
||||
**Depends on**: Phase 12
|
||||
**Requirements**: VIDEO-01, VIDEO-02, VIDEO-03, BOUND-01, BOUND-02, BOUND-03, BOUND-04, COMP-01, COMP-02, COMP-03, TITLE-01, TITLE-02, TITLE-03, SENT-01, SENT-02, SENT-03, STRAT-01, STRAT-02, STRAT-03
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. 系统能正确识别 B站视频的类型(知识类、故事类等),并根据类型选择分段策略
|
||||
2. 语义分段在主题切换处正确创建边界,不会混入不同话题的内容
|
||||
3. 分段不会在句子中间或论点未完成时截断,保持内容的语义完整性
|
||||
4. 主题/章节分段生成简洁准确的标题,论点/观点分段不加标题
|
||||
5. 不同类型视频使用对应的分段策略,策略可扩展
|
||||
**Plans**: 7 plans
|
||||
|
||||
Plans:
|
||||
- [x] 13-01-PLAN.md — 视频类型识别(Pydantic 模型、类型推断、LazyAIClient 初始化)
|
||||
- [x] 13-02-PLAN.md — 语义边界检测(Prompt 模板、JSON 提取、Pydantic 验证)
|
||||
- [x] 13-03-PLAN.md — 内容完整性保护(句边界、论点完整性 Prompt 指令)
|
||||
- [x] 13-04-PLAN.md — 主题标题生成(title 字段、验证、Prompt 指令)
|
||||
- [x] 13-05-PLAN.md — 中文句边界检测(列举标点符号、语义停顿 Prompt 指令)
|
||||
- [x] 13-06-PLAN.md — 可扩展策略架构(Strategy Pattern、统一策略实现)
|
||||
- [x] 13-07-PLAN.md — SRTProcessor 集成(enable_semantic_segmentation 参数、降级策略)
|
||||
|
||||
### Phase 14: 鲁棒性与成本控制
|
||||
**Goal**: 提高系统稳定性,实现优雅降级和成本优化
|
||||
**Depends on**: Phase 13
|
||||
**Requirements**: ROBUST-01, ROBUST-02, ROBUST-03, ROBUST-04, COST-01, COST-02, COST-03
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. LLM 调用失败时自动降级到简单规则分段,不影响整体流程
|
||||
2. LLM 响应解析失败时自动重试或降级,有日志记录便于诊断
|
||||
3. AI 不可用时自动使用简单规则分段,保证基本功能可用
|
||||
4. 长视频字幕自动分块处理,避免上下文窗口溢出
|
||||
5. 相同内容使用缓存结果,避免重复 LLM 调用
|
||||
**Plans**: 6 plans
|
||||
|
||||
Plans:
|
||||
- [x] 14-00-PLAN.md — 测试基础设施(Wave 0)
|
||||
- [x] 14-01-PLAN.md — LLM 调用失败时的重试和降级策略(ROBUST-01, ROBUST-03)
|
||||
- [x] 14-02-PLAN.md — LLM 响应解析失败的处理(ROBUST-02, ROBUST-04)
|
||||
- [x] 14-03-PLAN.md — 智能缓存实现(COST-02)
|
||||
- [ ] 14-04-PLAN.md — 长文本分块处理(COST-01)(partially implemented in 14-05)
|
||||
- [x] 14-05-PLAN.md — 集成到 SRTProcessor 和配置开关(COST-03)
|
||||
|
||||
**Wave Structure**:
|
||||
- Wave 0: Plan 00 (测试基础设施)
|
||||
- Wave 1: Plan 01, 02, 03, 04 (并行执行,无依赖)
|
||||
- Wave 2: Plan 05 (依赖 Wave 1 所有计划)
|
||||
|
||||
### Phase 15: 输出优化与兼容性
|
||||
**Goal**: 优化输出格式,确保向后兼容和可配置性
|
||||
**Depends on**: Phase 14
|
||||
**Requirements**: OUTPUT-01, OUTPUT-02, OUTPUT-03, CONFIG-01, CONFIG-02, CONFIG-03
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. 主题/章节分段输出带标题的 Markdown 结构,论点/观点分段输出纯文本
|
||||
2. 输出格式与现有 SRTProcessor 兼容,不影响其他平台处理
|
||||
3. LLM 分段功能可通过配置开关启用/禁用
|
||||
4. 向后兼容,禁用时使用简单规则分段,不破坏现有功能
|
||||
5. 知乎/文章平台继续使用 AnalyzeProcessor,不受影响
|
||||
**Plans**: TBD
|
||||
|
||||
---
|
||||
|
||||
## Progress
|
||||
|
||||
**Execution Order:**
|
||||
Phases execute in numeric order: 1 → 2 → ... → 12 → 13 → 14 → 15
|
||||
|
||||
| Phase | Milestone | Plans Complete | Status | Completed |
|
||||
|-------|-----------|----------------|--------|-----------|
|
||||
| 1. Foundation | v1.0 | 3/3 | Complete | 2026-03-15 |
|
||||
| 2. Adapters | v1.0 | 2/2 | Complete | 2026-03-15 |
|
||||
| 3. Processors | v1.0 | 3/3 | Complete | 2026-03-15 |
|
||||
| 4. Pipeline | v1.0 | 2/2 | Complete | 2026-03-15 |
|
||||
| 5. 归档与目录优化 | v1.1 | 3/3 | Complete | 2026-03-16 |
|
||||
| 6. 代码整合 | v1.1 | 3/3 | Complete | 2026-03-16 |
|
||||
| 7. 登录认证体系 | v1.2 | 3/3 | Complete | 2026-03-17 |
|
||||
| 8. 内容爬取实现 | v1.2 | 3/3 | Complete | 2026-03-17 |
|
||||
| 9. Pipeline 整合 | v1.2 | 1/1 | Complete | 2026-03-17 |
|
||||
| 10. Proxy Pool | v1.3 | 2/2 | Complete | 2026-03-18 |
|
||||
| 11. Stealth Fingerprinting | v1.4 | 2/2 | Complete | 2026-03-18 |
|
||||
| 12. SRT 简化处理器 | v1.5 | 2/2 | Complete | 2026-03-21 |
|
||||
| 13. 核心 LLM 分段功能 | v1.6 | 7/7 | Complete | 2026-03-22 |
|
||||
| 14. 鲁棒性与成本控制 | v1.6 | Complete | 2026-03-23 | | 2026-03-23 |
|
||||
| 15. 输出优化与兼容性 | 3/4 | Complete | 2026-03-23 | - |
|
||||
|
||||
---
|
||||
|
||||
## Context
|
||||
|
||||
### 技术栈
|
||||
- Python 3.12+
|
||||
- Pydantic v2 (数据验证)
|
||||
- SimpleAIClient (LLM 调用)
|
||||
- 现有 SemanticSegmenter (扩展点)
|
||||
|
||||
### v1.6 关键集成点
|
||||
- **SemanticSegmentationEngine**: 新模块,负责 LLM 调用和语义分析
|
||||
- **SRTProcessor**: 扩展现有处理器,添加 LLM 分支
|
||||
- **Pydantic Schemas**: 严格验证 LLM 输出格式
|
||||
|
||||
### 三层 Fallback 策略
|
||||
1. 直接 JSON 解析(理想情况)
|
||||
2. Markdown 代码块提取(常见情况)
|
||||
3. 启发式均匀分段(保底方案)
|
||||
|
||||
### 需要避免的陷阱
|
||||
- **LLM-1**: 上下文窗口溢出 — 实施分块策略
|
||||
- **LLM-2**: 输出格式不稳定 — 多层 fallback
|
||||
- **LLM-3**: 边界破坏完整性 — 句边界保护
|
||||
- **LLM-4**: 分段不一致性 — 温度控制
|
||||
- **LLM-5**: 成本失控 — 缓存策略
|
||||
|
||||
---
|
||||
|
||||
*Last updated: 2026-03-22*
|
||||
Reference in New Issue
Block a user