mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-16 09:40:30 +08:00
177 lines
5.7 KiB
Python
177 lines
5.7 KiB
Python
"""运行时模块。
|
||
|
||
定义 AstrBot SDK 的运行时架构,包括插件加载、能力路由、处理器分发和通信抽象。
|
||
|
||
架构说明:
|
||
旧版:
|
||
- 目录结构复杂:api/, rpc/, stars/ 等多个子目录
|
||
- 使用 JSON-RPC 2.0 协议进行通信
|
||
- StarManager 负责插件发现和加载
|
||
- StarRunner 负责处理器执行
|
||
- Galaxy 负责虚拟星层管理
|
||
- 传输层分离为 client/server 两套实现
|
||
|
||
新版:
|
||
- 目录结构精简:仅 6 个核心文件
|
||
- 使用自描述协议进行通信
|
||
- Peer 统一处理协议层消息收发
|
||
- Transport 抽象传输层,支持多种实现
|
||
- CapabilityRouter 注册和路由能力调用
|
||
- HandlerDispatcher 分发处理器调用
|
||
- SupervisorRuntime 管理多 Worker 会话
|
||
|
||
核心概念对比:
|
||
旧版概念:
|
||
- StarManager: 插件发现和加载
|
||
- StarRunner: 处理器执行
|
||
- Galaxy: 虚拟星层管理
|
||
- JSONRPCServer/Client: JSON-RPC 通信
|
||
- HandshakeHandler: 握手处理
|
||
- HandlerExecutor: 处理器执行
|
||
|
||
新版概念:
|
||
- Peer: 协议对等端,统一处理消息
|
||
- Transport: 传输层抽象
|
||
- CapabilityRouter: 能力路由
|
||
- HandlerDispatcher: 处理器分发
|
||
- SupervisorRuntime: 多 Worker 管理
|
||
- WorkerSession: 单个 Worker 会话
|
||
- PluginWorkerRuntime: 插件 Worker 运行时
|
||
|
||
通信流程对比:
|
||
旧版 JSON-RPC 流程:
|
||
1. Core -> Plugin: {"method": "handshake", ...}
|
||
2. Plugin -> Core: {"result": {"handlers": [...]}}
|
||
3. Core -> Plugin: {"method": "call_handler", "params": {...}}
|
||
4. Plugin -> Core: {"method": "handler_stream_start", ...}
|
||
5. Plugin -> Core: {"method": "handler_stream_update", ...}
|
||
6. Plugin -> Core: {"method": "handler_stream_end", ...}
|
||
|
||
新版协议流程:
|
||
1. Plugin -> Core: {"type": "initialize", "handlers": [...]}
|
||
2. Core -> Plugin: {"type": "result", "kind": "initialize_result", ...}
|
||
3. Core -> Plugin: {"type": "invoke", "capability": "handler.invoke", ...}
|
||
4. Plugin -> Core: {"type": "event", "phase": "started"}
|
||
5. Plugin -> Core: {"type": "event", "phase": "delta", "data": {...}}
|
||
6. Plugin -> Core: {"type": "event", "phase": "completed", "output": {...}}
|
||
|
||
插件加载对比:
|
||
旧版 StarManager:
|
||
- 通过 plugin.yaml 发现插件
|
||
- 动态导入组件类并实例化
|
||
- 注册到 star_handlers_registry
|
||
- 使用 functools.partial 绑定实例
|
||
|
||
新版 loader.py:
|
||
- PluginSpec 描述插件规范
|
||
- PluginEnvironmentManager 管理虚拟环境
|
||
- load_plugin() 加载并解析组件
|
||
- LoadedHandler 封装处理器和描述符
|
||
- 支持新旧 Star 组件兼容
|
||
|
||
传输层对比:
|
||
旧版传输层:
|
||
- 分离的 client/ 和 server/ 目录
|
||
- JSONRPCClient 基类 + StdioClient/WebSocketClient
|
||
- JSONRPCServer 基类 + StdioServer/WebSocketServer
|
||
- 通过 set_message_handler 设置回调
|
||
|
||
新版传输层:
|
||
- 统一的 Transport 抽象基类
|
||
- StdioTransport: 支持进程模式和文件模式
|
||
- WebSocketServerTransport: WebSocket 服务端
|
||
- WebSocketClientTransport: WebSocket 客户端
|
||
- 通过 set_message_handler 设置回调
|
||
|
||
处理器执行对比:
|
||
旧版 HandlerExecutor:
|
||
- 从 star_handlers_registry 获取处理器
|
||
- 调用 handler(event, **args)
|
||
- 通过 JSON-RPC notification 发送流式结果
|
||
- 无参数注入支持
|
||
|
||
新版 HandlerDispatcher:
|
||
- 从 LoadedHandler 映射获取处理器
|
||
- 支持类型注解注入 (MessageEvent, Context)
|
||
- 支持参数名注入 (event, ctx, context)
|
||
- 支持 legacy_args 注入 (命令参数等)
|
||
- 支持 Optional[Type] 类型
|
||
- 统一的错误处理和生命周期回调
|
||
|
||
能力系统对比:
|
||
旧版:
|
||
- 无显式的能力声明系统
|
||
- 通过 call_context_function 调用核心功能
|
||
- 上下文函数硬编码在核心侧
|
||
|
||
新版 CapabilityRouter:
|
||
- CapabilityDescriptor 声明能力
|
||
- JSON Schema 验证输入输出
|
||
- 支持流式能力 (stream_handler)
|
||
- 内置能力:llm.chat, memory.*, db.*, platform.*
|
||
- 支持自定义能力注册
|
||
"""
|
||
|
||
from .bootstrap import (
|
||
PluginWorkerRuntime,
|
||
SupervisorRuntime,
|
||
WorkerSession,
|
||
run_plugin_worker,
|
||
run_supervisor,
|
||
run_websocket_server,
|
||
)
|
||
from .capability_router import CapabilityRouter, StreamExecution
|
||
from .handler_dispatcher import HandlerDispatcher
|
||
from .loader import (
|
||
LoadedHandler,
|
||
LoadedPlugin,
|
||
PluginDiscoveryResult,
|
||
PluginEnvironmentManager,
|
||
PluginSpec,
|
||
discover_plugins,
|
||
load_plugin,
|
||
load_plugin_spec,
|
||
)
|
||
from .peer import (
|
||
CancelHandler,
|
||
InitializeHandler,
|
||
InvokeHandler,
|
||
Peer,
|
||
)
|
||
from .transport import (
|
||
MessageHandler,
|
||
StdioTransport,
|
||
Transport,
|
||
WebSocketClientTransport,
|
||
WebSocketServerTransport,
|
||
)
|
||
|
||
__all__ = [
|
||
"CancelHandler",
|
||
"CapabilityRouter",
|
||
"HandlerDispatcher",
|
||
"InitializeHandler",
|
||
"InvokeHandler",
|
||
"LoadedHandler",
|
||
"LoadedPlugin",
|
||
"MessageHandler",
|
||
"Peer",
|
||
"PluginDiscoveryResult",
|
||
"PluginEnvironmentManager",
|
||
"PluginSpec",
|
||
"PluginWorkerRuntime",
|
||
"StdioTransport",
|
||
"StreamExecution",
|
||
"SupervisorRuntime",
|
||
"Transport",
|
||
"WebSocketClientTransport",
|
||
"WebSocketServerTransport",
|
||
"WorkerSession",
|
||
"discover_plugins",
|
||
"load_plugin",
|
||
"load_plugin_spec",
|
||
"run_plugin_worker",
|
||
"run_supervisor",
|
||
"run_websocket_server",
|
||
]
|