EnerOS v0.45.0 版本说明
- 发布日期:2026-07-01
- 版本代号:Eco
- 支持状态:稳定(Stable)
- Crate 总数:54
- 测试用例数:7000+
- 贡献者:35 人
版本概述
EnerOS v0.45.0 是「成熟优化」阶段的第五个版本,聚焦生态扩展。一个操作系统的价值不仅取决于其内核能力,更取决于围绕它构建的生态体系是否繁荣。本版本围绕合作伙伴集成、第三方插件认证、解决方案模板与应用市场四个方向,构建了 EnerOS 生态的四大支柱。
在前四个版本完成了性能基准、安全审计、开发者体验与文档系统后,EnerOS 本身已具备生产可用的工程基础。v0.45.0 将 EnerOS 从一个「产品」推向一个「平台」,通过开放插件接口、认证体系与应用分发渠道,吸引合作伙伴与第三方开发者在 EnerOS 之上构建垂直行业应用。
本版本新增 eneros-marketplace crate 提供应用市场后端,新增 eneros-plugin-sdk 提供第三方插件开发工具包,并发布了 8 家合作伙伴的首批 24 个认证插件与 15 套解决方案模板,覆盖发电、输电、配电、调度、营销、安全等电力全业务链。
关键数据
| 指标 | 数值 | 说明 |
|---|---|---|
| Crate 数量 | 54 | 新增 eneros-marketplace 等 2 个 crate |
| 测试用例 | 7000+ | 含插件兼容性测试 |
| 认证插件 | 24 个 | 8 家合作伙伴 |
| 解决方案模板 | 15 套 | 全业务链覆盖 |
| 应用市场应用数 | 42 个 | 首批上架 |
| 插件 SDK 下载量 | 1200+ | 发布首周 |
| 合作伙伴 | 8 家 | 含南瑞、许继、四方等 |
新特性
1. 合作伙伴集成
EnerOS 与 8 家电力行业核心合作伙伴完成深度集成,合作伙伴的设备模型、协议栈与分析工具通过标准化的适配层接入 EnerOS 内核,用户可在 EnerOS 中直接使用这些合作伙伴的能力。
合作伙伴与集成内容
| 合作伙伴 | 集成内容 | 认证等级 | 状态 |
|---|---|---|---|
| 南瑞继保 | 继电保护模型、IEC 61850 IED | 金牌 | 已认证 |
| 许继电气 | 直流输电模型、柔性直流 | 金牌 | 已认证 |
| 北京四方 | 故障录波、SOE 事件 | 银牌 | 已认证 |
| 积成电子 | 配电终端、DTU/FTU | 银牌 | 已认证 |
| 长园深瑞 | 配电网自动化、馈线终端 | 银牌 | 已认证 |
| 国电南自 | 发电机励磁、PSS 模型 | 银牌 | 已认证 |
| 思源电气 | 开关设备模型、GIS | 铜牌 | 已认证 |
| 远光软件 | 电力营销、计费接口 | 铜牌 | 已认证 |
适配层架构
use eneros_eco::adapter::{PartnerAdapter, AdapterConfig};
use eneros_eco::partners::{Nari, XjElectric};
// 加载南瑞继保适配器
let nari_adapter = PartnerAdapter::new(Nari, AdapterConfig {
models_path: "partners/nari/models/",
protocol: "iec61850",
certification: "gold",
});
// 注册继电保护模型
nari_adapter.register_device_models().await?;
nari_adapter.register_ied_types().await?;
// 在 EnerOS 中直接使用
let relay = ctx.syscall(GetDeviceModel {
type_id: "nari-relay-PCS-931",
}).await?;
2. 第三方插件认证
新增 eneros-plugin-sdk 与插件认证体系。第三方开发者可基于 SDK 开发插件,提交认证后由 EnerOS 核心团队进行安全审查、兼容性测试与性能基准评估,通过认证的插件可上架应用市场。
认证等级
| 等级 | 要求 | 权限 | 标识 |
|---|---|---|---|
| 金牌 | 安全审计通过 + 100% 兼容性 + 性能达标 | 内核态访问 + 全部系统调用 | Verified Gold |
| 银牌 | 安全审查通过 + 95% 兼容性 | 用户态访问 + 受限系统调用 | Verified Silver |
| 铜牌 | 基础安全检查 + 90% 兼容性 | 用户态访问 + 基础系统调用 | Verified Bronze |
| 未认证 | 自行开发,未经审查 | 沙箱隔离 + 最小权限 | Community |
插件 SDK 使用
use eneros_plugin_sdk::{Plugin, PluginContext, PluginResult, PluginManifest};
// 定义插件清单
let manifest = PluginManifest::new("my-fault-analyzer")
.version("1.0.0")
.author("My Company")
.description("故障分析插件")
.permissions(vec![
Permission::ReadTopology,
Permission::ReadTimeseries,
Permission::WriteReport,
])
.api_version("0.45");
// 实现插件
pub struct FaultAnalyzer;
impl Plugin for FaultAnalyzer {
fn manifest(&self) -> &PluginManifest { &manifest }
async fn init(&mut self, ctx: &mut PluginContext) -> PluginResult<()> {
ctx.log_info("故障分析插件初始化完成");
Ok(())
}
async fn handle_event(&mut self, event: Event, ctx: &mut PluginContext) -> PluginResult<()> {
match event {
Event::FaultDetected { location, type_ } => {
let topology = ctx.syscall(GetTopology).await?;
let analysis = self.analyze(location, type_, &topology)?;
ctx.emit_report(analysis).await?;
}
_ => {}
}
Ok(())
}
}
// 注册插件
plugin_sdk::register_plugin!(FaultAnalyzer);
插件沙箱
未认证插件在 WASM 沙箱中运行,通过 capabilities 模型限制权限。沙箱提供 CPU 时间片限制、内存上限与系统调用过滤,确保未认证插件不会影响系统稳定性。
use eneros_plugin_sdk::sandbox::{Sandbox, SandboxConfig};
let sandbox = Sandbox::new(SandboxConfig {
max_memory_mb: 256,
max_cpu_time_ms: 1000,
max_filesystem_mb: 100,
allowed_syscalls: vec!["read", "write", "clock_gettime"],
network_access: false,
});
sandbox.run_plugin("community/analyzer.wasm")?;
3. 解决方案模板
发布 15 套解决方案模板,每套模板包含完整的架构设计文档、Agent 实现、部署配置与运维手册,覆盖电力行业典型业务场景。模板可直接作为项目起点,大幅缩短项目交付周期。
模板列表
| 模板 | 场景 | 包含组件 | 交付周期 |
|---|---|---|---|
| 省级调度 | 省级电网调度自动化 | 调度 Agent + OPF + N-1 | 8 周 |
| 地市调度 | 地市级配电调度 | 调度 Agent + 馈线自动化 | 6 周 |
| 变电站 | 智能变电站 | IEC 61850 + 保护协调 | 4 周 |
| 配电网 | 配电自动化 | FA + 故障定位 + 隔离 | 6 周 |
| 微电网 | 微电网管理 | 岛检测 + 并离网 + 储能 | 5 周 |
| 新能源 | 风光电站监控 | 预测 + 出力控制 + AGC | 5 周 |
| 储能 | 储能电站管理 | BMS + PCS + 调度 | 4 周 |
| 充电桩 | 电动汽车充电网络 | 负荷管理 + 计费 + 有序充电 | 4 周 |
| 虚拟电厂 | VPP 聚合运营 | 聚合 + 调度 + 交易 | 6 周 |
| 需求响应 | 负荷需求响应 | 负荷聚合 + 响应策略 | 5 周 |
| 电力交易 | 电力市场交易 | 报价 + 出清 + 结算 | 6 周 |
| 安全监控 | 网络安全监控 | 审计 + 入侵检测 + 告警 | 4 周 |
| 数字孪生 | 电网数字孪生 | 孪生 + 状态估计 + 回放 | 8 周 |
| 故障诊断 | 智能故障诊断 | 诊断 + 保护协调 + 自愈 | 5 周 |
| 营销 | 电力营销 | 计费 + 客服 + 计量 | 5 周 |
模板使用
# 基于解决方案模板创建项目
eneros-cli project new my-vpp --solution virtual-power-plant
# 生成完整项目结构
# my-vpp/
# ├── docs/ # 架构设计文档
# │ ├── architecture.md
# │ └── deployment.md
# ├── src/
# │ ├── agents/ # Agent 实现
# │ ├── models/ # 业务模型
# │ └── config.rs
# ├── tests/
# ├── deploy/
# │ ├── docker-compose.yml
# │ └── helm/
# └── ops/
# ├── runbook.yml # 运维手册
# └── monitors/ # 监控配置
4. 应用市场
新增 eneros-marketplace crate,提供应用市场后端服务。开发者可发布插件、模板与完整应用,用户可搜索、安装、更新与卸载。应用市场支持版本管理、依赖解析与签名验证。
市场架构
eneros-marketplace/
├── src/
│ ├── registry/ # 应用注册表
│ │ ├── catalog.rs # 目录管理
│ │ ├── version.rs # 版本管理
│ │ └── signing.rs # 签名验证
│ ├── search/ # 搜索引擎
│ │ ├── index.rs # 全文索引
│ │ └── ranking.rs # 排序算法
│ ├── install/ # 安装器
│ │ ├── resolver.rs # 依赖解析
│ │ └── downloader.rs # 下载器
│ └── api/ # REST API
└── web/ # 市场前端
发布应用
use eneros_marketplace::{Publisher, AppPackage, AppMetadata};
let publisher = Publisher::new("my-company")
.signing_key("keys/company.pem");
let app = AppPackage::new(AppMetadata {
name: "advanced-fault-analyzer".into(),
version: "1.2.0".into(),
description: "高级故障分析工具,支持波形识别与保护协调".into(),
category: Category::Analysis,
certification: Certification::Silver,
price: Price::Free,
min_eneros_version: "0.45".into(),
});
publisher.publish(app, "dist/analyzer-1.2.0.tar.gz").await?;
安装应用
# 搜索应用
eneros-cli marketplace search "故障分析"
# 安装应用
eneros-cli marketplace install advanced-fault-analyzer
# 查看已安装应用
eneros-cli marketplace list --installed
# 更新应用
eneros-cli marketplace update --all
// 编程式安装
use eneros_marketplace::{Marketplace, InstallOptions};
let market = Marketplace::connect("https://market.eneros.io")?;
market.install("advanced-fault-analyzer", InstallOptions {
version: Requirement::Latest,
auto_start: true,
config: Default::default(),
}).await?;
改进优化
插件加载性能
插件加载从同步阻塞改为异步流式加载,大型插件的冷启动时间从 800ms 降至 200ms。
市场搜索
应用市场搜索引入基于嵌入的语义搜索,支持自然语言查询。例如搜索「能帮我分析电网故障的工具」可返回故障诊断类应用。
插件依赖解析
依赖解析器从简单的版本匹配升级为 SAT 求解器,能处理复杂的依赖冲突与版本约束。
Bug 修复
- BG-601:插件在卸载后残留配置文件,已增加清理钩子
- BG-605:市场搜索在中文关键词下结果不准确,已优化分词
- BG-609:合作伙伴适配器在模型版本不一致时崩溃,已增加版本协商
- BG-613:沙箱插件在内存达到上限时未优雅退出,已改为 OOM 告警 + 降级
- BG-617:解决方案模板的 Helm Chart 在 K8s 1.28 上兼容性问题,已修复
破坏性变更
BC-241:插件 API 版本化
插件接口引入显式 API 版本声明,未声明版本的插件按 v0.40 兼容模式运行,将在 v0.48.0 移除兼容模式。
BC-242:eneros-plugin-sdk trait 方法变更
Plugin trait 新增 on_config_change 方法(默认空实现),自定义插件需按需实现。
依赖升级
| 依赖 | 旧版本 | 新版本 | 说明 |
|---|---|---|---|
| wasmtime | 14.0 | 15.0 | 沙箱运行时 |
| reqwest | 0.11 | 0.12 | 市场 HTTP 客户端 |
| semver | 1.0 | 1.0.22 | 版本解析 |
升级指南
从 v0.44.0 升级
cargo update
cargo test --workspace
安装插件 SDK:
[dependencies]
eneros-plugin-sdk = "0.45"
eneros-marketplace = "0.45"
启用应用市场客户端:
eneros-cli marketplace login
eneros-cli marketplace search "dispatch"