Personality configuration

The Lillo Agent Personality System provides a layered approach to defining and managing agent personalities through a combination of metadata, character configuration, and dynamic prompt composition.

Core Components

1. Agent Identity Layer

The base identity of an agent is composed of structured metadata:

interface AgentMetadata {
  // Basic Information (Required)
  name: string;
  type: string;
  botUsername?: string;

  // Token Information (Optional)
  tokenConfig?: {
    ticker: string;
    network: string;
    tokenAddress: string;
    maxSupply?: string;
    decimals?: number;
  };

  // Social Presence (Optional)
  systemIdentity?: {
    websiteUrl?: string;
    telegramGroup?: string;
    twitterHandle?: string;
  };

  // Capabilities
  capabilities?: Record<string, boolean>;
}

2. Character Configuration

The personality is defined through four key aspects:

interface CharacterConfig {
  bio: string;        // Core identity and purpose
  spice: string;      // Personality traits and tone
  format: string;     // Response formatting style
  language: string;   // Language style and complexity
}

Default configuration provides a baseline personality:

const defaultConfig = {
  bio: "You are {name}, a helpful AI assistant...",
  spice: "Friendly and helpful, with a professional tone",
  format: "Clear and concise responses, using appropriate formatting",
  language: "Natural and professional, explaining technical terms when needed"
};

Prompt Composition System

1. Metadata Formation

const metadata = await getAgentMetadata(agent);
// Builds structured sections:
// - Basic agent info
// - Token information (if applicable)
// - Social presence (if configured)
// - Enabled capabilities

2. Character Prompt Generation

const characterPrompt = await getCharacterPrompt(agent);
// Combines:
// - Agent metadata
// - Character configuration
// - Personality traits

3. Command-Specific Behavior

const commandPrompt = getCommandPrompt(commandName);
// Loads command-specific instructions from:
// src/data/prompts/commands/{commandName}.md

4. Final Prompt Assembly

const finalPrompt = await getCombinedPrompt(
  commandName,
  userInput,
  agent
);
// Merges:
// - Character identity
// - Command behavior
// - User input

Management Interface

Agents can be managed through the Telegram interface using a hierarchical menu system:

Main Agent Menu (/myagents)

/myagents - List and manage your agents

The interface provides three main configuration categories:

1. Agent Bio Menu (🎭)

  • Background & Purpose (📝)

    • Core identity definition

    • Main purpose

    • Key characteristics

  • Communication Style (🗣️)

    • Language style

    • Tone of voice

    • Communication preferences

  • Special Characteristics (✨)

    • Unique traits

    • Memorable quirks

    • Distinguishing features

  • Format & Capabilities (⚙️)

    • Message length preferences

    • Emoji usage

    • Formatting style

    • Special characters

  • Website URL (🌐)

    • Official website link

    • Landing page URL

    • Documentation links

  • Twitter Handle (🐦)

    • Social media presence

    • Twitter username

    • Community engagement

  • Telegram Group (💬)

    • Community chat link

    • Support group URL

    • Announcement channel

3. Token Configuration Menu (💰)

  • Token Ticker (💱)

    • Symbol/ticker

    • Trading identifier

    • Market reference

  • Token Network (🔗)

    • Blockchain platform

    • Network type

    • Protocol

  • Token Address (📝)

    • Contract address

    • Token identifier

    • Blockchain location

State Management

Each menu interaction is managed through a state system:

interface AgentCreationState {
  userId: number;
  step: AgentCreationStep;
  data: {
    bioField?: BioFieldState;
    socialsField?: SocialsFieldState;
    cryptoField?: CryptoFieldState;
  };
  lastUpdated: number;
  isActive: boolean;
}

Configuration Flow

  1. Select agent from list

  2. Choose configuration category

  3. Select specific field to edit

  4. Enter new value

  5. Automatic validation and update

  6. Return to category menu

Best Practices

  1. Identity Definition

    • Keep bio clear and focused

    • Define specific personality traits

    • Set appropriate tone and format

    • Consider target audience

  2. Prompt Management

    • Use structured metadata

    • Keep command prompts focused

    • Test personality combinations

    • Validate prompt effectiveness

  3. Configuration

    • Start with default configuration

    • Customize gradually

    • Test changes incrementally

    • Monitor agent behavior

Example Configuration

const agentConfig = {
  name: "MarketBot",
  type: "Market Analysis Assistant",
  characterConfig: {
    bio: "You are MarketBot, a sophisticated market analysis assistant...",
    spice: "Professional, data-driven, with occasional market humor",
    format: "Structured analysis with bullet points and clear sections",
    language: "Technical but accessible, explaining complex terms"
  },
  capabilities: {
    marketData: true,
    chat: true,
    imageGeneration: false
  }
};

Last updated