RuleGo 是一个基于 Go 语言的轻量级、高性能、嵌入式规则引擎:用规则链(JSON 或可视化拖拽)编排组件,不写代码就能完成物联网数据采集、边缘计算、业务自动化和 AI 智能体编排。
开源三年,v1.0.0 是第一个稳定版本。对你来说,它意味着三件事:
- 升级放心——v1.x 内公开 API 遵循语义化版本,不再有破坏性变更;本版还把历史废弃 API 一次性清干净,以后只做加法;
- 生产可用——多副本部署、失控循环防护、版本快照回滚、一轮安全加固在这个版本收口;
- 能力完整——11 个工业协议采集、SQL 流计算、AI 智能体、可视化编辑器,一套引擎全覆盖。
一、升级放心:v1.x 不再破坏兼容
从 1.0 起承诺:module 路径不变,公开 API 按 semver 演进,规则链 DSL 保持兼容。为了让这个承诺有干净的起点,此前标记废弃的 API 在本版一次性移除,涉及的主要是三处老接口:
| 如果你还在用 | 请改成 |
|---|---|
WithEndFunc / OnMsgWithEndFunc / OnMsgWithOptions |
WithOnEnd / OnMsg |
| iterator 迭代节点 | for 节点 |
utils/str 字符串模板 |
utils/el 表达式模板(ExecuteTemplate 用法兼容旧模板) |
多数是机械替换。没用过这些老 API 的话,go get 直接升级,什么都不用改。
二、多副本部署:定时任务不重复跑,队列消息不重复消费
过去把同一条规则链部署到多个实例,会立刻遇到两个问题:cron 定时任务每个副本都触发一次,消息队列每个副本都消费一遍。v1.0.0 补上了跨副本协调:
- 定时任务跨副本去重:给引擎接一个 Redis(官方提供现成的 RedisLocker),3 个副本部署同一条定时链,到点只执行一次;不接 Redis 行为和单机完全一样;
- 队列消费单活:redis / rabbitmq 等消息端点多副本部署时自动选主,只有一个副本消费,主副本故障自动接管,不用额外的协调服务;
- kafka 共享连接:多个节点复用一条 kafka 连接,连接数不随节点数膨胀;
- Server 整体可嵌入:整个管理平台可以作为库嵌进你自己的 Go 应用(鉴权、存储都留了注入口),独立部署时仍然是零依赖单二进制;多租户、角色、API Key 开箱即用。
三、版本管理:保存记版本,一键回滚
1.0 之前,规则链保存就是覆盖,改错了只能凭记忆恢复。现在:
- 保存自动记版本:每次主动保存生成一个快照,滚动保留(数量可配);存草稿不占版本额度,内容没变也不会产生重复版本;
- 一键回滚:出问题随时回退到任意历史版本,回滚本身也留痕、可再回退;
- 新建链默认不上线:确认没问题再启用,半成品链不会被流量打到;
- 全局变量热更新:
${global.x}改完立即生效,不用重启;支持引用环境变量,密码和 Key 落盘自动掩码。
四、引擎更稳:失控循环刹得住,排障看得见
- 循环防护:单条消息的跳转次数有了硬上限(可配),配置失误写出的死循环不会再拖垮整个实例;
- join 等待语义修正:多分支汇聚改为"等直接连进来的分支完成即可",不再傻等整个子树,分支竞态导致的提前完成和漏放行一并修掉;
- 业务日志:给节点配一条日志模板,运行记录里就能直接看到业务信息——不用再靠"节点执行过了"去反推发生了什么;
- 跨链调用可溯源:子链、跨链调用的消息自动带上来源链和来源节点,链间排障不用猜;
- 性能与质量:高并发下每条消息的处理开销进一步下降;引擎测试覆盖率提升到 88.4%,数据竞争测试全绿作为 1.0 基线。
五、AI 智能体跑进网关:32 位设备上的完整 ReAct 循环
新增的 ai/agent 组件用纯 Go 标准库实现了"推理→调工具→看结果"的完整循环,不依赖任何重型 AI 框架,32 位平台可编译——网关、工控机这类边缘设备也能跑智能体。配套的:
ai/jev决策节点:让大模型在规则链里当"判断节点",按语义条件路由和过滤消息,AI 判断和业务流程长在一起;- 远程 MCP 工具:智能体的工具可以直接挂远程 MCP 服务,不限于本机;
- 流式自愈:模型流式输出格式异常导致工具调用丢失时,自动重跑该轮,对话不中断。
六、IoT 采集:新增 BACnet,批量读一次往返
- 第 11 个协议族 BACnet/IP:楼宇自控标准协议,暖通空调、照明、楼宇控制器接入。协议族全景:Modbus、OPC UA、西门子 S7、EtherNet/IP、SNMP、三菱 MC、欧姆龙 FINS、DL/T645、HJ212、IEC 60870-5-104、BACnet/IP;
- 批量合并读:Modbus/S7/SNMP/FINS 相邻点位自动合并成一次批量请求——采 100 个连续点位,从 100 次往返变成 1 次;
- 连接治理统一:全部采集组件统一的断线重连、重试退避和实时连接状态(编辑器里直接看每个节点的在线状态);
- 工程量换算全覆盖:全部协议的读点位支持缩放/偏移系数,寄存器原始值自动换算成温度、压力这类工程量。
七、流计算:两条实时流按时间窗口关联
规则链里的 SQL 流计算升级到 StreamSQL v1.3.0,补上了流-流 JOIN:两条实时流按主键关联、事件时间相差不超过窗口才算匹配。指令下发 10 秒没等到回执就告警、温度异常同时对振动异常才算故障——这类双流互证的场景,一条 SQL 写完,在规则链里配一个节点就能用。
八、编辑器:跑一次,瓶颈在哪看得见
- 耗时瀑布图:每次调试运行,各节点耗时按瀑布图展开,慢在哪一级一眼定位;
- 运行记录对比:改完配置重跑,两次运行的消息差异自动对照,变化点直接标出来;
- 循环编排防接错:循环分组内外的连线互相禁止,接错的线在画布上就被拦下;while 死循环在编辑时就能检出;
- 调试细节:错误定位到具体节点、调试表单记住上次输入、给未上线的链发测试数据会先引导部署再自动重发。
升级清单
- rulego 核心:废弃 API 移除(见上文对照表),其余无破坏性变更,DSL 与 module 路径不变;
- ssh 节点:私钥三个配置字段(
privateKey/privateKeyPath/privateKeyPassphrase)合并为一个certKeyFile,填私钥内容或文件路径都行;password与私钥二选一,私钥加密时password作为解密口令; - modbus 校验位:新配置建议用
N/O/E字母写法;存量数字写法0/1/2仍能读入,不用改; - 源码编译 Server:需要 Go 1.25+(核心引擎仍兼容 Go 1.20,二进制下载用户无感)。
快速上手
go get github.com/rulego/rulego@v1.0.0
嵌入使用三行代码跑通第一条规则链;独立部署直接下载 Server 单二进制,内置可视化编辑器,浏览器打开即用。
其余 100+ 项修复与增强见 CHANGELOG。
相关链接:
- GitHub:https://github.com/rulego/rulego
- Gitee:https://gitee.com/rulego/rulego
- 官方文档:https://rulego.cc/
- 在线演示:http://8.134.32.225:9090/ui/ 、http://8.134.32.225:9090/editor/
- 智能体框架文档:https://rulego.cc/pages/ai-agent-overview/