Agent coordination
سندباکس و ابزارهای چندعاملی
هر عامل در یک راهاندازی چندعاملی میتواند sandbox و سیاست ابزار سراسری را بازنویسی کند. این صفحه پیکربندی هر عامل، قواعد تقدم و نمونهها را پوشش میدهد.
بکاندها و حالتها — مرجع کامل sandbox.
اشکالزدایی «چرا این مسدود شده است؟»
اجرای ارتقایافته برای فرستندگان مورداعتماد.
نمونههای پیکربندی
نمونه ۱: عامل شخصی + عامل خانوادگی محدود
{ "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و در گفتوگوی جاری را دارد.
نمونه ۲: عامل کاری با sandbox مشترک
{ "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"] } } ] }}نمونه ۲ب: نمایه سراسری کدنویسی + عامل فقط پیامرسانی
{ "tools": { "profile": "coding" }, "agents": { "list": [ { "id": "support", "tools": { "profile": "messaging", "allow": ["slack"] } } ] }}نتیجه:
- عاملهای پیشفرض ابزارهای کدنویسی را دریافت میکنند.
- عامل
supportفقط برای پیامرسانی است (+ ابزار Slack).
نمونه ۳: حالتهای متفاوت sandbox برای هر عامل
{ "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.*.*) هر دو وجود داشته باشند:
پیکربندی sandbox
تنظیمات مختص عامل، تنظیمات سراسری را بازنویسی میکنند:
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.
سیاست ابزار sandbox
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"] پیکربندی شده است، باید تا زمان فعالشدن Plugin ثبتکننده query_db با خطایی آشکار متوقف شود، نه اینکه بهعنوان عاملی فقط متنی ادامه دهد.
سیاستهای ابزار از صورتهای کوتاه group:* پشتیبانی میکنند که به چندین ابزار گسترش مییابند. برای فهرست کامل، به گروههای ابزار مراجعه کنید.
بازنویسیهای ارتقایافته هر عامل (agents.entries.*.tools.elevated) میتوانند اجرای ارتقایافته را برای عاملهای خاص بیشتر محدود کنند. برای جزئیات به حالت ارتقایافته مراجعه کنید.
مهاجرت از تکعاملی
پیش از مهاجرت (تکعاملی)
{ "agents": { "defaults": { "workspace": "~/.openclaw/workspace", "sandbox": { "mode": "non-main" } } }, "tools": { "sandbox": { "tools": { "allow": ["read", "write", "apply_patch", "exec"], "deny": [] } } }}پس از مهاجرت (چندعاملی)
{ "agents": { "list": [ { "id": "main", "default": true, "workspace": "~/.openclaw/workspace", "sandbox": { "mode": "off" } } ] }}نمونههای محدودیت ابزار
عامل فقطخواندنی
{ "tools": { "allow": ["read"], "deny": ["exec", "write", "edit", "apply_patch", "process"] }}اجرای پوسته با ابزارهای سامانه فایل غیرفعال
{ "tools": { "allow": ["read", "exec", "process"], "deny": ["write", "edit", "apply_patch", "browser", "gateway"] }}فقط ارتباطی
{ "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/تمامعرض و XML ناقص فراخوانی ابزار MiniMax را پیش از حذف اطلاعات حساس/کوتاهسازی حذف میکند.
دام رایج: "non-main"
آزمایش
پس از پیکربندی sandbox و ابزارهای چندعاملی:
بررسی تفکیک عامل
openclaw agents list --bindingsتأیید کانتینرهای sandbox
docker ps --filter "name=openclaw-sbx-"آزمایش محدودیتهای ابزار
- پیامی بفرستید که به ابزارهای محدودشده نیاز داشته باشد.
- تأیید کنید که عامل نمیتواند از ابزارهای ردشده استفاده کند.
پایش گزارشها
openclaw logs --follow | grep -E "routing|sandbox|tools"عیبیابی
عامل با وجود `mode: 'all'` در sandbox قرار نگرفته است
- بررسی کنید آیا
agents.defaults.sandbox.modeسراسری وجود دارد که آن را بازنویسی کند. - پیکربندی مختص عامل تقدم دارد، بنابراین
agents.entries.*.sandbox.mode: "all"را تنظیم کنید.
ابزارهایی که با وجود فهرست منع همچنان در دسترساند
- ترتیب کامل فیلترکردن را بررسی کنید: پروفایل ← پروفایل ارائهدهنده ← سیاست سراسری ← سیاست ارائهدهنده ← سیاست عامل ← سیاست ارائهدهندهٔ عامل ← محیط ایزوله ← زیرعامل.
- هر سطح فقط میتواند محدودیت بیشتری اعمال کند و نمیتواند مجوزی را بازگرداند.
- برای اشکالزدایی گامبهگام، به محیط ایزوله در برابر سیاست ابزار در برابر حالت ارتقایافته مراجعه کنید.
کانتینر برای هر عامل بهصورت جداگانه ایزوله نشده است
- مقدار پیشفرض
scopeبرابر با"agent"است (یک کانتینر برای هر شناسهٔ عامل). - برای اختصاص یک کانتینر به هر نشست،
scope: "session"را تنظیم کنید؛ یا برای استفادهٔ مجدد از یک کانتینر میان عاملها،scope: "shared"را تنظیم کنید.
مرتبط
- حالت ارتقایافته
- مسیریابی چندعاملی
- پیکربندی محیط ایزوله
- محیط ایزوله در برابر سیاست ابزار در برابر حالت ارتقایافته — اشکالزدایی «چرا این مسدود شده است؟»
- ایزولهسازی — مرجع کامل محیط ایزوله (حالتها، دامنهها، بکاندها، ایمیجها)
- مدیریت نشست