Skip to content

Ceylon Architecture Approaches

1. BasePlayground Approach (Base Framework)

graph TB
    subgraph PlaygroundFramework[BasePlayground Framework]
        BC[Base Coordinator]
        WR[Worker Registry]
        MC[Message Coordinator]
        EC[Event Coordinator]
    end

    subgraph Workers[Worker Agents]
        W1[Worker 1]
        W2[Worker 2]
        W3[Worker 3]
    end

    subgraph Extensions[Custom Extensions]
        TM[Task Management]
        PM[Progress Monitor]
        GT[Goal Tracking]
    end

    BC --> |Manages| WR
    BC --> |Coordinates| MC
    BC --> |Handles| EC

    W1 & W2 & W3 --> |Register with| WR
    MC --> |Routes to| Workers
    Workers --> |Events to| EC

    Extensions --> |Builds on| PlaygroundFramework

    classDef framework fill:#e1f5fe,stroke:#01579b,stroke-width:2px;
    classDef workers fill:#f3e5f5,stroke:#4a148c,stroke-width:2px;
    classDef extensions fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px;

2. Direct Agent Approach

graph TB
    subgraph Agents[Independent Agents]
        A1[Agent 1]
        A2[Agent 2]
        A3[Agent 3]
        A4[Agent 4]
    end

    subgraph Communication[P2P Communication]
        MSG[Message Exchange]
        EP[Event Processing]
        H[Custom Handlers]
    end

    A1 <--> |Direct Messages| A2
    A2 <--> |Direct Messages| A3
    A3 <--> |Direct Messages| A4
    A1 <--> |Direct Messages| A4

    Agents --> MSG
    MSG --> EP
    EP --> H
    H --> Agents

Key Differences

BasePlayground Framework

  • Foundation Layer: Provides base coordination and communication infrastructure
  • Extensible Design: Can be extended with custom features like task management
  • Structured Communication: Centralized message and event coordination
  • Registration Management: Built-in worker registration and tracking

Direct Agent Approach

  • Pure P2P: Direct agent-to-agent communication
  • Flexible Architecture: No predefined structure
  • Custom Protocols: Define your own message formats and protocols
  • Independent Agents: Each agent operates autonomously

Implementation Examples

1. Task Management System using BasePlayground

class TaskPlayGround(BasePlayGround):
    def __init__(self):
        super().__init__()
        self.task_manager = TaskManager()  # Custom implementation
        self.progress_monitor = ProgressMonitor()  # Custom implementation

    async def assign_tasks(self, tasks):
        # Custom task distribution logic
        pass

2. Direct Agent System

class DirectAgent(BaseAgent):
    def __init__(self):
        super().__init__()
        self.message_handlers = {}  # Custom message handling
        self.state_manager = StateManager()  # Custom state management

    async def send_direct(self, target, message):
        # Direct P2P communication
        pass

When to Use Each

BasePlayground When:

  • Need structured agent coordination
  • Want to build on existing communication infrastructure
  • Planning to implement custom task/work management
  • Need centralized event handling

Direct Agents When:

  • Need pure P2P communication
  • Want maximum flexibility
  • Implementing custom protocols
  • Building specialized agent behaviors

Implementation Pattern Examples:

  1. Meeting Scheduling
  2. Auction Systems
  3. Task Processing
  4. Distributed Computing

Each example can be implemented using either approach, with the choice depending on specific requirements for structure vs flexibility.