Agentic OS
Behandle Claude Code als persistentes Laufzeitsystem / Betriebssystem und nicht als Chatsitzung. Diese Fähigkeit kodifiziert die Architektur, die in produktiven Agentic-Setups verwendet wird: eine Kernel-Konfiguration, die Aufgaben an Spezialagenten weiterleitet, persistentes dateibasiertes Gedächtnis, geplante Automatisierung und eine JSON/Markdown-Datenschicht.
Wann aktivieren
- Aufbau eines Multi-Agenten-Workflows innerhalb von Claude Code
- Einrichtung einer persistenten Claude Code-Automatisierung, die Sitzungsneustarts überlebt
- Erstellung eines "persönlichen OS" oder "Agentic OS" für wiederkehrende Aufgaben
- Benutzer sagt "Agentic OS", "Personal OS", "Multi-Agent", "Agent Coordinator", "Persistent Agent"
- Strukturierung langlaufender Projekte, bei denen Kontext über Sitzungen hinweg erhalten bleiben muss
Architekturüberblick
Das Agentic OS hat vier Schichten. Jede Schicht ist ein Verzeichnis im Projektstammverzeichnis.
project-root/
├── CLAUDE.md # Kernel: Identität, Routing-Regeln, Agentenregister
├── agents/ # Spezialagenten-Definitionen (Markdown-Prompts)
├── .claude/commands/ # Slash-Befehle: benutzerorientierte CLI
├── scripts/ # Daemon-Skripte: geplante oder ereignisgesteuerte Aufgaben
└── data/ # Zustand: JSON/Markdown-Dateisystem, keine externe DB
Zuständigkeiten der Schichten
| Schicht | Zweck | Persistenz |
|---|---|---|
Kernel (CLAUDE.md) | Identität, Routing, Modellrichtlinien, Agentenregister | Git-verfolgt |
Agents (agents/) | Spezialistenidentitäten mit eingeschränkten Werkzeugen und Gedächtnis | Git-verfolgt |
Commands (.claude/commands/) | Benutzerorientierte Slash-Befehle (/daily-sync, /outreach) | Git-verfolgt |
Scripts (scripts/) | Python/JS-Daemons, ausgelöst durch Cron oder Webhooks | Git-verfolgt |
State (data/) | Anfügeprotokolle, Projektzustand, Entscheidungsaufzeichnungen | Git-ignoriert oder -verfolgt |
Der Kernel
CLAUDE.md ist der Kernel. Er fungiert als COO / Orchestrator. Claude liest ihn zu Sitzungsbeginn und verwendet ihn, um Arbeit weiterzuleiten.
Kernel-Struktur
# CLAUDE.md - Agentic OS Kernel
## Identität
Du bist der COO von [Projektname]. Du leitest Aufgaben an Spezialagenten weiter.
Du schreibst niemals direkt Code. Du delegierst an den richtigen Agenten und synthetisierst Ergebnisse.
## Agentenregister
| Agent | Rolle | Auslöser |
|---|---|---|
| @dev | Code, Architektur, Debugging | Benutzer sagt "bauen", "fixen", "refaktorisieren" |
| @writer | Dokumentation, Inhalte, E-Mails | Benutzer sagt "schreiben", "entwurf", "blog" |
| @researcher | Recherche, Analyse, Faktenprüfung | Benutzer sagt "recherchieren", "analysieren", "vergleichen" |
| @ops | DevOps, Bereitstellung, Infrastruktur | Benutzer sagt "bereitstellen", "CI", "Server" |
## Routing-Regeln
1. Analysiere die Benutzeranfrage auf Absichtsschlüsselwörter
2. Gleiche mit der Spalte "Auslöser" im Agentenregister ab
3. Lade die entsprechende Agentendatei aus `agents/<name>.md`
4. Übergib die Ausführung mit vollständigem Kontext
5. Synthetisiere das Ergebnis und präsentiere es dem Benutzer
## Modellrichtlinien
- Standardmodell: Verwende das Repository oder den Harness-Standard.
- @dev-Aufgaben: Bevorzuge ein Modell mit höherer Argumentationsfähigkeit für komplexe Architektur.
- @researcher-Aufgaben: Verwende das konfigurierte, forschungsfähige Modell und genehmigte Suchwerkzeuge.
- Kostenobergrenze: Warne vor Überschreitung des konfigurierten Ausgabenschwellenwerts des Projekts.
Schlüsselprinzip
Der Kernel sollte klein und deklarativ sein. Die Routing-Logik lebt in einfachen Markdown-Tabellen, nicht in Code. Dies macht das System überprüfbar und editierbar ohne Debugging.
Spezialagenten
Jeder Agent ist eine eigenständige Markdown-Datei in agents/. Claude lädt die relevante Agentendatei beim Weiterleiten einer Aufgabe.
Format der Agentendefinition
# @dev - Softwareentwickler
## Identität
Du bist ein leitender Softwareentwickler. Du schreibst sauberen, getesteten, produktionsreifen Code.
Du bevorzugst einfache Lösungen. Du stellst klärende Fragen, wenn Anforderungen mehrdeutig sind.
## Gedächtnisumfang
- Lese `data/projects/<aktuelles-projekt>.md` für Kontext
- Lese `data/decisions/` für Architekturentscheidungen
- Füge Ausführungsprotokolle an `data/logs/<datum>[email protected]` an
## Werkzeugzugriff
- Vollständiger Dateisystemzugriff innerhalb des Projektstammverzeichnisses
- Git-Operationen (Status, Diff, Commit, Branch)
- Testläufer-Zugriff
- MCP-Server wie in `.claude/mcp.json` konfiguriert
## Einschränkungen
- Schreibe immer Tests für neue Funktionen
- Committe niemals direkt auf `main`; verwende Feature-Branches
- Bevorzuge das Bearbeiten vorhandener Dateien gegenüber dem Erstellen neuer
- Halte Funktionen wenn möglich unter 50 Zeilen
Multi-Agenten-Kollaborationsmuster
Wenn eine Aufgabe mehrere Agenten umfasst, führt der Kernel sie sequentiell oder parallel aus:
Benutzer: "Erstelle eine Landing Page und schreibe den Launch-Blogbeitrag"
Kernel-Routing:
1. @dev - "Erstelle eine Landing Page mit [Anforderungen]"
2. @writer - "Schreibe einen Launch-Blogbeitrag für [Produkt] unter Verwendung des Landing Page-Textes"
3. Kernel synthetisiert beide Ausgaben zu einer einheitlichen Antwort
Für parallele Ausführung verwende die Hintergrundaufgabenfunktion von Claude Code oder Shell-Skripte, die Claude Code mit spezifischen Agentenkontexten aufrufen.
Befehle und tägliche Workflows
Slash-Befehle sind Markdown-Dateien in .claude/commands/. Sie definieren wiederverwendbare Workflows.
Befehlstruktur
# /daily-sync
Führe die Morgenbesprechung durch:
1. Lese `data/logs/last-sync.md` für Kontext
2. Überprüfe den Projektstatus: `git status`, ausstehende PRs, CI-Gesundheit
3. Überprüfe `data/inbox/` auf neue Aufgaben oder benötigte Entscheidungen
4. Erstelle eine Zusammenfassung von Blockern, Prioritäten und nächsten Aktionen
5. Füge die Besprechung an `data/logs/daily/<datum>.md` an
Standardbefehlsset
| Befehl | Zweck |
|---|---|
/daily-sync | Morgenbesprechung: Status, Blocker, Prioritäten |
/outreach | Outreach-Workflow ausführen (E-Mail, LinkedIn, etc.) |
/research <thema> | Tiefgreifende Recherche mit Quellennachweis |
/apply-jobs | Lebenslauf + Anschreiben für eine Zielrolle anpassen |
/analytics | Metriken von Stripe, GitHub oder benutzerdefinierten Quellen abrufen |
/interview-prep | Karteikarten oder Mock-Interviewfragen generieren |
/decision <thema> | Eine Entscheidung mit Vor-/Nachteilen und gewähltem Weg protokollieren |
Befehle aktivieren
Lege Befehlsdateien in .claude/commands/<befehlsname>.md ab. Claude Code erkennt sie automatisch. Benutzer rufen sie mit /<befehlsname> auf.
Persistenter Speicher
Der Speicher ist dateibasiert. Keine Vektor-DB, kein Redis, kein PostgreSQL. JSON- und Markdown-Dateien in data/ sind die Datenbank.
Speicherverzeichnisstruktur
data/
├── daily-logs/ # Anfügeprotokolle täglicher Aktivitäten
├── projects/ # Kontextdateien pro Projekt
├── decisions/ # Architektur- und Geschäftsentscheidungen (ADR-Format)
├── inbox/ # Neue Aufgaben oder Ideen, die auf Triage warten
├── contacts/ # Personen, Unternehmen, Beziehungsnotizen
└── templates/ # Wiederverwendbare Prompts und Formate
Tägliches Protokollformat
# 2026-04-22 - Tägliches Protokoll
## Sitzungen
- 09:00 - Sitzung 1: Auth-Modul refaktorisiert (@dev)
- 11:30 - Sitzung 2: Investoren-Update entworfen (@writer)
## Entscheidungen
- Wechsel von JWT zu Sitzungscookies (siehe `data/decisions/2026-04-22-auth.md`)
## Blocker
- Warte auf API-Schlüssel vom Anbieter (Nachverfolgung 2026-04-24)
## Nächste Aktionen
- [ ] Auth-Refaktor-PR zusammenführen
- [ ] Investoren-Update zur Überprüfung senden
Automatisches Reflexionsmuster
Am Ende jeder Sitzung fügt der Kernel eine Reflexion an:
## Reflexion - Sitzung 3
- Was funktioniert hat: Parallele Agentenausführung sparte 20 Minuten
- Was nicht funktioniert hat: @researcher traf auf eine paywall-geschützte Quelle, bessere Quellenbewertung nötig
- Was zu ändern ist: Füge `source-tier`-Feld zu Forschungsnotizen hinzu (A/B/C-Glaubwürdigkeit)
Dies erzeugt eine Feedbackschleife, die das System im Laufe der Zeit ohne Codeänderungen verbessert.
Geplante Automatisierung
Agentic OS-Aufgaben werden nach einem Zeitplan mit externem Cron ausgeführt, nicht mit dem integrierten Cron von Claude Code (der endet, wenn die Sitzung endet).
macOS: LaunchAgent
<!-- ~/Library/LaunchAgents/com.agentic.daily-sync.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" ...>
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.agentic.daily-sync</string>
<key>ProgramArguments</key>
<array>
<string>/claude</string>
<string>--cwd</string>
<string>/pfad/zum/projekt</string>
<string>--command</string>
<string>/daily-sync</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>8</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>/tmp/agentic-daily-sync.log</string>
</dict>
</plist>
Linux: systemd Timer
# ~/.config/systemd/user/agentic-daily-sync.service
[Unit]
Description=Agentic OS Tägliche Synchronisation
[Service]
Type=oneshot
ExecStart=/usr/local/bin/claude --cwd /pfad/zum/projekt --command /daily-sync
# ~/.config/systemd/user/agentic-daily-sync.timer
[Unit]
Description=Tägliche Synchronisation jeden Morgen ausführen
[Timer]
OnCalendar=*-*-* 8:00:00
Persistent=true
[Install]
WantedBy=timers.target
Plattformübergreifend: pm2
# ecosystem.config.js
module.exports = {
apps: [{
name: 'agentic-daily-sync',
script: 'claude',
args: '--cwd /pfad/zum/projekt --command /daily-sync',
cron_restart: '0 8 * * *',
autorestart: false
}]
};
Datenschicht
Die Datenschicht ist dein Dateisystem. Verwende JSON für strukturierte Daten und Markdown für narrative Inhalte.
JSON für strukturierten Zustand
// data/projects/website-v2.json
{
"name": "Website v2",
"status": "in-arbeit",
"milestone": "beta-launch",
"agents_involved": ["@dev", "@writer"],
"files": {
"spec": "docs/website-v2-spec.md",
"design": "designs/website-v2.fig"
},
"metrics": {
"commits": 47,
"last_session": "2026-04-22T11:30:00Z"
}
}
Markdown für narrative Inhalte
Verwende Markdown für alles, was ein Mensch liest: Entscheidungen, Protokolle, Forschungsnotizen, Kontaktdatensätze.
Schemaentwicklung
Benenne vorhandene Felder niemals um. Füge neue Felder hinzu und markiere alte als veraltet:
{
"name": "Website v2",
"status": "in-arbeit",
"milestone": "beta-launch",
"_deprecated_priority": "hoch",
"priority_v2": { "level": "hoch", "rationale": "Blockiert Investoren-Demo" }
}
Dies hält historische Daten lesbar ohne Migrationsskripte.
Anti-Patterns
Monolithischer Einzelagent
# SCHLECHT - Ein Agent macht alles
Du bist ein Full-Stack-Entwickler, Autor, Forscher und DevOps-Ingenieur.
Teile in Spezialagenten auf. Der Kernel übernimmt das Routing.
Zustandslose Sitzungen
# SCHLECHT - Kein Gedächtnis zwischen Sitzungen
Jedes Mal frisch starten, wenn Claude Code geöffnet wird.
Lese immer data/ zu Sitzungsbeginn und schreibe am Sitzungsende zurück.
Hartcodierte Anmeldeinformationen
# SCHLECHT - API-Schlüssel in Agentendateien oder CLAUDE.md
Dein OpenAI API-Schlüssel ist sk-xxxxxxxx
Verwende Umgebungsvariablen oder eine .env-Datei, die von Skripten geladen wird. Agenten referenzieren process.env.API_KEY.
Externe Datenbank für einfachen Zustand
# SCHLECHT - PostgreSQL für das Agentic OS eines Einzelbenutzers
Verwende JSON/Markdown-Dateien, bis du mehrere gleichzeitige Benutzer oder GB an Daten hast.
Übertechnisiertes Routing
# SCHLECHT - Routing-Logik in Code statt in Markdown-Tabellen
if (intent.includes('deploy')) { agent = opsAgent; }
Halte Routing deklarativ in CLAUDE.md-Markdown-Tabellen. Es ist überprüfbar, editierbar und debugbar.
Best Practices
-
CLAUDE.mdist unter 200 Zeilen und passt in das Kontextfenster - Jede Agentendatei ist unter 100 Zeilen und auf eine Domäne fokussiert
-
data/ist für sensible Protokolle git-ignoriert, für Entscheidungen und Spezifikationen git-verfolgt - Befehle verwenden imperative Namen:
/daily-sync, nicht/run-daily-sync - Protokolle sind anfügeorientiert; bearbeite niemals vergangene tägliche Protokolle
- Jeder Agent hat einen Abschnitt
Memory Scope, der definiert, welche Dateien er liest - Reflexionen werden am Ende jeder Sitzung geschrieben
- Geplante Aufgaben verwenden externen Cron (LaunchAgent, systemd, pm2), nicht den Sitzungs-Cron von Claude Code
- Kostenverfolgung: Protokolliere API-Ausgaben pro Sitzung in
data/logs/<datum>-costs.json - Ein Projekt = ein Agentic OS. Teile kein einzelnes
CLAUDE.mdüber nicht zusammenhängende Projekte hinweg.