Agent coordination
سندباکس و ابزارهای چندعاملی
هر عامل در یک پیکربندی چندعاملی میتواند سندباکس سراسری و خطمشی ابزار را بازنویسی کند. این صفحه پیکربندی هر عامل، قواعد تقدم و نمونهها را پوشش میدهد.
بکاندها و حالتها — مرجع کامل سندباکس.
اشکالزدایی «چرا این مسدود شده است؟»
اجرای ارتقایافته برای فرستندگان مورد اعتماد.
نمونههای پیکربندی
نمونه ۱: عامل شخصی + عامل خانوادگی محدود
{ "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و ارسال پیام در گفتوگوی جاری را دارد.
نمونه ۲: عامل کاری با سندباکس مشترک
{ "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).
نمونه ۳: حالتهای متفاوت سندباکس برای هر عامل
{ "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.list[].*) وجود داشته باشند:
پیکربندی سندباکس
تنظیمات مختص عامل، تنظیمات سراسری را بازنویسی میکنند:
agents.list[].sandbox.mode > agents.defaults.sandbox.modeagents.list[].sandbox.scope > agents.defaults.sandbox.scopeagents.list[].sandbox.workspaceRoot > agents.defaults.sandbox.workspaceRootagents.list[].sandbox.workspaceAccess > agents.defaults.sandbox.workspaceAccessagents.list[].sandbox.docker.* > agents.defaults.sandbox.docker.*agents.list[].sandbox.browser.* > agents.defaults.sandbox.browser.*agents.list[].sandbox.prune.* > agents.defaults.sandbox.prune.*محدودیتهای ابزار
ترتیب پالایش به این صورت است:
پروفایل ابزار
tools.profile یا agents.list[].tools.profile.
پروفایل ابزار ارائهدهنده
tools.byProvider[provider].profile یا agents.list[].tools.byProvider[provider].profile.
خطمشی سراسری ابزار
tools.allow / tools.deny.
خطمشی ابزار ارائهدهنده
tools.byProvider[provider].allow/deny.
خطمشی ابزار مختص عامل
agents.list[].tools.allow/deny.
خطمشی ارائهدهنده عامل
agents.list[].tools.byProvider[provider].allow/deny.
خطمشی ابزار سندباکس
tools.sandbox.tools یا agents.list[].tools.sandbox.tools.
خطمشی ابزار عامل فرعی
tools.subagents.tools، در صورت کاربرد.
قواعد تقدم
- هر سطح میتواند ابزارها را بیشتر محدود کند، اما نمیتواند ابزارهای ردشده در سطوح پیشین را دوباره مجاز کند.
- اگر
agents.list[].tools.sandbox.toolsتنظیم شده باشد، برای آن عامل جایگزینtools.sandbox.toolsمیشود. - اگر
agents.list[].tools.profileتنظیم شده باشد، برای آن عاملtools.profileرا بازنویسی میکند. - کلیدهای ابزار ارائهدهنده، هم
provider(برای نمونهgoogle-antigravity) و همprovider/model(برای نمونهopenai/gpt-5.4) را میپذیرند.
رفتار فهرست مجاز خالی
اگر هر فهرست مجاز صریحی در این زنجیره باعث شود اجرای عامل هیچ ابزار قابلفراخوانی نداشته باشد، OpenClaw پیش از ارسال اعلان به مدل متوقف میشود. این رفتار عمدی است: عاملی که با ابزاری ناموجود مانند agents.list[].tools.allow: ["query_db"] پیکربندی شده است، باید تا زمان فعالشدن Plugin ثبتکننده query_db با خطایی آشکار متوقف شود، نه اینکه بهعنوان عاملی صرفاً متنی ادامه دهد.
خطمشیهای ابزار از صورتهای کوتاه group:* پشتیبانی میکنند که به چند ابزار گسترش مییابند. برای فهرست کامل، به گروههای ابزار مراجعه کنید.
بازنویسیهای ارتقایافته هر عامل (agents.list[].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"
آزمایش
پس از پیکربندی سندباکس و ابزارهای چندعاملی:
بررسی تفکیک عامل
openclaw agents list --bindingsبررسی کانتینرهای سندباکس
docker ps --filter "name=openclaw-sbx-"آزمایش محدودیتهای ابزار
- پیامی ارسال کنید که به ابزارهای محدودشده نیاز داشته باشد.
- بررسی کنید که عامل نتواند از ابزارهای ردشده استفاده کند.
پایش گزارشها
openclaw logs --follow | grep -E "routing|sandbox|tools"عیبیابی
عامل با وجود `mode: 'all'` در سندباکس قرار نگرفته است
- بررسی کنید آیا
agents.defaults.sandbox.modeسراسری وجود دارد که آن را بازنویسی میکند. - پیکربندی مختص عامل تقدم دارد، بنابراین
agents.list[].sandbox.mode: "all"را تنظیم کنید.
ابزارهایی که با وجود فهرست منع همچنان در دسترساند
- ترتیب کامل فیلترسازی را بررسی کنید: نمایه ← نمایه ارائهدهنده ← سیاست سراسری ← سیاست ارائهدهنده ← سیاست عامل ← سیاست ارائهدهنده عامل ← محیط ایزوله ← زیرعامل.
- هر سطح فقط میتواند محدودیتهای بیشتری اعمال کند و نمیتواند دسترسی را دوباره اعطا کند.
- برای اشکالزدایی گامبهگام، به محیط ایزوله در برابر سیاست ابزار در برابر حالت ارتقایافته مراجعه کنید.
کانتینر برای هر عامل بهصورت جداگانه ایزوله نشده است
- مقدار پیشفرض
scopeبرابر با"agent"است (یک کانتینر بهازای هر شناسه عامل). - برای یک کانتینر بهازای هر نشست،
scope: "session"را تنظیم کنید؛ یا برای استفاده مجدد از یک کانتینر میان عاملها،scope: "shared"را تنظیم کنید.
مطالب مرتبط
- حالت ارتقایافته
- مسیریابی چندعاملی
- پیکربندی محیط ایزوله
- محیط ایزوله در برابر سیاست ابزار در برابر حالت ارتقایافته — اشکالزدایی «چرا این مسدود شده است؟»
- ایزولهسازی — مرجع کامل محیط ایزوله (حالتها، دامنهها، بکاندها و ایمیجها)
- مدیریت نشست