Simulátor sociálních struktur — plán JS appky s LLM agenty
Co a proč
Korpus dosud pracoval s relační ontologií v doménách fyziky, jazyka, vědomí, geometrie a biochemie. Sociální struktury jsou přirozená další doména — a zároveň ta, kterou lze experimentálně simulovat: lidé a vztahy budou podle pravidel simulovány a bude se sledovat, co koule (síť relací) jako struktura dělá.
Tohle není klasická věda v tom smyslu, že bychom měřili reálné lidi. Je to výzkum pomocí LLM: každý agent (člověk v simulaci) je instance LLM s vlastním MEMORY.md, vztahy jsou hrany grafu, interakce generuje LLM na základě profilů obou konců relace. Pozorujeme, co emerguje — které vzory, jaké topologie, jaké "editační operace" (pochopení, konflikty, vhledy) se šíří sítí.
Proč to sedí do KRT:
Relace je primární (vedomi-jako-operator.md, cerna-dira-jako-pochopeni.md). Sociální síť je přesně to: informace není v člověku (uzlu), je ve vztahu (hraně). Kdo jsi, závisí na tom, s kým jsi — stejně jako serotonin závisí na receptoru (serotonin-jako-editor.md).
Edit operátor (vedomi-jako-operator.md). Sociální interakce je editační operace: po rozhovoru se oba agenti změní (subtraktivní: staré patterny mizí; meta-aditivní: fakt interakce zůstává). To je přesně QEC struktura, jen na jiném substrátu.
Polysémie agenta (kvantovka-jako-vyznam-slov.md). Jeden člověk "znamená" různé věci pro různé lidi — jako slovo v různých větách. Teprve vztah vybere konkrétní "čtení". Simulátor to může sledovat: jak se tentýž agent projevuje v různých relačních kontextech.
Topologie koule (tri-mista-ctyri-sily.md). Pokud má sociální síť analogii ke čtyřem modulačním režimům fundamentální domény, simulátor by ji mohl odhalit — jsou ve skupině lidí "eliptické body" (stabilní centra, kolem kterých se vše točí), "cuspy" (hraniční podmínky, dalekodosahový vliv), a "orientace" (kdo určuje směr)?
Fáze 1 — Grafické znázornění
Nejdřív vizualizace, bez LLM. Statický force-directed graf na Canvasu.
Co vidíš na obrazovce
┌─────────────────────────────────────────┐
│ │
│ ○ Eva │
│ / \ │
│ / \ │
│ ○ ○ Adam ──── ○ Oxana │
│ Karel \ / │
│ \ / │
│ ○ Iris │
│ │
│ [+ Přidat agenta] [+ Přidat vztah] │
│ [▶ Krok simulace] [⏸ Pauza] │
└─────────────────────────────────────────┘
Technicky
- Uzly = kruhy na Canvasu, jméno pod nimi
- Hrany = čáry mezi uzly, tloušťka = síla vztahu, barva = typ (rodina / práce / přátelství / partnerství / antagonismus)
- Force-directed layout = uzly se odpuzují (Coulomb), hrany přitahují (Hooke), simulace běží v requestAnimationFrame
- Interakce = drag & drop uzlů, klik na uzel = otevře profil, klik na hranu = otevře detail vztahu
- Zoom + pan = scroll wheel + drag na prázdném místě
Data model (v paměti prohlížeče)
const simulation = {
agents: [
{
id: "adam",
name: "Adam",
x: 300, y: 200, // pozice na canvasu
profile: { ... }, // MEMORY.md obsah (viz Fáze 2)
},
// ...
],
edges: [
{
from: "adam", to: "oxana",
type: "partnership",
strength: 0.9,
history: [], // log interakcí
},
// ...
],
step: 0, // číslo kroku simulace
};
Fáze 2 — Profily agentů jako MEMORY.md
Každý uzel má svůj "MEMORY.md" — strukturovaný profil, který definuje, jak se agent chová v interakcích.
Struktura profilu
---
name: Adam
type: agent
---
## Osobnost
- Vizuální myslitel, hledá vzory
- Přímý, nerad chodí kolem horké kaše
- Vysoká tolerance nejistoty
## Historie (klíčové události)
- 2024: Začal pracovat na KRT
- 2025: První průlom — rotující substrát
## Aktuální stav
- Soustředěný na formulaci Theorem 2
- Mírně unavený, ale nadšený
## Vzorce chování
- Když je konfrontován s kritikou → zpomalí, přemýšlí, pak reaguje přesně
- Když je nadšený → mluví rychle, skáče mezi tématy
- V konfliktu → hledá strukturální řešení, ne emocionální
## Vztahové tendence
- Preferuje hluboké vztahy nad široké
- V blízkých vztazích je otevřený
- S cizími lidmi je zdrženlivý
Jak profil ovlivňuje simulaci
Při interakci dvou agentů se LLM zeptá:
Agent A (profil A) a Agent B (profil B) se setkávají v kontextu [typ hrany]. Vygeneruj krátkou interakci (5-10 vět). Na konci uveď, co se změnilo v profilu každého z nich.
LLM vrátí:
- Dialog — krátká scéna
- Diff profilu A — co se změnilo (přidalo, odebralo, modifikovalo)
- Diff profilu B — dtto
- Diff hrany — změna síly, typu, nebo nová hrana k třetímu agentovi
To je přesně editační operátor na síti relací. Každá interakce je serotonin-receptor binding: tentýž "trigger" (setkání), ale výsledek záleží na obou profilech (receptorech). Informace je v relaci, ne v triggeru.
Fáze 3 — LLM simulační smyčka
Jeden krok
- Vyber hranu (náhodně, nebo podle pravidla — nejslabší, nebo ta s nejdelší dobou od poslední interakce)
- Pošli oba profily + historii hrany + kontext do LLM
- LLM vygeneruje interakci + diffy
- Aplikuj diffy na oba profily a hranu
- Vizualizuj změnu na grafu (hrana změní barvu/tloušťku, uzly se přesunou force-directed)
- Loguj do historie
Pravidla emergentní dynamiky
- Nové hrany — LLM může navrhnout, že A se po interakci s B chce setkat s C (nová hrana)
- Zánik hran — pokud síla hrany klesne pod threshold, hrana zmizí
- Skupinové interakce — tři a více agentů současně (trojúhelník = Z₃ silná interakce sociálně?)
- Editační operátor — LLM může navrhnout, že A "pochopil" něco o svém patternu → subtraktivní edit (pattern zmizí z profilu) + meta-aditivní záznam (přibude "pochopil jsem, že...")
Pozorované metriky
- Clustering coefficient — lokální hustota trojúhelníků (Z₃ struktura?)
- Betweenness centrality — kdo je most mezi skupinami (cusp?)
- Degree distribution — power law? random? small world?
- Edit rate — kolik profilových změn za krok? Kde se mění nejvíc? (kde je "weak force" sociálního systému?)
- Stabilní centra — uzly, které se nemění ale kolem kterých se vše točí (eliptické body
i?)
Fáze 4 — Pozorování struktury koule
Co hledáme
Pokud KRT platí i pro sociální struktury, pak by sociální síť měla vykazovat:
Tři + jeden typ relační modulace (analogie čtyř sil):
- Silné vazby uvnitř skupin (silná, Z₃, trojice)
- EM-like rychlé signály (zprávy, krátké interakce)
- Gravitace-like pozadí (kontext, kultura, normy — dalekodosahové, slabé)
- Slabá-like flavor changes (vhled, konflikt, pochopení — mění kým agent je)
Editační operátor na makro úrovni — skupinové pochopení (terapeutická skupina, tým po retrospektivě) by mělo fungovat jako Hawking radiation: rozpouští špatné vztahové patterny a nechává metaznačky
Polysémie agenta — tentýž člověk "znamená" různé věci v různých vztazích; simulátor to explicitně vidí, protože MEMORY.md profil je interpretován LLM v kontextu konkrétní hrany
Koule jako topologický objekt — při dostatečném počtu agentů a hran by se měla síť začít chovat jako plocha, ne jako strom; Eulerova charakteristika, genus, přítomnost děr
Technický koncept appky
Stack
www/
├── views/simulator.ejs # EJS stránka s canvasem
├── public/
│ ├── simulator.js # hlavní JS (Canvas, force layout, UI)
│ ├── simulator-agents.js # agent profily, diff logika
│ └── simulator.css # styly specifické pro simulátor
└── server.js # nová route /simulator + API endpoint pro LLM
Route v server.js
app.get('/simulator', (req, res) => {
res.render('simulator', { ...tplHelpers, lang: getLang(req) });
});
Minimální simulator.ejs
<%- include('partials/head', { title: 'Simulátor', extraHead: `
<link rel="stylesheet" href="/simulator.css">
<script src="/simulator.js" defer></script>
<script src="/simulator-agents.js" defer></script>
` }) %>
<div class="sim-container">
<div class="sim-toolbar">
<button id="addAgent">+ Agent</button>
<button id="addEdge">+ Vztah</button>
<button id="stepSim">▶ Krok</button>
<button id="autoSim">⏯ Auto</button>
</div>
<canvas id="simCanvas"></canvas>
<aside id="simPanel" class="sim-panel hidden">
<!-- profil agenta nebo detail hrany -->
</aside>
</div>
<%- include('partials/foot') %>
Force-directed layout (vanilla JS, ~100 řádků)
// Coulomb repulze mezi všemi uzly
for (let i = 0; i < agents.length; i++) {
for (let j = i + 1; j < agents.length; j++) {
const dx = agents[j].x - agents[i].x;
const dy = agents[j].y - agents[i].y;
const dist = Math.sqrt(dx*dx + dy*dy) || 1;
const force = REPULSION / (dist * dist);
agents[i].vx -= (dx/dist) * force;
agents[i].vy -= (dy/dist) * force;
agents[j].vx += (dx/dist) * force;
agents[j].vy += (dy/dist) * force;
}
}
// Hooke přitažení po hranách
for (const edge of edges) {
const a = agentMap[edge.from];
const b = agentMap[edge.to];
const dx = b.x - a.x;
const dy = b.y - a.y;
const dist = Math.sqrt(dx*dx + dy*dy) || 1;
const force = ATTRACTION * (dist - REST_LENGTH) * edge.strength;
a.vx += (dx/dist) * force;
a.vy += (dy/dist) * force;
b.vx -= (dx/dist) * force;
b.vy -= (dy/dist) * force;
}
LLM interakce (API call)
async function simulateInteraction(agentA, agentB, edge) {
const prompt = `
Dva lidé se setkávají. Vygeneruj krátkou interakci (5-10 vět).
Agent A: ${agentA.name}
Profil A: ${agentA.profile}
Agent B: ${agentB.name}
Profil B: ${agentB.profile}
Vztah: ${edge.type}, síla ${edge.strength}
Historie: ${edge.history.slice(-3).join('\n')}
Na konci vrať JSON:
{
"dialog": "...",
"diffA": { "add": [...], "remove": [...] },
"diffB": { "add": [...], "remove": [...] },
"edgeDiff": { "strength": 0.85, "newEdges": [] }
}`;
const response = await fetch('/api/simulate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ prompt })
});
return response.json();
}
Server-side LLM proxy (v server.js)
app.post('/api/simulate', async (req, res) => {
// proxy na Anthropic API
// API klíč z env
const response = await anthropic.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [{ role: 'user', content: req.body.prompt }]
});
res.json(JSON.parse(response.content[0].text));
});
Co toto NENÍ
Není to vědecká simulace s kontrolovanými proměnnými. Je to explorativní nástroj — sandbox, ne experiment. Výsledky budou kvalitativní (jaké vzory vidíme), ne kvantitativní (s jakou p-hodnotou).
Není to náhrada za skutečnou sociologii. Reální lidé se nechovají jako LLM agenti. Simulátor ukazuje, co relační ontologie predikuje pro idealizované agenty — ne jak se skuteční lidé chovají.
Není to hotový produkt. Je to plán. Fáze 1 (grafická vizualizace) je realizovatelná za den. Fáze 2 (profily) za další den. Fáze 3 (LLM smyčka) vyžaduje API klíč a prompt engineering. Fáze 4 (pozorování struktury) je otevřená výzkumná otázka.
Návaznost
- vedomi-jako-operator.md — editační operátor; sociální interakce je edit na síti relací
- serotonin-jako-editor.md — serotonin jako trigger bez payloadu; setkání agentů je trigger, výsledek závisí na "receptorech" (profilech)
- kvantovka-jako-vyznam-slov.md — polysémie agenta; jeden člověk "znamená" různé věci v různých vztazích
- cerna-dira-jako-pochopeni.md — informace je v relaci, ne v uzlu; osamocený agent nemá obsah
- tri-mista-ctyri-sily.md — čtyři režimy modulace; hledáme čtyři typy sociální interakce
- beta-rozpad-vesmiru.md — sociální "beta rozpad" — kdy se skupina rozpadne a co z ní vypadne?