从0到1做开源:工业智能体协议网关,让AI Agent秒接工业设备

本文介绍一个开源项目 InduGate ------ 工业智能体协议网关,它解决了AI智能体与工业设备对接的最后一公里问题。支持 OPC UA、Modbus、MQTT、S7、BACnet 五大协议,内置模拟器零硬件依赖,通过标准 MCP 协议让任何 Agent 都能直接操控工业设备。


🎯 为什么要做这个项目?

做这个项目的起因很简单:我想让AI智能体(Agent)真正"落地"到工业场景,但发现第一步就卡住了

工业场景的三座大山

做过工业互联网的朋友应该都有体会:

  1. 协议碎片化严重

    • 西门子用S7、三菱用MC协议、欧姆龙用Fins
    • 还有OPC UA、Modbus、MQTT、BACnet、Profinet...
    • 每个协议的SDK、文档、调试方式都不一样
  2. 测试成本极高

    • 一台PLC动辄几万,普通开发者根本买不起
    • 想学习和开发工业应用,连测试环境都没有
    • 开源项目几乎没有"开箱即用"的模拟器
  3. AI Agent落地难

    • 现在的Agent框架(Dify、FastGPT、LangChain)都很成熟
    • 但一到工业场景,连设备都连不上,谈什么智能体?
    • 每个项目都要从零开始写协议对接,重复造轮子

于是我决定自己做一个:把工业协议统一封装,通过标准MCP协议暴露给AI智能体,让Agent开发者不需要懂工业,也能操控工业设备。


🚀 InduGate 是什么?

InduGate = 工业智能体协议网关

你可以把它理解成"AI时代的工业翻译官":

复制代码
┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  AI Agent   │────▶│  InduGate   │────▶│  工业设备   │
│ (大模型)    │     │  (协议网关) │     │ (PLC/传感器)│
└─────────────┘     └─────────────┘     └─────────────┘
                      ▲
                      │ MCP 标准协议
                      │
                 任何Agent都能接

核心价值

  • 协议统一:5种工业协议 → 一套标准MCP接口
  • 零硬件测试:内置模拟器,Docker一键启动就能玩
  • 开箱即用:Web管理面板 + REST API + MCP Server
  • 企业级能力:RBAC、操作审计、告警、历史数据存储

✨ 核心特性

1. 五大工业协议支持

协议 说明 状态
OPC UA 工业互联网标准协议,广泛用于SCADA、MES ✅ 已支持
Modbus TCP 最经典的工业协议,几乎所有设备都支持 ✅ 已支持
MQTT 物联网消息协议,适合传感器数据采集 ✅ 已支持
Siemens S7 西门子PLC专用协议,S7-1200/1500/300/400 ✅ 已支持
BACnet/IP 楼宇自动化协议,智能建筑常用 ✅ 已支持

后续还计划支持:Modbus RTU、Profinet、EtherNet/IP、三菱MC协议等

2. 标准 MCP 协议接入

MCP(Model Context Protocol) 是 Anthropic 推出的Agent通信标准,正在成为事实标准。

InduGate 完整实现了 MCP Server,Agent 可以直接调用这些工具:

python 复制代码
# 用 Python 调用 InduGate MCP 工具示例
from mcp import ClientSession

# 1. 列出所有设备
devices = await session.call_tool("list_devices", {"protocol": "opcua"})

# 2. 读取温度数据
temp = await session.call_tool("read_data", {
    "device_id": "plc-001",
    "node_id": "ns=2;s=Temperature"
})

# 3. 写入控制指令
await session.call_tool("write_data", {
    "device_id": "plc-001",
    "node_id": "ns=2;s=SetPoint",
    "value": 25.5
})

不管你用的是 Claude、GPT、DeepSeek,还是 Dify、FastGPT,只要支持MCP,就能直接控制工业设备。

3. 内置模拟器,零硬件依赖

这是我最满意的功能------没有工业设备也能玩

InduGate 内置了三种协议的软件模拟器:

  • 🏭 OPC UA模拟器:模拟温度、压力、流量等工业数据点
  • 🔌 Modbus模拟器:模拟寄存器、线圈、离散输入
  • 📡 MQTT模拟器:模拟传感器周期性上报数据

启动方式极其简单:

bash 复制代码
docker compose up -d --build

Docker 启动后模拟器自动运行,打开浏览器就能看到实时变化的工业数据,完全不需要任何硬件。

4. 完整的 Web 管理面板

基于 Vue 3 + Element Plus 打造的现代化管理界面,功能齐全:

功能 说明
📊 仪表盘 设备状态、告警概览、数据统计
📱 设备管理 增删改查、连接断开、批量操作
📈 实时数据 节点浏览、数据读写、订阅监控
⚠️ 告警管理 阈值告警、规则配置、事件确认
👥 用户权限 RBAC角色、设备级ACL权限隔离
📝 操作审计 所有写操作留痕,可追溯
🎮 模拟器控制 启停模拟器、配置模拟参数

5. 企业级能力

  • 🔐 JWT认证:API安全访问
  • 📊 Prometheus指标:监控系统运行状态
  • 💾 时序数据存储:InfluxDB存储历史数据
  • 📦 高可用架构:支持集群部署(规划中)
  • 🔌 插件化扩展:自定义协议驱动(规划中)

🏗️ 技术架构

整体架构图

复制代码
┌─────────────────────────────────────────────────────────────┐
│                        接入层                                │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐   │
│  │ Web UI   │  │ REST API │  │ MCP Server│ │ CLI工具  │   │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘   │
├─────────────────────────────────────────────────────────────┤
│                        核心服务层                             │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐   │
│  │ 设备管理 │  │ 数据引擎 │  │ 告警引擎 │  │ 用户权限 │   │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘   │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐                  │
│  │ 协议适配 │  │ 数据标准化│ │ 操作审计 │                  │
│  └──────────┘  └──────────┘  └──────────┘                  │
├─────────────────────────────────────────────────────────────┤
│                        协议驱动层                             │
│  ┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐        │
│  │OPC UA│  │Modbus│  │ MQTT │  │ S7   │  │BACnet│  ...   │
│  └──────┘  └──────┘  └──────┘  └──────┘  └──────┘        │
├─────────────────────────────────────────────────────────────┤
│                        设备模拟器层                           │
│  ┌──────┐  ┌──────┐  ┌──────┐                              │
│  │OPC UA│  │Modbus│  │ MQTT │  ← 内置模拟器,零硬件依赖     │
│  │ Sim  │  │ Sim  │  │ Sim  │                              │
│  └──────┘  └──────┘  └──────┘                              │
└─────────────────────────────────────────────────────────────┘

技术栈选型

层级 技术选型 说明
后端语言 Go 1.24+ 性能强、并发好、适合网关类项目
Web框架 Gin 轻量高性能Go Web框架
ORM GORM Go生态最成熟的ORM
配置管理 Viper 多格式配置支持
日志 Zap 高性能结构化日志
前端 Vue 3 + TypeScript 渐进式框架,生态成熟
UI组件 Element Plus 企业级组件库
构建工具 Vite 极速构建体验
数据库 SQLite / PostgreSQL 默认SQLite,生产用PG
时序库 InfluxDB(可选) 工业时序数据存储
部署 Docker + Docker Compose 容器化一键部署

⚡ 快速上手,3分钟体验

方式一:Docker 一键启动(推荐)

bash 复制代码
# 克隆项目
git clone https://gitee.com/zhbdream/indugate-gateway.git
cd indugate-gateway

# 一键启动(包含 Gateway + Web UI + 内置模拟器)
docker compose up -d --build

方式二:本地开发运行

bash 复制代码
# 后端
go run ./cmd/gateway

# 前端(新开终端)
cd web
npm install
npm run dev

访问地址

启动完成后,打开浏览器访问:

服务 地址
Web管理面板 http://localhost:8080
API文档 (Swagger) http://localhost:8080/swagger/index.html
MCP服务发现 http://localhost:8080/mcp/.well-known/mcp.json
健康检查 http://localhost:8080/health
Prometheus指标 http://localhost:8080/metrics

🤖 AI Agent 对接演示

给大家看一个实际的例子:用 Claude + InduGate 实现工业设备的智能监控

第一步:在 Claude 中配置 MCP

在 Claude Desktop 的配置文件中添加:

json 复制代码
{
  "mcpServers": {
    "indugate": {
      "url": "http://localhost:8080/mcp"
    }
  }
}

第二步:和 Claude 对话

:帮我看看1号产线的温度传感器数据

Claude:好的,我来查看一下。

调用 list_devices 工具获取设备列表

调用 read_data 工具读取温度数据

Claude :1号产线OPC UA设备当前温度为 78.5°C ,过去一小时在 72-80°C 之间波动。这个温度有点偏高,需要我帮你设置高温告警吗?

:好的,设置85度高温告警,超过就告警

Claude调用告警规则创建API

已经为你创建了高温告警规则:

  • 设备:产线1号PLC
  • 监测点:ns=2;s=Temperature
  • 阈值:> 85°C
  • 级别:严重
  • 通知方式:Webhook + MQTT

温度超过阈值时会自动触发告警。

这就是工业智能体的威力------用自然语言就能管理工业设备。


📁 项目结构

复制代码
indugate-gateway/
├── cmd/gateway/          # 应用入口
├── internal/
│   ├── api/              # HTTP API 层
│   ├── mcp/              # MCP Server 实现
│   ├── protocol/         # 协议驱动层
│   │   ├── opcua/
│   │   ├── modbus/
│   │   ├── mqtt/
│   │   ├── s7/
│   │   └── bacnet/
│   ├── simulator/        # 内置模拟器
│   ├── service/          # 业务服务层
│   ├── model/            # 数据模型
│   ├── config/           # 配置管理
│   └── storage/          # 数据存储
├── web/                  # Vue 3 前端
├── configs/              # 配置文件
├── examples/             # 使用示例
├── deployments/          # 部署配置
├── docs/                 # 文档
└── docker-compose.yml    # 一键启动

🌱 开源地址与参与方式

项目地址

🏠 Gitee: https://gitee.com/zhbdream/indugate-gateway

欢迎参与

  • Star:觉得有用请点个Star,这是对我最大的鼓励
  • 🐛 Issue:发现Bug或有功能建议,欢迎提Issue
  • 🔧 PR:欢迎提交代码贡献,一起完善项目
  • 💬 讨论:有任何想法都可以在讨论区交流

后续规划

  • 支持更多协议(EtherNet/IP、三菱MC、Modbus RTU等)
  • 设备自动发现(局域网扫描)
  • 数据流编排(可视化数据转换)
  • 边缘端轻量化版本
  • 集群高可用部署

🎯 写在最后

做这个项目的初衷很简单:降低AI智能体在工业场景的落地门槛

工业互联网不应该是大厂的专利,每个开发者、每个小团队都应该能轻易地把AI能力带到工业现场。InduGate 就是想做这样一件事------把复杂的工业协议封装起来,让AI开发者专注于业务逻辑,而不是陷入协议细节的泥潭。

如果你也是:

  • 🏭 工业互联网从业者
  • 🤖 AI智能体开发者
  • 📚 想学习工业协议的学生
  • 💡 对工业AI感兴趣的技术人

欢迎来体验、来交流、来贡献代码!

愿我们一起,让AI真正走进工厂。


🔗 项目地址https://gitee.com/zhbdream/indugate-gateway

⭐ 如果觉得不错,别忘了点个 Star 支持一下!


相关推荐
Hommy881 小时前
【开源剪映小助手】架构设计
开源·github·aigc·剪映小助手·视频剪辑自动化
_code_bear_2 小时前
如何设计 Agent 场景下的 Prompt
程序员·开源·设计
GitCode官方2 小时前
开源鸿蒙跨平台直播|Flutter 鸿蒙化进阶:三方库适配与性能调优实战
flutter·华为·开源·harmonyos·atomgit
码途漫谈2 小时前
Harness:让 Claude Code 先组队,再开工
开源·ai编程
冬奇Lab2 小时前
每日一个开源项目 第124篇:last30days —— 洞察最近30天:跨越信息茧房的 AI Agent 搜索引擎
人工智能·搜索引擎·开源
天丁o2 小时前
开源教程:用飞书长连接把本地 Codex CLI 接入机器人,支持进度心跳和可见过程
机器人·开源·飞书
RuoyiOffice2 小时前
2026 企业定制开发选型:从零开发、低代码、SaaS 与 RuoYi Office 怎么选?
spring boot·uni-app·开源·saas·oa·定制化·ruoyioffice
狗凯之家源码网2 小时前
电商代付系统从零搭建与实战指南
前端·后端·开源
咖啡星人k3 小时前
MonkeyCode 的 CI/CD 实践:开源项目如何做到每2周稳定发布
ci/cd·开源