Agent coordination

मल्टी-एजेंट सैंडबॉक्स और टूल्स

Status: active

बहु-एजेंट सेटअप में प्रत्येक एजेंट वैश्विक सैंडबॉक्स और टूल नीति को ओवरराइड कर सकता है। यह पृष्ठ प्रति-एजेंट कॉन्फ़िगरेशन, प्राथमिकता नियमों और उदाहरणों को शामिल करता है।


कॉन्फ़िगरेशन के उदाहरण

उदाहरण 1: व्यक्तिगत + प्रतिबंधित पारिवारिक एजेंट
json
{  "agents": {    "list": [      {        "id": "main",        "default": true,        "name": "Personal Assistant",        "workspace": "~/.openclaw/workspace",        "sandbox": { "mode": "off" }      },      {        "id": "family",        "name": "Family Bot",        "workspace": "~/.openclaw/workspace-family",        "sandbox": {          "mode": "all",          "scope": "agent"        },        "tools": {          "allow": ["read", "message"],          "deny": ["exec", "write", "edit", "apply_patch", "process", "browser"],          "message": {            "crossContext": {              "allowWithinProvider": false,              "allowAcrossProviders": false            }          }        }      }    ]  },  "bindings": [    {      "agentId": "family",      "match": {        "provider": "whatsapp",        "accountId": "*",        "peer": {          "kind": "group",          "id": "120363424282127706@g.us"        }      }    }  ]}

परिणाम:

  • main एजेंट: होस्ट पर चलता है, सभी टूल तक पूर्ण पहुँच।
  • family एजेंट: Docker में चलता है (प्रति एजेंट एक कंटेनर), केवल read और वर्तमान वार्तालाप में संदेश भेज सकता है।
उदाहरण 2: साझा सैंडबॉक्स वाला कार्य एजेंट
json
{  "agents": {    "list": [      {        "id": "personal",        "workspace": "~/.openclaw/workspace-personal",        "sandbox": { "mode": "off" }      },      {        "id": "work",        "workspace": "~/.openclaw/workspace-work",        "sandbox": {          "mode": "all",          "scope": "shared",          "workspaceRoot": "/tmp/work-sandboxes"        },        "tools": {          "allow": ["read", "write", "apply_patch", "exec"],          "deny": ["browser", "gateway", "discord"]        }      }    ]  }}
उदाहरण 2b: वैश्विक कोडिंग प्रोफ़ाइल + केवल-संदेश एजेंट
json
{  "tools": { "profile": "coding" },  "agents": {    "list": [      {        "id": "support",        "tools": { "profile": "messaging", "allow": ["slack"] }      }    ]  }}

परिणाम:

  • डिफ़ॉल्ट एजेंटों को कोडिंग टूल मिलते हैं।
  • support एजेंट केवल-संदेश वाला है (+ Slack टूल)।
उदाहरण 3: प्रत्येक एजेंट के लिए अलग-अलग सैंडबॉक्स मोड
json
{  "agents": {    "defaults": {      "sandbox": {        "mode": "non-main",        "scope": "session"      }    },    "list": [      {        "id": "main",        "workspace": "~/.openclaw/workspace",        "sandbox": {          "mode": "off"        }      },      {        "id": "public",        "workspace": "~/.openclaw/workspace-public",        "sandbox": {          "mode": "all",          "scope": "agent"        },        "tools": {          "allow": ["read"],          "deny": ["exec", "write", "edit", "apply_patch"]        }      }    ]  }}

कॉन्फ़िगरेशन की प्राथमिकता

जब वैश्विक (agents.defaults.*) और एजेंट-विशिष्ट (agents.entries.*.*) दोनों कॉन्फ़िगरेशन मौजूद हों:

सैंडबॉक्स कॉन्फ़िगरेशन

एजेंट-विशिष्ट सेटिंग वैश्विक सेटिंग को ओवरराइड करती हैं:

text
agents.entries.*.sandbox.mode > agents.defaults.sandbox.modeagents.entries.*.sandbox.scope > agents.defaults.sandbox.scopeagents.entries.*.sandbox.workspaceRoot > agents.defaults.sandbox.workspaceRootagents.entries.*.sandbox.workspaceAccess > agents.defaults.sandbox.workspaceAccessagents.entries.*.sandbox.docker.* > agents.defaults.sandbox.docker.*agents.entries.*.sandbox.browser.* > agents.defaults.sandbox.browser.*agents.entries.*.sandbox.prune.* > agents.defaults.sandbox.prune.*

टूल प्रतिबंध

फ़िल्टर करने का क्रम यह है:

  • टूल प्रोफ़ाइल

    tools.profile या agents.entries.*.tools.profile

  • प्रदाता टूल प्रोफ़ाइल

    tools.byProvider[provider].profile या agents.entries.*.tools.byProvider[provider].profile

  • वैश्विक टूल नीति

    tools.allow / tools.deny

  • प्रदाता टूल नीति

    tools.byProvider[provider].allow/deny

  • एजेंट-विशिष्ट टूल नीति

    agents.entries.*.tools.allow/deny

  • एजेंट प्रदाता नीति

    agents.entries.*.tools.byProvider[provider].allow/deny

  • सैंडबॉक्स टूल नीति

    tools.sandbox.tools या agents.entries.*.tools.sandbox.tools

  • उप-एजेंट टूल नीति

    यदि लागू हो, तो tools.subagents.tools

  • प्राथमिकता नियम
    • प्रत्येक स्तर टूल को और प्रतिबंधित कर सकता है, लेकिन पहले के स्तरों पर अस्वीकृत टूल को वापस अनुमति नहीं दे सकता।
    • यदि agents.entries.*.tools.sandbox.tools सेट है, तो यह उस एजेंट के लिए tools.sandbox.tools को प्रतिस्थापित करता है।
    • यदि agents.entries.*.tools.profile सेट है, तो यह उस एजेंट के लिए tools.profile को ओवरराइड करता है।
    • प्रदाता टूल कुंजियाँ provider (उदाहरण के लिए google-antigravity) या provider/model (उदाहरण के लिए openai/gpt-5.4) में से किसी एक को स्वीकार करती हैं।
    खाली अनुमति-सूची का व्यवहार

    यदि इस श्रृंखला की कोई भी स्पष्ट अनुमति-सूची रन को बिना किसी कॉल किए जा सकने वाले टूल के छोड़ देती है, तो OpenClaw मॉडल को प्रॉम्प्ट भेजने से पहले रुक जाता है। यह जानबूझकर किया गया है: agents.entries.*.tools.allow: ["query_db"] जैसे अनुपलब्ध टूल के साथ कॉन्फ़िगर किए गए एजेंट को तब तक स्पष्ट रूप से विफल होना चाहिए, जब तक query_db पंजीकृत करने वाला Plugin सक्षम न हो जाए; उसे केवल-पाठ एजेंट के रूप में जारी नहीं रहना चाहिए।

    टूल नीतियाँ group:* संक्षिप्त रूपों का समर्थन करती हैं, जो कई टूल में विस्तारित होते हैं। पूरी सूची के लिए टूल समूह देखें।

    प्रति-एजेंट एलिवेटेड ओवरराइड (agents.entries.*.tools.elevated) विशिष्ट एजेंटों के लिए एलिवेटेड निष्पादन को और प्रतिबंधित कर सकते हैं। विवरण के लिए एलिवेटेड मोड देखें।


    एकल एजेंट से माइग्रेशन

    पहले (एकल एजेंट)

    json
    {  "agents": {    "defaults": {      "workspace": "~/.openclaw/workspace",      "sandbox": {        "mode": "non-main"      }    }  },  "tools": {    "sandbox": {      "tools": {        "allow": ["read", "write", "apply_patch", "exec"],        "deny": []      }    }  }}

    बाद में (बहु-एजेंट)

    json
    {  "agents": {    "list": [      {        "id": "main",        "default": true,        "workspace": "~/.openclaw/workspace",        "sandbox": { "mode": "off" }      }    ]  }}

    टूल प्रतिबंध के उदाहरण

    केवल-पठन एजेंट

    json
    {  "tools": {    "allow": ["read"],    "deny": ["exec", "write", "edit", "apply_patch", "process"]  }}

    फ़ाइल-सिस्टम टूल अक्षम रखते हुए शेल निष्पादन

    json
    {  "tools": {    "allow": ["read", "exec", "process"],    "deny": ["write", "edit", "apply_patch", "browser", "gateway"]  }}

    केवल-संचार

    json
    {  "tools": {    "sessions": { "visibility": "tree" },    "allow": ["sessions_list", "sessions_send", "sessions_history", "session_status"],    "deny": ["exec", "write", "edit", "apply_patch", "read", "browser"]  }}

    इस प्रोफ़ाइल में sessions_history अभी भी कच्चे ट्रांसक्रिप्ट डंप के बजाय सीमित, स्वच्छीकृत स्मरण दृश्य लौटाता है। सहायक स्मरण, संपादन/काट-छाँट से पहले चिंतन टैग, <relevant-memories> स्कैफ़ोल्डिंग, सादा-पाठ टूल-कॉल XML पेलोड (जिसमें <tool_call>...</tool_call>, <function_call>...</function_call>, <tool_calls>...</tool_calls>, <function_calls>...</function_calls> और काटे गए टूल-कॉल ब्लॉक शामिल हैं), निम्नीकृत टूल-कॉल स्कैफ़ोल्डिंग, लीक हुए ASCII/पूर्ण-चौड़ाई मॉडल नियंत्रण टोकन और विकृत MiniMax टूल-कॉल XML हटा देता है।


    सामान्य समस्या: "non-main"


    परीक्षण

    बहु-एजेंट सैंडबॉक्स और टूल कॉन्फ़िगर करने के बाद:

  • एजेंट निर्धारण जाँचें

    bash
    openclaw agents list --bindings
  • सैंडबॉक्स कंटेनर सत्यापित करें

    bash
    docker ps --filter "name=openclaw-sbx-"
  • टूल प्रतिबंधों का परीक्षण करें

    • प्रतिबंधित टूल की आवश्यकता वाला संदेश भेजें।
    • सत्यापित करें कि एजेंट अस्वीकृत टूल का उपयोग नहीं कर सकता।
  • लॉग की निगरानी करें

    bash
    openclaw logs --follow | grep -E "routing|sandbox|tools"

  • समस्या निवारण

    `mode: 'all'` के बावजूद एजेंट सैंडबॉक्स में नहीं है
    • जाँचें कि क्या कोई वैश्विक agents.defaults.sandbox.mode इसे ओवरराइड कर रहा है।
    • एजेंट-विशिष्ट कॉन्फ़िगरेशन को प्राथमिकता मिलती है, इसलिए agents.entries.*.sandbox.mode: "all" सेट करें।
    अस्वीकरण सूची के बावजूद टूल अभी भी उपलब्ध हैं
    कंटेनर प्रत्येक एजेंट के लिए पृथक नहीं है
    • डिफ़ॉल्ट scope, "agent" है (प्रत्येक एजेंट आईडी के लिए एक कंटेनर)।
    • प्रत्येक सत्र के लिए एक कंटेनर हेतु scope: "session" सेट करें, या सभी एजेंटों में एक कंटेनर का पुनः उपयोग करने के लिए scope: "shared" सेट करें।

    संबंधित

    Was this useful?
    On this page

    On this page