跳到正文

Simple AGI

作者:Rayman_GC

Emergent Artificial Intelligence for Minecraft

收藏

介绍

中文介绍正在准备中,下面暂时显示原文。

# simple-AGI
## Emergent Artificial Intelligence for Minecraft

> **Minecraft Forge 1.20.1 · Java 17 · Mod ID: `simple_agi`**

[🇺🇦 Українська версія](README.md)

—

**simple-AGI** is a Minecraft Forge mod that replaces the vanilla mob AI with a full cognitive pipeline.

“`
Body → Hormones → Emotions → Memory → MindContext → Decision → Action
“`

Each AGI entity (mob) owns a brain with **emotions, memory, hormones, social bonds, a spatial belief map, instincts, and genetically inherited species traits**. The system is fundamentally **stochastic** — two identical mobs in the same conditions will make different choices, producing an emergent living ecosystem.

—

## Table of Contents

– [Features](#features)
– [How It Works](#how-it-works)
– [Architecture](#architecture)
– [Commands](#commands)
– [Technical Details](#technical-details)
– [Requirements](#requirements)
– [Installation](#installation)
– [Quick Start](#quick-start)

—

## Features

### 1. Cognitive Stack (7 Layers)

| Layer | Component | Description |
|——-|———–|————-|
| **Layer 1** | Body / Perception | Health, movement, attack, environment scanning |
| **Layer 2** | Hormones / Emotions | 7 hormones → 8 emotions (fear, grief, loneliness, confidence, etc.) |
| **Layer 3** | Memory | Episodic memory with emotional weighting, persistent disk storage |
| **Layer 4** | Social | Signal field, emotional contagion, bonds, species disposition |
| **Layer 5** | Cognition | MindContext (50+ fields), DecisionEngine (16 rule blocks), role system |
| **Layer 6** | Decision | ActionField with softmax + stochastic sampling (NOT argmax!) |
| **Layer 7** | Execution | MobAgentBody — move, attack, flee, stop |

### 2. Hormones & Emotions

**7 Hormones:**
– `adrenaline` — rapid threat spike
– `cortisol` — chronic stress
– `dopamine` — reward for exploration
– `serotonin` — environment stability
– `oxytocin` — social proximity
– `hormoneAggression` — combat readiness
– `melatonin` — night-cycle rhythm

**8 Emotions:**
– `fear`, `confidence`, `grief`, `loneliness`, `comfort`, `peacefulness`, `boredom`, `stress`

### 3. Memory & Spatial Belief Map

– **MemorySystem** — weighted episodic memory (max 100 events). Importance = base × (1 + fear + adrenaline × 0.5). Events decay over time.
– **WorldModel** — spatial belief map (8-block grid). Each zone has `danger`, `food`, `safety`, `familiarity` with time-based decay.
– **PersistentMemoryManager** — disk persistence in JSON: `cognitive_data/entity/<uuid>.json`, `species/<type>.json`, `world/danger_zone.json`.

### 4. Social System

– **LocalSignalField** — spatial signal field (`DANGER`, `FOOD`, `ATTACK`, `HELP`, `SAFE`, `RETREAT`). Signals decay over ~143 ticks.
– **SocialExchangeSystem** — emotional contagion between mobs (fear-comfort transmission), bond reinforcement.
– **AttachmentSystem** — home + bonds to allies. Grief at ally death scales with bond strength.
– **ResourceExchangeSystem** — item trading between mobs (`OFFER_ITEM`, `ACCEPT_ITEM`).

### 5. Species Knowledge Inheritance

– **SpeciesKnowledgeStore** — cross-generation trait inheritance:
  – `caution`, `aggression`, `curiosity`, `playerHostility`
  – `generations` — generation counter
– On mob death, traits pass to the next generation with 70% weight.

### 6. Emergent Language

– **Phoneme** — 16-symbol alphabet (4 energy groups).
– **Utterance** — word (1–3 phonemes), unique int key for O(1) lookup.
– **LexiconEntry** — meaning vector (6 slots: DANGER, FOOD, SAFE, ATTACK, RETREAT, CONTACT).
– Language emerges spontaneously: a mob sees danger → makes a sound → a neighbor hears it during the threat → association reinforces → shared lexicon.
– Words with confidence `+0.55` are inherited across generations.

### 7. Build System

– **BuildPlanner** + **BuildExecutor** — planning and construction.
– Bot can build from templates: `shelter`, `small_house`, `farm`, `wall`, `pillar`.
– Features: inventory check, stall detection, retry logic.

### 8. Group Capability Assessment

– Scans `20-block` radius to identify allies and threats.
– States: `DOMINANT` (ratio > 1.4), `CONTESTED` (0.5–1.4), `VULNERABLE` (< 0.5), `ALONE`.
– Influences FLEE/ATTACK in the DecisionEngine.

### 9. Role System

Automatically assigned by context:
– `LEADER` — dominant group → broadcasts ATTACK signals
– `SCOUT` — high dopamine → boosts EXPLORE
– `ATTACKER` — aggressive state → boosts ATTACK
– `DEFENDER` — protects allies
– `FOLLOWER` — follows leader

### 10. Trauma Propagation

When a mob dies within a 24-block radius:
– Witnesses gain `fear` + `grief` (attenuated by distance).
– Allies receive `allyBonus` + `bondGrief` (scaled by bond strength).
– `RevengeMotive` activates.
– Adrenaline spike, emotional memory log, and `DEATH` WorldModel event trigger.

—

## How It Works

### Full Brain Cycle (per server tick)

“`
SERVER TICK (every N ticks)
│
├─ AttachedMobController → loops over all AGENTS (up to 150)
│   │
│   ├─ 1. BODY:       Homeostasis.quickTick(), FeelingsSystem.tick(), RevengeMotive.tick()
│   ├─ 2. SOCIAL:      SocialExchange (every 40 ticks)
│   ├─ 3. THREAT:      findNearestThreat() → memory → DANGER/HELP signal → WorldModel
│   ├─ 3b. WORLDMODEL: markVisited(); tick() (every 20 ticks)
│   ├─ 4. TIME:        dayTime, isNight, isSunset, isSunrise
│   ├─ 5. GROUP:       GroupCapabilityModel (every 30 ticks)
│   ├─ 6. REVENGE:     RevengeMotive.getKillerEntity()
│   ├─ 7. SIGNALS:     LocalSignalField.senseIntensity ×6 types
│   ├─ 7a. FOOD:       scanNearestFood (every 25 ticks)
│   ├─ 7b. ZONES:      findSafeZone / findFoodZone (every 40 ticks)
│   ├─ 8. MindContext: full snapshot (50+ fields)
│   ├─ 9. DecisionEngine: 16 rule blocks → ActionField
│   ├─ 10. ProfileBias: species-specific instincts
│   ├─ 11. RoleSystem: role-based field shift
│   ├─ softmaxNormalize() → sample() → ActionIntent
│   ├─ 12. executeForMob(): MobAgentBody executes action
│   ├─ 13. MicroBehavior (if IDLE/EXPLORE)
│   └─ 14. MemoryDecay: decayEntityRecords() + decayImportance()
“`

### DecisionEngine (16 Rule Blocks)

| Block | Description | Key Factors |
|——-|————-|————-|
| Block 1 | **FLEE** | fear × 0.45, cortisol × 0.20, critical health < 25% |
| Block 2 | **ATTACK** | aggressionTrait × 0.30, hormoneAggression × 0.35, adrenaline × 0.20 |
| Block 3 | **EXPLORE** | curiosityTrait × 0.30, dopamine × 0.25, boredom × 0.25 |
| Block 4 | **IDLE** | peacefulness × 0.30, grief × 0.45 (paralysis) |
| Block 5 | **EAT / MOVE_TO_FOOD** | hungerRatio × 0.60, nearestFood bonus |
| Block 6 | **Cave penalty** | isInCave + dark → FLEE↑, IDLE↑ for non-aggressors |
| Block 7 | **Semantic food** | semanticFoodScore > 0.1 → EXPLORE↑ |
| Block 8-11 | **Signal blocks** | sigDanger, sigFood, sigAttack, sigHelp, sigSafe, sigRetreat |
| Block 12 | **Home pull** | homesickness > 0.3 → MOVE_TO(home) |
| Block 13 | **Temporal** | isNight + avoidsSun → IDLE↑, FLEE↑ |
| Block 14 | **Revenge** | revengeMotive > 0.4 → ATTACK(revengeTarget) |
| Block 15 | **GroupCapability** | DOMINANT → ATTACK↑; VULNERABLE → FLEE↑ |
| Block 16 | **WorldModel** | zoneDanger > 0.35 → FLEE↑; familiarity < 0.05 → EXPLORE↑ |

### Stochasticity

`ActionField.sample()` uses **softmax + random sampling** instead of argmax. This means **no mob is predictable** — the same mob in the same conditions may choose differently, following a flexible probability distribution.

—

## Architecture

### Project Structure

“`
src/main/java/com/rayman/
├── action/
│   ├── ActionExecutor.java         — Action execution (move, attack, flee, eat, explore)
│   ├── ActionField.java            — Probability weight field (softmax + sample)
│   └── ActionIntent.java           — Action intent (with target)
├── ai/
│   ├── AttachedMobController.java  ← CENTRAL ORCHESTRATOR
│   ├── AgiGoal.java                — Minecraft Goal API wrapper
│   └── AIController.java           — BotEntity controller
├── body/
│   ├── BotEntity.java              — Dedicated AI player-like entity
│   ├── MobAgentBody.java           — Move/attack/stop for any Mob
│   ├── AgentBody.java              — Base body interface
│   ├── InventorySystem.java        — Inventory management
│   └── core/
│       ├── Homeostasis.java        — Body state aggregator
│       ├── HormoneSystem.java      — 7-hormone system
│       ├── FeelingsSystem.java     — 8-emotion system
│       ├── InstinctSystem.java     — Basic instincts
│       ├── ReflexSystem.java       — Reflexes
│       ├── NervousSystem.java      — Nervous system
│       ├── FatigueSystem.java      — Fatigue
│       ├── PainSystem.java         — Pain
│       └── TemperatureSystem.java  — Temperature
├── core/
│   ├── MindContext.java            ← COGNITIVE STATE SNAPSHOT (50+ fields)
│   ├── DecisionEngine.java         ← 16 RULE BLOCKS
│   ├── ActionScheduler.java        — Action scheduler
│   ├── AttentionSystem.java        — Attention system
│   ├── GoalSystem.java             — Goals
│   ├── MotivationSystem.java       — Motivation
│   ├── PredictionSystem.java       — Prediction
│   ├── FailureModel.java           — Failure model
│   ├── StabilityGovernor.java      — Behavior stability
│   ├── SkillSystem.java            — Skills
│   ├── GroupCapabilityModel.java   — Force balance assessment
│   ├── RevengeMotive.java          — Revenge motive
│   ├── RoleSystem.java             — Role system
│   ├── CognitiveLayer.java         — Cognitive layer interface
│   └── MicroBehaviorSystem.java    — Small animations
├── memory/
│   ├── MemorySystem.java           — Episodic memory
│   └── PersistentMemoryManager.java — Persistent JSON storage
├── perception/
│   ├── PerceptionSystem.java       — Perception system
│   ├── AttentionFocus.java         — Attention focus (central/peripheral)
│   ├── VisualMemory.java           — Visual memory
│   ├── VisibilityResolver.java     — Visibility resolution
│   ├── DynamicVisibility.java      — Dynamic visibility
│   └── PerceptionResult.java       — Perception result
├── personality/
│   ├── Personality.java            — Personality
│   ├── FeelingsSystem.java         — Emotional system
│   └── SelfModel.java              — Self-model
├── social/
│   ├── LocalSignalField.java       — Spatial signal field
│   ├── SocialExchangeSystem.java   — Emotional exchange
│   ├── AttachmentSystem.java       — Bonds and home
│   ├── SocialMemory.java           — Disposition toward entities
│   ├── SpeciesKnowledgeStore.java  — Cross-generation memory
│   ├── SpeciesMind.java            — Inherited traits
│   ├── MobBehaviorProfile.java     — Species behavior profile
│   ├── CognitiveTier.java          — Cognitive tier
│   └── ResourceExchangeSystem.java — Item exchange
├── language/
│   ├── LanguageSystem.java         — Language processor
│   ├── Phoneme.java                — 16-symbol alphabet
│   ├── Utterance.java              — Word (1–3 phonemes)
│   ├── LexiconEntry.java           — Lexicon entry (meaning vector)
│   ├── SpeciesLexicon.java         — Species lexicon
│   ├── Ukrainian*                  — Ukrainian language extensions
│   └── OntologicalRoot.java        — Ontological root
├── build/
│   ├── BuildPlanner.java           — Build planning
│   ├── BuildExecutor.java          — Build execution
│   ├── BuildValidator.java         — Plan validation
│   └── BuildProgress.java          — Progress tracking
├── structure/
│   ├── StructureTemplate.java      — Building template
│   └── TemplateLibrary.java        — Template library
├── world/
│   ├── WorldModel.java             — Spatial belief map
│   └── WorldState.java             — World state
├── SimpleAgi.java                ← Main mod class
├── Config.java                   Configuration
└── ARCHITECTURE.md               Full architectural documentation
“`

—

## Commands

| Command | Description |
|———|————-|
| `/gamerule globalCognition true/false` | Auto-attach AGI to all new mobs |
| `/simpleagi spawn` | Create BotEntity |
| `/simpleagi kill` | Remove BotEntity |
| `/simpleagi attach` | Attach AGI to the mob you are looking at |
| `/simpleagi attach_type <type> [radius]` | Attach AGI to all mobs of a given type |
| `/simpleagi detach` | Detach AGI from the mob you are looking at |
| `/simpleagi detach_all` | Detach all agents |
| `/simpleagi agents` | Show number of active agents |
| `/simpleagi build <template>` | Start building (shelter, small_house, farm, wall, pillar) |
| `/simpleagi build_stop` | Stop building |

### Configuration (`config/simple_agi-common.toml`):
“`toml
aiTickInterval = 5   # AI tick interval (server ticks)
maxAgents = 150    # Maximum active AGI mobs (1–1000)
“`

—

## Technical Details

### Performance & Optimization

– **LOD (Level of Detail):**
  – `0–32 blocks` → full AI
  – `32–64 blocks` → half rate (skip 1/2)
  – `>64 blocks` → quarter rate (skip 3/4)
– **Staggering:** Each mob has a unique `phase = gameTime + mob.getId()`, spreading operations across time.
– **Chunk boundary guard:** Skips mobs in unloaded chunks.
– **ConcurrentHashMap:** All static maps use `ConcurrentHashMap` for thread safety.

### Cognitive Tiers

| Tier | lvl | maxPhon | lexCap | shareWds | memCap | wmRes | canTrade |
|——|—–|———|——–|———-|——–|——-|———-|
| PRIMITIVE   | 1 | 0 |  0 |  0 |  20 | 32 blocks | false |
| SIMPLE      | 2 | 1 | 12 |  0 |  40 | 16 blocks | false |
| SOCIAL      | 3 | 2 | 24 |  4 |  60 | 8 blocks  | true  |
| INTELLIGENT | 4 | 3 | 48 |  8 |  80 | 6 blocks  | true  |
| SAPIENT     | 5 | 3 | 96 | 16 | 200 | 4 blocks  | true  |

### Time Characteristics

| Operation | Interval | Frequency |
|———–|———-|———–|
| Body tick | every AI tick | ~4/sec |
| Threat scan | every AI tick | ~4/sec |
| WorldModel.observe | every AI tick | ~4/sec |
| Social exchange | 40 game-ticks | ~0.5/sec |
| Food item scan | 25 game-ticks | ~0.8/sec |
| GroupCapabilityModel | 30 game-ticks | ~0.67/sec |
| WorldModel tick (decay) | 20 game-ticks | ~1/sec |
| DANGER memory log | 20 game-ticks | ~1/sec |
| Memory auto-flush (DANGER) | 200 mem-ticks | ~1 per 10 sec |
| Memory auto-flush (DEATH) | immediate | — |

—

## Requirements

– **Minecraft:** 1.20.1
– **Forge:** e.g., 47.x
– **Java:** 17+
– **Gradle:** 8.8+

## Installation

1. Clone the repository.
2. Open in your IDE (IntelliJ IDEA / Eclipse / VS Code).
3. Run `./gradlew build` (or `gradlew.bat build` on Windows).
4. Find the `.jar` in `build/libs/simple_agi-<version>.jar`.
5. Place the JAR in your Minecraft profile’s `mods/` folder.
6. Launch the game with Forge.

## Quick Start

1. Create a world.
2. Enable global cognition: `/gamerule globalCognition true` (or manually attach AGI: look at a mob and run `/simpleagi attach`).
3. All mobs now have their own brains, emotions, memories, and even language!
4. Use `/simpleagi agents` to track the number of active agents.
5. To build: `/simpleagi build shelter`.

—

## License

All rights reserved, author: bruhasub

—

> **Note:** For full architectural documentation, see [ARCHITECTURE.md](ARCHITECTURE.md) (includes ASCII diagrams, impact matrices, detailed component interaction schematics, and a complete description of every cognitive layer).

UA:

# simple-AGI — Emergent Artificial Intelligence for Minecraft

> **Minecraft Forge 1.20.1 · Java 17 · Mod ID: `simple_agi`**

**simple-AGI** замінює стандартний ІІ мобів Minecraft повноцінним когнітивним пайплайном:

“`
Тіло → Гормони → Емоції → Пам’ять → MindContext → Рішення → Дія
“`

Кожен AGI-кієкт (mob) має власний мозок із емоціями, пам’яттю, гормонами, соціальними зв’язками, просторовою картой переконань, інстинктами та генетично успадкованими рисами виду. Система повністю стохастична — два однакові моби в однакових умовах зроблять різні вибори, створюючи ефект живої екосистеми.

—

## Зміст

– [Функціонал](#функціонал)
– [Механізми роботи](#механізми-роботи)
– [Архітектура](#архітектура)
– [Команди](#команди)
– [Технічні деталі](#технічні-деталі)
– [Вимоги](#вимоги)
– [Встановлення](#встановлення)
– [Швидкий старт](#швидкий-старт)

—

## Функціонал

### 1. Когнітивний стек мобів (7 шарів)

| Шар | Компонент | Опис |
|—–|———–|——|
| **Шар 1** | Тіло / Сприйняття | Здоров’я, рух, атака, сканування оточення |
| **Шар 2** | Гормони / Емоції | 7 гормонів → 8 емоцій (страх, горе, самотність, впевненість тощо) |
| **Шар 3** | Пам’ять | Епізодична пам’ять із емоційним вагуванням, постійне збереження на диск |
| **Шар 4** | Соціум | Сигнальне поле, обмін емоціями, бонди, міжвидова диспозиція |
| **Шар 5** | Когніція | MindContext (50+ полів), DecisionEngine (16 блоків правил), рольова система |
| **Шар 6** | Рішення | ActionField із softmax + стохастичний sample (NE argmax!) |
| **Шар 7** | Виконання | MobAgentBody — рух, атака, втеча, зупинка |

### 2. Емоції та гормони

**7 гормонів:**
– `adrenaline` — швидкий сплеск при загрозі
– `cortisol` — хронічний стрес
– `dopamine` — винагорода за дослідження
– `serotonin` — стабільність середовища
– `oxytocin` — соціальна близькість
– `hormoneAggression` — бойова готовність
– `melatonin` — нічний цикл

**8 емоцій:**
– `fear` (страх), `confidence` (впевненість), `grief` (горе),
– `loneliness` (самотність), `comfort` (комфорт), `peacefulness` (благість),
– `boredom` (нудьга), `stress` (стрес)

### 3. Пам’ять та просторова карта

– **MemorySystem** — епізодична пам’ять із вагованою важливістю (max 100 подій). Важливість = base × (1 + fear + adrenaline × 0.5). Події затухають із часом.
– **WorldModel** — просторова карта переконань (`8-блоковая сітка`). Кожна зона має: `danger`, `food`, `safety`, `familiarity` — усі з часовим затуханням.
– **PersistentMemoryManager** — збереження на диск у JSON: `cognitive_data/entity/<uuid>.json`, `species/<type>.json`, `world/danger_zone.json`.

### 4. Соціальна система

– **LocalSignalField** — просторове сигнальне поле (`DANGER`, `FOOD`, `ATTACK`, `HELP`, `SAFE`, `RETREAT`). Сигнали затухають (~143 тіків).
– **SocialExchangeSystem** — передача емоцій між мобами (зараження страхом/теплом), посилення бондів.
– **AttachmentSystem** — дім + бонди до союзників. Горе при смерті союзника ураховує силу бонду.
– **ResourceExchangeSystem** — обмін предметами між мобами (`OFFER_ITEM`, `ACCEPT_ITEM`).

### 5. Міжпоколінна пам’ять виду

– **SpeciesKnowledgeStore** — успадковує риси між поколіннями:
  – `caution` (обережність), `aggression` (агресивність), `curiosity` (цікавість)
  – `playerHostility` (ворожість до гравців)
  – `generations` — лічильник поколінь
– При смерті моба риси із 70% вагою передаються наступному поколінню.

### 6. Виникаюча мова (Emergent Language)

– **Phoneme** — 16-символьний алфавіт (4 групи енергії).
– **Utterance** — слово (1–3 фонеми), унікальний int-ключ для O(1) lookup.
– **LexiconEntry** — вектор значень (6 слотів: DANGER, FOOD, SAFE, ATTACK, RETREAT, CONTACT).
– Мова виникає спонтанно: моб бачить загрозу → видає звук → сусід чує в той самий тік під час загрози → асоціація закріплюється → загальний лексикон.
– Слова, набрані впевненість `>= 0.55`, успадковуються між поколіннями.

### 7. Будівельна система (Build System)

– **BuildPlanner** + **BuildExecutor** — планування та виконання будівництва.
– Бот може будувати з шаблонів: `shelter`, `small_house`, `farm`, `wall`, `pillar`.
– З перевірками: перевірка інвентаря, контролі залипання, повторні спроби.

### 8. Оцінка балансу сил (GroupCapabilityModel)

– Сканування `20 блоків` для визначення союзників і загроз.
– Стани: `DOMINANT` (ratio > 1.4), `CONTESTED` (0.5–1.4), `VULNERABLE` (< 0.5), `ALONE`.
– Впливає на FLEE/ATTACK у DecisionEngine.

### 9. Рольова система (RoleSystem)

Автоматично призначається за контекстом:
– `LEADER` — домінантна група → broadcasts ATTACK
– `SCOUT` — високий dopamine → EXPLORE ↑
– `ATTACKER` — агресивний стан → ATTACK ↑
– `DEFENDER` — захист союзників
– `FOLLOWER` — слідування за лідером

### 10. Травматичне поширення (Trauma Propagation)

При смерті моба в радіусі 24 блоків:
– Свідки отримують fear + grief (з послабленням за відстань).
– Союзники отримують allyBonus + bondGrief (залежно від бонду).
– RevengeMotive активується.
– Adrenaline + emotional memory log + WorldModel event `DEATH`.

—

## Механізми роботи

### Повний цикл роботи мозку (за серверний тік)

“`
SERVER TICK (кожні N тіків)
│
├─ AttachedMobController → цикл по всіх AGENTS (до 150)
│   │
│   ├─ 1. ТІЛО:     Homeostasis.quickTick(), FeelingsSystem.tick(), RevengeMotive.tick()
│   ├─ 2. СОЦІУМ:   SocialExchange (кожні 40 тіків)
│   ├─ 3. ЗАГРОЗА:   findNearestThreat() → пам’ять → DANGER/HELP сигнал → WorldModel
│   ├─ 3b. WORLDMODEL: markVisited(); tick() (кожні 20 тіків)
│   ├─ 4. ЧАС:       dayTime, isNight, isSunset, isSunrise
│   ├─ 5. ГРУПА:     GroupCapabilityModel (кожні 30 тіків)
│   ├─ 6. ПОМСТА:    RevengeMotive.getKillerEntity()
│   ├─ 7. СИГНАЛИ:   LocalSignalField.senseIntensity ×6 типів
│   ├─ 7a. ПІШУГА:   scanNearestFood (кожні 25 тіків)
│   ├─ 7b. ЗОНИ:     findSafeZone / findFoodZone (кожні 40 тіків)
│   ├─ 8. MindContext:  повний знімок (50+ полів)
│   ├─ 9. DecisionEngine: 16 блоків правил → ActionField
│   ├─ 10. ProfileBias: вид-специфічні інстинкти
│   ├─ 11. RoleSystem: роль → окремий зсув поля
│   ├─ softmaxNormalize() → sample() → ActionIntent
│   ├─ 12. executeForMob(): MobAgentBody виконує дію
│   ├─ 13. MicroBehavior (якщо IDLE/EXPLORE)
│   └─ 14. MemoryDecay: decayEntityRecords() + decayImportance()
“`

### DecisionEngine (16 блоків правил)

| Блок | Опис | Ключові фактори |
|——|——|—————–|
| Блок 1 | **FLEE** | fear × 0.45, cortisol × 0.20, critical health < 25% |
| Блок 2 | **ATTACK** | aggressionTrait × 0.30, hormoneAggression × 0.35, adrenaline × 0.20 |
| Блок 3 | **EXPLORE** | curiosityTrait × 0.30, dopamine × 0.25, boredom × 0.25 |
| Блок 4 | **IDLE** | peacefulness × 0.30, grief × 0.45 (паралізація) |
| Блок 5 | **EAT / MOVE_TO_FOOD** | hungerRatio × 0.60, nearestFood bonus |
| Блок 6 | **Cave penalty** | isInCave + dark → FLEE↑, IDLE↑ у non-aggressor |
| Блок 7 | **Semantic food** | semanticFoodScore > 0.1 → EXPLORE↑ |
| Блок 8-11 | **Сигнальні блоки** | sigDanger, sigFood, sigAttack, sigHelp, sigSafe, sigRetreat |
| Блок 12 | **Home pull** | homesickness > 0.3 → MOVE_TO(home) |
| Блок 13 | **Temporal** | isNight + avoidsSun → IDLE↑, FLEE↑ |
| Блок 14 | **Revenge** | revengeMotive > 0.4 → ATTACK(revengeTarget) |
| Блок 15 | **GroupCapability** | DOMINANT → ATTACK↑; VULNERABLE → FLEE↑ |
| Блок 16 | **WorldModel Phase 9** | zoneDanger > 0.35 → FLEE↑; familiarity < 0.05 → EXPLORE↑ |

### Стохастичність

`ActionField.sample()` використовує softmax + випадковий sample замість argmax. Це означає, що **жоден моб не є передбачуваним** — один і той самий моб у тих самих умовах може обрати різні дії, відповідно до пружної розподілу ймовірностей.

—

## Архітектура

### Структура проєкту

“`
src/main/java/com/rayman/
├── action/
│   ├── ActionExecutor.java      — Виконавець дій (рух, атака, втеча, їжа, дослідження)
│   ├── ActionField.java         — Поле ваг імовірностей (softmax + sample)
│   └── ActionIntent.java        — Інтент дії (з ціллю)
├── ai/
│   ├── AttachedMobController.java  ← ЦЕНТРАЛЬНИЙ ОРКЕСТРАТОР
│   ├── AgiGoal.java              — Minecraft Goal API wrapper
│   └── AIController.java         — Контролер BotEntity
├── body/
│   ├── BotEntity.java            — Спеціальна сутність AI-бота
│   ├── MobAgentBody.java         — Рух/атака/стоп для будь-якого Mob
│   ├── AgentBody.java            — Базовий інтерфейс для тіл
│   ├── InventorySystem.java      — Управління інвентарем
│   └── core/
│       ├── Homeostasis.java      — Агрегатор тілесного стану
│       ├── HormoneSystem.java    — 7-гормональна система
│       ├── FeelingsSystem.java   — 8-емоційна система
│       ├── InstinctSystem.java   — Базові інстинкти
│       ├── ReflexSystem.java     — Рефлекси
│       ├── NervousSystem.java    — Нервова система
│       ├── FatigueSystem.java    — Втома
│       ├── PainSystem.java       — Біль
│       └── TemperatureSystem.java — Температура
├── core/
│   ├── MindContext.java          ← ЗНІМОК КОГНІТИВНОГО СТАНУ (50+ полів)
│   ├── DecisionEngine.java       ← 16 БЛОКІВ ПРАВИЛ
│   ├── ActionScheduler.java      — Планувальник дій
│   ├── AttentionSystem.java      — Система уваги
│   ├── GoalSystem.java           — Цілі
│   ├── MotivationSystem.java     — Мотивація
│   ├── PredictionSystem.java     — Прогнозування
│   ├── FailureModel.java         — Модель невдач
│   ├── StabilityGovernor.java    — Стабільність поведінки
│   ├── SkillSystem.java          — Навички
│   ├── GroupCapabilityModel.java — Оцінка балансу сил
│   ├── RevengeMotive.java        — Мотив помсти
│   ├── RoleSystem.java           — Рольова система
│   ├── CognitiveLayer.java       — Інтерфейс когнітивного шару
│   └── MicroBehaviorSystem.java  — Дрібні анімації
├── memory/
│   ├── MemorySystem.java           — Епізодична пам’ять
│   └── PersistentMemoryManager.java — Постійне збереження JSON
├── perception/
│   ├── PerceptionSystem.java       — Система сприйняття
│   ├── AttentionFocus.java         — Фокус уваги (central/peripheral)
│   ├── VisualMemory.java           — Візуальна пам’ять
│   ├── VisibilityResolver.java     — Розв’язання видимості
│   ├── DynamicVisibility.java      — Динамічна видимість
│   └── PerceptionResult.java       — Результат сприйняття
├── personality/
│   ├── Personality.java            — Особистість
│   ├── FeelingsSystem.java         — Емоційна система
│   └── SelfModel.java              — Модель самого себе
├── social/
│   ├── LocalSignalField.java       — Просторове сигнальне поле
│   ├── SocialExchangeSystem.java   — Обмін емоціями
│   ├── AttachmentSystem.java       — Бонди та дім
│   ├── SocialMemory.java           — Диспозиція до істот
│   ├── SpeciesKnowledgeStore.java  — Міжпоколінна пам’ять
│   ├── SpeciesMind.java            — Успадковані риси
│   ├── MobBehaviorProfile.java     — Профіль поведінки виду
│   ├── CognitiveTier.java          — Когнітивний рівень
│   └── ResourceExchangeSystem.java — Обмін предметами
├── language/
│   ├── LanguageSystem.java         — Мовний процесор
│   ├── Phoneme.java                — 16-символьний алфавіт
│   ├── Utterance.java              — Слово (1–3 фонеми)
│   ├── LexiconEntry.java           — Вхід у лексикон (вектор значень)
│   ├── SpeciesLexicon.java         — Лексикон виду
│   ├── Ukrainian*                  — Розширення для української мови
│   └── OntologicalRoot.java        — Онтологічний корінь
├── build/
│   ├── BuildPlanner.java           — Планування будівництва
│   ├── BuildExecutor.java          — Виконання будівництва
│   ├── BuildValidator.java         — Валідація плану
│   └── BuildProgress.java          — Відстеження прогресу
├── structure/
│   ├── StructureTemplate.java      — Шаблон будівлі
│   └── TemplateLibrary.java        — Бібліотека шаблонів
├── world/
│   ├── WorldModel.java             — Просторова карта переконань
│   └── WorldState.java             — Держава світу
├── SimpleAgi.java                ← Головний клас мода
├── Config.java                   Конфігурація
└── ARCHITECTURE.md               Повна архітектурна документація
“`

—

## Команди

| Команда | Опис |
|———|——|
| `/gamerule globalCognition true/false` | Авто-прикріплення AGI до всіх нових мобів |
| `/simpleagi spawn` | Створити BotEntity |
| `/simpleagi kill` | Видалити BotEntity |
| `/simpleagi attach` | Прикріпити AGI до моба в прицілі |
| `/simpleagi attach_type <type> [radius]` | Прикріпити AGI до всіх мобів типу |
| `/simpleagi detach` | Відкріпити AGI від моба в прицілі |
| `/simpleagi detach_all` | Відкріпити всі агенти |
| `/simpleagi agents` | Кількість активних агентів |
| `/simpleagi build <template>` | Розпочати будівництво (shelter, small_house, farm, wall, pillar) |
| `/simpleagi build_stop` | Зупинити будівництво |

### Конфігурація (config/simple_agi-common.toml):
“`toml
aiTickInterval = 5   # Інтервал AI-тіків (сервер-тіків)
maxAgents = 150    # Максимум активних AGI-мобів (1–1000)
“`

—

## Технічні деталі

### Performance & Optimization

– **LOD (Level of Detail):**
  – `0–32 блоків` → повна AI
  – `32–64 блоків` → половинна частота (skip 1/2)
  – `>64 блоків` → чверть частота (skip 3/4)
– **Staggering:** Кожен моб має унікальний `phase = gameTime + mob.getId()`, тому всі операції з різними інтервалами рознесені по часу.
– **Chunk boundary guard:** Пропуск мобів у进展情况ванних чанках.
– **ConcurrentHashMap:** Усі static мапи використовують `ConcurrentHashMap` для потокобезпечності.

### Когнітивні рівні (CognitiveTier)

| Tier | lvl | maxPhon | lexCap | shareWds | memCap | wmRes | canTrade |
|——|—–|———|——–|———-|——–|——-|———-|
| PRIMITIVE   | 1 | 0 |  0 |  0 |  20 | 32 блоки | false |
| SIMPLE      | 2 | 1 | 12 |  0 |  40 | 16 блоків| false |
| SOCIAL      | 3 | 2 | 24 |  4 |  60 | 8 блоків | true  |
| INTELLIGENT | 4 | 3 | 48 |  8 |  80 | 6 блоків | true  |
| SAPIENT     | 5 | 3 | 96 | 16 | 200 | 4 блоки  | true  |

—

## Вимоги

– **Minecraft:** 1.20.1
– **Forge:** наприклад, 47.x
– **Java:** 17+
– **Gradle:** 8.8+

## Встановлення

1. Склонуйте репозиторій.
2. Відкрийте у IDE (IntelliJ IDEA / Eclipse / VS Code).
3. Виконайте `./gradlew build` (або `gradlew.bat build` на Windows).
4. Отримайте `.jar` у `build/libs/simple_agi-<версія>.jar`.
5. Покладіть JAR у папку `mods/` вашого профілю Minecraft.
6. Запустіть гру з Forge.

## Швидкий старт

1. Створіть світ.
2. Увімкніть глобальне когнітивне підключення: `/gamerule globalCognition true` (або прикріпіть AGI вручну: дивіться на моба і виконайте `/simpleagi attach`).
3. Всі моби відте мають власний мозок, емоції, пам’ять і навіть мову!
4. Використайте `/simpleagi agents` щоб відстежувати кількість активних агентів.
5. Для будівництва: `/simpleagi build shelter`.

—

## Ліцензія

Всі права захищено, автор: bruhasub

—

> **Примітка:** Для повної архітектурної документації див. [ARCHITECTURE.md](ARCHITECTURE.md) (включає ASCII-схеми, матриці впливів, детальні схеми зв’язків між компонентами та повний опис кожного когнітивного шару).

常见问题

Simple AGI 支持哪些 Minecraft 版本?

Simple AGI 支持 Minecraft Java 版 1.20.1,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。

Simple AGI 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分

Rayman_GC 的其他作品

查看全部 →