开放核心
Heldar 以开放核心平台的形式发布:Apache-2.0 内核和一组通用参考应用程序对外公开,而垂直行业及客户专属产品则作为独立的私有 crate 存放在私有仓库中。这一分界线在 crate 边界处强制执行,而非通过单一代码库内的功能标志实现。
开放部分(Apache-2.0)
公开的 heldar 仓库包含:
heldar-kernel- 领域无关的平台:媒体/DVR、感知采集与帧采样器、区域引擎、auth/RBAC、可观测性、数据保留,以及公共接缝(DetectionConsumer特征、Router<AppState>合并、自安装 schema 模式和认证原语)。- 通用参考应用,每个应用均仅基于内核的公共接缝构建:
heldar-entry- 通用门禁控制。车牌授权(一个DetectionConsumer)、车辆/访客/黑名单注册表、保安确认/拒绝工作流,以及进出记录/异常/审计报告。领域中立:任何门控入口部署均可直接使用。heldar-movement- 跨摄像头关联。多信号 ReID 候选提议器和限制区域违规规则引擎,均以受监督的后台循环方式运行,基于已存储的内核事实。heldar-search- 语义搜索。一个只读查询层,将自然语言问题转换为结构化执行计划,确定性地在已存储的事件事实上执行,并将结果行作为答案返回。
heldar-server- 参考组合二进制文件,链接内核和通用应用程序。apps/ai- 参考 Python AI 工作进程。apps/web- React + Vite + TypeScript 仪表板。- 文档、基础设施(MediaMTX 配置)和脚本。
私有部分
垂直行业和客户专属产品以独立 crate 的形式存放在私有仓库(heldar-proprietary)中。它们依赖于开放 crate(通过 crates.io,或发布前的 git 标签,以及用于并行开发的本地路径补丁),并在其之上叠加各自的领域细节。它们不会被复制到公开仓库,内核也不会引用它们。
组合服务器通过接缝将私有组合逻辑隔离:在开放构建中,该接缝是一个无操作的存根,因此参考服务器不链接任何私有代码。main.rs 在开放构建和私有构建之间字节完全相同。
为何采用此架构
拥有内核意味着拥有元数据模型、事件引擎和产品逻辑,而接缝使应用程序与内核保持解耦。一个部署由内核加上客户所需的任意应用程序组成(每个部署单租户),因此开放通用应用和任何私有垂直应用只是链接到服务器构建中的 crate。对内核接缝的破坏性变更将触发主版本号升级,应用程序可选择是否接受。
许可证
内核和通用应用程序采用 Apache-2.0 许可证。私有垂直应用程序单独授权。请参阅 LICENSING.md 了解边界划分,以及 OPEN-CORE-SPLIT.md 了解多仓库拆分和发布操作手册。