RuleGo 是一个基于 Go 语言的轻量级、高性能、嵌入式规则引擎。它通过规则链(JSON/可视化)编排组件,实现复杂业务逻辑的声明式管理,在物联网、边缘计算、数据集成、自动化、智能体平台等场景有广泛应用。
如果说 v0.36.0 的主题是"AI Agent 框架化",那么 v0.37.0 的主题是 "连接与数据流":
- 向下连接设备——IoT 组件库一步到位覆盖采集、存储、控制全链路:10 个工业协议族 × 5 个时序数据库驱动,加上协议无关的通用节点,一条规则链即可完成"采集 → 聚合 → 落盘 → 查询";新增软 PLC 控制节点(定时器/看门狗),让边缘侧具备告警与控制闭环能力。
- 向上连接系统——全新的独立服务发现组件库(按需引入,不用不编译)让 RuleGo 接入 Nacos 微服务生态:服务调用不再硬编码地址,配置中心变更实时订阅热更新。
- 计算能力增强——streamsql 流计算引入 CEP 模式识别(MATCH_RECOGNIZE)和流-表 JOIN 富化。
- 开发体验升级——RuleGo Editor 交互全面对标现代化编辑器:命令面板、右键菜单、快捷键、链路诊断、组件文档浏览器、点位表 Excel 导入。
一、IoT 端到端:10 协议采集 × 5 时序库存储
上一个版本,rulego-components-iot 只有 Modbus、OPC UA 和串口。这个版本,它成为了一套完整的工业数据管道。
采集:10 个工业协议族
上一个版本,rulego-components-iot 只有 Modbus、OPC UA 和串口。这个版本,它成为了一套完整的工业数据管道。
采集:10 个工业协议族
|
领域
|
协议
|
组件
|
|
PLC / 工控
|
Modbus RTU/TCP
|
x/modbusRead、x/modbusWrite
|
|
|
西门子 S7
|
x/s7Read、x/s7Write
|
|
|
罗克韦尔 EtherNet/IP
|
x/eipRead、x/eipWrite
|
|
|
OPC UA
|
x/opcuaRead、x/opcuaWrite
|
|
|
三菱 MC
|
x/mcRead、x/mcWrite
|
|
|
欧姆龙 FINS
|
x/finsRead、x/finsWrite
|
|
网络设备
|
SNMP(v2c/v3,get/walk/set + Trap 监听)
|
x/snmpRead、x/snmpWrite、endpoint/snmp
|
|
电力
|
DL/T645 电表
|
x/dlt645Read、x/dlt645Write
|
|
|
IEC 60870-5-104
|
x/iec104Read、x/iec104Write
|
|
环保
|
HJ212 污染物在线监控
|
endpoint/hj212
|
存储:5 个时序数据库驱动
openGemini、InfluxDB、TDengine、TimescaleDB 四个库均提供写入和查询组件(x/<库>Write / x/<库>Query),另支持 Prometheus Remote Write(x/promremoteWrite)直接对接 Prometheus/VictoriaMetrics 生态。
通用节点:driver 一个字段切换协议与数据库
逐个记协议组件太繁琐?通用节点只暴露一个 driver 字段,其余配置原样透传给具体协议的专用组件:
{
"ruleChain": {"id": "telemetry", "name": "设备遥测入库"},
"metadata": {
"firstNodeIndex": 0,
"nodes": [
{"id": "read", "type": "x/iotRead", "configuration": {"driver": "modbus"}},
{"id": "save", "type": "x/tsdbWrite", "configuration": {"driver": "tdengine", "measurement": "device1"}}
],
"connections": [
{"fromId": "read", "toId": "save", "type": "Success"}
]
}
}
把 driver 从 modbus 改成 s7,从 tdengine 改成 timescaledb,链路结构和点位配置基本不动——换协议、换库,都是改配置而不是改代码。配套的 x/iotWrite(通用下发)和 x/tsdbQuery(通用时序查询)同理。在 RuleGo Editor 中,这些动态字段会随 driver 选择自动切换表单。
点位、缩放与在线浏览
- 点位表支持缩放/偏移系数(ScaleValue),原始寄存器值自动换算为工程量,S7/EIP 等采集路径原生应用;
- OPC UA 增加请求超时、缩放感知的数据转换,编辑器内可直接在线浏览 OPC UA 服务器节点树选择点位;
- Modbus Server 端点(设备上报模式)写回调携带 Modicon 地址和时间戳。
软 PLC 控制节点:边缘告警闭环
新增两个控制节点,让规则链具备 PLC 式的时序逻辑:
- x/control/timer:TON(接通延时)/TOF(断开延时),信号持续达到时限才触发动作,天然滤除瞬时抖动;
- x/control/watchdog:心跳看门狗,设备在时限内没有喂狗(上报数据)即判定失联并触发告警链路。
配合采集节点,"设备断线 30 秒告警"、"温度持续超限 1 分钟才派单"这类边缘场景不再需要写一行代码。
工程质量
TDengine 写入支持超级表自动建子表、标识符转义和批量分块;TimescaleDB 支持多行 VALUES 批量写入;全部协议和存储组合均有真实服务 e2e 测试与并发压力测试覆盖。IEC104 协议栈合并进主 module 发布,下游使用者自动获得补丁,无需 replace 指令。
二、rulego-components-discovery:接入 Nacos 微服务生态
这是一个全新的独立组件库,解决一个实际问题:RuleGo 作为胶水/边缘节点部署进既有微服务体系时,怎么和注册中心、配置中心打交道?
四个组件 + 一个注册钩子:
- x/nacosServiceCall——服务发现 + HTTP 调用。轮询选取健康实例转发请求,不再硬编码 IP;path 和 body 支持
${msg.xx} 模板:
{"id": "n1", "type": "x/nacosServiceCall", "configuration": {
"server": "127.0.0.1:8848",
"serviceName": "order-service",
"method": "POST",
"path": "/api/orders/${msg.orderId}",
"body": "${msg.data}"
}}
- x/nacosConfigGet / x/nacosConfigSet——按 Data ID + Group 读写配置中心;
- endpoint/nacos——订阅配置变更,配置一改,规则链自动触发。阈值、开关、路由表放在 Nacos 里管理,变更秒级生效,不用重启、不用重新部署规则链;
- 服务注册 Hook——
server/nacos 的 Register() 把当前进程注册为 Nacos 临时实例(含心跳),返回 cleanup 函数用于优雅反注册。
按需加载,不引入则零负担
rulego-components-discovery 是完全独立的组件库,不在 RuleGo 核心的依赖里。不启用就零依赖、零开销,对不需要微服务能力的嵌入式场景毫无影响。
Server 部署——通过 build tag 按需编译,不带标签时 Nacos 组件不会编进二进制:
# 编译全部可选组件
go build -tags with_all ./cmd/server
# 按需组合,例如只启用 AI + IoT + 服务发现
go build -tags with_ai,with_iot,with_discovery ./cmd/server
嵌入库使用——blank import 即自动注册组件:
import (
_ "github.com/rulego/rulego-components-discovery/external/nacos" // x/nacosServiceCall + x/nacosConfigGet + x/nacosConfigSet
_ "github.com/rulego/rulego-components-discovery/endpoint/nacos" // endpoint/nacos
)
官方 release 发布包按 with_all 构建,已包含 Nacos 组件,下载即用。
需要说明的定位:这是让单实例 RuleGo 接入集群生态,而不是把 RuleGo 变成分布式系统——规则链引擎仍然是嵌入式的,多实例高可用是独立的远期议题。同地址的 Nacos 连接经 SharedNode 自动复用,TLS 配置完整支持。
三、streamsql 流计算:CEP 与流-表 JOIN
v0.36.0 引入的 streamsql 流计算组件(x/streamTransform / x/streamAggregator,用标准 SQL 做流式过滤、聚合与窗口计算)本次获得两项关键增强:
- 流-表 JOIN 富化:流数据与维表(设备档案、物料字典)实时关联,一条 SQL 完成"原始遥测 → 带设备名称/位置的宽表";支持分析函数;
- CEP 模式识别:
x/streamAggregator 支持 MATCH_RECOGNIZE 语法,可以声明式定义事件序列模式——"先骤升、后骤降、5 分钟内连续 3 次"这类设备异常模式,过去要写状态机,现在是一条 SQL;
- 过滤与失败路由分离:被 WHERE 过滤掉的数据(含 changed_cols 无变化检测)改走
False 链,只有真正的处理错误才走 Failure 链——过滤不再被当作错误,链路语义更清晰。
四、RuleGo Editor:交互全面升级
编辑器本次是一次体验层面的大修:
- 命令面板 + 快捷键 + 右键菜单:对齐分布、节点搜索、复制粘贴(支持多节点)、endpoint 路由注入等操作都有了键盘和菜单入口,统一的 action 注册层是后续扩展的基座;
- 链路诊断:保存前自动做拓扑体检——孤立节点、必填缺失、共享连接引用失效等问题以告警形式标在画布上,诊断规则注册表化可持续扩充;
- 组件文档浏览器:设置菜单内嵌全部组件的官方文档,分类浏览、悬浮查看,不用切到网页查字段;
- IoT 点位表增强:Excel/CSV 导入导出、覆盖导入、批量删除、重名检查、批量地址生成,几百个点位几分钟入库;
- 网格吸附、Shift 溯源选择、调试流动动画等画布细节;
- 库化:ESM 单文件构建、
.d.ts 类型定义、peerDependencies 声明,作为组件嵌入宿主应用更干净。
Server 侧同步变化:release 发布包直接内嵌 editor 前端界面,部署即可用,无需单独搭建编辑器。
五、AI Agent 框架持续打磨
v0.36.0 完成框架化之后,本次以稳定性和可观测性为主:
- AG-UI 流式模式:支持 OpenAI 工具调用协议的流式输出;思考过程流式透传,推理模型的思维链实时可见;
- 会话级模型切换:同一智能体配置,不同会话可用不同模型和思考强度;
- 循环防护:Agent 自动检测并拦截死循环/重复工具调用(doom-loop),配合 panic 恢复,智能体跑飞了能自己刹住;
- 工具层增强:新增 grep/glob 工具(对齐 ripgrep 行为)、多根路径安全解析、输出清洗与截断;诊断 provider 改注册制并预置 ruff/tsc/eslint/shellcheck 模板;
- 故障转移成熟化:流式重试覆盖中段断流、failover 覆盖 401 认证错误并支持参数覆盖。
六、引擎与平台增强
- 同链连接池:连接型组件可以用
ref://源节点ID 复用同一条规则链内已有节点的连接——一条链上 3 个节点访问同一个 MQTT/数据库,只建一条连接,零引用计数、链销毁自动回收。ref:// 解析现在同链优先、共享池回退,endpoint 节点同样支持;
- endpoint 会话寻址推送:服务端可以按会话主动下发消息;
- 组件别名机制:旧组件类型名自动映射到新名,升级不破坏存量规则链;
- 调试增强:子链调试日志转发到根链控制台,TellFlow 自动传播父链 debug 模式;
- 安全加固:分类路径穿越修复、跨用户执行限制为系统智能体、AI 工具安全拦截切面;
- Server:默认注册全部 IoT 组件、内置多协议点位模板(iotpoint)、共享 HTTP server 可注入用户引擎池复用。
七、升级须知
Breaking Changes(rulego-components-iot):
- modbus TLS 证书配置键
certPath / keyPath / caPath 更名为 certFile / certKeyFile / caFile
Breaking Changes(rulego-components,流式计算):
x/streamAggregator 聚合结果的关系类型由 window_event 更名为 stream_event:规则链 DSL 中 "type": "window_event" 的连接需改为 "stream_event"
x/streamTransform 被过滤的数据(WHERE 不满足、changed_cols 无变化)改走 False 链,不再走 Failure;若您的 DSL 把过滤出口接在 Failure 链上,请改接 False 链
其他兼容性说明:
- rulego-components 移除 opengemini 组件,请改用 rulego-components-iot 的
x/opengeminiWrite / x/opengeminiQuery
八、完整更新日志
rulego-core
- feat: 增加同链连接池——连接型组件可在链内按源节点 ID(
ref://节点ID)复用连接,零引用计数;db/mqtt/net/ws 等组件完成适配
- feat(endpoint): endpoint 支持会话寻址推送;
ref:// 共享连接解析优先同链节点,未命中回退共享节点池
- feat(engine): Failure 分支把 TellFailure 错误暴露到 metadata.errorMsg (#26)
- feat: 增加组件别名机制,兼容旧组件类型名;规则引擎池支持按别名查找节点
- feat: 子链调试日志转发到根链控制台;TellFlow 传播父链 debug 模式到子规则链
- feat: RouterForm 增加 Params 字段,组件文档输出 endpoint 路由参数
- fix(switch): 单个 case 求值出错时跳过该分支,而不是终止整个实例
- fix(endpoint): 路由目标规则链不存在时输出错误日志
- fix(dbClient): opType 改为可选字段
- fix: 修复 tellOrElse 循环变量闭包捕获导致的数据竞争
rulego-components
- feat(streamsql): streamTransform 支持流-表 JOIN 富化和分析函数;被过滤数据改走 False 链,Failure 仅保留给真正的处理错误
- feat(streamsql)!: streamAggregator 支持 CEP(MATCH_RECOGNIZE)模式识别;聚合结果关系类型由 window_event 更名为 stream_event
- fix(endpoint): 注册 kafka 和 nats endpoint 的旧类型别名,保持向后兼容
- fix(python): 空闲进程池缩容到 keepAlive 下限,避免全部回收
- fix: 修正 endpoint 组件文档和默认值
- chore: 移除 opengemini 组件(迁移到 rulego-components-iot 作为存储驱动)
rulego-components-ai
- feat: 增加 AG-UI 流式模式,支持 OpenAI 工具调用协议
- feat: 流式响应返回 token 用量统计;支持思考过程流式透传
- feat: 支持会话级模型切换和思考强度扩展参数
- feat: 增强流式重试、故障转移与事件有序输出;failover 支持参数覆盖并覆盖 401 认证错误触发条件
- feat(agent): 增加 doom-loop 检测,自动识别并拦截死循环/重复工具调用;增加 panic 恢复
- feat(tool): 增加 grep/glob 工具,行为对齐 ripgrep(跳过二进制、感知 gitignore)
- feat(tool): 工具输出清洗与截断、多根路径安全解析;诊断 provider 改注册制,预置 ruff/tsc/eslint/shellcheck 模板
- feat(skill): 动态技能列表注入,支持禁用技能列表和注入宿主技能目录
- fix(tool/bash): 空白名单回退默认白名单;修复超时未终止进程导致 Windows 挂起
- fix: MemoryStorage 消息深拷贝并加数量上限防 OOM;文件工具启用安全路径解析防越界
- fix: full 模式流式重放改用阻塞反压,避免误判中断
rulego-components-iot
- feat: 新增 8 个工业协议采集族——西门子 S7(x/s7Read/Write)、EtherNet/IP(x/eipRead/Write)、SNMP(x/snmpRead/Write 及 endpoint/snmp Trap 监听)、三菱 MC(x/mcRead/Write)、欧姆龙 FINS(x/finsRead/Write)、DL/T645 电表(x/dlt645Read/Write)、HJ212 环保(endpoint/hj212)、IEC 60870-5-104 电力(x/iec104Read/Write,协议栈合并进主 module 发布,无需 replace),加上已有 Modbus/OPC UA 共 10 个协议族;采集点位表支持缩放/偏移系数(ScaleValue)
- feat: 新增 5 个时序数据库存储驱动——openGemini、InfluxDB、TDengine、TimescaleDB(x/*Write、x/*Query)和 Prometheus Remote Write(x/promremoteWrite);TDengine 支持超级表自动建子表、标识符转义与批量分块写入,TimescaleDB 支持多行 VALUES 批量写入
- feat: 新增协议/存储无关的通用组件 x/iotRead、x/iotWrite、x/tsdbWrite、x/tsdbQuery,仅配置 driver 字段即可切换具体协议/数据库;x/tsdbWrite 采集映射直接接受扁平 map 输入
- feat(control): 新增软 PLC 控制节点 x/control/timer(TON/TOF 延时动作)和 x/control/watchdog(心跳看门狗,失联触发告警)
- feat(modbus): 新增 x/modbusRead/x/modbusWrite 读写专用组件;新增 modbus_server 端点(设备上报模式),写回调携带 Modicon 地址和时间戳
- feat(opcua): 增加请求 Timeout;ToPointsData 支持缩放;在线浏览包含层次引用子类型;连接字段支持 ref:shared
- refactor!: modbus TLS 证书配置键 certPath/keyPath/caPath 更名为 certFile/certKeyFile/caFile
- fix(modbus): 修正串口校验位描述(1=Even,2=Odd)
rulego-components-discovery(新组件库)
- feat: 新增 Nacos 微服务发现组件库——x/nacosServiceCall(服务发现 + HTTP 调用,轮询选取健康实例转发)、x/nacosConfigGet/x/nacosConfigSet(配置读/写)、endpoint/nacos(订阅配置变更自动触发规则链)
- feat: 提供服务注册 Server Hook(Register,临时实例 + 心跳 + 优雅反注册)
- feat: 同地址连接经 SharedNode 自动复用;支持 TLS 配置
rulego-server
- feat: 集成 rulego-components-discovery,提供 Nacos 服务调用/配置中心能力;默认注册全部 IoT 采集、存储和转换组件
- feat: 新增 iotpoint 点位模板后端模块,内置 S7、IEC104、SNMP 等协议点位模板;新增 OPC UA 在线浏览处理器
- feat: 共享 HTTP server 支持注入用户引擎池复用,由 isSystemNode 保护(默认关闭)(#119)
- feat: 新增 AllChains 存储方法和规则链生命周期监听器;新增 AI 工具安全拦截切面
- feat: 内置组件支持动态查询(DynamicBuiltin);app 支持 WithConfig 编程式注入配置
- feat(api): 组件表单增加 Order 排序字段
- fix(security): 修复分类路径穿越;跨用户规则链执行限制为系统智能体;SaveAndLoad 剥除 systemAgent 属性防生成不可删除规则链
- fix(skill): 文件上传从缓存请求体解析,修复流被读空导致失败
- chore: 移除废弃的 examples/server
- ci: release 打包内嵌 editor 前端界面
rulego-editor
- feat: 画布交互全面增强——命令面板、右键菜单(多选对齐子菜单、endpoint 路由注入)、快捷键、节点对齐分布、节点搜索、网格吸附、Shift 溯源选择、调试时连线流动动画
- feat: 新增链路诊断(拓扑告警和必填校验,诊断规则注册表化)
- feat: 新增组件文档浏览器(设置菜单入口、分类列表、内嵌文档、悬浮查看)
- feat: IoT 点位表支持 Excel/CSV 导入导出、覆盖导入、批量删除、重名检查、批量地址生成
- feat: 新增 OPC UA 在线浏览对话框、Nacos 服务发现组件支持(含 TLS 配置)、x/tsdbQuery 组件支持
- feat: endpoint/schedule 的 cron 输入增强(croner 校验、下次执行预览、cronstrue 中文描述、常用预设)
- feat: 组件面板/节点选择器/节点管理全部折叠-展开开关,分类图标双层配色,侧边栏折叠把手重做,组件管理优化
- feat: 未注册组件支持属性面板编辑(JSON 通用编辑模式)
- feat: 库化——ESM 单文件构建(build:lib)、exports/peerDependencies 配置、.d.ts 类型定义
- feat: 聊天流式渲染增强(Markdown 流式、代码块复制/全屏、HTML/SVG 预览);引入 DOMPurify 修复 XSS
- fix: 修复搜索框 TDZ 崩溃、编辑器保存覆盖宿主应用路由、初始化双重重建闪烁、el-table-column 缺 key 渲染崩溃等问题
相关链接: