Communication Silo Guide

View Source

The Communication Silo manages signaling and language evolution: signal repertoires, protocol evolution, coordination messages, and deception detection. Multi-agent systems need communication to coordinate, and evolved communication is more robust than hard-coded protocols.

Overview

Traditional multi-agent systems use fixed communication protocols. The Communication Silo enables evolved communication:

  • Signal invention - Agents create new signals with meanings
  • Signal adoption - Successful signals spread through population
  • Coordination - Agents coordinate through messaging
  • Honesty/deception - Honest signaling evolves under pressure
  • Dialect formation - Subgroups develop distinct languages

Communication Silo Architecture

Why Evolved Communication?

Hard-coded ProtocolsEvolved Communication
Fixed signal meaningsAdaptive semantics
No coordination discoveryProtocols emerge
Cannot handle noveltyAdapts to new situations
Opaque agent behaviorInterpretable signals
Single global languageDialect specialization

Architecture

The Communication Silo uses TWEANN controllers at three levels:

LevelTime ConstantControls
L2 StrategicMany runsOptimal communication policies for task classes
L1 TacticalPer generationAdapt parameters based on coordination success
L0 ReactivePer operationProcess signals, coordination, deception

Sensors (10 inputs)

The L0 controller receives 10 communication measurements:

SensorRangeDescription
vocabulary_size[0.0, 1.0]Distinct signals / max possible
vocabulary_growth_rate[-1.0, 1.0]Rate of new signal creation
message_complexity_mean[0.0, 1.0]Average message length/structure
communication_frequency[0.0, 1.0]Messages per interaction
signal_honesty_rate[0.0, 1.0]Proportion of honest signals
deception_detection_rate[0.0, 1.0]Success at detecting lies
coordination_success_rate[0.0, 1.0]Success of coordinated actions
language_stability[0.0, 1.0]How stable the language is
dialect_count[0.0, 1.0]Number of distinct dialects (normalized)
compression_ratio[0.0, 1.0]Information per signal unit

Actuators (8 outputs)

The controller adjusts 8 communication parameters:

ActuatorRangeDefaultEffect
vocabulary_growth_rate[0.0, 0.1]0.02Speed of vocabulary expansion
communication_cost[0.0, 0.2]0.05Energy cost per message
lying_penalty[0.0, 0.5]0.2Fitness penalty for detected lies
deception_detection_bonus[0.0, 0.3]0.1Bonus for catching liars
coordination_reward[0.0, 0.5]0.2Bonus for successful coordination
message_compression_pressure[0.0, 0.5]0.1Pressure to compress messages
dialect_isolation[0.0, 1.0]0.3How isolated dialects become
language_mutation_rate[0.0, 0.1]0.02Rate of signal meaning change

Communication Dynamics

Communication Dynamics

Signal Evolution

Signals evolve meanings through invention and adoption:

PhaseDescriptionExample
InventionAgent creates new signalAgent A invents "food here" signal
UseInventor uses signalA sends signal when finding food
AdoptionOthers learn meaningB, C observe and adopt
StabilizationSignal becomes standardWhole population uses signal

Vocabulary growth:

%% New signals created per generation
new_signals = vocabulary_growth_rate * population_size
%% Signal stabilizes when adopted by >50% of population

Coordination

Agents coordinate through message exchange:

StepActionResult
1Agent A proposes actionSends coordination message
2Agents B, C respondAgreement/disagreement signals
3Action executedAll participants act together
4Outcome recordedSuccess/failure tracked

Coordination reward:

reward = coordination_reward * success_rate * num_participants
%% Cost of coordination:
cost = communication_cost * messages_exchanged

Honesty and Deception

Evolutionary pressure shapes honest signaling:

BehaviorEffectSelection Pressure
Honest signalingBuilds trustCoordination benefits
DeceptionShort-term gainLying penalty if caught
DetectionCatches liarsDetection bonus reward

Equilibrium:

  • High lying penalty + high detection = honest population
  • Low lying penalty + low detection = deceptive population
  • Balance emerges from evolutionary dynamics

Dialect Formation

Subgroups develop distinct languages:

FactorEffect on Dialects
Geographic isolationGroups drift apart linguistically
Coalition structureCoalitions develop secret codes
SpecializationTask-specific vocabularies
Cultural diversityMultiple communication styles

Dialect isolation:

%% Shared vocabulary between dialects
shared_vocab = total_vocab * (1 - dialect_isolation)
%% Higher isolation = more distinct dialects

Integration with Other Silos

Communication Dataflow

Outgoing Signals

SignalTo SiloTrigger
coordination_capabilityTaskBased on coordination success rate
information_sharingCulturalBased on communication frequency
trust_networkSocialBased on signal honesty rate
language_complexityDevelopmentalBased on message complexity
trade_communicationEconomicCoordination * frequency

Incoming Signals

SignalFrom SiloEffect
social_network_densitySocialDense networks = more communication
coalition_structureSocialCoalitions develop shared signals
cultural_diversityCulturalDiversity creates dialects
population_structureDistributionIsolated groups form dialects
stress_levelEcologicalStress may increase honest signaling

Signal Examples

%% Receive social network density from social silo
handle_cast({cross_silo, social_network_density, Density}, State) ->
    %% Dense networks increase communication baseline
    NewFrequency = State#state.base_frequency * (1 + Density * 0.5),
    {noreply, State#state{communication_frequency = NewFrequency}};

%% Send coordination capability to task silo
send_cross_silo_signals(SensorValues, State) ->
    PopId = State#communication_state.population_id,
    CoordSuccess = maps:get(coordination_success_rate, SensorValues, 0.5),
    task_silo:receive_signal(PopId, coordination_capability, CoordSuccess).

Events Emitted

EventPayloadTrigger
signal_invented{inventor_id, signal, meaning}New signal created
signal_adopted{adopter_id, signal, source_id}Signal spread to another
message_sent{sender_id, receiver_ids, signal_count}Communication occurred
deception_detected{detector_id, liar_id, signal}Lie caught
coordination_succeeded{participant_ids, action, outcome}Team action worked
coordination_failed{participant_ids, action, reason}Team action failed
dialect_emerged{dialect_id, members, vocabulary}New dialect formed
language_merged{dialect_a, dialect_b, result}Dialects combined

Practical Examples

Example 1: Cooperative Task

Configure for high coordination and honest signaling:

Config = #{
    coordination_reward => 0.4,          % High coordination reward
    lying_penalty => 0.4,                % Strong penalty for deception
    deception_detection_bonus => 0.15,   % Reward catching liars
    communication_cost => 0.02,          % Low message cost
    dialect_isolation => 0.1             % Encourage shared language
}.

Expected outcomes:

  • High coordination success rate
  • Honest population
  • Unified vocabulary
  • Efficient team actions

Example 2: Competitive Task

Configure for strategic signaling in competition:

Config = #{
    coordination_reward => 0.1,          % Low coordination emphasis
    lying_penalty => 0.1,                % Allow strategic deception
    deception_detection_bonus => 0.2,    % Reward detecting enemy lies
    communication_cost => 0.05,          % Medium message cost
    dialect_isolation => 0.7             % Allow secret codes
}.

Expected outcomes:

  • Strategic deception emerges
  • Coalition-specific languages
  • Arms race between lying and detection
  • Information warfare dynamics

Example 3: Mixed Environment

Configure for adaptive communication:

Config = #{
    coordination_reward => 0.25,
    lying_penalty => 0.2,
    deception_detection_bonus => 0.1,
    communication_cost => 0.03,
    dialect_isolation => 0.4,
    vocabulary_growth_rate => 0.03,      % Moderate invention
    message_compression_pressure => 0.15 % Some efficiency pressure
}.

Expected outcomes:

  • Context-dependent behavior
  • Honest within groups, strategic across groups
  • Moderate dialect formation
  • Balanced vocabulary growth

Tuning Guide

Trade-offs

GoalSettings
High coordinationHigh coordination_reward, low communication_cost
Honest populationHigh lying_penalty, high detection_bonus
Rich vocabularyHigh vocabulary_growth_rate, low compression
Efficient signalsHigh compression_pressure, low growth rate
Unified languageLow dialect_isolation, high stability

Common Issues

ProblemLikely CauseFix
No coordinationLow rewardIncrease coordination_reward
Rampant lyingLow penaltyIncrease lying_penalty
Vocabulary explosionHigh growthDecrease vocabulary_growth_rate
No dialects formingLow isolationIncrease dialect_isolation
Too costly messagingHigh costDecrease communication_cost
DefaultConfig = #{
    vocabulary_growth_rate => 0.02,
    communication_cost => 0.05,
    lying_penalty => 0.2,
    deception_detection_bonus => 0.1,
    coordination_reward => 0.2,
    message_compression_pressure => 0.1,
    dialect_isolation => 0.3,
    language_mutation_rate => 0.02
}.

Control Loop

The Communication Silo executes per generation:

  1. Collect messages/signals - Gather communication data from agents
  2. Process signal inventions - Add new signals to registry
  3. Track coordination attempts - Record success/failure
  4. Record deception events - Track lying and detection
  5. Update dialect membership - Manage subgroup languages
  6. Apply actuator outputs - Set communication parameters
  7. Emit communication events - Notify listeners
  8. Send cross-silo signals - Update dependent silos

Configuration Reference

Full Configuration Record

-record(communication_config, {
    %% Enable/disable
    enabled = true :: boolean(),

    %% Vocabulary limits
    max_vocabulary_size = 1000 :: pos_integer(),
    max_message_complexity = 100 :: pos_integer(),

    %% Dialect limits
    max_dialects = 10 :: pos_integer(),

    %% Frequency tracking
    frequency_window_ms = 60000 :: pos_integer(),
    max_frequency = 100 :: pos_integer(),

    %% History limits
    history_limit = 1000 :: pos_integer(),

    %% L2 update interval
    l2_update_interval_ms = 30000 :: pos_integer()
}).

API Functions

%% Start the communication silo
communication_silo:start_link(Config)

%% Record a message
communication_silo:record_message(PopId, Message)

%% Record signal invention
communication_silo:record_signal_invention(PopId, Signal)

%% Record coordination attempt
communication_silo:record_coordination_attempt(PopId, Attempt)

%% Record deception event
communication_silo:record_deception_event(PopId, Event)

%% Get signal registry
Registry = communication_silo:get_signal_registry(PopId)

%% Get dialect info
Dialects = communication_silo:get_dialect_info(PopId)

%% Enable/disable silo
communication_silo:enable(PopId)
communication_silo:disable(PopId)

Biological Inspiration

The Communication Silo mirrors biological communication:

BiologyCommunication Silo
Animal signalsSignal repertoire
Honest signaling theoryLying penalty/detection
Language evolutionVocabulary growth
Dialects/accentsDialect formation
Cooperative communicationCoordination reward
Deceptive mimicryStrategic deception

Source Code Reference

Core implementation files:

FilePurpose
src/lc_silos/communication_silo.erlMain silo gen_server
src/lc_silos/communication_silo_sensors.erlL0 sensor implementation
src/lc_silos/communication_silo_actuators.erlL0 actuator implementation
src/lc_silos/communication_silo.hrlRecord definitions

References

  • PLAN_COMMUNICATION_SILO.md - Full specification
  • "The Evolution of Language" - Nowak & Krakauer
  • "Signals: Evolution, Learning, and Information" - Skyrms
  • "Modeling the Cultural Evolution of Language" - Steels

See Also