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 — це додатковий інструмент Plugin із короткими вбудованими системними настановами та супровідним Skill, який перетворює вміст змін на доступний лише для читання артефакт diff для агентів.
Він приймає або:
- текст
beforeіafter - уніфікований
patch
- URL переглядача Gateway для презентації на canvas
- шлях до відрендереного файла (PNG або PDF) для доставлення повідомленням
- обидва результати в одному виклику
Швидкий старт
Вимкнення вбудованих системних настанов
Якщо потрібно залишити інструментdiffs увімкненим, але вимкнути його вбудовані настанови системного prompt, установіть plugins.entries.diffs.hooks.allowPromptInjection у false:
before_prompt_build Plugin diffs, залишаючи Plugin, інструмент і супровідний Skill доступними.
Якщо потрібно вимкнути і настанови, і інструмент, вимкніть сам Plugin.
Типовий робочий процес агента
Приклади введення
- До і після
- Patch
Довідник вхідних даних інструмента
Усі поля необов’язкові, якщо не зазначено інше.Початковий текст. Обов’язковий разом з
after, коли patch не вказано.Оновлений текст. Обов’язковий разом з
before, коли patch не вказано.Текст уніфікованого diff. Взаємовиключний з
before і after.Відображуване ім’я файла для режиму до і після.
Підказка перевизначення мови для режиму до і після. Невідомі значення повертаються до звичайного тексту.
Перевизначення заголовка переглядача.
Режим виводу. За замовчуванням використовується типове значення Plugin
defaults.mode. Застарілий псевдонім: "image" поводиться як "file" і досі приймається для зворотної сумісності.Тема переглядача. За замовчуванням використовується типове значення Plugin
defaults.theme.Макет diff. За замовчуванням використовується типове значення Plugin
defaults.layout.Розгортати незмінені розділи, коли доступний повний контекст. Лише параметр окремого виклику (не типовий ключ Plugin).
Формат відрендереного файла. За замовчуванням використовується типове значення Plugin
defaults.fileFormat.Набір якості для рендерингу PNG або PDF.
Перевизначення масштабу пристрою (
1-4).Максимальна ширина рендерингу в CSS-пікселях (
640-2400).TTL артефакта в секундах для виводів переглядача та автономного файла. Максимум 21600.
Перевизначення origin URL переглядача. Перевизначає Plugin
viewerBaseUrl. Має бути http або https, без query/hash.Застарілі псевдоніми введення
Застарілі псевдоніми введення
Досі приймаються для зворотної сумісності:
format->fileFormatimageFormat->fileFormatimageQuality->fileQualityimageScale->fileScaleimageMaxWidth->fileMaxWidth
Валідація та обмеження
Валідація та обмеження
beforeіafterмаксимум по 512 KiB кожен.patchмаксимум 2 MiB.pathмаксимум 2048 байтів.langмаксимум 128 байтів.titleмаксимум 1024 байти.- Обмеження складності patch: максимум 128 файлів і 120000 рядків загалом.
patchразом зbeforeабоafterвідхиляється.- Обмеження безпеки відрендерених файлів (застосовуються до PNG і PDF):
fileQuality: "standard": максимум 8 MP (8 000 000 відрендерених пікселів).fileQuality: "hq": максимум 14 MP (14 000 000 відрендерених пікселів).fileQuality: "print": максимум 24 MP (24 000 000 відрендерених пікселів).- PDF також має максимум 50 сторінок.
Контракт вихідних details
Інструмент повертає структуровані метадані вdetails.
Поля переглядача
Поля переглядача
Спільні поля для режимів, які створюють переглядач:
artifactIdviewerUrlviewerPathtitleexpiresAtinputKindfileCountmodecontext(agentId,sessionId,messageChannel,agentAccountId, коли доступні)
Поля файла
Поля файла
Поля файла, коли рендериться PNG або PDF:
artifactIdexpiresAtfilePathpath(те саме значення, що йfilePath, для сумісності з інструментом повідомлень)fileBytesfileFormatfileQualityfileScalefileMaxWidth
Псевдоніми сумісності
Псевдоніми сумісності
Також повертаються для наявних викликачів:
format(те саме значення, що йfileFormat)imagePath(те саме значення, що йfilePath)imageBytes(те саме значення, що йfileBytes)imageQuality(те саме значення, що йfileQuality)imageScale(те саме значення, що йfileScale)imageMaxWidth(те саме значення, що йfileMaxWidth)
| Режим | Що повертається |
|---|---|
"view" | Лише поля переглядача. |
"file" | Лише поля файла, без артефакта переглядача. |
"both" | Поля переглядача плюс поля файла. Якщо рендеринг файла не вдається, переглядач усе одно повертається з fileError і псевдонімом imageError. |
Згорнуті незмінені розділи
- Переглядач може показувати рядки на кшталт
N unmodified lines. - Елементи керування розгортанням на цих рядках є умовними й не гарантуються для кожного типу введення.
- Елементи керування розгортанням з’являються, коли відрендерений diff має дані контексту, які можна розгорнути, що типово для введення до і після.
- Для багатьох вхідних уніфікованих patch пропущені тіла контексту недоступні в розібраних hunks patch, тому рядок може з’являтися без елементів керування розгортанням. Це очікувана поведінка.
expandUnchangedзастосовується лише тоді, коли існує контекст, який можна розгорнути.
Типові значення Plugin
Установіть типові значення для всього Plugin у~/.openclaw/openclaw.json:
fontFamilyfontSizelineSpacinglayoutshowLineNumbersdiffIndicatorswordWrapbackgroundthemefileFormatfileQualityfileScalefileMaxWidthmodettlSeconds
Постійна конфігурація URL переглядача
Резервний варіант, керований Plugin, для повернених посилань переглядача, коли виклик інструмента не передає
baseUrl. Має бути http або https, без query/hash.Конфігурація безпеки
false: запити не з loopback до маршрутів переглядача заборонені. true: віддалені переглядачі дозволені, якщо токенізований шлях дійсний.Життєвий цикл і зберігання артефактів
- Артефакти зберігаються в тимчасовій підпапці:
$TMPDIR/openclaw-diffs. - Метадані артефакта переглядача містять:
- випадковий ID артефакта (20 шістнадцяткових символів)
- випадковий токен (48 шістнадцяткових символів)
createdAtіexpiresAt- збережений шлях
viewer.html
- TTL артефакта за замовчуванням становить 30 хвилин, якщо не вказано інше.
- Максимальний прийнятий TTL переглядача становить 6 годин.
- Очищення запускається за нагоди після створення артефакта.
- Протерміновані артефакти видаляються.
- Резервне очищення видаляє застарілі папки старші за 24 години, коли метадані відсутні.
URL переглядача та поведінка мережі
Маршрут переглядача:/plugins/diffs/view/{artifactId}/{token}
/plugins/diffs/assets/viewer.js/plugins/diffs/assets/viewer-runtime.js
baseUrl також зберігається для обох запитів ресурсів.
Поведінка побудови URL:
- Якщо надано
baseUrlвиклику інструмента, він використовується після суворої валідації. - Інакше, якщо налаштовано Plugin
viewerBaseUrl, використовується він. - Без жодного перевизначення URL переглядача за замовчуванням використовує loopback
127.0.0.1. - Якщо режим прив’язки Gateway —
customі встановленоgateway.customBindHost, використовується цей host.
baseUrl:
- Має бути
http://абоhttps://. - Query і hash відхиляються.
- Дозволено origin плюс необов’язковий базовий шлях.
Модель безпеки
Зміцнення захисту переглядача
Зміцнення захисту переглядача
- За замовчуванням лише loopback.
- Токенізовані шляхи переглядача зі строгою перевіркою ID і токена.
- CSP відповіді переглядача:
default-src 'none'- скрипти й ресурси лише з self
- без вихідного
connect-src
- Обмеження віддалених промахів, коли віддалений доступ увімкнено:
- 40 невдач за 60 секунд
- блокування на 60 секунд (
429 Too Many Requests)
Зміцнення захисту рендерингу файлів
Зміцнення захисту рендерингу файлів
- Маршрутизація запитів браузера для знімків екрана за замовчуванням заборонена.
- Дозволені лише локальні ресурси переглядача з
http://127.0.0.1/plugins/diffs/assets/*. - Зовнішні мережеві запити заблоковано.
Вимоги браузера для файлового режиму
mode: "file" і mode: "both" потребують браузера, сумісного з Chromium.
Порядок визначення:
Змінні середовища
OPENCLAW_BROWSER_EXECUTABLE_PATHBROWSER_EXECUTABLE_PATHPLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH
Diff PNG/PDF rendering requires a Chromium-compatible browser...
Усунення несправностей
Помилки валідації введення
Помилки валідації введення
Provide patch or both before and after text.— додайте іbefore, іafter, або надайтеpatch.Provide either patch or before/after input, not both.— не змішуйте режими введення.Invalid baseUrl: ...— використовуйте originhttp(s)з необов’язковим шляхом, без query/hash.{field} exceeds maximum size (...)— зменште розмір payload.- Відхилення великого патча — зменште кількість файлів патча або загальну кількість рядків.
Доступність переглядача
Доступність переглядача
- URL переглядача за замовчуванням визначається як
127.0.0.1. - Для сценаріїв віддаленого доступу:
- задайте
viewerBaseUrlPlugin, або - передайте
baseUrlдля кожного виклику інструмента, або - використовуйте
gateway.bind=customіgateway.customBindHost
- задайте
- Якщо
gateway.trustedProxiesмістить loopback для проксі на тому самому хості (наприклад Tailscale Serve), сирі loopback-запити переглядача без перенаправлених заголовків client-IP за задумом завершуються закритою відмовою. - Для такої топології проксі:
- надавайте перевагу
mode: "file"абоmode: "both", коли вам потрібне лише вкладення, або - навмисно увімкніть
security.allowRemoteViewerі задайтеviewerBaseUrlPlugin або передайте проксі/публічнийbaseUrl, коли вам потрібен URL переглядача, яким можна поділитися
- надавайте перевагу
- Увімкніть
security.allowRemoteViewerлише тоді, коли вам потрібен зовнішній доступ до переглядача.
Рядок незмінених рядків не має кнопки розгортання
Рядок незмінених рядків не має кнопки розгортання
Це може трапитися для введення патча, коли патч не містить розгортного контексту. Це очікувано й не вказує на збій переглядача.
Артефакт не знайдено
Артефакт не знайдено
- Термін дії артефакту минув через TTL.
- Токен або шлях змінився.
- Очищення видалило застарілі дані.
Операційні рекомендації
- Надавайте перевагу
mode: "view"для локальних інтерактивних переглядів у полотні. - Надавайте перевагу
mode: "file"для вихідних чат-каналів, яким потрібне вкладення. - Тримайте
allowRemoteViewerвимкненим, якщо ваше розгортання не потребує віддалених URL переглядача. - Задавайте явно короткі
ttlSecondsдля чутливих diff. - Уникайте надсилання секретів у вхідних даних diff, коли це не потрібно.
- Якщо ваш канал агресивно стискає зображення (наприклад Telegram або WhatsApp), надавайте перевагу виводу PDF (
fileFormat: "pdf").
Рушій рендерингу diff працює на основі Diffs.