Multi-agent
मल्टी-एजेंट रूटिंग
एक Gateway प्रक्रिया में कई पृथक एजेंट चलाएँ, जिनमें से प्रत्येक का अपना कार्यक्षेत्र, स्थिति डायरेक्टरी (agentDir), और SQLite-समर्थित सत्र इतिहास हो, साथ ही कई चैनल खाते (जैसे दो WhatsApp नंबर) हों। इनबाउंड संदेश बाइंडिंग्स के माध्यम से सही एजेंट तक रूट होते हैं।
एक एजेंट प्रति-पर्सोना पूर्ण दायरा है: कार्यक्षेत्र फ़ाइलें, प्रमाणीकरण प्रोफ़ाइलें, मॉडल रजिस्ट्री और सत्र स्टोर। एक बाइंडिंग किसी चैनल खाते (एक Slack कार्यक्षेत्र, एक WhatsApp नंबर आदि) को उन एजेंटों में से किसी एक से मैप करती है।
एक एजेंट क्या है
प्रत्येक एजेंट का अपना होता है:
- कार्यस्थल: फ़ाइलें,
AGENTS.md/SOUL.md/USER.md, स्थानीय नोट्स, पर्सोना नियम। - स्थिति डायरेक्टरी (
agentDir): प्रमाणीकरण प्रोफ़ाइलें, मॉडल रजिस्ट्री, प्रति-एजेंट कॉन्फ़िगरेशन। - सत्र स्टोर:
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqliteमें चैट इतिहास और रूटिंग स्थिति।
प्रमाणीकरण प्रोफ़ाइलें प्रति-एजेंट होती हैं और यहाँ से पढ़ी जाती हैं:
~/.openclaw/agents/<agentId>/agent/auth-profiles.jsonSkills प्रत्येक एजेंट कार्यक्षेत्र और ~/.openclaw/skills जैसे साझा रूट से लोड होते हैं, फिर प्रभावी एजेंट Skills अनुमति-सूची के अनुसार फ़िल्टर होते हैं। साझा आधार-रेखा के लिए agents.defaults.skills और प्रति-एजेंट प्रतिस्थापन के लिए agents.entries.*.skills का उपयोग करें (स्पष्ट प्रविष्टियाँ डिफ़ॉल्ट को प्रतिस्थापित करती हैं, वे उसमें मर्ज नहीं होतीं)। Skills: प्रति-एजेंट बनाम साझा और Skills: एजेंट अनुमति-सूचियाँ देखें।
Plugin के स्वामित्व वाला स्टोरेज उस Plugin के कॉन्फ़िगरेशन का पालन करता है; दूसरा एजेंट जोड़ने से प्रत्येक वैश्विक Plugin स्टोर स्वचालित रूप से विभाजित नहीं होता। उदाहरण के लिए, जब पर्सोना को संकलित विकी ज्ञान साझा नहीं करना चाहिए, तब Memory Wiki के प्रति-एजेंट वॉल्ट कॉन्फ़िगर करें।
पथ
| क्या | डिफ़ॉल्ट | ओवरराइड |
|---|---|---|
| कॉन्फ़िगरेशन | ~/.openclaw/openclaw.json |
OPENCLAW_CONFIG_PATH |
| स्थिति डायरेक्टरी | ~/.openclaw |
OPENCLAW_STATE_DIR |
| डिफ़ॉल्ट एजेंट का कार्यक्षेत्र | ~/.openclaw/workspace (या जब OPENCLAW_PROFILE सेट हो तब workspace-<profile>) |
agents.entries.*.workspace, फिर agents.defaults.workspace, या OPENCLAW_WORKSPACE_DIR |
| अन्य एजेंटों का कार्यक्षेत्र | <stateDir>/workspace-<agentId> (या सेट होने पर <agents.defaults.workspace>/<agentId>) |
agents.entries.*.workspace |
| एजेंट डायरेक्टरी | ~/.openclaw/agents/<agentId>/agent |
agents.entries.*.agentDir |
| सत्र और ट्रांसक्रिप्ट | ~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite |
— |
| लीगेसी/संग्रहित सत्र आर्टिफ़ैक्ट | ~/.openclaw/agents/<agentId>/sessions |
— |
एकल-एजेंट मोड (डिफ़ॉल्ट)
यदि आप कुछ भी कॉन्फ़िगर नहीं करते, तो OpenClaw एक एजेंट चलाता है:
agentIdका डिफ़ॉल्टmainहै।- सत्रों की कुंजी
agent:main:<mainKey>के रूप में होती है (डिफ़ॉल्टmainKeyका मानmainहै)। - कार्यस्थल का डिफ़ॉल्ट
~/.openclaw/workspaceहै (या जबOPENCLAW_PROFILEकोdefaultके अलावा किसी अन्य मान पर सेट किया गया हो, तबworkspace-<profile>)। - स्थिति का डिफ़ॉल्ट
~/.openclaw/agents/main/agentहै।
एजेंट सहायक
एक नया पृथक एजेंट जोड़ें:
openclaw agents add workफ़्लैग: --workspace <dir>, --model <id>, --agent-dir <dir>, --bind <channel[:accountId]> (दोहराने योग्य), --non-interactive (इसके लिए --workspace आवश्यक है)।
इनबाउंड संदेशों को रूट करने के लिए bindings जोड़ें (विज़ार्ड आपके लिए ऐसा करने का प्रस्ताव देता है), फिर सत्यापित करें:
openclaw agents list --bindingsत्वरित शुरुआत
प्रत्येक एजेंट का कार्यक्षेत्र बनाएँ
openclaw agents add codingopenclaw agents add socialप्रत्येक एजेंट को SOUL.md, AGENTS.md, और वैकल्पिक USER.md सहित अपना कार्यक्षेत्र मिलता है, साथ ही एक समर्पित agentDir और ~/.openclaw/agents/<agentId> के अंतर्गत सत्र स्टोर मिलता है।
चैनल खाते बनाएँ
अपने पसंदीदा चैनलों पर प्रत्येक एजेंट के लिए एक खाता बनाएँ:
- Discord: प्रत्येक एजेंट के लिए एक बॉट, Message Content Intent सक्षम करें, प्रत्येक टोकन कॉपी करें।
- Telegram: BotFather के माध्यम से प्रत्येक एजेंट के लिए एक बॉट, प्रत्येक टोकन कॉपी करें।
- WhatsApp: प्रत्येक खाते के लिए प्रत्येक फ़ोन नंबर लिंक करें।
openclaw channels login --channel whatsapp --account workएजेंट, खाते और बाइंडिंग्स जोड़ें
agents.entries के अंतर्गत एजेंट, channels.<channel>.accounts के अंतर्गत चैनल खाते जोड़ें और उन्हें bindings से कनेक्ट करें (नीचे उदाहरण हैं)।
पुनः आरंभ और सत्यापन करें
openclaw gateway restartopenclaw agents list --bindingsopenclaw channels status --probeकई एजेंट, कई पर्सोना
प्रत्येक कॉन्फ़िगर किया गया agentId मुख्य एजेंट स्थिति के लिए एक अलग पर्सोना सीमा है:
- प्रति चैनल अलग खाते (प्रति
accountId)। - अलग व्यक्तित्व (प्रति-एजेंट
AGENTS.md/SOUL.md)। - अलग प्रमाणीकरण और सत्र, जिनमें एजेंटों के बीच पहुँच केवल स्पष्ट सुविधाओं या Plugin कॉन्फ़िगरेशन के माध्यम से सक्षम होती है।
इससे मुख्य एजेंट स्थिति को अलग रखते हुए कई लोग एक Gateway साझा कर सकते हैं।
प्रति-एजेंट Memory Wiki वॉल्ट
Memory Wiki डिफ़ॉल्ट रूप से एक वैश्विक वॉल्ट का उपयोग करता है। किसी सहायता एजेंट के
संकलित ज्ञान को किसी मार्केटिंग एजेंट के ज्ञान से अलग रखने के लिए,
plugins.entries.memory-wiki.config.vault.scope को agent पर सेट करें:
{ plugins: { entries: { "memory-wiki": { enabled: true, config: { vault: { scope: "agent", path: "~/.openclaw/wiki", }, }, }, }, },}कॉन्फ़िगर किया गया पथ पैरेंट डायरेक्टरी है। OpenClaw सामान्यीकृत
एजेंट आईडी को जोड़ता है, जिससे ~/.openclaw/wiki/support और
~/.openclaw/wiki/marketing जैसे पथ बनते हैं। कई एजेंट कॉन्फ़िगर होने पर एजेंट-दायरे वाले CLI और Gateway संचालन के लिए
एक स्पष्ट एजेंट आवश्यक होता है। ब्रिज
फ़िल्टरिंग, माइग्रेशन और विश्वास-सीमा विवरण के लिए
Memory Wiki के प्रति-एजेंट वॉल्ट देखें।
एजेंटों के बीच QMD मेमोरी खोज
एक एजेंट को दूसरे एजेंट के QMD सत्र ट्रांसक्रिप्ट खोजने देने के लिए, agents.entries.*.memory.search.qmd.extraCollections के अंतर्गत अतिरिक्त संग्रह जोड़ें। जब प्रत्येक एजेंट को समान संग्रह साझा करने चाहिए, तब memory.search.qmd.extraCollections का उपयोग करें।
{ agents: { defaults: { workspace: "~/workspaces/main", }, entries: { main: { workspace: "~/workspaces/main", memory: { search: { qmd: { extraCollections: [{ path: "notes" }], // कार्यक्षेत्र के भीतर हल होता है -> "notes-main" नाम का संग्रह }, }, }, }, family: { workspace: "~/workspaces/family" }, }, }, memory: { backend: "qmd", search: { qmd: { extraCollections: [{ path: "~/agents/family/sessions", name: "family-sessions" }], }, }, qmd: { includeDefaultMemory: false }, },}एक अतिरिक्त-संग्रह पथ एजेंटों के बीच साझा किया जा सकता है, लेकिन जब पथ एजेंट कार्यक्षेत्र के बाहर हो तो उसका name स्पष्ट रहता है। कार्यक्षेत्र के भीतर के पथ एजेंट-दायरे वाले रहते हैं, ताकि प्रत्येक एजेंट का अपना ट्रांसक्रिप्ट खोज सेट बना रहे।
एक WhatsApp नंबर, कई लोग (DM विभाजन)
प्रेषक E.164 (+15551234567) को peer.kind: "direct" से मिलाकर एक WhatsApp खाते पर अलग-अलग WhatsApp DM को अलग-अलग एजेंटों तक रूट करें। उत्तर फिर भी उसी WhatsApp नंबर से आते हैं — प्रति-एजेंट अलग प्रेषक पहचान नहीं होती।
{ agents: { list: [ { id: "alex", workspace: "~/.openclaw/workspace-alex" }, { id: "mia", workspace: "~/.openclaw/workspace-mia" }, ], }, bindings: [ { agentId: "alex", match: { channel: "whatsapp", peer: { kind: "direct", id: "+15551230001" } }, }, { agentId: "mia", match: { channel: "whatsapp", peer: { kind: "direct", id: "+15551230002" } }, }, ], channels: { whatsapp: { dmPolicy: "allowlist", allowFrom: ["+15551230001", "+15551230002"], }, },}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 बॉट खाता एक अद्वितीय accountId से मैप होता है। प्रत्येक खाते को एक एजेंट से बाँधें और प्रत्येक बॉट के लिए अलग अनुमति-सूचियाँ रखें।
{ agents: { list: [ { id: "main", workspace: "~/.openclaw/workspace-main" }, { id: "coding", workspace: "~/.openclaw/workspace-coding" }, ], }, bindings: [ { agentId: "main", match: { channel: "discord", accountId: "default" } }, { agentId: "coding", match: { channel: "discord", accountId: "coding" } }, ], channels: { discord: { groupPolicy: "allowlist", accounts: { default: { token: "DISCORD_BOT_TOKEN_MAIN", guilds: { "123456789012345678": { channels: { "222222222222222222": { allow: true, requireMention: false }, }, }, }, }, coding: { token: "DISCORD_BOT_TOKEN_CODING", guilds: { "123456789012345678": { channels: { "333333333333333333": { allow: true, requireMention: false }, }, }, }, }, }, }, },}- प्रत्येक बॉट को गिल्ड में आमंत्रित करें और Message Content Intent सक्षम करें।
- टोकन
channels.discord.accounts.<id>.tokenमें रहते हैं (डिफ़ॉल्ट खाताDISCORD_BOT_TOKENका उपयोग कर सकता है)।
प्रति एजेंट Telegram बॉट
{ agents: { list: [ { id: "main", workspace: "~/.openclaw/workspace-main" }, { id: "alerts", workspace: "~/.openclaw/workspace-alerts" }, ], }, bindings: [ { agentId: "main", match: { channel: "telegram", accountId: "default" } }, { agentId: "alerts", match: { channel: "telegram", accountId: "alerts" } }, ], channels: { telegram: { accounts: { default: { botToken: "123456:ABC...", dmPolicy: "pairing", }, alerts: { botToken: "987654:XYZ...", dmPolicy: "allowlist", allowFrom: ["tg:123456789"], }, }, }, },}- 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 नंबर
Gateway शुरू करने से पहले प्रत्येक खाता लिंक करें:
openclaw channels login --channel whatsapp --account personalopenclaw channels login --channel whatsapp --account biz~/.openclaw/openclaw.json (JSON5):
{ agents: { list: [ { id: "home", default: true, name: "Home", workspace: "~/.openclaw/workspace-home", agentDir: "~/.openclaw/agents/home/agent", }, { id: "work", name: "Work", workspace: "~/.openclaw/workspace-work", agentDir: "~/.openclaw/agents/work/agent", }, ], }, // निर्धारक रूटिंग: पहला मिलान प्रभावी होता है (सबसे विशिष्ट पहले)। bindings: [ { agentId: "home", match: { channel: "whatsapp", accountId: "personal" } }, { agentId: "work", match: { channel: "whatsapp", accountId: "biz" } }, // वैकल्पिक प्रति-पीयर ओवरराइड (उदाहरण: किसी विशिष्ट समूह को कार्य एजेंट को भेजें)। { agentId: "work", match: { channel: "whatsapp", accountId: "personal", peer: { kind: "group", id: "1203630...@g.us" }, }, }, ], // डिफ़ॉल्ट रूप से बंद: एजेंट-से-एजेंट संदेश सेवा को स्पष्ट रूप से सक्षम करके अनुमति-सूची में रखना आवश्यक है। tools: { agentToAgent: { enabled: false, allow: ["home", "work"], }, }, channels: { whatsapp: { accounts: { personal: { // वैकल्पिक ओवरराइड। डिफ़ॉल्ट: ~/.openclaw/credentials/whatsapp/personal // authDir: "~/.openclaw/credentials/whatsapp/personal", }, biz: { // वैकल्पिक ओवरराइड। डिफ़ॉल्ट: ~/.openclaw/credentials/whatsapp/biz // authDir: "~/.openclaw/credentials/whatsapp/biz", }, }, }, },}सामान्य पैटर्न
WhatsApp दैनिक कार्य + Telegram गहन कार्य
चैनल के आधार पर विभाजित करें: WhatsApp को तेज़ दैनिक एजेंट और Telegram को Opus एजेंट तक रूट करें।
{ agents: { list: [ { id: "chat", name: "Everyday", workspace: "~/.openclaw/workspace-chat", model: "anthropic/claude-sonnet-4-6", }, { id: "opus", name: "Deep Work", workspace: "~/.openclaw/workspace-opus", model: "anthropic/claude-opus-4-6", }, ], }, bindings: [ { agentId: "chat", match: { channel: "whatsapp", accountId: "*" } }, { agentId: "opus", match: { channel: "telegram", accountId: "*" } }, ],}ये उदाहरण accountId: "*" का उपयोग करते हैं ताकि बाद में खाते जोड़ने पर भी बाइंडिंग काम करती रहें। बाकी को चैट पर रखते हुए किसी एक DM/समूह को Opus तक रूट करने के लिए, उस पीयर हेतु match.peer बाइंडिंग जोड़ें — पीयर मिलान हमेशा चैनल-व्यापी नियमों पर प्राथमिकता लेते हैं।
वही चैनल, एक पीयर Opus को
WhatsApp को तेज़ एजेंट पर रखें, लेकिन एक DM को Opus तक रूट करें:
{ agents: { list: [ { id: "chat", name: "Everyday", workspace: "~/.openclaw/workspace-chat", model: "anthropic/claude-sonnet-4-6", }, { id: "opus", name: "Deep Work", workspace: "~/.openclaw/workspace-opus", model: "anthropic/claude-opus-4-6", }, ], }, bindings: [ { agentId: "opus", match: { channel: "whatsapp", accountId: "*", peer: { kind: "direct", id: "+15551234567" } }, }, { agentId: "chat", match: { channel: "whatsapp", accountId: "*" } }, ],}पीयर बाइंडिंग हमेशा प्राथमिकता लेती हैं, इसलिए उन्हें चैनल-व्यापी नियम के ऊपर रखें।
WhatsApp समूह से बँधा पारिवारिक एजेंट
एक समर्पित पारिवारिक एजेंट को किसी एक WhatsApp समूह से बाँधें, जिसमें उल्लेख की शर्त और अधिक सख्त टूल नीति हो:
{ agents: { list: [ { id: "family", name: "Family", workspace: "~/.openclaw/workspace-family", identity: { name: "Family Bot" }, groupChat: { mentionPatterns: ["@family", "@familybot", "@Family Bot"], }, sandbox: { mode: "all", scope: "agent", }, tools: { allow: [ "exec", "read", "sessions_list", "sessions_history", "sessions_send", "sessions_spawn", "session_status", ], deny: ["write", "edit", "apply_patch", "browser", "canvas", "nodes", "cron"], }, }, ], }, bindings: [ { agentId: "family", match: { channel: "whatsapp", peer: { kind: "group", id: "120363999999999999@g.us" }, }, }, ],}टूल की अनुमति/अस्वीकृति सूचियाँ टूल हैं, Skills नहीं। यदि किसी स्किल को बाइनरी चलाने की आवश्यकता है, तो सुनिश्चित करें कि exec अनुमत है और बाइनरी सैंडबॉक्स में मौजूद है। अधिक सख्त नियंत्रण के लिए, agents.entries.*.groupChat.mentionPatterns सेट करें और चैनल के लिए समूह अनुमति-सूचियाँ सक्षम रखें।
प्रति-एजेंट सैंडबॉक्स और टूल कॉन्फ़िगरेशन
प्रत्येक एजेंट के अपने सैंडबॉक्स और टूल प्रतिबंध हो सकते हैं:
{ agents: { list: [ { id: "personal", workspace: "~/.openclaw/workspace-personal", sandbox: { mode: "off", // व्यक्तिगत एजेंट के लिए कोई सैंडबॉक्स नहीं }, // कोई टूल प्रतिबंध नहीं - सभी टूल उपलब्ध हैं }, { id: "family", workspace: "~/.openclaw/workspace-family", sandbox: { mode: "all", // हमेशा सैंडबॉक्स में scope: "agent", // प्रति एजेंट एक कंटेनर docker: { // कंटेनर बनने के बाद वैकल्पिक एकबारगी सेटअप setupCommand: "apt-get update && apt-get install -y git curl", }, }, tools: { allow: ["read"], // केवल रीड टूल deny: ["exec", "write", "edit", "apply_patch"], // अन्य को अस्वीकार करें }, }, ], },}इससे आपको मिलता है:
- सुरक्षा पृथक्करण: अविश्वसनीय एजेंटों के लिए टूल सीमित करें।
- संसाधन नियंत्रण: कुछ एजेंटों को सैंडबॉक्स में रखें और अन्य को होस्ट पर बनाए रखें।
- लचीली नीतियाँ: प्रत्येक एजेंट के लिए अलग अनुमतियाँ।
विस्तृत उदाहरणों के लिए बहु-एजेंट सैंडबॉक्स और टूल देखें।
संबंधित
- ACP एजेंट — बाहरी कोडिंग हार्नेस चलाना
- चैनल रूटिंग — संदेश एजेंट तक कैसे रूट होते हैं
- उपस्थिति — एजेंट की उपस्थिति और उपलब्धता
- सत्र — सत्र पृथक्करण और रूटिंग
- उप-एजेंट — पृष्ठभूमि में एजेंट रन शुरू करना