夜雨聆风学习资料网

ARTICLE · 1215785

我给污水处理厂写了个 AI 运维助手,开源了

我给污水处理厂写了个 AI 运维助手,开源了

污水处理厂的日常,是值班员盯着出水数据、拿着显微镜看污泥、翻着规程手册处理突发状况。经验靠老师傅带,知识散落在各种 PDF 和 SOP 里,夜班遇到异常现象只能凭记忆和电话求助。

我做了个东西想改变这一点:污水处理运维助手(wastewater-ops-agent)——输入故障现象,输出排查清单和处置建议;能看镜检照片、能答专业知识、能生成台账、能给参数建议。

已开源,MIT 协议:

  • GitHub:
  • Gitee:

它能干什么

功能
说明
故障诊断
输入异常现象 + 水质参数,输出可能原因、分步排查清单、临时处置方案
镜检诊断
手机直接拍显微镜目镜,AI 识别生物相并给出带依据的解读
知识问答
基于厂内文档回答,条条带引用来源
台账生成
表单录入当日数据,一键导出 Word 日报
参数建议
给出目标范围、调整动作、风险、观察指标、复测时间

这个 Agent 特别在哪

1. 鉴别式故障树,不是"原因大全"

市面上多数做法是列一堆"可能原因"丢给模型。我的故障树是假设 + 鉴别检查的决策结构:命中条目后,按预先设计的鉴别检查逐项排除,像老师傅问诊一样逐步收敛结论,而不是把所有可能性平铺给你自己猜。

2. 先规则后 RAG,LLM 兜底但绝不硬编

诊断先走故障树规则,规则没覆盖的长尾故障才交给 LLM 兜底——而且强制明示低置信度。知识问答同理:只依据检索到的文档作答,必须引用来源文件;知识库没有的内容明确拒答,不编造。在运维场景,"一本正经地胡说"比"不知道"危险得多,所以我把防幻觉写进了架构而不是祈祷 prompt。

3. 手机拍目镜就能做镜检

值班员用手机对着显微镜目镜拍一张,视觉模型输出结构化描述(丝状菌丰度分级、优势类群、生物相评价),再对照镜检教程知识库给出带引用的解读。丝状菌丰度 ≥+++ 会一键转入污泥膨胀排查流程。图像质量不足时如实输出"不足以判断",不硬猜。

4. 数据不出厂

这是污水厂的硬需求。支持本地 Ollama 部署(qwen2.5 + bge-m3 + qwen2.5-vl),数据、密钥全部留在本机;也支持在线 API 双通道切换,19 家供应商预设,全部走 OpenAI 兼容接口,改一行配置或界面下拉框即可切换,代码零改动。视觉模型可独立配置混搭。

5. 手机就是 App

Streamlit 监听局域网,手机连同一 Wi-Fi 打开浏览器即用,界面按窄屏设计(大按钮、少分栏)。不需要开发小程序,不需要上架应用商店。

6. 知识库随时增量添加

文档(md/txt/pdf/docx)丢进目录或界面上传,自动切割、向量化、入库。基于文件哈希做增量——只处理新增/修改的文件,已入库的秒过,不停服务、不全量重建。

7. V2:从"问答系统"进化成真正的 Agent

V1 我诚实地承认只是"规则库 + 检索问答":输入→检索→调一次 LLM→输出→失忆。V2 做了三件事:

  • 四层记忆:会话记忆、厂情档案(工艺/限值/药剂,填一次永久生效)、运行记忆(自动读最近台账数据)、经验记忆(诊断结论人工确认后沉淀为案例)
  • 会问的诊断循环:ReAct 风格,LLM 装备查台账、查知识库、查案例、向用户提问四个工具,按故障树的鉴别检查项逐步追问,信息够了才下结论,并给出依据链
  • 模型能力检测:检测到小模型撑不起循环时自动降级为一次性诊断模式,不报错不装死

8. 安全红线写进代码

不对接 PLC/阀门/泵/加药设备的控制接口(只读都不接);所有输出标注"仅供运行参考";红线指标"自动执行类操作输出次数 = 0"是测试断言。52 个纯函数测试 + GitHub Actions CI,全部不依赖网络和真实 LLM。

必须说清楚的问题

开源不是只报喜。这个项目的短板我同样想讲明白:

1. 小模型撑不起 Agent 循环。我实测 7B 模型连单条条件指令都执行不稳(同一规则三次测试三种结果)。多轮诊断循环需要 14B 以上本地模型或在线 API。7B 下会自动降级为一次性诊断模式——能用,但体验打折。

2. 故障树覆盖有限。目前只做了 Top10 高频故障(规划约 40 条),长尾故障全靠 LLM 兜底,质量没有规则保障。故障树是这个项目价值最高的部分,也是最需要行业专家共建的部分。

3. 视觉模型只能"描述",不能"鉴定"。VLM 能可靠地说出丝状菌丰度、菌胶团状态,但物种级结论会编造,试了几次一半准确率都不到。所以我把物种鉴定交给教程知识库检索,模型只做描述——这是能力边界,不是设计保守。

4. 冷启动依赖你自己。公开仓库只放脱敏样例文档。知识库好不好用,取决于你喂进去的厂内资料;厂情档案要手工填一次;案例沉淀需要每次诊断后人工确认。没有"开箱即用的行业大脑"。

5. 扫描件 PDF 解析不了。图片型 PDF 提不出文字,请用文字版 PDF/Word 或整理成 md/txt。

6. 只能局域网用。手机访问依赖同一 Wi-Fi,远程访问(如 Tailscale 方案)还在规划中。

7. 它永远只是辅助。所有诊断、建议都不构成操作指令,执行前必须经工艺工程师或值班长确认。这不是客套话,是这类工具能存在的底线。

怎么用

pip install -r requirements.txt     # Python 3.11+      # 复制 .env.example 为 .env,填模型配置      ollama pull qwen2.5:7b && ollama pull bge-m3 && ollama pull qwen2.5vl:7b     # 本地模式可选      streamlit run app/main.py --server.address 0.0.0.0 --server.port 8501  

仓库里有面向运行人员的详细操作手册(使用方法.md),每个功能怎么用、常见问题怎么排,都写清楚了。

最后

这个项目源于一个朴素的想法:让老师傅的经验变成可以 7×24 值班的助手,让夜班的人遇到异常时手边有个能问、能查、能看图的东西。

它还很粗糙——故障树要补、模型要升级、远程访问要做。如果你在水务行业,或者对垂直领域 Agent 的工程实践感兴趣,欢迎 Star、提 Issue、贡献故障树条目。

代码全开源,MIT 协议,数据不出厂。

GitHub:https://github.com/xianyouxupeng/wastewater-ops-agent

Gitee:https://gitee.com/xianyouxupeng/wastewater-ops-agent

相关学习资料