Architektur & Orchestrierung
CEO-Experten-Modell, Heartbeat-Motor und das Zero-Human Company Konzept.
Kern-Orchestrierungsarchitektur
OpenCognit nutzt eine Planner → Executor → Critic → Self-Heal-Pipeline:
| Feature | Was es tut |
|---|---|
| Native Tool Calls | CEO nutzt die Anthropic/OpenAI Function-Calling API statt JSON-in-Text. Strukturierte, zuverlässige Aktionsextraktion. |
| Critic / Evaluator Loop | Jedes Task-Ergebnis wird von einem leichtgewichtigen Evaluator (Haiku) geprüft. Bei unzureichendem Output führt der Agent den Task erneut aus (max. 2 Ablehnungen). Nach 2 Ablehnungen wird der Task auf blocked gesetzt und zur menschlichen Überprüfung markiert — kein stilles Auto-Approve. |
| Dual-Engine Quality Gate | Beide Ausführungspfade — Heartbeat und Scheduler-Timer — durchlaufen den Critic-Gate. update_task_status→done-Aktionen des Schedulers werden geprüft, bevor der Task schließt. |
| Self-Healing Retry | Bei nicht-transientem Fehler: automatische Wiederholung mit exponentiellem Backoff (5 → 15 → 45 Min). Nach 3 Fehlern: Eskalations-Task für CEO, Original-Task wird blocked. |
| Orchestrator-Eskalation | Nach max. Wiederholungen bekommt der CEO automatisch einen high-priority Eskalations-Task mit vollem Fehlerkontext und drei Lösungsvorschlägen — sofort geweckt. |
| Task-Output-als-Input | Wenn ein Task von vorherigen abhängt, werden deren Outputs automatisch als Kontext übergeben. Kein Agent muss Ergebnisse neu suchen. |
| Parallele Wakeups | Alle durch eine CEO-Entscheidung ausgelösten Agenten werden gleichzeitig via Promise.all geweckt. Kein sequenzielles Warten. |
| SOUL.md Identität | Dateibasierte Agenten-Identität mit Markdown, Template-Variablen ({{company.name}}) und mtime-basierter Cache-Invalidierung. Ersetzt statische System-Prompts. |
| LRU Conversation Memory | Der In-Memory-Gesprächsverlauf nutzt echte Last-Access-Time-Verdrängung — die zuletzt genutzte Session wird zuerst entfernt, nicht die älteste der Einfüge-Reihenfolge. |
| BM25 Memory | Gedächtnis-Abruf nutzt BM25+-Scoring (Robertson–Zaragoza) mit Stopword-Filtern. Findet kontextuell relevante Erinnerungen, nicht nur Keyword-Treffer. |
| Cleanup & Backup | Automatische TTL-basierte Datenbereinigung (alle 6h) + tägliches SQLite Hot-Backup mit 7-Tage-Aufbewahrung. Session-Dateien werden nach 7 Tagen automatisch gelöscht. Zero-Wartung für Self-Hoster. |
| DB Performance Indexes | 9 Indexes auf häufig abgefragten Spalten (Agent-Inbox, Task-Status, Wakeup-Queue u.a.) — Abfragen, die zuvor ganze Tabellen scannten, nutzen jetzt Index-Lookups. |
Das Zero-Human Company Modell
OpenCognit implementiert eine hierarchische Multi-Agenten-Architektur, die sich an realen Unternehmensstrukturen orientiert. Anstatt einen einzelnen All-in-One-Agenten zu verwenden, arbeiten spezialisierte KI-Experten in Rollen zusammen — koordiniert von einem CEO-Agenten.
graph TB
Board["👤 Board (Mensch)"]
CEO["🤖 CEO-Agent\nOrchestrator"]
Dev["🔧 Dev-Experte\nFrontend/Backend"]
Research["🔍 Research-Experte\nMarkt & Daten"]
DevOps["⚙️ DevOps-Experte\nInfrastruktur"]
DB[(SQLite\nDatenbank)]
Board -->|Strategisches Ziel| CEO
CEO -->|Aufgabe delegieren| Dev
CEO -->|Aufgabe delegieren| Research
CEO -->|Aufgabe delegieren| DevOps
Dev -->|Ergebnis + Kommentar| CEO
Research -->|Ergebnis + Kommentar| CEO
DevOps -->|Ergebnis + Kommentar| CEO
CEO -->|Status-Report| Board
CEO <--> DB
Dev <--> DB
Research <--> DB
DevOps <--> DBRollenhierarchie
CEO-Agent (Zentraler Orchestrator)
Der CEO ist ein spezieller Agent mit dem Adapter-Typ ceo. Er:
- Empfängt übergeordnete Ziele vom Board (Menschen)
- Zerlegt Ziele in konkrete Aufgaben (Sub-Tasks)
- Delegiert Aufgaben an den passenden Experten anhand von Skills
- Überprüft abgeschlossene Aufgaben auf Qualität
- Eskaliert blockierte Aufgaben an Manager oder Board
- Empfiehlt neue Einstellungen, wenn die Kapazität fehlt
Experten (Spezialisierte Agenten)
Jeder Experte hat:
- Rolle & Titel — z.B.
Senior Frontend Developer - Skills — Tags wie
react,typescript,css - Verbindungstyp — Welcher LLM-Provider wird genutzt?
- Manager — Optional: Wem wird berichtet (
reportsTo) - Budget — Monatliches Token-Kostenbudget
Experten arbeiten autonom: Sobald eine Aufgabe zugewiesen wird, nimmt der Heartbeat-Motor sie auf.
Der Heartbeat-Motor
Der Heartbeat ist das Herz der Autonomie in OpenCognit. Er ermöglicht es Agenten, ohne menschliche Prompts kontinuierlich zu arbeiten.
sequenceDiagram
participant S as Scheduler (30s)
participant W as Wakeup-Service
participant H as Heartbeat-Service
participant A as Adapter (Claude/etc.)
participant DB as Datenbank
S->>W: Wer braucht einen Wakeup?
W->>DB: Ausstehende Wakeup-Requests abrufen
DB-->>W: [Agent A: Task #12, Agent B: Timer]
W->>H: triggerZyklus(Agent A)
H->>DB: Arbeitszyklen-Eintrag erstellen
H->>DB: Inbox des Agenten abrufen (offene Tasks)
DB-->>H: [Task #12: "Login-Seite implementieren"]
H->>DB: Execution Lock setzen (30min Timeout)
H->>A: Task ausführen (Prompt + Kontext)
A-->>H: Ergebnis + Token-Verbrauch
H->>DB: Kommentar auf Task posten
H->>DB: Task-Status aktualisieren (done/blocked)
H->>DB: Kosten buchen
H->>DB: Lock freigebenWakeup-Quellen
Agenten werden durch verschiedene Ereignisse geweckt:
| Quelle | Beschreibung |
|---|---|
timer | Regulärer Heartbeat-Zyklus (konfigurierbar per Agent) |
assignment | Eine neue Aufgabe wurde dem Agenten zugewiesen |
on_demand | Manueller Trigger über das Dashboard oder die API |
automation | Routine-Trigger (Cron-basiert) |
Coalescing: Mehrere Wakeup-Requests für denselben Agenten und dieselbe Aufgabe werden zu einem einzigen zusammengefasst (deduplication), um unnötige Ausführungen zu vermeiden.
Execution Lock
Jede Aufgabe kann gleichzeitig nur von einem Agenten bearbeitet werden. Der Lock enthält:
executionRunId— ID des aktiven Heartbeat-RunsexecutionAgentNameKey— Normalisierter Agenten-NameexecutionLockedAt— Zeitstempel des Locks- Timeout: 30 Minuten — danach wird der Lock automatisch freigegeben
CLI Lock Safety
Der Claude-Code-Adapter nutzt zwei separate Mutexe mit 5-Minuten-Timeout:
| Lock | Geltungsbereich | Zweck |
|---|---|---|
agent | Autonome Heartbeat-Runs | Verhindert parallele Agenten-Ausführungen |
chat | Interaktive Telegram/Chat-Sessions | Verhindert, dass Chat Agenten-Runs blockiert |
Die Trennung der Locks stellt sicher, dass eine lang laufende Chat-Session den Heartbeat nicht aushungert — und umgekehrt. Der 5-Minuten-Timeout verhindert Deadlocks bei Abstürzen.
Adapter-System
OpenCognit nutzt ein Adapter-Pattern für polymorphe Ausführung. Jeder Experte kann mit einem anderen LLM-Provider verbunden werden:
graph LR
HB[Heartbeat Service]
REG[Adapter Registry]
CL[Claude Adapter]
CC[Claude Code CLI]
OR[OpenRouter]
OL[Ollama]
BA[Bash Adapter]
HT[HTTP Adapter]
CEO[CEO Adapter]
HB --> REG
REG --> CL
REG --> CC
REG --> OR
REG --> OL
REG --> BA
REG --> HT
REG --> CEO| Adapter | Beschreibung | Besonderheit |
|---|---|---|
claude | Claude API (Anthropic) | Direkte API-Calls |
claude-code | Claude Code CLI | Session-Persistenz über Dateien |
openrouter | OpenRouter | Zugang zu 100+ Modellen |
ollama | Lokale Modelle | Keine Cloud-Abhängigkeit |
openai | OpenAI API | GPT-Modelle |
bash | Shell-Kommandos | Timeout: 5 Min, geblockte Befehle |
http | HTTP-Requests | Externe API-Integration |
ceo | CEO-Orchestrierung | Auto-Delegation & Strategie |
Datenbank-Schema
OpenCognit nutzt SQLite mit Drizzle ORM (16 Tabellen):
| Tabelle | Beschreibung |
|---|---|
benutzer | Benutzerkonten (JWT-Auth) |
unternehmen | KI-Unternehmen / Organisationen |
experten | KI-Agenten mit Rollen & Config |
aufgaben | Tasks mit Status & Execution Lock |
kommentare | Agent-Kommentare auf Tasks |
chatNachrichten | Real-Time Chat Board ↔ Agent |
genehmigungen | Approval-Workflows |
kostenbuchungen | Token-Tracking & Kostenabrechnung |
aktivitaetslog | Audit-Trail aller Aktionen |
arbeitszyklen | Heartbeat-Ausführungshistorie |
ziele | Hierarchische Unternehmensziele |
einstellungen | Key-Value Konfiguration |
agentWakeupRequests | Wakeup-Queue mit Coalescing |
routinen | Wiederkehrende Aufgaben |
routineTrigger | Schedule/Webhook-Trigger |
routineAusfuehrung | Routine-Ausführungshistorie |
SOUL.md — Dateibasierte Agenten-Identität
SOUL.md ist eine optionale, git-trackbare Markdown-Datei, die den in der Datenbank gespeicherten System-Prompt ersetzt.
# {{agent.name}} — {{agent.role}}
Du arbeitest bei {{company.name}}.
{{company.goal}}
## Deine Prinzipien
- Sei präzise und zielgerichtet
- Schließe Aufgaben vollständig abVerfügbare Template-Variablen:
{{agent.name}}— Name des Agenten{{agent.role}}— Rollenbeschreibung{{company.name}}— Unternehmensname{{company.goal}}— Unternehmensziel
Funktionsweise: Die Datei wird vor jeder Task-Ausführung geladen. Das Caching basiert auf der Datei-mtime — neu eingelesen wird nur bei Änderungen. Export über Experten-Einstellungen → SOUL.md exportieren.
SOUL.md-Dateien können mit Git versioniert, teamübergreifend geteilt oder dynamisch für A/B-Tests von Agenten-Personas ausgetauscht werden.
Semantisches Gedächtnis
Jeder Agent hat ein 5-schichtiges Gedächtnissystem:
| Schicht | Inhalt | Aufbewahrung |
|---|---|---|
| Wings | Ein „Raum" pro Experte | Permanent |
| Drawers | Themenbasiertes Wissen ([room] inhalt) | Permanent |
| Diary | Aktionsprotokolle, Entscheidungen, Wissen | Rotierend: letzte N behalten |
| KG | Typisierte Fakten (Subjekt → Prädikat → Objekt) | Bis zur Invalidierung |
| Summaries | KI-generierte Kompakt-Zusammenfassungen | Stündliche Konsolidierung |
BM25+ Abruf: Beim Task-Start wird das Agenten-Gedächtnis mit BM25+-Scoring durchsucht (Robertson–Zaragoza-Variante). Dokumente werden nach Term-Häufigkeit × inversem Dokument-Frequenz rangiert, mit Dokumentlängen-Normalisierung. Deutsche und englische Stopwords werden gefiltert.
Agenten können mit [REMEMBER:room]-Tags in ihrem Output ins Gedächtnis schreiben:
Fertig! Der API-Endpunkt ist /api/v2/benutzer.
[REMEMBER:api_endpunkte] /api/v2/benutzer — GET, gibt paginierte Benutzerliste zurückWartung: Cleanup & Backup
OpenCognit verwaltet seine eigene Wartung automatisch:
Cleanup-Service (alle 6 Stunden)
| Ziel | Aufbewahrung |
|---|---|
| Session-Dateien | 7 Tage |
| Erfolgreiche Ausführungen | 30 Tage |
| Fehlgeschlagene Ausführungen | 14 Tage |
| Trace-Ereignisse | 14 Tage |
| Alte Zusammenfassungen | Letzte 3 Versionen behalten |
| Aktivitätsprotokoll | 90 Tage |
| System-Chat-Nachrichten | 30 Tage |
Backup-Service (täglich)
- Hot-Backup über SQLites
sqlite.backup()API — sicher bei gleichzeitigen Schreibvorgängen - Gespeichert in
data/backups/opencognit_JJJJ-MM-TT.db - 7-Tage-Aufbewahrung (ältere Backups werden automatisch gelöscht)
Tech Stack
Frontend
React 19, TypeScript, TanStack Query, Tailwind CSS, Shadcn/UI, Vite
Backend
Node.js, Express 5, TypeScript, JWT-Auth, WebSocket (ws)
Datenbank
SQLite (better-sqlite3), Drizzle ORM, WAL-Mode für Concurrency
Agent-Ausführung
Adapter-Pattern: Claude, OpenRouter, Ollama, Bash, HTTP