Çok Ajanlı Sandbox ve Araçlar Yapılandırması
Genel bakış
Çok ajanlı bir kurulumda her ajan artık kendi ayarlarına sahip olabilir:- Sandbox yapılandırması (
agents.list[].sandboxagents.defaults.sandbox’i geçersiz kılar) - Araç kısıtlamaları (
tools.allow/tools.deny, ayrıcaagents.list[].tools)
- Tam erişimli kişisel asistan
- Kısıtlı araçlara sahip aile/iş ajanları
- Sandbox içinde herkese açık ajanlar
setupCommand, sandbox.docker (global veya ajan başına) altında yer alır ve
konteyner oluşturulduğunda bir kez çalışır.
Kimlik doğrulama ajan başınadır: her ajan, kendi agentDir kimlik doğrulama deposunu
şu konumdan okur:
agentDir’yi ajanlar arasında asla yeniden kullanmayın.
Kimlik bilgilerini paylaşmak istiyorsanız, auth-profiles.json’ü diğer ajanın agentDir’üne kopyalayın.
Sandboxing’in çalışma zamanındaki davranışı için Sandboxing bölümüne bakın.
“Bu neden engellendi?” sorusunun hata ayıklaması için Sandbox vs Tool Policy vs Elevated ve openclaw sandbox explain’e bakın.
Yapılandırma Örnekleri
Örnek 1: Kişisel + Kısıtlı Aile Ajanı
mainajanı: Ana makinede çalışır, tam araç erişimifamilyajanı: Docker içinde çalışır (ajan başına bir konteyner), yalnızcareadaracı
Örnek 2: Paylaşılan Sandbox ile İş Ajanı
Örnek 2b: Global kodlama profili + yalnızca mesajlaşma ajanı
- varsayılan ajanlar kodlama araçlarına sahiptir
supportajanı yalnızca mesajlaşma içindir (+ Slack aracı)
Örnek 3: Ajan Başına Farklı Sandbox Modları
Yapılandırma Önceliği
Hem global (agents.defaults.*) hem de ajan-özel (agents.list[].*) yapılandırmalar mevcut olduğunda:
Sandbox Yapılandırması
Ajan-özel ayarlar global ayarları geçersiz kılar:agents.list[].sandbox.{docker,browser,prune}.*, ilgili ajan içinagents.defaults.sandbox.{docker,browser,prune}.*’ü geçersiz kılar (sandbox kapsamı"shared"’e çözümlendiğinde yok sayılır).
34. Araç Kısıtlamaları
Filtreleme sırası:- Araç profili (
tools.profileveyaagents.list[].tools.profile) - Sağlayıcı araç profili (
tools.byProvider[provider].profileveyaagents.list[].tools.byProvider[provider].profile) - Global araç politikası (
tools.allow/tools.deny) - Sağlayıcı araç politikası (
tools.byProvider[provider].allow/deny) - Ajan-özel araç politikası (
agents.list[].tools.allow/deny) - Ajan sağlayıcı politikası (
agents.list[].tools.byProvider[provider].allow/deny) - Sandbox araç politikası (
tools.sandbox.toolsveyaagents.list[].tools.sandbox.tools) - Alt ajan araç politikası (
tools.subagents.tools, varsa)
agents.list[].tools.sandbox.tools ayarlanırsa, ilgili ajan için tools.sandbox.tools’in yerini alır.
agents.list[].tools.profile ayarlanırsa, ilgili ajan için tools.profile’yi geçersiz kılar.
Sağlayıcı araç anahtarları, provider (örn. google-antigravity) veya provider/model (örn. openai/gpt-5.2) kabul eder.
Araç grupları (kısayollar)
Araç politikaları (global, ajan, sandbox) birden çok somut araca genişleyengroup:* girdilerini destekler:
group:runtime:exec,bash,processgroup:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,session_statusgroup:memory:memory_search,memory_getgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:openclaw: tüm yerleşik OpenClaw araçları (sağlayıcı eklentileri hariç)
Elevated Modu
tools.elevated global temel çizgidir (gönderene dayalı izin listesi). agents.list[].tools.elevated, belirli ajanlar için elevated’ı daha da kısıtlayabilir (ikisi de izin vermelidir).
Azaltma desenleri:
- Güvenilmeyen ajanlar için
exec’yi reddedin (agents.list[].tools.deny: ["exec"]) - Kısıtlı ajanlara yönlendiren göndericileri izin listesine almaktan kaçının
- Yalnızca sandbox içinde yürütme istiyorsanız elevated’ı global olarak devre dışı bırakın (
tools.elevated.enabled: false) - Hassas profiller için elevated’ı ajan başına devre dışı bırakın (
agents.list[].tools.elevated.enabled: false)
35. Tek Ajandan Geçiş
- Önce (tek ajan):
agent.* yapılandırmaları openclaw doctor tarafından taşınır; bundan sonra agents.defaults + agents.list tercih edin.
Araç Kısıtlama Örnekleri
37. Salt okunur Ajan
Güvenli Yürütme Ajanı (dosya değişikliği yok)
Yalnızca İletişim Ajanı
Yaygın Tuzak: “non-main”
agents.defaults.sandbox.mode: "non-main", ajan kimliğine değil session.mainKey’ya (varsayılan "main") dayanır. Grup/kanal oturumları her zaman kendi anahtarlarını alır; bu nedenle non-main olarak
ele alınır ve sandbox içine alınır. Bir ajanın asla sandbox’a girmemesini istiyorsanız
agents.list[].sandbox.mode: "off"’i ayarlayın.
Test Etme
Çok ajanlı sandbox ve araçları yapılandırdıktan sonra:-
Ajan çözümlemesini kontrol edin:
-
Sandbox konteynerlerini doğrulayın:
-
Araç kısıtlamalarını test edin:
- Kısıtlı araçlar gerektiren bir mesaj gönderin
- Ajanın reddedilen araçları kullanamadığını doğrulayın
-
Günlükleri izleyin:
Sorun Giderme
mode: "all" olmasına rağmen ajan sandbox’a alınmıyor
- Bunu geçersiz kılan global bir
agents.defaults.sandbox.modeolup olmadığını kontrol edin - Ajan-özel yapılandırma önceliklidir; bu nedenle
agents.list[].sandbox.mode: "all"’i ayarlayın
Reddetme listesine rağmen araçlar hâlâ kullanılabilir
- Araç filtreleme sırasını kontrol edin: global → ajan → sandbox → alt ajan
- Her seviye yalnızca daha fazla kısıtlayabilir, geri veremez
- Günlüklerle doğrulayın:
[tools] filtering tools for agent:${agentId}
Konteyner ajan başına izole değil
- Ajan-özel sandbox yapılandırmasında
scope: "agent"’ü ayarlayın - Varsayılan
"session"’tür; bu, oturum başına bir konteyner oluşturur