Developer and self-hosted
ClickClack
ClickClack प्रथम-श्रेणी के ClickClack बॉट टोकन के माध्यम से OpenClaw को स्व-होस्ट किए गए ClickClack कार्यक्षेत्र से जोड़ता है।
इसका उपयोग तब करें जब आप चाहते हैं कि कोई OpenClaw एजेंट ClickClack बॉट उपयोगकर्ता के रूप में दिखाई दे। ClickClack स्वतंत्र सेवा बॉट और उपयोगकर्ता-स्वामित्व वाले बॉट का समर्थन करता है; उपयोगकर्ता-स्वामित्व वाले बॉट एक owner_user_id रखते हैं और केवल आपके द्वारा प्रदान किए गए टोकन स्कोप प्राप्त करते हैं।
त्वरित सेटअप
ClickClack में Workspace settings → Integrations → OpenClaw खोलें, Setup code (recommended) का उपयोग करके एक बॉट बनाएँ और जनरेट किया गया कमांड कॉपी करें:
openclaw channels add clickclack --code 'https://clickclack.example.com/#XXXX-XXXX-XXXX'अलग-अलग फ़्रंटएंड और API मूल या पथ पर माउंट किए गए API के लिए, ClickClack इसके बजाय सटीक क्लेम एंडपॉइंट देता है:
openclaw channels add clickclack --code 'https://api.example.com/services/clickclack/api/bot-setup-codes/claim#XXXX-XXXX-XXXX'सेटअप कोड का केवल एक बार उपयोग किया जा सकता है और यह 10 मिनट बाद समाप्त हो जाता है। OpenClaw इसे क्लेम करता है, नया बनाया गया बॉट टोकन और कार्यक्षेत्र सेटिंग्स प्राप्त करता है, अकाउंट सहेजता है, कनेक्शन सत्यापित करता है और बताता है कि चल रहे Gateway ने इसे अपनाया या नहीं। संस्करणयुक्त सटीक एंडपॉइंट के लिए, OpenClaw ClickClack द्वारा लौटाए गए प्रामाणिक API बेस को सत्यापित करके सहेजता है, जिसमें कोई भी पथ प्रीफ़िक्स शामिल होता है। सेटअप कोड स्वयं OpenClaw कॉन्फ़िगरेशन में संग्रहीत नहीं होता।
सेटअप-कोड क्लेम सार्वजनिक सर्वर के लिए HTTPS का उपयोग करते हैं। लूपबैक पतों जैसे
localhost और 127.0.0.1 पर स्थानीय इंस्टॉलेशन के लिए सामान्य HTTP भी समर्थित है।
यदि OpenClaw पहले से चल रहा है, तो ClickClack अपने-आप कनेक्ट हो जाता है और किसी दूसरे कमांड की आवश्यकता नहीं होती। अन्यथा, इसे इसके साथ शुरू करें:
openclaw gatewayआप कोड को सर्वर URL से अलग भी दे सकते हैं:
openclaw channels add clickclack --code XXXX-XXXX-XXXX --base-url https://clickclack.example.comनिर्देशित सेटअप के लिए चलाएँ:
openclaw onboardClickClack चुनें, फिर संकेत मिलने पर सर्वर URL, बॉट टोकन और कार्यक्षेत्र दर्ज करें। निर्देशित सेटअप सहेजने के बाद सर्वर, टोकन और कार्यक्षेत्र की जाँच करता है; विफल जाँच कॉन्फ़िगरेशन को नहीं हटाती।
विकल्प: मैन्युअल टोकन
किसी गैर-OpenClaw क्लाइंट को कॉन्फ़िगर करते समय या जब आपको स्पष्ट रूप से टोकन को स्वयं प्रबंधित करने की आवश्यकता हो, तो ClickClack में Manual token चुनें:
openclaw channels add clickclack --base-url https://clickclack.example.com --token ccb_... --workspace defaultworkspace कार्यक्षेत्र आईडी (wsp_...), स्लग या प्रदर्शन नाम स्वीकार करता है।
--code को --token, --token-file या --use-env के साथ संयोजित नहीं किया जा सकता।
विकल्प: परिवेश-आधारित टोकन
डिफ़ॉल्ट अकाउंट कॉन्फ़िगरेशन में टोकन संग्रहीत करने के बजाय CLICKCLACK_BOT_TOKEN पढ़ सकता है:
export CLICKCLACK_BOT_TOKEN="ccb_..."openclaw channels add clickclack --base-url https://clickclack.example.com --workspace default --use-envopenclaw gatewayनामित अकाउंट को कॉन्फ़िगर किए गए टोकन या टोकन फ़ाइल का उपयोग करना आवश्यक है; साझा परिवेश चर जानबूझकर केवल डिफ़ॉल्ट अकाउंट तक सीमित है।
JSON5 संदर्भ
समतुल्य कॉन्फ़िगरेशन संरचना यह है:
{ channels: { clickclack: { enabled: true, baseUrl: "https://clickclack.example.com", token: { source: "env", provider: "default", id: "CLICKCLACK_BOT_TOKEN" }, workspace: "default", defaultTo: "channel:general", }, },}किसी अकाउंट को केवल तभी कॉन्फ़िगर किया हुआ माना जाता है जब baseUrl, कोई टोकन स्रोत और
workspace सभी सेट हों। डिफ़ॉल्ट अकाउंट के लिए टोकन स्रोत token, tokenFile या
CLICKCLACK_BOT_TOKEN हो सकता है। workspace कार्यक्षेत्र
आईडी (wsp_...), स्लग या नाम स्वीकार करता है; Gateway स्टार्टअप पर इसे आईडी में बदलता है।
अकाउंट कॉन्फ़िगरेशन कुंजियाँ
| कुंजी | डिफ़ॉल्ट | टिप्पणियाँ |
|---|---|---|
baseUrl |
कोई नहीं (आवश्यक) | ब्राउज़र-संबंधी लिंक के लिए उपयोग किया जाने वाला सार्वजनिक ClickClack URL। |
apiBaseUrl |
baseUrl |
REST और रीयलटाइम WebSocket ट्रैफ़िक के लिए वैकल्पिक सर्वर-से-सर्वर एंडपॉइंट। |
token |
कोई नहीं | सामान्य स्ट्रिंग या सीक्रेट संदर्भ (source: "env" | "file" | "exec") के रूप में बॉट टोकन। |
tokenFile |
कोई नहीं | बॉट-टोकन फ़ाइल का पथ; इसे token पर प्राथमिकता मिलती है। |
workspace |
कोई नहीं (आवश्यक) | कार्यक्षेत्र आईडी, स्लग या नाम। |
replyMode |
"agent" |
"agent" पूर्ण एजेंट पाइपलाइन चलाता है; "model" छोटे प्रत्यक्ष मॉडल पूर्णकरण भेजता है। |
defaultTo |
"channel:general" |
तब उपयोग किया जाने वाला लक्ष्य जब किसी आउटबाउंड पथ में कोई लक्ष्य न दिया गया हो। |
allowFrom |
["*"] |
इनबाउंड DM और चैनल संदेशों के लिए उपयोगकर्ता-आईडी अनुमतिसूची। |
botUserId |
स्वतः पहचाना गया | स्टार्टअप पर बॉट टोकन पहचान से निर्धारित किया जाता है। |
agentId |
रूट डिफ़ॉल्ट | इस अकाउंट के इनबाउंड संदेशों को एक एजेंट पर पिन करें। |
toolsAllow |
कोई नहीं | इस अकाउंट से एजेंट के उत्तरों के लिए टूल अनुमतिसूची। |
model, systemPrompt |
कोई नहीं | replyMode: "model" पूर्णकरण द्वारा उपयोग किया जाता है। |
commandMenu |
true |
ClickClack कंपोज़र स्वतः-पूर्णता में मूल कमांड प्रकाशित करें। |
reconnectMs |
1500 |
रीयलटाइम पुनः-कनेक्शन विलंब (100 से 60000)। |
discussions |
अक्षम | प्रति-सत्र प्रबंधित चैनल सेटिंग्स; सत्र चर्चाएँ देखें। |
प्रमाणीकरण-संरक्षित सार्वजनिक होस्टनाम बनाए रखें
जब ClickClack और OpenClaw Gateway एक ही होस्ट पर चलते हों, लेकिन सार्वजनिक ClickClack होस्टनाम
Cloudflare Access जैसे प्रमाणीकरण Gateway द्वारा सुरक्षित हो, तब apiBaseUrl का उपयोग करें:
{ channels: { clickclack: { baseUrl: "https://clack.openclaw.ai", apiBaseUrl: "http://127.0.0.1:8484", token: { source: "env", provider: "default", id: "CLICKCLACK_BOT_TOKEN" }, workspace: "default", }, },}सार्वजनिक होस्टनाम ब्राउज़र उपयोगकर्ताओं के लिए पूरी तरह प्रमाणीकरण-संरक्षित रह सकता है। OpenClaw
REST अनुरोधों, सेटअप सत्यापन और रीयलटाइम WebSocket के लिए लूपबैक एंडपॉइंट
का उपयोग करता है, जबकि चर्चा के embedUrl और openUrl लिंक सार्वजनिक
baseUrl का उपयोग जारी रखते हैं। यदि apiBaseUrl छोड़ दिया जाता है, तो पूरा ट्रैफ़िक
baseUrl का उपयोग करता है और मौजूदा व्यवहार सुरक्षित रहता है।
यदि plugins.allow एक गैर-रिक्त प्रतिबंधात्मक सूची है, तो चैनल सेटअप में ClickClack को स्पष्ट रूप से चुनना
या openclaw plugins enable clickclack चलाना
उस सूची में clickclack जोड़ देता है। ऑनबोर्डिंग इंस्टॉलेशन इसी
स्पष्ट-चयन व्यवहार का उपयोग करता है। ये पथ plugins.deny या वैश्विक
plugins.enabled: false सेटिंग को अधिलेखित नहीं करते। प्रत्यक्ष
openclaw plugins install @openclaw/clickclack सामान्य
Plugin-इंस्टॉल नीति का पालन करता है और ClickClack को मौजूदा अनुमतिसूची में भी दर्ज करता है।
एकाधिक बॉट
प्रत्येक अकाउंट अपना ClickClack रीयलटाइम कनेक्शन खोलता है और अपने बॉट टोकन का उपयोग करता है।
{ channels: { clickclack: { enabled: true, baseUrl: "https://clickclack.example.com", defaultAccount: "service", accounts: { service: { token: { source: "env", provider: "default", id: "CLICKCLACK_SERVICE_BOT_TOKEN" }, workspace: "default", defaultTo: "channel:general", agentId: "service-bot", }, support: { token: { source: "env", provider: "default", id: "CLICKCLACK_SUPPORT_BOT_TOKEN" }, workspace: "default", defaultTo: "dm:usr_...", agentId: "support-bot", }, }, }, },}सत्र चर्चाएँ
प्रत्येक OpenClaw सत्र को एक समर्पित ClickClack चैनल देने के लिए किसी एक ClickClack अकाउंट पर
चर्चाएँ सक्षम करें। अकाउंट टोकन में
channels:write शामिल होना आवश्यक है (bot:admin बंडल में यह शामिल है); सामान्य bot:write
सेटअप टोकन चैनल बना या सिंक्रनाइज़ नहीं कर सकता।
{ channels: { clickclack: { enabled: true, baseUrl: "https://clickclack.example.com", token: { source: "env", provider: "default", id: "CLICKCLACK_BOT_TOKEN" }, workspace: "default", discussions: { enabled: true, workspace: "default", controlUrlBase: "https://team.openclaw.ai", section: "Sessions", }, }, },}discussions.workspace अकाउंट-स्तरीय workspace के समान कार्यक्षेत्र आईडी, स्लग या प्रदर्शन नाम
स्वीकार करता है और उसी मान को डिफ़ॉल्ट के रूप में उपयोग करता है। section
ClickClack साइडबार अनुभाग को नियंत्रित करता है और इसका डिफ़ॉल्ट Sessions है। जब
controlUrlBase सेट होता है, तो प्रबंधित चैनल वास्तविक Control UI
सत्र रूट, /chat?session=<encoded-session-key>, से वापस लिंक होता है।
चर्चाएँ ठीक एक ClickClack अकाउंट पर सक्षम करें। Gateway प्रदाता में कोई अकाउंट चयनकर्ता नहीं है, इसलिए एकाधिक सक्षम चर्चा अकाउंट में से कॉन्फ़िगरेशन क्रम के आधार पर किसी एक को चुनने के बजाय उन्हें अस्वीकार कर दिया जाता है।
चर्चा खोलने पर बाहरी रूप से प्रबंधित के रूप में चिह्नित एक सार्वजनिक ClickClack चैनल बनता है। Plugin सत्र लेबल, श्रेणी और संग्रह स्थिति को सिंक्रनाइज़ रखता है। किसी सत्र को पुनर्स्थापित करने से उसका चैनल पुनर्स्थापित हो जाता है; सत्र श्रेणी हटाने से चैनल वापस कॉन्फ़िगर किए गए डिफ़ॉल्ट अनुभाग में चला जाता है। किसी OpenClaw सत्र को हटाने पर ClickClack चैनल को हटाने के बजाय संग्रहित किया जाता है, ताकि उसका इतिहास उपलब्ध रहे। चर्चा RPC का उपयोग होने पर और कोई भी बाइंडिंग मौजूद रहने तक लगभग हर मिनट Plugin बाइंडिंग का मिलान करता है।
प्रबंधित चैनल में आने वाले संदेश संलग्न मुख्य सत्र के समान एजेंट आईडी के अंतर्गत
एक नियतात्मक सहायक सत्र का उपयोग करते हैं। सहायक एजेंट को बताया जाता है कि किस
मुख्य सत्र का अवलोकन करना है और वह sessions_history तथा session_status का उपयोग कर सकता है
(changesSince क्रमिक जाँच के लिए उपयोगी है)। वह sessions_send का उपयोग केवल
तभी करता है जब चर्चा में लोग उससे मुख्य सत्र को संदेश पहुँचाने या निर्देशित करने के लिए कहते हैं।
बाइंडिंग, प्रबंधित स्वामित्व संदर्भ और सहायक-सत्र पीयर पहचान में
पिन किए गए ClickClack सर्वर और चैनल के साथ ठोस OpenClaw सत्र आईडी शामिल होती है।
पुनः उपयोग योग्य सत्र कुंजी को रीसेट करने या अकाउंट का लक्ष्य बदलने पर पुराना चैनल
स्थानीय रूप से निरस्त हो जाता है, पुराना क्रेडेंशियल उपयोग योग्य रहने पर उसे संग्रहित कर दिया जाता है और
उसकी सहायक ट्रांसक्रिप्ट का पुनः उपयोग नहीं किया जा सकता। संग्रहित, रीसेट, अक्षम या पुनर्लक्षित
बाइंडिंग के माध्यम से आने वाले संदेशों को अकाउंट की सामान्य चैनल रूटिंग पर वापस भेजने के बजाय
हटा दिया जाता है। मुक्त की गई बाइंडिंग एक स्थायी निरस्त-चैनल चिह्न छोड़ती हैं,
ताकि विलंबित रीयलटाइम घटनाएँ विफलता की स्थिति में बंद रहें। दूरस्थ स्वामित्व ClickClack सर्वर
और चैनल आईडी से संबद्ध होता है, इसलिए स्थानीय अकाउंट का नाम बदलना किसी प्रबंधित चैनल को
सामान्य चैनल में नहीं बदल सकता।
tools.sessions.visibility को इसके अधिक सुरक्षित डिफ़ॉल्ट tree पर रखें। Plugin
केवल प्रत्येक सहायक सत्र और उससे संलग्न मुख्य सत्र के बीच होस्ट-स्कोप वाला अनुदान
स्थापित करता है, साथ ही एक टूल-नीति हुक स्थापित करता है जो सत्र खोज और
क्रॉस-सत्र लक्ष्यों को अवरुद्ध करता है। यह sessions_history, session_status और
sessions_send को केवल संलग्न मुख्य सत्र के लिए अनुमति देता है और स्थिति कॉल को
उस सत्र का मॉडल बदलने से रोकता है। उन टूल का एजेंट की प्रभावी टूल अनुमतिसूची में
मौजूद होना फिर भी आवश्यक है। सिस्टम प्रॉम्प्ट मार्गदर्शन है; होस्ट अनुदान
और हुक प्राधिकरण सीमा हैं।
ClickClack सर्वर को चैनल बनाने और अपडेट करने पर प्रबंधित-चैनल फ़ील्ड (external_managed,
external_ref, external_url, और sidebar_section) का समर्थन करना और
उन्हें चैनल प्रतिक्रियाओं में लौटाना आवश्यक है। OpenClaw किसी बाइंडिंग को
स्थायी रूप से सहेजने से पहले उस अनुबंध को सत्यापित करता है। यदि निर्माण प्रतिक्रिया खो जाती है, तो अगली बार खोलने पर
दूसरा चैनल बनाने के बजाय सर्वर द्वारा लागू किए गए external_ref के आधार पर
चैनल अपनाया जाता है। जब तक उस परिणाम का मिलान नहीं हो जाता, लंबित आरक्षण
गंतव्य वर्कस्पेस में अन्यथा-अनबाउंड इवेंट को क्वारंटीन करता है। मोटे स्तर का रिकंसाइलर
उसी सेशन के अभी भी सक्रिय होने पर चैनल को अपना लेता है या रीसेट के बाद उसे
आर्काइव करता है; यदि कोई रिमोट चैनल नहीं बनाया गया था, तो वह आरक्षण हटा देता है।
उस संदर्भ में प्रत्येक OpenClaw इंस्टॉलेशन के लिए एक स्थायी नेमस्पेस के साथ
सेशन कुंजी, ठोस सेशन आईडी, ClickClack गंतव्य और स्थायी
बाइंडिंग जनरेशन का हैश होता है। अलग-अलग Gateway एक-दूसरे के चैनल नहीं अपना सकते,
रीसेट किए गए सेशन पुराने चैनल इतिहास को विरासत में नहीं ले सकते, और किसी खाते या वर्कस्पेस का
राउंड ट्रिप किसी पिछले चैनल को दोबारा नहीं अपना सकता। बाइंडिंग को
कॉन्फ़िगर किए गए ClickClack सर्वर URL से भी पिन किया जाता है और खाते को
किसी अन्य लक्ष्य पर भेजे जाने पर वे अमान्य हो जाती हैं। controlUrlBase को बदलने या हटाने से अगले रिकंसिलिएशन पास पर प्रबंधित
चैनल लिंक अपडेट या साफ़ हो जाता है। discussions.workspace बदलने पर, यदि पुराने वर्कस्पेस का क्रेडेंशियल
कॉन्फ़िगर रहता है, तो नए वर्कस्पेस में चैनल खोले जाने से पहले पुरानी बाइंडिंग को
आर्काइव और रिलीज़ किया जाता है। यदि टोकन को ऐसे वर्कस्पेस-स्कोप्ड क्रेडेंशियल से बदल दिया गया है जो
पुराने वर्कस्पेस तक पहुँच नहीं सकता, तो OpenClaw पुराने चैनल को निरस्त के रूप में दर्ज करता है और
प्रतिस्थापन टोकन को आज़माए बिना बाइंडिंग रिलीज़ कर देता है; उस बचे हुए
चैनल को ClickClack से आर्काइव करें।
संलग्न मुख्य सेशन को केवल-पुल discussion टूल भी मिलता है। यह
नवीनतम संदेशों और हाल के थ्रेड उत्तरों को प्रति संदेश एक एस्केप किए गए, श्रेयांकित रिकॉर्ड के रूप में
पढ़ता है और इसके कोई लेखन या लाइफ़साइकल दुष्प्रभाव नहीं होते। चैनल-रूट और थ्रेड
लुकअप के अनुरोध बजट निश्चित हैं; परिणाम स्पष्ट रूप से चेतावनी देता है कि
उस सुरक्षा सीमा के कारण कोई पुराना सक्रिय थ्रेड छूट सकता है।
उत्तर मोड
replyMode: "agent"(डिफ़ॉल्ट) इनबाउंड संदेशों को सामान्य एजेंट पाइपलाइन से भेजता है, जिसमें सेशन रिकॉर्डिंग और टूल नीति शामिल हैं।replyMode: "model"एजेंट पाइपलाइन को छोड़ देता है और सीधे बॉट उत्तरों के लिए Plugin रनटाइम केllm.completeका उपयोग करता है, जिसे वैकल्पिक रूप सेmodelऔरsystemPromptसे आकार दिया जा सकता है। चुना गया प्रदाता और मॉडल पूर्णता बजट के स्वामी होते हैं।
मॉडल मोड समाधान किए गए बॉट एजेंट आईडी के विरुद्ध पूर्णताएँ चलाता है, जिसके लिए
स्पष्ट plugins.entries.clickclack.llm.allowAgentIdOverride: true ट्रस्ट
बिट आवश्यक है:
{ plugins: { entries: { clickclack: { llm: { allowAgentIdOverride: true, }, }, }, },}यदि आप केवल डिफ़ॉल्ट agent उत्तर मोड का उपयोग करते हैं, तो ट्रस्ट बिट बंद रखें; वहाँ इसकी
आवश्यकता नहीं है।
कमांड मेनू
Gateway स्टार्टअप पर, प्रत्येक कॉन्फ़िगर किया गया खाता OpenClaw के मूल कमांड ClickClack पर प्रकाशित करता है। वे कंपोज़र स्वतः-पूर्णता में बॉट के हैंडल के लेबल के साथ दिखाई देते हैं। प्रत्येक स्टार्टअप पर प्रकाशित सेट को पूरी तरह बदल दिया जाता है, जिसमें मूल कमांड कैटलॉग खाली होने पर पुराने मेनू को साफ़ करना भी शामिल है।
कमांड-मेनू सिंक डिफ़ॉल्ट रूप से सक्षम होता है। ऑप्ट आउट करने के लिए किसी खाते पर
commandMenu: false सेट करें:
{ channels: { clickclack: { enabled: true, token: { source: "env", provider: "default", id: "CLICKCLACK_BOT_TOKEN" }, workspace: "default", commandMenu: false, }, },}टोकन को commands:write की आवश्यकता होती है। वर्तमान ClickClack bot:write और
bot:admin बंडलों में यह स्कोप शामिल है और इसे अलग से भी प्रदान किया जा सकता है।
कमांड मेनू प्रस्तुत किए जाने से पहले बनाए गए टोकन में यह स्कोप जोड़ने या
प्रतिस्थापन टोकन की आवश्यकता हो सकती है।
सिंक सर्वोत्तम-प्रयास के आधार पर होता है और प्रत्येक Gateway स्टार्ट पर एक बार चलता है। स्कोप न होने या नेटवर्क विफलता पर चेतावनी लॉग होती है; एंडपॉइंट के बिना पुराने ClickClack सर्वर पर डीबग स्तर पर लॉग होता है। इनमें से कोई भी विफलता रियलटाइम स्टार्टअप को अवरुद्ध नहीं करती। एजेंट के ऑफ़लाइन रहते हुए भी मेनू उपलब्ध रहते हैं और बॉट के वर्कस्पेस छोड़ने पर हटा दिए जाते हैं।
यह रिलीज़ केवल मूल कमांड विनिर्देश प्रकाशित करती है। उपनाम और Skill-, Plugin- या कस्टम-कमांड कैटलॉग मेनू में नहीं जोड़े जाते। यदि कोई नाम HTTP स्लैश कमांड के रूप में भी पंजीकृत है, तो ClickClack पहले उस पंजीकरण को डिस्पैच करता है; अन्य मेनू कमांड सामान्य संदेश डिलीवरी से चलते रहते हैं।
क्रॉस-सर्विस सहसंबंध प्रमाण के लिए agent मोड का उपयोग करें। किसी प्रामाणिक
ClickClack संदेश आईडी के कैनोनिकल msg_<ulid> रूप के लिए, चैनल
नियतात्मक OpenClaw रन आईडी clickclack:<message-id> प्राप्त करता है। इसके बाद प्रत्येक मॉडल कॉल
डायग्नॉस्टिक्स में clickclack:<message-id>:model:<n> के रूप में दिखाई देती है; जब वह
टर्न ClawRouter का उपयोग करता है, तो वही मॉडल-कॉल आईडी X-Request-ID के रूप में भेजी जाती है।
model मोड सामान्य एजेंट रन/सेशन डायग्नॉस्टिक्स को बायपास करता है और इसलिए
इस प्रमाण पथ के लिए उपयुक्त नहीं है।
जब किसी रियलटाइम इवेंट में सत्यापित payload.correlation_id होता है, तो
चैनल उसे प्रामाणिक संदेश फ़ेच और परिणामी ClickClack उत्तर अनुरोधों पर
X-Correlation-ID के रूप में आगे ले जाता है। मान ClickClack के सुरक्षित
128-वर्ण सेट (A-Z, a-z, 0-9, ., _, :, और -) का उपयोग करते हैं; अमान्य मान
छोड़ दिए जाते हैं। इन जॉइन में केवल पहचानकर्ता होते हैं, संदेश की सामग्री,
प्रॉम्प्ट, पूर्णताएँ, क्रेडेंशियल या टूल आउटपुट कभी नहीं।
स्थायी मीडिया डिलीवरी
मीडिया वाले एजेंट उत्तर आवश्यक स्थायी डिलीवरी का उपयोग करते हैं। OpenClaw पहले ClickClack लेखन से पूर्व प्रत्येक भाग के लिए स्थिर संदेश और अपलोड नॉन्स निर्धारित करता है, ताकि पुनः प्रयास उसी अपलोड और संदेश का दोबारा उपयोग करे, न कि स्टोरेज कोटा का उपभोग या डुप्लिकेट प्रकाशित करे। यदि रीस्टार्ट के बाद कोई अपलोड पहले से मौजूद है, तो OpenClaw मूल स्थानीय पथ या रिमोट मीडिया URL को दोबारा नहीं पढ़ता।
इस पुनर्प्राप्ति अनुबंध के लिए ऐसा ClickClack सर्वर आवश्यक है जो इसका समर्थन करता हो:
GET /api/uploads/by-nonce, जिसमें मिले और न मिले परिणामों परX-ClickClack-Upload-Nonce: supportedहो।GET /api/messages/by-nonce, जिसमें मिले और न मिले परिणामों परX-ClickClack-Message-Nonce: supportedहो।- समान स्वामी-स्कोप्ड नॉन्स और अपलोड के लिए आइडेम्पोटेंट संदेश निर्माण और अटैचमेंट संबद्धता।
पुराने सर्वर के सामान्य 404 को इस बात का प्रमाण नहीं माना जाता कि कोई प्रेषण अनुपस्थित है। डुप्लिकेट के जोखिम के बजाय OpenClaw डिलीवरी को अनसुलझा छोड़ देता है; मीडिया उत्पन्न करने वाले एजेंट उत्तर सक्षम करने से पहले ClickClack अपडेट करें।
एजेंट गतिविधि पंक्तियाँ
डिफ़ॉल्ट रूप से, एजेंट टर्न चलते समय ClickClack चैनल कुछ नहीं दिखाता; केवल अंतिम उत्तर आता है। टर्न की प्रगति के दौरान स्थायी agent_commentary और agent_tool संदेश पंक्तियाँ प्रकाशित करने के लिए किसी खाते पर agentActivity: true सेट करें:
{ channels: { clickclack: { enabled: true, token: { source: "env", provider: "default", id: "CLICKCLACK_BOT_TOKEN" }, workspace: "default", agentActivity: true, }, },}आवश्यकताएँ और व्यवहार:
- डिफ़ॉल्ट रूप से बंद। मानक सेटअप और पुराने ClickClack सर्वर अप्रभावित रहते हैं।
agent_activity:writeटोकन स्कोप आवश्यक है। यह स्कोपbot:writeसे अलग है और उससे विरासत में नहीं मिलता; विकल्प सक्षम करने से पहले--scopes bot:write,agent_activity:writeके साथ बॉट टोकन बनाएँ (या किसी मौजूदा टोकन को यह स्कोप प्रदान करें)।- सर्वोत्तम-प्रयास अवनति। यदि टोकन में
agent_activity:writeनहीं है या सर्वर गतिविधि लेखन अस्वीकार करता है, तो विफलताएँ लॉग होती हैं और अंतिम उत्तर फिर भी सामान्य रूप से डिलीवर होता है; कोई गतिविधि पंक्ति दिखाई नहीं देती। - पंक्तियाँ प्रति टर्न (
turn_id) समूहीकृत होती हैं, इस प्रकार संयोजित होती हैं कि एक तार्किक चरण एक पंक्ति हो, और टूल पंक्तियाँ Discord/Slack/Telegram के समान प्रगति फ़ॉर्मैटिंग (टूल नाम और कमांड विवरण) का उपयोग करती हैं। - श्रेय मेटाडेटा। एजेंट द्वारा लिखी गई पोस्ट (गतिविधि पंक्तियाँ और अंतिम उत्तर) में टर्न के लिए वास्तव में उपयोग किए गए मॉडल से समाधान किए गए
author_modelऔरauthor_thinkingफ़ील्ड होते हैं (फ़ॉलबैक के बाद भी)। जो सर्वर इन कॉलम को परिभाषित नहीं करते वे अज्ञात JSON फ़ील्ड को अनदेखा करते हैं; उन्हें स्थायी रूप से सहेजने वाले सर्वर प्रति संदेश यह उत्तर दे सकते हैं कि "यह पंक्ति किस मॉडल ने, किस चिंतन स्तर पर कही"।
लक्ष्य
channel:<name-or-id>किसी वर्कस्पेस चैनल को भेजता है। बिना उपसर्ग वाले लक्ष्य डिफ़ॉल्ट रूप सेchannel:होते हैं।dm:<user_id>उस उपयोगकर्ता के साथ सीधी बातचीत बनाता है या उसका पुनः उपयोग करता है।thread:<message_id>उस संदेश से शुरू होने वाले थ्रेड में उत्तर देता है।
स्पष्ट आउटबाउंड लक्ष्यों में clickclack: या cc: प्रदाता उपसर्ग भी हो सकता है।
आउटबाउंड मीडिया ClickClack की अपलोड API का उपयोग करता है और फिर स्थायी अपलोड को बनाए गए चैनल संदेश, थ्रेड उत्तर या DM से जोड़ता है। स्थानीय फ़ाइलें और समर्थित रिमोट मीडिया URL, प्रति फ़ाइल 64 MiB सीमा के साथ, OpenClaw की सामान्य मीडिया-पहुँच नीति का पालन करते हैं। स्थायी कतारबद्ध प्रेषण प्रत्येक अपलोड और संदेश भाग के लिए अलग स्वामी-स्कोप्ड नॉन्स का उपयोग करते हैं, फिर उन्हीं ऑब्जेक्ट के साथ अटैचमेंट संबद्धता का पुनः प्रयास करते हैं। सर्वर अनुबंध और पुनर्प्राप्ति व्यवहार के लिए स्थायी मीडिया डिलीवरी देखें।
उदाहरण:
openclaw message send --channel clickclack --target channel:general --message "hello"openclaw message send --channel clickclack --target dm:usr_123 --message "hello"openclaw message send --channel clickclack --target thread:msg_123 --message "following up"अनुमतियाँ
ClickClack टोकन स्कोप ClickClack API द्वारा लागू किए जाते हैं।
bot:read: वर्कस्पेस/चैनल/संदेश/थ्रेड/DM/रियलटाइम/प्रोफ़ाइल डेटा पढ़ें।bot:write:bot:readके साथ चैनल संदेश, थ्रेड उत्तर, DM, अपलोड और कमांड-मेनू प्रकाशन।bot:admin:bot:writeके साथ चैनल निर्माण।commands:write: बॉट का कमांड मेनू प्रकाशित करें। वर्तमानbot:writeऔरbot:adminबंडलों में शामिल है और अलग से प्रदान किया जा सकता है।agent_activity:write: स्थायी एजेंट गतिविधि पंक्तियाँ (agent_commentary/agent_tool)।bot:writeयाbot:adminसे विरासत में नहीं मिलता; केवलagentActivity: trueसेट होने पर आवश्यक है।
सामान्य एजेंट चैट और कमांड-मेनू सिंक के लिए OpenClaw को केवल वर्तमान bot:write की आवश्यकता है। एजेंट गतिविधि पंक्तियाँ सक्षम करते समय agent_activity:write जोड़ें।
समस्या निवारण
ClickClack is not configured for account "<id>": उस खाते के लिएbaseUrl,token(उदाहरण के लिएCLICKCLACK_BOT_TOKENके माध्यम से), औरworkspaceसेट करें।ClickClack workspace not found: <value>:workspaceको ClickClack द्वारा लौटाई गई वर्कस्पेस आईडी, स्लग या नाम पर सेट करें।- कोई इनबाउंड उत्तर नहीं: पुष्टि करें कि टोकन के पास रियलटाइम पढ़ने की पहुँच है और ध्यान रखें कि बॉट अपने संदेशों और अन्य बॉट के संदेशों को अनदेखा करता है।
- चैनल प्रेषण विफल: सत्यापित करें कि बॉट वर्कस्पेस का सदस्य है और उसके पास
bot:writeहै। - कोई कमांड मेनू नहीं: पुष्टि करें कि
commandMenu,falseनहीं है, ClickClack सर्वरPUT /api/bots/self/commandsका समर्थन करता है, और टोकन के पासcommands:writeहै।