This repository has been archived on 2026-08-07. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
kb-skills/.planning/phases/13-llm/13-04-PLAN.md
T

6.3 KiB
Raw Blame History

phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, must_haves
phase plan type wave depends_on files_modified autonomous requirements must_haves
13 04 tdd 1
kb_workflow/srt/semantic_engine.py
tests/test_semantic_engine.py
true
TITLE-01
TITLE-02
TITLE-03
truths artifacts key_links
系统能为主题/章节类型的分段生成描述性标题
标题简洁准确(5-15字),反映分段的主要内容
论点/观点类型的分段只分段,不加标题
path provides contains
kb_workflow/srt/semantic_engine.py 标题生成 Prompt 指令和验证 VideoSegment.title 字段验证
path provides min_lines
tests/test_semantic_engine.py 标题生成测试 60
from to via pattern
SEGMENTATION_PROMPT VideoSegment.title Prompt 指导 LLM 生成标题 为主题.*生成标题.*5-15字
from to via pattern
VideoSegment.validate_title_length Pydantic 验证 标题长度限制 len.*title.*15
实现主题标题生成功能

目的:让 LLM 为主题/章节类型分段生成简洁准确的标题,论点/观点分段不加标题 输出:VideoSegment.title 字段和验证,Prompt 中的标题生成指令

<execution_context> @/home/starmen1265/.claude/get-shit-done/workflows/execute-plan.md @/home/starmen1265/.claude/get-shit-done/templates/summary.md </execution_context>

@.planning/phases/13-llm/13-CONTEXT.md @.planning/phases/13-llm/13-RESEARCH.md

User Decision (Locked)

  • 标题范围: LLM 自主判断 — 让 LLM 自行判断哪些分段需要标题(主题/章节类),哪些不需要(观点/对话类),不在 Prompt 中硬性规定
  • 标题风格: 简洁描述型 — 标题应简短(5-15 字),如「机器学习概述」「梯度下降原理」,类似目录结构
  • 标题格式: H2 (##) — 在 Markdown 输出中,标题使用二级标题(##),与现有「## 内容」格式保持一致
  • 标题缺失处理: 跳过标题 — 如果 LLM 无法为某个分段生成合适的标题(如过渡性内容),该分段不加标题,直接以内容开始
主题标题生成 kb_workflow/srt/semantic_engine.py, tests/test_semantic_engine.py Prompt 设计(用户决策): - 让 LLM 自主判断哪些分段需要标题 - 标题简洁(5-15字),如「机器学习概述」 - 过渡性内容可将 title 设为 null
Pydantic 验证:
- title: Optional[str] = None
- 标题长度验证(不超过 15 字)

测试验证:
- 主题/章节分段生成标题
- 标题简洁准确
- 论点/观点分段标题为 null
在 VideoSegment 模型中: 1. title: Optional[str] = Field(None, description="分段标题(5-15字)") 2. @field_validator('title') 验证长度
在 SEGMENTATION_PROMPT 中:
1. 添加标题生成指令
2. 说明 LLM 自主判断是否需要标题
3. 标题简洁(5-15字)
4. 无法生成标题时设为 null

测试:
1. test_title_generation() - 验证标题生成
2. test_title_omission() - 验证不需要标题时为 null
Task 1: 实现标题生成功能 kb_workflow/srt/semantic_engine.py, tests/test_semantic_engine.py RED 阶段 - 测试预期行为: - test_title_generation: 主题/章节分段生成标题 - test_title_omission: 论点/观点分段不加标题(title=null)
  GREEN 阶段 - 实现功能:
  - VideoSegment.title: Optional[str] = None
  - @field_validator 验证标题长度(5-15 字)
  - SEGMENTATION_PROMPT 添加标题生成指令
  - 说明 LLM 自主判断是否需要标题

  REFACTOR 阶段 - 优化代码:
  - 优化标题验证逻辑
</behavior>
<action>
  在 semantic_engine.py 中实现:

  1. 更新 VideoSegment 模型:
     ```python
     class VideoSegment(BaseModel):
         title: Optional[str] = Field(
             None,
             description="分段标题(5-15字),主题/章节类型有标题,观点/对话类型为空"
         )
         content: str = Field(..., description="分段内容,保持句子完整性")
         start_index: int = Field(..., description="在原文中的起始字符位置")
         end_index: int = Field(..., description="在原文中的结束字符位置")

         @field_validator('title')
         @classmethod
         def validate_title_length(cls, v: Optional[str]) -> Optional[str]:
             if v is not None and len(v) > 15:
                 raise ValueError("标题长度不应超过 15 字")
             return v
     ```

  2. 在 SEGMENTATION_PROMPT 中添加标题指令:
     ```python
     【分段要求】
     ...
     6. 为主分/章节类型的分段生成简洁标题(5-15字),论点/观点类型分段不加标题

     【输出格式】
     ...
     "title": "分段标题(如果此分段不需要标题则设为 null)",
     ...
     ```

  3. 在 Prompt 示例中说明标题判断标准(自主判断)

  测试验证:
  - 主题分段有标题(如「机器学习概述」)
  - 过渡性内容标题为 null
  - 标题长度不超过 15 字
</action>
<verify>
  <automated>pytest tests/test_semantic_engine.py::test_title_generation -x</automated>
</verify>
<done>
  - VideoSegment.title 字段定义为 Optional[str]
  - @field_validator 验证标题长度(5-15 字)
  - SEGMENTATION_PROMPT 包含标题生成指令
  - 说明 LLM 自主判断是否需要标题
  - 测试验证标题生成和省略
</done>
- pytest tests/test_semantic_engine.py -v 相关测试通过 - 标题长度验证生效 - Prompt 指令清晰(LLM 自主判断)

<success_criteria>

  1. VideoSegment.title 定义为 Optional[str]
  2. @field_validator 验证标题长度(5-15 字)
  3. SEGMENTATION_PROMPT 包含标题生成指令
  4. 测试验证标题生成和省略 </success_criteria>
After completion, create `.planning/phases/13-llm/13-04-SUMMARY.md`