mcpField
R
RuleGo

RuleGo

本地服务
rulego.ccAI 与智能体1.6k1 周前更新

关于 RuleGo

RuleGo 是一个基于 Go 语言的轻量级、高性能、可嵌入的组件化规则引擎框架,可用于编排业务逻辑。它面向边缘计算、IoT、数据集成和低代码等场景,支持嵌入应用或独立部署为中间件。

主要功能

  1. 01轻量级,无外部中间件依赖
  2. 02基于组件的规则链编排
  3. 03运行时热更新规则链,无需重启
  4. 04支持嵌套子规则链复用流程
  5. 05内置 JavaScript、HTTP、MQTT 等组件
  6. 06提供 Endpoint 模块进行数据接入

适用场景

  1. 01在边缘服务器上预处理和过滤设备数据
  2. 02根据消息类型将数据分发到 HTTP、MQTT 等系统
  3. 03在 IoT 场景中触发告警和设备联动

MCP 相关

README 提到大模型智能体场景和 MCP 客户端、MCP 服务相关标签,但正文未具体说明 MCP 的接入方式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

RuleGo

GoDoc Go Report codecov test build build QQ-720103251 Mentioned in Awesome Go

English| 简体中文

官方网站 | 文档 | 贡献指南

标志

RuleGo 是一款基于 Go 语言构建的轻量、高性能、嵌入式、可编排的组件化规则引擎。

它可以帮助你快速构建松耦合、灵活的系统,实时响应并适应业务需求的变化。

RuleGo 还提供了大量可复用组件,支持对数据进行聚合、过滤、分发、转换、丰富处理,以及执行各种操作;还可以与各种协议和系统交互并集成。 它在低代码、业务代码编排、数据集成、工作流、大模型智能 Agent、边缘计算、自动化、物联网等场景中具有广泛的应用潜力。

特性

  • 轻量级: 无需外部中间件依赖,可在低成本设备上高效处理和传递数据,适用于物联网边缘计算。
  • 高性能: 得益于 Go 的高性能特性,RuleGo 还采用了协程池、对象池等技术。
  • 双模式: 支持嵌入式和独立部署模式。支持将 RuleGo 嵌入现有应用中,也可以将其作为中间件独立部署,提供规则引擎和编排服务。
  • 组件化: 所有业务逻辑均基于组件构建,便于灵活配置和复用。
  • 规则链: 灵活组合和复用不同组件,以实现高度定制且可扩展的业务流程。
  • 工作流编排: 支持动态编排规则链组件,无需重启应用即可替换或添加业务逻辑。
  • 易于扩展: 提供丰富灵活的扩展接口,便于实现自定义组件或引入第三方组件。
  • 动态加载: 支持通过 Go 插件动态加载组件和扩展。
  • 嵌套规则链: 支持嵌套子规则链以复用流程。
  • 内置组件: 包含大量组件,例如 Message Type Switch、JavaScript Switch、JavaScript Filter、JavaScript Transformer、HTTP Push、MQTT Push、Send Email、Log Recording 等。还可按需扩展其他组件。
  • 上下文隔离机制: 可靠的上下文隔离机制,无需担心高并发情况下的数据流问题。
  • AOP 机制: 无需修改规则链或节点的原有逻辑,即可为其执行过程添加额外行为,或直接替换其原有逻辑。
  • 数据集成: 支持动态配置 Endpoint,例如 HTTP Endpoint、MQTT Endpoint、TCP/UDP Endpoint、UDP Endpoint、Kafka Endpoint、Schedule Endpoint 等。

使用场景

RuleGo 是一款可编排的规则引擎,擅长解耦系统。

  • 如果系统业务复杂、代码臃肿
  • 如果业务场景高度定制或经常变化
  • 如果系统需要对接大量第三方应用或协议
  • 或者需要端到端的物联网解决方案
  • 或者需要集中处理异构系统数据
  • 或者想尝试在 Go 语言中进行热部署…… 那么 RuleGo 框架将是一个非常好的解决方案。
典型用例
  • 边缘计算: 在边缘服务器上部署 RuleGo,以便在向云端上报数据之前进行预处理、筛选、聚合或计算。可通过规则链动态配置和修改数据处理规则及分发规则,无需重启系统。
  • 物联网: 收集设备上报的数据,通过规则链进行规则判断,并触发一个或多个操作,例如发送电子邮件、告警,以及与其他设备或系统联动。
  • 数据分发: 根据不同的消息类型,通过 HTTP、MQTT 或 gRPC 将数据分发到不同的系统。
  • 应用集成: 将 RuleGo 用作粘合层,连接各种系统或协议,例如 SSH、webhook、Kafka、消息队列、数据库、ChatGPT 和第三方应用系统。
  • 异构系统数据集中处理: 接收来自不同来源的数据(例如 MQTT、HTTP、WS、TCP/UDP 等),然后进行筛选、格式转换,并分发到数据库、业务系统或仪表板。
  • 高度定制化业务: 解耦高度定制化或频繁变化的业务,并通过 RuleGo 规则链进行管理。业务需求变化时无需重启主程序。
  • 复杂业务编排: 将业务封装为自定义组件,通过 RuleGo 编排并驱动这些自定义组件,并支持动态调整和替换业务逻辑。
  • 微服务编排: 通过 RuleGo 编排并驱动微服务,或动态调用第三方服务来处理业务并返回结果。
  • 业务代码与逻辑解耦: 例如用户积分计算系统、风控系统。
  • 自动化: 例如 CI/CD 系统、流程自动化系统、营销自动化系统。
  • 低代码: 例如低代码平台、iPaaS 系统、ETL、类似 LangFlow 的系统(对接大模型以提取用户意图,然后触发规则链与其他系统交互或处理业务)。

架构图

README 配图

RuleGo 架构图

规则链运行示例图

README 配图

更多运行模式

安装

使用 go get 命令安装 RuleGo:

go get github.com/rulego/rulego
# or
go get gitee.com/rulego/rulego

使用

RuleGo 的使用非常简单,只需遵循以下 3 个步骤:

  1. 使用 JSON 定义规则链:

  2. 导入 RuleGo 包,并使用规则链定义创建规则引擎实例:

import "github.com/rulego/rulego"
//Load the rule chain definition file.
ruleFile := fs.LoadFile("chain_call_rest_api.json")
// Create a rule engine instance using the rule chain definition
ruleEngine, err := rulego.New("rule01", ruleFile)
  1. 将消息负载、消息类型和消息元数据交给规则引擎实例处理,然后规则引擎会根据规则链的定义处理消息:
// Define message metadata
metaData := types.NewMetadata()
metaData.PutValue("productType", "test01")
// Define message payload and message type
msg := types.NewMsg(0, "TELEMETRY_MSG", types.JSON, metaData, "{\"temperature\":35}")

// Hand over the message to the rule engine for processing
ruleEngine.OnMsg(msg)

无需重启应用即可实时更新规则链逻辑

规则引擎管理 API
  • 动态更新规则链
// Dynamically update rule chain logic
err := ruleEngine.ReloadSelf(ruleFile)
// Update a node under the rule chain
ruleEngine.ReloadChild("node01", nodeFile)
// Get the rule chain definition
ruleEngine.DSL()
  • 规则引擎实例管理:
// Load all rule chain definitions in a folder into the rule engine pool
rulego.Load("/rules", rulego.WithConfig(config))
// Get an already created rule engine instance by ID
ruleEngine, ok := rulego.Get("rule01")
// Delete an already created rule engine instance
rulego.Del("rule01")
// Create a default configuration
config := rulego.NewConfig()
// Debug node callback, the node configuration must be set to debugMode:true to trigger the call
// Both node entry and exit information will call this callback function
config.OnDebug = func (chainId,flowType string, nodeId string, msg types.RuleMsg, relationType string, err error) {
}
// Use the configuration
ruleEngine, err := rulego.New("rule01", []byte(ruleFile), rulego.WithConfig(config))
规则链定义 DSL

规则链定义 DSL

规则链节点组件

RuleGo 的核心特性是基于组件的架构,所有业务逻辑都封装在组件中,可以灵活配置和复用。目前,RuleGo 内置了大量常用组件。

数据集成

RuleGo 提供 Endpoint 模块,用于异构系统的统一数据集成和处理。详情请参阅:Endpoint

输入端点组件
RuleGo-Server

我们提供了一个基于 RuleGo 的开箱即用自动化工作流平台:RuleGo-Server , 以及一个前端可视化编辑器:RuleGo-Editor 。详情请参阅 server/README.md。

性能

RuleGo 在初始化期间就完成了大部分工作,因此运行规则链几乎不会给系统带来额外开销,资源消耗极低,特别适合在边缘服务器上运行。 此外,RuleGo 使用有向无环图(DAG)表示规则链,每条输入消息只需沿图中的路径处理,无需匹配所有规则,从而大幅提升消息处理和路由效率,同时节省系统资源。

性能测试用例:

Machine: Raspberry Pi 2 (900MHz Cortex-A7*4,1GB LPDDR2)  
Data size: 260B   
Rule chain: JS script filtering->JS complex transformation->HTTP push   
Test results: 100 concurrent and 500 concurrent, memory consumption does not change much around 19M

更多性能测试用例

生态系统

贡献

欢迎以任何形式参与贡献,包括提交问题、建议、文档、测试或代码。贡献指南

许可证

RuleGo 使用 Apache 2.0 许可证,详情请参阅 LICENSE 文件。

联系我们

电子邮件:[email protected]

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。