OpenShell
OpenShell to zarządzany backend sandbox dla OpenClaw. Zamiast uruchamiać lokalnie kontenery Docker, OpenClaw deleguje cykl życia sandboxa do CLIopenshell,
które udostępnia środowiska zdalne z wykonywaniem poleceń opartym na SSH.
Plugin OpenShell używa tego samego podstawowego transportu SSH i mostu
zdalnego systemu plików co ogólny backend SSH. Dodaje
cykl życia specyficzny dla OpenShell (sandbox create/get/delete, sandbox ssh-config)
oraz opcjonalny tryb workspace mirror.
Wymagania wstępne
- CLI
openshellzainstalowane i dostępne wPATH(lub ustaw niestandardową ścieżkę przezplugins.entries.openshell.config.command) - Konto OpenShell z dostępem do sandboxów
- OpenClaw Gateway uruchomiony na hoście
Szybki start
- Włącz plugin i ustaw backend sandboxa:
- Uruchom ponownie Gateway. Przy następnej turze agenta OpenClaw utworzy sandbox OpenShell i skieruje przez niego wykonywanie narzędzi.
- Zweryfikuj:
Tryby workspace
To najważniejsza decyzja przy korzystaniu z OpenShell.mirror
Użyj plugins.entries.openshell.config.mode: "mirror", gdy chcesz, aby lokalny
workspace pozostał kanoniczny.
Zachowanie:
- Przed
execOpenClaw synchronizuje lokalny workspace do sandboxa OpenShell. - Po
execOpenClaw synchronizuje zdalny workspace z powrotem do lokalnego workspace. - Narzędzia plikowe nadal działają przez most sandboxa, ale lokalny workspace pozostaje źródłem prawdy między turami.
- Edytujesz pliki lokalnie poza OpenClaw i chcesz, aby te zmiany były automatycznie widoczne w sandboxie.
- Chcesz, aby sandbox OpenShell zachowywał się możliwie podobnie do backendu Docker.
- Chcesz, aby workspace hosta odzwierciedlał zapisy sandboxa po każdej turze exec.
exec.
remote
Użyj plugins.entries.openshell.config.mode: "remote", gdy chcesz, aby
workspace OpenShell stał się kanoniczny.
Zachowanie:
- Gdy sandbox jest tworzony po raz pierwszy, OpenClaw jednorazowo zasiewa zdalny workspace na podstawie lokalnego workspace.
- Potem
exec,read,write,editiapply_patchdziałają bezpośrednio na zdalnym workspace OpenShell. - OpenClaw nie synchronizuje zdalnych zmian z powrotem do lokalnego workspace.
- Odczyty multimediów w czasie promptu nadal działają, ponieważ narzędzia plikowe i multimedialne czytają przez most sandboxa.
- Sandbox powinien działać głównie po stronie zdalnej.
- Chcesz mniejszego narzutu synchronizacji na każdą turę.
- Nie chcesz, aby lokalne edycje hosta po cichu nadpisywały stan zdalnego sandboxa.
openclaw sandbox recreate, aby zasilić go ponownie.
Wybór trybu
mirror | remote | |
|---|---|---|
| Kanoniczny workspace | Lokalny host | Zdalny OpenShell |
| Kierunek synchronizacji | Dwukierunkowy (każdy exec) | Jednorazowe zasianie |
| Narzut na turę | Wyższy (wysyłanie + pobieranie) | Niższy (bezpośrednie operacje zdalne) |
| Lokalne edycje widoczne? | Tak, przy następnym exec | Nie, aż do recreate |
| Najlepsze dla | Przepływów pracy deweloperskiej | Długodziałających agentów, CI |
Dokumentacja konfiguracji
Cała konfiguracja OpenShell znajduje się wplugins.entries.openshell.config:
| Klucz | Typ | Domyślnie | Opis |
|---|---|---|---|
mode | "mirror" lub "remote" | "mirror" | Tryb synchronizacji workspace |
command | string | "openshell" | Ścieżka lub nazwa CLI openshell |
from | string | "openclaw" | Źródło sandboxa dla pierwszego utworzenia |
gateway | string | — | Nazwa gateway OpenShell (--gateway) |
gatewayEndpoint | string | — | URL endpointu gateway OpenShell (--gateway-endpoint) |
policy | string | — | ID polityki OpenShell dla tworzenia sandboxa |
providers | string[] | [] | Nazwy dostawców do dołączenia przy tworzeniu sandboxa |
gpu | boolean | false | Żądanie zasobów GPU |
autoProviders | boolean | true | Przekaż --auto-providers podczas tworzenia sandboxa |
remoteWorkspaceDir | string | "/sandbox" | Główny zapisywalny workspace wewnątrz sandboxa |
remoteAgentWorkspaceDir | string | "/agent" | Ścieżka montowania workspace agenta (dla dostępu tylko do odczytu) |
timeoutSeconds | number | 120 | Limit czasu dla operacji CLI openshell |
mode, scope, workspaceAccess) konfiguruje się w
agents.defaults.sandbox, tak jak dla każdego backendu. Zobacz
Sandboxing, aby poznać pełną macierz.
Przykłady
Minimalna konfiguracja remote
Tryb mirror z GPU
OpenShell per agent z niestandardowym gateway
Zarządzanie cyklem życia
Sandboxami OpenShell zarządza się przez standardowe CLI sandboxa:remote recreate jest szczególnie ważne: usuwa kanoniczny
zdalny workspace dla tego zakresu. Przy następnym użyciu zostanie zasiany nowy zdalny workspace z
lokalnego workspace.
W trybie mirror recreate głównie resetuje zdalne środowisko wykonawcze, ponieważ
lokalny workspace pozostaje kanoniczny.
Kiedy używać recreate
Użyj recreate po zmianie któregokolwiek z tych ustawień:agents.defaults.sandbox.backendplugins.entries.openshell.config.fromplugins.entries.openshell.config.modeplugins.entries.openshell.config.policy
Bieżące ograniczenia
- Przeglądarka sandboxa nie jest obsługiwana przez backend OpenShell.
sandbox.docker.bindsnie ma zastosowania do OpenShell.- Ustawienia środowiska wykonawczego specyficzne dla Dockera w
sandbox.docker.*mają zastosowanie tylko do backendu Docker.
Jak to działa
- OpenClaw wywołuje
openshell sandbox create(z flagami--from,--gateway,--policy,--providers,--gpuzgodnie z konfiguracją). - OpenClaw wywołuje
openshell sandbox ssh-config <name>, aby uzyskać szczegóły połączenia SSH dla sandboxa. - Rdzeń zapisuje konfigurację SSH do pliku tymczasowego i otwiera sesję SSH przy użyciu tego samego mostu zdalnego systemu plików co ogólny backend SSH.
- W trybie
mirror: synchronizuje lokalny stan do zdalnego przed exec, uruchamia, a po exec synchronizuje z powrotem. - W trybie
remote: zasiewa raz przy tworzeniu, a potem działa bezpośrednio na zdalnym workspace.
Zobacz też
- Sandboxing — tryby, zakresy i porównanie backendów
- Sandbox vs Tool Policy vs Elevated — debugowanie zablokowanych narzędzi
- Multi-Agent Sandbox and Tools — nadpisania per agent
- Sandbox CLI — polecenia
openclaw sandbox