Durchsetzung harter Leitplanken für OpenClaw-KI-Agenten: Genehmigungs-Gating und Nebenläufigkeitsgrenzen

Ein Entwickler, der einen OpenClaw-Bot auf einem Mac mini mit Ollama (GLM 5.2, Fallback auf Anthropic Sonnet 4.6 und Haiku) betreibt, stieß auf ein klassisches Problem: Der Bot verstößt wiederholt gegen strenge Regeln – wie „niemals E-Mails ohne Genehmigung senden“ und „maximal 5 gleichzeitige Aufrufe“ –, obwohl er jedes Mal sein Verständnis bestätigt. Die Hypothese des Benutzers trifft den Nagel auf den Kopf: Dies sind Regeln als Kontext, nicht Regeln als Einschränkungen. Das Modell behandelt Anweisungen als Empfehlungen, daher hilft weder Prompting noch Verstärkung durch Speicher.
Der Standard-Fix besteht darin, die Durchsetzung außerhalb der Denkschleife des Modells zu verlagern. Man kann sich nicht darauf verlassen, dass ein statistischer Textprädiktor harte Limits durchsetzt; man benötigt deterministische Prüfungen in der Orchestrierungsebene.
Genehmigungs-Gate für Tool-Aufrufe
Um E-Mails (oder andere gefährliche Aktionen) hinter eine Genehmigung zu stellen, ummanteln Sie den Tool-Aufruf mit einem Mensch-im-Kreis-Muster:
- Wenn das Modell den Versand einer E-Mail anfordert, fangen Sie den Aufruf ab, bevor er ausgeführt wird.
- Zeigen Sie eine Bestätigungsaufforderung in Discord an (z. B. Buttons oder eine Reaktion).
- Nur wenn der Benutzer zustimmt, führen Sie den tatsächlichen API-Aufruf aus.
# Pseudocode in Ihrem OpenClaw-Tool-Handler
if tool == "send_email":
message = f"Senden der E-Mail an {to} genehmigen?"
if not await discord_approval(message):
return "Benutzer abgelehnt. Nicht senden."
# mit dem E-Mail-API-Aufruf fortfahren
Dadurch wird sichergestellt, dass das Modell das Gate physisch nicht umgehen kann – egal was es sagt.
Nebenläufigkeitslimits auf Orchestrierungsebene
Für Nebenläufigkeitslimits wie „max. 5“ implementieren Sie einen Semaphor oder Zähler im Befehlsverteiler:
import asyncio
semaphore = asyncio.Semaphore(5)
async def handle_tool_call(tool, args):
async with semaphore:
# Tool-Aufruf ausführen
Jeder Versuch über das Limit hinaus wartet oder schlägt sofort fehl, unabhängig von der Absicht des Modells.
Ist das ein GLM/Ollama-spezifisches Problem?
Der Benutzer fragt, ob dies spezifisch für GLM oder allgemein für lokale Modelle gilt. Basierend auf der Diskussion in r/openclaw ist dies eine allgemeine LLM-Einschränkung – alle Modelle behandeln Anweisungen als Kontext, nicht als Einschränkungen. Allein durch Prompting können keine harten Limits durchgesetzt werden. Die Lösung erfordert immer eine Durchsetzung auf Infrastrukturebene.
Empfehlung
Hören Sie auf, Regeln im Speicher oder in Fähigkeiten zu wiederholen. Bauen Sie stattdessen explizite Prüfungen in Ihre Tool-Aufruf-Ebene ein. Behandeln Sie das Modell als Vorschlags-Engine, nicht als Richtliniendurchsetzer.
📖 Vollständige Quelle lesen: r/openclaw
👀 Siehe auch

Fehlstellen in Beiträgen zum Claude Code Workflow: Wiederherstellung, Einschränkungen und Berechtigungsverwaltung
Happy-Path-Claude-Code-Workflows sind üblich, aber sie vernachlässigen die Wiederherstellung nach schlechten Bearbeitungen, die Durchsetzung von Einschränkungen und das Berechtigungsmanagement – entscheidend für den praktischen Einsatz.

Claudes Forschungsergebnisse variieren je nach Sprache: Gleicher Prompt, unterschiedliche Quellen
Ein Reddit-Test zeigt, dass Claude je nach Sprache (Englisch, Chinesisch, Russisch, Spanisch, Hindi) unterschiedliche Quellen und Entwicklungen liefert – gleiches Modell, gleiche Struktur, abweichende Ergebnisse.

Claude Code Headless-Modus mit --print-Flag
Claude Code kann im Headless-Modus mit dem --print-Flag ausgeführt werden, was es ermöglicht, Prompts für automatisierte Ausgaben ohne interaktive Sitzungen einzulesen. Dies ermöglicht die Integration in CI/CD-Pipelines, Git-Hooks und Bash-Skripte.

Verwendung von OpenClaw Cron-Jobs für geplante Aufgaben anstelle von Heartbeat-Überwachung
Ein Reddit-Beitrag erklärt, wie man die Cron-Job-Funktion von OpenClaw für geplante Aufgaben wie Morgenbriefings und E-Mail-Sortierung nutzt, mit dem kritischen Flag --session isolated, um Kontextüberschreitungen zu verhindern, und warnt vor potenziellen Fehlern in isolierten Sitzungen über verschiedene Versionen hinweg.