组件化扩展体系
Component Extension System
基于基类继承的声明式组件扩展系统,支持自定义组件热加载
子问题
1.组件基类设计
2.Input/Output声明
3.代码验证与解析
4.组件发现与注册
5.组件到 Agent Tool 的自动转换
6.运行时状态模型自动生成
7.AST 级依赖推断与必需输入分析
8.异步并行组件加载与菜单构建
各项目的解法1 solutions
Signals
横向对比
| 维度 | Langflow |
|---|---|
| 组件基类设计 | 三层继承 BaseComponent→CustomComponent→Component,逐层叠加能力 |
| 注册方式 | DirectoryReader 目录扫描 + asyncio.gather 并行加载 |
| 声明机制 | Pydantic Input/Output 模型,自动序列化为前端 JSON Schema |
| 代码验证 | AST 解析 + importlib 依赖检查 + RequiredInputsVisitor 依赖推断 |
| 工具转换 | to_toolkit 模板方法 + ComponentToolkit 自动生成 StructuredTool |
| 热更新 | 目录级 rglob 扫描,deactivated 文件夹停用,MAX_DEPTH=2 层级限制 |
| 状态管理 | _build_state_model 从 outputs 自动生成 Pydantic 状态模型 |
| 缓存策略 | TTLCache(60s, 1024) 缓存 AST 解析结果 |
最佳实践
1.声明式Input/Output定义,自动生成前端表单和工具Schema
2.三层继承逐层叠加能力,避免单一基类过于臃肿
3.TTLCache 缓存 AST 解析结果避免重复开销
4.Template Method 模式让子类可定制工具生成逻辑
5.deactivated 目录约定实现组件软停用