Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

diagnosis-agent

一次实验的记录:把 vibrolab 的诊断管道 + embodied-ai-robot 的 SCA 用 AI 辅助生成的代码串联起来,看能不能跑通、跑出结果,以及跑出的结果说明什么。


30 秒定位

数据集: PU 轴承 (Paderborn University), N09→N15 跨域, 3 类, 5878/5890 窗

方法 精度 说明
full120 全维 SVM-Linear 0.7518 基线
bot40 (Cohen's d) 0.8319 vibrolab 方法直接迁移,未经 Agent 优化
Agent 搜索 (SCA ON, 18 轮) 0.8357 fisher+80d+RF · 日志
Agent 搜索 (SCA OFF, 18 轮) 0.8407 fisher+50d+LR · 日志

这个实验说明的不是"LLM 打败人工方法"——而是三件事:

  1. vibrolab 的 Cohen's d + Bot-40 方法直接迁移到 PU 数据集就到 0.83 —— 这套物理特征选择范式不是 CWRU 专属,是跨数据集有效的
  2. LLM Agent 探索 18 轮,5 种 selector,边际提升 <1pp —— Cohen's d 稳定选择建立的基线极强,Agent 探索存在天花板
  3. SCA 的价值从"提精度"转移到"驱动过程质量" —— ON/OFF 最终精度相近,但过程触发 13 次追问(区间盲区/路径依赖/天花板/重复), 逼 Agent 明确假设、避免路径依赖

这个仓库在展示什么

先讲起源。

我做柱塞泵跨工况诊断时,方法拿到 80% 多的精度。我知道其中有优化空间, 也回想到这个方法是否可以通用外推。还记得 vibrolab 里写到的那句—— 有人在做故障诊断的 Agent。学术界总是在追求创新的,于是我也想设计一个 Agent, 让它用我的方法,去做到我做不到的事。

于是就有了这个项目。


关于代码。

假如你认真审查这个仓库,会找到很多困惑的点、各种切片,请不要奇怪—— 这个仓库是我借助 AI 写的代码,拥抱新时代嘛。而且用的是廉价的 AI, 因为我觉得用廉价的 AI 做出的项目,才能展现出功底。


关于探索。

这个项目改了很多版,在探索的过程中找到了很多反直觉的现象——在 CWRU 数据集上的优秀结果 并不能平推到 PU 数据集,它的天花板也就约 83%。

我们都知道跨工况会出现特征偏移的现象,而我原本的方法是"直接粗暴地把偏移量大的部分去掉"—— 效果确实不错,但当遇见真正的硬骨头时,这个策略显得乏力,所以我在想:既然是维度的迁移, 那么每一个特征维度偏移了多少?他们的规律是什么?

我确实找到了部分维度的偏移规律——在跨转速这个特定物理量下,能量类特征和形态类特征的漂移 方向可预测(能量维随转速升高而涨、形态维反向;有前人的相关研究,我做完实验后才在文献里 找到,思路撞上是正常的)。这个发现是"物理规律层面"的,但转化成"工程精度"却发现另一件事: sklearn 标准的 StandardScaler 本身已经承担了主要的对齐工作,在此基础上加入物理先验的 增益接近零。

换句话说:物理规律确实存在,但已被标准工程 baseline 吸收掉了。这个发现比"我提出了新方法" 更硬——它精准定位了物理先验在工程实践中的适用边界(只有在无法做全量目标域标准化时才有独立 价值)。这个方向的完整探索留在私有工作簿里,本仓库不涉及。

也因此这个仓库看起来就是那样的仓促。


那么这个仓库展现了什么呢?

如你所见,就是探索,就是尝试新事物

看日志结果,我能看见的是维度耦合现象,但是 AI 看不出来。 你可以看到它的一切尝试都是在我给的框架下执行——这就是 AI 的边界,AI 的天花板。 当我真正说明之后,它才意识到这个问题。

所以我设计了这个 Agent。在具体运行时有很多问题,就比如,它会偷懒, 它不会倾向于思考,它只是在穷举,所以我加入了 SCA 安全架构,强迫它去探索 (当给它最优解的时候,它会原地打转)。

然后我又在想,不给他最优解,就用提示词工程,让它去探索 (无 SCA 的运行日志),结果很喜人, 它确实是突破了低漂移 40 维的天花板,虽然只有一点,这不怪他, 在现有工具的限制下,这就是它的最优解。

但这不能说明它没有价值,因为在我私人的柱塞泵的数据集下, 它探索到了更高的跨域精度,但也能够分辨到的是,它依旧会在某一个解的边缘打转, 所以我又把 SCA 加进去了,结果就是你们看到的 有 SCA 的运行日志


想看工程功底请去 vibrolabembodied-ai-robot。 这里是探索的记录。


架构

┌─────────────┐     ┌──────────────┐     ┌───────────────┐
│  LLM Agent  │────▶│  SCA 守卫     │────▶│  诊断管道      │
│  (决策层)    │     │  (约束层)     │     │  特征选择+分类  │
└─────────────┘     └──────────────┘     └───────────────┘
       ▲                    │                     │
       │                    ▼                     ▼
       │            追问/拦截/反思            evaluate()
       │                                         │
       └──────────── 结果反馈 ──────────────────┘

SCA 守卫不建议 Agent 做什么,而是拦住不经思考的探索行为:

  • 消融不足 → "你都不知道哪个模块是噪音"
  • 重复探索 → "selector+n_dims 已试过, 区别?"
  • 路径依赖 → "未试 fisher/l1_lasso, 凭什么更差?"
  • 区间盲区 → "只在 low 搜, 如果最优是 40 维?"
  • 停滞 → "N 轮未破 X.XXXX, 极限?"
  • 消融发现超优但 Agent 没追 → 硬拦"为什么不追这个方向"

SCA 的设计理念来自 embodied-ai-robot 的硬件安全层——硬件钳舵机,软件钳探索。同一基因,不同战场。


SCA 的真正贡献 · 一个具体例子

SCA ON 日志 的第 9-11 轮:

[9]  fisher n=108 [SVM-RBF,SVM-Linear,LR,KNN群,RF], base=108d (去time)
     [challenge] 区间?: 只在 low 搜. 如果最优是 40 维?
     → 108d, KNN-7 = 0.8334  ← 新高

[10] fisher n= 80 base=108d (去time)  ← Agent 响应"区间?"追问, 下探
     → 80d, RF = 0.8357  ← 再次新高

[11] fisher n= 40 base=108d (去time)  ← 继续下探
     → 40d, KNN-3 = 0.8307

没有 SCA 的 "区间?" 追问,Agent 可能停留在 108 维不再下探。 这就是 SCA 的具体价值:不改变结果精度,改变探索路径的完备性。


项目起源

三个仓库都在做同一件事——用可接受的成本,让机器自己判断自己有没有故障

我一直好奇:vibrolab 的 Bot-40 是人工一刀切——能不能让 LLM 自己找到每个任务的最优解?

结果是——不能。人工方法已经把天花板顶住了。

但这个"不能"本身是有价值的:

  • 它反过来证明了 vibrolab 方法的鲁棒性(换一个数据集直接就打到 0.83)
  • 它划定了 LLM 在故障诊断中的合理角色边界:不是分类器、不是特征选择器,是决策层的搜索工具
  • 它验证了 SCA 框架的必要性:即使 Agent 触及天花板,SCA 也能保证探索过程的质量

这是一次尝试,不是产品。跑完之后我知道下一步该往哪里走。


快速开始

pip install -r requirements.txt
cp .env.example .env   # 填 LLM API key

# 下载 PU 数据集到 data/PU/ (链接见 data/README.md)
python prepare_pu.py
python run.py --dataset pu --sca on --model deepseek-v4-flash

目录

├── agent/
│   ├── core.py         # Agent 循环 + SCA 集成 + 工具分派
│   ├── sca.py          # SCA 守卫 (pre_test/post_test/追问逻辑)
│   ├── pipeline.py     # 诊断管道 (evaluate/ablation/analyze)
│   ├── selectors.py    # 7 种特征选择算法 (cohens_d/fisher/mi/lasso/rfe/weighted/random)
│   ├── da_methods.py   # 4 种域适应 (none/mean_align/zscore_align/coral)
│   ├── tools.py        # 分类器工厂
│   ├── cfd.py          # CFD 120 维提取 (从 vibrolab 复用)
│   └── io_utils.py     # 滑窗切分
├── run.py              # 入口 (--dataset pu/cwru --sca on/off)
├── prepare_pu.py       # PU 数据 → CFD 特征
├── prepare_cwru.py     # CWRU 数据 → CFD 特征
├── logs/               # SCA ON/OFF 对照实验完整日志
└── data/               # 数据目录 (需自行下载)

已知局限

  • 单数据集探索:Agent 搜索实验仅在 PU 上做,CWRU 未跑(vibrolab 上 Bot-40 已 98%, Agent 边际预期更小,但未经本仓库实验证实
  • SCA 追问效果依赖底层 LLM 推理能力,弱模型追问失焦
  • CFD 特征空间的天花板:本实验证明 Agent 在 CFD 特征上触及天花板, 但 CFD 之外的特征空间(时频图 / 相空间重构 / 深度特征)Agent 是否能突破,是开放问题
  • 本仓库是方法论 demo:论证"Agent + SCA 的分工",不追精度 SOTA

相关项目

  • vibrolab — CWRU 轴承跨工况故障诊断全链路复现, Cohen's d + Bot-40 + LR,2 KB 模型部署到 ESP32-S3(上位机模式)。跨数据集有效性由本仓库补足。
  • embodied-ai-robot — LLM 驱动的桌面具身机器人,MQTT 三层架构,硬件层 SCA 安全约束

Author

康龙辉 · 燕山大学机械工程学院 2027 届硕士研究生 📧 k3132755765@163.com · GitHub @kanglongh

License

MIT. 见 LICENSE.