框架运行状态部件
运行状态部件把常用资源指标放进顶部和侧栏:无需离开业务页面,就能查看内存、可用磁盘与有权限的任务状态。顶部采用两个紧凑入口,侧栏采用摘要行;点击、聚焦或悬停打开同一个详情面板。
版本与安装边界
本页功能已包含在 9.0.7 平台前后端发行制品中;这不等于目标租户已经完成安装。系统设置应用的配套字段、Managed 引擎与租户 Hook 仍须独立安装并回读,可选宿主采集器须另行接入。升级平台镜像不会自动完成这些步骤;缺少配套资源或提供者时保持未连接。实际 MySQL、会话撤权、SignalR 与电脑/手机交互仍须分层验收。
选择需要显示的范围
| 范围 | 默认行为 | 需要额外接入 |
|---|---|---|
| 当前 API | 已连接时显示进程或容器指标,并明确来源 | 无宿主挂载时不会自称整机数据 |
| 宿主机 | 仅可信管理员可读已接入的固定采集快照 | 只读文件、空目录磁盘探针及独立采集器 |
| 原生媒体调度 | 只显示本人任务;管理员可看本租户与本运行环境 | 原生后台任务结构与权限 |
| Comfy 实际执行 | 管理员可读真实 running、pending 数量 | AI 插件及当前租户已批准的服务器配置 |
| 租户业务 | 由独立服务端 provider 返回权限内的计数 | 租户 Hook 登记、固定 SQL 和真实字段 |
sourceScope 区分 host、container、service。每项指标还带 resourceId、mountPoint 和 observedAtUtc。容器 cgroup 上限不是宿主内存;容器 overlay 磁盘也不是客户系统 SSD。
顶部、侧栏与手机
顶部默认显示内存已用百分比与磁盘可用百分比。详情面板展示指标、来源、采样时间和连接状态;宽度不足时顶部合成一个入口。侧栏不增加菜单滚动负担,折叠后只留可访问的图标。
- 电脑支持悬停、点击与键盘聚焦;移动设备用点击。
- Enter、Space 打开,Escape 关闭并恢复触发器焦点。
- 面板适应手机视口、亮暗主题及减少动态效果设置。
- 未取得数据用“— / 未连接”;保留的旧值明确标记过期。
首期只提供展示与租户级配置协议,没有前端布局编辑器,也没有跨设备个人显示偏好。不能把 CanConfigure 当作编辑器已经交付。
传输与采样
flowchart LR
A[顶部入口] --> C[同一客户端状态实例]
B[侧栏入口] --> C
C --> D[既有 SignalR Invoke]
C -. HTTP 降级 .-> E[同一 Managed 引擎]
D --> E
E --> F[白名单共享采样]
E --> G[本人或已授权业务统计]2
3
4
5
6
7
8
现有 /api-engine-socket 承载双向消息,固定实时引擎为 platform-framework-status-live。客户端每 15 秒 Invoke 一次快照;这是 WS 定时快照,不是服务端主动推送。每次仍验证正常会话,不能通过消息指定别人或保存配置。
同一 API 进程内,一个资源只进行一轮采样;并发读取共享结果。超时采集没有排空时不再启动第二个。页面隐藏停止后续请求和连接;切换账号、租户或 API 后,旧回包失效。断线采用 HTTP 降级与退避抖动。
宿主采集器每 15 秒向固定卷写一次原子快照,API 只读该文件。跨 API 的 Comfy 读取尚未承诺分布式单采;多节点负载与撤权仍须实测。状态区域是观测工具,不能替代 GPU 准入和共享队列的安全控制。
通过 MCP 配置
先用正常连接调用 microi_run_engine。下面的读取不会创建业务任务:
{
"apiEngineKey": "platform-framework-status",
"params": { "Action": "GetConfig" },
"confirmExecution": "platform-framework-status"
}2
3
4
5
管理员再以相同引擎执行 Action: Catalog,获取服务器已登记的 provider 与 metric 名称。Catalog 不返回内部接口键、端点或凭据。
| SaveConfig 参数 | 来源与规则 |
|---|---|
Key | 使用本次 GetConfig 返回的固定 Key |
ExpectedRevision | 使用原 Revision,不能自行加一后提交 |
ExpectedHash | 原 Hash;绑定实际有效配置记录和存储原文 |
Config | 有界声明式对象,只引用 Catalog 的名称 |
保存必须使用真实 HTTP POST 和当前租户可信管理员会话。客户端传来的等级、角色、方法标记或目标行 Id 都不能扩大权限。结果未知时先重新 GetConfig,不自动重复保存。
microi_save_engine_code 的 responseType: SignalR 配置实时引擎。不存在独立的 microi_set_engine_response_type 工具,不为此创建旁路服务。
配置归属与升级保全
布局存放在公开实体字段 sys_config.FrameworkStatusWidgets,格式为 {revision, config}。沿用服务器已选择的有效系统配置 Id,不要求历史数据库只保留一条启用记录。
| 存储状态 | 解释 |
|---|---|
| NULL | 继承平台内置默认,无需读请求写入数据库 |
| 合法对象 | 使用租户显式布局 |
widgets: [] | 明确隐藏,升级后仍保持隐藏 |
| 空字符串或坏 JSON | 配置错误,不覆盖成默认 |
保存以 Revision 和 Hash 做单字段条件更新。普通系统设置表单携带未改的只读值时,服务器会先将它从本次更新中移除,防止覆盖另一位管理员的新布局。修改该字段和按条件批量写入均须拒绝。
系统设置应用拥有两个 Managed 引擎及默认 Hook。Hook 使用 Tenant/CreateIfMissing:已有同 Key、空正文或租户自定义均不能被默认源覆盖。SaaS 包只同步其拥有的共享字段结构,不携带客户布局、采集端点、账号偏好或运行值。
接入真实宿主指标
可选采集器只读 /proc/stat、/proc/meminfo、宿主 boot id,以及系统盘和资料盘上的两个空目录探针。GPU 使用固定 nvidia-smi 查询;不接收任意命令,不采进程参数或环境变量,不挂 Docker socket,也不开放公网端口。
- 核验两个探针确属预期系统盘和
/data文件系统,记录设备身份与运行用户。 - 审核并构建不可变采集器镜像;只向独占卷写入有界快照。
- 为 API 增加同一卷的只读挂载,保留原 compose 的其它值。
- 检查真实时间戳、来源和缺值,再开放所需指标。
缺少挂载、驱动、有限容器内存上限或磁盘容量时保留未连接。更新 API 镜像本身不会自动增加宿主权限或创建采集器。
AI 统计如何解释
业务 Queued、原生 Pending、Comfy running 与 GPU 利用率来自不同层。原生任务仍为 Pending 时,Comfy 已执行且 GPU 满载是可能的,不能据一个计数宣布物理 GPU 空闲。
宁展示例 provider 只统计可见范围内有原生任务和输出记录的成功业务任务,排除明确的验收 SeedBatch。它们是任务数,不是作品数、输出文件数、收入或客户验收数。成功率标明全部时间窗口,终态分母为零时为未知。
验收分层
本地 Jint、SQLite、共享采样、HTTP 解析与组件回归,不能替代实际 MySQL 升级、DiyToken 撤权、真实 SignalR、宿主采集、手机浏览器或客户验收。逐层保留证据,不用 HTTP 200 或构建通过替代界面验收。