Gateway
API wywoływania narzędzi
Gateway OpenClaw udostępnia prosty punkt końcowy HTTP do bezpośredniego wywoływania pojedynczego narzędzia. Jest zawsze włączony i używa uwierzytelniania Gateway oraz zasad dla narzędzi. Podobnie jak powierzchnia zgodna z OpenAI /v1/*, uwierzytelnianie bearer współdzielonym sekretem jest traktowane jako zaufany dostęp operatorski do całego gatewaya.
POST /tools/invoke- Ten sam port co Gateway (multipleksowanie WS + HTTP):
http://<gateway-host>:<port>/tools/invoke
Domyślny maksymalny rozmiar payloadu to 2 MB.
Uwierzytelnianie
Używa konfiguracji uwierzytelniania Gateway.
Typowe ścieżki uwierzytelniania HTTP:
- uwierzytelnianie współdzielonym sekretem (
gateway.auth.mode="token"lub"password"):Authorization: Bearer <token-or-password> - zaufane uwierzytelnianie HTTP przenoszące tożsamość (
gateway.auth.mode="trusted-proxy"): kieruj ruch przez skonfigurowany serwer proxy świadomy tożsamości i pozwól mu wstrzyknąć wymagane nagłówki tożsamości - otwarte uwierzytelnianie dla prywatnego ingressu (
gateway.auth.mode="none"): nagłówek uwierzytelniania nie jest wymagany
Uwagi:
- Gdy
gateway.auth.mode="token", użyjgateway.auth.token(lubOPENCLAW_GATEWAY_TOKEN). - Gdy
gateway.auth.mode="password", użyjgateway.auth.password(lubOPENCLAW_GATEWAY_PASSWORD). - Gdy
gateway.auth.mode="trusted-proxy", żądanie HTTP musi pochodzić ze skonfigurowanego zaufanego źródła proxy; proxy local loopback na tym samym hoście wymagają jawnegogateway.auth.trustedProxy.allowLoopback = true. - Jeśli skonfigurowano
gateway.auth.rateLimiti wystąpi zbyt wiele nieudanych prób uwierzytelniania, punkt końcowy zwraca429zRetry-After.
Granica bezpieczeństwa (ważne)
Traktuj ten punkt końcowy jako powierzchnię pełnego dostępu operatorskiego dla instancji gatewaya.
- Uwierzytelnianie HTTP bearer tutaj nie jest wąskim modelem zakresów per użytkownik.
- Prawidłowy token/hasło Gateway dla tego punktu końcowego należy traktować jak poświadczenie właściciela/operatora.
- W trybach uwierzytelniania współdzielonym sekretem (
tokenipassword) punkt końcowy przywraca zwykłe pełne domyślne ustawienia operatora, nawet jeśli wywołujący wyśle węższy nagłówekx-openclaw-scopes. - Uwierzytelnianie współdzielonym sekretem traktuje też bezpośrednie wywołania narzędzi w tym punkcie końcowym jako tury nadawcy-właściciela.
- Zaufane tryby HTTP przenoszące tożsamość (na przykład uwierzytelnianie przez zaufane proxy lub
gateway.auth.mode="none"na prywatnym ingressie) respektująx-openclaw-scopes, gdy jest obecny, a w przeciwnym razie wracają do zwykłego domyślnego zestawu zakresów operatora. - Utrzymuj ten punkt końcowy wyłącznie na local loopback/tailnecie/prywatnym ingressie; nie wystawiaj go bezpośrednio do publicznego internetu.
Macierz uwierzytelniania:
gateway.auth.mode="token"lub"password"+Authorization: Bearer ...- potwierdza posiadanie współdzielonego sekretu operatora gatewaya
- ignoruje węższe
x-openclaw-scopes - przywraca pełny domyślny zestaw zakresów operatora:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - traktuje bezpośrednie wywołania narzędzi w tym punkcie końcowym jako tury nadawcy-właściciela
- zaufane tryby HTTP przenoszące tożsamość (na przykład uwierzytelnianie przez zaufane proxy albo
gateway.auth.mode="none"na prywatnym ingressie)- uwierzytelniają jakąś zewnętrzną zaufaną tożsamość lub granicę wdrożenia
- respektują
x-openclaw-scopes, gdy nagłówek jest obecny - wracają do zwykłego domyślnego zestawu zakresów operatora, gdy nagłówka nie ma
- tracą semantykę właściciela tylko wtedy, gdy wywołujący jawnie zawęża zakresy i pomija
operator.admin
Treść żądania
{
"tool": "sessions_list",
"action": "json",
"args": {},
"sessionKey": "main",
"dryRun": false
}
Pola:
tool(ciąg znaków, wymagane): nazwa narzędzia do wywołania.action(ciąg znaków, opcjonalne): mapowane do args, jeśli schemat narzędzia obsługujeaction, a payload args je pominął.args(obiekt, opcjonalne): argumenty specyficzne dla narzędzia.sessionKey(ciąg znaków, opcjonalne): docelowy klucz sesji. Jeśli pominięty lub"main", Gateway używa skonfigurowanego głównego klucza sesji (respektujesession.mainKeyi domyślnego agenta alboglobalw zakresie globalnym).dryRun(wartość logiczna, opcjonalne): zarezerwowane do przyszłego użycia; obecnie ignorowane.
Zasady i zachowanie routingu
Dostępność narzędzi jest filtrowana przez ten sam łańcuch zasad, którego używają agenci Gateway:
tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- zasady grupowe (jeśli klucz sesji mapuje się na grupę lub kanał)
- zasady subagenta (podczas wywoływania z kluczem sesji subagenta)
Jeśli narzędzie nie jest dozwolone przez zasady, punkt końcowy zwraca 404.
Ważne uwagi dotyczące granic:
- Zatwierdzenia exec są zabezpieczeniami operatorskimi, a nie oddzielną granicą autoryzacji dla tego punktu końcowego HTTP. Jeśli narzędzie jest tutaj osiągalne przez uwierzytelnianie Gateway + zasady narzędzi,
/tools/invokenie dodaje dodatkowego monitu o zatwierdzenie per wywołanie. - Nie udostępniaj poświadczeń bearer Gateway niezaufanym wywołującym. Jeśli potrzebujesz separacji między granicami zaufania, uruchom oddzielne gatewaye (najlepiej także oddzielnych użytkowników/hosty systemu operacyjnego).
HTTP Gateway domyślnie stosuje też twardą listę odmów (nawet jeśli zasady sesji dopuszczają narzędzie):
exec- bezpośrednie wykonywanie poleceń (powierzchnia RCE)spawn- dowolne tworzenie procesów potomnych (powierzchnia RCE)shell- wykonywanie poleceń powłoki (powierzchnia RCE)fs_write- dowolna mutacja plików na hościefs_delete- dowolne usuwanie plików na hościefs_move- dowolne przenoszenie/zmiana nazw plików na hościeapply_patch- stosowanie patchy może przepisywać dowolne plikisessions_spawn- orkiestracja sesji; zdalne uruchamianie agentów jest RCEsessions_send- wstrzykiwanie wiadomości między sesjamicron- płaszczyzna sterowania trwałą automatyzacjągateway- płaszczyzna sterowania gatewayem; zapobiega rekonfiguracji przez HTTPnodes- przekaźnik poleceń węzłów może dotrzeć do system.run na sparowanych hostachwhatsapp_login- interaktywna konfiguracja wymagająca skanowania kodu QR w terminalu; zawiesza się przez HTTP
Możesz dostosować tę listę odmów przez gateway.tools:
{
gateway: {
tools: {
// Additional tools to block over HTTP /tools/invoke
deny: ["browser"],
// Remove tools from the default deny list
allow: ["gateway"],
},
},
}
Aby ułatwić zasadom grupowym rozwiązywanie kontekstu, możesz opcjonalnie ustawić:
x-openclaw-message-channel: <channel>(przykład:slack,telegram)x-openclaw-account-id: <accountId>(gdy istnieje wiele kont)
Odpowiedzi
200→{ ok: true, result }400→{ ok: false, error: { type, message } }(nieprawidłowe żądanie lub błąd wejścia narzędzia)401→ brak autoryzacji429→ uwierzytelnianie ograniczone limitem szybkości (Retry-Afterustawione)404→ narzędzie niedostępne (nie znaleziono lub nie znajduje się na liście dozwolonych)405→ metoda niedozwolona500→{ ok: false, error: { type, message } }(nieoczekiwany błąd wykonania narzędzia; komunikat oczyszczony)
Przykład
curl -sS http://127.0.0.1:18789/tools/invoke \
-H 'Authorization: Bearer secret' \
-H 'Content-Type: application/json' \
-d '{
"tool": "sessions_list",
"action": "json",
"args": {}
}'