用途:该技能面向 Xberg 的插件架构与注册机制,帮助设计、实现或诊断插件 trait、类型化注册表、优先级冲突、生命周期、原生提取器以及 Alef 生成的 Python 插件桥接。
主要能力:涵盖八类插件——文档提取器(面向绑定的 DocumentExtractor 与 crate 内使用的 InternalDocumentExtractor)、OCR 后端、后处理器、校验器、嵌入后端、重排后端、分词器后端与渲染器。所有插件实现 Plugin trait,要求 Send + Sync,必须提供 name(),version()、initialize()、shutdown()、description()、author() 有默认实现。
优先级系统:0-25 为回退/低质量,26-49 为替代提取器,50 为默认内置,51-75 为增强,76-100 为专用高优先级。注册表为每种 MIME 选择最高优先级提取器;MIME 与优先级相同视为冲突,后注册者替换前者并告警。
使用方式:在 register_default_extractors() 中通过 get_document_extractor_registry() 获取注册表并 register(Arc::new(...));可选格式用 #[cfg(feature = "...")] 门控。crate 内提取器实现 InternalDocumentExtractor,不要直接实现 DocumentExtractor。每个插件 trait 实现须使用双分支 cfg_attr async_trait 形式。初始化通过 ensure_initialized() 惰性完成。
限制与注意:注册表为进程级类型化注册表,使用 Arc<parking_lot::RwLock<_>>,支持 register、remove、clear、shutdown_all,无热重载。注册时调用 initialize(),失败则拒绝。Python 桥接由 Alef 生成到 crates/xberg-py/src/lib.rs,不应手写;跨桥类型需 Serialize + Deserialize + Default。宿主异常转为 XbergError::Other,不保留原始异常类型与回溯。应返回错误而非 panic,并用测试替身覆盖生命周期、冲突、并发与失败路径。