Crate 索引
EnerOS 由 56 个 Rust crate 组成,分为 10 个功能类别。所有 crate 共享 eneros-core 提供的统一类型与错误模型,确保跨模块类型一致、零拷贝传递。整个工程以 Cargo workspace 组织,单一版本号(当前 0.47.0)统一发布,避免子模块版本漂移。
设计原则
EnerOS 的 crate 划分遵循以下原则:
- 单一职责:每个 crate 仅承担一个明确领域,便于独立测试与替换
- 依赖单向:依赖只能从上层指向下层,禁止循环依赖,编译顺序确定
- 零拷贝传递:跨 crate 数据传递使用
Arc<T> / &T,避免序列化开销
- feature 粒度:每个 crate 通过 Cargo feature 暴露可选能力,按需启用以减小二进制体积
- 稳定性分层:核心层 API 标注
stable,电力内核标注 beta,应用层标注 experimental
分类总览
| 类别 | 数量 | 关键 crate | 说明 |
|---|
| 核心层 | 2 | eneros-core、eneros-linalg | 统一类型、稀疏线性代数 |
| 电力内核 | 7 | eneros-topology、eneros-powerflow | 拓扑、潮流、约束、设备、时序、事件总线 |
| Agent 运行时 | 5 | eneros-agent、eneros-reasoning | Agent、记忆、工具、推理、AI |
| 基础设施 | 8 | eneros-os、eneros-gateway | OS、网关、设备、SCADA、网络、桥接、运行时、性能 |
| 协议适配 | 8 | eneros-protocol-iec104、eneros-protocol-mqtt | IEC 61850/104/103、CDT、CoAP、DL/T 698、ICCP、LwM2M、MQTT、PMU |
| 分析 | 4 | eneros-analysis、eneros-twin | 状态估计/OPF/短路、EMTP、数字孪生、模拟器 |
| 安全 | 4 | eneros-trust、eneros-audit | 零信任、IDS、审计、合规 |
| 运维 | 5 | eneros-slo、eneros-aiops | SLO、AIOps、运维、多区域、多租户 |
| 可视化 | 4 | eneros-dashboard、eneros-3d | 仪表盘、3D、自然语言、报表 |
| 国际化与插件 | 9 | eneros-i18n、eneros-plugin | i18n、插件、SDK、边缘、IoT Hub、GraphQL、API、测试工具 |
合计 56 个 crate,类别数量与发布清单一致。
依赖图概览
┌─────────────────────────────────────────────────────────────┐
│ 应用层 │
│ eneros-dashboard eneros-api eneros-edge eneros-3d │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ Agent 运行时 │
│ eneros-agent → memory / tool / reasoning / ai │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 电力原生内核 │
│ topology → powerflow → constraint → equipment → timeseries │
│ eventbus │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 核心层 │
│ eneros-core (统一类型) eneros-linalg (稀疏矩阵) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 基础设施 │
│ eneros-os eneros-gateway eneros-device eneros-scada │
│ eneros-trust eneros-audit eneros-ids eneros-compliance │
└─────────────────────────────────────────────────────────────┘
依赖方向严格自上而下,下层不感知上层存在。详细依赖矩阵见 Crate 依赖关系 页面。
核心 Crate 详解
下表列出 EnerOS 最关键的 10 个 crate,对应本章节后续 10 篇文档:
| Crate | 类别 | 职责 | 文档 |
|---|
eneros-core | 核心层 | 统一类型、错误模型、全局配置 | 查看 |
eneros-topology | 电力内核 | 电网拓扑图建模与分析 | 查看 |
eneros-powerflow | 电力内核 | Newton-Raphson 潮流求解 | 查看 |
eneros-constraint | 电力内核 | 安全约束校验与可行性投影 | 查看 |
eneros-agent | Agent 运行时 | Agent 生命周期与多智能体协作 | 查看 |
eneros-gateway | 基础设施 | 安全网关、命令执行、决策管线 | 查看 |
eneros-api | 国际化与插件 | REST/GraphQL/WebSocket/SSE API 服务 | 查看 |
eneros-dashboard | 可视化 | Web 仪表盘 + PWA | 查看 |
eneros-twin | 分析 | 数字孪生引擎与 What-If 分析 | 查看 |
eneros-trust | 安全 | 零信任、mTLS、证书轮转 | 查看 |
完整 Crate 列表
核心层(2 个)
| Crate | 职责 | 关键类型 |
|---|
eneros-core | 统一类型、错误、配置 | EnerOSError、EnerOSConfig、ElementId |
eneros-linalg | 稀疏线性代数 | SparseMatrix、CsrMatrix、LU、Cholesky |
电力内核(7 个)
| Crate | 职责 | 关键类型 |
|---|
eneros-topology | 电网拓扑图建模与分析 | NetworkGraph、TopologyEngine、Island |
eneros-powerflow | Newton-Raphson 潮流求解 | PowerFlowSolver、YBusMatrix、PowerFlowResult |
eneros-constraint | 安全约束校验与可行性投影 | ConstraintEngine、Violation、FeasibilityProjector |
eneros-equipment | 设备参数模型库 | EquipmentLibrary、TransformerModel、LineModel |
eneros-cnpower | 中国配网一次设备参数库 + 合规检查器 | CnEquipmentLibrary、ComplianceChecker |
eneros-timeseries | 时序数据存储与查询(SQLite 持久化) | TimeSeriesEngine、Point、Query |
eneros-eventbus | 事件驱动通信总线 | EventBus、Subscription、Event |
Agent 运行时(5 个)
| Crate | 职责 | 关键类型 |
|---|
eneros-agent | Agent 运行时与领域 Agent | Agent、AgentContext、Orchestrator |
eneros-memory | Agent 记忆系统 | MemoryStore、EpisodicMemory、SemanticMemory |
eneros-tool | Agent 工具引擎 | ToolRegistry、Tool、ToolResult |
eneros-reasoning | 推理引擎(LLM + rig 集成) | ReasoningEngine、Chain、Prompt |
eneros-ai | AI/ML 集成基础 | ModelRegistry、InferenceEngine |
基础设施(8 个)
| Crate | 职责 | 关键类型 |
|---|
eneros-os | OS 服务层 | OsService、ProcessSupervisor |
eneros-gateway | 安全网关、命令执行、决策管线 | SafetyGateway、Command、Action |
eneros-device | 设备通信与协议适配 | DeviceManager、DeviceChannel |
eneros-scada | SCADA 数据采集(IEC 104 集成) | ScadaGateway、DataPoint |
eneros-network | 拓扑-潮流统一管线 | NetworkPipeline、PipelineStage |
eneros-bridge | Python 桥接(cnpower/pandapower) | PythonBridge、PyHandle |
eneros-runtime | 架构运行时 | RuntimeContext、RuntimeHandle |
eneros-perf | 性能优化(arena/pool/ring_buffer) | Arena、Pool、RingBuffer |
协议适配(8 个)
| Crate | 职责 | 标准 |
|---|
eneros-protocol-cdt | CDT 循环式远动协议 | DL/T 634 部颁规约 |
eneros-protocol-coap | CoAP | RFC 7252 |
eneros-protocol-dlt698 | DL/T 698.45 + DL/T 645 | DL/T 698 / DL/T 645 |
eneros-protocol-iccp | ICCP/TASE.2 | IEC 60870-6 |
eneros-protocol-iec103 | IEC 60870-5-103 | IEC 60870-5-103 |
eneros-protocol-lwm2m | LwM2M 1.1 | OMA LwM2M 1.1 |
eneros-protocol-mqtt | MQTT 5.0 内置 broker | MQTT 5.0 |
eneros-protocol-pmu | PMU/PDC | IEEE C37.118 |
分析(4 个)
| Crate | 职责 | 关键类型 |
|---|
eneros-analysis | 状态估计/OPF/短路 | StateEstimator、OpfSolver、FaultAnalyzer |
eneros-emtp | 电磁暂态仿真 | EmtpSolver、EmtpNetwork |
eneros-twin | 数字孪生引擎 | TwinModel、WhatIfEngine、HistoryReplay |
eneros-simulator | 场景脚本引擎与模拟器 | Scenario、Simulator |
安全(4 个)
| Crate | 职责 | 关键类型 |
|---|
eneros-trust | 零信任(内部 CA + mTLS + 证书轮转) | CaManager、CertManager、MtlsAcceptor |
eneros-ids | 入侵检测 | IdsEngine、Signature、AnomalyDetector |
eneros-audit | 统一审计(HMAC 签名 + 链式哈希 + WORM) | AuditChain、AuditEntry |
eneros-compliance | 合规自动化 | ComplianceChecker、Rule |
运维(5 个)
| Crate | 职责 | 关键类型 |
|---|
eneros-slo | SLO/SLI + 错误预算 | Slo、Sli、ErrorBudget |
eneros-aiops | AIOps(告警聚类/根因分析/事件聚合) | AlarmCluster、RootCauseAnalyzer |
eneros-ops | 运维自动化 | OpsPipeline、Runbook |
eneros-multiregion | 多区域高可用 | RegionRegistry、FailoverPolicy |
eneros-tenant | 多租户隔离 | TenantManager、TenantId |
可视化(4 个)
| Crate | 职责 | 关键类型 |
|---|
eneros-dashboard | Web 仪表盘 + PWA | DashboardServer、DashboardDef、WidgetDef |
eneros-3d | 3D 场景与 glTF 2.0 导出 | Scene3D、GltfExporter |
eneros-nl | 自然语言查询引擎 | NlQueryEngine、IntentParser |
eneros-report | 报表与导出 | ReportGenerator、Template |
国际化与插件(9 个)
| Crate | 职责 | 关键类型 |
|---|
eneros-i18n | 多语言翻译框架(Fluent + BCP 47) | I18nBundle、Locale |
eneros-plugin | 插件框架(Ed25519 签名 + seccomp 沙箱) | PluginHost、PluginManifest |
eneros-plugin-macros | 插件过程宏 | plugin_export! |
eneros-sdk | 开发 SDK | SdkClient、SdkBuilder |
eneros-edge | 边缘计算 | EdgeNode、EdgeAgent |
eneros-iot-hub | 传感器网络聚合 | IoTHub、SensorNode |
eneros-graphql | GraphQL API | GraphQLSchema、QueryRoot |
eneros-api | CLI / HTTP API 服务 | ApiServer、ApiClient、Cli |
eneros-test-utils | 测试工具与混沌工程 | TestHarness、ChaosMonkey |
Cargo Workspace 组织
EnerOS 使用单一 Cargo workspace 管理全部 56 个 crate,根 Cargo.toml 片段如下:
[workspace]
resolver = "2"
members = [
"crates/core",
"crates/linalg",
"crates/topology",
"crates/powerflow",
"crates/constraint",
"crates/equipment",
"crates/cnpower",
"crates/timeseries",
"crates/eventbus",
"crates/agent",
"crates/memory",
"crates/tool",
"crates/reasoning",
"crates/ai",
"crates/os",
"crates/gateway",
"crates/device",
"crates/scada",
"crates/network",
"crates/bridge",
"crates/runtime",
"crates/perf",
"crates/protocol-cdt",
"crates/protocol-coap",
"crates/protocol-dlt698",
"crates/protocol-iccp",
"crates/protocol-iec103",
"crates/protocol-lwm2m",
"crates/protocol-mqtt",
"crates/protocol-pmu",
"crates/analysis",
"crates/emtp",
"crates/twin",
"crates/simulator",
"crates/trust",
"crates/ids",
"crates/audit",
"crates/compliance",
"crates/slo",
"crates/aiops",
"crates/ops",
"crates/multiregion",
"crates/tenant",
"crates/dashboard",
"crates/3d",
"crates/nl",
"crates/report",
"crates/i18n",
"crates/plugin",
"crates/plugin-macros",
"crates/sdk",
"crates/edge",
"crates/iot-hub",
"crates/graphql",
"crates/api",
"crates/test-utils",
]
[workspace.package]
version = "0.47.0"
edition = "2021"
license = "Apache-2.0"
repository = "https://github.com/Gawg-AI/EnerOS"
[workspace.dependencies]
eneros-core = { path = "crates/core", version = "0.47.0" }
eneros-linalg = { path = "crates/linalg", version = "0.47.0" }
eneros-topology = { path = "crates/topology", version = "0.47.0" }
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
tracing = "0.1"
thiserror = "1.0"
选择 Crate 的指引
| 你想要…… | 推荐入口 crate |
|---|
| 创建自定义 Agent | eneros-agent + eneros-tool + eneros-reasoning |
| 触发潮流计算 | eneros-powerflow 或 eneros-api HTTP 端点 |
| 校验指令安全性 | eneros-constraint + eneros-gateway |
| 接入 IEC 104 设备 | eneros-protocol-iec103 与 eneros-scada |
| 构建监控大屏 | eneros-dashboard + eneros-timeseries |
| 接入 PMU 数据流 | eneros-protocol-pmu + eneros-twin |
| 多租户 SaaS 化 | eneros-tenant + eneros-multiregion |
| 合规审计 | eneros-audit + eneros-compliance |
| 自然语言查询 | eneros-nl + eneros-graphql |
| 边缘部署 | eneros-edge + eneros-protocol-mqtt |
版本与兼容性
EnerOS 全部 crate 共享 0.47.0 版本号,遵循语义化版本:
0.x.0:minor 版本每季度发布,允许 API breaking change,迁移指南随发版说明提供
0.47.x:patch 版本每周发布,仅含 bugfix 与新增非破坏性 API
- LTS 版本:每年一次,提供 3 年安全更新
兼容性矩阵:
| EnerOS 版本 | Rust 最低版本 | 操作系统 |
|---|
| 0.47.x | 1.78 | Linux / macOS / Windows |
| 0.46.x | 1.75 | Linux / macOS / Windows |
| 0.45.x (LTS) | 1.72 | Linux / macOS |
性能概览
EnerOS 在标准测试环境(4 核 / 8GB / Ubuntu 22.04)下端到端性能:
| 操作 | 延迟 | 涉及 crate |
|---|
| 拓扑分析(1000 节点) | < 1ms | eneros-topology |
| 潮流计算(IEEE 14-bus) | < 12ms | eneros-powerflow |
| 约束校验(单条指令) | < 10μs | eneros-constraint |
| 时序写入 | < 1μs | eneros-timeseries |
| 事件总线广播 | < 10μs | eneros-eventbus |
| Agent 指令下发 | < 100μs | eneros-agent + eneros-gateway |
| 实时域响应(保护逻辑) | < 100μs | eneros-os |
相关文档