9.8 KiB
Project Research Summary
Project: kb-skills (Skill-based Workflow Orchestration System) Domain: Content Processing Pipeline with LLM Agent Orchestration Researched: 2026-03-13 Confidence: HIGH
Executive Summary
这是一个技能型工作流编排系统,专门用于内容处理管道(视频/文章的元数据提取、ASR识别、AI深度分析)。专家构建此类系统时,通常采用分层架构将编排层、技能定义层、执行层和基础设施层分离,并使用步骤级状态管理实现断点续传和幂等执行。
基于研究,推荐采用串行管道编排模式,使用 transitions 状态机管理步骤状态,Pydantic 定义 Schema 并实现验证。核心原则是:每个步骤完成后立即持久化状态,失败时可以从断点恢复,重复执行不会产生重复文件。这与 Airflow/Prefect 等重量级编排工具不同——本项目专注于单机批处理场景,无需分布式执行。
关键风险在于无状态执行和错误上下文丢失。长时间运行的任务(Whisper识别可能需要30分钟)如果失败后需要从头开始,成本极高。缓解措施是在 Phase 1 就实现 workflow_state.json 状态文件,并确保每个步骤输出结构化错误信息。
Key Findings
Recommended Stack
推荐使用 Python 3.12+ 作为运行时,配合 Pydantic 2.11+ 进行数据验证和 JSON Schema 生成,transitions 0.9.3+ 实现步骤状态机,Typer + Rich 构建现代化 CLI。这套组合轻量、Pythonic,与项目的 SKILL.md 规范模式完美契合。
Core technologies:
- Pydantic 2.11+: 数据验证 & Schema 生成 — v2.11+ 解析速度更快,原生支持 JSON Schema,与 PIPE-07 需求匹配
- transitions 0.9.3+: 状态机 — 轻量级、支持回调和嵌套状态,无需数据库
- pydantic-settings 2.8+: 配置管理 — 解决现有
~/.kb_env分散配置问题 - Typer 0.15+: CLI 框架 — 基于 Click 的现代 CLI,利用类型提示自动生成参数
- tenacity 8.5+: 重试机制 — 实现指数退避重试,处理 API 调用失败
避免使用: Airflow/Celery(过重)、argparse(样板代码多)、requests(同步阻塞)
Expected Features
Must have (table stakes):
- 步骤级状态管理 — 用户期望能从断点恢复,不重新执行已完成的步骤
- 幂等执行 — 相同输入重复执行产生相同结果,无重复文件
- JSON Schema 验证 — 数据契约确保步骤间接口一致性
- 结构化错误处理 — 错误消息包含上下文和可操作建议
- 平台特定内容处理 — B站/知乎元数据和内容提取
Should have (competitive):
- SKILL.md 声明式技能定义 — AI 代理可发现和执行技能
- 多模态内容处理 — 视频(ASR/OCR)+文本统一管道
- Tmux 会话持久化 — 长时间运行操作可断开终端
Defer (v2+):
- 并发执行 — 当前串行模式足够,并发增加复杂度
- Web UI — CLI 优先,可视化需求低
- 多租户 — 单用户工具
Architecture Approach
推荐四层架构:编排层(Workflow Coordinator、State Manager、Error Handler)、技能定义层(SKILL.md specs、Schema Definitions)、执行层(Platform/Processing/Analysis Skills)、基础设施层(File System、External APIs、AI Services)。
Major components:
- State Manager — 管理
workflow_state.json,实现步骤级状态持久化和原子写入 - Schema Registry — 统一的输入输出 JSON Schema 定义和验证
- Pipeline Engine — 串行执行技能,检查状态跳过已完成步骤
- Platform Skills — B站/知乎的元数据提取和内容下载
- Processing Skills — Whisper/FunASR 语音识别、OCR 处理
- Analysis Skills — kb-deep-analyzer AI 深度分析
Critical Pitfalls
-
无状态执行 = 从头重来 — Whisper 识别 20 分钟后失败,没有状态文件则需要重新识别。避免:每个步骤完成后写入
workflow_state.json -
错误上下文丢失 — 步骤 6 失败只报告 "API error",不知道是哪个内容、什么输入。避免:结构化 JSON 错误,包含步骤名、输入摘要、失败原因、可操作建议
-
假设模型"理解上下文" — 主代理期望子代理知道之前发生了什么,但每次调用是独立会话。避免:显式传递所有需要的上下文,输入 JSON 自包含
-
非幂等操作 — 每次执行创建
output_1.mp4、output_2.mp4。避免:基于输入生成确定性文件名,已存在则跳过 -
环境变量分散 —
~/.kb_env、子技能配置、HF_TOKEN 分散各处。避免:统一配置文件,启动时检查所有必需变量
Implications for Roadmap
Based on research, suggested phase structure:
Phase 1: Foundation (基础设施层)
Rationale: 状态管理和 Schema 验证是所有后续组件的基础,必须首先实现。没有状态文件就无法实现断点续传和幂等执行。 Delivers: State Manager、Schema Registry、Error Handler、统一配置管理 Addresses: 步骤级状态管理、幂等执行、JSON Schema 验证、结构化错误处理 Avoids: 无状态执行、错误上下文丢失、环境变量分散
Components:
skills/core/state_manager.py— workflow_state.json 管理skills/core/schema_registry.py— JSON Schema 定义和验证skills/core/error_handler.py— 统一错误处理config.py— pydantic-settings 配置管理
Phase 2: Core Skills (核心技能集成)
Rationale: 基于现有技能进行集成,将分散的技能统一到管道模型中。Link Parser 是入口点,无依赖;Platform Skills 依赖其输出。 Delivers: Link Parser 集成、B站/知乎 Metadata 和 Content 技能适配 Uses: Pydantic (Schema)、transitions (状态)、Typer (CLI) Implements: Pipeline Engine 原型
Components:
- Link Parser 技能适配(已有 kb-link-parser)
- B站/知乎技能适配(已有 kb-bilibili-、kb-zhihu-)
- 管道执行引擎原型
Phase 3: Processing Skills (处理技能集成)
Rationale: ASR 和 OCR 依赖视频文件,必须在内容下载后执行。这些技能已有实现,需要集成到管道。 Delivers: Whisper/FunASR 集成、OCR 集成、处理技能状态管理 Addresses: 多模态内容处理 Avoids: 假设模型理解上下文 — 显式传递转录结果给分析步骤
Components:
- Whisper/FunASR 技能适配
- OCR 技能适配
- 处理结果 Schema 定义
Phase 4: Analysis & Orchestration (分析技能与编排)
Rationale: 深度分析是管道的最终输出,依赖所有前置步骤。编排层整合所有技能形成完整工作流。 Delivers: Deep Analyzer 集成、完整管道编排、工作流定义文件 Uses: 所有前置组件 Implements: 声明式工作流定义 (YAML)
Components:
- Deep Analyzer 技能适配
- Pipeline Engine 完善
workflows/video_pipeline.yamlworkflows/article_pipeline.yaml
Phase 5: Polish & Testing (完善与测试)
Rationale: 核心功能完成后,补充测试、文档和边缘情况处理。 Delivers: 单元测试、集成测试、错误恢复策略完善、用户文档 Addresses: 错误恢复策略、进度可见性
Phase Ordering Rationale
- 依赖关系决定顺序: State Manager 是所有组件的基础,必须 Phase 1;Analysis 依赖 Processing,Processing 依赖 Platform Skills
- 架构模式指导分组: Foundation -> Skills -> Orchestration 符合分层架构
- 避免陷阱: Phase 1 就实现状态文件和 Schema,防止无状态执行和接口不一致
Research Flags
Phases likely needing deeper research during planning:
- Phase 3: ASR/OCR 集成可能需要研究 FunASR vs Whisper 选择逻辑,以及 HuggingFace token 缺失时的降级策略
- Phase 4: AI API 调用的重试策略和超时配置可能需要根据实际使用调整
Phases with standard patterns (skip research-phase):
- Phase 1: 状态管理和 Schema 验证是成熟模式,Pydantic/transitions 文档充分
- Phase 2: 现有技能适配,无需额外研究
- Phase 5: 测试和文档是标准实践
Confidence Assessment
| Area | Confidence | Notes |
|---|---|---|
| Stack | HIGH | Pydantic/transitions/Typer 都是成熟库,官方文档完善,与项目需求匹配度高 |
| Features | HIGH | 基于现有代码库分析和行业标准,功能边界清晰 |
| Architecture | HIGH | 四层架构是工作流系统的标准模式,管道编排模式适合内容处理场景 |
| Pitfalls | HIGH | 基于多篇研究论文和行业实践,坑点识别充分 |
Overall confidence: HIGH
Gaps to Address
- ASR 后端选择: Whisper vs FunASR 的选择逻辑需要根据实际性能测试确定,目前建议支持配置切换
- 错误恢复策略细节: 403/超时等具体错误类型的处理策略需要在实现时细化
- 进度汇报机制: 长时间运行的 Whisper 任务需要进度汇报,具体实现方式待定
Sources
Primary (HIGH confidence)
- Pydantic v2.11 Release & JSON Schema Docs — 技术选型验证
- transitions 0.9.3 on PyPI — 状态机库详情
- Dagster: Data Pipeline Architecture Design Patterns — 管道模式
- AI Architecture Patterns 101: Workflows, Agents — 架构模式
- Demystifying Failures in Platform-Orchestrated Workflows (arxiv) — 失败模式研究
Secondary (MEDIUM confidence)
- Prefect vs Dagster Comparison — 编排工具对比
- Multi-Step LLM Chains: Best Practices — LLM 链最佳实践
- Data Pipeline State Management (Fivetran) — 状态管理挑战
- 9 Things I Hate About Environment Variables — 配置管理问题
Tertiary (LOW confidence)
- AI Agent Anti-Patterns (Medium) — 反模式识别,需要结合实践验证
Research completed: 2026-03-13 Ready for roadmap: yes