RuleGo 是一个基于 Go 语言的轻量级、高性能、嵌入式规则引擎。它通过规则链(JSON/可视化)编排组件,实现复杂业务逻辑的声明式管理,在物联网、边缘计算、数据集成、自动化等场景有广泛应用。
v0.36.0 是一个里程碑版本:rulego-components-ai 从 AI 组件库正式升级为声明式 AI Agent 开发框架,同时 Server 模块从示例提升为架构级独立部署单元。RuleGo 仍然是那个轻量级、嵌入式的规则引擎核心,而 AI Agent、IoT、Server 等能力作为独立模块按需引入——既可以把核心嵌入到资源受限的边缘设备,也可以组合模块搭建完整的自动化工作流平台。
一、声明式 AI Agent 框架
为什么做
传统的 AI Agent 开发框架(如 LangChain、CrewAI)以代码驱动,每增加一个 Agent 就多一份代码维护成本,逻辑变更需要重新部署。RuleGo 的思路是:Agent 本身就是一种业务逻辑编排,天然适合用规则链来声明和管理。
什么是"声明式"
用一条规则链定义一个 Agent——配置系统提示词、绑定工具、设置重试策略和多轮对话上下文——全部通过 JSON 或可视化编辑器完成,不写一行代码。修改提示词?改字段。换模型?改字段。加一个工具?加一个配置项。Agent 的行为变更和业务规则一样,热更新,不停机。
核心能力
-
ReAct Agent 循环:支持思考-行动-观察的完整推理循环,Agent 可自主规划任务、调用工具并根据结果调整策略
-
统一工具抽象层:内置 bash、read、write、edit、browseruse、mcp、skill 等工具,并提供工具管理器统一管理;支持动态模型选择、重试策略和多模态视觉
-
MCP 双向协议:同时支持 MCP 客户端和服务端。可以调用外部 MCP 工具(如 Claude Desktop、Cursor),也可以把规则链、组件自动注册为 MCP 工具暴露给外部 AI 调用
-
10 个 AOP 切面:支持 Agent 执行生命周期拦截,内置日志、会话、可视化等切面,可自定义扩展
-
意图识别模块:识别用户输入意图,智能路由到对应的 Agent 或规则链处理
-
Skill 技能系统:通过规则链编排 AI 工具调用,将规则引擎的编排能力与 AI 能力深度融合
二、Server 独立模块 + 自然语言生成规则链
Server 从 examples/server 提升为架构级独立模块,可以作为 RuleGo 自动化工作流平台独立部署。旧版 examples/server 已标记为废弃。
本次 Server 最大的亮点是内置 AI 规则链助手(assistant)——一个通过自然语言对话创建、修改和部署规则链的智能体。
它的原理非常简单:assistant 本身就是一条规则链,使用 ai/agent 节点,通过 MCP 协议调用 Server 内部的规则链管理工具(preview_rule_chain、save_rule_chain、list_components 等)。用户说"创建一个接收 MQTT 消息并过滤温度大于 30 的规则链",助手就会生成对应的规则链 JSON 并实时预览在编辑器画布上。
这就是"声明式 Agent"的最好证明——助手本身是用规则链定义的,它操作的对象也是规则链,整个过程中没有额外代码。
三、升级须知
Breaking Changes:
-
Cache.Get 签名变更:Cache.Get 返回值从 interface{} 改为 (interface{}, error),自定义 Cache 实现需要适配
-
lua 组件路径迁移:lua 组件从原目录迁移到 transform/lua,引用路径需要更新
-
Logger 接口重构:Logger 接口新增日志级别支持,自定义 Logger 实现需要适配
四、完整更新日志
rulego-core
-
feat(engine): 增加 Stream 关系类型,支持同步执行流 (#63)
-
feat(endpoint): 增加 SSE 流式推送支持、ScopedMessage 代理和 NetClient/WsClient 端点组件
-
feat(endpoint): rest endpoint 增加 Restart 事件
-
feat(node): 支持递归变量替换和规则链环境变量注入
-
feat(schedule): 支持自定义消息体、类型和元数据参数
-
feat(template): 增加 include 和 fileExists 内置函数
-
feat(maps): 支持 struct 字段访问和回退键查找
-
feat(logger): 重构 Logger 接口,支持日志级别
-
feat: 增加 MCP 工具提供者接口,支持 AI 工具集成;增加 GetUdf/GetUdfs 方法和 AiTool 脚本类型
-
feat(dsl): 增强节点引用提取和字段支持
-
feat(components): 增加 while 节点组件,支持 mode 配置
-
feat(components): cacheGet 节点增加 whenKeyNotFound 配置;cachePut 组件在 outputMode=2 且缓存 key 不存在时路由到 Failure 链 (#104)
-
feat: 完善组件配置表单元数据(JSON 标签、label、ref 标签、RouterForm 和共享节点支持)
-
feat: 支持 per-message debugMode 和 skip-tell-next 控制;预计算链路级别 debugMode
-
feat: 默认字段名标签改为 'json';支持嵌套结构体扁平化在组件表单配置中
-
feat: GetEnv 支持访问全局 vars 变量
-
feat(dbClient): 增加 IN 子句切片参数展开
-
feat: NodePool.LoadFromRuleChain 跳过已加载条目
-
fix: 修复 JoinNode 超时失败、LCA 算法导致死锁、回调提前触发和元数据未合并等问题
-
fix: 修复 endpoint 节点重复写入
-
fix: 修复全局变量在 endpoint 组件 router 字段不生效 (#93)
-
fix: 修复 metadataToHeaders 处理器在 fasthttp 下不生效 (#95)
-
fix: 修复 ${ } 占位符在 inclusive/switch 节点中的支持
-
fix: 确保 ruleChainPool 传递到 root ruleRuleContext;传播父 ruleConfig 到动态组件子规则引擎
-
fix: 修复并发分支数据竞争、websocket 并发写入和结果切片竞争问题
-
refactor(cache): 重构 Cache.Get 签名,返回 (interface{}, error)
-
refactor: 不序列化函数体
-
perf: 优化文件操作函数
-
chore: 升级 expr-lang/expr 到 v1.17.8
rulego-components
-
feat(nsq): 实现 NSQD 多节点轮询发布与容错机制
-
feat: 增加 python 节点组件
-
feat: 增加文件操作节点组件(读、写、删除、列表)
-
feat: fasthttp endpoint 增加 restart 事件
-
feat: 完善 SharedNode 组件配置的 ref 标签,支持共享连接
-
opt: mongodb 客户端组件支持 ObjectId 自动转换
-
refactor(lua): 重构 lua 组件到 transform/lua 目录,适配 Cache.Get 签名变更
-
fix: 修复流式模式下 ctx.Response 数据竞争
-
chore: 升级依赖
rulego-components-ai
-
feat: 转型为全功能 AI Agent 框架,增加 ReAct Agent 循环、Tool Agent 和 Agent 工厂
-
feat: 增加 10 个 AOP 切面(日志、会话、可视化等),支持 Agent 执行生命周期拦截
-
feat: 增加统一工具抽象层:bash、read、write、edit、browseruse、mcp、skill 等内置工具
-
feat: 增加 MCP 双向协议支持(客户端 + 服务端)
-
feat: 增加意图识别模块和多维度会话管理系统
-
feat: 增加 OpenAI 流式处理器、Embedding 客户端和相似度计算
-
feat: 增加动态模型选择、重试模型和多模态视觉支持
-
feat: 增加 Skill 技能系统,支持通过规则链编排 AI 工具调用
rulego-components-iot
rulego-server
-
feat: server 从 examples/server 提升为架构级独立模块,作为 RuleGo 自动化工作流平台独立部署
-
feat: 增加内置 AI 规则链助手,支持通过自然语言对话创建、修改和部署规则链
-
feat: 增加文件操作和串口通信组件支持
-
feat(ci): 增加 32 位 Linux 构建目标和 server 模块 CI 工作流
-
fix: 启动失败后保持规则链启用状态 (#97 #98)
-
fix: 修复 32 位系统编译失败和空指针问题
-
fix: 修复组件市场列表 API 缺少 installed 字段
-
chore: 升级依赖;标记旧 examples/server 为废弃
相关链接: