agentDir), और SQLite-समर्थित सत्र इतिहास हो, साथ ही कई चैनल खाते (जैसे दो WhatsApp नंबर) हों। इनबाउंड संदेश बाइंडिंग्स के माध्यम से सही एजेंट तक रूट होते हैं।
एक एजेंट प्रति-पर्सोना पूर्ण दायरा है: कार्यक्षेत्र फ़ाइलें, प्रमाणीकरण प्रोफ़ाइलें, मॉडल रजिस्ट्री और सत्र स्टोर। एक बाइंडिंग किसी चैनल खाते (एक Slack कार्यक्षेत्र, एक WhatsApp नंबर आदि) को उन एजेंटों में से किसी एक से मैप करती है।
एक एजेंट क्या है
प्रत्येक एजेंट का अपना होता है:- कार्यस्थल: फ़ाइलें,
AGENTS.md/SOUL.md/USER.md, स्थानीय नोट्स, पर्सोना नियम। - स्थिति डायरेक्टरी (
agentDir): प्रमाणीकरण प्रोफ़ाइलें, मॉडल रजिस्ट्री, प्रति-एजेंट कॉन्फ़िगरेशन। - सत्र स्टोर:
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqliteमें चैट इतिहास और रूटिंग स्थिति।
sessions_history सत्रों के बीच स्मरण का अधिक सुरक्षित मार्ग है: यह कच्चे ट्रांसक्रिप्ट डंप के बजाय एक सीमित, संशोधित दृश्य लौटाता है। यह थिंकिंग-ब्लॉक हस्ताक्षर, टूल-परिणाम पेलोड विवरण, <relevant-memories> स्कैफ़ोल्डिंग, टूल-कॉल XML टैग (<tool_call>, <function_call>, और उनके बहुवचन/डाउनग्रेड किए गए रूप), तथा MiniMax टूल-कॉल XML हटाता है, फिर आउटपुट को संक्षिप्त करके बाइट आकार के अनुसार सीमित करता है।~/.openclaw/skills जैसे साझा रूट से लोड होते हैं, फिर प्रभावी एजेंट Skills अनुमति-सूची के अनुसार फ़िल्टर होते हैं। साझा आधार-रेखा के लिए agents.defaults.skills और प्रति-एजेंट प्रतिस्थापन के लिए agents.entries.*.skills का उपयोग करें (स्पष्ट प्रविष्टियाँ डिफ़ॉल्ट को प्रतिस्थापित करती हैं, वे उसमें मर्ज नहीं होतीं)। Skills: प्रति-एजेंट बनाम साझा और Skills: एजेंट अनुमति-सूचियाँ देखें।
Plugin के स्वामित्व वाला स्टोरेज उस Plugin के कॉन्फ़िगरेशन का पालन करता है; दूसरा एजेंट जोड़ने से प्रत्येक वैश्विक Plugin स्टोर स्वचालित रूप से विभाजित नहीं होता। उदाहरण के लिए, जब पर्सोना को संकलित विकी ज्ञान साझा नहीं करना चाहिए, तब
Memory Wiki के प्रति-एजेंट वॉल्ट
कॉन्फ़िगर करें।
कार्यस्थल नोट: प्रत्येक एजेंट का कार्यक्षेत्र डिफ़ॉल्ट cwd है, कोई कठोर सैंडबॉक्स नहीं। सापेक्ष पथ कार्यक्षेत्र के भीतर हल होते हैं, लेकिन सैंडबॉक्सिंग सक्षम न होने पर निरपेक्ष पथ होस्ट के अन्य स्थानों तक पहुँच सकते हैं। सैंडबॉक्सिंग देखें।
पथ
एकल-एजेंट मोड (डिफ़ॉल्ट)
यदि आप कुछ भी कॉन्फ़िगर नहीं करते, तो OpenClaw एक एजेंट चलाता है:agentIdका डिफ़ॉल्टmainहै।- सत्रों की कुंजी
agent:main:<mainKey>के रूप में होती है (डिफ़ॉल्टmainKeyका मानmainहै)। - कार्यस्थल का डिफ़ॉल्ट
~/.openclaw/workspaceहै (या जबOPENCLAW_PROFILEकोdefaultके अलावा किसी अन्य मान पर सेट किया गया हो, तबworkspace-<profile>)। - स्थिति का डिफ़ॉल्ट
~/.openclaw/agents/main/agentहै।
एजेंट सहायक
एक नया पृथक एजेंट जोड़ें:--workspace <dir>, --model <id>, --agent-dir <dir>, --bind <channel[:accountId]> (दोहराने योग्य), --non-interactive (इसके लिए --workspace आवश्यक है)।
इनबाउंड संदेशों को रूट करने के लिए bindings जोड़ें (विज़ार्ड आपके लिए ऐसा करने का प्रस्ताव देता है), फिर सत्यापित करें:
त्वरित शुरुआत
1
प्रत्येक एजेंट का कार्यक्षेत्र बनाएँ
SOUL.md, AGENTS.md, और वैकल्पिक USER.md सहित अपना कार्यक्षेत्र मिलता है, साथ ही एक समर्पित agentDir और ~/.openclaw/agents/<agentId> के अंतर्गत सत्र स्टोर मिलता है।2
चैनल खाते बनाएँ
अपने पसंदीदा चैनलों पर प्रत्येक एजेंट के लिए एक खाता बनाएँ:चैनल मार्गदर्शिकाएँ देखें: Discord, Telegram, WhatsApp।
- Discord: प्रत्येक एजेंट के लिए एक बॉट, Message Content Intent सक्षम करें, प्रत्येक टोकन कॉपी करें।
- Telegram: BotFather के माध्यम से प्रत्येक एजेंट के लिए एक बॉट, प्रत्येक टोकन कॉपी करें।
- WhatsApp: प्रत्येक खाते के लिए प्रत्येक फ़ोन नंबर लिंक करें।
3
एजेंट, खाते और बाइंडिंग्स जोड़ें
agents.entries के अंतर्गत एजेंट, channels.<channel>.accounts के अंतर्गत चैनल खाते जोड़ें और उन्हें bindings से कनेक्ट करें (नीचे उदाहरण हैं)।4
पुनः आरंभ और सत्यापन करें
कई एजेंट, कई पर्सोना
प्रत्येक कॉन्फ़िगर किया गयाagentId मुख्य एजेंट स्थिति के लिए एक अलग पर्सोना सीमा है:
- प्रति चैनल अलग खाते (प्रति
accountId)। - अलग व्यक्तित्व (प्रति-एजेंट
AGENTS.md/SOUL.md)। - अलग प्रमाणीकरण और सत्र, जिनमें एजेंटों के बीच पहुँच केवल स्पष्ट सुविधाओं या Plugin कॉन्फ़िगरेशन के माध्यम से सक्षम होती है।
प्रति-एजेंट Memory Wiki वॉल्ट
Memory Wiki डिफ़ॉल्ट रूप से एक वैश्विक वॉल्ट का उपयोग करता है। किसी सहायता एजेंट के संकलित ज्ञान को किसी मार्केटिंग एजेंट के ज्ञान से अलग रखने के लिए,plugins.entries.memory-wiki.config.vault.scope को agent पर सेट करें:
~/.openclaw/wiki/support और
~/.openclaw/wiki/marketing जैसे पथ बनते हैं। कई एजेंट कॉन्फ़िगर होने पर एजेंट-दायरे वाले CLI और Gateway संचालन के लिए
एक स्पष्ट एजेंट आवश्यक होता है। ब्रिज
फ़िल्टरिंग, माइग्रेशन और विश्वास-सीमा विवरण के लिए
Memory Wiki के प्रति-एजेंट वॉल्ट देखें।
एजेंटों के बीच QMD मेमोरी खोज
एक एजेंट को दूसरे एजेंट के QMD सत्र ट्रांसक्रिप्ट खोजने देने के लिए,agents.entries.*.memory.search.qmd.extraCollections के अंतर्गत अतिरिक्त संग्रह जोड़ें। जब प्रत्येक एजेंट को समान संग्रह साझा करने चाहिए, तब memory.search.qmd.extraCollections का उपयोग करें।
name स्पष्ट रहता है। कार्यक्षेत्र के भीतर के पथ एजेंट-दायरे वाले रहते हैं, ताकि प्रत्येक एजेंट का अपना ट्रांसक्रिप्ट खोज सेट बना रहे।
एक WhatsApp नंबर, कई लोग (DM विभाजन)
प्रेषक E.164 (+15551234567) को peer.kind: "direct" से मिलाकर एक WhatsApp खाते पर अलग-अलग WhatsApp DM को अलग-अलग एजेंटों तक रूट करें। उत्तर फिर भी उसी WhatsApp नंबर से आते हैं — प्रति-एजेंट अलग प्रेषक पहचान नहीं होती।
प्रत्यक्ष चैट डिफ़ॉल्ट रूप से एजेंट की मुख्य सत्र कुंजी में समाहित हो जाती हैं, इसलिए वास्तविक पृथक्करण के लिए प्रति व्यक्ति एक एजेंट आवश्यक है।
रूटिंग नियम
बाइंडिंग्स नियतात्मक होती हैं और सबसे विशिष्ट मिलान जीतता है। पूर्ण स्तर क्रम (सटीक पीयर, पैरेंट पीयर, पीयर वाइल्डकार्ड, गिल्ड+भूमिकाएँ, गिल्ड, टीम, खाता, चैनल, डिफ़ॉल्ट एजेंट) के लिए चैनल रूटिंग देखें। यहाँ कुछ उल्लेखनीय नियम हैं:- यदि एक ही स्तर के भीतर कई बाइंडिंग्स मेल खाती हैं, तो कॉन्फ़िगरेशन क्रम में पहली बाइंडिंग जीतती है।
- यदि कोई बाइंडिंग कई मिलान फ़ील्ड सेट करती है (उदाहरण के लिए
peer+guildId), तो सभी निर्दिष्ट फ़ील्ड का मेल खाना आवश्यक है (ANDसिमेंटिक्स)। - ऐसी बाइंडिंग जिसमें
accountIdनहीं है, केवल डिफ़ॉल्ट खाते से मेल खाती है, प्रत्येक खाते से नहीं। चैनल-व्यापी फ़ॉलबैक के लिएaccountId: "*"या एक खाते के लिएaccountId: "<name>"का उपयोग करें। स्पष्ट खाता आईडी के साथ वही बाइंडिंग फिर से जोड़ने पर मौजूदा केवल-चैनल बाइंडिंग डुप्लिकेट होने के बजाय अपग्रेड हो जाती है।
कई खाते / फ़ोन नंबर
कई खातों का समर्थन करने वाले चैनल (जैसे WhatsApp) प्रत्येक लॉगिन की पहचान करने के लिएaccountId का उपयोग करते हैं। प्रत्येक accountId अपने एजेंट तक रूट होता है, इसलिए एक सर्वर सत्रों को मिलाए बिना कई फ़ोन नंबर होस्ट कर सकता है।
जिस खाते का उपयोग तब करना है जब accountId छोड़ा गया हो, उसे चुनने के लिए channels.<channel>.defaultAccount सेट करें। सेट न होने पर, यदि default मौजूद है तो OpenClaw उसका उपयोग करता है, अन्यथा पहले कॉन्फ़िगर किए गए खाता आईडी (क्रमबद्ध) का।
एकाधिक खातों का समर्थन करने वाले चैनल: discord, feishu, googlechat, imessage, irc, line, mattermost, matrix, nextcloud-talk, nostr, signal, slack, telegram, whatsapp, zalo, zalouser।
अवधारणाएँ
agentId: एक “मस्तिष्क” (वर्कस्पेस, प्रति-एजेंट प्रमाणीकरण, प्रति-एजेंट सत्र स्टोर)।accountId: एक चैनल खाता इंस्टेंस (जैसे WhatsApp खाताpersonalबनामbiz)।binding: आने वाले संदेशों को(channel, accountId, peer), और वैकल्पिक रूप से गिल्ड/टीम आईडी के आधार पर किसीagentIdतक रूट करता है।- प्रत्यक्ष चैट
agent:<agentId>:<mainKey>में समाहित हो जाती हैं (प्रति-एजेंट “मुख्य”;session.mainKeyदेखें)।
प्लेटफ़ॉर्म के उदाहरण
प्रति एजेंट Discord बॉट
प्रति एजेंट Discord बॉट
प्रत्येक Discord बॉट खाता एक अद्वितीय
accountId से मैप होता है। प्रत्येक खाते को एक एजेंट से बाँधें और प्रत्येक बॉट के लिए अलग अनुमति-सूचियाँ रखें।- प्रत्येक बॉट को गिल्ड में आमंत्रित करें और Message Content Intent सक्षम करें।
- टोकन
channels.discord.accounts.<id>.tokenमें रहते हैं (डिफ़ॉल्ट खाताDISCORD_BOT_TOKENका उपयोग कर सकता है)।
प्रति एजेंट Telegram बॉट
प्रति एजेंट Telegram बॉट
- BotFather से प्रत्येक एजेंट के लिए एक बॉट बनाएँ और प्रत्येक टोकन कॉपी करें।
- टोकन
channels.telegram.accounts.<id>.botTokenमें रहते हैं (डिफ़ॉल्ट खाताTELEGRAM_BOT_TOKENका उपयोग कर सकता है)। - एक ही Telegram समूह में एकाधिक बॉट के लिए, प्रत्येक बॉट को आमंत्रित करें और उस बॉट का उल्लेख करें जिसे उत्तर देना चाहिए।
- प्रत्येक समूह बॉट के लिए BotFather Privacy Mode अक्षम करें (
/setprivacy-> Disable), फिर बॉट को हटाकर दोबारा जोड़ें ताकि Telegram यह सेटिंग लागू करे। channels.telegram.groupsसे समूहों की अनुमति दें, या केवल विश्वसनीय समूह परिनियोजनों के लिएgroupPolicy: "open"का उपयोग करें।- प्रेषक उपयोगकर्ता आईडी
groupAllowFromमें रखें। समूह और सुपरग्रुप आईडीchannels.telegram.groupsमें होने चाहिए,groupAllowFromमें नहीं। accountIdके आधार पर बाँधें ताकि प्रत्येक बॉट अपने एजेंट तक रूट हो।
प्रति एजेंट WhatsApp नंबर
प्रति एजेंट WhatsApp नंबर
Gateway शुरू करने से पहले प्रत्येक खाता लिंक करें:
~/.openclaw/openclaw.json (JSON5):सामान्य पैटर्न
- WhatsApp दैनिक कार्य + Telegram गहन कार्य
- वही चैनल, एक पीयर Opus को
- WhatsApp समूह से बँधा पारिवारिक एजेंट
चैनल के आधार पर विभाजित करें: WhatsApp को तेज़ दैनिक एजेंट और Telegram को Opus एजेंट तक रूट करें।ये उदाहरण
accountId: "*" का उपयोग करते हैं ताकि बाद में खाते जोड़ने पर भी बाइंडिंग काम करती रहें। बाकी को चैट पर रखते हुए किसी एक DM/समूह को Opus तक रूट करने के लिए, उस पीयर हेतु match.peer बाइंडिंग जोड़ें — पीयर मिलान हमेशा चैनल-व्यापी नियमों पर प्राथमिकता लेते हैं।प्रति-एजेंट सैंडबॉक्स और टूल कॉन्फ़िगरेशन
प्रत्येक एजेंट के अपने सैंडबॉक्स और टूल प्रतिबंध हो सकते हैं:setupCommand, sandbox.docker के अंतर्गत रहता है और कंटेनर बनने पर एक बार चलता है। जब निर्धारित स्कोप "shared" हो, तब प्रति-एजेंट sandbox.docker.* ओवरराइड अनदेखे कर दिए जाते हैं।- सुरक्षा पृथक्करण: अविश्वसनीय एजेंटों के लिए टूल सीमित करें।
- संसाधन नियंत्रण: कुछ एजेंटों को सैंडबॉक्स में रखें और अन्य को होस्ट पर बनाए रखें।
- लचीली नीतियाँ: प्रत्येक एजेंट के लिए अलग अनुमतियाँ।
tools.elevated में वैश्विक गेट (tools.elevated.enabled/allowFrom) और प्रति-एजेंट गेट (agents.entries.*.tools.elevated.enabled/allowFrom) दोनों हैं। प्रति-एजेंट गेट वैश्विक गेट को केवल और अधिक सीमित कर सकता है — उन्नत कमांड चलाने के लिए दोनों को प्रेषक की अनुमति देनी होगी। समूह लक्ष्यीकरण के लिए, agents.entries.*.groupChat.mentionPatterns का उपयोग करें ताकि @उल्लेख इच्छित एजेंट से स्पष्ट रूप से मैप हों।संबंधित
- ACP एजेंट — बाहरी कोडिंग हार्नेस चलाना
- चैनल रूटिंग — संदेश एजेंट तक कैसे रूट होते हैं
- उपस्थिति — एजेंट की उपस्थिति और उपलब्धता
- सत्र — सत्र पृथक्करण और रूटिंग
- उप-एजेंट — पृष्ठभूमि में एजेंट रन शुरू करना