diffs to opcjonalne narzędzie Plugin z krótkimi wbudowanymi wskazówkami systemowymi i towarzyszącym Skill, które przekształca treść zmian w artefakt diff tylko do odczytu dla agentów.
Akceptuje jedno z poniższych:
- tekst
beforeiafter - ujednolicony
patch
- URL przeglądarki Gateway do prezentacji canvas
- ścieżkę wyrenderowanego pliku (PNG lub PDF) do dostarczenia w wiadomości
- oba wyniki w jednym wywołaniu
Szybki start
Wyłącz wbudowane wskazówki systemowe
Jeśli chcesz zachować włączone narzędziediffs, ale wyłączyć jego wbudowane wskazówki promptu systemowego, ustaw plugins.entries.diffs.hooks.allowPromptInjection na false:
before_prompt_build Plugin diffs, zachowując dostępność Plugin, narzędzia i towarzyszącego Skill.
Jeśli chcesz wyłączyć zarówno wskazówki, jak i narzędzie, wyłącz zamiast tego Plugin.
Typowy przepływ pracy agenta
Przykłady danych wejściowych
- Before and after
- Patch
Dokumentacja danych wejściowych narzędzia
Wszystkie pola są opcjonalne, chyba że zaznaczono inaczej.Tekst oryginalny. Wymagany z
after, gdy pominięto patch.Tekst zaktualizowany. Wymagany z
before, gdy pominięto patch.Tekst ujednoliconego diff. Wzajemnie wykluczający się z
before i after.Wyświetlana nazwa pliku dla trybu przed i po.
Podpowiedź nadpisania języka dla trybu przed i po. Nieznane wartości i języki spoza domyślnego zestawu przeglądarki wracają do zwykłego tekstu, chyba że zainstalowano Plugin Diff Viewer Language Pack.
Nadpisanie tytułu przeglądarki.
Tryb wyjścia. Domyślnie używa wartości domyślnej Plugin
defaults.mode. Przestarzały alias: "image" zachowuje się jak "file" i nadal jest akceptowany ze względu na kompatybilność wsteczną.Motyw przeglądarki. Domyślnie używa wartości domyślnej Plugin
defaults.theme.Układ diff. Domyślnie używa wartości domyślnej Plugin
defaults.layout.Rozwiń niezmienione sekcje, gdy dostępny jest pełny kontekst. Tylko opcja pojedynczego wywołania (nie klucz domyślny Plugin).
Format wyrenderowanego pliku. Domyślnie używa wartości domyślnej Plugin
defaults.fileFormat.Preset jakości renderowania PNG lub PDF.
Nadpisanie skali urządzenia (
1-4).Maksymalna szerokość renderowania w pikselach CSS (
640-2400).TTL artefaktu w sekundach dla przeglądarki i samodzielnych wyjść plikowych. Maks. 21600.
Nadpisanie źródła URL przeglądarki. Nadpisuje Plugin
viewerBaseUrl. Musi być http albo https, bez query/hash.Legacy input aliases
Legacy input aliases
Nadal akceptowane ze względu na kompatybilność wsteczną:
format->fileFormatimageFormat->fileFormatimageQuality->fileQualityimageScale->fileScaleimageMaxWidth->fileMaxWidth
Validation and limits
Validation and limits
beforeiaftermaksymalnie po 512 KiB.patchmaksymalnie 2 MiB.pathmaksymalnie 2048 bajtów.langmaksymalnie 128 bajtów.titlemaksymalnie 1024 bajty.- Limit złożoności patcha: maksymalnie 128 plików i 120000 łącznych wierszy.
patchrazem zbeforelubaftersą odrzucane.- Limity bezpieczeństwa wyrenderowanego pliku (dotyczą PNG i PDF):
fileQuality: "standard": maks. 8 MP (8 000 000 wyrenderowanych pikseli).fileQuality: "hq": maks. 14 MP (14 000 000 wyrenderowanych pikseli).fileQuality: "print": maks. 24 MP (24 000 000 wyrenderowanych pikseli).- PDF ma także limit maksymalnie 50 stron.
Podświetlanie składni
OpenClaw obejmuje podświetlanie składni dla popularnych języków kodu źródłowego, konfiguracji i dokumentacji: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 i toml.
Popularne aliasy, takie jak js, ts, bash, md, yml, c++, dockerfile, rb, kt i ps1, są normalizowane do tych domyślnych języków.
Zainstaluj Plugin Diff Viewer Language Pack, aby podświetlać inne języki:
Kontrakt szczegółów wyjścia
Narzędzie zwraca ustrukturyzowane metadane wdetails.
Pola przeglądarki
Pola przeglądarki
Wspólne pola dla trybów, które tworzą przeglądarkę:
artifactIdviewerUrlviewerPathtitleexpiresAtinputKindfileCountmodecontext(agentId,sessionId,messageChannel,agentAccountId, gdy dostępne)
Pola pliku
Pola pliku
Pola pliku, gdy renderowany jest PNG lub PDF:
artifactIdexpiresAtfilePathpath(ta sama wartość cofilePath, dla zgodności z narzędziem wiadomości)fileBytesfileFormatfileQualityfileScalefileMaxWidth
Aliasy zgodności
Aliasy zgodności
Zwracane także dla istniejących wywołujących:
format(ta sama wartość cofileFormat)imagePath(ta sama wartość cofilePath)imageBytes(ta sama wartość cofileBytes)imageQuality(ta sama wartość cofileQuality)imageScale(ta sama wartość cofileScale)imageMaxWidth(ta sama wartość cofileMaxWidth)
| Tryb | Co jest zwracane |
|---|---|
"view" | Tylko pola przeglądarki. |
"file" | Tylko pola pliku, bez artefaktu przeglądarki. |
"both" | Pola przeglądarki oraz pola pliku. Jeśli renderowanie pliku się nie powiedzie, przeglądarka nadal zostanie zwrócona z aliasami fileError i imageError. |
Zwinięte niezmienione sekcje
- Przeglądarka może pokazywać wiersze takie jak
N unmodified lines. - Kontrolki rozwijania w tych wierszach są warunkowe i nie są gwarantowane dla każdego rodzaju wejścia.
- Kontrolki rozwijania pojawiają się, gdy wyrenderowany diff zawiera dane kontekstu możliwe do rozwinięcia, co jest typowe dla wejścia przed i po.
- Dla wielu wejść w formacie unified patch pominięte treści kontekstu nie są dostępne w przeanalizowanych hunkach patcha, więc wiersz może pojawić się bez kontrolek rozwijania. To oczekiwane zachowanie.
expandUnchangedma zastosowanie tylko wtedy, gdy istnieje kontekst możliwy do rozwinięcia.
Domyślne ustawienia Pluginu
Ustaw domyślne ustawienia dla całego Pluginu w~/.openclaw/openclaw.json:
fontFamilyfontSizelineSpacinglayoutshowLineNumbersdiffIndicatorswordWrapbackgroundthemefileFormatfileQualityfileScalefileMaxWidthmodettlSeconds
Konfiguracja trwałego adresu URL przeglądarki
Fallback należący do Pluginu dla zwracanych linków przeglądarki, gdy wywołanie narzędzia nie przekazuje
baseUrl. Musi być http lub https, bez zapytania ani hasha.Konfiguracja zabezpieczeń
false: żądania do tras przeglądarki spoza local loopback są odrzucane. true: zdalne przeglądarki są dozwolone, jeśli ścieżka z tokenem jest prawidłowa.Cykl życia i przechowywanie artefaktów
- Artefakty są przechowywane w tymczasowym podfolderze:
$TMPDIR/openclaw-diffs. - Metadane artefaktu przeglądarki zawierają:
- losowy identyfikator artefaktu (20 znaków szesnastkowych)
- losowy token (48 znaków szesnastkowych)
createdAtiexpiresAt- zapisaną ścieżkę
viewer.html
- Domyślny TTL artefaktu wynosi 30 minut, gdy nie podano innej wartości.
- Maksymalny akceptowany TTL przeglądarki wynosi 6 godzin.
- Czyszczenie uruchamia się oportunistycznie po utworzeniu artefaktu.
- Wygasłe artefakty są usuwane.
- Czyszczenie awaryjne usuwa nieaktualne foldery starsze niż 24 godziny, gdy brakuje metadanych.
Adres URL przeglądarki i zachowanie sieciowe
Trasa przeglądarki:/plugins/diffs/view/{artifactId}/{token}
/plugins/diffs/assets/viewer.js/plugins/diffs/assets/viewer-runtime.js/plugins/diffs-language-pack/assets/viewer.jsgdy diff używa języka z Diff Viewer Language Pack
baseUrl jest zachowywany także dla obu żądań zasobów.
Zachowanie konstruowania adresu URL:
- Jeśli podano
baseUrlwywołania narzędzia, jest używany po ścisłej walidacji. - W przeciwnym razie, jeśli skonfigurowano
viewerBaseUrlpluginu, jest on używany. - Bez żadnego z tych nadpisań adres URL przeglądarki domyślnie używa loopback
127.0.0.1. - Jeśli tryb wiązania Gateway to
customi ustawionogateway.customBindHost, używany jest ten host.
baseUrl:
- Musi być
http://albohttps://. - Query i hash są odrzucane.
- Dozwolone jest origin plus opcjonalna ścieżka bazowa.
Model bezpieczeństwa
Wzmacnianie zabezpieczeń przeglądarki
Wzmacnianie zabezpieczeń przeglądarki
- Domyślnie tylko loopback.
- Tokenizowane ścieżki przeglądarki ze ścisłą walidacją identyfikatora i tokenu.
- CSP odpowiedzi przeglądarki:
default-src 'none'- skrypty i zasoby tylko z self
- brak wychodzącego
connect-src
- Ograniczanie zdalnych chybień, gdy dostęp zdalny jest włączony:
- 40 niepowodzeń na 60 sekund
- 60-sekundowa blokada (
429 Too Many Requests)
Wzmacnianie zabezpieczeń renderowania plików
Wzmacnianie zabezpieczeń renderowania plików
- Routing żądań przeglądarki zrzutu ekranu domyślnie odmawia dostępu.
- Dozwolone są tylko lokalne zasoby przeglądarki z
http://127.0.0.1/plugins/diffs/assets/*. - Zewnętrzne żądania sieciowe są blokowane.
Wymagania przeglądarki dla trybu pliku
mode: "file" i mode: "both" wymagają przeglądarki zgodnej z Chromium.
Kolejność rozwiązywania:
Zmienne środowiskowe
OPENCLAW_BROWSER_EXECUTABLE_PATHBROWSER_EXECUTABLE_PATHPLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH
Diff PNG/PDF rendering requires a Chromium-compatible browser...
Rozwiązywanie problemów
Błędy walidacji danych wejściowych
Błędy walidacji danych wejściowych
Provide patch or both before and after text.— podaj zarównobefore, jak iafter, albo podajpatch.Provide either patch or before/after input, not both.— nie mieszaj trybów wejścia.Invalid baseUrl: ...— użyj originhttp(s)z opcjonalną ścieżką, bez query/hash.{field} exceeds maximum size (...)— zmniejsz rozmiar ładunku.- Odrzucenie dużego patcha — zmniejsz liczbę plików patcha albo łączną liczbę wierszy.
Dostępność przeglądarki
Dostępność przeglądarki
- Adres URL przeglądarki domyślnie rozwiązuje się do
127.0.0.1. - W scenariuszach dostępu zdalnego:
- ustaw
viewerBaseUrlpluginu, albo - przekaż
baseUrldla danego wywołania narzędzia, albo - użyj
gateway.bind=customigateway.customBindHost
- ustaw
- Jeśli
gateway.trustedProxieszawiera loopback dla proxy na tym samym hoście (na przykład Tailscale Serve), surowe żądania przeglądarki przez loopback bez przekazanych nagłówków IP klienta z założenia kończą się zamknięciem z odmową. - Dla tej topologii proxy:
- preferuj
mode: "file"albomode: "both", gdy potrzebujesz tylko załącznika, albo - celowo włącz
security.allowRemoteVieweri ustawviewerBaseUrlpluginu albo przekaż proxy/publicznybaseUrl, gdy potrzebujesz współdzielonego adresu URL przeglądarki
- preferuj
- Włącz
security.allowRemoteViewertylko wtedy, gdy zamierzasz udostępnić zewnętrzny dostęp do przeglądarki.
Wiersz niezmienionych linii nie ma przycisku rozwijania
Wiersz niezmienionych linii nie ma przycisku rozwijania
Może się to zdarzyć dla wejścia patcha, gdy patch nie zawiera rozszerzalnego kontekstu. Jest to oczekiwane i nie oznacza awarii przeglądarki.
Nie znaleziono artefaktu
Nie znaleziono artefaktu
- Artefakt wygasł z powodu TTL.
- Token lub ścieżka uległy zmianie.
- Czyszczenie usunęło nieaktualne dane.
Wskazówki operacyjne
- Preferuj
mode: "view"do lokalnych interaktywnych przeglądów w canvas. - Preferuj
mode: "file"dla wychodzących kanałów czatu, które potrzebują załącznika. - Pozostaw
allowRemoteViewerwyłączone, chyba że Twoje wdrożenie wymaga zdalnych adresów URL przeglądarki. - Ustaw jawny krótki
ttlSecondsdla wrażliwych diffów. - Unikaj wysyłania sekretów w danych wejściowych diffu, gdy nie jest to wymagane.
- Jeśli Twój kanał agresywnie kompresuje obrazy (na przykład Telegram lub WhatsApp), preferuj wyjście PDF (
fileFormat: "pdf").
Silnik renderowania diffów oparty na Diffs.