rulego-components-ai

mcp
Security Audit
Warn
Health Warn
  • License — License: Apache-2.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Pass
  • Code scan — Scanned 1 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

A declarative AI agent framework built on RuleGo

README.md

rulego-components-ai

A Declarative AI Agent Development Framework

A declarative AI agent development framework built on the RuleGo rule engine. It can be used to develop standalone AI agents or serve as the foundation for building AI coding assistants like Claude Code / OpenClaw. It adopts the rule chain as agent design philosophy, embedding LLM reasoning capabilities into event-driven rule chain workflows. Through JSON declarative configuration, 10 AOP aspects, unified abstraction of four tool categories, and multi-dimensional session management, it enables building production-grade agent applications.

Full Documentation: Docs

Differences from Mainstream Frameworks

Dimension LangChain / LangGraph AutoGen / CrewAI This Framework
Definition Python code Python code JSON declarative, hot-reloadable
Runtime Model Request-response Request-response Event-driven, rule chain orchestration
Interception Simple callback list No unified mechanism 10 AOP aspects with PointCut condition matching
Tool Sources Functions Functions Built-in + Rule chain + Sub-agent + MCP bidirectional
Session Management Basic Memory class External storage required 6 scopes, auto-compression/pruning, extensible storage
Business Integration DIY required DIY required Native access to rule engine 200+ nodes
Model Switching Build-time binding Build-time binding Runtime per-session dynamic switching
Deployment Python runtime Python runtime Single binary, low resource usage

Core Features

  • Rule Chain as Agent — Agents are defined declaratively in JSON and can be freely composed with other rule engine nodes (REST calls, JS filters, message queues, etc.) to build hybrid pipelines of AI reasoning and business orchestration
  • 10 AOP Aspects — Covering the complete agent execution lifecycle (start/before/around/after/completed/pre-LLM/post-LLM/stream-chunk/pre-tool-call/post-tool-call), with PointCut condition matching and Order priority
  • Unified Abstraction of Four Tool Categories — 4 atomic tools (bash/read/write/edit) form the perception-creation-execution-evolution capability loop; rule chain tools (expose any business process as a tool), sub-agent tools (multi-agent collaboration), MCP bidirectional protocol (client + server)
  • Skill System — Compatible with the SKILL.md format used by Claude Code / OpenClaw and other AI coding assistants, supporting multi-directory aggregation, fingerprint caching, and automatic hot-reloading
  • Multi-dimensional Session Management — 6 scopes (global/per-user/per-channel/per-thread/per-task), automatic LLM compression and intelligent pruning
  • Runtime Model Switching — Session-level dynamic model switching via decorator chains; the same agent can use different models for different users
  • ReAct Reasoning Loop — Supports synchronous/streaming execution, multimodal input, automatic retry
  • MCP Bidirectional Protocol — Acts as both MCP client (consuming external tools) and MCP server (exposing rule chains as MCP tools)
  • Intent Recognition — LLM classification and embedding vector similarity approaches
  • OpenAI Compatible — Streaming response processor, standard Chat Completions API output

Module Structure

ai/
├── agent/          # Core ReAct agent node (type: ai/agent)
├── action/         # Simple LLM operation nodes
│                   #   - ai/llm       Text generation
│                   #   - ai/createImage Image generation
├── intent/         # Intent recognition nodes
│                   #   - ai/intent     LLM-based
│                   #   - ai/localIntent Embedding vector-based
├── aspect/         # AOP aspect framework
│   └── builtin/    #   Built-in aspects (logging, session, visualization)
├── config/         # Shared configuration types and model capability registry
├── constants/      # Constants (provider URLs, model names, timeouts)
├── embedding/      # Lightweight embedding client + cosine similarity
├── endpoint/       # MCP Server endpoint (rule chains exposed as MCP tools)
├── errors/         # Structured error codes (AgentError with Retryable)
├── mcp/            # MCP client node (calling remote MCP services)
├── processor/      # OpenAI-compatible streaming response processor
├── session/        # Session/conversation history management
├── tool/           # Tool registry + built-in tool implementations
│   ├── bash/       #   Shell command execution
│   ├── read/       #   File reading and search
│   ├── write/      #   File writing
│   ├── edit/       #   File editing (line-level, search-replace)
│   ├── browseruse/ #   Browser automation (chromedp)
│   ├── mcp/        #   MCP tool adapter (self + remote mode)
│   └── skill/      #   Skill invocation
├── utils/          # Utility functions
│   ├── contextx/   #   Type-safe Context Key
│   ├── image/      #   Image loading, Base64 conversion
│   ├── llm/        #   LLM response parsing
│   ├── token/      #   Token estimation and metrics collection
│   └── tool/       #   Tool parameter JSON Schema parsing
└── all/            # One-liner import for all components

Quick Start

Installation

go get github.com/rulego/rulego-components-ai

Import Components

Import all components in one line:

import _ "github.com/rulego/rulego-components-ai/all"

Import on demand:

import (
    _ "github.com/rulego/rulego-components-ai/agent"
    _ "github.com/rulego/rulego-components-ai/tool/bash"
    _ "github.com/rulego/rulego-components-ai/tool/read"
)

Minimal Example: Using an AI Agent in a Rule Chain

Here is a complete agent rule chain JSON configuration with the node type ai/agent:

{
  "ruleChain": {
    "id": "my-agent",
    "name": "My Assistant"
  },
  "nodes": [
    {
      "id": "s1",
      "type": "ai/agent",
      "configuration": {
        "url": "${global.llm.url}",
        "key": "${global.llm.key}",
        "model": "glm-5.1",
        "systemPrompt": "You are a helpful assistant.",
        "maxStep": 50,
        "params": {
          "temperature": 0.7
        },
        "tools": [
          {"type": "builtin", "name": "bash"},
          {"type": "builtin", "name": "read"},
          {"type": "builtin", "name": "write"}
        ]
      }
    }
  ]
}

Load and execute via Go code:

package main

import (
    "context"
    "fmt"

    _ "github.com/rulego/rulego-components-ai/all"
    "github.com/rulego/rulego/api/types"
    "github.com/rulego/rulego/rulego"
)

func main() {
    // 1. Create a RuleGo instance
    config := rulego.NewConfig()
    ruleEngine := rulego.NewRuleGo()

    // 2. Load the agent rule chain (JSON as above)
    chainJson := `{"ruleChain":{"id":"my-agent","name":"My Assistant"},"nodes":[{"id":"s1","type":"ai/agent","configuration":{"url":"https://open.bigmodel.cn/api/paas/v4","key":"your-api-key","model":"glm-5.1","systemPrompt":"You are a helpful assistant.","tools":[{"type":"builtin","name":"bash"}]}}]}`

    _, err := ruleEngine.OnLoad(chainJson, types.WithConfig(config))
    if err != nil {
        panic(err)
    }

    // 3. Send a message to the agent
    msg := rulego.NewMsg(0, "user", types.JSON, map[string]string{}, "What's the weather like today?")
    ruleEngine.OnMsg(msg, rulego.WithContext(context.Background()))

    // Note: In production, retrieve responses via callback or endpoint
    fmt.Println("Message sent")
}

Node Types

Node Type Package Description
ai/agent agent ReAct agent with tool calling, streaming output, multimodal support
ai/llm action Single-shot text generation
ai/createImage action Image generation (DALL-E 3)
ai/intent intent LLM-based intent recognition
ai/localIntent intent Embedding vector-based intent recognition (low latency, zero LLM calls)
x/mcpClient mcp MCP client node

Agent Configuration (ai/agent)

{
  "url": "https://open.bigmodel.cn/api/paas/v4",
  "key": "your-api-key",
  "model": "glm-5.1",
  "systemPrompt": "System prompt, supports ${variable} and ${include(\"/path/to/file\")} file references",
  "messages": [
    {"role": "user", "content": "Preset messages for scheduled task scenarios"}
  ],
  "images": ["https://example.com/image.png"],
  "params": {
    "temperature": 0.7,
    "topP": 0.9,
    "maxTokens": 4096,
    "responseFormat": "text",
    "extraFields": {
      "thinking_budget_tokens": 8192
    }
  },
  "maxStep": 50,
  "maxToolOutputLength": 5000,
  "maxRetries": 3,
  "tools": [
    {"type": "builtin", "name": "bash"},
    {"type": "rulechain", "name": "myChain", "targetId": "chain-001"},
    {"type": "agent", "name": "subAgent", "targetId": "sub-agent-001", "description": "Sub-agent"},
    {"type": "mcp", "name": "mcpTools", "config": {"serverUrl": "http://localhost:8080/mcp"}}
  ]
}

Tool Types

Type Description
builtin Built-in tools: bash, read, write, edit, browseruse, skill
rulechain Call another rule chain as a tool
agent Call a sub-agent (semantic alias of rulechain)
mcp MCP protocol tool, supports self (in-process) and remote (http/stdio) modes

4 Atomic Tools

Tool Capability Description
bash Execute Shell command execution, HTTP requests; supports allow/deny security mode, timeout control, output truncation
read Perceive File reading, line-range reading, content search; supports memory reading and grep mode
write Create File writing, memory writing, experience recording; supports safe path resolution
edit Evolve File editing (line-level, search-replace, insert/delete); supports backup history

These 4 atomic tools form the agent's capability loop: Perceive the environment → Create content → Execute operations → Evolve improvements.

Skill System

Skills are reusable capability units defined via SKILL.md files, compatible with the skill format used by Claude Code / OpenClaw and other mainstream AI coding assistants:

skills/
  code-review/
    SKILL.md
  refactor/
    SKILL.md

SKILL.md format (YAML frontmatter + Markdown):

---
name: code-review
description: Code review skill
---
Please perform a comprehensive code review, focusing on: security, performance, maintainability...

Features:

  • Mainstream Format Compatible — Fully compatible with Claude Code's SKILL.md format; reuse existing skill ecosystems directly
  • Multi-directory Aggregation — Supports priority overlay of user directory > global directory; higher-priority skills override lower-priority ones
  • Auto Hot-reload — FNV-1a fingerprint-based caching; automatically reloads on file changes without restart
  • Multiple Execution Modes — inline (execute in current agent), fork (execute in independent sub-agent), fork_with_context (sub-agent with context)

Aspect Framework (AOP)

The aspect framework allows inserting cross-cutting concerns (logging, sessions, visualization, etc.) without modifying the agent's core logic.

10 Aspect Interfaces

Aspect Interception Point
AgentStartAspect Agent startup
AgentBeforeAspect Before execution (can modify input)
AgentAroundAspect Around execution (can replace entire execution)
AgentAfterAspect After execution (can modify output)
AgentCompletedAspect Agent completion
MessageBeforeAspect Before LLM call (can modify messages)
MessageAfterAspect After LLM call
StreamChunkAspect Streaming chunk
ToolCallBeforeAspect Before tool call (can modify call parameters)
ToolCallAfterAspect After tool call

Built-in Aspects

Aspect Order Description
SessionAspect 50 Session management (load history, save messages, auto-compress)
VizAspect 100 AG-UI visualization event push
LoggingAspect 200 Execution logging

Register Custom Aspects

import "github.com/rulego/rulego-components-ai/aspect"

// Register a global aspect
aspect.RegisterAspect("my_aspect", &MyAspect{})

Session Management

import agentsession "github.com/rulego/rulego-components-ai/session"

// Create an in-memory session manager
storage := agentsession.NewMemoryStorage()
manager := agentsession.NewManager(storage, &agentsession.SessionConfig{
    MaxMessages:   100,
    MaxTokenCount: 100000,
    Pruning: agentsession.PruningConfig{
        Enabled:         true,
        KeepRecentCount: 10,
    },
})

// Auto-integrate into agent via SessionAspect
sessionAspect := builtin.NewSessionAspect(manager, builtin.SessionAspectConfig{})
aspect.RegisterAspect("session", sessionAspect)

Session Scopes

Scope Key Format Description
main agent:{id} Default; one session per agent
per_peer agent:{id}:peer:{userId} Isolated per conversation peer
per_channel_peer agent:{id}:channel:{ch}:peer:{userId} Isolated per channel + peer
thread agent:{id}:thread:{threadId} Isolated per thread
task agent:{id}:task:{taskId} Isolated per task

Related Documentation

License

Apache License 2.0

Reviews (0)

No results found