---
read_when:
    - OpenClaw को ClickClack कार्यस्थान से कनेक्ट करना
    - ClickClack बॉट पहचानों का परीक्षण
summary: ClickClack बॉट-टोकन चैनल सेटअप और लक्ष्य सिंटैक्स
title: ClickClack
x-i18n:
    generated_at: "2026-07-27T17:41:04Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: 761538cdd7a916415719131b9ff2f40bf3e3e0eab0f7bda450250886acde8a64
    source_path: channels/clickclack.md
    workflow: 16
---

ClickClack प्रथम-श्रेणी के ClickClack बॉट टोकन के माध्यम से OpenClaw को स्व-होस्ट किए गए ClickClack कार्यक्षेत्र से जोड़ता है।

इसका उपयोग तब करें जब आप चाहते हैं कि कोई OpenClaw एजेंट ClickClack बॉट उपयोगकर्ता के रूप में दिखाई दे। ClickClack स्वतंत्र सेवा बॉट और उपयोगकर्ता-स्वामित्व वाले बॉट का समर्थन करता है; उपयोगकर्ता-स्वामित्व वाले बॉट एक `owner_user_id` रखते हैं और केवल आपके द्वारा प्रदान किए गए टोकन स्कोप प्राप्त करते हैं।

## त्वरित सेटअप

ClickClack में **Workspace settings → Integrations → OpenClaw** खोलें, **Setup code (recommended)** का उपयोग करके एक
बॉट बनाएँ और जनरेट किया गया कमांड कॉपी करें:

```bash
openclaw channels add clickclack --code 'https://clickclack.example.com/#XXXX-XXXX-XXXX'
```

अलग-अलग फ़्रंटएंड और API मूल या पथ पर माउंट किए गए API के लिए, ClickClack इसके बजाय
सटीक क्लेम एंडपॉइंट देता है:

```bash
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 अपने-आप कनेक्ट हो जाता है और किसी दूसरे
कमांड की आवश्यकता नहीं होती। अन्यथा, इसे इसके साथ शुरू करें:

```bash
openclaw gateway
```

आप कोड को सर्वर URL से अलग भी दे सकते हैं:

```bash
openclaw channels add clickclack --code XXXX-XXXX-XXXX --base-url https://clickclack.example.com
```

निर्देशित सेटअप के लिए चलाएँ:

```bash
openclaw onboard
```

ClickClack चुनें, फिर संकेत मिलने पर सर्वर URL, बॉट टोकन और कार्यक्षेत्र दर्ज करें।
निर्देशित सेटअप सहेजने के बाद सर्वर, टोकन और कार्यक्षेत्र की जाँच करता है; विफल
जाँच कॉन्फ़िगरेशन को नहीं हटाती।

### विकल्प: मैन्युअल टोकन

किसी गैर-OpenClaw क्लाइंट को कॉन्फ़िगर करते समय या जब आपको स्पष्ट रूप से टोकन को स्वयं
प्रबंधित करने की आवश्यकता हो, तो ClickClack में **Manual token** चुनें:

```bash
openclaw channels add clickclack --base-url https://clickclack.example.com --token ccb_... --workspace default
```

`workspace` कार्यक्षेत्र आईडी (`wsp_...`), स्लग या प्रदर्शन नाम स्वीकार करता है।
`--code` को `--token`, `--token-file` या `--use-env` के साथ संयोजित नहीं किया जा सकता।

### विकल्प: परिवेश-आधारित टोकन

डिफ़ॉल्ट अकाउंट कॉन्फ़िगरेशन में टोकन संग्रहीत करने के बजाय `CLICKCLACK_BOT_TOKEN` पढ़ सकता है:

```bash
export CLICKCLACK_BOT_TOKEN="ccb_..."
openclaw channels add clickclack --base-url https://clickclack.example.com --workspace default --use-env
openclaw gateway
```

नामित अकाउंट को कॉन्फ़िगर किए गए टोकन या टोकन फ़ाइल का उपयोग करना आवश्यक है; साझा परिवेश
चर जानबूझकर केवल डिफ़ॉल्ट अकाउंट तक सीमित है।

### JSON5 संदर्भ

समतुल्य कॉन्फ़िगरेशन संरचना यह है:

```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`           | अक्षम            | प्रति-सत्र प्रबंधित चैनल सेटिंग्स; [सत्र चर्चाएँ](#session-discussions) देखें।  |

### प्रमाणीकरण-संरक्षित सार्वजनिक होस्टनाम बनाए रखें

जब ClickClack और OpenClaw Gateway एक ही होस्ट पर चलते हों, लेकिन सार्वजनिक ClickClack होस्टनाम
Cloudflare Access जैसे प्रमाणीकरण Gateway द्वारा सुरक्षित हो, तब `apiBaseUrl` का उपयोग करें:

```json5
{
  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 रीयलटाइम कनेक्शन खोलता है और अपने बॉट टोकन का उपयोग करता है।

```json5
{
  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`
सेटअप टोकन चैनल बना या सिंक्रनाइज़ नहीं कर सकता।

```json5
{
  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` ट्रस्ट
बिट आवश्यक है:

```json5
{
  plugins: {
    entries: {
      clickclack: {
        llm: {
          allowAgentIdOverride: true,
        },
      },
    },
  },
}
```

यदि आप केवल डिफ़ॉल्ट `agent` उत्तर मोड का उपयोग करते हैं, तो ट्रस्ट बिट बंद रखें; वहाँ इसकी
आवश्यकता नहीं है।

## कमांड मेनू

Gateway स्टार्टअप पर, प्रत्येक कॉन्फ़िगर किया गया खाता OpenClaw के मूल
कमांड ClickClack पर प्रकाशित करता है। वे कंपोज़र स्वतः-पूर्णता में बॉट के
हैंडल के लेबल के साथ दिखाई देते हैं। प्रत्येक स्टार्टअप पर प्रकाशित सेट को पूरी तरह बदल दिया जाता है,
जिसमें मूल कमांड कैटलॉग खाली होने पर पुराने मेनू को साफ़ करना भी शामिल है।

कमांड-मेनू सिंक डिफ़ॉल्ट रूप से सक्षम होता है। ऑप्ट आउट करने के लिए किसी खाते पर
`commandMenu: false` सेट करें:

```json5
{
  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` सेट करें:

```json5
{
  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 की सामान्य मीडिया-पहुँच नीति का पालन करते हैं। स्थायी कतारबद्ध प्रेषण प्रत्येक
अपलोड और संदेश भाग के लिए अलग स्वामी-स्कोप्ड नॉन्स का उपयोग करते हैं, फिर उन्हीं
ऑब्जेक्ट के साथ अटैचमेंट संबद्धता का पुनः प्रयास करते हैं। सर्वर
अनुबंध और पुनर्प्राप्ति व्यवहार के लिए [स्थायी मीडिया डिलीवरी](#durable-media-delivery) देखें।

उदाहरण:

```bash
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-rows) सक्षम करते समय `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` है।
