diffs एक वैकल्पिक Plugin टूल है, जिसमें छोटा अंतर्निहित सिस्टम मार्गदर्शन और एक सहायक Skills होता है, जो परिवर्तन सामग्री को एजेंटों के लिए रीड-ओनली diff आर्टिफैक्ट में बदलता है।
यह इनमें से कोई भी स्वीकार करता है:
beforeऔरafterटेक्स्ट- एक unified
patch
- कैनवास प्रस्तुति के लिए Gateway व्यूअर URL
- संदेश डिलीवरी के लिए रेंडर किया गया फ़ाइल पथ (PNG या PDF)
- एक ही कॉल में दोनों आउटपुट
त्वरित शुरुआत
अंतर्निहित सिस्टम मार्गदर्शन अक्षम करें
यदि आपdiffs टूल को सक्षम रखना चाहते हैं लेकिन उसका अंतर्निहित सिस्टम-प्रॉम्प्ट मार्गदर्शन अक्षम करना चाहते हैं, तो plugins.entries.diffs.hooks.allowPromptInjection को false पर सेट करें:
before_prompt_build हुक को ब्लॉक करता है, जबकि Plugin, टूल और सहायक Skills उपलब्ध रहते हैं।
यदि आप मार्गदर्शन और टूल दोनों को अक्षम करना चाहते हैं, तो इसके बजाय Plugin को अक्षम करें।
सामान्य एजेंट वर्कफ़्लो
इनपुट उदाहरण
- Before and after
- Patch
टूल इनपुट संदर्भ
जहाँ उल्लेख न हो, सभी फ़ील्ड वैकल्पिक हैं।मूल टेक्स्ट। जब
patch छोड़ा गया हो, तो after के साथ आवश्यक।अपडेट किया गया टेक्स्ट। जब
patch छोड़ा गया हो, तो before के साथ आवश्यक।Unified diff टेक्स्ट।
before और after के साथ परस्पर अपवर्जित।before और after मोड के लिए प्रदर्शित फ़ाइलनाम।
before और after मोड के लिए भाषा ओवरराइड संकेत। अज्ञात मान और डिफ़ॉल्ट व्यूअर सेट से बाहर की भाषाएँ plain text पर वापस चली जाती हैं, जब तक कि
Diff Viewer Language Pack Plugin इंस्टॉल न हो।
व्यूअर शीर्षक ओवरराइड।
आउटपुट मोड। Plugin डिफ़ॉल्ट
defaults.mode पर डिफ़ॉल्ट होता है। Deprecated alias: "image" "file" की तरह व्यवहार करता है और backward compatibility के लिए अभी भी स्वीकार किया जाता है।व्यूअर थीम। Plugin डिफ़ॉल्ट
defaults.theme पर डिफ़ॉल्ट होती है।Diff लेआउट। Plugin डिफ़ॉल्ट
defaults.layout पर डिफ़ॉल्ट होता है।पूरा संदर्भ उपलब्ध होने पर अपरिवर्तित सेक्शन विस्तार करें। केवल प्रति-कॉल विकल्प (Plugin डिफ़ॉल्ट key नहीं)।
रेंडर की गई फ़ाइल का फ़ॉर्मैट। Plugin डिफ़ॉल्ट
defaults.fileFormat पर डिफ़ॉल्ट होता है।PNG या PDF रेंडरिंग के लिए गुणवत्ता प्रीसेट।
डिवाइस स्केल ओवरराइड (
1-4)।CSS पिक्सेल में अधिकतम रेंडर चौड़ाई (
640-2400)।व्यूअर और standalone फ़ाइल आउटपुट के लिए सेकंड में आर्टिफैक्ट TTL। अधिकतम 21600।
व्यूअर URL origin ओवरराइड। Plugin
viewerBaseUrl को ओवरराइड करता है। http या https होना चाहिए, कोई query/hash नहीं।Legacy input aliases
Legacy input aliases
backward compatibility के लिए अभी भी स्वीकार किए जाते हैं:
format->fileFormatimageFormat->fileFormatimageQuality->fileQualityimageScale->fileScaleimageMaxWidth->fileMaxWidth
Validation and limits
Validation and limits
beforeऔरafterप्रत्येक अधिकतम 512 KiB।patchअधिकतम 2 MiB।pathअधिकतम 2048 bytes।langअधिकतम 128 bytes।titleअधिकतम 1024 bytes।- 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 पृष्ठों की सीमा भी है।
सिंटैक्स हाइलाइटिंग
OpenClaw में सामान्य source, config और documentation भाषाओं के लिए सिंटैक्स हाइलाइटिंग शामिल है: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, और toml।
js, ts, bash, md, yml, c++, dockerfile, rb, kt, और ps1 जैसे सामान्य aliases उन डिफ़ॉल्ट भाषाओं में normalize किए जाते हैं।
अन्य भाषाओं को हाईलाइट करने के लिए Diff Viewer Language Pack Plugin इंस्टॉल करें:
आउटपुट विवरण अनुबंध
टूलdetails के अंतर्गत संरचित मेटाडेटा लौटाता है।
व्यूअर फ़ील्ड
व्यूअर फ़ील्ड
व्यूअर बनाने वाले मोड के लिए साझा फ़ील्ड:
artifactIdviewerUrlviewerPathtitleexpiresAtinputKindfileCountmodecontext(agentId,sessionId,messageChannel,agentAccountIdजब उपलब्ध हो)
फ़ाइल फ़ील्ड
फ़ाइल फ़ील्ड
PNG या PDF रेंडर होने पर फ़ाइल फ़ील्ड:
artifactIdexpiresAtfilePathpath(filePathके समान मान, message tool compatibility के लिए)fileBytesfileFormatfileQualityfileScalefileMaxWidth
Compatibility aliases
Compatibility aliases
मौजूदा callers के लिए भी लौटाए जाते हैं:
format(fileFormatके समान मान)imagePath(filePathके समान मान)imageBytes(fileBytesके समान मान)imageQuality(fileQualityके समान मान)imageScale(fileScaleके समान मान)imageMaxWidth(fileMaxWidthके समान मान)
| मोड | क्या लौटाया जाता है |
|---|---|
"view" | केवल व्यूअर फ़ील्ड। |
"file" | केवल फ़ाइल फ़ील्ड, कोई व्यूअर artifact नहीं। |
"both" | व्यूअर फ़ील्ड और फ़ाइल फ़ील्ड। यदि फ़ाइल रेंडरिंग विफल होती है, तो व्यूअर फिर भी fileError और imageError alias के साथ लौटता है। |
संक्षिप्त किए गए अपरिवर्तित सेक्शन
- व्यूअर
N unmodified linesजैसी पंक्तियाँ दिखा सकता है। - उन पंक्तियों पर expand controls शर्तों पर निर्भर हैं और हर input kind के लिए गारंटीकृत नहीं हैं।
- Expand controls तब दिखाई देते हैं जब रेंडर किए गए diff में expandable context data होता है, जो before और after input के लिए सामान्य है।
- कई unified patch inputs के लिए, छोड़े गए context bodies parsed patch hunks में उपलब्ध नहीं होते, इसलिए पंक्ति expand controls के बिना दिखाई दे सकती है। यह अपेक्षित व्यवहार है।
expandUnchangedकेवल तब लागू होता है जब expandable context मौजूद हो।
Plugin डिफ़ॉल्ट
Plugin-व्यापी डिफ़ॉल्ट~/.openclaw/openclaw.json में सेट करें:
fontFamilyfontSizelineSpacinglayoutshowLineNumbersdiffIndicatorswordWrapbackgroundthemefileFormatfileQualityfileScalefileMaxWidthmodettlSeconds
स्थायी व्यूअर URL कॉन्फ़िगरेशन
जब कोई टूल कॉल
baseUrl पास नहीं करता, तब लौटाए गए व्यूअर links के लिए Plugin-स्वामित्व वाला fallback। http या https होना चाहिए, query/hash नहीं।सुरक्षा कॉन्फ़िगरेशन
false: व्यूअर routes के लिए non-loopback requests अस्वीकार किए जाते हैं। true: tokenized path मान्य होने पर remote viewers की अनुमति होती है।Artifact lifecycle और storage
- आर्टिफैक्ट temp सबफ़ोल्डर के अंतर्गत संग्रहीत होते हैं:
$TMPDIR/openclaw-diffs. - व्यूअर आर्टिफैक्ट मेटाडेटा में शामिल है:
- यादृच्छिक आर्टिफैक्ट आईडी (20 हेक्स वर्ण)
- यादृच्छिक टोकन (48 हेक्स वर्ण)
createdAtऔरexpiresAt- संग्रहीत
viewer.htmlपथ
- निर्दिष्ट न होने पर डिफ़ॉल्ट आर्टिफैक्ट TTL 30 मिनट है।
- अधिकतम स्वीकृत व्यूअर TTL 6 घंटे है।
- आर्टिफैक्ट बनाने के बाद क्लीनअप अवसरवादी रूप से चलता है।
- समाप्त हो चुके आर्टिफैक्ट हटाए जाते हैं।
- मेटाडेटा न होने पर fallback क्लीनअप 24 घंटे से पुराने stale फ़ोल्डर हटाता है।
व्यूअर URL और नेटवर्क व्यवहार
व्यूअर रूट:/plugins/diffs/view/{artifactId}/{token}
/plugins/diffs/assets/viewer.js/plugins/diffs/assets/viewer-runtime.js/plugins/diffs-language-pack/assets/viewer.jsजब diff, Diff Viewer Language Pack की किसी भाषा का उपयोग करता है
baseUrl पथ prefix दोनों एसेट अनुरोधों के लिए भी सुरक्षित रहता है।
URL निर्माण व्यवहार:
- यदि tool-call
baseUrlदिया गया है, तो उसे कड़ी validation के बाद उपयोग किया जाता है। - अन्यथा यदि Plugin
viewerBaseUrlconfigured है, तो उसका उपयोग किया जाता है। - दोनों override न होने पर, व्यूअर URL डिफ़ॉल्ट रूप से loopback
127.0.0.1होता है। - यदि gateway bind mode
customहै औरgateway.customBindHostसेट है, तो उसी host का उपयोग किया जाता है।
baseUrl नियम:
http://याhttps://होना चाहिए।- Query और hash अस्वीकार किए जाते हैं।
- Origin के साथ वैकल्पिक base path की अनुमति है।
सुरक्षा मॉडल
व्यूअर hardening
व्यूअर hardening
- डिफ़ॉल्ट रूप से केवल loopback।
- कड़ी आईडी और टोकन validation के साथ tokenized व्यूअर पथ।
- व्यूअर response CSP:
default-src 'none'- script और एसेट केवल self से
- कोई outbound
connect-srcनहीं
- remote access enabled होने पर remote miss throttling:
- 60 सेकंड में 40 विफलताएँ
- 60 सेकंड lockout (
429 Too Many Requests)
फ़ाइल rendering hardening
फ़ाइल rendering hardening
- Screenshot browser request routing डिफ़ॉल्ट रूप से deny है।
- केवल
http://127.0.0.1/plugins/diffs/assets/*से local व्यूअर एसेट की अनुमति है। - बाहरी नेटवर्क अनुरोध block किए जाते हैं।
फ़ाइल मोड के लिए browser आवश्यकताएँ
mode: "file" और mode: "both" को Chromium-compatible browser चाहिए।
Resolution क्रम:
Environment variables
OPENCLAW_BROWSER_EXECUTABLE_PATHBROWSER_EXECUTABLE_PATHPLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH
Diff PNG/PDF rendering requires a Chromium-compatible browser...
समस्या निवारण
इनपुट validation त्रुटियाँ
इनपुट validation त्रुटियाँ
Provide patch or both before and after text.—beforeऔरafterदोनों शामिल करें, याpatchदें।Provide either patch or before/after input, not both.— input modes को mix न करें।Invalid baseUrl: ...— वैकल्पिक path के साथhttp(s)origin उपयोग करें, query/hash नहीं।{field} exceeds maximum size (...)— payload आकार घटाएँ।- बड़े patch का अस्वीकार होना — patch फ़ाइल count या कुल lines घटाएँ।
व्यूअर accessibility
व्यूअर accessibility
- व्यूअर URL डिफ़ॉल्ट रूप से
127.0.0.1पर resolve होता है। - remote access scenarios के लिए, इनमें से कोई एक करें:
- Plugin
viewerBaseUrlसेट करें, या - प्रति tool call
baseUrlpass करें, या gateway.bind=customऔरgateway.customBindHostउपयोग करें
- Plugin
- यदि
gateway.trustedProxiesमें same-host proxy के लिए loopback शामिल है (उदाहरण के लिए Tailscale Serve), तो forwarded client-IP headers के बिना raw loopback व्यूअर अनुरोध design के अनुसार fail closed होते हैं। - उस proxy topology के लिए:
- जब आपको केवल attachment चाहिए, तो
mode: "file"याmode: "both"को प्राथमिकता दें, या - जब आपको shareable व्यूअर URL चाहिए, तो जानबूझकर
security.allowRemoteViewerenable करें और PluginviewerBaseUrlसेट करें या proxy/publicbaseUrlpass करें
- जब आपको केवल attachment चाहिए, तो
security.allowRemoteViewerकेवल तब enable करें जब आप external व्यूअर access चाहते हों।
Unmodified-lines row में expand button नहीं है
Unmodified-lines row में expand button नहीं है
आर्टिफैक्ट नहीं मिला
आर्टिफैक्ट नहीं मिला
- TTL के कारण आर्टिफैक्ट expire हो गया।
- Token या path बदल गया।
- क्लीनअप ने stale data हटा दिया।
संचालन मार्गदर्शन
- canvas में local interactive reviews के लिए
mode: "view"को प्राथमिकता दें। - attachment की आवश्यकता वाले outbound chat channels के लिए
mode: "file"को प्राथमिकता दें। - जब तक आपकी deployment को remote व्यूअर URLs की आवश्यकता न हो,
allowRemoteViewerdisabled रखें। - sensitive diffs के लिए स्पष्ट छोटे
ttlSecondsसेट करें। - आवश्यकता न होने पर diff input में secrets भेजने से बचें।
- यदि आपका channel images को aggressively compress करता है (उदाहरण के लिए Telegram या WhatsApp), तो PDF output (
fileFormat: "pdf") को प्राथमिकता दें।
Diff rendering engine Diffs द्वारा powered है।