AI Company System — Technische Architektur

Ein Multi-Agent-LLM-System, das die Organisationsstruktur eines Unternehmens nachbildet, um komplexe Projekte autonom in Phasen abzuarbeiten.

📄 v1.0 📅 Februar 2026 🏷️ Multi-Agent · LLM · Orchestration

Architektur-Diagramm

Das System besteht aus einem zentralen Orchestrator (der einzige nicht-LLM-Prozess), der alle Agent-Instanzen steuert, Nachrichten routet und den globalen State verwaltet.

┌─────────────────────────────────────────────────────────────────────┐ HUMAN INPUT Projektidee + Anforderungen └──────────────────────────┬──────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────┐ ORCHESTRATOR (Python / n8n / Node.js) ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ Agent Runner │ │ Msg Router │ │ State Manager │ start/stop │ │ in/out queue │ │ project_state.json R/W │ └──────────────┘ └──────────────┘ └──────────────────────────┘ └───────┬──────────────────┬───────────────────────┬──────────────────┘ │ │ │ ▼ ▼ ▼ ┌──────────┐ ┌──────────────┐ ┌────────────┐ ┌──────────────┐ │ Planner │ │ Proj.Manager │ │ Estimator │ │ Worker ×N │ │ │───▶│ │───▶│ │───▶│ (parallel) │ └──────────┘ └──────────────┘ └────────────┘ └──────┬───────┘┌───────────────────────────────────────────┘┌────────────┐ ┌──────────────┐ ┌────────────────┐ │ Critic │───▶│ Pragmatist │───▶│ Integrator │ │ │ │ │ │ │ └────────────┘ └──────────────┘ └───────┬────────┘┌───────────────────────────────────────┘┌───────────────────────────────────────┐ │ CEO-LLM │ │ state update → next phase trigger │ └───────────────────────────────────────┘ │ ▼ ┌───────────────────────────────────────┐ │ 🔁 LOOP bis alle Phasen done │ └───────────────────────────────────────┘ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ SEITENKANAL (on demand, von jedem Agent aufrufbar) ┌───────────────────┐ ┌───────────────────────────────┐ │ Researcher-LLM │ │ RAG-System (Gesetze, Docs..) │ │ Web-Zugriff │◄───▶│ pgvector / Embeddings │ └───────────────────┘ └───────────────────────────────┘

Datenfluss

Alle Agents kommunizieren nie direkt miteinander. Jede Nachricht läuft über den Orchestrator, der sie in die Message-Queue legt und an den nächsten Agent weiterleitet. Das ermöglicht Logging, Retry-Logik und State-Updates an einer zentralen Stelle.

ℹ️ Prinzip
Jeder Agent bekommt als Input: (1) seinen System-Prompt, (2) den relevanten Ausschnitt aus dem Project-State, (3) die konkrete Aufgabe/Nachricht. Der Agent gibt ein strukturiertes JSON-Ergebnis zurück.

Kommunikationsrichtungen

VonNachInhaltTrigger
HumanPlannerProjektidee + AnforderungenManuell
PlannerProjectManagerProjektplan (JSON)Planner fertig
ProjectManagerEstimatorPhasen + AufgabenlistePro Phase
EstimatorOrchestratorAufgabenpaketeSchätzung fertig
OrchestratorWorker ×NJe 1 AufgabenpaketParallel-Dispatch
WorkerCriticErgebnisse (gebatched)Alle Worker fertig
CriticPragmatistKritiklisteReview fertig
PragmatistIntegratorKorrigierte ErgebnisseFilter fertig
IntegratorCEOIntegrationsreportIntegr.-Test fertig
CEOProjectManagerPhase-Complete SignalCEO Approval
Any AgentResearcherFachfrageOn-Demand

Orchestrator

Der Orchestrator ist die einzige nicht-LLM-Komponente. Er ist ein deterministischer Prozess (Python-Script, n8n-Workflow oder Node.js-Service), der:

💡 Implementierungstipp
Für n8n: Jeder Agent ist ein HTTP-Request-Node an die LLM-API. Der Workflow-Flow bildet die Pipeline ab. Parallel-Worker über Split-In-Batches + Wait-for-All.

orchestrator.config

{
  "llm_provider": "anthropic",
  "default_model": "claude-sonnet-4-5-20250929",
  "ceo_model": "claude-opus-4-5-20251101",
  "max_parallel_workers": 10,
  "max_retry_loops": 2,
  "task_package_size": 5,
  "state_file": "./data/project_state.json",
  "log_dir": "./logs/",
  "researcher_tools": ["web_search", "rag_query"]
}

Agent-Definitionen

Jeder Agent ist eine Konfiguration aus: Rolle, System-Prompt, erlaubten Tools, Input-Schema und Output-Schema. Der Orchestrator instanziiert Agents bei Bedarf.

👔 CEO-LLM FÜHRUNG

Zentrale Entscheidungsinstanz. Bekommt als Kontext immer die aktuelle Projektakte (komprimiert). Entscheidet über Phase-Transitions und Eskalationen.

System-Prompt Kern-Direktiven

  • RolleGesamtverantwortlicher. Prüft alles doppelt. Behält Übersicht.
  • Inputproject_state (komprimiert), Phasenergebnisse, Integrations-Report
  • Output{ action: "approve_phase" | "request_rework" | "escalate", updates: {...}, next_phase: int }
  • Modellclaude-opus-4-5 (höchste Intelligenz für strategische Entscheidungen)
  • Max Tokens4096 Output
📐 Planner STRATEGIE

Interaktive Planungsphase mit dem Menschen. Erstellt den initialen Projektplan.

  • RolleAnalysiert Idee, stellt Rückfragen, erstellt vollständigen Projektplan mit Zielen, Nicht-Zielen, Tech-Entscheidungen
  • InputMenschliches Briefing (Freitext)
  • OutputProjectPlan-Objekt (siehe Schema unten)
  • Modellclaude-opus-4-5 (braucht Tiefe + Kreativität)
  • BesonderheitEinziger Agent mit Multi-Turn-Konversation (Mensch ↔ LLM)
📋 Project Manager KOORDINATION

Zerlegt den Projektplan in Phasen mit Abhängigkeiten. Tracked den Fortschritt.

  • RolleErstellt Roadmap, definiert Phasenreihenfolge, meldet Phasenstatus an CEO
  • InputProjectPlan + aktueller Phase-Status
  • Output{ phases: Phase[], current_phase: int, dependencies: [...] }
  • Modellclaude-sonnet-4-5
⚖️ Estimator PLANUNG

Schätzt Aufwand pro Task und bündelt sie in Worker-Pakete.

  • RolleBewertet Komplexität (1-5), bündelt in Pakete mit ~Gesamtkomplexität 12-15
  • InputTask-Liste einer Phase
  • Output{ packages: [{ id, tasks: Task[], total_complexity: int }] }
  • Modellclaude-sonnet-4-5
ℹ️ Paket-Sizing
Richtwert: Ein Worker-LLM kann ~5 mittelschwere Tasks (Komplexität 3) zuverlässig in einer Session abarbeiten. Das ergibt eine Ziel-Komplexität von ~15 pro Paket. Zu wenig = Token-Verschwendung, zu viel = Qualitätsverlust.
⚙️ Worker ×N AUSFÜHRUNG

Führen Aufgabenpakete parallel aus. Jeder Worker ist eine frische LLM-Session ohne Vorgeschichte.

  • RolleReiner Macher. Führt exakt aus, was gefordert wird. Hinterfragt nichts.
  • InputSystem-Prompt + TaskPackage + Projekt-Kontext (nur relevanter Ausschnitt)
  • Output{ package_id, results: [{ task_id, status, output, files_changed: [...] }] }
  • Modellclaude-sonnet-4-5 (Preis-Leistung optimal für Ausführung)
  • ParallelitätBis zu max_parallel_workers gleichzeitig
⚠️ Kontextfenster-Budget
Jedem Worker wird nur der minimal nötige Kontext mitgegeben: sein Paket + direkte Abhängigkeiten. Nicht das gesamte Projekt. Das spart Tokens und erhöht die Fokus-Qualität.
🔍 Critic QA

Prüft Worker-Ergebnisse extrem kritisch gegen die Projektanforderungen.

  • RolleExtrem kritisch. Findet Fehler, Sicherheitslücken, Abweichungen. Listet alles auf.
  • InputWorker-Ergebnisse + Original-Anforderungen der Phase
  • Output{ issues: [{ severity: "critical"|"major"|"minor"|"nitpick", task_id, description, suggestion }] }
  • Modellclaude-sonnet-4-5
🎯 Pragmatist FILTER

Filtert übertriebene Kritik. Behält nur valide, relevante Punkte.

  • RollePrüft Kritik auf Relevanz. Verwirft „Nitpicks" und übertriebene Punkte.
  • InputCritic-Output + Worker-Ergebnisse + Anforderungen
  • Output{ valid_issues: [...], dismissed_issues: [...], corrected_results: [...] }
  • Modellclaude-sonnet-4-5
💡 Erfahrungswert
In der Praxis werden ~50% der Kritikpunkte als übertrieben oder irrelevant verworfen. Die andere Hälfte ist valide und wird korrigiert. Dieses Verhältnis ist ein guter Indikator, dass der Critic richtig kalibriert ist.
🧩 Integrator ZUSAMMENFÜHRUNG

Prüft Kompatibilität aller Teilergebnisse einer Phase.

  • RollePrüft, ob Einzelergebnisse zusammenpassen. Interfaces, Datenformate, Namenskonventionen.
  • InputAlle korrigierten Ergebnisse einer Phase
  • Output{ compatible: bool, conflicts: [...], merged_result: {...} }
  • Modellclaude-sonnet-4-5
📚 Researcher WISSEN

On-Demand Wissensquelle. Wird von anderen Agents aufgerufen, um deren Kontextfenster nicht zu belasten.

  • RolleRecherchiert Fakten, Best Practices, rechtliche Fragen. Hat Web-Zugriff + RAG.
  • InputSpezifische Frage + Kontext wozu
  • Output{ answer, sources: [...], confidence: float }
  • Toolsweb_search, rag_query (pgvector), web_fetch
  • Modellclaude-sonnet-4-5 mit Tool-Use

Project State File

Die zentrale Projektakte. Wird nach jedem Schritt vom Orchestrator aktualisiert. Dient als Single Source of Truth.

project_state.json — Schema

{
  "project_id": "uuid",
  "name": "Projektname",
  "status": "planning | in_progress | review | completed | failed",
  "created_at": "ISO-8601",
  "updated_at": "ISO-8601",

  "plan": {
    "goals": ["..."],
    "non_goals": ["..."],
    "tech_stack": ["..."],
    "constraints": ["..."]
  },

  "phases": [
    {
      "id": 1,
      "name": "Phase 1: Setup",
      "status": "completed | in_progress | pending",
      "depends_on": [],
      "tasks": [
        {
          "id": "task-001",
          "title": "...",
          "complexity": 3,
          "status": "pending | assigned | done | failed",
          "assigned_package": "pkg-001",
          "result": null | { ... },
          "retry_count": 0
        }
      ],
      "packages": [
        {
          "id": "pkg-001",
          "task_ids": ["task-001", "task-002"],
          "total_complexity": 14,
          "worker_status": "pending | running | done | failed"
        }
      ],
      "review": {
        "critic_issues": [],
        "valid_issues": [],
        "integration_ok": null | true | false
      }
    }
  ],

  "decisions_log": [
    { "timestamp": "...", "agent": "ceo", "decision": "...", "reason": "..." }
  ],

  "known_issues": [],
  "total_tokens_used": 0,
  "total_cost_usd": 0.0
}
⚠️ Kontextfenster-Management
Der CEO bekommt nie das vollständige State-File. Der Orchestrator komprimiert es auf die relevanten Felder: aktueller Phase-Status, offene Issues, Decisions-Log der letzten 5 Entscheidungen. So bleibt der CEO innerhalb seines Token-Budgets.

Message-Format

Jede Nachricht zwischen Orchestrator und Agent folgt einem einheitlichen Schema.

AgentMessage

{
  "message_id": "uuid",
  "timestamp": "ISO-8601",
  "from": "orchestrator",
  "to": "agent_role",
  "type": "task | review | decision | query | result",
  "payload": { ... },
  "context": {
    "project_id": "...",
    "phase_id": 1,
    "relevant_state": { ... }  // komprimierter Ausschnitt
  },
  "metadata": {
    "tokens_in": 0,
    "tokens_out": 0,
    "duration_ms": 0,
    "model": "...",
    "retry": 0
  }
}

Task-Schema

Task-Objekt

{
  "id": "task-001",
  "title": "API-Endpoint für User-Login erstellen",
  "description": "Detaillierte Beschreibung...",
  "acceptance_criteria": ["POST /auth/login", "JWT zurückgeben", "Rate-Limiting"],
  "complexity": 3,          // 1-5 Skala
  "depends_on": ["task-000"], // Abhängigkeiten innerhalb der Phase
  "deliverables": ["code", "tests"],
  "context_files": ["src/auth/"]  // Nur diese Dateien dem Worker geben
}

Komplexitäts-Skala

LevelLabelBeschreibungBeispiel
1TrivialConfig-Änderung, RenameENV-Variable hinzufügen
2EinfachKlare, kleine AufgabeNeuen API-Endpoint scaffolden
3MittelStandardaufgabe mit etwas LogikCRUD mit Validierung
4KomplexMehrere Komponenten betroffenAuth-System mit JWT + Refresh
5Sehr komplexArchitektur-Entscheidungen nötigReal-Time Sync Engine

Projekt-Lifecycle

INIT ──▶ PLANNING ──▶ PHASING ──▶ EXECUTION ──▶ COMPLETED │ │ │ ┌─────┘ │ ▼ │ ┌──────────────────────────────────────┐ PHASE LOOP (wiederholt pro Phase) Estimate ──▶ Workers ──▶ Critic ▲ ──▶ Pragmatist │ ──▶ Integrator │ ──▶ CEO Approval │ │ └──RETRY──────┘ (max 2×) └──────────────────────────────────────┘ │ │ └──────────────┘ nächste Phase

Status-Transitions

StatusTriggerNächster Status
initHuman gibt Briefingplanning
planningPlanner liefert ProjectPlanphasing
phasingProjectManager liefert Roadmapin_progress
in_progressAlle Phasen completedcompleted
in_progressMax-Retries überschrittenfailed (mit Report)

Phasen-Loop (Detail)

Für jede Phase wird folgender Zyklus durchlaufen:

🔄 Phase-Execution-Cycle
  1. Estimator bekommt Task-Liste der Phase → gibt Pakete zurück
  2. Orchestrator startet N Worker parallel (1 pro Paket)
  3. Workers liefern Ergebnisse → Orchestrator sammelt alle
  4. Critic bekommt alle Ergebnisse + Original-Anforderungen
  5. Pragmatist filtert Kritik, korrigiert valide Punkte
  6. Integrator prüft Kompatibilität aller Teilergebnisse
  7. CEO bekommt Integrations-Report → approve_phase oder request_rework
  8. Orchestrator aktualisiert State-File → nächste Phase oder Retry

Review-Cycle

Der dreistufige Review-Prozess ist das Qualitäts-Herzstück des Systems:

Worker-Ergebnisse │ ▼ ┌─────────────────┐ │ CRITIC │ Findet ALLE möglichen Probleme │ │ Output: issues[] mit severity └────────┬────────┘ │ ▼ ┌─────────────────┐ │ PRAGMATIST │ Filtert: ~50% dismissed, ~50% valid │ │ Korrigiert valide Issues direkt └────────┬────────┘ │ ▼ ┌─────────────────┐ │ INTEGRATOR │ Prüft Gesamt-Kompatibilität │ │ Output: compatible: true/false └────────┬────────┘ │ ┌────┴────┐ ▼ ▼ ✅ OK ❌ FAIL │ │ ▼ ▼ CEO ✓ RETRY (max 2×, dann Eskalation)

Error-Recovery

Ohne klare Fehlerbehandlung können Agents in Endlosschleifen landen. Das System definiert strikte Regeln.

Retry-Matrix

FehlertypMax RetriesStrategieEskalation
Worker liefert fehlerhaftes Ergebnis 2 Neuer Worker mit Fehler-Feedback im Prompt CEO reformuliert Task
Integration schlägt fehl 1 Betroffene Worker neu starten mit Integrations-Hinweisen CEO splittet Phase
CEO kann nicht entscheiden 0 Human-Intervention
API-Fehler / Rate-Limit 3 Exponential Backoff (5s, 15s, 45s) Pause + Benachrichtigung
Token-Limit überschritten 1 Task-Paket kleiner machen Estimator re-run mit niedrigerem Budget
🚨 Hard-Stop-Regel
Wenn eine Phase nach 2 vollständigen Retry-Cycles (Worker → Critic → Pragmatist → Integrator) immer noch fehlschlägt, wird das Projekt in failed gesetzt und ein detaillierter Fehlerbericht an den Menschen generiert. Kein automatisches Weiterlaufen.

Tech-Stack Empfehlungen

KomponenteOption A (lightweight)Option B (skalierbar)
Orchestrator Python + asyncio n8n Workflow
LLM-Provider Anthropic API (Claude Opus für CEO/Planner, Sonnet für Rest)
State-Storage JSON-Dateien PostgreSQL + JSON-Columns
Message Queue In-Memory (asyncio.Queue) Redis oder PostgreSQL LISTEN/NOTIFY
RAG-System pgvector + Embedding-Modell
Logging JSON-Dateien im logs/ PostgreSQL Audit-Tabelle
Benachrichtigung Telegram Bot (Status-Updates, Fehler, Abschluss)

Dateistruktur

ai-company-system/
├── config/
│   ├── orchestrator.config.json
│   └── agents/
│       ├── ceo.prompt.md
│       ├── planner.prompt.md
│       ├── project_manager.prompt.md
│       ├── estimator.prompt.md
│       ├── worker.prompt.md
│       ├── critic.prompt.md
│       ├── pragmatist.prompt.md
│       ├── integrator.prompt.md
│       └── researcher.prompt.md
├── src/
│   ├── orchestrator.py          # Hauptprozess
│   ├── agent_runner.py          # LLM-API-Aufrufe
│   ├── state_manager.py         # project_state.json R/W
│   ├── message_router.py        # Nachrichtenverteilung
│   ├── parallel_dispatcher.py   # Worker-Parallelisierung
│   └── error_handler.py         # Retry + Eskalation
├── data/
│   └── projects/
│       └── {project_id}/
│           ├── project_state.json
│           ├── phases/
│           │   ├── phase_1_results.json
│           │   └── phase_2_results.json
│           └── artifacts/        # generierte Dateien
├── logs/
│   └── {project_id}/
│       ├── agent_calls.jsonl     # jeder API-Call
│       └── decisions.jsonl       # CEO-Entscheidungen
├── rag/
│   ├── embeddings.py
│   └── sources/               # Gesetzbücher, Docs etc.
└── README.md

Skalierung

Horizontale Skalierung

Optimierungshebel

HebelWirkungTrade-off
Paketgröße erhöhenWeniger API-CallsHöheres Fehlerrisiko pro Paket
Billigeres Modell für WorkerKostenersparnis ~60%Mehr Fehler, mehr Retries
Review-Steps reduzierenSchneller, günstigerWeniger Qualitätssicherung
Kontext-KomprimierungMehr Tasks pro SessionRisiko von Informationsverlust

Kosten & Token-Budget

Grobe Kalkulation pro Phase mit 25 Tasks (5 Pakete à 5 Tasks):

AgentAufrufe~Tokens In~Tokens OutModell
Estimator3.0002.000Sonnet
Worker ×55.000 × 54.000 × 5Sonnet
Critic15.0003.000Sonnet
Pragmatist12.0004.000Sonnet
Integrator15.0003.000Sonnet
CEO5.0002.000Opus
Gesamt pro Phase~75.000~34.000
ℹ️ Kostenschätzung
Bei aktuellen Anthropic-Preisen (Feb 2026): Eine Phase mit 25 Tasks kostet ca. $0.50–$1.50 je nach Komplexität. Ein Projekt mit 10 Phasen: ~$5–$15. Das ist signifikant günstiger als Entwicklerzeit für die gleiche Arbeit.

AI Company System · Technische Architektur v1.0 · Februar 2026