扩展管理
扩展(Extension)是 NeoMind 的可插拔能力模块——视觉 AI、OCR、天气预报、自定义数据源等,都以扩展形式接入。扩展运行在独立进程中,通过 FFI 通信,单个扩展崩溃不会影响主服务,实现了真正的故障隔离。
什么是扩展?
扩展为 NeoMind 提供三类能力:
| 能力 | 说明 | 数据形态 | 典型示例 |
|---|---|---|---|
| 指标(Metric) | 扩展产出的时序数据,写入 telemetry.redb,可在仪表板展示 | 按时间序列存储 | 天气扩展的 temperature 指标 |
| 命令(Command) | 可被 AI Agent / API / 规则调用的操作,支持参数与返回值 | 输入参数 → 执行 → 返回 JSON | YOLO 扩展的 detect 命令 |
| 组件(Component) | 仪表板自定义可视化组件(由扩展附带的前端 bundle 提供) | 在仪表板编辑器中拖入 | 视频流扩展的实时画面组件 |
一个扩展可以同时声明多种能力。例如 yolo-video-v2 同时提供指标(检测统计)、命令(单帧检测)和组件(实时画框画面)。
官方扩展
NeoMind-Extensions 仓库提供官方扩展:
| 扩展 | 类型 | 能力 | 说明 |
|---|---|---|---|
| Weather Forecast | 数据源 | 指标 + 命令 | 天气预报与实时气象数据(OpenWeather / 和风天气) |
| YOLO Detection | 视觉 AI | 指标 + 命令 | 目标检测(YOLO 模型),支持图片和视频流 |
| OCR | 视觉 AI | 命令 | 图片文字提取(PaddleOCR) |
| Face Recognition | 视觉 AI | 命令 + 组件 | 人脸检测与识别 |
| Video Stream | 流处理 | 指标 + 命令 + 组件 | RTSP/RTMP 视频流接入与推理 |
| Device Inference | 设备推理 | 指标 | 边缘 AI 相机(NE101/NE301)推理结果接入 |
详细的端到端示例见 应用案例。
界面总览
进入左侧导航的 Extensions 页签,可以看到当前已安装的全部扩展:
页面顶部工具栏提供三个操作:
| 按钮 | 图标 | 作用 |
|---|---|---|
| 刷新 | RefreshCw(旋转箭头) | 重新拉取扩展列表,查看最新状态 |
| 上传安装 | Upload | 打开本地 .nep 包安装对话框 |
| 扩展市场 | Globe(地球) | 打开官方扩展市场,一键下载安装 |
扩展卡片本身展示:扩展名称、版本号、当前状态(Running / Stopped / Error)、提供的能力图标(指标 / 命令 / 组件)。点击卡片任意区域即可进入扩展详情页。
安装扩展
NeoMind 提供四种安装方式,按推荐度排序:
方式一:扩展市场(推荐)
点击工具栏的 地球图标 打开扩展市场对话框,NeoMind 会从官方仓库拉取可用的扩展列表:
在市场对话框中:
- 浏览可用的官方扩展(含名称、版本、简介、大小)
- 点击 Install 一键下载并安装
- 安装完成后扩展自动出现在列表中并启动
市场安装会自动选择与当前主服务 ABI 版本匹配的扩展包,无需手动选平台。
方式二:Web UI 上传
如果你已有 .nep 包(自己开发或从 Releases 下载),可以使用上传安装:
- 点击工具栏的 Upload 按钮
- 在弹出的对话框中拖入或选择
.nep文件 - NeoMind 自动校验包完整性、ABI 版本、签名
- 校验通过后解包、加载、启动
.nep 包内含多平台二进制(Linux .so / macOS .dylib / Windows .dll),NeoMind 会自动选择当前平台的二进制加载。跨平台分发的扩展无需重新打包。
方式三:CLI
# 安装本地 .nep 包
neomind extension install /path/to/weather-forecast.nep
# 从 URL 安装(适合自动化部署)
neomind extension install https://github.com/camthink-ai/NeoMind-Extensions/releases/download/v0.6.1/weather-forecast-v0.6.1.nep
# 列出已安装扩展
neomind extension list
# 查看扩展详情(指标、命令、配置参数)
neomind extension info <extension_id>
# 卸载
neomind extension uninstall <extension_id>
方式四:AI Chat
直接对 AI Chat 说:
「帮我安装天气扩展」
LLM 会引导你上传 .nep 包或提供下载链接,并自动调用 extension install 命令完成安装。
扩展详情与配置
点击任意扩展卡片进入详情页。详情页采用左右布局:左侧是五个功能区的导航,右侧是对应内容。下面分别介绍每个标签页。
1. Overview(总览)
总览页展示扩展的基本信息:
- 扩展 ID:唯一标识(如
yolo-device-inference),用于 API 调用、数据源绑定 - 名称与版本:人类可读名称 + SemVer 版本号
- 状态:当前运行状态(Running / Stopped / Error / Crash Loop)
- 能力声明:扩展提供的能力类型(指标数 / 命令数 / 组件数)
- 描述:扩展的功能说明
- ABI 版本:扩展编译时对应的 ABI 版本(必须与主服务匹配)
2. Configuration(配置)
部分扩展需要配置参数才能运行(如天气扩展需要 API Key)。切换到 Configuration 标签页进行配置:
配置参数按类型自动渲染为合适的输入控件:
| 参数类型 | 控件 | 校验规则 |
|---|---|---|
string | 文本输入框 | 必填校验、最大长度 |
string + password: true | 密码输入框(掩码) | 必填校验 |
string + enum | 下拉选择 | 只能选预定义值 |
integer / number | 数字输入框 | 最小值 / 最大值范围 |
boolean | 开关(Switch) | true / false |
填写完成后点击 Save,扩展会自动重启以加载新配置。错误的值(如越界的数字、必填项留空)会在保存时报错,不会写入。
配置参数变更后会触发扩展进程重启,正在执行的命令会被中断。生产环境请在维护时间窗内修改配置。
3. Commands(命令)
命令是扩展暴露的可调用操作。切换到 Commands 标签页查看所有命令:
每个命令卡片展示:
- 命令名称:如
detect、ocr_recognize - 描述:命令功能说明
- 参数表单:点击 展开按钮 后显示该命令的参数输入表单
- Execute 按钮:填写参数后点击执行,结果以 JSON 形式返回并显示在下方
命令执行支持手动测试,也支持被 AI Agent / REST API / 自动化规则调用。手动测试是验证扩展是否正常工作的最快方式。
4. Metrics(指标)
指标是扩展产出的时序数据。切换到 Metrics 标签页查看历史数据:
指标页提供:
- 时间范围选择:1 小时 / 24 小时 / 7 天 / 30 天
- 指标列表:扩展产出的所有指标(如
detection_count、avg_confidence) - 趋势图:选中指标后展示历史曲线
- 最新值:当前指标的实时数值
指标数据源格式:extension:<extension_id>:<metric_name>,可在 仪表板 中作为组件数据源使用。
5. Logs(日志)
日志页实时展示扩展进程的标准输出与错误输出:
特点:
- 自动刷新:每 3 秒拉取一次新日志
- 滚动到底部:新日志自动滚动到视图底部
- 错误高亮:
ERROR/WARN级别日志会用红色 / 黄色高亮显示 - 保留行数:默认保留最近 500 行
排查扩展问题时,日志页是第一现场。如果扩展状态为 Error 或 Crash Loop,日志通常能直接看到 panic 堆栈或初始化失败原因。
扩展状态与生命周期
| 状态 | 图标 | 说明 | 触发条件 |
|---|---|---|---|
| Running | 绿色圆点 | 扩展正常运行中 | 安装完成 / 手动启动 / 自动恢复 |
| Stopped | 灰色圆点 | 扩展已停止 | 手动停止 / 配置变更重启中 |
| Error | 红色圆点 | 扩展崩溃或加载失败 | 进程异常退出 / 初始化失败 |
| Crash Loop | 黄色圆点 | 崩溃循环检测触发,已停止自动重启 | 50 秒内连续崩溃 ≥ 3 次 |