diffs is een optionele plugintool met korte ingebouwde systeeminstructies en een begeleidende skill die wijzigingsinhoud omzet in een read-only diff-artefact voor agents.
De tool accepteert een van beide:
before- enafter-tekst- een unified
patch
- een Gateway-viewer-URL voor canvaspresentatie
- een gerenderd bestandspad (PNG of PDF) voor berichtbezorging
- beide outputs in één aanroep
Snelstart
Ingebouwde systeeminstructies uitschakelen
Als je dediffs-tool ingeschakeld wilt houden maar de ingebouwde systeemprompt-instructies wilt uitschakelen, stel je plugins.entries.diffs.hooks.allowPromptInjection in op false:
before_prompt_build-hook van de diffs-Plugin, terwijl de Plugin, tool en begeleidende skill beschikbaar blijven.
Als je zowel de instructies als de tool wilt uitschakelen, schakel dan de Plugin zelf uit.
Typische agentworkflow
Invoervoorbeelden
- Voor en na
- Patch
Referentie voor toolinvoer
Alle velden zijn optioneel, tenzij anders vermeld.Oorspronkelijke tekst. Vereist met
after wanneer patch is weggelaten.Bijgewerkte tekst. Vereist met
before wanneer patch is weggelaten.Unified diff-tekst. Wederzijds uitsluitend met
before en after.Weergavenaam voor bestand in de voor-en-na-modus.
Taaloverride-hint voor de voor-en-na-modus. Onbekende waarden en talen buiten de standaard viewerset vallen terug op platte tekst, tenzij de
Diff Viewer Language Pack-Plugin is geïnstalleerd.
Override voor viewertitel.
Outputmodus. Standaardwaarde is de Plugin-standaard
defaults.mode. Verouderde alias: "image" gedraagt zich als "file" en wordt nog steeds geaccepteerd voor achterwaartse compatibiliteit.Viewerthema. Standaardwaarde is de Plugin-standaard
defaults.theme.Diff-layout. Standaardwaarde is de Plugin-standaard
defaults.layout.Vouw ongewijzigde secties uit wanneer volledige context beschikbaar is. Alleen optie per aanroep (geen Plugin-standaardsleutel).
Gerenderde bestandsindeling. Standaardwaarde is de Plugin-standaard
defaults.fileFormat.Kwaliteitspreset voor PNG- of PDF-rendering.
Override voor apparaatschaal (
1-4).Maximale renderbreedte in CSS-pixels (
640-2400).Artefact-TTL in seconden voor viewer- en zelfstandige bestandsoutputs. Max. 21600.
Override voor oorsprong van viewer-URL. Overschrijft Plugin
viewerBaseUrl. Moet http of https zijn, zonder query/hash.Verouderde invoeraliases
Verouderde invoeraliases
Nog steeds geaccepteerd voor achterwaartse compatibiliteit:
format->fileFormatimageFormat->fileFormatimageQuality->fileQualityimageScale->fileScaleimageMaxWidth->fileMaxWidth
Validatie en limieten
Validatie en limieten
beforeenafterelk maximaal 512 KiB.patchmaximaal 2 MiB.pathmaximaal 2048 bytes.langmaximaal 128 bytes.titlemaximaal 1024 bytes.- Limiet voor patchcomplexiteit: maximaal 128 bestanden en 120000 totale regels.
patchsamen metbeforeofafterwordt geweigerd.- Veiligheidslimieten voor gerenderde bestanden (van toepassing op PNG en PDF):
fileQuality: "standard": maximaal 8 MP (8.000.000 gerenderde pixels).fileQuality: "hq": maximaal 14 MP (14.000.000 gerenderde pixels).fileQuality: "print": maximaal 24 MP (24.000.000 gerenderde pixels).- PDF heeft daarnaast een maximum van 50 pagina’s.
Syntaxismarkering
OpenClaw bevat syntaxismarkering voor gangbare broncode-, configuratie- en documentatietalen:javascript, typescript, tsx, jsx, json, markdown, yaml, css, html, sh, python, go, rust, java, c, cpp, csharp, php, sql, docker, ruby, swift, kotlin, r, dart, lua, powershell, xml en toml.
Gangbare aliassen zoals js, ts, bash, md, yml, c++, dockerfile, rb, kt en ps1 worden genormaliseerd naar die standaardtalen.
Installeer de Diff Viewer Language Pack-plugin om andere talen te highlighten:
Contract voor uitvoerdetails
De tool retourneert gestructureerde metadata onderdetails.
Viewer-velden
Viewer-velden
Gedeelde velden voor modi die een viewer maken:
artifactIdviewerUrlviewerPathtitleexpiresAtinputKindfileCountmodecontext(agentId,sessionId,messageChannel,agentAccountIdindien beschikbaar)
Bestandsvelden
Bestandsvelden
Bestandsvelden wanneer PNG of PDF wordt gerenderd:
artifactIdexpiresAtfilePathpath(dezelfde waarde alsfilePath, voor compatibiliteit met message tools)fileBytesfileFormatfileQualityfileScalefileMaxWidth
Compatibiliteitsaliassen
Compatibiliteitsaliassen
Ook geretourneerd voor bestaande callers:
format(dezelfde waarde alsfileFormat)imagePath(dezelfde waarde alsfilePath)imageBytes(dezelfde waarde alsfileBytes)imageQuality(dezelfde waarde alsfileQuality)imageScale(dezelfde waarde alsfileScale)imageMaxWidth(dezelfde waarde alsfileMaxWidth)
| Modus | Wat wordt geretourneerd |
|---|---|
"view" | Alleen viewer-velden. |
"file" | Alleen bestandsvelden, geen viewer-artifact. |
"both" | Viewer-velden plus bestandsvelden. Als bestandsrendering mislukt, retourneert de viewer nog steeds met alias fileError en imageError. |
Samengevouwen ongewijzigde secties
- De viewer kan rijen tonen zoals
N unmodified lines. - Uitklapknoppen op die rijen zijn voorwaardelijk en niet gegarandeerd voor elk inputtype.
- Uitklapknoppen verschijnen wanneer de gerenderde diff uitbreidbare contextgegevens heeft, wat typisch is voor invoer voor en na.
- Voor veel unified patch-invoer zijn weggelaten contextgedeelten niet beschikbaar in de geparsete patch-hunks, dus de rij kan zonder uitklapknoppen verschijnen. Dit is verwacht gedrag.
expandUnchangedis alleen van toepassing wanneer uitbreidbare context bestaat.
Plugin-standaardwaarden
Stel Plugin-brede standaardwaarden in~/.openclaw/openclaw.json in:
fontFamilyfontSizelineSpacinglayoutshowLineNumbersdiffIndicatorswordWrapbackgroundthemefileFormatfileQualityfileScalefileMaxWidthmodettlSeconds
Configuratie voor permanente viewer-URL
Plugin-eigen fallback voor geretourneerde viewerlinks wanneer een toolaanroep geen
baseUrl doorgeeft. Moet http of https zijn, zonder query/hash.Beveiligingsconfiguratie
false: niet-loopback-verzoeken naar viewerroutes worden geweigerd. true: remote viewers zijn toegestaan als het getokeniseerde pad geldig is.Artifact-levenscyclus en opslag
- Artefacten worden opgeslagen onder de tijdelijke submap:
$TMPDIR/openclaw-diffs. - Metadata van viewer-artefacten bevat:
- willekeurige artefact-ID (20 hex-tekens)
- willekeurig token (48 hex-tekens)
createdAtenexpiresAt- opgeslagen pad naar
viewer.html
- De standaard-TTL voor artefacten is 30 minuten wanneer deze niet is opgegeven.
- De maximaal geaccepteerde viewer-TTL is 6 uur.
- Opschoning wordt opportunistisch uitgevoerd na het maken van artefacten.
- Verlopen artefacten worden verwijderd.
- Fallback-opschoning verwijdert verouderde mappen ouder dan 24 uur wanneer metadata ontbreekt.
Viewer-URL en netwerkgedrag
Viewer-route:/plugins/diffs/view/{artifactId}/{token}
/plugins/diffs/assets/viewer.js/plugins/diffs/assets/viewer-runtime.js/plugins/diffs-language-pack/assets/viewer.jswanneer de diff een taal uit het Diff Viewer Language Pack gebruikt
baseUrl-padprefix ook voor beide asset-aanvragen behouden blijft.
Gedrag voor URL-opbouw:
- Als tool-aanroep
baseUrlis opgegeven, wordt deze gebruikt na strikte validatie. - Anders, als Plugin
viewerBaseUrlis geconfigureerd, wordt deze gebruikt. - Zonder een van beide overrides gebruikt de viewer-URL standaard loopback
127.0.0.1. - Als de Gateway-bindmodus
customis engateway.customBindHostis ingesteld, wordt die host gebruikt.
baseUrl-regels:
- Moet
http://ofhttps://zijn. - Query en hash worden geweigerd.
- Origin plus optioneel basispad is toegestaan.
Beveiligingsmodel
Viewer-verharding
Viewer-verharding
- Standaard alleen loopback.
- Getokeniseerde viewer-paden met strikte ID- en tokenvalidatie.
- CSP voor viewer-respons:
default-src 'none'- scripts en assets alleen van self
- geen uitgaande
connect-src
- Beperking van externe missers wanneer externe toegang is ingeschakeld:
- 40 mislukkingen per 60 seconden
- 60 seconden blokkering (
429 Too Many Requests)
Verharding van bestandsweergave
Verharding van bestandsweergave
- Routering van screenshot-browseraanvragen is standaard geweigerd.
- Alleen lokale viewer-assets van
http://127.0.0.1/plugins/diffs/assets/*zijn toegestaan. - Externe netwerkaanvragen worden geblokkeerd.
Browservereisten voor bestandsmodus
mode: "file" en mode: "both" hebben een Chromium-compatibele browser nodig.
Volgorde van oplossing:
Omgevingsvariabelen
OPENCLAW_BROWSER_EXECUTABLE_PATHBROWSER_EXECUTABLE_PATHPLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH
Diff PNG/PDF rendering requires a Chromium-compatible browser...
Probleemoplossing
Invoervalidatiefouten
Invoervalidatiefouten
Provide patch or both before and after text.— voeg zowelbeforealsaftertoe, of geefpatchop.Provide either patch or before/after input, not both.— meng invoermodi niet.Invalid baseUrl: ...— gebruikhttp(s)-origin met optioneel pad, geen query/hash.{field} exceeds maximum size (...)— verklein de payload.- Weigering van grote patch — verminder het aantal patchbestanden of het totale aantal regels.
Toegankelijkheid van viewer
Toegankelijkheid van viewer
- De viewer-URL wordt standaard opgelost naar
127.0.0.1. - Voor scenario’s met externe toegang:
- stel Plugin
viewerBaseUrlin, of - geef
baseUrlper tool-aanroep door, of - gebruik
gateway.bind=customengateway.customBindHost
- stel Plugin
- Als
gateway.trustedProxiesloopback bevat voor een proxy op dezelfde host (bijvoorbeeld Tailscale Serve), falen ruwe loopback-viewer-aanvragen zonder doorgestuurde client-IP-headers bewust gesloten. - Voor die proxy-topologie:
- geef de voorkeur aan
mode: "file"ofmode: "both"wanneer je alleen een bijlage nodig hebt, of - schakel bewust
security.allowRemoteViewerin en stel PluginviewerBaseUrlin of geef een proxy/openbarebaseUrldoor wanneer je een deelbare viewer-URL nodig hebt
- geef de voorkeur aan
- Schakel
security.allowRemoteVieweralleen in wanneer je externe viewer-toegang bedoelt.
Rij met ongewijzigde regels heeft geen uitklapknop
Rij met ongewijzigde regels heeft geen uitklapknop
Dit kan gebeuren bij patch-invoer wanneer de patch geen uitbreidbare context bevat. Dit is verwacht en duidt niet op een viewer-fout.
Artefact niet gevonden
Artefact niet gevonden
- Artefact verlopen door TTL.
- Token of pad gewijzigd.
- Opschoning heeft verouderde gegevens verwijderd.
Operationele richtlijnen
- Geef de voorkeur aan
mode: "view"voor lokale interactieve reviews in canvas. - Geef de voorkeur aan
mode: "file"voor uitgaande chatkanalen die een bijlage nodig hebben. - Laat
allowRemoteVieweruitgeschakeld tenzij je deployment externe viewer-URL’s vereist. - Stel expliciete korte
ttlSecondsin voor gevoelige diffs. - Vermijd het verzenden van geheimen in diff-invoer wanneer dit niet vereist is.
- Als je kanaal afbeeldingen agressief comprimeert (bijvoorbeeld Telegram of WhatsApp), geef dan de voorkeur aan PDF-uitvoer (
fileFormat: "pdf").
Diff-renderingengine aangedreven door Diffs.