介绍
# 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 的其他作品
查看全部 →Admin instruments: Wave Defense
A versatile PvE and PvP engine featuring wave defense, customizable shops, and three competitive game modes for Minecraft
Admin instruments: Custom NPCs —Improved by admins for admins
A patched build of Custom NPCs for Minecraft 1.16.5 (Forge). The same mod you know, with the bugs fixed, a rebuilt editor, a dark theme, a much stronger quest system
评论
登录后评论和评分