diff --git a/.planning/MILESTONES.md b/.planning/MILESTONES.md index b455ac9..a998051 100644 --- a/.planning/MILESTONES.md +++ b/.planning/MILESTONES.md @@ -1,5 +1,27 @@ # Milestones +## v1.3 Proxy Pool (Shipped: 2026-03-18) + +**Phases completed:** 1 phase (Phase 10), 2 plans + +**Key accomplishments:** +- ✓ ProxyPool 类 — 支持从 YAML/环境变量加载多个代理 +- ✓ Round-Robin 轮换 — 使用索引指针实现自动代理切换 +- ✓ 健康检查机制 — 代理失败检测与冷却恢复 +- ✓ ZhihuCrawler 集成 — 代理池优先于单代理配置 + +**Delivered:** 代理池基础设施 — 支持多代理配置、自动轮换、健康检查 + +**Known Gaps:** +- 请求行为伪装 (BEHAV-01~04) — 未实现 +- 验证码检测 (CAPT-01~03) — 未实现 +- 错误恢复机制 (ERR-01~04) — 未实现 +- 平台适配 (PLAT-01~02) — 未实现 + +**Archives:** `.planning/milestones/v1.3-ROADMAP.md`, `.planning/milestones/v1.3-REQUIREMENTS.md` + +--- + ## v1.0 Pipeline Architecture (Shipped: 2026-03-15) **Phases completed:** 4 phases, 12 plans diff --git a/.planning/PROJECT.md b/.planning/PROJECT.md index 61cdccd..2c5d77e 100644 --- a/.planning/PROJECT.md +++ b/.planning/PROJECT.md @@ -1,15 +1,17 @@ # kb-skills 工作流重构 -## Current Milestone: v1.3 Anti-Crawler Optimization +## Current State: v1.3 Shipped -**Goal:** 增强爬虫反检测能力,降低被封风险,提升爬取稳定性 +**Last Shipped:** 2026-03-18 — Proxy Pool 功能 -**Target features:** -- 代理 IP 轮换机制 -- 请求行为伪装(随机间隔、模拟人类行为) -- 验证码检测与处理 -- 错误恢复机制(自动重试、指数退避) -- 知乎 + B站 双平台支持 +**What's new in v1.3:** +- 代理池管理 (ProxyPool) — 支持 YAML/环境变量配置,Round-Robin 轮换,健康检查 + +**Known Gaps:** +- BEHAV-01~04: 请求行为伪装 — 未实现 +- CAPT-01~03: 验证码检测 — 未实现 +- ERR-01~04: 错误恢复机制 — 未实现 +- PLAT-01~02: 平台适配 — 未实现 ## What This Is @@ -71,15 +73,15 @@ python3 kb-workflow/kb_workflow.py process "https://www.bilibili.com/video/BVxxx - ✓ **ZHIHU-07**: 代理 IP 支持 — 降低被封风险 - ✓ **ZHIHU-08**: Pipeline 整合 — 替换现有知乎处理器 +**v1.3 Proxy Pool (2026-03-18):** +- ✓ **PROXY-01**: 代理池配置 — 支持从 YAML 文件或环境变量加载多个代理 +- ✓ **PROXY-02**: 自动轮换 — Round-Robin 策略自动选择下一个代理 +- ✓ **PROXY-03**: 健康检查 — 代理失败检测与冷却恢复机制 +- ✓ **PROXY-04**: 失败回退 — 当前代理失败时自动切换到备用代理 + ### Active -**v1.3 Anti-Crawler Optimization:** -- [ ] **AC-01**: 代理池管理 — 支持配置代理池,自动轮换 IP -- [ ] **AC-02**: 请求行为伪装 — 随机化请求间隔,模拟人类行为 -- [ ] **AC-03**: 验证码检测 — 检测验证码页面,触发告警/暂停 -- [ ] **AC-04**: 错误恢复机制 — 自动重试、指数退避、断点续传增强 -- [ ] **AC-05**: 知乎反爬适配 — 针对知乎的反爬策略优化 -- [ ] **AC-06**: B站反爬适配 — 针对 B站的反爬策略优化 +(No active requirements — plan next milestone) ### Deferred @@ -138,6 +140,9 @@ python3 kb-workflow/kb_workflow.py process "https://www.bilibili.com/video/BVxxx | 顺序执行 | Pipeline 使用顺序执行而非并行 | ✓ Good — 简单性和可调试性 | | CLI subparsers | 使用 argparse subparsers 组织命令 | ✓ Good — 可扩展的 CLI 结构 | | 懒加载导入 | AnalyzeProcessor 懒加载 DeepAnalyzer | ✓ Good — 避免依赖问题 | +| 代理池索引指针 | 使用 index pointer 而非 itertools.cycle | ✓ Good — 更好的可测试性 | +| 惰性冷却检查 | get_next_proxy() 中惰性检查而非后台定时器 | ✓ Good — 简化实现 | +| 代理池优先级 | ProxyPool 参数优先于 config.proxy | ✓ Good — 向后兼容 | --- -*Last updated: 2026-03-18 after v1.3 milestone started* +*Last updated: 2026-03-18 after v1.3 milestone completed* diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 49117d7..9c8fbe2 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -2,15 +2,15 @@ ## Milestones -- ✅ **v1.0 Pipeline Architecture** - Phases 1-4 (shipped 2011-03-15) -- ✅ **v1.1 Architecture Refactor** - Phases 5-6 (shipped 2011-03-16) -- ✅ **v1.2 Zhihu Crawler** - Phases 7-9 (shipped 2011-03-17) -- 🚧 **v1.3 Anti-Crawler Optimization** - Phases 10-14 (in progress) +- ✅ **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) ## Phases
-✅ v1.0 Pipeline Architecture (Phases 1-4) - SHIPPED 2011-03-15 +✅ v1.0 Pipeline Architecture (Phases 1-4) - SHIPPED 2026-03-15 ### Phase 1: Foundation **Goal**: 项目基础设施和状态管理 @@ -49,88 +49,66 @@ Plans:
-✅ v1.1 Architecture Refactor (Phases 5-6) - SHIPPED 2011-03-16 +✅ v1.1 Architecture Refactor (Phases 5-6) - SHIPPED 2026-03-16 ### Phase 5: 归档与目录优化 **Goal**: 统一中间目录结构,添加自动归档步骤,优化最终目录布局 -**Depends on**: Phase 4 -**Requirements**: INT-01, INT-02, INT-03, ARC-01, ARC-02, ARC-03, ARC-04, OUT-01, OUT-02, OUT-03, OUT-04 -**Success Criteria** (what must be TRUE): - 1. 所有分析任务的中间文件统一存放在 `~/work/intermediate/analysis/{platform}_{content_id}/` - 2. 分析完成后 md 文件自动复制到按平台分组的最终目录 - 3. 最终目录结构为 `{KB_ARCHIVE_PATH}/{platform}/{YYYYMMDD}_{content_id}_analysis.md` - 4. 归档时检测重复文件,询问用户是否覆盖 - 5. 不自动清理中间文件(用户手动维护) **Plans**: 3 plans (all complete) ### Phase 6: 代码整合 **Goal**: 将独立的元数据技能和 Pipeline 模块整合进 kb-workflow -**Depends on**: Phase 5 -**Requirements**: MET-01, MET-02, MET-03, MET-04, MET-05, PIP-01, PIP-02, PIP-03, PIP-04 -**Success Criteria** (what must be TRUE): - 1. kb-bilibili-metadata 和 kb-zhihu-metadata 代码移入 kb-workflow/metadata/ - 2. kb_pipeline/ 代码合并入 kb-workflow/ 保持 processors/, platforms/, schemas.py 结构 - 3. 所有导入路径更新指向新位置,CLI 正常工作 - 4. 原独立的 kb-bilibili-metadata、kb-zhihu-metadata、kb_pipeline 目录已删除 - 5. 所有 sys.path 动态操作已删除或重构 - 6. Pipeline 类可从 kb_workflow.pipeline 包级别导入 **Plans**: 3 plans (all complete)
-✅ v1.2 Zhihu Crawler (Phases 7-9) - SHIPPED 2011-03-17 +✅ v1.2 Zhihu Crawler (Phases 7-9) - SHIPPED 2026-03-17 ### Phase 7: 登录认证体系 -**Goal**: 建立知乎登录认证机制,支持二维码扫码和手动 Cookie 两种方式,实现 Cookie 持久化和过期检测 -**Depends on**: Phase 6 -**Requirements**: AUTH-01, AUTH-02, AUTH-03, AUTH-04 -**Success Criteria** (what must be TRUE): - 1. 用户可以通过命令行显示二维码并扫码登录知乎 - 2. 扫码失败时用户可以手动设置 Cookie 进行认证 - 3. Cookie 自动保存到本地文件,下次运行自动复用 - 4. Cookie 过期时系统自动检测并提示用户重新登录 +**Goal**: 建立知乎登录认证机制,支持二维码扫码和手动 Cookie 两种方式 **Plans**: 3 plans (all complete) ### Phase 8: 内容爬取实现 -**Goal**: 实现知乎问答、专栏/文章、评论的完整爬取功能,包含网络反爬措施 -**Depends on**: Phase 7 -**Requirements**: CONT-01, CONT-02, CONT-03, CONT-04, NET-01, NET-02, NET-03 -**Success Criteria** (what must be TRUE): - 1. 用户可以爬取知乎问答(问题标题、描述、回答内容、元数据) - 2. 用户可以爬取知乎专栏/文章(标题、正文、元数据) - 3. 用户可以选择是否爬取内容下的评论 - 4. 爬取结果包含作者信息、发布时间、点赞数等完整元数据 - 5. 用户可以配置代理 IP 以降低被封风险 +**Goal**: 实现知乎问答、专栏/文章、评论的完整爬取功能 **Plans**: 3 plans (all complete) ### Phase 9: Pipeline 整合 -**Goal**: 将新爬虫实现整合进现有 Pipeline 架构,替换原有知乎处理器 -**Depends on**: Phase 8 -**Requirements**: PIPE-01, PIPE-02, PIPE-03 -**Success Criteria** (what must be TRUE): - 1. 知乎链接使用新爬虫处理器,无需手动设置 Cookie - 2. 新处理器与现有 Pipeline 架构完全兼容 - 3. 支持断点续传和幂等执行(与其他处理器行为一致) +**Goal**: 将新爬虫实现整合进现有 Pipeline 架构 **Plans**: 1 plan (complete)
-### 🚧 v1.3 Anti-Crawler Optimization (In Progress) +
+✅ v1.3 Proxy Pool (Phase 10) - SHIPPED 2026-03-18 -**Milestone Goal:** 增强爬虫反检测能力,降低被封风险,提升爬取稳定性 - -#### Phase 10: Proxy Pool (代理池管理) +### Phase 10: Proxy Pool (代理池管理) **Goal**: 建立代理池基础设施,支持多代理配置、自动轮换和健康检查 -**Depends on**: Phase 9 **Requirements**: PROXY-01, PROXY-02, PROXY-03, PROXY-04 -**Success Criteria** (what must be TRUE): - 1. 用户可以从配置文件或环境变量加载多个代理地址 - 2. 每次请求自动选择下一个可用代理,实现负载均衡 - 3. 代理不可用时自动检测并标记为失效 - 4. 当前代理失败时自动切换到备用代理继续请求 -**Plans**: 2 plans +**Plans**: 2 plans (all complete) Plans: - [x] 10-01: ProxyPool 核心类实现 — 从 YAML/环境变量加载代理,Round-Robin 轮换 -- [ ] 10-02: 健康检查与 ZhihuCrawler 集成 — 被动检测、冷却恢复、代理切换 +- [x] 10-02: 健康检查与 ZhihuCrawler 集成 — 被动检测、冷却恢复、代理切换 + +**Key Decisions:** +- 使用索引指针而非 itertools.cycle 实现轮换 +- 惰性冷却检查而非后台定时器 +- ProxyPool 参数优先于 config.proxy 配置 + +**Known Gaps (deferred):** +- BEHAV-01~04: 请求行为伪装 +- CAPT-01~03: 验证码检测 +- ERR-01~04: 错误恢复机制 +- PLAT-01~02: 平台适配 + +
+ +--- + +## Next Milestone + +Run `/gsd:new-milestone` to plan the next version. + +--- + +*Last updated: 2026-03-18* diff --git a/.planning/STATE.md b/.planning/STATE.md index 5565948..4fa0a2d 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -4,7 +4,7 @@ milestone: v1.3 milestone_name: Anti-Crawler Optimization status: executing stopped_at: Completed 10-02-PLAN.md -last_updated: "2026-03-18T14:38:49.662Z" +last_updated: "2026-03-18T14:42:25.803Z" last_activity: 2026-03-18 — 10-01 proxy pool core complete progress: total_phases: 10 diff --git a/.planning/REQUIREMENTS.md b/.planning/milestones/v1.3-REQUIREMENTS.md similarity index 98% rename from .planning/REQUIREMENTS.md rename to .planning/milestones/v1.3-REQUIREMENTS.md index 3338eb4..00273a4 100644 --- a/.planning/REQUIREMENTS.md +++ b/.planning/milestones/v1.3-REQUIREMENTS.md @@ -1,3 +1,12 @@ +# Requirements Archive: v1.3 Anti-Crawler Optimization + +**Archived:** 2026-03-18 +**Status:** SHIPPED + +For current requirements, see `.planning/REQUIREMENTS.md`. + +--- + # Requirements: kb-skills **Defined:** 2026-03-17 diff --git a/.planning/milestones/v1.3-ROADMAP.md b/.planning/milestones/v1.3-ROADMAP.md new file mode 100644 index 0000000..49117d7 --- /dev/null +++ b/.planning/milestones/v1.3-ROADMAP.md @@ -0,0 +1,136 @@ +# Roadmap: kb-skills + +## Milestones + +- ✅ **v1.0 Pipeline Architecture** - Phases 1-4 (shipped 2011-03-15) +- ✅ **v1.1 Architecture Refactor** - Phases 5-6 (shipped 2011-03-16) +- ✅ **v1.2 Zhihu Crawler** - Phases 7-9 (shipped 2011-03-17) +- 🚧 **v1.3 Anti-Crawler Optimization** - Phases 10-14 (in progress) + +## Phases + +
+✅ v1.0 Pipeline Architecture (Phases 1-4) - SHIPPED 2011-03-15 + +### 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 命令 + +
+ +
+✅ v1.1 Architecture Refactor (Phases 5-6) - SHIPPED 2011-03-16 + +### Phase 5: 归档与目录优化 +**Goal**: 统一中间目录结构,添加自动归档步骤,优化最终目录布局 +**Depends on**: Phase 4 +**Requirements**: INT-01, INT-02, INT-03, ARC-01, ARC-02, ARC-03, ARC-04, OUT-01, OUT-02, OUT-03, OUT-04 +**Success Criteria** (what must be TRUE): + 1. 所有分析任务的中间文件统一存放在 `~/work/intermediate/analysis/{platform}_{content_id}/` + 2. 分析完成后 md 文件自动复制到按平台分组的最终目录 + 3. 最终目录结构为 `{KB_ARCHIVE_PATH}/{platform}/{YYYYMMDD}_{content_id}_analysis.md` + 4. 归档时检测重复文件,询问用户是否覆盖 + 5. 不自动清理中间文件(用户手动维护) +**Plans**: 3 plans (all complete) + +### Phase 6: 代码整合 +**Goal**: 将独立的元数据技能和 Pipeline 模块整合进 kb-workflow +**Depends on**: Phase 5 +**Requirements**: MET-01, MET-02, MET-03, MET-04, MET-05, PIP-01, PIP-02, PIP-03, PIP-04 +**Success Criteria** (what must be TRUE): + 1. kb-bilibili-metadata 和 kb-zhihu-metadata 代码移入 kb-workflow/metadata/ + 2. kb_pipeline/ 代码合并入 kb-workflow/ 保持 processors/, platforms/, schemas.py 结构 + 3. 所有导入路径更新指向新位置,CLI 正常工作 + 4. 原独立的 kb-bilibili-metadata、kb-zhihu-metadata、kb_pipeline 目录已删除 + 5. 所有 sys.path 动态操作已删除或重构 + 6. Pipeline 类可从 kb_workflow.pipeline 包级别导入 +**Plans**: 3 plans (all complete) + +
+ +
+✅ v1.2 Zhihu Crawler (Phases 7-9) - SHIPPED 2011-03-17 + +### Phase 7: 登录认证体系 +**Goal**: 建立知乎登录认证机制,支持二维码扫码和手动 Cookie 两种方式,实现 Cookie 持久化和过期检测 +**Depends on**: Phase 6 +**Requirements**: AUTH-01, AUTH-02, AUTH-03, AUTH-04 +**Success Criteria** (what must be TRUE): + 1. 用户可以通过命令行显示二维码并扫码登录知乎 + 2. 扫码失败时用户可以手动设置 Cookie 进行认证 + 3. Cookie 自动保存到本地文件,下次运行自动复用 + 4. Cookie 过期时系统自动检测并提示用户重新登录 +**Plans**: 3 plans (all complete) + +### Phase 8: 内容爬取实现 +**Goal**: 实现知乎问答、专栏/文章、评论的完整爬取功能,包含网络反爬措施 +**Depends on**: Phase 7 +**Requirements**: CONT-01, CONT-02, CONT-03, CONT-04, NET-01, NET-02, NET-03 +**Success Criteria** (what must be TRUE): + 1. 用户可以爬取知乎问答(问题标题、描述、回答内容、元数据) + 2. 用户可以爬取知乎专栏/文章(标题、正文、元数据) + 3. 用户可以选择是否爬取内容下的评论 + 4. 爬取结果包含作者信息、发布时间、点赞数等完整元数据 + 5. 用户可以配置代理 IP 以降低被封风险 +**Plans**: 3 plans (all complete) + +### Phase 9: Pipeline 整合 +**Goal**: 将新爬虫实现整合进现有 Pipeline 架构,替换原有知乎处理器 +**Depends on**: Phase 8 +**Requirements**: PIPE-01, PIPE-02, PIPE-03 +**Success Criteria** (what must be TRUE): + 1. 知乎链接使用新爬虫处理器,无需手动设置 Cookie + 2. 新处理器与现有 Pipeline 架构完全兼容 + 3. 支持断点续传和幂等执行(与其他处理器行为一致) +**Plans**: 1 plan (complete) + +
+ +### 🚧 v1.3 Anti-Crawler Optimization (In Progress) + +**Milestone Goal:** 增强爬虫反检测能力,降低被封风险,提升爬取稳定性 + +#### Phase 10: Proxy Pool (代理池管理) +**Goal**: 建立代理池基础设施,支持多代理配置、自动轮换和健康检查 +**Depends on**: Phase 9 +**Requirements**: PROXY-01, PROXY-02, PROXY-03, PROXY-04 +**Success Criteria** (what must be TRUE): + 1. 用户可以从配置文件或环境变量加载多个代理地址 + 2. 每次请求自动选择下一个可用代理,实现负载均衡 + 3. 代理不可用时自动检测并标记为失效 + 4. 当前代理失败时自动切换到备用代理继续请求 +**Plans**: 2 plans + +Plans: +- [x] 10-01: ProxyPool 核心类实现 — 从 YAML/环境变量加载代理,Round-Robin 轮换 +- [ ] 10-02: 健康检查与 ZhihuCrawler 集成 — 被动检测、冷却恢复、代理切换