Gateway

ایزوله‌سازی

Status: active

OpenClaw می‌تواند ابزارها را داخل backendهای 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 را با گذرواژه در قطعه URL باز می‌کند (نه در query/header logs).
  • agents.defaults.sandbox.browser.allowHostControl به نشست‌های sandboxشده اجازه می‌دهد مرورگر میزبان را به‌صورت صریح هدف بگیرند.
  • allowlistهای اختیاری، target: "custom" را کنترل می‌کنند: allowedControlUrls، allowedControlHosts، allowedControlPorts.

sandbox نمی‌شوند:

  • خود فرایند Gateway.
  • هر ابزاری که صریحاً اجازه داشته باشد خارج از sandbox اجرا شود (مثلاً tools.elevated).
    • اجرای elevated از sandboxing عبور می‌کند و از مسیر خروج پیکربندی‌شده استفاده می‌کند (gateway به‌طور پیش‌فرض، یا node وقتی هدف exec برابر node است).
    • اگر sandboxing خاموش باشد، tools.elevated اجرا را تغییر نمی‌دهد (از قبل روی میزبان است). حالت Elevated را ببینید.

حالت‌ها

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شده.

Backend

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 قرار دارد.

انتخاب backend

Docker SSH OpenShell
محل اجرا کانتینر محلی هر میزبان قابل‌دسترسی با SSH sandbox مدیریت‌شده OpenShell
راه‌اندازی scripts/sandbox-setup.sh کلید SSH + میزبان هدف Plugin مربوط به OpenShell فعال باشد
مدل workspace Bind-mount یا کپی remote-canonical (یک‌بار seed) mirror یا remote
کنترل شبکه docker.network (پیش‌فرض: none) وابسته به میزبان راه‌دور وابسته به OpenShell
sandbox مرورگر پشتیبانی می‌شود پشتیبانی نمی‌شود هنوز پشتیبانی نمی‌شود
Bind mountها docker.binds N/A N/A
بهترین کاربرد توسعه محلی، ایزوله‌سازی کامل واگذاری بار به ماشین راه‌دور sandboxهای راه‌دور مدیریت‌شده با همگام‌سازی دوسویه اختیاری

Docker backend

sandboxing به‌طور پیش‌فرض خاموش است. اگر sandboxing را فعال کنید و backend انتخاب نکنید، OpenClaw از Docker backend استفاده می‌کند. ابزارها و مرورگرهای 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 را تنظیم کنید. مقدار به‌عنوان یک آرگومان جداگانه به flag --gpus در Docker پاس داده می‌شود، برای مثال "all" یا "device=GPU-uuid"، و به یک runtime میزبان سازگار مانند NVIDIA Container Toolkit نیاز دارد.

SSH backend

وقتی می‌خواهید OpenClaw، exec، ابزارهای فایل، و خواندن‌های رسانه را روی یک ماشین دلخواه قابل‌دسترسی با SSH sandbox کند، از backend: "ssh" استفاده کنید.

json5
{  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 یک ریشه راه‌دور برای هر scope زیر sandbox.ssh.workspaceRoot می‌سازد.
  • در اولین استفاده پس از ساخت یا بازسازی، OpenClaw آن workspace راه‌دور را یک‌بار از workspace محلی seed می‌کند.
  • پس از آن، exec، read، write، edit، apply_patch، خواندن رسانه‌های prompt، و staging رسانه‌های ورودی مستقیماً روی workspace راه‌دور از طریق SSH اجرا می‌شوند.
  • OpenClaw تغییرات راه‌دور را به‌صورت خودکار به workspace محلی همگام‌سازی نمی‌کند.
مواد احراز هویت
  • identityFile، certificateFile، knownHostsFile: از فایل‌های محلی موجود استفاده می‌کنند و آن‌ها را از طریق پیکربندی OpenSSH عبور می‌دهند.
  • identityData، certificateData، knownHostsData: از رشته‌های inline یا SecretRefs استفاده می‌کنند. OpenClaw آن‌ها را از طریق snapshot معمول runtime اسرار resolve می‌کند، با مجوز 0600 در فایل‌های موقت می‌نویسد، و پس از پایان نشست SSH حذف می‌کند.
  • اگر هم *File و هم *Data برای یک مورد تنظیم شده باشند، *Data برای آن نشست SSH برنده است.
پیامدهای remote-canonical

این یک مدل remote-canonical است. workspace راه‌دور SSH پس از seed اولیه به وضعیت واقعی sandbox تبدیل می‌شود.

  • ویرایش‌های محلی میزبان که پس از مرحله seed خارج از OpenClaw انجام شوند، تا وقتی sandbox را بازسازی نکنید در راه‌دور قابل مشاهده نیستند.
  • openclaw sandbox recreate ریشه راه‌دور مربوط به هر scope را حذف می‌کند و در استفاده بعدی دوباره از محلی seed می‌کند.
  • sandboxing مرورگر در SSH backend پشتیبانی نمی‌شود.
  • تنظیمات sandbox.docker.* برای SSH backend اعمال نمی‌شوند.

OpenShell backend

وقتی می‌خواهید OpenClaw ابزارها را در یک محیط راه‌دور مدیریت‌شده توسط OpenShell sandbox کند، از backend: "openshell" استفاده کنید. برای راهنمای کامل راه‌اندازی، مرجع پیکربندی، و مقایسه حالت‌های workspace، صفحه اختصاصی OpenShell را ببینید.

OpenShell از همان انتقال SSH هسته‌ای و پل فایل‌سیستم راه‌دور backend عمومی SSH دوباره استفاده می‌کند و lifecycle اختصاصی OpenShell (sandbox create/get/delete، sandbox ssh-config) به‌علاوه حالت اختیاری workspace با نام mirror را اضافه می‌کند.

json5
{  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 محلی canonical باقی می‌ماند. OpenClaw فایل‌های محلی را پیش از exec به OpenShell همگام‌سازی می‌کند و workspace راه‌دور را پس از exec برمی‌گرداند.
  • remote: پس از ساخت sandbox، workspace در OpenShell canonical است. OpenClaw یک‌بار workspace راه‌دور را از workspace محلی seed می‌کند، سپس ابزارهای فایل و exec مستقیماً روی sandbox راه‌دور اجرا می‌شوند، بدون اینکه تغییرات به عقب همگام‌سازی شوند.
جزئیات انتقال از راه دور
  • OpenClaw پیکربندی SSH مخصوص sandbox را از OpenShell از طریق openshell sandbox ssh-config <name> درخواست می‌کند.
  • هسته آن پیکربندی SSH را در یک فایل موقت می‌نویسد، نشست SSH را باز می‌کند و همان پل فایل‌سیستم راه دور را که توسط backend: "ssh" استفاده می‌شود، دوباره به‌کار می‌گیرد.
  • در حالت mirror فقط چرخه عمر متفاوت است: پیش از exec، محلی را با راه دور همگام می‌کند و سپس پس از exec دوباره همگام‌سازی را برمی‌گرداند.
محدودیت‌های فعلی OpenShell
  • مرورگر sandbox هنوز پشتیبانی نمی‌شود
  • sandbox.docker.binds در backend OpenShell پشتیبانی نمی‌شود
  • تنظیمات runtime ویژه Docker زیر sandbox.docker.* همچنان فقط برای backend Docker اعمال می‌شوند

حالت‌های workspace

OpenShell دو مدل workspace دارد. این همان بخشی است که در عمل بیشترین اهمیت را دارد.

mirror (local canonical)

وقتی می‌خواهید workspace محلی canonical باقی بماند از plugins.entries.openshell.config.mode: "mirror" استفاده کنید.

رفتار:

  • پیش از exec، OpenClaw workspace محلی را در sandbox OpenShell همگام می‌کند.
  • پس از exec، OpenClaw workspace راه دور را دوباره به workspace محلی همگام می‌کند.
  • ابزارهای فایل همچنان از طریق پل sandbox کار می‌کنند، اما workspace محلی بین نوبت‌ها منبع حقیقت باقی می‌ماند.

وقتی از این استفاده کنید که:

  • فایل‌ها را خارج از OpenClaw به‌صورت محلی ویرایش می‌کنید و می‌خواهید آن تغییرات به‌طور خودکار در sandbox ظاهر شوند
  • می‌خواهید sandbox OpenShell تا حد ممکن شبیه backend Docker رفتار کند
  • می‌خواهید workspace میزبان پس از هر نوبت exec، نوشتن‌های sandbox را منعکس کند

موازنه: هزینه همگام‌سازی اضافی پیش و پس از exec.

remote (OpenShell canonical)

وقتی می‌خواهید workspace OpenShell به canonical تبدیل شود از plugins.entries.openshell.config.mode: "remote" استفاده کنید.

رفتار:

  • وقتی sandbox برای نخستین بار ساخته می‌شود، OpenClaw یک‌بار workspace راه دور را از workspace محلی مقداردهی اولیه می‌کند.
  • پس از آن، exec، read، write، edit و apply_patch مستقیماً روی workspace راه دور OpenShell عمل می‌کنند.
  • OpenClaw پس از exec تغییرات راه دور را به workspace محلی همگام نمی‌کند.
  • خواندن رسانه‌ها در زمان prompt همچنان کار می‌کند، چون ابزارهای فایل و رسانه به‌جای فرض گرفتن مسیر میزبان محلی، از طریق پل sandbox می‌خوانند.
  • انتقال، SSH به sandbox OpenShell است که توسط openshell sandbox ssh-config برگردانده می‌شود.

پیامدهای مهم:

  • اگر پس از مرحله مقداردهی اولیه، فایل‌ها را روی میزبان خارج از OpenClaw ویرایش کنید، sandbox راه دور آن تغییرات را به‌طور خودکار نخواهد دید.
  • اگر sandbox دوباره ساخته شود، workspace راه دور دوباره از workspace محلی مقداردهی اولیه می‌شود.
  • با scope: "agent" یا scope: "shared"، آن workspace راه دور در همان scope مشترک است.

وقتی از این استفاده کنید که:

  • sandbox باید عمدتاً در سمت راه دور OpenShell زندگی کند
  • می‌خواهید سربار همگام‌سازی در هر نوبت کمتر باشد
  • نمی‌خواهید ویرایش‌های محلی میزبان به‌صورت پنهانی وضعیت sandbox راه دور را بازنویسی کنند

اگر sandbox را یک محیط اجرای موقت می‌دانید، mirror را انتخاب کنید. اگر sandbox را workspace واقعی می‌دانید، remote را انتخاب کنید.

چرخه عمر OpenShell

sandboxهای OpenShell همچنان از طریق چرخه عمر معمول sandbox مدیریت می‌شوند:

  • openclaw sandbox list هم runtimeهای OpenShell و هم runtimeهای Docker را نشان می‌دهد
  • openclaw sandbox recreate runtime فعلی را حذف می‌کند و اجازه می‌دهد OpenClaw آن را در استفاده بعدی دوباره بسازد
  • منطق prune نیز از backend آگاه است

برای حالت remote، ساخت دوباره اهمیت ویژه‌ای دارد:

  • ساخت دوباره، workspace راه دور canonical را برای آن scope حذف می‌کند
  • استفاده بعدی، یک workspace راه دور تازه را از workspace محلی مقداردهی اولیه می‌کند

برای حالت mirror، ساخت دوباره عمدتاً محیط اجرای راه دور را بازنشانی می‌کند، چون workspace محلی در هر حال canonical باقی می‌ماند.

دسترسی به workspace

agents.defaults.sandbox.workspaceAccess کنترل می‌کند sandbox چه چیزی را می‌تواند ببیند:

none (default)

ابزارها یک workspace مربوط به sandbox را زیر ~/.openclaw/sandboxes می‌بینند.

ro

workspace عامل را به‌صورت فقط‌خواندنی در /agent mount می‌کند (write/edit/apply_patch را غیرفعال می‌کند).

rw

workspace عامل را به‌صورت خواندن/نوشتن در /workspace mount می‌کند.

با backend OpenShell:

  • حالت mirror همچنان از workspace محلی به‌عنوان منبع canonical بین نوبت‌های exec استفاده می‌کند
  • حالت remote پس از مقداردهی اولیه، از workspace راه دور OpenShell به‌عنوان منبع canonical استفاده می‌کند
  • workspaceAccess: "ro" و "none" همچنان رفتار نوشتن را به همان شکل محدود می‌کنند

رسانه ورودی در workspace فعال sandbox کپی می‌شود (media/inbound/*).

mountهای bind سفارشی

agents.defaults.sandbox.docker.binds دایرکتوری‌های اضافی میزبان را در container mount می‌کند. قالب: host:container:mode (برای مثال، "/home/user/source:/source:rw").

bindهای سراسری و مخصوص هر عامل ادغام می‌شوند (جایگزین نمی‌شوند). زیر scope: "shared"، bindهای مخصوص هر عامل نادیده گرفته می‌شوند.

agents.defaults.sandbox.browser.binds دایرکتوری‌های اضافی میزبان را فقط در container مرورگر sandbox mount می‌کند.

  • وقتی تنظیم شود (از جمله [])، برای container مرورگر جایگزین agents.defaults.sandbox.docker.binds می‌شود.
  • وقتی حذف شود، container مرورگر به agents.defaults.sandbox.docker.binds برمی‌گردد (سازگار با نسخه‌های قبلی).

مثال (منبع فقط‌خواندنی + یک دایرکتوری داده اضافی):

json5
{  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"],          },        },      },    ],  },}

imageها و راه‌اندازی

image پیش‌فرض Docker: openclaw-sandbox:bookworm-slim

  • ساخت image پیش‌فرض

    از یک checkout منبع:

    bash
    scripts/sandbox-setup.sh

    از یک نصب npm (بدون نیاز به checkout منبع):

    bash
    docker build -t openclaw-sandbox:bookworm-slim - <<'DOCKERFILE'FROM debian:bookworm-slimENV DEBIAN_FRONTEND=noninteractiveRUN 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 sandboxUSER sandboxWORKDIR /home/sandboxCMD ["sleep", "infinity"]DOCKERFILE

    image پیش‌فرض شامل Node نیست. اگر یک مهارت به Node (یا runtimeهای دیگر) نیاز دارد، یا یک image سفارشی بسازید یا از طریق sandbox.docker.setupCommand نصب کنید (نیازمند خروجی شبکه + ریشه قابل‌نوشتن + کاربر root).

    وقتی openclaw-sandbox:bookworm-slim وجود ندارد، OpenClaw به‌صورت پنهانی debian:bookworm-slim ساده را جایگزین نمی‌کند. اجراهای sandbox که image پیش‌فرض را هدف می‌گیرند تا زمانی که آن را بسازید، با یک دستور ساخت سریعاً fail می‌شوند، چون image همراه python3 را برای helperهای نوشتن/ویرایش sandbox حمل می‌کند.

  • اختیاری: ساخت image عمومی

    برای یک image sandbox کاربردی‌تر با ابزارهای رایج (برای مثال curl، jq، Node 24، pnpm، python3 و git):

    از یک checkout منبع:

    bash
    scripts/sandbox-common-setup.sh

    از یک نصب npm، ابتدا image پیش‌فرض را بسازید (بالا را ببینید)، سپس با استفاده از scripts/docker/sandbox/Dockerfile.common از repository، image عمومی را روی آن بسازید.

    سپس agents.defaults.sandbox.docker.image را روی openclaw-sandbox-common:bookworm-slim تنظیم کنید.

  • اختیاری: ساخت image مرورگر sandbox

    از یک checkout منبع:

    bash
    scripts/sandbox-browser-setup.sh

    از یک نصب npm، با استفاده از scripts/docker/sandbox/Dockerfile.browser از repository بسازید.

  • به‌طور پیش‌فرض، containerهای sandbox Docker با بدون شبکه اجرا می‌شوند. با agents.defaults.sandbox.docker.network بازنویسی کنید.

    پیش‌فرض‌های Chromium مرورگر sandbox

    image همراه مرورگر sandbox همچنین پیش‌فرض‌های محافظه‌کارانه راه‌اندازی Chromium را برای workloadهای containerized اعمال می‌کند. پیش‌فرض‌های فعلی container شامل این‌ها هستند:

    • --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 فعال باشد.
    • سه flag سخت‌سازی گرافیک (--disable-3d-apis، --disable-software-rasterizer، --disable-gpu) اختیاری هستند و زمانی مفیدند که containerها پشتیبانی GPU ندارند. اگر workload شما به WebGL یا دیگر قابلیت‌های 3D/مرورگر نیاز دارد، OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0 را تنظیم کنید.
    • --disable-extensions به‌طور پیش‌فرض فعال است و برای flowهای وابسته به extension می‌توان آن را با OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0 غیرفعال کرد.
    • --renderer-process-limit=2 توسط OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=&lt;N&gt; کنترل می‌شود، که در آن 0 پیش‌فرض Chromium را نگه می‌دارد.

    اگر به پروفایل runtime متفاوتی نیاز دارید، از یک image مرورگر سفارشی استفاده کنید و entrypoint خودتان را ارائه دهید. برای پروفایل‌های Chromium محلی (غیر-container)، از browser.extraArgs برای افزودن flagهای راه‌اندازی اضافی استفاده کنید.

    پیش‌فرض‌های امنیت شبکه
    • network: "host" مسدود است.
    • network: "container:<id>" به‌طور پیش‌فرض مسدود است (خطر دور زدن از طریق پیوستن به namespace).
    • کنارگذاری اضطراری: agents.defaults.sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true.

    نصب‌های Docker و Gateway کانتینری اینجا هستند: Docker

    برای استقرارهای Docker Gateway، scripts/docker/setup.sh می‌تواند پیکربندی سندباکس را راه‌اندازی اولیه کند. OPENCLAW_SANDBOX=1 (یا true/yes/on) را تنظیم کنید تا آن مسیر فعال شود. می‌توانید مکان سوکت را با OPENCLAW_DOCKER_SOCKET بازنویسی کنید. راه‌اندازی کامل و مرجع 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" را تنظیم کنید).
    • اجرای سندباکس، process.env میزبان را به ارث نمی‌برد. برای کلیدهای API مربوط به Skills از agents.defaults.sandbox.docker.env (یا یک تصویر سفارشی) استفاده کنید.
    • مقادیر در agents.defaults.sandbox.docker.env به‌عنوان متغیرهای محیطی صریح کانتینر Docker پاس داده می‌شوند. هر کسی که به daemon Docker دسترسی داشته باشد می‌تواند آن‌ها را با دستورهای فراداده Docker مانند docker inspect بررسی کند. اگر این افشای فراداده قابل قبول نیست، از یک تصویر سفارشی، فایل secret متصل‌شده، یا مسیر تحویل secret دیگری استفاده کنید.

    سیاست ابزار و راه‌های خروج اضطراری

    سیاست‌های مجاز/غیرمجاز ابزار همچنان پیش از قوانین سندباکس اعمال می‌شوند. اگر ابزاری به‌صورت سراسری یا برای هر عامل غیرمجاز شده باشد، سندباکس‌کردن آن را برنمی‌گرداند.

    tools.elevated یک راه خروج اضطراری صریح است که exec را خارج از سندباکس اجرا می‌کند (به‌طور پیش‌فرض gateway، یا وقتی هدف اجرای exec برابر node باشد، node). دستورالعمل‌های /exec فقط برای فرستندگان مجاز اعمال می‌شوند و در هر نشست ماندگار می‌مانند؛ برای غیرفعال‌سازی سخت exec، از غیرمجازکردن در سیاست ابزار استفاده کنید (ببینید سندباکس در برابر سیاست ابزار در برابر Elevated).

    اشکال‌زدایی:

    آن را قفل‌شده نگه دارید.

    بازنویسی‌های چندعاملی

    هر عامل می‌تواند سندباکس + ابزارها را بازنویسی کند: agents.list[].sandbox و agents.list[].tools (به‌علاوه agents.list[].tools.sandbox.tools برای سیاست ابزار سندباکس). برای تقدم، ببینید سندباکس و ابزارهای چندعاملی.

    نمونه حداقلی فعال‌سازی

    json5
    {  agents: {    defaults: {      sandbox: {        mode: "non-main",        scope: "session",        workspaceAccess: "none",      },    },  },}

    مرتبط

    Was this useful?
    On this page

    On this page