Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
diffs ist ein optionales Plugin-Tool mit kurzer integrierter Systemanleitung und einer begleitenden Skill, die Änderungsinhalte in ein schreibgeschütztes Diff-Artefakt für Agents umwandelt.
Es akzeptiert entweder:
before- undafter-Text- einen vereinheitlichten
patch
- eine Gateway-Viewer-URL für Canvas-Präsentationen
- einen gerenderten Dateipfad (PNG oder PDF) für die Nachrichtenzustellung
- beide Ausgaben in einem Aufruf
Schnellstart
Integrierte Systemanleitung deaktivieren
Wenn Sie dasdiffs-Tool aktiviert lassen, aber seine integrierte System-Prompt-Anleitung deaktivieren möchten, setzen Sie plugins.entries.diffs.hooks.allowPromptInjection auf false:
before_prompt_build-Hook des diffs-Plugins, während Plugin, Tool und begleitende Skill verfügbar bleiben.
Wenn Sie sowohl die Anleitung als auch das Tool deaktivieren möchten, deaktivieren Sie stattdessen das Plugin.
Typischer Agent-Workflow
Eingabebeispiele
- Vorher und nachher
- Patch
Tool-Eingabereferenz
Alle Felder sind optional, sofern nicht anders angegeben.Ursprünglicher Text. Erforderlich mit
after, wenn patch ausgelassen wird.Aktualisierter Text. Erforderlich mit
before, wenn patch ausgelassen wird.Vereinheitlichter Diff-Text. Schließt sich gegenseitig mit
before und after aus.Anzuzeigender Dateiname für den Vorher-und-nachher-Modus.
Sprachüberschreibungshinweis für den Vorher-und-nachher-Modus. Unbekannte Werte fallen auf Nur-Text zurück.
Überschreibung des Viewer-Titels.
Ausgabemodus. Standardmäßig der Plugin-Standardwert
defaults.mode. Veralteter Alias: "image" verhält sich wie "file" und wird aus Gründen der Abwärtskompatibilität weiterhin akzeptiert.Viewer-Theme. Standardmäßig der Plugin-Standardwert
defaults.theme.Diff-Layout. Standardmäßig der Plugin-Standardwert
defaults.layout.Unveränderte Abschnitte erweitern, wenn vollständiger Kontext verfügbar ist. Nur Option pro Aufruf (kein Plugin-Standardschlüssel).
Gerendertes Dateiformat. Standardmäßig der Plugin-Standardwert
defaults.fileFormat.Qualitätsvorgabe für PNG- oder PDF-Rendering.
Überschreibung der Geräteskalierung (
1-4).Maximale Renderbreite in CSS-Pixeln (
640-2400).Artefakt-TTL in Sekunden für Viewer- und eigenständige Dateiausgaben. Max. 21600.
Überschreibung des Viewer-URL-Ursprungs. Überschreibt Plugin
viewerBaseUrl. Muss http oder https sein, keine Abfrage/kein Hash.Legacy-Eingabealiase
Legacy-Eingabealiase
Aus Gründen der Abwärtskompatibilität weiterhin akzeptiert:
format->fileFormatimageFormat->fileFormatimageQuality->fileQualityimageScale->fileScaleimageMaxWidth->fileMaxWidth
Validierung und Grenzwerte
Validierung und Grenzwerte
beforeundafterjeweils max. 512 KiB.patchmax. 2 MiB.pathmax. 2048 Byte.langmax. 128 Byte.titlemax. 1024 Byte.- Obergrenze für Patch-Komplexität: max. 128 Dateien und insgesamt 120000 Zeilen.
patchzusammen mitbeforeoderafterwird abgelehnt.- Sicherheitsgrenzwerte für gerenderte Dateien (gelten für PNG und PDF):
fileQuality: "standard": max. 8 MP (8.000.000 gerenderte Pixel).fileQuality: "hq": max. 14 MP (14.000.000 gerenderte Pixel).fileQuality: "print": max. 24 MP (24.000.000 gerenderte Pixel).- PDF hat außerdem ein Maximum von 50 Seiten.
Vertrag für Ausgabedetails
Das Tool gibt strukturierte Metadaten unterdetails zurück.
Viewer-Felder
Viewer-Felder
Gemeinsame Felder für Modi, die einen Viewer erstellen:
artifactIdviewerUrlviewerPathtitleexpiresAtinputKindfileCountmodecontext(agentId,sessionId,messageChannel,agentAccountId, wenn verfügbar)
Dateifelder
Dateifelder
Dateifelder, wenn PNG oder PDF gerendert wird:
artifactIdexpiresAtfilePathpath(derselbe Wert wiefilePath, für Kompatibilität mit dem message-Tool)fileBytesfileFormatfileQualityfileScalefileMaxWidth
Kompatibilitätsaliase
Kompatibilitätsaliase
Für bestehende Aufrufer ebenfalls zurückgegeben:
format(derselbe Wert wiefileFormat)imagePath(derselbe Wert wiefilePath)imageBytes(derselbe Wert wiefileBytes)imageQuality(derselbe Wert wiefileQuality)imageScale(derselbe Wert wiefileScale)imageMaxWidth(derselbe Wert wiefileMaxWidth)
| Modus | Was zurückgegeben wird |
|---|---|
"view" | Nur Viewer-Felder. |
"file" | Nur Dateifelder, kein Viewer-Artefakt. |
"both" | Viewer-Felder plus Dateifelder. Wenn das Datei-Rendering fehlschlägt, wird der Viewer dennoch mit fileError und dem Alias imageError zurückgegeben. |
Eingeklappte unveränderte Abschnitte
- Der Viewer kann Zeilen wie
N unmodified linesanzeigen. - Erweiterungssteuerelemente in diesen Zeilen sind bedingt und nicht für jede Eingabeart garantiert.
- Erweiterungssteuerelemente erscheinen, wenn der gerenderte Diff erweiterbare Kontextdaten enthält, was für Vorher-und-nachher-Eingaben typisch ist.
- Bei vielen vereinheitlichten Patch-Eingaben sind ausgelassene Kontextkörper in den geparsten Patch-Hunks nicht verfügbar, sodass die Zeile ohne Erweiterungssteuerelemente erscheinen kann. Dies ist erwartetes Verhalten.
expandUnchangedgilt nur, wenn erweiterbarer Kontext vorhanden ist.
Plugin-Standardwerte
Legen Sie Plugin-weite Standardwerte in~/.openclaw/openclaw.json fest:
fontFamilyfontSizelineSpacinglayoutshowLineNumbersdiffIndicatorswordWrapbackgroundthemefileFormatfileQualityfileScalefileMaxWidthmodettlSeconds
Persistente Viewer-URL-Konfiguration
Plugin-eigene Rückfalloption für zurückgegebene Viewer-Links, wenn ein Tool-Aufruf
baseUrl nicht übergibt. Muss http oder https sein, keine Abfrage/kein Hash.Sicherheitskonfiguration
false: Nicht-local-loopback-Anfragen an Viewer-Routen werden verweigert. true: Remote-Viewer sind erlaubt, wenn der tokenisierte Pfad gültig ist.Artefaktlebenszyklus und Speicherung
- Artefakte werden im temporären Unterordner gespeichert:
$TMPDIR/openclaw-diffs. - Viewer-Artefaktmetadaten enthalten:
- zufällige Artefakt-ID (20 Hex-Zeichen)
- zufälliges Token (48 Hex-Zeichen)
createdAtundexpiresAt- gespeicherter
viewer.html-Pfad
- Die standardmäßige Artefakt-TTL beträgt 30 Minuten, wenn sie nicht angegeben wird.
- Die maximal akzeptierte Viewer-TTL beträgt 6 Stunden.
- Die Bereinigung wird nach der Artefakterstellung opportunistisch ausgeführt.
- Abgelaufene Artefakte werden gelöscht.
- Die Rückfallbereinigung entfernt veraltete Ordner, die älter als 24 Stunden sind, wenn Metadaten fehlen.
Viewer-URL und Netzwerkverhalten
Viewer-Route:/plugins/diffs/view/{artifactId}/{token}
/plugins/diffs/assets/viewer.js/plugins/diffs/assets/viewer-runtime.js
baseUrl-Pfadpräfix auch für beide Asset-Anfragen beibehalten wird.
URL-Konstruktionsverhalten:
- Wenn Tool-Aufruf-
baseUrlangegeben ist, wird es nach strenger Validierung verwendet. - Andernfalls, wenn Plugin
viewerBaseUrlkonfiguriert ist, wird es verwendet. - Ohne eine der beiden Überschreibungen ist die Viewer-URL standardmäßig local loopback
127.0.0.1. - Wenn der Gateway-Bind-Modus
customist undgateway.customBindHostgesetzt ist, wird dieser Host verwendet.
baseUrl-Regeln:
- Muss
http://oderhttps://sein. - Abfrage und Hash werden abgelehnt.
- Ursprung plus optionaler Basispfad ist erlaubt.
Sicherheitsmodell
Härtung des Viewers
Härtung des Viewers
- Standardmäßig nur Loopback.
- Tokenisierte Viewer-Pfade mit strenger ID- und Token-Validierung.
- CSP für Viewer-Antworten:
default-src 'none'- Skripte und Assets nur von derselben Quelle
- kein ausgehendes
connect-src
- Drosselung von Remote-Fehlversuchen, wenn Remote-Zugriff aktiviert ist:
- 40 Fehlversuche pro 60 Sekunden
- 60 Sekunden Sperre (
429 Too Many Requests)
Härtung des Datei-Renderings
Härtung des Datei-Renderings
- Das Routing von Screenshot-Browseranfragen ist standardmäßig verweigernd.
- Nur lokale Viewer-Assets von
http://127.0.0.1/plugins/diffs/assets/*sind erlaubt. - Externe Netzwerkanfragen werden blockiert.
Browseranforderungen für den Dateimodus
mode: "file" und mode: "both" benötigen einen Chromium-kompatiblen Browser.
Auflösungsreihenfolge:
Umgebungsvariablen
OPENCLAW_BROWSER_EXECUTABLE_PATHBROWSER_EXECUTABLE_PATHPLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH
Diff PNG/PDF rendering requires a Chromium-compatible browser...
Fehlerbehebung
Eingabevalidierungsfehler
Eingabevalidierungsfehler
Provide patch or both before and after text.— geben Sie sowohlbeforeals auchafteran, oder geben Siepatchan.Provide either patch or before/after input, not both.— mischen Sie die Eingabemodi nicht.Invalid baseUrl: ...— verwenden Sie einenhttp(s)-Ursprung mit optionalem Pfad, ohne Query/Hash.{field} exceeds maximum size (...)— reduzieren Sie die Payload-Größe.- Ablehnung großer Patches — reduzieren Sie die Anzahl der Patch-Dateien oder die Gesamtzahl der Zeilen.
Viewer-Zugänglichkeit
Viewer-Zugänglichkeit
- Die Viewer-URL wird standardmäßig zu
127.0.0.1aufgelöst. - Für Remote-Zugriffsszenarien entweder:
- Plugin-
viewerBaseUrlfestlegen, oder baseUrlpro Tool-Aufruf übergeben, odergateway.bind=customundgateway.customBindHostverwenden
- Plugin-
- Wenn
gateway.trustedProxiesLoopback für einen Proxy auf demselben Host enthält (zum Beispiel Tailscale Serve), schlagen rohe Loopback-Viewer-Anfragen ohne weitergeleitete Client-IP-Header absichtlich geschlossen fehl. - Für diese Proxy-Topologie:
- bevorzugen Sie
mode: "file"odermode: "both", wenn Sie nur einen Anhang benötigen, oder - aktivieren Sie bewusst
security.allowRemoteViewerund legen Sie Plugin-viewerBaseUrlfest oder übergeben Sie eine Proxy-/öffentlichebaseUrl, wenn Sie eine teilbare Viewer-URL benötigen
- bevorzugen Sie
- Aktivieren Sie
security.allowRemoteViewernur, wenn Sie externen Viewer-Zugriff beabsichtigen.
Zeile mit unveränderten Zeilen hat keine Aufklappschaltfläche
Zeile mit unveränderten Zeilen hat keine Aufklappschaltfläche
Dies kann bei Patch-Eingaben passieren, wenn der Patch keinen erweiterbaren Kontext enthält. Dies ist erwartet und deutet nicht auf einen Viewer-Fehler hin.
Artefakt nicht gefunden
Artefakt nicht gefunden
- Artefakt ist aufgrund der TTL abgelaufen.
- Token oder Pfad wurde geändert.
- Bereinigung hat veraltete Daten entfernt.
Betriebliche Hinweise
- Bevorzugen Sie
mode: "view"für lokale interaktive Reviews in Canvas. - Bevorzugen Sie
mode: "file"für ausgehende Chat-Kanäle, die einen Anhang benötigen. - Lassen Sie
allowRemoteViewerdeaktiviert, sofern Ihre Bereitstellung keine Remote-Viewer-URLs erfordert. - Legen Sie für vertrauliche Diffs explizit kurze
ttlSecondsfest. - Vermeiden Sie es, Geheimnisse in Diff-Eingaben zu senden, wenn dies nicht erforderlich ist.
- Wenn Ihr Kanal Bilder stark komprimiert (zum Beispiel Telegram oder WhatsApp), bevorzugen Sie PDF-Ausgabe (
fileFormat: "pdf").
Diff-Rendering-Engine bereitgestellt von Diffs.