跳到主要内容

TimeSeries-Insight (AI 分析引擎)

概述​

PlantPulse TimeSeries-Insight 是专为制造时序数据打造的 AI 异常检测、预测与综合分析 MCP 服务器。

它基于 IBM Granite TSPulse(异常检测)与 TinyTimeMixer TTM(预测)AI 模型,为传感器数据、OEE、RAM、EMS、报警、工单等工厂全部时序数据提供智能分析。

通过 39 个分析工具与特征存储,支持从实时分析到预先计算的综合洞察。自 2026.10 起,引擎不再等待被工具调用,而是自行发现问题并记录为«发现»,由副驾驶接收后通知人员 → AI 发现与准确度

分为两个服务

insight-api(:8970)负责工具与数据,模型推理(TSPulse·TTM)则委托给 insight-server(:8980)。GPU 仅推理侧需要,因此两个服务可部署在不同 设备上。


在副驾驶中查看异常检测的位置​

引擎发现的设备异常会以待确认异常的形式出现在副驾驶的建议 › 待办 › 突发中。每台设备一行,点击该行可在 详情中查看趋势线 · 相关标签 · 依据,并决定升级为事件或忽略(填写原因)→ 建议

待确认异常详情 — ① 处理阶段 ② AI 所见 ③ 依据 ④ 忽略 · 升级为事件

以往的«异常诊断»菜单及其中的«运维控制台»已被移除,相关工作改在建议 › 突发中完成(旧地址 /anomaly 不会跳转)。

以往在运维控制台中的操作现在
浏览 · 确认异常列表建议 › 待办 › 突发。按紧急程度排列
标记是否准确(AI 判定)若为误报,在忽略中选择原因 → AI 发现与准确度
全量扫描 · 定向«执行»按钮没有按钮。服务器按周期自动运行 — 见下
设备时间线在已连接数字主线的部署中,提问「按时间顺序显示这台设备最近发生的事」

检测按两种周期运行​

检测对象时机(默认)
全量扫描全部设备每 2 小时
定向检测仅近期出现报警的设备每 10 分钟

周期 · 严重度标准 · 通知渠道见 异常检测 · 事件响应。

按设备暂停通知的功能(静音)和«噪声 Top10»在新界面中已不存在。

建议安静不等于正常 — 学习中的设备

新接入的设备或长期停机的设备,在为各标签建立基线之前不会产生异常分数。 在此期间即使存在异常,也不会上报为待确认异常 → AI 发现与准确度 — 学习中 · 无法判定


AI 异常检测 (Anomaly Detection)​

基础模型: IBM Granite TSPulse

对象工具分析内容
设备传感器detect_asset_anomaly检测温度、压力、振动等传感器异常模式
系统资源detect_system_anomaly检测 CPU、内存、磁盘异常
OEEdetect_oee_anomaly时间开动率、性能、质量异常模式
RAMdetect_ram_anomalyMTBF、MTTR 异常模式
EMSdetect_ems_anomaly能耗、电力、碳排放异常
工单detect_order_anomaly生产质量异常 (OEE/RAM/EMS/复合)
报警detect_alarm_anomaly报警频次异常模式

主要参数:

  • threshold — 异常判定阈值。设备传感器(detect_asset_anomaly)是针对校正分数的取值,默认为 5.0 — 🔴 0 并非«自动»,而是几乎把所有点都算作异常
  • top_k — 返回的高位异常指标数量
  • lookback_minutes — 分析时间范围
  • target_columns — 分析对象(未指定时自动查询全部传感器)
设备传感器分数表示«相对平时的倍数»

设备传感器的异常分数(score_scale: calibrated)以分析窗口紧邻之前的区间为基准, 衡量重构误差相对该区间典型波动(中位数 · MAD)偏离了多少倍(稳健 z 值)。 0 表示«平时»,5 为默认阈值。

  • 状态标签(如运行/停止之类的值)不参与评分。
  • 计数器标签(如累计产量)不按累计值,而按 5 间隔增量的均值来看 — 以便捕捉生产 停止时增量跌至 0 的情况。
  • 由模型首个窗口复制而来的前段区间不计入评分。
  • 聚合 · 平滑窗口在传感器基准下为 8 / 4(aggr_win_size · smoothing_window_size)。 以往的 32 / 16 会把分数抹平近 30 分钟,从而漏掉短时停机。

OEE · RAM · EMS 等领域侧的分数仍是每次调用归一到 0~1 的值 — 即使 threshold 相同,量纲也不同。


AI 预测 (Forecasting)​

基础模型: TinyTimeMixer — Granite-TTM R3 (512-96-dec-512-r3,上下文 512 · 预测 96)

对象工具预测内容
设备传感器forecast_asset传感器值未来趋势
系统资源forecast_systemCPU/内存/磁盘使用率
OEEforecast_oee时间开动率、性能、质量未来走势
RAMforecast_ram设备可靠性指标未来趋势
EMSforecast_ems能耗、碳排放展望
工单forecast_order生产质量未来走势
报警forecast_alarm报警频次趋势、故障预测

主要参数:

  • prediction_length — 预测步数
  • enable_bounds — 输出置信区间(上限/下限)

请查看响应中的 model_used — 返回 200 不代表来自 TTM​

预测响应会同时说明结果由什么生成。

值含义
TTM由已训练模型生成
NAIVE数据不足,由 drift · seasonal-naive 生成。fallback_reason 中会给出原因
NAIVE 同样返回 HTTP 200

仅在数据不足时,引擎不会抛出失败,而是降级为简单外推。 调用方若只看 200,就会在「TTM 预测」的位置看到简单外推结果。

因此请读取并记录 model_used。 NAIVE 增多本身就是信号。

连简单外推也无法给出值的列不会用 0 填充,而是记入 dropped_columns 并剔除。若所有列 都被剔除,则返回 422。

其他失败不会被吸收 — 因为重试也无济于事,或者本就不该被隐藏。

情形响应
致命 CUDA 错误(GPU 宕机)· 推理队列已满503 + Retry-After
模型配置错误(见下)· 权重加载失败 · 代码缺陷500

若请求了置信区间(enable_bounds)却未返回,bounds_reason 会说明原因 — 在这里区分「这台设备无法给出区间」与「发送的数据不足」。

TS_TTM_MODEL_CLASS — 用于匹配检查点世代与加载器的配置​

预测模型(TTM)依世代不同,读取的类也不同。 通过 insight-server 的一个环境变量来选择(该配置加入于 2026-09-21 之后的版本 — 更早版本没有该配置,固定为 ForPrediction)。

值适用场景
留空(默认值)由检查点的 config.json(decompose)决定 — 通常保持此设置
ForPredictionTTM R2 检查点
ForDecomposedPredictionGranite-TTM R3(分解预测)检查点

镜像内置的默认模型为 R3。R2 也以 model/ttm-r2 一并打包,回退时无需改动 类,只需改一行路径。

TS_TTM_DIR=/app/model/ttm-r2 # R2 로 되돌리기 — 클래스는 그 디렉터리의 config 가 정합니다
错误的类会«毫无异常地»被加载 — 因此已做拦截

R2 与 R3 的权重键完全不重叠,却仍会毫无异常地互相读取对方的检查点。若放任不管,就会生成445 个参数全部重新随机初始化的模型,并顶着 model_used="TTM" 的名号给出答案。

现在,加载时只要存在检查点中不存在、需要新建的参数,就会拒绝加载。日志中会留下如下记录。

[MODEL_LOAD] TTM dir=… , class=ForPrediction, in_channels=…
[MODEL_LOAD_FAIL] TTM dir=… — 학습된 가중치를 못 읽었다. 무작위 초기화 모델로 대체하지 «않는다».
reason=[ForPrediction] 체크포인트에 없어 새로 지은 파라미터 445개 (예: …) —
클래스가 체크포인트 세대와 맞는지 보라(TS_TTM_MODEL_CLASS)

配置错误不会让服务器宕掉 — 因为同一进程也在提供异常检测服务,不能因一个预测配置就让无关功能停摆。

取而代之的是体现在 /health 上。 响应的 models 中会携带各模型的加载状态,只要有一个未能 加载,status 即为 degraded(HTTP 仍为 200)。容器健康检查所使用的 /ping 仅在两个 模型都失败时才返回 503 — 这是为了避免仅预测功能失效时容器反复重启。

"status": "degraded",
"models": {
"tspulse": { "loaded": true, "error": null },
"ttm": { "loaded": false, "error": "ModelConfigError: …" }
}

⚠ 若 /health 中没有 models 项,说明是更早的版本 — 在该版本中健康检查看起来正常, 请改用下面的预测请求与启动日志来判别。这同样因版本而异。

版本预测请求启动日志
2026-09-21 之后HTTP 500[MODEL_WARMUP_FAIL] TTM ch=… 설정이 체크포인트와 맞지 않는다 — 이 설정으로는 모든 예측이 실패한다
更早HTTP 200 · model_used="NAIVE"[MODEL_WARMUP_SKIP] TTM ch=…

在旧版本中,配置错误也会被简单外推吸收,从而出现 /health 正常 · 预测 200 · 所有答案悄悄变成简单外推的运行状态。现在会区分重试也无法恢复的失败(配置)与临时性失败(数据不足等),只把前者上报。

🔴 要判别属于哪个版本,请依据«日志行»而非版本号。 当月的镜像标签带到日期,并会多次重新构建(2026.09-<date>-<시각>)— 即便 2026.09 相同,版本也可能不同。

若取值填错,不会悄悄回落到默认值,而是当场拒绝。分为两种情况。

情形日志中的提示
不是已知名称TS_TTM_MODEL_CLASS='…' 를 모른다 — ['ForDecomposedPrediction', 'ForPrediction'] 중 하나여야 한다
名称正确但库版本过低… 를 골랐는데 이 tsfm_public 판에 그 클래스가 없다 (granite-tsfm 0.3.9 이상 필요)

报警深度分析​

工具说明
get_alarm_stats报警统计摘要 — 频次、优先级分布、Top 报警、Top 标签
analyze_alarm_duration报警持续时间/MTTA 分析 — 劣化检测、平均确认时间走势
analyze_alarm_correlation报警-传感器相关性 — 哪些传感器变化会触发报警

设备健康指数​

get_asset_health — 综合传感器 + OEE + RAM + EMS + 报警,计算 0~100 分健康分数


特征存储 (Feature Store)​

通过预先计算的特征与 LLM 上下文提供快速综合分析。

工具说明
get_feature_status特征存储状态 — 调度器作业、执行时刻、回填状态
get_asset_features设备特征查询 — 健康分数、异常分数、报警、状态、生产指标
get_asset_contextLLM 上下文 — 按日综合分析摘要文本(预先生成)
analyze_asset设备综合分析 — 健康分数、传感器、报警、OEE/RAM/EMS、原因提示
explain_asset_anomaly异常原因分析 — 基于异常标签、报警、状态变化推断原因
trigger_feature_pipeline手动执行特征流水线

特征存储架构:

  • 调度器: 按小时(hourly)、按日(daily)自动计算特征
  • 嵌入: 将设备特征转换为向量,支持相似度检索
  • LLM 上下文: 预先生成按日综合分析文本,最大化响应速度

MCP 资源 (6 个)​

资源 URI说明
plantpulse://system/info系统信息
plantpulse://domains域列表及 API 端点
plantpulse://metrics/oeeOEE 指标说明
plantpulse://metrics/ramRAM 指标说明
plantpulse://metrics/emsEMS 指标说明
plantpulse://metrics/alarm报警指标及分析能力

发现 · 关注 · 生产 (2026.10)​

用于读取引擎自行记录的内容,并回答生产侧问题的工具。在聊天中会带有 insight_ 前缀显示。

工具说明
list_findingsAI 自行发现并记录的发现 — 设备异常 · 工单目标未达成 · 数据中断 · 数据质量 · 连锁停机 · 故障风险 · 触及限值 · 电力峰值 · AI 配置变更等。含严重度 · 紧急度 · 依据事实 · 状态
get_attention_ranking各站点的**「今天优先查看的设备」**排名 — 关注分数(0~100)与三条理由、相对昨日的排名变化
forecast_order_completion进行中的工单到计划结束时是否能达到目标数量 — 预计良品(P10~P90)· 达成概率 · 缺口数量
get_oee_lossesOEE 为何偏低 — 时间开动率 · 性能 · 质量损失时间、六大损失、停机原因
get_spc_chart设备 · 产品的不良率控制图(p 控制图)— 中心线 · 控制限 · 异常信号
autonomy_statusAI 自主改进(正常基线 · 评分器)的当前状态 — 模式 · 使用中的版本 · 影子 · 暂停
其中四个以关闭状态加入

自 2026.10 再发布(2026-10-20) 起,list_findings · get_attention_ranking 初始即开启,因此「今天优先查看哪些设备?」· 「整理一下未关闭的发现」可以直接作答。 forecast_order_completion · get_oee_losses · get_spc_chart · autonomy_status 四个以关闭状态加入,若要在提问中使用,需由管理员在 AI 管理控制台 › MCP 网关 › 工具 中开启 → MCP 网关


设备·标签理解​

当一台设备挂有成千上万个标签时,人无法逐一说明其含义。下列工具会基于实际数据统计与平台元数据,自动梳理标签的性质。

工具说明
list_asset_tags设备的标签列表
get_asset_profile设备画像 — 梳理哪些标签具有何种性质
get_asset_tag_relations标签间相关性 — 将同步变化的标签归为一组

案例检索·对比​

工具说明
find_similar_assets相似设备检索 — 基于向量嵌入余弦相似度
find_similar_anomalies相似异常案例检索 — 过去是否出现过同样形态的异常
find_fleet_outlier机群离群 — 同类设备中唯独表现不同的那台
search_pattern模式检索 — 查找与指定波形相似的区间
check_failure_precursor故障前兆巡检 — 故障前曾出现的信号当前是否可见

应用场景​

场景使用工具
设备异常早期发现detect_asset_anomaly → explain_asset_anomaly
预知维护计划get_asset_health → forecast_asset → forecast_ram
每日设备简报get_asset_context → get_asset_features
报警风暴原因分析get_alarm_stats → analyze_alarm_correlation → analyze_alarm_duration
相似设备对比分析analyze_asset → find_similar_assets
这种异常以前是否出现过detect_asset_anomaly → find_similar_anomalies
在故障发生前抓住它check_failure_precursor → forecast_ram
同型设备中仅有一台异常find_fleet_outlier → analyze_asset
能源异常检测detect_ems_anomaly → forecast_ems
生产质量预测detect_order_anomaly → forecast_order
这个工单能否按时完成forecast_order_completion → get_oee_losses
今天应从哪里看起get_attention_ranking → list_findings