首页 > 开源 > RuleGo v1.0.0 发布:API 稳定承诺、多副本部署、规则链版本回滚

RuleGo v1.0.0 发布:API 稳定承诺、多副本部署、规则链版本回滚

OSChina资讯 2026-10-19 17:35 3 阅读 查看原文

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。


相关链接: