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 adalah alat Plugin opsional dengan panduan sistem bawaan yang ringkas dan skill pendamping yang mengubah konten perubahan menjadi artefak diff baca-saja untuk agen.
Ini menerima salah satu dari:
- teks
beforedanafter patchterpadu
- URL penampil gateway untuk presentasi canvas
- jalur file yang dirender (PNG atau PDF) untuk pengiriman pesan
- kedua keluaran dalam satu panggilan
Mulai cepat
Nonaktifkan panduan sistem bawaan
Jika Anda ingin tetap mengaktifkan alatdiffs tetapi menonaktifkan panduan prompt sistem bawaannya, atur plugins.entries.diffs.hooks.allowPromptInjection ke false:
before_prompt_build milik Plugin diffs sambil tetap menyediakan Plugin, alat, dan skill pendamping.
Jika Anda ingin menonaktifkan panduan sekaligus alatnya, nonaktifkan Plugin sebagai gantinya.
Alur kerja agen umum
Contoh input
- Before and after
- Patch
Referensi input alat
Semua field bersifat opsional kecuali disebutkan.Teks asli. Wajib bersama
after saat patch dihilangkan.Teks yang diperbarui. Wajib bersama
before saat patch dihilangkan.Teks diff terpadu. Saling eksklusif dengan
before dan after.Nama file tampilan untuk mode sebelum dan sesudah.
Petunjuk penimpaan bahasa untuk mode sebelum dan sesudah. Nilai yang tidak dikenal kembali ke teks polos.
Penimpaan judul penampil.
Mode keluaran. Default ke default Plugin
defaults.mode. Alias usang: "image" berperilaku seperti "file" dan masih diterima untuk kompatibilitas mundur.Tema penampil. Default ke default Plugin
defaults.theme.Tata letak diff. Default ke default Plugin
defaults.layout.Luaskan bagian yang tidak berubah saat konteks lengkap tersedia. Opsi per panggilan saja (bukan kunci default Plugin).
Format file yang dirender. Default ke default Plugin
defaults.fileFormat.Preset kualitas untuk rendering PNG atau PDF.
Penimpaan skala perangkat (
1-4).Lebar render maksimum dalam piksel CSS (
640-2400).TTL artefak dalam detik untuk keluaran penampil dan file mandiri. Maks 21600.
Penimpaan origin URL penampil. Menimpa
viewerBaseUrl Plugin. Harus http atau https, tanpa query/hash.Legacy input aliases
Legacy input aliases
Masih diterima untuk kompatibilitas mundur:
format->fileFormatimageFormat->fileFormatimageQuality->fileQualityimageScale->fileScaleimageMaxWidth->fileMaxWidth
Validation and limits
Validation and limits
beforedanaftermasing-masing maks 512 KiB.patchmaks 2 MiB.pathmaks 2048 byte.langmaks 128 byte.titlemaks 1024 byte.- Batas kompleksitas patch: maks 128 file dan total 120000 baris.
patchbersamabeforeatauafterditolak.- Batas keamanan file yang dirender (berlaku untuk PNG dan PDF):
fileQuality: "standard": maks 8 MP (8,000,000 piksel yang dirender).fileQuality: "hq": maks 14 MP (14,000,000 piksel yang dirender).fileQuality: "print": maks 24 MP (24,000,000 piksel yang dirender).- PDF juga memiliki maksimum 50 halaman.
Kontrak detail keluaran
Alat mengembalikan metadata terstruktur di bawahdetails.
Viewer fields
Viewer fields
Field bersama untuk mode yang membuat penampil:
artifactIdviewerUrlviewerPathtitleexpiresAtinputKindfileCountmodecontext(agentId,sessionId,messageChannel,agentAccountIdsaat tersedia)
File fields
File fields
Field file saat PNG atau PDF dirender:
artifactIdexpiresAtfilePathpath(nilai yang sama denganfilePath, untuk kompatibilitas alat pesan)fileBytesfileFormatfileQualityfileScalefileMaxWidth
Compatibility aliases
Compatibility aliases
Juga dikembalikan untuk pemanggil yang sudah ada:
format(nilai yang sama denganfileFormat)imagePath(nilai yang sama denganfilePath)imageBytes(nilai yang sama denganfileBytes)imageQuality(nilai yang sama denganfileQuality)imageScale(nilai yang sama denganfileScale)imageMaxWidth(nilai yang sama denganfileMaxWidth)
| Mode | Yang dikembalikan |
|---|---|
"view" | Hanya field penampil. |
"file" | Hanya field file, tanpa artefak penampil. |
"both" | Field penampil plus field file. Jika rendering file gagal, penampil tetap dikembalikan dengan alias fileError dan imageError. |
Bagian tidak berubah yang diciutkan
- Penampil dapat menampilkan baris seperti
N unmodified lines. - Kontrol perluas pada baris tersebut bersifat kondisional dan tidak dijamin untuk setiap jenis input.
- Kontrol perluas muncul saat diff yang dirender memiliki data konteks yang dapat diperluas, yang umum untuk input sebelum dan sesudah.
- Untuk banyak input patch terpadu, isi konteks yang dihilangkan tidak tersedia dalam hunk patch yang diurai, sehingga baris dapat muncul tanpa kontrol perluas. Ini adalah perilaku yang diharapkan.
expandUnchangedhanya berlaku saat konteks yang dapat diperluas ada.
Default Plugin
Atur default seluruh Plugin di~/.openclaw/openclaw.json:
fontFamilyfontSizelineSpacinglayoutshowLineNumbersdiffIndicatorswordWrapbackgroundthemefileFormatfileQualityfileScalefileMaxWidthmodettlSeconds
Konfigurasi URL penampil persisten
Fallback milik Plugin untuk tautan penampil yang dikembalikan saat panggilan alat tidak meneruskan
baseUrl. Harus http atau https, tanpa query/hash.Konfigurasi keamanan
false: permintaan non-loopback ke rute penampil ditolak. true: penampil jarak jauh diizinkan jika jalur bertoken valid.Siklus hidup dan penyimpanan artefak
- Artefak disimpan di bawah subfolder sementara:
$TMPDIR/openclaw-diffs. - Metadata artefak penampil berisi:
- ID artefak acak (20 karakter hex)
- token acak (48 karakter hex)
createdAtdanexpiresAt- jalur
viewer.htmlyang disimpan
- TTL artefak default adalah 30 menit saat tidak ditentukan.
- TTL penampil maksimum yang diterima adalah 6 jam.
- Pembersihan berjalan secara oportunistik setelah pembuatan artefak.
- Artefak kedaluwarsa dihapus.
- Pembersihan fallback menghapus folder usang yang lebih lama dari 24 jam saat metadata hilang.
URL penampil dan perilaku jaringan
Rute penampil:/plugins/diffs/view/{artifactId}/{token}
/plugins/diffs/assets/viewer.js/plugins/diffs/assets/viewer-runtime.js
baseUrl opsional juga dipertahankan untuk kedua permintaan aset.
Perilaku konstruksi URL:
- Jika
baseUrlpanggilan alat diberikan, itu digunakan setelah validasi ketat. - Jika tidak, jika
viewerBaseUrlPlugin dikonfigurasi, itu digunakan. - Tanpa salah satu penimpaan, URL penampil default ke loopback
127.0.0.1. - Jika mode bind Gateway adalah
customdangateway.customBindHostdiatur, host tersebut digunakan.
baseUrl:
- Harus
http://atauhttps://. - Query dan hash ditolak.
- Origin plus jalur dasar opsional diizinkan.
Model keamanan
Pengerasan viewer
Pengerasan viewer
- Hanya loopback secara default.
- Jalur viewer bertoken dengan validasi ID dan token yang ketat.
- CSP respons viewer:
default-src 'none'- skrip dan aset hanya dari self
- tidak ada
connect-srckeluar
- Pembatasan miss jarak jauh saat akses jarak jauh diaktifkan:
- 40 kegagalan per 60 detik
- penguncian 60 detik (
429 Too Many Requests)
Pengerasan rendering file
Pengerasan rendering file
- Perutean permintaan browser screenshot bersifat tolak-secara-default.
- Hanya aset viewer lokal dari
http://127.0.0.1/plugins/diffs/assets/*yang diizinkan. - Permintaan jaringan eksternal diblokir.
Persyaratan browser untuk mode file
mode: "file" dan mode: "both" memerlukan browser yang kompatibel dengan Chromium.
Urutan resolusi:
Variabel lingkungan
OPENCLAW_BROWSER_EXECUTABLE_PATHBROWSER_EXECUTABLE_PATHPLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH
Diff PNG/PDF rendering requires a Chromium-compatible browser...
Pemecahan masalah
Kesalahan validasi input
Kesalahan validasi input
Provide patch or both before and after text.— sertakanbeforedanafter, atau sediakanpatch.Provide either patch or before/after input, not both.— jangan mencampur mode input.Invalid baseUrl: ...— gunakan originhttp(s)dengan jalur opsional, tanpa query/hash.{field} exceeds maximum size (...)— kurangi ukuran payload.- Penolakan patch besar — kurangi jumlah file patch atau total baris.
Aksesibilitas viewer
Aksesibilitas viewer
- URL viewer secara default mengarah ke
127.0.0.1. - Untuk skenario akses jarak jauh, salah satu:
- atur
viewerBaseUrlPlugin, atau - teruskan
baseUrlper panggilan tool, atau - gunakan
gateway.bind=customdangateway.customBindHost
- atur
- Jika
gateway.trustedProxiesmenyertakan loopback untuk proxy host yang sama (misalnya Tailscale Serve), permintaan viewer loopback mentah tanpa header IP klien yang diteruskan akan gagal tertutup sesuai desain. - Untuk topologi proxy tersebut:
- pilih
mode: "file"ataumode: "both"saat Anda hanya memerlukan lampiran, atau - aktifkan
security.allowRemoteViewersecara sengaja dan aturviewerBaseUrlPlugin atau teruskanbaseUrlproxy/publik saat Anda memerlukan URL viewer yang dapat dibagikan
- pilih
- Aktifkan
security.allowRemoteViewerhanya saat Anda memang menginginkan akses viewer eksternal.
Baris unmodified-lines tidak memiliki tombol perluas
Baris unmodified-lines tidak memiliki tombol perluas
Ini dapat terjadi untuk input patch ketika patch tidak membawa konteks yang dapat diperluas. Ini sesuai ekspektasi dan tidak menunjukkan kegagalan viewer.
Artefak tidak ditemukan
Artefak tidak ditemukan
- Artefak kedaluwarsa karena TTL.
- Token atau jalur berubah.
- Pembersihan menghapus data usang.
Panduan operasional
- Pilih
mode: "view"untuk peninjauan interaktif lokal di canvas. - Pilih
mode: "file"untuk kanal chat keluar yang memerlukan lampiran. - Biarkan
allowRemoteViewerdinonaktifkan kecuali deployment Anda memerlukan URL viewer jarak jauh. - Tetapkan
ttlSecondssingkat secara eksplisit untuk diff sensitif. - Hindari mengirim rahasia dalam input diff saat tidak diperlukan.
- Jika kanal Anda mengompresi gambar secara agresif (misalnya Telegram atau WhatsApp), pilih output PDF (
fileFormat: "pdf").
Mesin rendering diff didukung oleh Diffs.