Gateway
Araçlar API'yi çağırır
OpenClaw'ın Gateway'i, tek bir aracı doğrudan çağırmak için bir HTTP uç noktası sunar. Bu uç nokta her zaman etkindir ve Gateway kimlik doğrulaması ile araç politikasını kullanır. OpenAI uyumlu /v1/* yüzeyinde olduğu gibi, paylaşılan gizli anahtara dayalı taşıyıcı kimlik doğrulaması tüm Gateway için güvenilir operatör erişimi olarak değerlendirilir.
POST /tools/invoke- Gateway ile aynı bağlantı noktası (WS + HTTP çoklama):
http://<gateway-host>:<port>/tools/invoke - Varsayılan maksimum istek gövdesi boyutu: 2 MB
Kimlik doğrulama
Gateway kimlik doğrulama yapılandırmasını kullanır.
Yaygın HTTP kimlik doğrulama yolları:
- paylaşılan gizli anahtar kimlik doğrulaması (
gateway.auth.mode="token"veya"password"):Authorization: Bearer <token-or-password> - kimlik bilgisi taşıyan güvenilir HTTP kimlik doğrulaması (
gateway.auth.mode="trusted-proxy"): yapılandırılmış kimlik duyarlı proxy üzerinden yönlendirin ve gerekli kimlik üstbilgilerini eklemesini sağlayın - özel girişte açık kimlik doğrulama (
gateway.auth.mode="none"): kimlik doğrulama üstbilgisi gerekmez
Notlar:
mode="token",gateway.auth.token(veyaOPENCLAW_GATEWAY_TOKEN) kullanır.mode="password",gateway.auth.password(veyaOPENCLAW_GATEWAY_PASSWORD) kullanır.mode="trusted-proxy", HTTP isteğinin yapılandırılmış güvenilir bir proxy kaynağından gelmesini gerektirir; aynı ana makinedeki geri döngü proxy'leri açıkçagateway.auth.trustedProxy.allowLoopback = truegerektirir.- Proxy'yi atlayan aynı ana makinedeki dahili çağıranlar, yerel doğrudan geri dönüş olarak
gateway.auth.password/OPENCLAW_GATEWAY_PASSWORDkullanabilir. Herhangi birForwarded,X-Forwarded-*veyaX-Real-IPüstbilgi kanıtı, isteği bunun yerine güvenilir proxy yolunda tutar. gateway.auth.rateLimityapılandırılmışsa ve çok fazla kimlik doğrulama hatası oluşursa uç nokta,Retry-Afterile birlikte429döndürür.
Güvenlik sınırı (önemli)
Bu uç noktayı Gateway örneği için tam operatör erişimli bir yüzey olarak değerlendirin.
- Buradaki HTTP taşıyıcı kimlik doğrulaması, kullanıcı başına dar kapsamlı bir model değildir.
- Bu uç nokta için geçerli bir Gateway belirteci/parolası, sahip/operatör kimlik bilgisi gibi değerlendirilmelidir.
- Paylaşılan gizli anahtar kimlik doğrulama modlarında (
tokenvepassword), çağıran daha dar birx-openclaw-scopesüstbilgisi gönderse bile uç nokta normal tam operatör varsayılanlarını geri yükler. - Paylaşılan gizli anahtar kimlik doğrulaması, bu uç noktadaki doğrudan araç çağrılarını da sahip-gönderici turları olarak değerlendirir.
- Kimlik bilgisi taşıyan güvenilir HTTP modları (güvenilir proxy kimlik doğrulaması veya özel girişte
gateway.auth.mode="none"), mevcut olduğundax-openclaw-scopesdeğerine uyar; aksi takdirde normal varsayılan operatör kapsam kümesine geri döner. - Bu uç noktayı yalnızca geri döngü/tailnet/özel giriş üzerinde tutun; doğrudan genel internete açmayın.
Kimlik doğrulama matrisi:
| Kimlik doğrulama modu | Davranış |
|---|---|
token veya password + Authorization: Bearer ... |
Paylaşılan Gateway operatör gizli anahtarına sahip olunduğunu kanıtlar. Daha dar x-openclaw-scopes değerini yok sayar. Tam varsayılan operatör kapsam kümesini geri yükler: operator.admin, operator.approvals, operator.pairing, operator.read, operator.talk.secrets, operator.write. Doğrudan araç çağrılarını sahip-gönderici turları olarak değerlendirir. |
Kimlik bilgisi taşıyan güvenilir HTTP (güvenilir proxy kimlik doğrulaması veya özel girişte mode="none") |
Harici bir güvenilir kimliği veya dağıtım sınırını doğrular. Mevcut olduğunda x-openclaw-scopes değerine uyar. Üstbilgi yoksa normal varsayılan operatör kapsam kümesine geri döner. Yalnızca çağıran kapsamları açıkça daraltıp operator.admin değerini çıkardığında sahip semantiğini kaybeder. |
İstek gövdesi
{ "tool": "sessions_list", "action": "json", "args": {}, "sessionKey": "main", "dryRun": false}Alanlar:
tool/name(dize, gerekli): çağrılacak araç adı. Her ikisi de gönderilirsenameönceliklidir.action(dize, isteğe bağlı): araç şeması biractionözelliğini destekliyorsa veargszaten bir değer ayarlamamışsaargs.actionile birleştirilir.args(nesne, isteğe bağlı): araca özgü bağımsız değişkenler.sessionKey(dize, isteğe bağlı): hedef oturum anahtarı. Atlanırsa veya"main"ise Gateway, yapılandırılmış ana oturum anahtarını kullanır (session.mainKeyve varsayılan agente ya da genel oturum kapsamındaglobaldeğerine uyar).agentId(dize, isteğe bağlı): söz konusu agent için oturum anahtarını çözümler. Farklı bir agente zaten eşlenen açık birsessionKeyile çakışırsa400hatası verir.idempotencyKey(dize, isteğe bağlı): çağrı için kararlı bir araç çağrısı kimliği türetmek amacıyla kullanılır.dryRun(boole, isteğe bağlı): gelecekte kullanılmak üzere ayrılmıştır; şu anda yok sayılır.
Politika + yönlendirme davranışı
Araç kullanılabilirliği, Gateway agentlerinin kullandığı politika zinciri üzerinden filtrelenir:
tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- grup politikaları (oturum anahtarı bir grup veya kanalla eşleşiyorsa)
- alt agent politikası (bir alt agent oturum anahtarıyla çağrı yapıldığında)
Bir araca politika tarafından izin verilmiyorsa uç nokta 404 döndürür.
Önemli sınır notları:
- Çalıştırma onayları, bu HTTP uç noktası için ayrı bir yetkilendirme sınırı değil, operatör güvenlik önlemleridir. Bir araca burada Gateway kimlik doğrulaması + araç politikası aracılığıyla erişilebiliyorsa
/tools/invoke, çağrı başına ek bir onay istemi eklemez. execaracına buradan erişilebiliyorsa bunu değişiklik yapan bir kabuk yüzeyi olarak değerlendirin.write,edit,apply_patchveya HTTP dosya sistemi yazma araçlarının reddedilmesi, kabuk yürütmesini salt okunur hâle getirmez.- Gateway taşıyıcı kimlik bilgilerini güvenilmeyen çağıranlarla paylaşmayın. Güven sınırları arasında ayrım gerekiyorsa ayrı Gateway'ler çalıştırın (tercihen ayrı işletim sistemi kullanıcılarında/ana makinelerinde).
Gateway HTTP, oturum politikası araca izin verse bile varsayılan olarak katı bir ret listesi de uygular:
| Araç | Neden |
|---|---|
exec |
Doğrudan komut yürütme (RCE yüzeyi) |
spawn |
İsteğe bağlı alt süreç oluşturma (RCE yüzeyi) |
shell |
Kabuk komutu yürütme (RCE yüzeyi) |
fs_write |
Ana makinede isteğe bağlı dosya değişikliği |
fs_delete |
Ana makinede isteğe bağlı dosya silme |
fs_move |
Ana makinede isteğe bağlı dosya taşıma/yeniden adlandırma |
apply_patch |
Yama uygulaması isteğe bağlı dosyaları yeniden yazabilir |
sessions_spawn |
Oturum düzenleme; uzaktan agent oluşturmak RCE'dir |
sessions_send |
Oturumlar arası ileti ekleme |
cron |
Kalıcı otomasyon kontrol düzlemi |
gateway |
Gateway kontrol düzlemi; HTTP üzerinden yeniden yapılandırmayı önler |
nodes |
Node komut aktarımı, eşleştirilmiş ana makinelerde system.run aracına erişebilir |
cron, gateway ve nodes de yalnızca sahiplere açıktır: varsayılan ret listesinin dışında olsalar bile sahip olmayan çağıranlar bu yüzeyde bunları çağıramaz.
Genel ret listesini gateway.tools aracılığıyla özelleştirin:
{ gateway: { tools: { // HTTP /tools/invoke üzerinden engellenecek ek araçlar deny: ["browser"], // Sahip/yönetici çağıranlar için araçları varsayılan ret listesinden kaldırın allow: ["gateway"], }, },}gateway.tools.allow bir kapsam yükseltmesi değil, erişime açma geçersiz kılmasıdır. Kimlik bilgisi taşıyan HTTP modlarında cron, gateway ve nodes, gateway.tools.allow içinde listelenseler bile sahip/yönetici kimliği (operator.admin) olmayan çağıranlar tarafından kullanılamaz. Paylaşılan gizli anahtara dayalı taşıyıcı kimlik doğrulaması yine yukarıdaki tam güvenilir operatör kuralını izler.
Grup politikalarının bağlamı çözümlemesine yardımcı olmak için isteğe bağlı olarak şunları ayarlayabilirsiniz:
x-openclaw-message-channel: <channel>(örnek:slack,telegram)x-openclaw-account-id: <accountId>(birden fazla hesap varsa)x-openclaw-message-to: <target>(ileti aracı politikası için teslimat hedefi)x-openclaw-thread-id: <threadId>(ileti aracı politikası için iş parçacığı bağlamı)
Yanıtlar
| Durum | Anlamı |
|---|---|
200 |
{ ok: true, result } |
400 |
{ ok: false, error: { type, message } } (geçersiz istek veya araç girdisi hatası) |
401 |
Yetkisiz |
403 |
{ ok: false, error: { type, message, requiresApproval? } } (araç çağrısı politika tarafından engellendi) |
404 |
Araç kullanılamıyor (bulunamadı veya izin listesinde değil) |
405 |
Yönteme izin verilmiyor |
408 |
İstek gövdesi okunurken zaman aşımı oluştu |
413 |
İstek gövdesi maksimum yük boyutunu aştı |
429 |
Kimlik doğrulama hız sınırına takıldı (Retry-After ayarlandı) |
500 |
{ ok: false, error: { type, message } } (beklenmeyen araç yürütme hatası; arındırılmış ileti) |
Örnek
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": {} }'