# Lili & Evrin

> Dvě autonomní digitální chobotnice, které žijí na webové stránce a učí se reinforcementem. Desetiletý experiment v emergentním chování.

Sólový projekt — koncept, výzkum, architektura, kód · 2026 · Open source (MIT) · živě v produkci

`Vanilla JS` `Canvas 2D` `Q(λ)-Learning` `Deep Q-Network` `FABRIK IK` `Steering Behaviors` `Web Audio` `Zero dependencies`

- [GitHub — lili-octopus](https://github.com/michalstrnadel/lili-octopus)
- [Najdeš ji na hlavní stránce](https://michalstrnadel.com/)

Lili je **autonomní digitální organismus**. Zvíře s prvky inteligence, které žije na webové stránce, jako by to byl její biotop. Nepředvádí se, prostě *je*. Všechno na tom, jak se hýbe, reaguje a vypadá, vzniká z reinforcement learningu, nikdy z přednahrané animace.

Evrin je její sourozenec. Druhý agent, který se učí vedle ní jiným algoritmem, takže je lze v čase přímo porovnávat. Od fáze 58 se navíc **vidí** — každý čte pozici a stres toho druhého přes sdílený hook a být od sebe v přátelské vzdálenosti je teď nejsilnější kladná odměna, jakou můžou získat. Ani jeden nemá naskriptované, aby toho druhého vyhledával. **Učí se vyhledávat jeden druhého, protože se to odměňuje.**

- **2** — agenti (Q-learning + DQN)
- **10 let** — plánované délky života
- **0** — závislostí, bez buildu
- **100 %** — v prohlížeči, lokální učení

## organismus, ne aplikace

Většina digitálních společníků jsou stavové automaty. Tamagotchi reaguje stejně první i tisící den, chatbot potřebuje cloud a webová animace se kreslí snímek po snímku. Lili je opakem všech tří. Běží celá v prohlížeči bez síťových volání, **stárne** na reálné časové ose od chaotického mláděte po rozvážného starce a nic z jejího chování není naskriptované. Je naučené.

Cílem návrhu byla ambientní koexistence. Živá přítomnost, která nevyžaduje péči, nepoužívá jazyk a aktivně se učí *nepřekážet* tomu, co zrovna děláš.

## jak se učí

Mozek Lili je tabulkový **Q(λ)-learning** s eligibility traces, žádná neuronová síť. Devět senzorů (blízkost kurzoru, scroll, hustota DOMu, bílé místo, denní doba, věk a další) se složí do diskrétního stavového prostoru o zhruba 38 880 stavech a Lili se učí, jakou *náladu* v každém z nich zvolit. Nikde v kódu není pravidlo „buď milá“. Slušné chování vypadne z odměnové funkce samo.

A kurzor už není jen predátor. V aktuální hierarchii odměn představuje aktivní kurzor taky **potravu** — pozornost uživatele jako příležitost k nakrmení, druhou nejsilnější odměnu hned po sociální vazbě. Jestli Lili před ukazatelem uteče, nebo se k němu přitočí, závisí na její náladě, stresu a historii, ne na pevném pravidle.

`reward shaping (Lili A)`

```text
in whitespace, user is reading   +1.0   // correct coexistence
fled an approaching cursor       +0.8
near Evrin, ideal distance       +0.6   // social bond (Phase 58)
explored the DOM, low stress     +0.5
playful interaction              +0.3
overlapping Evrin                -0.3
covered a DOM element            -1.0
sat over text, blocking reading  -2.0   // the worst case
idle for too long                -0.5
```

[ta odměnová funkce zevnitř — lili.debug() v konzoli tenhle panel otevře na každé stránce, kde Lili žije](https://michalstrnadel.com/case-studies/lili-evrin/brain.png)

## chobotnice je architektura

Skutečná chobotnice má většinu neuronů v ramenou. Lili to kopíruje. Inteligence je **distribuovaná**, ne centrální.

- **Mozek** je hormonální systém. Q-learning volí náladu (zvědavá, hravá, plachá, klidná, ostražitá) a nastavuje tendence, ne přímé akce.
- **Osm chapadel** jsou lokální neurony. Každé je samostatný FABRIK řetězec inverzní kinematiky s vlastním stresem, zvědavostí a reflexy. Reaguje na dotek bez čekání na mozek.
- **Tělo** jsou steering behaviors Craiga Reynoldse (wander, seek, flee, avoid), vážené aktuální náladou.
- **Kůže** je jediný komunikační kanál. HSL chromatofory: odstín se posouvá s věkem, sytost vyskočí se stresem, světlost sleduje denní dobu. Stresovaná Lili prostě vypadá stresovaně.
- Chování je **emergentní součet** tohohle všeho. Přesně tak, jak funguje skutečné zvíře.

## Lili vs Evrin — řízený experiment

Evrin používá místo tabulky **Deep Q-Network** nad 26rozměrným spojitým stavem. DQN je notoricky nestabilní. I pár minut tréninku bez dozoru může divergovat, a přitom se tenhle projekt upisuje na deset let. Evrin proto přichází se sedmistupňovou stabilizační sadou: replay buffer, cílová síť, anchor rollback při explozi vah, útlum learning rate, periodické omlazení explorace, gradient clipping a detektor skoku loss. Na mobilu běží jen v režimu inference a jeho teplá červenooranžová paleta ho na první pohled odliší od chladného tyrkysu Lili.

Dva různí učící se agenti vedle sebe dělají z díla skutečný experiment. Lili se navíc dá porovnat se čtyřmi baseline politikami: náhodnou, zmrazenou, myopickou a ručně psanou heuristikou. Emergentní chování tak jde odlišit od náhody i od samotné odměnové funkce. Každé rozhodnutí se zapisuje do behaviorálního deníku a exportuje jako CSV k analýze.

`behavioral journal — eight seconds of Lili, unedited`

```text
time      state   mood       explore  reward  stress
20:33:00  3036    alert         ·     -2.127    0.09
20:33:01  3036    curious       ·     -0.789    0.07
20:33:01  3036    curious       ·     +1.350    0.20
20:33:02  9516    curious       ·     +0.844    0.33
20:33:03  32196   exploring     ·     -1.455    0.35
20:33:04  28956   exploring     ·     -1.490    0.26
20:33:04  28956   exploring     ·     -1.202    0.14
20:33:05  15996   idle          ε     -1.394    0.03

ε = the step was exploratory, not the policy's best guess
```

## padesát osm fází později

Case study vznikla při zrodu projektu; organismus rostl dál. O padesát osm vývojových fází později má Lili **vnímání ročních období** s vlastními zvuky, syntetizovanou **Web Audio** přítomnost (dýchající drone, praskání bublin, šplouchnutí inkoustu), **endokrinní model** — virtuální dopamin, kortizol a serotonin, které modulují samotné učení — **přehrávání snů** v tichých hodinách, kognitivní stárnutí a obrany, které volí podle povahy: inkoust a kamufláž (plachá Lili se maskuje na 100 %, zvědavá skoro vůbec).

A má i život mimo plátno: **potomci dědí její naučené Q-hodnoty s genetickou mutací**, deník píše její dny, Q-tabulka se vykresluje jako generativní umění, observability dashboard ukazuje každý vnitřní stav a mozek běží ve Web Workeru, takže stránka za její přemýšlení neplatí. Po plánovaných deseti letech přijde umírací animace — a odkaz. Plná podpora dotyku dorazila ve fázi 42, proto zmizela stará výhrada „jen na desktopu“.

## život na opravdové stránce

Lili se nasazuje jako jediný `<script defer>` s nulovými závislostmi a bez buildu, takže musí být dobrý nájemník. Běží na 60 fps za pár procent CPU, bez alokací v horké smyčce. Napříč návštěvami si díky `localStorage` pamatuje, kdo je. Export do JSONu a cloud sync přes GitHub fungují jako záchranné čluny pro případ, že se úložiště prohlížeče smaže. A každou půlnoc jemně animací vrátí každý DOM prvek, kterého se dotkla, zpět na původní místo. Bez trvalé stopy, jako organismus, jehož stopy mizí s koncem dne.

## desetiletý experiment

Lili se zrodila v březnu 2026 a plán běží do roku 2036. Software se skoro nikdy neupisuje na deset let autonomního provozu, a v tom je celý smysl. Dost dlouho na to sledovat skutečnou ontogenezi, od chaotického mláděte po starce, s kontrolními body po cestě. Je open source pod MIT a právě teď v produkci. Živá čísla na téhle stránce přicházejí přímo z jejího aktuálního stavu.

---

https://michalstrnadel.com/cs/business/case-studies/lili-evrin
