docs(15-01): complete enable_semantic_segmentation config integration plan

This commit is contained in:
2026-03-23 23:02:15 +08:00
parent 1c1c88e2cf
commit 2df27e277f
4 changed files with 183 additions and 18 deletions
+2 -2
View File
@@ -65,7 +65,7 @@
### 配置与兼容性 (CONFIG)
- [ ] **CONFIG-01**: LLM 分段功能可通过配置启用/禁用
- [x] **CONFIG-01**: LLM 分段功能可通过配置启用/禁用
- [ ] **CONFIG-02**: 向后兼容,不破坏现有简单规则分段
- [ ] **CONFIG-03**: 知乎/文章平台继续使用 AnalyzeProcessor,不受影响
@@ -125,7 +125,7 @@
| OUTPUT-01 | Phase 15 | Pending |
| OUTPUT-02 | Phase 15 | Pending |
| OUTPUT-03 | Phase 15 | Pending |
| CONFIG-01 | Phase 15 | Pending |
| CONFIG-01 | Phase 15 | Complete |
| CONFIG-02 | Phase 15 | Pending |
| CONFIG-03 | Phase 15 | Pending |
+1 -1
View File
@@ -234,7 +234,7 @@ Phases execute in numeric order: 1 → 2 → ... → 12 → 13 → 14 → 15
| 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. 输出优化与兼容性 | v1.6 | 0/0 | Not started | - |
| 15. 输出优化与兼容性 | 1/4 | In Progress| | - |
---
+16 -15
View File
@@ -3,15 +3,15 @@ gsd_state_version: 1.0
milestone: v1.4
milestone_name: Zhihu Anti-Crawler
status: executing
stopped_at: Phase 15 context gathered
last_updated: "2026-03-23T14:48:53.206Z"
last_activity: 2026-03-23 — Phase 14 Plan 04 completed (long text chunking)
stopped_at: Completed 15-01-PLAN.md (enable_semantic_segmentation config integration)
last_updated: "2026-03-23T15:02:04.579Z"
last_activity: 2026-03-23 — Phase 15 Plan 01 completed (enable_semantic_segmentation config integration)
progress:
total_phases: 15
completed_phases: 12
total_plans: 44
completed_plans: 43
percent: 34
total_plans: 48
completed_plans: 44
percent: 92
---
# Project State
@@ -25,15 +25,15 @@ See: .planning/PROJECT.md (updated 2026-03-21)
## Current Position
Phase: Phase 14 - 鲁棒性与成本控制
Plan: 04 (completed)
Phase: Phase 15 - 输出优化与兼容性
Plan: 01 (completed)
Status: In progress
Last activity: 2026-03-23 — Phase 14 Plan 04 completed (long text chunking)
Last activity: 2026-03-23 — Phase 15 Plan 01 completed (enable_semantic_segmentation config integration)
Progress: [██░░░░░░░░░] 34% (Phase 14/15, 4/6 plans complete)
Progress: [█████████░] 92% (Phase 15/15, 1/4 plans complete)
### Phase 14 Goal
提高 LLM 语义分段的稳定性和成本效率,实现智能缓存和优雅降级
### Phase 15 Goal
优化输出格式并确保配置开关和向后兼容性
### Phase 13 Requirements (18 total)
- VIDEO-01, VIDEO-02, VIDEO-03 (视频类型识别) ✅
@@ -154,12 +154,13 @@ None.
| 14 | 02 | ~220min | 1 | 2 | 2026-03-23 |
| 14 | 03 | ~72min | 1 | 3 | 2026-03-23 |
| 14 | 05 | ~25min | 2 | 3 | 2026-03-23 |
| Phase 15-output-compat P01 | 54 | 1 tasks | 2 files |
## Session Continuity
Last session: 2026-03-23T14:48:53.204Z
Stopped at: Phase 15 context gathered
Resume file: .planning/phases/15-output-compat/15-CONTEXT.md
Last session: 2026-03-23T15:02:04.577Z
Stopped at: Completed 15-01-PLAN.md (enable_semantic_segmentation config integration)
Resume file: None
**Next step:** Phase 14 Plan 04 (分块处理) may need completion, or continue to Phase 15 (优化)
@@ -0,0 +1,164 @@
---
phase: 15-output-compat
plan: 01
subsystem: configuration
tags: [config, llm-segmentation, pydantic-settings, tdd]
dependency_graph:
requires: []
provides: [enable_semantic_segmentation-config]
affects: [srt-processor-integration]
tech_stack:
added: []
patterns: [pydantic-settings, tdd, boolean-env-parsing]
key_files:
created: []
modified: [kb_workflow/pipeline/config.py, tests/test_pipeline/test_config.py]
decisions: []
metrics:
duration: 54s
completed_date: 2026-03-23T15:01:37Z
---
# Phase 15 Plan 01: enable_semantic_segmentation 配置集成 Summary
为 KBSettings 添加 `enable_semantic_segmentation` 字段,允许用户通过环境变量或 `~/.kb_env` 文件控制 LLM 语义分段功能。
## One-Liner
Pydantic settings 集成 - 添加 `enable_semantic_segmentation` 布尔配置字段(默认 True),支持环境变量 `KB_ENABLE_SEMANTIC_SEGMENTATION` 覆盖。
## Completed Tasks
| Task | Name | Commit | Files |
| ---- | ---- | ---- | ---- |
| 1 | 添加 enable_semantic_segmentation 字段到 KBSettings | f2a1847, 8303cea | kb_workflow/pipeline/config.py, tests/test_pipeline/test_config.py |
## Implementation Details
### KBSettings 字段添加
在 `kb_workflow/pipeline/config.py` 的 `KBSettings` 类中添加新字段:
```python
# 工作流行为配置
enable_semantic_segmentation: bool = Field(
default=True,
description="启用 LLM 语义分段(默认启用)"
)
```
**字段位置:** 在 `overwrite_archives` 字段之后,保持配置分类清晰。
### 测试实现 (TDD)
**RED 阶段:**
- 提交 `f2a1847`: 添加 4 个失败测试
- `test_kbsettings_has_enable_semantic_segmentation_field`: 验证字段存在性和类型
- `test_enable_semantic_segmentation_default_value`: 验证默认值为 True
- `test_enable_semantic_segmentation_from_env`: 验证环境变量覆盖
- `test_enable_semantic_segmentation_boolean_parsing`: 验证多种布尔字符串解析
**GREEN 阶段:**
- 提交 `8303cea`: 实现字段定义,所有测试通过
- 运行验证:`pytest tests/test_pipeline/test_config.py::TestEnableSemanticSegmentationField -x -v`
- 结果:4 个测试全部通过
### 环境变量解析
Pydantic-settings 自动支持以下布尔字符串表示(通过 `bool` 类型自动解析):
**True 值:**
- `"true"`, `"True"`, `"TRUE"`
- `"yes"`, `"y"`
- `"1"`
**False 值:**
- `"false"`, `"False"`, `"FALSE"`
- `"no"`, `"n"`
- `"0"`
### 配置方式
用户可通过以下方式控制语义分段功能:
1. **环境变量:**
```bash
export KB_ENABLE_SEMANTIC_SEGMENTATION=true
```
2. **~/.kb_env 文件:**
```
KB_ENABLE_SEMANTIC_SEGMENTATION=false
```
3. **代码覆盖(用于测试):**
```python
settings = KBSettings(
base_path="/tmp/kb",
archive_path="/tmp/archive",
enable_semantic_segmentation=False
)
```
## Deviations from Plan
### Auto-fixed Issues
None - plan executed exactly as written.
## Auth Gates
None.
## Requirements Satisfied
- **CONFIG-01**: LLM 分段功能可通过配置启用/禁用 ✅
- `enable_semantic_segmentation` 字段存在,类型为 `bool`
- 默认值为 `True`(启用语义分段)
- 支持环境变量 `KB_ENABLE_SEMANTIC_SEGMENTATION` 覆盖
- Pydantic 自动解析布尔字符串(true/false, yes/no, 1/0)
## Verification Results
### Automated Tests
```
pytest tests/test_pipeline/test_config.py::TestEnableSemanticSegmentationField -x -v
tests/test_pipeline/test_config.py::TestEnableSemanticSegmentationField::test_kbsettings_has_enable_semantic_segmentation_field PASSED [ 25%]
tests/test_pipeline/test_config.py::TestEnableSemanticSegmentationField::test_enable_semantic_segmentation_default_value PASSED [ 50%]
tests/test_pipeline/test_config.py::TestEnableSemanticSegmentationField::test_enable_semantic_segmentation_from_env PASSED [ 75%]
tests/test_pipeline/test_config.py::TestEnableSemanticSegmentationField::test_enable_semantic_segmentation_boolean_parsing PASSED [100%]
4 passed in 0.29s
```
### Full Test Suite
```
pytest tests/test_pipeline/test_config.py -v
18 passed in 0.32s
```
所有现有测试继续通过,无破坏性变更。
## Next Steps
计划 15-02 将集成此配置到 SRTProcessor,使 `enable_semantic_segmentation` 从 `KBSettings` 读取而非硬编码默认值。
## Self-Check: PASSED
- [x] 所有修改的文件存在
- [x] 所有提交已创建(f2a1847, 8303cea)
- [x] 所有测试通过(18/18)
- [x] 配置字段类型和默认值正确
- [x] 环境变量解析符合预期
- [x] 无破坏性变更
---
*Phase: 15-output-compat, Plan: 01*
*Completed: 2026-03-23T15:01:37Z*
*Duration: 54s*
*TDD Methodology: RED → GREEN → (no refactor needed)*