『7x24小时有问必答』

前言

工业现场的设备日志分析,长期以来主要靠老师傅的经验积累和人工翻阅。面对动辄几千上万条的运行记录,想快速定位故障根因并不容易。漏看几条关键告警就可能延误处理。
大模型能力提升很快,就琢磨着能不能把它塞进传统的工控上位机软件里,做个顺手的小工具。既不用推翻现有的工作流程,又能帮现场人员省点力气。本文推荐一个基于 .NET 8 + WPF 的日志分析工具,把日志解析、大模型调用、报告生成串成一条线,主打一个"能用、好用、不添乱"。

项目介绍

一款面向工厂运维、设备操作和维修工程师的桌面工具,核心任务是帮用户把杂乱的设备运行日志"翻译"成清晰可读的诊断报告。
整个流程很直白:导入日志文件 → 程序自动解析结构化字段 → 调用大模型 API(结合内置的故障知识库和提示词模板)→ 输出诊断结论 → 一键导出报告。没有复杂的配置,打开软件就能干活。
项目虽然是个工具,但代码组织、配置管理、异常处理都按正经工业软件的套路来,不是那种跑通就扔的验证原型。

项目功能

功能模块
具体说明
日志导入与解析
支持  .log  /  .txt  /  .json  格式,自动识别时间戳、告警级别、运行信息等关键字段
AI 智能故障分析
调用大模型 API,结合内置诊断知识库和提示词模板,输出结构化分析结论
诊断报告生成
自动生成 Markdown / TXT 格式报告,包含故障诱因、处置建议、风险等级
报告本地导出
一键保存到本地,方便交接、归档或打印
API 密钥管理
支持环境变量读取或界面加密存储(DPAPI 本地加密,不留明文)
配置热加载
提示词、知识库、接口参数全部外置为文件,修改后无需重新编译

项目特点

场景落地,不玩虚的:不是拿大模型随便聊两句,而是真正贴合工控上位机的工作习惯——解析、分析、出报告,每一步都有明确的输入输出,现场人员拿到就能用。
用知识库和提示词"管住"大模型:内置了针对工业设备的故障诊断知识库,配合强约束的提示词模板,要求模型按固定字段输出(故障代码、诱因、建议等),有效减少 AI 胡编乱造的情况。说白了就是让大模型当个严谨的分析员,而不是天马行空的聊天机器人。
交互响应很"跟手":所有网络请求都走异步,UI 线程不会被卡死。导入大文件时界面照常响应,分析过程中有进度提示,按钮状态会根据当前操作自动禁用/启用,防止用户误操作。这些细节在工业软件里特别重要——现场可没人愿意对着一个"未响应"的窗口干瞪眼。
密钥存储讲究安全:API Key 不走明文,要么用系统环境变量,要么通过 DPAPI 加密后存在配置文件里。界面输入时用密码框遮挡,保存后也不再回显明文,兼顾了易用性和安全性。
配置全外置,改起来方便:提示词、知识库、接口地址、模型名称全在  config/  目录下,用文本编辑器就能改。想对接不同的模型或者适配不同的设备类型,改配置文件就行,不用动代码。

项目技术

技术项
选型与说明
运行时
.NET 8(跨平台基础库,实际部署在 Windows)
开发语言
C# 12
桌面框架
WPF(MVVM 模式,但本例采用 Code-Behind 简化实现)
UI 组件库
MaterialDesignThemes / MaterialDesignColors(界面风格统一,自带暗色主题支持)
JSON 处理
System.Text.Json(配置读写时强制使用 UTF-8 BOM,兼容中文不乱码)
HTTP 请求
原生 HttpClient,配合  ConfigureAwait(false)  避免死锁
密钥加密
DPAPI(ProtectedData  类,用户级加密,绑定当前 Windows 账户)
异步编程
async
  /  await  模式,所有耗时操作均异步执行

项目代码

日志解析模块:按行读取文件,用正则匹配时间戳和告警级别,遇到 JSON 格式则反序列化。解析结果存放到  ObservableCollection  中,界面列表自动更新。
AI 调用模块:读取  config/提示词/诊断提示词.txt  作为 system prompt,将解析后的日志摘要作为 user prompt 拼接,构造标准的 Chat Completion 请求体。调用过程中用  CancellationTokenSource  支持超时取消。
报告生成模块:根据用户选择的导出格式(.md 或 .txt),将 AI 返回的 JSON 结构化内容渲染成对应格式的文本。Markdown 输出会保留标题、列表和代码块样式。
配置管理:自定义一个  ConfigManager  静态类,启动时加载  appsettings.json,并提供  SaveApiKey()  /  LoadApiKey()  方法处理加密存储。配置变更时会触发  OnPropertyChanged  通知界面更新。
代码整体遵循了分层思路:UI 层只负责展示和用户交互,业务逻辑放在 MainWindow.xaml.cs 中独立的方法里,配置和工具类单独抽取。

项目效果

点击"导入日志",选择一份设备运行日志文件(比如来自 PLC 或 SCADA 系统的导出文件),程序自动解析并在左侧表格中展示每条记录的时间、级别和内容摘要,状态栏会显示"已导入 XX 条日志"。
接着点击"AI 故障分析",按钮变为禁用状态,右侧区域显示"分析中...",同时状态栏提示进度。等待几秒到十几秒(取决于网络和模型响应速度),右侧会刷新出结构化的诊断报告——包括故障概述、诱因分析、处置建议、风险等级等,内容格式和提示词模板里约束的一致。
如果对结果满意,点击"导出报告"选择保存路径,一份 .md 文件就生成了,直接用 Typora 或其他 Markdown 编辑器打开就能看,也可以转成 PDF 发给同事。
整个过程从打开软件到拿到报告,不超过两分钟。对比以前人工翻日志再写分析记录,效率提升非常明显。

项目源码

项目源码包含完整的项目文件、配置文件模板和示例日志。
GitHub:https://github.com/qqlif/IndustrialEquipmentLogAIAnalyzer

总结

这个小工具算不上多复杂,但确实把大模型能力"拧"进了工业桌面软件的日常流程里。从最终效果来看,它在设备巡检、故障初判、交接班记录这几个场景下,能帮现场人员节省不少重复性劳动。
技术层面收获也不少:DPAPI 加密、异步 IO 和网络请求的配合、WPF 界面响应式的处理,这些都是实打实的工程经验。最重要的是,它验证了一个思路——传统工业软件不必推倒重来,通过合理地外挂 AI 能力,完全可以用较低成本提升现有工具的使用体验。
后面如果有精力,打算再加上日志历史对比、异常趋势图、多模型切换这几个功能,让工具更好用一些。

关键词

最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。也可以加入微信公众号[DotNet技术匠]  社区,与其他热爱技术的同行一起交流心得,共同成长!
作者:小码编匠
出处:gitee.com/smallcore/DotNetCore
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!

END

推荐阅读

觉得有收获?不妨分享让更多人受益
关注「DotNet技术匠」,共同提升技术实力

收藏
点赞
分享
在看

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码