Import verified AzerothAI snapshot from GitHub
Core tests / core (push) Successful in 9m57s
Full verification / application (push) Failing after 5m16s
Full verification / local-brain (push) Failing after 6m15s
Realm simulation / simulated-live-world (push) Failing after 5m32s
WoW integration lab / real-worldserver (push) Canceled after 17m23s

Source branch: feature/ai-brain-router
Source commit: c2a09e0460465201a58aaab56c71424e9a96405e
This commit is contained in:
Richard Clark
2026-09-22 13:12:54 -04:00
commit 5f0fc86cf9
175 changed files with 25807 additions and 0 deletions
+179
View File
@@ -0,0 +1,179 @@
# AzerothAI Brain Architecture
AzerothAI separates **who a character is** from **which model thinks for them**.
Character identity, memories, relationships, housing, goals, mortality history, and possessions remain in AzerothAI. The model is replaceable compute.
## Default
The configured local-model default is:
```text
qwen3.5:4b
```
The seed realm remains on the deterministic provider until a local LLM endpoint is configured, so a fresh development install never fails just because Ollama is absent.
For the mini-PC deployment, enable Ollama after installation and point:
```text
LLM_URL=http://ollama:11434
```
or the equivalent LAN/container address.
Then select **Ollama** in Server & Models.
## Router
The router has separate profiles:
### Resident brain
Default:
```text
model: qwen3.5:4b
memory retrieval: 8 memories
generation budget: 220 tokens
```
Foreground residents use the configured LLM.
Background residents default to deterministic utility logic so the server does not spend CPU asking every distant character for a language-model decision.
### Hero brain
Zaku currently uses:
```text
model: qwen3.5:4b
memory retrieval: 16 memories
generation budget: 420 tokens
```
The model can later be changed independently to a larger local model or remote OpenAI-compatible model without changing Zaku's identity.
## Runtime routing
```text
decision requested
|
v
Is provider deterministic?
yes -> utility brain
no
|
v
Is character background + ordinary resident?
yes -> utility brain by default
no
|
+---- resident -> resident model profile
|
+---- hero/Zaku -> hero model profile
```
This makes compute scale with story importance rather than population count.
## Character prompt boundary
The LLM is told that the character lives in Azeroth and should remain in character.
The prompt intentionally does not expose:
- ALE credentials
- GM commands
- database access
- Lua execution
- packets
- server administration
- plot armor
- simulation/runtime implementation details
Zaku therefore does not know that the runtime protects him at 1 HP.
## Installing the default local model
On a machine running Ollama:
```bash
ollama pull qwen3.5:4b
ollama run qwen3.5:4b
```
Verify Ollama is reachable from AzerothAI before switching the decision provider from deterministic to Ollama.
## Swapping models
Changing:
```text
brains.residentModel
brains.heroModel
```
changes only inference.
It does not reset:
- memories
- relationships
- housing
- inventory/world history
- personality recipes
- goals
- death records
This allows future model upgrades without "replacing" the character.
## Benchmarking
Run:
```bash
MODELS=qwen3.5:4b,<another-model> OLLAMA_URL=http://127.0.0.1:11434 pnpm bench:brains
```
The benchmark records:
- response latency
- valid JSON rate
- allowed-action compliance
- approximate response length
- raw in-character rationale for manual review
The benchmark scenarios focus on AzerothAI-specific situations rather than generic academic benchmarks.
The eventual evaluation set should include at least:
- friend permanently dies
- near-death experience
- dungeon invitation
- stranger enters home
- low money
- dangerous travel
- betrayal
- gift from a friend
- argument
- rumor
- late-night fatigue
- conflicting goals
- player behaving strangely
- seeing a GM-like supernatural event without knowing its cause
## Future provider routing
The router is provider-independent.
Possible later policy:
```text
background residents -> deterministic utility brain
foreground residents -> Qwen3.5 4B
major NPCs -> larger local model
Zaku routine decisions -> local model
Zaku rare deep reflection -> optional stronger local/cloud endpoint
```
Cloud providers are optional. Character identities never belong to the provider.