Gateway
ایزولهسازی
OpenClaw میتواند ابزارها را درون پشتوانههای sandbox اجرا کند تا دامنه اثر کاهش یابد. این کار اختیاری است و با پیکربندی کنترل میشود (agents.defaults.sandbox یا agents.list[].sandbox). اگر sandboxing خاموش باشد، ابزارها روی میزبان اجرا میشوند. Gateway روی میزبان باقی میماند؛ اجرای ابزار، در صورت فعال بودن، در یک sandbox ایزوله اجرا میشود.
چه چیزهایی sandbox میشوند
- اجرای ابزار (
exec،read،write،edit،apply_patch،processو غیره). - مرورگر sandbox اختیاری (
agents.defaults.sandbox.browser).
جزئیات مرورگر sandbox
- بهطور پیشفرض، مرورگر sandbox وقتی ابزار مرورگر به آن نیاز دارد، خودکار شروع میشود (اطمینان میدهد CDP در دسترس است). از طریق
agents.defaults.sandbox.browser.autoStartوagents.defaults.sandbox.browser.autoStartTimeoutMsپیکربندی کنید. - بهطور پیشفرض، کانتینرهای مرورگر sandbox بهجای شبکه سراسری
bridgeاز یک شبکه Docker اختصاصی (openclaw-sandbox-browser) استفاده میکنند. باagents.defaults.sandbox.browser.networkپیکربندی کنید. - گزینه اختیاری
agents.defaults.sandbox.browser.cdpSourceRangeورود CDP در لبه کانتینر را با یک allowlist از CIDR محدود میکند (برای مثال172.21.0.1/32). - دسترسی مشاهدهگر noVNC بهطور پیشفرض با گذرواژه محافظت میشود؛ OpenClaw یک URL توکن کوتاهعمر صادر میکند که یک صفحه bootstrap محلی ارائه میدهد و noVNC را با گذرواژه در fragment نشانی باز میکند (نه در لاگهای query/header).
agents.defaults.sandbox.browser.allowHostControlبه نشستهای sandbox اجازه میدهد صراحتا مرورگر میزبان را هدف بگیرند.- allowlistهای اختیاری،
target: "custom"را کنترل میکنند:allowedControlUrls،allowedControlHosts،allowedControlPorts.
sandbox نمیشوند:
- خود فرایند Gateway.
- هر ابزاری که صراحتا مجاز باشد خارج از sandbox اجرا شود (مثلا
tools.elevated).- اجرای ارتقایافته از sandboxing عبور میکند و از مسیر خروج پیکربندیشده استفاده میکند (
gatewayبهطور پیشفرض، یاnodeوقتی هدف اجراnodeاست). - اگر sandboxing خاموش باشد،
tools.elevatedاجرا را تغییر نمیدهد (از قبل روی میزبان است). حالت ارتقایافته را ببینید.
- اجرای ارتقایافته از sandboxing عبور میکند و از مسیر خروج پیکربندیشده استفاده میکند (
حالتها
agents.defaults.sandbox.mode کنترل میکند sandboxing چه زمانی استفاده شود:
off
بدون sandboxing.
non-main
فقط نشستهای غیر main را sandbox کن (پیشفرض، اگر میخواهید گفتوگوهای عادی روی میزبان باشند).
"non-main" بر اساس session.mainKey است (پیشفرض "main")، نه شناسه agent. نشستهای گروه/کانال کلیدهای خودشان را دارند، بنابراین غیر main محسوب میشوند و sandbox خواهند شد.
all
هر نشست در یک sandbox اجرا میشود.
دامنه
agents.defaults.sandbox.scope کنترل میکند چند کانتینر ساخته شود:
"agent"(پیشفرض): یک کانتینر برای هر agent."session": یک کانتینر برای هر نشست."shared": یک کانتینر مشترک میان همه نشستهای sandbox شده.
پشتوانه
agents.defaults.sandbox.backend کنترل میکند کدام runtime sandbox را فراهم کند:
"docker"(پیشفرض وقتی sandboxing فعال است): runtime محلی sandbox مبتنی بر Docker."ssh": runtime عمومی sandbox راهدور مبتنی بر SSH."openshell": runtime sandbox مبتنی بر OpenShell.
پیکربندی مخصوص SSH زیر agents.defaults.sandbox.ssh قرار دارد. پیکربندی مخصوص OpenShell زیر plugins.entries.openshell.config قرار دارد.
انتخاب یک پشتوانه
| Docker | SSH | OpenShell | |
|---|---|---|---|
| محل اجرا | کانتینر محلی | هر میزبان قابلدسترسی با SSH | sandbox مدیریتشده توسط OpenShell |
| راهاندازی | scripts/sandbox-setup.sh |
کلید SSH + میزبان هدف | Plugin مربوط به OpenShell فعال باشد |
| مدل workspace | Bind-mount یا کپی | راهدور بهعنوان مرجع (یکبار seed) | mirror یا remote |
| کنترل شبکه | docker.network (پیشفرض: none) |
به میزبان راهدور بستگی دارد | به OpenShell بستگی دارد |
| مرورگر sandbox | پشتیبانی میشود | پشتیبانی نمیشود | هنوز پشتیبانی نمیشود |
| Bind mountها | docker.binds |
N/A | N/A |
| بهترین کاربرد | توسعه محلی، ایزولاسیون کامل | واگذاری بار به یک ماشین راهدور | sandboxهای راهدور مدیریتشده با همگامسازی دوطرفه اختیاری |
پشتوانه Docker
sandboxing بهطور پیشفرض خاموش است. اگر sandboxing را فعال کنید و پشتوانهای انتخاب نکنید، OpenClaw از پشتوانه Docker استفاده میکند. ابزارها و مرورگرهای sandbox را بهصورت محلی از طریق سوکت daemon Docker (/var/run/docker.sock) اجرا میکند. ایزولاسیون کانتینر sandbox توسط namespaceهای Docker تعیین میشود.
برای در معرض قرار دادن GPUهای میزبان برای sandboxهای Docker، agents.defaults.sandbox.docker.gpus یا override مخصوص هر agent یعنی agents.list[].sandbox.docker.gpus را تنظیم کنید. مقدار بهعنوان یک آرگومان جداگانه به پرچم --gpus در Docker پاس داده میشود، برای مثال "all" یا "device=GPU-uuid"، و به runtime میزبان سازگار مانند NVIDIA Container Toolkit نیاز دارد.
پشتوانه SSH
وقتی میخواهید OpenClaw اجرای exec، ابزارهای فایل، و خواندن رسانه را روی هر ماشین قابلدسترسی با SSH sandbox کند، از backend: "ssh" استفاده کنید.
{
agents: {
defaults: {
sandbox: {
mode: "all",
backend: "ssh",
scope: "session",
workspaceAccess: "rw",
ssh: {
target: "user@gateway-host:22",
workspaceRoot: "/tmp/openclaw-sandboxes",
strictHostKeyChecking: true,
updateHostKeys: true,
identityFile: "~/.ssh/id_ed25519",
certificateFile: "~/.ssh/id_ed25519-cert.pub",
knownHostsFile: "~/.ssh/known_hosts",
// Or use SecretRefs / inline contents instead of local files:
// identityData: { source: "env", provider: "default", id: "SSH_IDENTITY" },
// certificateData: { source: "env", provider: "default", id: "SSH_CERTIFICATE" },
// knownHostsData: { source: "env", provider: "default", id: "SSH_KNOWN_HOSTS" },
},
},
},
},
}
نحوه کار
- OpenClaw یک ریشه راهدور مخصوص هر دامنه زیر
sandbox.ssh.workspaceRootایجاد میکند. - در اولین استفاده پس از ایجاد یا ایجاد مجدد، OpenClaw آن workspace راهدور را یکبار از workspace محلی seed میکند.
- پس از آن،
exec،read،write،edit،apply_patch، خواندن رسانه prompt، و staging رسانه ورودی مستقیما از طریق SSH روی workspace راهدور اجرا میشوند. - OpenClaw تغییرات راهدور را بهصورت خودکار به workspace محلی همگام نمیکند.
مواد احراز هویت
identityFile،certificateFile،knownHostsFile: از فایلهای محلی موجود استفاده میکنند و آنها را از طریق پیکربندی OpenSSH پاس میدهند.identityData،certificateData،knownHostsData: از رشتههای inline یا SecretRefs استفاده میکنند. OpenClaw آنها را از طریق snapshot معمول runtime اسرار resolve میکند، آنها را با0600در فایلهای موقت مینویسد، و وقتی نشست SSH تمام شود حذفشان میکند.- اگر هم
*Fileو هم*Dataبرای یک مورد تنظیم شده باشند،*Dataبرای آن نشست SSH اولویت دارد.
پیامدهای راهدور بهعنوان مرجع
این یک مدل راهدور بهعنوان مرجع است. workspace راهدور SSH پس از seed اولیه به وضعیت واقعی sandbox تبدیل میشود.
- ویرایشهای محلی میزبان که پس از مرحله seed خارج از OpenClaw انجام شوند، تا زمانی که sandbox را دوباره ایجاد نکنید در راهدور قابل مشاهده نیستند.
openclaw sandbox recreateریشه راهدور مخصوص آن دامنه را حذف میکند و در استفاده بعدی دوباره از محلی seed میکند.- sandboxing مرورگر در پشتوانه SSH پشتیبانی نمیشود.
- تنظیمات
sandbox.docker.*برای پشتوانه SSH اعمال نمیشوند.
پشتوانه OpenShell
وقتی میخواهید OpenClaw ابزارها را در یک محیط راهدور مدیریتشده توسط OpenShell sandbox کند، از backend: "openshell" استفاده کنید. برای راهنمای کامل راهاندازی، مرجع پیکربندی، و مقایسه حالتهای workspace، صفحه اختصاصی OpenShell را ببینید.
OpenShell همان انتقال SSH هسته و پل فایلسیستم راهدور پشتوانه عمومی SSH را دوباره استفاده میکند، و lifecycle مخصوص OpenShell (sandbox create/get/delete، sandbox ssh-config) بههمراه حالت اختیاری workspace یعنی mirror را اضافه میکند.
{
agents: {
defaults: {
sandbox: {
mode: "all",
backend: "openshell",
scope: "session",
workspaceAccess: "rw",
},
},
},
plugins: {
entries: {
openshell: {
enabled: true,
config: {
from: "openclaw",
mode: "remote", // mirror | remote
remoteWorkspaceDir: "/sandbox",
remoteAgentWorkspaceDir: "/agent",
},
},
},
},
}
حالتهای OpenShell:
mirror(پیشفرض): workspace محلی مرجع باقی میماند. OpenClaw پیش از exec فایلهای محلی را به OpenShell همگام میکند و پس از exec، workspace راهدور را به عقب همگام میکند.remote: workspace در OpenShell پس از ایجاد sandbox مرجع است. OpenClaw یکبار workspace راهدور را از workspace محلی seed میکند، سپس ابزارهای فایل و exec مستقیما روی sandbox راهدور اجرا میشوند، بدون همگامسازی تغییرات به عقب.
جزئیات انتقال راهدور
- OpenClaw از OpenShell پیکربندی SSH مخصوص sandbox را از طریق
openshell sandbox ssh-config <name>میخواهد. - هسته آن پیکربندی SSH را در یک فایل موقت مینویسد، نشست SSH را باز میکند، و همان پل فایلسیستم راهدور استفادهشده توسط
backend: "ssh"را دوباره استفاده میکند. - فقط در حالت
mirror، lifecycle متفاوت است: همگامسازی محلی به راهدور پیش از exec، سپس همگامسازی به عقب پس از exec.
محدودیتهای فعلی OpenShell
- مرورگر sandbox هنوز پشتیبانی نمیشود
sandbox.docker.bindsدر پشتوانه OpenShell پشتیبانی نمیشود- knobهای runtime مخصوص Docker زیر
sandbox.docker.*همچنان فقط برای پشتوانه Docker اعمال میشوند
حالتهای workspace
OpenShell دو مدل workspace دارد. این همان بخشی است که در عمل بیشترین اهمیت را دارد.
mirror (local canonical)
وقتی میخواهید workspace محلی مرجع باقی بماند، از plugins.entries.openshell.config.mode: "mirror" استفاده کنید.
رفتار:
- پیش از
exec، OpenClaw workspace محلی را به sandbox در OpenShell همگام میکند. - پس از
exec، OpenClaw workspace راهدور را به workspace محلی همگام میکند. - ابزارهای فایل همچنان از طریق پل sandbox عمل میکنند، اما workspace محلی بین نوبتها منبع حقیقت باقی میماند.
در این موارد استفاده کنید:
- فایلها را بهصورت محلی بیرون از OpenClaw ویرایش میکنید و میخواهید آن تغییرات بهطور خودکار در سندباکس ظاهر شوند
- میخواهید سندباکس OpenShell تا حد امکان مانند بکاند Docker رفتار کند
- میخواهید فضای کاری میزبان بعد از هر نوبت exec، نوشتنهای سندباکس را بازتاب دهد
مصالحه: هزینه همگامسازی اضافی قبل و بعد از exec.
remote (OpenShell canonical)
وقتی میخواهید فضای کاری OpenShell مرجع شود از plugins.entries.openshell.config.mode: "remote" استفاده کنید.
رفتار:
- وقتی سندباکس برای اولین بار ساخته میشود، OpenClaw فضای کاری راهدور را یکبار از فضای کاری محلی مقداردهی اولیه میکند.
- بعد از آن،
exec،read،write،editوapply_patchمستقیماً روی فضای کاری راهدور OpenShell عمل میکنند. - OpenClaw تغییرات راهدور را بعد از exec به فضای کاری محلی همگامسازی نمیکند.
- خواندن رسانهها در زمان پرامپت همچنان کار میکند، چون ابزارهای فایل و رسانه بهجای فرض گرفتن مسیر محلی میزبان، از طریق پل سندباکس میخوانند.
- انتقال از طریق SSH به سندباکس OpenShell است که توسط
openshell sandbox ssh-configبرگردانده میشود.
پیامدهای مهم:
- اگر بعد از مرحله مقداردهی اولیه، فایلها را روی میزبان بیرون از OpenClaw ویرایش کنید، سندباکس راهدور آن تغییرات را بهطور خودکار نخواهد دید.
- اگر سندباکس دوباره ساخته شود، فضای کاری راهدور دوباره از فضای کاری محلی مقداردهی اولیه میشود.
- با
scope: "agent"یاscope: "shared"، آن فضای کاری راهدور در همان scope مشترک است.
زمانی از این استفاده کنید که:
- سندباکس باید عمدتاً در سمت راهدور OpenShell زندگی کند
- سربار همگامسازی کمتری در هر نوبت میخواهید
- نمیخواهید ویرایشهای محلی میزبان، وضعیت سندباکس راهدور را بیصدا بازنویسی کنند
اگر سندباکس را یک محیط اجرای موقت در نظر میگیرید، mirror را انتخاب کنید. اگر سندباکس را فضای کاری واقعی در نظر میگیرید، remote را انتخاب کنید.
چرخه عمر OpenShell
سندباکسهای OpenShell همچنان از طریق چرخه عمر معمول سندباکس مدیریت میشوند:
openclaw sandbox listزماناجراهای OpenShell و همچنین زماناجراهای Docker را نشان میدهدopenclaw sandbox recreateزماناجرای فعلی را حذف میکند و به OpenClaw اجازه میدهد در استفاده بعدی آن را دوباره بسازد- منطق پاکسازی نیز از بکاند آگاه است
برای حالت remote، ساخت دوباره بهویژه مهم است:
- ساخت دوباره، فضای کاری راهدور مرجع را برای آن scope حذف میکند
- استفاده بعدی، یک فضای کاری راهدور تازه را از فضای کاری محلی مقداردهی اولیه میکند
برای حالت mirror، ساخت دوباره عمدتاً محیط اجرای راهدور را بازنشانی میکند، چون فضای کاری محلی در هر صورت مرجع باقی میماند.
دسترسی به فضای کاری
agents.defaults.sandbox.workspaceAccess کنترل میکند سندباکس چه چیزهایی را میتواند ببیند:
none (default)
ابزارها یک فضای کاری سندباکس را زیر ~/.openclaw/sandboxes میبینند.
ro
فضای کاری عامل را بهصورت فقطخواندنی در /agent mount میکند (write/edit/apply_patch را غیرفعال میکند).
rw
فضای کاری عامل را بهصورت خواندن/نوشتن در /workspace mount میکند.
با بکاند OpenShell:
- حالت
mirrorهمچنان از فضای کاری محلی بهعنوان منبع مرجع بین نوبتهای exec استفاده میکند - حالت
remoteبعد از مقداردهی اولیه، از فضای کاری راهدور OpenShell بهعنوان منبع مرجع استفاده میکند workspaceAccess: "ro"و"none"همچنان رفتار نوشتن را به همان شکل محدود میکنند
رسانه ورودی در فضای کاری فعال سندباکس کپی میشود (media/inbound/*).
اتصالهای bind سفارشی
agents.defaults.sandbox.docker.binds دایرکتوریهای اضافی میزبان را در کانتینر mount میکند. قالب: host:container:mode (برای مثال، "/home/user/source:/source:rw").
bindهای سراسری و مختص هر عامل ادغام میشوند (جایگزین نمیشوند). تحت scope: "shared"، bindهای مختص هر عامل نادیده گرفته میشوند.
agents.defaults.sandbox.browser.binds دایرکتوریهای اضافی میزبان را فقط در کانتینر مرورگر سندباکس mount میکند.
- وقتی تنظیم شود (از جمله
[])، برای کانتینر مرورگر جایگزینagents.defaults.sandbox.docker.bindsمیشود. - وقتی حذف شود، کانتینر مرورگر به
agents.defaults.sandbox.docker.bindsبرمیگردد (سازگار با نسخههای قبلی).
مثال (منبع فقطخواندنی + یک دایرکتوری داده اضافی):
{
agents: {
defaults: {
sandbox: {
docker: {
binds: ["/home/user/source:/source:ro", "/var/data/myapp:/data:ro"],
},
},
},
list: [
{
id: "build",
sandbox: {
docker: {
binds: ["/mnt/cache:/cache:rw"],
},
},
},
],
},
}
تصویرها و راهاندازی
تصویر پیشفرض Docker: openclaw-sandbox:bookworm-slim
ساخت تصویر پیشفرض
از یک checkout منبع:
scripts/sandbox-setup.sh
از نصب npm (بدون نیاز به checkout منبع):
docker build -t openclaw-sandbox:bookworm-slim - <<'DOCKERFILE'
FROM debian:bookworm-slim
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
bash ca-certificates curl git jq python3 ripgrep \
&& rm -rf /var/lib/apt/lists/*
RUN useradd --create-home --shell /bin/bash sandbox
USER sandbox
WORKDIR /home/sandbox
CMD ["sleep", "infinity"]
DOCKERFILE
تصویر پیشفرض شامل Node نیست. اگر یک مهارت به Node (یا زماناجراهای دیگر) نیاز دارد، یا یک تصویر سفارشی بسازید یا از طریق sandbox.docker.setupCommand نصب کنید (نیازمند خروج شبکه + ریشه قابلنوشتن + کاربر root).
وقتی openclaw-sandbox:bookworm-slim موجود نباشد، OpenClaw بیصدا debian:bookworm-slim ساده را جایگزین نمیکند. اجراهای سندباکس که تصویر پیشفرض را هدف میگیرند، تا زمانی که آن را بسازید با یک دستورالعمل ساخت سریع شکست میخورند، چون تصویر همراه، python3 را برای کمکابزارهای نوشتن/ویرایش سندباکس حمل میکند.
اختیاری: ساخت تصویر common
برای یک تصویر سندباکس کاربردیتر با ابزارهای رایج (برای مثال curl، jq، nodejs، python3، git):
از یک checkout منبع:
scripts/sandbox-common-setup.sh
از نصب npm، ابتدا تصویر پیشفرض را بسازید (بالا را ببینید)، سپس تصویر common را با استفاده از scripts/docker/sandbox/Dockerfile.common از مخزن، روی آن بسازید.
سپس agents.defaults.sandbox.docker.image را روی openclaw-sandbox-common:bookworm-slim تنظیم کنید.
اختیاری: ساخت تصویر مرورگر سندباکس
از یک checkout منبع:
scripts/sandbox-browser-setup.sh
از نصب npm، با استفاده از scripts/docker/sandbox/Dockerfile.browser از مخزن بسازید.
بهصورت پیشفرض، کانتینرهای سندباکس Docker با بدون شبکه اجرا میشوند. با agents.defaults.sandbox.docker.network override کنید.
پیشفرضهای Chromium مرورگر سندباکس
تصویر همراه مرورگر سندباکس همچنین پیشفرضهای محافظهکارانه شروع Chromium را برای بارهای کاری کانتینری اعمال میکند. پیشفرضهای فعلی کانتینر شامل این موارد است:
--remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-dev-shm-usage--disable-background-networking--disable-extensions--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--disable-software-rasterizer--no-zygote--metrics-recording-only--renderer-process-limit=2--no-sandboxوقتیnoSandboxفعال است.- سه فلگ سختسازی گرافیک (
--disable-3d-apis،--disable-software-rasterizer،--disable-gpu) اختیاری هستند و وقتی کانتینرها پشتیبانی GPU ندارند مفیدند. اگر بار کاری شما به WebGL یا ویژگیهای سهبعدی/مرورگری دیگر نیاز دارد،OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0را تنظیم کنید. --disable-extensionsبهصورت پیشفرض فعال است و برای جریانهایی که به افزونه متکی هستند میتوان آن را باOPENCLAW_BROWSER_DISABLE_EXTENSIONS=0غیرفعال کرد.--renderer-process-limit=2توسطOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>کنترل میشود، که در آن0پیشفرض Chromium را نگه میدارد.
اگر به پروفایل زماناجرای متفاوتی نیاز دارید، از یک تصویر مرورگر سفارشی استفاده کنید و entrypoint خودتان را ارائه دهید. برای پروفایلهای Chromium محلی (غیرکانتینری)، از browser.extraArgs برای افزودن فلگهای شروع اضافی استفاده کنید.
پیشفرضهای امنیت شبکه
network: "host"مسدود است.network: "container:<id>"بهصورت پیشفرض مسدود است (ریسک دور زدن با پیوستن به namespace).- override اضطراری:
agents.defaults.sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true.
نصبهای Docker و Gateway کانتینریشده اینجا هستند: Docker
برای استقرارهای Gateway Docker، scripts/docker/setup.sh میتواند پیکربندی سندباکس را bootstrap کند. برای فعال کردن آن مسیر، OPENCLAW_SANDBOX=1 (یا true/yes/on) را تنظیم کنید. میتوانید محل socket را با OPENCLAW_DOCKER_SOCKET override کنید. راهاندازی کامل و مرجع env: Docker.
setupCommand (راهاندازی یکباره کانتینر)
setupCommand بعد از ساخته شدن کانتینر سندباکس یکبار اجرا میشود (نه در هر اجرا). این فرمان داخل کانتینر از طریق sh -lc اجرا میشود.
مسیرها:
- سراسری:
agents.defaults.sandbox.docker.setupCommand - مختص هر عامل:
agents.list[].sandbox.docker.setupCommand
دامهای رایج
- مقدار پیشفرض
docker.networkبرابر"none"است (بدون خروجی شبکه)، بنابراین نصب بستهها شکست میخورد. docker.network: "container:<id>"بهdangerouslyAllowContainerNamespaceJoin: trueنیاز دارد و فقط برای شرایط اضطراری است.readOnlyRoot: trueاز نوشتن جلوگیری میکند؛readOnlyRoot: falseرا تنظیم کنید یا یک تصویر سفارشی بسازید.- برای نصب بستهها،
userباید root باشد (userرا حذف کنید یاuser: "0:0"را تنظیم کنید). - اجرای sandbox متغیرهای
process.envمیزبان را به ارث نمیبرد. برای کلیدهای API مربوط به skill ازagents.defaults.sandbox.docker.env(یا یک تصویر سفارشی) استفاده کنید.
خطمشی ابزار و راههای خروج اضطراری
خطمشیهای مجاز/غیرمجاز ابزار همچنان پیش از قواعد sandbox اعمال میشوند. اگر ابزاری بهصورت سراسری یا برای هر عامل رد شده باشد، sandboxing آن را برنمیگرداند.
tools.elevated یک راه خروج اضطراری صریح است که exec را بیرون از sandbox اجرا میکند (بهصورت پیشفرض gateway، یا وقتی هدف exec برابر node باشد، node). دستورهای /exec فقط برای فرستندگان مجاز اعمال میشوند و در هر جلسه پایدار میمانند؛ برای غیرفعالسازی کامل exec، از رد کردن در خطمشی ابزار استفاده کنید (نگاه کنید به Sandbox در برابر خطمشی ابزار در برابر Elevated).
اشکالزدایی:
- برای بررسی حالت sandbox مؤثر، خطمشی ابزار، و کلیدهای پیکربندی اصلاح، از
openclaw sandbox explainاستفاده کنید. - برای مدل ذهنی «چرا این مسدود شده است؟» به Sandbox در برابر خطمشی ابزار در برابر Elevated مراجعه کنید.
آن را قفل و محدود نگه دارید.
بازنویسیهای چندعاملی
هر عامل میتواند sandbox + ابزارها را بازنویسی کند: agents.list[].sandbox و agents.list[].tools (بهعلاوه agents.list[].tools.sandbox.tools برای خطمشی ابزار sandbox). برای ترتیب تقدم، به Sandbox و ابزارهای چندعاملی مراجعه کنید.
نمونه حداقلی فعالسازی
{
agents: {
defaults: {
sandbox: {
mode: "non-main",
scope: "session",
workspaceAccess: "none",
},
},
},
}
مرتبط
- Sandbox و ابزارهای چندعاملی — بازنویسیها و ترتیب تقدم در هر عامل
- OpenShell — راهاندازی backend مدیریتشده sandbox، حالتهای workspace، و مرجع پیکربندی
- پیکربندی sandbox
- Sandbox در برابر خطمشی ابزار در برابر Elevated — اشکالزدایی «چرا این مسدود شده است؟»
- امنیت