Gateway
Gateway protokolü
Gateway WS protokolü, OpenClaw için tek denetim düzlemi ve Node aktarım mekanizmasıdır. Operatör ve Node istemcileri (CLI, web kullanıcı arayüzü, macOS uygulaması, iOS/Android Node'ları, başsız Node'lar) WebSocket üzerinden bağlanır ve el sıkışma sırasında bir rol ve kapsam bildirir.
npm paketleri
Bu paketler OpenClaw sürüm serileriyle birlikte sunulur. İlk kullanıma sunma sırasında,
paket içeren ilk sürüm yayımlanana kadar npm E404 döndürebilir.
@openclaw/gateway-protocolşemaları, doğrulayıcıları, TypeScript türlerini, hafif çerçeve ve hata yardımcılarını ve sürüm sabitlerini yayımlar. Tarball dosyası, oluşturulan makine tarafından okunabilirprotocol.schema.jsonsözleşmesini içerir.@openclaw/gateway-clientreferans Node istemcisini ve@openclaw/gateway-client/browserkonumunda tarayıcı açısından güvenli bir giriş noktasını yayımlar.
Uygulama yaşam döngüsü rehberliği için Gateway istemcisi oluşturma bölümüne bakın. Gateway'i alt süreç olarak yöneten uygulamalar için OpenClaw'u yerleştirme bölümüne bakın.
Aktarım ve çerçeveleme
- WebSocket, metin çerçeveleri, JSON yükleri.
- İlk çerçeve mutlaka bir
connectisteği olmalıdır. - Bağlantı öncesi çerçeveler 64 KiB (
MAX_PREAUTH_PAYLOAD_BYTES) ile sınırlıdır. El sıkışmadan sonrahello-ok.policy.maxPayloadvehello-ok.policy.maxBufferedBytesdeğerlerine uyun. Tanılama etkinleştirildiğinde, aşırı büyük gelen çerçeveler ve yavaş giden tamponlar, gateway bağlantıyı kapatmadan veya çerçeveyi bırakmadan öncepayload.largeolayları yayınlar. Bu olaylarsurface, bayt boyutları, sınırlar ve güvenli bir neden kodu taşır; hiçbir zaman ileti gövdelerini, ek içeriklerini, ham çerçeve baytlarını, token'ları, çerezleri veya gizli bilgileri taşımaz.
Çerçeve biçimleri:
- İstek:
{type:"req", id, method, params} - Yanıt:
{type:"res", id, ok, payload|error} - Olay:
{type:"event", event, payload, seq?, stateVersion?}
Yanıt hataları { code, message, details?, retryable?, retryAfterMs? } kullanır.
İstemciler code ve details.code değerlerine göre dallanmalıdır; message,
bir uyumluluk notunda aksi belirtilmediği sürece insan tarafından okunabilir kalır
ve değişebilir. Yöntem düzeyindeki yetkilendirme hataları, yapılandırılmış
eksik kapsam ayrıntılarıyla üst düzey code: "FORBIDDEN" kullanır:
- Eksik kapsam:
{ code: "MISSING_SCOPE", missingScope, requiredScopes }.requiredScopes, istenen işlem için bilinen kapsamların tam kümesidir. Eskimissing scope: <scope>iletisi eski istemciler için korunur.
İstemciler önce details değerini okumalı ve eski iletiyi yalnızca uyumluluk
için geri dönüş seçeneği olarak kullanmalıdır. readMissingScopeError ve readMissingScopeErrorDetails,
@openclaw/gateway-protocol/gateway-error-details üzerinden dışa aktarılır; tarayıcı açısından güvenli
gateway istemcisi bunları @openclaw/gateway-client/browser üzerinden yeniden dışa aktarır.
Şemalar, @openclaw/gateway-protocol/schema üzerinden GatewayErrorDetailsSchema,
MissingScopeErrorDetailsSchema olarak dışa aktarılır.
HTTP kapsam hataları, error.details altında MISSING_SCOPE nesnesini yansıtır ve
403 HTTP durumunu kullanır.
Yan etkiye sahip yöntemler idempotency anahtarları gerektirir (şemaya bakın).
El sıkışma
Gateway, bağlantı öncesi bir sınama gönderir:
{ "type": "event", "event": "connect.challenge", "payload": { "nonce": "…", "ts": 1737264000000 }}İstemci connect ile yanıt verir:
{ "type": "req", "id": "…", "method": "connect", "params": { "minProtocol": 4, "maxProtocol": 4, "client": { "id": "cli", "version": "1.2.3", "platform": "macos", "mode": "operator" }, "role": "operator", "scopes": ["operator.read", "operator.write"], "caps": [], "commands": [], "permissions": {}, "auth": { "token": "…" }, "locale": "en-US", "userAgent": "openclaw-cli/1.2.3", "device": { "id": "device_fingerprint", "publicKey": "…", "signature": "…", "signedAt": 1737264000000, "nonce": "…" } }}Gateway hello-ok ile yanıt verir:
{ "type": "res", "id": "…", "ok": true, "payload": { "type": "hello-ok", "protocol": 4, "server": { "version": "…", "connId": "…" }, "features": { "methods": ["…"], "events": ["…"] }, "snapshot": { "…": "…" }, "auth": { "role": "operator", "scopes": ["operator.read", "operator.write"] }, "policy": { "maxPayload": 26214400, "maxBufferedBytes": 52428800, "tickIntervalMs": 15000 } }}server, features, snapshot, policy ve auth,
HelloOkSchema (packages/gateway-protocol/src/schema/frames.ts) tarafından zorunlu tutulur. auth,
hiçbir cihaz token'ı verilmediğinde bile anlaşmaya varılan rolü/kapsamları bildirir
(yukarıdaki biçim). pluginSurfaceUrls isteğe bağlıdır ve Plugin yüzeyi adlarını
(ör. canvas) kapsamlı barındırılan URL'lere eşler; süresi dolabileceğinden
Node'lar yeni bir giriş için { "surface": "canvas" } ile node.pluginSurface.refresh çağrısı yapar.
Kullanımdan kaldırılan canvasHostUrl / canvasCapability / node.canvas.capability.refresh
yolu desteklenmez; Plugin yüzeylerini kullanın.
Anlık görüntünün isteğe bağlı appliedConfigHash değeri, etkin Gateway çalışma zamanı
tarafından kabul edilen çözümlenmiş kaynak yapılandırma revizyonudur. İstemciler,
daha yeni kaydedilmiş bir yapılandırmanın hâlâ yeniden başlatma gerektirip gerektirmediğini
belirlemek için bunu config.get.configRevisionHash ile karşılaştırabilir. config.get.hash,
yapılandırma yazma çakışması korumaları tarafından kullanılan ham kök dosya revizyonu
olarak kalır.
Gateway başlangıç yardımcı süreçlerini tamamlamaya devam ederken connect,
details.reason: "startup-sidecars" ve retryAfterMs içeren, yeniden denenebilir bir
UNAVAILABLE hatası döndürebilir. Bunu kalıcı bir el sıkışma hatası olarak
değerlendirmek yerine bağlantı bütçeniz içinde yeniden deneyin.
Bir cihaz token'ı verildiğinde hello-ok.auth bunu ekler:
{ "auth": { "deviceToken": "…", "role": "operator", "scopes": ["operator.read", "operator.write"] }}Yerleşik QR/kurulum kodu önyüklemesi, mobil cihazlara aktarım yoludur. Başarılı bir temel kurulum kodu bağlantısı, birincil Node token'ının yanı sıra sınırlandırılmış bir operatör token'ı döndürür:
{ "auth": { "deviceToken": "…", "role": "node", "scopes": [], "deviceTokens": [ { "deviceToken": "…", "role": "operator", "scopes": ["operator.approvals", "operator.read", "operator.talk.secrets", "operator.write"] } ] }}Bu operatör aktarımı bilerek sınırlandırılmıştır: Talk yapılandırması okumaları
için operator.talk.secrets dahil olmak üzere mobil operatör döngüsünü ve yerel kurulumu
başlatmaya yeterlidir, ancak eşleştirme değişikliği kapsamlarını ve operator.admin
değerini içermez. Daha geniş eşleştirme/yönetici erişimi için ayrı bir onaylı
eşleştirme veya token akışı gerekir. hello-ok.auth.deviceTokens değerini yalnızca önyükleme
kimlik doğrulaması güvenilir bir aktarım üzerinden (wss:// veya
geri döngü/yerel eşleştirme) çalıştıysa kalıcı hâle getirin.
Aynı süreçteki güvenilir arka uç istemcileri (client.id: "gateway-client",
client.mode: "backend"), paylaşılan gateway token'ı/parolasıyla kimlik doğrularken doğrudan
geri döngü bağlantılarında device değerini atlayabilir. Bu yol, dahili
denetim düzlemi RPC'lerine (ör. alt ajan oturum güncellemeleri) ayrılmıştır ve
eski CLI/cihaz eşleştirme temel değerlerinin yerel arka uç çalışmasını engellemesini
önler. Uzak, tarayıcı kaynaklı, Node ve açık cihaz token'ı/cihaz kimliği istemcileri
normal eşleştirme ve kapsam yükseltme kontrollerinden geçmeye devam eder.
Çalışan rolü ve kapalı protokol
Bulut çalışanları, gateway'in sahip olduğu ve ana makine anahtarına sabitlenmiş
SSH tüneli üzerinden ayrılmış bir geri döngü girişini kullanır. Bu giriş yalnızca
çalışan kimliğini kabul eder; genel kimlik doğrulamasını, Node olaylarını, operatör
RPC'lerini veya Plugin yöntemlerini hiçbir zaman yönlendirmez. Katı bir connect,
ortama, paket karmasına, sahip dönemine, RPC kümesi sürümüne, sona erme zamanına
ve boş değer alabilen tek bir oturuma bağlı; saklama sırasında karmalanmış, kısa
ömürlü bir kimlik bilgisini doğrular ve ayrıca mevcut sürümü ve özellik kümesini
ayrı olarak denetler. Başarı durumunda asgari worker-hello-ok döndürülür; özellik
anlaşması genel protokol sürümünden bağımsızdır. Çerçeveler 64 KiB altında kalır;
ancak anlaşmaya varılmış bir worker.inference.start çerçevesi 25 MiB boyutuna kadar
olabilir. Kapalı izin listesi worker.heartbeat, worker.transcript.commit,
worker.live-event, worker.inference.start ve worker.inference.cancel değerlerini içerir.
Transkript işlemeleri sahip dönemi çitlemesini, gateway'in sahip olduğu bir oturum bağlamasını, temel yaprak karşılaştırıp değiştirme işlemini ve kalıcı sıra yeniden oynatmayı kullanır; gateway, normal oturum yazıcısı aracılığıyla transkript girdisi ve üst öğe kimliklerini oluşturur. Sahiplik ve sona erme her RPC'de yeniden denetlenir.
İstemci yetenekleri
Operatör istemcileri connect.params.caps içinde isteğe bağlı yetenekler bildirebilir:
tool-events: yapılandırılmış araç yaşam döngüsü olaylarını kabul eder.inline-widgets: barındırılan satır içi widget araç sonuçlarını işleyebilir.
İstemci yetenekleri, yetkilendirmeyi değil bağlı istemciyi tanımlar. Ajan araçları gerekli yetenekleri bildirebilir; kaynak istemcinin caps değerinde her gereksinim bulunmadığı sürece Gateway bu araçları hariç tutar. Kanal kaynaklı çalıştırmaların Gateway istemci yetenekleri yoktur; bu nedenle araç ilkesi açıkça izin verse bile yetenek kısıtlamalı araçlar kullanılamaz.
Node bağlantısı örneği
{ "type": "req", "id": "…", "method": "connect", "params": { "minProtocol": 4, "maxProtocol": 4, "client": { "id": "ios-node", "version": "1.2.3", "platform": "ios", "mode": "node" }, "role": "node", "scopes": [], "caps": ["camera", "canvas", "screen", "location", "voice"], "commands": ["camera.snap", "canvas.navigate", "screen.record", "location.get"], "permissions": { "camera.capture": true, "screen.record": false }, "auth": { "token": "…" }, "locale": "en-US", "userAgent": "openclaw-ios/1.2.3", "device": { "id": "device_fingerprint", "publicKey": "…", "signature": "…", "signedAt": 1737264000000, "nonce": "…" } }}Node'lar bağlantı sırasında yetenek bildirimlerinde bulunur:
caps:camera,canvas,screen,location,voice,talkgibi üst düzey kategoriler.commands: çağırma için komut izin listesi.permissions: ayrıntılı anahtarlar (ör.screen.record,camera.capture).
Gateway bunları bildirim olarak değerlendirir ve sunucu tarafı izin listelerini uygular.
Roller ve kapsamlar
Tam operatör kapsam modeli, onay sırasındaki kontroller ve paylaşılan gizli bilgi semantiği için Operatör kapsamları bölümüne bakın.
Roller:
operator: denetim düzlemi istemcisi (CLI/kullanıcı arayüzü/otomasyon).node: yetenek ana makinesi (kamera/ekran/tuval/system.run).worker: ayrılmış, kapalı çalışan protokolündeki bulut yürütme ana makinesi.
Operatör kapsamları (src/gateway/operator-scopes.ts), tam kapalı küme:
operator.readoperator.writeoperator.adminoperator.approvalsoperator.pairingoperator.talk.secrets
includeSecrets: true ile talk.config, operator.talk.secrets (veya
operator.admin) gerektirir. Gizli bilgiler dahil edildiğinde etkin Talk sağlayıcısının
kimlik bilgisini talk.resolved.config.apiKey üzerinden okuyun; talk.providers.<id>.apiKey
kaynak biçimini korur ve bir SecretRef nesnesi veya sansürlenmiş bir dize olabilir.
Plugin tarafından kaydedilen gateway RPC yöntemleri kendi operatör kapsamlarını
isteyebilir; ancak şu ayrılmış çekirdek ön ekleri her zaman operator.admin
(src/shared/gateway-method-policy.ts) olarak çözümlenir: config.*, exec.approvals.*,
wizard.*, update.*.
Yöntem kapsamı yalnızca ilk geçittir. chat.send üzerinden erişilen bazı
eğik çizgi komutları daha katı komut düzeyi kontroller uygular: kalıcı /config set
ve /config unset yazma işlemleri, daha düşük bir operatör kapsamına zaten sahip
gateway istemcileri için bile operator.admin gerektirir.
node.pair.approve, bekleyen isteğin bildirdiği commands
(src/infra/node-pairing-authz.ts) değerine göre temel yöntem kapsamına (operator.pairing) ek
olarak onay sırasında ilave bir kapsam kontrolüne sahiptir:
| Bildirilen komutlar | Gerekli kapsamlar |
|---|---|
| yok | operator.pairing |
| sıradan komutlar | operator.pairing + operator.write |
system.run, system.run.prepare, system.which, browser.proxy, fs.listDir veya system.execApprovals.get/set içerir |
operator.pairing + operator.admin |
Yetenekler/komutlar/izinler (Node)
Node'lar bağlantı sırasında yetenek beyanlarını bildirir:
caps:camera,canvas,screen,location,voicevetalkgibi üst düzey yetenek kategorileri.commands: çağırma için komut izin listesi.permissions: ayrıntılı anahtarlar (ör.screen.record,camera.capture).
Gateway bunları beyanlar olarak değerlendirir ve sunucu tarafındaki izin listelerini uygular.
Bağlı Node'lar, başarılı bir bağlantı veya yeniden bağlantının ardından node.pluginTools.update ile
isteğe bağlı, aracı tarafından görülebilen Plugin ya da MCP araç tanımlayıcıları
yayımlayabilir. Başsız Node ana makineleri, bildirimsel MCP envanteri
değişikliklerini uygulamak için yeniden başlatılır. Bu güncelleme yöntemi tek yayımlama yoludur;
Plugin araç tanımlayıcıları connect parametrelerinde kabul edilmez.
Her tanımlayıcı, sağlayıcı açısından güvenli bir araç name kullanmalı ve
Node'un geçerli komut izin listesindeki bir command öğesini adlandırmalıdır.
Gateway, eşleştirilmiş Node'dan gelen tanımlayıcı meta verilerine güvenir,
onaylanan komut yüzeyinin dışındaki tanımlayıcıları filtreler, Node bağlantısı
kesildiğinde bunları kaldırır ve operatörlerin başka bir Node'un kataloğunu
değiştirme girişimlerini reddeder. Node tarafından yayımlanan tanımlayıcıları yok saymak için
gateway.nodes.pluginTools.enabled: false olarak ayarlayın.
Bağlı Node ana makineleri, eksiksiz Skills değiştirme kataloglarını
node.skills.update ile yayımlar. Bu Node rolü yöntemi, Node Skills yayımlamanın
tek yoludur; Skills, connect parametrelerinde kabul edilmez. Her tanımlayıcı;
güvenli bir ad, açıklama ve sınırlandırılmış SKILL.md içeriği barındırır.
Gateway bu içeriği normal Skills yükleyicisiyle ayrıştırır, Node bağlıyken
aracı Skills anlık görüntülerine ekler ve bağlantı kesildiğinde kaldırır.
Node tarafından yayımlanan Skills öğelerini yok saymak için
gateway.nodes.allowSkills: false olarak ayarlayın.
Varlık
system-presence, cihaz kimliğine göre anahtarlanmış vedeviceId,rolesilescopesiçeren girdileri döndürür; böylece kullanıcı arayüzleri, cihaz hem operatör hem de Node olarak bağlansa bile cihaz başına bir satır gösterebilir.node.list, isteğe bağlılastSeenAtMsvelastSeenReasoniçerir. Bağlı Node'lar, geçerli bağlantı zamanınıconnectnedeniyle bildirir; eşleştirilmiş Node'lar güvenilir bir Node olayı aracılığıyla kalıcı arka plan varlığını da bildirebilir.
Yerel macOS Node'ları, sınırlandırılmış giriş boşta kalma süresiyle kimliği doğrulanmış
node.presence.activity olayları da gönderebilir. Gateway, etkinlik zaman damgalarını
kendi saatine göre türetir, en güncel bağlı Mac'i node.list ve
node.describe aracılığıyla sunar ve node.presence güncellemelerini okuma kapsamlı istemcilere yayımlar.
Kullanıcı etkinlik paylaşımını devre dışı bıraktığında uygulama { "action": "clear" }
gönderir; Gateway zaman damgalarını yalnızca kimliği doğrulanmış bu tam Node bağlantısı için temizler.
Bu onaylanan eylemden daha eski Gateway sürümleri eylemi işlenmemiş olarak döndürür; bu nedenle Mac
Node bir kez yeniden bağlanır ve bağlantı kesme temizliğinin eski bağlantı durumunu kaldırmasını sağlar.
Seçim, gizlilik, model bağlamı ve bildirim yönlendirme davranışı için
Etkin bilgisayar varlığı bölümüne bakın.
Node arka planda canlı olayı
Node'lar, eşleştirilmiş bir Node'un arka planda uyanma sırasında canlı olduğunu
bağlı olarak işaretlemeden kaydetmek için event: "node.presence.alive" ile node.event çağrısı yapar:
{ "event": "node.presence.alive", "payloadJSON": "{\"trigger\":\"silent_push\",\"sentAtMs\":1737264000000,\"displayName\":\"Peter's iPhone\",\"version\":\"2026.4.28\",\"platform\":\"iOS 18.4.0\",\"deviceFamily\":\"iPhone\",\"modelIdentifier\":\"iPhone17,1\",\"pushTransport\":\"relay\"}"}trigger kapalı bir enum'dur: background, silent_push, bg_app_refresh,
significant_location, manual, connect. Bilinmeyen değerler
background (src/shared/node-presence.ts) olarak normalleştirilir. Olay yalnızca
kimliği doğrulanmış Node cihaz oturumları için kalıcılaştırılır; cihazı olmayan veya eşleştirilmemiş oturumlar
handled: false döndürür.
Başarılı Gateway'ler yapılandırılmış bir sonuç döndürür:
{ "ok": true, "event": "node.presence.alive", "handled": true, "reason": "persisted"}Eski Gateway'ler, node.event için yalnızca { "ok": true } döndürebilir; bunu
kalıcı varlık kaydı olarak değil, onaylanmış bir RPC olarak değerlendirin.
Yayın olayı kapsamlandırması
Sunucu tarafından gönderilen yayın olayları kapsamla sınırlandırılır; böylece eşleştirme kapsamlı veya yalnızca Node
oturumları, oturum içeriğini pasif olarak almaz
(src/gateway/server-broadcast.ts):
- Sohbet, aracı ve araç sonucu çerçeveleri (akışla iletilen
agentolayları, araç sonucu olayları) en azoperator.readgerektirir. Buna sahip olmayan oturumlar bu çerçeveleri tamamen atlar. - Plugin tanımlı
plugin.*yayınları varsayılan olarakoperator.writeveyaoperator.adminile sınırlandırılır;plugin.approval.requested/plugin.approval.resolvedgibi açık girdiler bunun yerineoperator.approvalskullanır. - Durum/taşıma olayları (
heartbeat,presence,tick, bağlantı/bağlantı kesme yaşam döngüsü) sınırsız kalır; böylece taşıma sağlığı kimliği doğrulanmış her oturum tarafından gözlemlenebilir. - Bilinmeyen yayın olayı aileleri, kayıtlı bir işleyici açıkça kısıtlamayı gevşetmediği sürece varsayılan olarak kapsamla sınırlandırılır (kapalı durumda başarısız olur).
Her istemci bağlantısı, kendine ait istemci bazlı sıra numarasını tutar; böylece farklı istemciler olay akışının kapsamla filtrelenmiş farklı alt kümelerini görse bile yayınlar ilgili sokette monoton biçimde sıralı kalır.
RPC yöntem aileleri
hello-ok.features.methods, src/gateway/server-methods-list.ts ile yüklenen Plugin/kanal yöntem
dışa aktarımlarından oluşturulan tutucu bir keşif listesidir; her yöntemin
oluşturulmuş bir dökümü değildir ve bazı yöntemler (örneğin
push.test, web.login.start, web.login.wait, sessions.usage)
gerçek ve çağrılabilir yöntemler olmalarına rağmen keşif kapsamından bilinçli olarak çıkarılmıştır.
Bunu src/gateway/server-methods/*.ts öğesinin tam bir listesi değil, özellik keşfi olarak değerlendirin.
Sistem ve kimlik
health, önbelleğe alınmış veya yeni yoklanmış Gateway sağlık anlık görüntüsünü döndürür.diagnostics.stability, yakın zamandaki sınırlandırılmış tanılama kararlılığı kaydedicisini döndürür: olay adları, sayılar, bayt boyutları, bellek ölçümleri, kuyruk/oturum durumu, kanal/Plugin adları ve oturum kimlikleri. Sohbet metni, Webhook gövdeleri, araç çıktıları, ham istek/yanıt gövdeleri, token'lar, çerezler veya gizli bilgiler içermez.operator.readgerektirir.status,/statustarzı Gateway özetini döndürür; hassas alanlar yalnızca yönetici kapsamlı operatör istemcilerine sunulur.gateway.identity.get, aktarma ve eşleştirme akışlarında kullanılan Gateway cihaz kimliğini döndürür.system-presence, bağlı operatör/Node cihazlarının geçerli varlık anlık görüntüsünü döndürür.system-event, bir sistem olayı ekler ve varlık bağlamını güncelleyip yayımlayabilir.last-heartbeat, kalıcılaştırılan en son Heartbeat olayını döndürür.set-heartbeats, Gateway üzerindeki Heartbeat işlemeyi açar veya kapatır.gateway.suspend.prepare, yalnızca izlenen Gateway işi boşta olduğunda kısa bir iş birlikçi askıya alma kirası oluşturur.gateway.suspend.statusbu kirayı denetler vegateway.suspend.resume, çözülmeden veya yarıda kesilen bir ana makine işleminden sonra kirayı serbest bırakır.
Modeller ve kullanım
models.list, çalışma zamanında izin verilen model kataloğunu döndürür. Aşağıdaki "models.listgörünümleri" bölümüne bakın.usage.status, sağlayıcı kullanım pencerelerini/kalan kota özetlerini döndürür.usage.cost, bir tarih aralığı için toplu maliyet kullanım özetlerini döndürür. Tek bir aracı içinagentId, yapılandırılmış aracıları toplamak içinagentScope: "all"iletin.doctor.memory.status, etkin varsayılan aracı çalışma alanı için vektör belleği / önbelleğe alınmış gömme hazırlığını döndürür. Yalnızca açık bir canlı gömme sağlayıcısı pingi için{ "probe": true }veya{ "deep": true }iletin. Dreaming deposu istatistiklerini tek bir aracı çalışma alanıyla sınırlandırmak için{ "agentId": "agent-id" }iletin; belirtilmezse yapılandırılmış Dreaming çalışma alanları toplanır.doctor.memory.dreamDiary,doctor.memory.backfillDreamDiary,doctor.memory.resetDreamDiary,doctor.memory.resetGroundedShortTerm,doctor.memory.repairDreamingArtifactsvedoctor.memory.dedupeDreamDiaryisteğe bağlı{ "agentId": "agent-id" }kabul eder; belirtilmezse yapılandırılmış varsayılan aracı çalışma alanında çalışırlar.doctor.memory.remHarness, çalışma alanı yolları, bellek parçacıkları, oluşturulmuş dayanaklı Markdown ve derin yükseltme adayları dahil olmak üzere uzak denetim düzlemi istemcileri için sınırlandırılmış, salt okunur bir REM donanım önizlemesi döndürür.operator.readgerektirir.sessions.usage, oturum bazında kullanım özetlerini döndürür. Tek bir aracı içinagentId, yapılandırılmış aracıları birlikte listelemek içinagentScope: "all"iletin. Her iki kullanım yöntemi de yaz saati uygulamasını dikkate alan takvim günü sınırları ve grupları için IANAtimeZoneiçerenmode: "specific"kabul eder.utcOffset, eski istemciler için ve Gateway çalışma zamanı istenen bölgeyi tanımadığında geri dönüş seçeneği olarak desteklenmeye devam eder.sessions.usage.timeseries, tek bir oturum için zaman serisi kullanımını döndürür.sessions.usage.logs, tek bir oturum için kullanım günlüğü girdilerini döndürür.
Kanallar ve oturum açma yardımcıları
channels.status, yerleşik ve paketlenmiş kanal/Plugin durum özetlerini döndürür.channels.logout, kanal destekliyorsa belirli bir kanal/hesap oturumunu kapatır.web.login.start, QR özelliğine sahip geçerli web kanalı sağlayıcısı için QR/web oturum açma akışı başlatır.web.login.wait, bu akışın tamamlanmasını bekler ve başarı durumunda kanalı başlatır.push.test, kayıtlı bir iOS Node'una test amaçlı bir APNs anlık bildirimi gönderir.voicewake.get, saklanan uyandırma sözcüğü tetikleyicilerini döndürür.voicewake.set, uyandırma sözcüğü tetikleyicilerini günceller ve değişikliği yayımlar.
Plugin yönetimi
plugins.list(operator.read), yüklü Plugin envanterinin yanı sıra yerel olarak derlenmiş resmî seçimleri, tanılamaları ve mevcut yükleme modunun değişikliklere izin verip vermediğini döndürür.plugins.search(operator.read), yüklenebilir ClawHub kod Plugin'i ve paket Plugin'i ailelerini arar. Boş olmayanqueryve 1 ile 100 arasında isteğe bağlılimitiletin.plugins.install(operator.admin),{ source: "official", pluginId }ile resmî bir katalog girdisini veya{ source: "clawhub", packageName, version?, acknowledgeClawHubRisk? }ile bir ClawHub paketini yükler. ClawHub yüklemeleri Gateway güveni, bütünlük ve yükleme politikası denetimlerini korur. Başarılı yüklemeler Gateway'in yeniden başlatılmasını gerektirir.plugins.setEnabled(operator.admin), yüklü bir Plugin'in etkinleştirme politikasını{ pluginId, enabled }ile değiştirir. Yanıt; güncellenmiş katalog girdisini, yeniden başlatma meta verilerini ve yuva seçimiyle ilgili uyarıları içerir.plugins.uninstall(operator.admin), haricî olarak yüklenmiş bir Plugin'i{ pluginId }ile kaldırır: yapılandırma başvuruları, yükleme kaydı ve yönetilen dosyalar. Paketle birlikte gelen Plugin'ler kaldırılamaz, yalnızca devre dışı bırakılabilir. Yanıt, kaldırma işlemlerini listeler ve her zaman Gateway'in yeniden başlatılmasını gerektirir.
Mesajlaşma ve günlükler
send, sohbet çalıştırıcısının dışında kanal/hesap/ileti dizisi hedefli gönderimler için doğrudan giden teslimat RPC'sidir.logs.tail, yapılandırılmış Gateway dosya günlüğünün son bölümünü imleç/sınır ve azami bayt denetimleriyle döndürür.
Operatör terminali
terminal.open, açıkça belirtilen biragentIdveya varsayılan ajan için ana makine PTY'si başlatır ve çözümlenen ajanı, çalışma dizinini, kabuğu ve yalıtım durumunu döndürür.terminal.input,terminal.resizeveterminal.closeyalnızca çağrıyı yapan bağlantının sahip olduğu oturumlar üzerinde çalışır.terminal.upload, 16 MiB'a kadar bir base64 dosyasını kabul eder, oturumun Gateway veya eşleştirilmiş Node ana makinesindeki özel ve 24 saatlik geçici bir dizine yerleştirir ve mutlak yolu döndürür. Çağıranın bu yolu yine de yapıştırması veya başka bir şekilde kullanması gerekir; RPC hiçbir zaman terminal girdisi yazmaz veya komut çalıştırmaz.terminal.dataveterminal.exitolayları yalnızca oturumun sahibi olan bağlantıya aktarılır.- Bağlantısı kesilen oturumlar sonlandırılmaz, bağlantıları ayrılır: son çıktılar sınırlı bir sunucu tarafı arabelleğinde birikirken
gateway.terminal.detachedSessionTimeoutSecondsboyunca yeniden bağlanabilir durumda kalırlar (varsayılan 300;0, bağlantı kesildiğinde sonlandırma davranışını geri getirir). terminal.list, bağlanılabilir oturumları döndürür;terminal.attach, canlı veya bağlantısı ayrılmış bir oturumu çağrıyı yapan bağlantıya yeniden bağlar ve yeniden oynatma arabelleğini döndürür (tmux tarzı devralma — önceki canlı sahip, nedenidetachedolanterminal.exitalır);terminal.text, bağlanmadan arabelleği düz metin olarak okur.- Her terminal yöntemi
operator.admingerektirir;gateway.terminal.enabledaçıkça true olmalıdır. Tamamen korumalı alan içinde çalışan ajanlar reddedilir ve ajan politikasındaki bir değişiklik, bağlantısı ayrılmış olanlar dâhil mevcut ve işlem hâlindeki PTY'leri kapatır.
Talk ve TTS
talk.catalog; konuşma, akışlı transkripsiyon ve gerçek zamanlı ses için salt okunur Talk sağlayıcı kataloğunu döndürür: sağlayıcı sırlarını döndürmeden veya genel yapılandırmayı değiştirmeden kanonik sağlayıcı kimlikleri, kayıt defteri takma adları, etiketlar, yapılandırılma durumu, isteğe bağlı grup düzeyinde birreadysonucu, kullanıma sunulan model/ses kimlikleri, kanonik modlar, taşıma yöntemleri, beyin stratejileri ve gerçek zamanlı ses/yetenek bayrakları. Güncel Gateway'ler, çalışma zamanı sağlayıcı seçimini uyguladıktan sonrareadydeğerini ayarlar; eski Gateway'lerde bunun bulunmamasını doğrulanmamış olarak değerlendirin.talk.config, geçerli Talk yapılandırma yükünü döndürür;includeSecrets,operator.talk.secrets(veyaoperator.admin) gerektirir.talk.session.create,realtime/gateway-relay,transcription/gateway-relayveyastt-tts/managed-roomiçin Gateway'in sahip olduğu bir Talk oturumu oluşturur.stt-tts/managed-roomiçinsessionKeyiletenoperator.writeçağıranları, kapsamlı oturum anahtarı görünürlüğü içinspawnedBydeğerini de iletmelidir; kapsamsızsessionKeyoluşturma vebrain: "direct-tools",operator.admingerektirir.talk.session.join, yönetilen oda oturum belirtecini doğrular, gerektiğindesession.readyveyasession.replacedyayar ve düz metin belirteci ya da karmasını hiçbir zaman döndürmeden oda/oturum meta verilerinin yanı sıra son Talk olaylarını döndürür.talk.session.appendAudio, Gateway'in sahip olduğu gerçek zamanlı aktarma ve transkripsiyon oturumlarına base64 PCM giriş sesi ekler.talk.session.startTurn,talk.session.endTurnvetalk.session.cancelTurn, durum temizlenmeden önce eski tur reddi uygulayarak yönetilen oda turu yaşam döngüsünü yürütür.talk.session.cancelOutput, öncelikle Gateway aktarma oturumlarında VAD kapılı araya girme için asistan ses çıkışını durdurur.talk.session.submitToolResult, Gateway'in sahip olduğu gerçek zamanlı aktarma oturumunun yaydığı sağlayıcı araç çağrısını tamamlar. İstek, sağlayıcı köprüsünün sunduğu tüm eşzamansız tamamlanma sinyallerini bekler; başarısız gönderimler bağlantılı çalıştırmayı etkin tutar ve başarılı bir araç sonucu olayı yaymaz. Ara araç çıktısı içinoptions: { willContinue: true }veya sağlayıcı köprüsü bastırma desteğini bildirdiğinde ve sonucun başka bir yanıt başlatmaması gerektiğindeoptions: { suppressResponse: true }iletin.talk.session.steer, Gateway'in sahip olduğu ajan destekli Talk oturumuna etkin çalıştırma ses denetimi gönderir:{ sessionId, text, mode? }; buradamode,status,steer,cancelveyafollowupolur; mod belirtilmezse konuşulan metne göre sınıflandırılır.talk.session.close, Gateway'in sahip olduğu bir aktarma, transkripsiyon veya yönetilen oda oturumunu kapatır ve sonlandırıcı Talk olayları yayar.talk.mode, WebChat/Control UI istemcileri için geçerli Talk modu durumunu ayarlar/yayınlar.talk.client.create, Gateway kimlik bilgileri, talimatlar, araç politikası ve döndürülenvoiceSessionIdüzerinde sahipliğini korurkenwebrtcveyaprovider-websocketkullanarak istemcinin sahip olduğu gerçek zamanlı sağlayıcı oturumunu oluşturur veya sürdürür. İstemcilersessionKeyiletir ve tek bir çağrı sırasında sağlayıcı taşıma yöntemini değiştirirkenvoiceSessionIddeğerini yeniden kullanır.talk.client.transcript, normal ajan oturumuna tamamlanmış bir{ role, text }öğesi ekler. GereklientryId,voiceSessionIdiçinde eş etkili çalışır; yeniden denemeler transkript iletilerini çoğaltmaz.talk.client.close, bekleyen transkript yazmalarından sonra mantıksal ses oturumunu kapatır. Kapatma eş etkilidir ve yalnızca değişiklik içeren bir çağrı özetini oturumun WebChat dışındaki son kanalına teslim edebilir.talk.client.toolCall, istemcinin sahip olduğu gerçek zamanlı taşıma yöntemlerinin sağlayıcı araç çağrılarını Gateway politikasına iletmesini sağlar. Desteklenen ilk araçopenclaw_agent_consult'dir; istemciler bir çalıştırma kimliği alır ve sağlayıcıya özgü araç sonucunu göndermeden önce normal sohbet yaşam döngüsü olaylarını bekler. Sese bağlı yüksek etkili eylemler, daha sonra tamamlanan bir kullanıcı ifadesi tam olarak bu eylemi açıkça onaylayana ve sonraki danışmaconfirmationIddeğerini sağlayana kadarVOICE_CONFIRMATION_REQUIRED:<id>döndürür.talk.client.steer, istemcinin sahip olduğu gerçek zamanlı taşıma yöntemleri için etkin çalıştırma ses denetimi gönderir. Gateway,sessionKeyüzerinden etkin gömülü çalıştırmayı çözümler ve yönlendirmeyi sessizce yok saymak yerine yapılandırılmış bir kabul/ret sonucu döndürür.talk.event; gerçek zamanlı, transkripsiyon, STT/TTS, yönetilen oda, telefon ve toplantı bağdaştırıcıları için tek Talk olay kanalıdır.talk.speak, etkin Talk konuşma sağlayıcısı üzerinden konuşma sentezler.tts.status, TTS etkinlik durumunu, etkin sağlayıcıyı, yedek sağlayıcıları ve sağlayıcı yapılandırma durumunu döndürür.tts.providers, görünür TTS sağlayıcı envanterini döndürür.tts.enablevetts.disable, TTS tercihleri durumunu açıp kapatır.tts.setProvider, tercih edilen TTS sağlayıcısını günceller.tts.convert, tek seferlik metinden konuşmaya dönüştürme işlemi çalıştırır.tts.speak(operator.write), boş olmayantextdeğerini yapılandırılmış genel TTS sağlayıcı zinciriyle işler ve bir bütün klibi satır içi olarakaudioBase64biçiminde, ayrıcaproviderve isteğe bağlıoutputFormat,mimeTypevefileExtensionmeta verileriyle döndürür.tts.convertaksine Gateway'e yerel bir yol döndürmez;talk.speakaksine Talk sağlayıcısı gerektirmez.tts.maxTextLengthüzerindeki metinINVALID_REQUESTdöndürür; sentez hatalarıUNAVAILABLEdöndürür.
Gizli bilgiler, yapılandırma, güncelleme ve sihirbaz
secrets.reloadetkin SecretRef'leri yeniden çözümler ve sahip bilgisine duyarlı çalışma zamanı durumunu atomik olarak yayımlar. Uygun sahip hataları,warningCountile soğuk veya eski durum indirgemesi olarak yayımlanabilir; katı ya da eşlenmemiş hatalar yeniden yüklemeyi reddeder ve etkin anlık görüntüyü korur.secrets.resolvebelirli bir komut/hedef kümesi için komut hedefi gizli bilgi atamalarını çözümler.config.getdiskteki geçerli yapılandırma anlık görüntüsünü, ham kök dosyahash, çözümlenmişconfigRevisionHashve etkin Gateway çalışma zamanı tarafından kabul edilen çözümlenmiş revizyon için isteğe bağlıappliedConfigHashdeğerini döndürür.config.setdoğrulanmış bir yapılandırma yükü yazar.config.patchkısmi bir yapılandırma güncellemesini birleştirir. Yıkıcı dizi değiştirme işlemi, etkilenen yolunreplacePathsiçinde bulunmasını gerektirir; dizi girdileri altındaki iç içe diziler,agents.entries.*.skillsgibi[]yollarını kullanır.config.applytam yapılandırma yükünü doğrular ve değiştirir.config.schemaControl UI ve CLI araçları tarafından kullanılan canlı yapılandırma şeması yükünü döndürür: şema,uiHints, sürüm, oluşturma meta verileri ve yüklenebildiklerinde plugin + kanal şeması meta verileri. Eşleşen alan belgelendirmesi mevcut olduğunda iç içe nesne, joker karakter, dizi öğesi veanyOf/oneOf/allOfbileşim dalları da dahil olmak üzere, kullanıcı arayüzüyle aynı etiketlerden/yardım metninden alınantitle/descriptionmeta verilerini içerir.config.schema.lookuptek bir yapılandırma yolu için yol kapsamlı bir arama yükü döndürür: normalleştirilmiş yol, sığ bir şema düğümü, eşleşen ipucu +hintPath, isteğe bağlıreloadKindve UI/CLI ayrıntı incelemesi için doğrudan alt öğe özetleri.reloadKind,restart,hotveyanone(src/config/schema.ts) değerlerinden biridir ve istenen yol için Gateway yapılandırması yeniden yükleme planlayıcısını yansıtır. Arama şeması düğümleri, kullanıcıya yönelik belgeleri ve yaygın doğrulama alanlarını (title,description,type,enum,const,format,pattern, sayısal/dize/dizi/nesne sınırları,additionalProperties,deprecated,readOnly,writeOnly) korur. Alt öğe özetlerikey, normalleştirilmişpath,type,required,hasChildren, isteğe bağlıreloadKindve eşleşenhint/hintPathdeğerlerini sunar.update.runGateway güncelleme akışını çalıştırır ve yalnızca güncelleme başarılı olursa yeniden başlatma zamanlar; oturumu olan çağıranlarcontinuationMessagedeğerini ekleyebilir; böylece başlangıç, yeniden başlatma devam kuyruğu üzerinden bir takip ajan turunu sürdürür. Kontrol düzleminden yapılan paket yöneticisi güncellemeleri ve denetimli git çalışma kopyası güncellemeleri, canlı Gateway içinde paket ağacını değiştirmek veya çalışma kopyası/derleme çıktısını dönüştürmek yerine ayrılmış bir yönetilen hizmet devri kullanır. Başlatılmış bir devir,result.reason: "managed-service-handoff-started"vehandoff.status: "started"ileok: truedöndürür. Aynı Gateway işlemi tarafından ele alınan eşzamanlı ikinci birupdate.run,result.reason: "managed-service-handoff-already-running"vehandoff.status: "already-running"ileok: falsedöndürür; devam isteği kabul edilmez, böylece çağıran etkin güncelleme tamamlandıktan sonra yeniden deneyebilir. Bağımsız CLI güncelleyicileri ve yedek Gateway işlemleri bu işlem yerelindeki korumanın dışındadır. Kullanılamayan veya başarısız devirler,managed-service-handoff-unavailableya damanaged-service-handoff-failedileok: falseve manuel kabuk güncellemesi gerektiğinde ayrıcahandoff.commanddöndürür. Kullanılamaz durumu, OpenClaw'ın systemd içinOPENCLAW_SYSTEMD_UNITgibi güvenli bir gözetmen sınırına veya kalıcı hizmet kimliğine sahip olmadığı anlamına gelir. Başlatılmış bir devir sırasında yeniden başlatma işaretçisi kısa süreliğinestats.reason: "restart-health-pending"bildirebilir; devam işlemi, CLI yeniden başlatılan Gateway'i doğrulayıp nihaiokişaretçisini yazana kadar geciktirilir.update.status, mevcut olduğunda yeniden başlatma sonrası çalışan sürüm de dahil olmak üzere en son güncelleme yeniden başlatma işaretçisini yeniler ve döndürür.wizard.start,wizard.next,wizard.statusvewizard.cancel, ilk katılım sihirbazını WS RPC üzerinden sunar.
Ajan ve çalışma alanı yardımcıları
agents.list, etkin model/çalışma zamanı meta verileri ve isteğe bağlı anlamsalkind(agentveyasystem) dahil olmak üzere Gateway tarafından görülebilen ajan girdilerini döndürür. İstemciler, eksiksiz türlenmiş listeyi almak içinagent-kindel sıkışma yeteneğini bildirir; bunu desteklemeyen istemciler, sistem satırları içermeyen eski ve seçicide güvenle kullanılabilen listeyi korur. Tür bilgisine duyarlı istemciler,systemsatırlarını tanılama görünümlerinde tutarken sıradan seçicilerden hariç tutar. Eski v4 Gateway'ler,kindiçermeyen satırlar döndürebilir.agents.create,agents.updateveagents.delete, ajan kayıtlarını ve çalışma alanı bağlantılarını yönetir.agents.files.list,agents.files.getveagents.files.set, bir ajan için sunulan başlangıç çalışma alanı dosyalarını yönetir.audit.activity.list, sürümlendirilmiş yalnızca meta veri içeren etkinlik defterini döndürür;audit.listuyumluluk açısından güvenli çalıştırma/araç RPC'si olarak kalır.agents.workspace.listveagents.workspace.get(operator.read), Operatör kapsamları bölümünde açıklanan güvenilir operatör etki alanındaki istemciler için bir ajanın çalışma alanı dizinine salt okunur, sayfalandırılmış göz atma erişimi sunar. İstekler yalnızca çalışma alanına göreli yolları kabul eder; okumalar gerçek yolu çözümlenmiş çalışma alanı köküyle sınırlı kalır (sembolik bağlantı ve sabit bağlantı üzerinden kaçışlar reddedilir), boyut sınırına tabidir ve UTF-8 metin ile yaygın görüntü türleriyle (base64) sınırlıdır. Yanıtlar ana makinedeki çalışma alanı yolunu açığa çıkarmaz. Bu ad alanında yazma işlemi yoktur.tasks.list,tasks.getvetasks.cancel, Gateway görev defterini SDK ve operatör istemcilerine sunar. Aşağıdaki Görev defteri RPC'leri bölümüne bakın.artifacts.list,artifacts.getveartifacts.download, açık birsessionKey,runIdveyataskIdkapsamı için transkriptten türetilmiş yapıt özetlerini ve indirmeleri sunar. Çalıştırma ve görev sorguları, sahibi olan oturumu sunucu tarafında çözümler ve yalnızca eşleşen kökene sahip transkript medyasını döndürür; güvenli olmayan veya yerel URL kaynakları, sunucu tarafında getirilmek yerine desteklenmeyen indirmeler döndürür.environments.listveenvironments.status, Gateway'e yerel ortam ve Node ortamı keşfini korur. Yapılandırılmış bulut işçileri ve önceki profillerden kalan kalıcı kayıtlar;providerId, isteğe bağlıleaseId,state,ageMs, isteğe bağlıidleMsveattachedSessionIdsileworkermeta verilerini ekler. İşçi yaşam döngüsü durumlarırequested,provisioning,bootstrapping,ready,attached,idle,draining,destroying,destroyed,failedveorphanedşeklindedir.environments.create({ profileId, idempotencyKey }), yapılandırılmış bir plugin sağlayıcı profilinden bir işçi hazırlar; aynı anahtarla yapılan yeniden denemeler kalıcı işlemi yeniden kullanır.environments.destroy({ environmentId }), kalıcı bir işçi ortamının eş etkili olarak kaldırılmasını ister. Her ikisi deoperator.admingerektirir, kontrol düzlemi yazma işlemleridir ve durum yanıtlarında kullanılanla aynı ortam özeti biçimini döndürür.agent.identity.get, bir ajan veya oturum için etkin asistan kimliğini döndürür.agent.wait, bir çalıştırmanın tamamlanmasını bekler ve mevcut olduğunda son durum anlık görüntüsünü döndürür.
Oturum denetimi
sessions.list, bir agent çalışma zamanı arka ucu yapılandırıldığında satır başınaagentRuntimemeta verileri dâhil olmak üzere geçerli oturum dizinini döndürür. Bulut çalışanı yerleşimi etkinleştirildiğinde veya kalıcı kurtarma durumu mevcut olduğunda, oturum satırları ayrıca kapalı birplacementdurumu (local,requested,provisioning,syncing,starting,active,draining,reconciling,reclaimedveyafailed) ile duruma özgü ortam, sahip dönemi, çalışma alanı, paket, ACK imleci veya kurtarma alanlarını içerir.sessions.subscribevesessions.unsubscribe, geçerli WS istemcisi için oturum değişikliği olayı aboneliklerini açıp kapatır.sessions.messages.subscribevesessions.messages.unsubscribe, tek bir oturum için transkript/mesaj olayı aboneliklerini açıp kapatır. Kalıcı hedef kitlesi tam olarak bu oturumu içeren ve inceleyici bağlaması abone olan istemciyi yetkilendiren onaylara ait temizlenmişsession.approvalyaşam döngüsü olaylarını da almak içinincludeApprovals: trueiletin. Ardından abonelik yanıtı, sınırlandırılmış bekleyen birapprovalReplayiçerir;truncatedfalse olduğunda bu değer yetkili kaynaktır. Etkinleştirme her abonelik çağrısına özeldir ve kalıcı değildir: aynı oturumaincludeApprovals: trueolmadan yeniden abone olmak, mevcut onay aboneliğini kaldırır. Normal oturum okuma yetkisine ek olarak bu etkinleştirme, eşleştirilmiş bir cihazdaoperator.adminveyaoperator.approvalsgerektirir.sessions.preview, belirli oturum anahtarları için sınırlandırılmış transkript önizlemeleri döndürür.sessions.describe, tam bir oturum anahtarı için tek bir Gateway oturum satırı döndürür.sessions.resolve, bir oturum hedefini çözümler veya standartlaştırır.sessions.create, yeni bir oturum girdisi oluşturur. İsteğe bağlımodelvethinkingLeveldeğerleri, ilk model ve akıl yürütme geçersiz kılmalarını atomik olarak kalıcı hâle getirir.worktree: true, yönetilen bir çalışma ağacı hazırlar; isteğe bağlıworktreeBaseRef/worktreeName, temel referansı ve dal adını seçer;execNode(operator.admin) ise oturum yürütmesini bir Node ana makinesine bağlar. Oluşturulan çalışma ağacı sonuçta aynen döndürülür ve oturum satırında (worktree: { id, branch, repoRoot }) kalıcı hâle getirilir. Girdi oluşturulduğu hâlde iç içe geçmiş ilkchat.sendreddedildiğinde başarılı sonuç,runStarted: falseverunErroralanlarını içerir; istemciler istemi koruyup döndürülen oturum anahtarıyla yeniden deneyebilir.parentSessionKeyile birlikteemitCommandHooks: trueileten bir çağıran, ayrı bir alt öğenin yaşam döngüsü sonucunu da bildirmelidir:succeedsParent: true, üst öğeyisession_endile sonlandırırkenfalse, üst öğeyi etkin tutar ve yalnızca alt öğeninsession_startolayını yayar.succeedsParentdeğerinin belirtilmemesi, mevcut istemciler için eski üst öğe devretme davranışını korur. Sonuç hem üst öğe bağlantısı hem de komut kancaları gerektirir; bir çatallanma üst öğesini başarılı olarak sonuçlandıramaz. Ayrı bir alt öğe oluşturulmadığından ana oturumun yerinde sıfırlama davranışı değişmez. Yeni satırlar, güvenilir oluşturma bağlantı noktasından gelen ve yalnızca bir kez yazılabilen oluşturma kaynağı bilgileriyle (createdVia,createdActor,createdAt) damgalanır; mevcut bir anahtarı benimsemek bu bilgileri hiçbir zaman yeniden damgalamaz. İnsan profili aktörleri içincreatedActor.label, satır yansıtılırken geçerli kullanıcı profilinden çözümlenir ve oturum girdisinde hiçbir zaman depolanmaz; böylece profil yeniden adlandırmalarında sapma oluşmaz. Oturum satırları ayrıcaparentSessionKey(gezinme üst öğesi, kalıcı),controlOwnerSessionKey(canlıyken çalışma zamanı denetleyicisi),forkSource(çatallanmalar için tam kaynak anahtarı + transkript nesli) vepreviousSessionId(aynı anahtar altındaki önceki transkript nesli) alanlarını taşır.sessions.dispatch(operator.admin), oturuma ait yönetilen bir çalışma ağacı bulunan mevcut bir yerel OpenClaw oturumunu yapılandırılmış bir bulut çalışanı profiline taşır.{ key, profileId, agentId? }iletin. Hiçbir çalışan profili yapılandırılmadığında yöntem mevcut değildir; etkin işleri boşaltmadan önce yerel tur kabulünü kapatır ve yalnızca yerleşimactiveçalışan sahipliğine ulaştıktan sonra döner. Gönderim tek yönlüdür; çalışandan yerele geri çekme bu RPC'nin parçası değildir.sessions.groups.list,sessions.groups.put,sessions.groups.renamevesessions.groups.delete, Gateway'in sahip olduğu özel oturum grubu kataloğunu (adlar + görüntüleme sırası) yönetir. Üyelik, her oturumuncategoryalanında kalır; yeniden adlandırma ve silme işlemleri üye oturumları sunucu tarafında günceller.sessions.send, mevcut bir oturuma mesaj gönderir.sessions.steer, etkin bir oturum için kesme ve yönlendirme çeşididir.sessions.abort, bir oturumun etkin çalışmasını iptal eder.keyile isteğe bağlırunIddeğerini veya Gateway'in bir oturumla ilişkilendirebildiği etkin çalıştırmalar için yalnızcarunIddeğerini iletin.runIdsağlamak, iptali ilgili çalıştırmayla sınırlar. Yalnızca anahtar içeren, genel olmayan bir istekteclearQueued: truedeğerini ayarlayarak bu oturumun sahip olduğu takip ve hat kuyruklarını da atın.clearQueueddeğerini belirtmeyen mevcut çağıranlar bu kuyrukları korur. Değişmezglobalanahtarı, mevcut agent niteliklichat.abortsahiplik kurallarını korur ve genel olmayan takip ya da hat temizliği gerçekleştirmez.sessions.patch, oturum meta verilerini/geçersiz kılmalarını günceller ve çözümlenmiş standart model ile etkinagentRuntimedeğerini bildirir. Oluşturma kökeni (spawnedBy,spawnedWorkspaceDir,spawnedCwd,spawnDepth,subagentRole,subagentControlScope) artık herkese açık biçimde yamalanamaz; bu bilgiler güvenilir oluşturma yolları tarafından bir kez yazılır ve bunları hâlâ gönderen istekler reddedilir.sessions.reset,sessions.deletevesessions.compact, oturum bakımını gerçekleştirir.sessions.get, depolanan tam oturum satırını döndürür.- Sohbet yürütmesi hâlâ
chat.history,chat.send,chat.abortvechat.injectkullanır.chat.history, UI istemcileri için görüntüleme amacıyla normalleştirilir: satır içi yönerge etiketleri görünür metinden çıkarılır; düz metin araç çağrısı XML yükleri (<tool_call>...</tool_call>,<function_call>...</function_call>,<tool_calls>...</tool_calls>,<function_calls>...</function_calls>ve kesilmiş araç çağrısı blokları) ile sızmış ASCII/tam genişlikli model denetim belirteçleri çıkarılır; yalnızca sessiz belirteç içeren assistant satırları (tam olarakNO_REPLY/no_reply) atlanır ve aşırı büyük satırlar yer tutucularla değiştirilebilir. chat.message.get, görünür tek bir transkript girdisi için eklemeli, sınırlandırılmış tam mesaj okuyucusudur.sessionKey, oturum seçimi agent kapsamlı olduğunda isteğe bağlıagentIdve daha öncechat.historyüzerinden gösterilmiş bir transkriptmessageIddeğeri iletin; depolanan girdi hâlâ mevcutsa ve aşırı büyük değilse Gateway, hafif geçmiş kesme sınırı olmadan aynı görüntüleme için normalleştirilmiş yansıtmayı döndürür.chat.toolTitles, Control UI'da işlenen araç çağrıları için kısa amaç başlıkları döndürür (toplu, sınırlandırılmış girdilerle en fazla 24 öğe). Özellikgateway.controlUi.toolTitlesaracılığıyla etkinleştirilir (varsayılan olarak kapalıdır); devre dışı Gateway'ler, istemcilerin sormayı bırakması için{ titles: {}, disabled: true }yanıtını model çağrısı yapmadan verir. Etkinleştirildiğinde başlıklar standart yardımcı model yönlendirmesini kullanır: açıkça yapılandırılmış birutilityModel(tüm yardımcı görevlerde olduğu gibi, sınırlandırılmış görev içeriğini seçilen sağlayıcıya gönderebilecek bir operatör kararı), aksi takdirde dolaylı olarak yeni bir çıkış hedefi oluşmaması için oturum sağlayıcısının bildirdiği küçük model varsayılanı; boş birutilityModelise bunları tamamen devre dışı bırakır. Başlıklar hiçbir zaman birincil modele geri dönmez. Sonuçlar, araç adı + girdi anahtarıyla agent başına durum veritabanında önbelleğe alınır; böylece tekrarlanan görünümler aynı çağrıları yeniden ücretlendirmez.chat.send, otomatik kesme noktasından önce başlatılan model çağrılarında hızlı modu kullanmak, daha sonraki yeniden deneme, geri dönüş, araç sonucu veya devam çağrılarını ise hızlı mod olmadan başlatmak için tek turlukfastMode: "auto"değerini kabul eder. Kesme noktası varsayılan olarak 60 saniyedir (DEFAULT_FAST_MODE_AUTO_ON_SECONDS) ve model başınaagents.defaults.models["<provider>/<model>"].params.fastAutoOnSecondsile yapılandırılabilir. Birchat.sendçağıranı, bu istek için kesme noktasını geçersiz kılmak üzere tek turlukfastAutoOnSecondsiletebilir. Depolanan kuyruk modunu yalnızca bu istek için geçersiz kılmak üzerequeueMode(steer,followup,collectveyainterrupt) iletin; açık Control UI yönlendirme eylemleriqueueMode: "steer"kullanır. Etkileşimli istemciler, görüntüledikleri etkin transkript dalı yaprağıyla birlikteexpectedLeafEntryIdveya yetkili bir boş transkript içinnulliletebilir; başka bir istemci önce dalları değiştirdiyse Gateway, gönderimidetails.reason: "active-leaf-changed"ile reddeder.
Cihaz eşleştirme ve cihaz belirteçleri
device.pair.list, bekleyen ve onaylanmış eşleştirilmiş cihazları döndürür.device.pair.setupCode, bir mobil kurulum kodu ve varsayılan olarak PNG QR veri URL'si oluşturur.operator.admingerektirir ve kasıtlı olarak duyurulan keşif bilgilerinden çıkarılmıştır. Sonuç;setupCode, isteğe bağlıqrDataUrl,gatewayUrl, gizli olmayanauthetiketi veurlSourcealanlarını içerir.device.pair.approve,device.pair.rejectvedevice.pair.remove, cihaz eşleştirme kayıtlarını yönetir.device.pair.rename, istemcinin bildirdiği görüntüleme adına tercih edilen ve cihaz onarımından veya yeniden onaylanmasından sonra da korunan bir operatör etiketi ({ deviceId, label }) atar.device.token.rotate, eşleştirilmiş bir cihaz belirtecini onaylanmış rolü ve çağıran kapsamı sınırları içinde yeniler.device.token.revoke, eşleştirilmiş bir cihaz belirtecini onaylanmış rolü ve çağıran kapsamı sınırları içinde iptal eder.
Kurulum kodu, kısa ömürlü bir önyükleme kimlik bilgisi içerir. İstemciler bunu eşleştirme akışının ötesinde günlüğe kaydetmemeli veya kalıcı hâle getirmemelidir.
Node eşleştirme, çağırma ve bekleyen işler
node.pair.list,node.pair.approve,node.pair.rejectvenode.pair.remove, Node yetenek onaylarını kapsar.node.pair.requestvenode.pair.verify, bağımsız Node eşleştirme deposuyla birlikte 2026.7 sürümünde kaldırılmıştır; bekleyen istekler Node bağlantıları sırasında Gateway tarafından oluşturulur.node.listvenode.describe, bilinen/bağlı Node durumunu döndürür.node.rename, eşleştirilmiş bir Node etiketini günceller.node.invoke, bir komutu bağlı bir Node'a iletir.node.invoke.result, bir çağırma isteğinin sonucunu döndürür.mcp.tools.call.v1, yapılandırılmış, Node'a yerel bir MCP aracını çağırmaya yönelik başsız Node ana makinesi komutudur.node.invokeüzerinden taşınır, Node'un komutu bildirmesini gerektirir ve eşleştirme onayına vegateway.nodes.commands.denykoşuluna tabi olmaya devam eder.node.event, Node kaynaklı olayları Gateway'e geri taşır.node.pluginTools.update, bağlı Node'un agent tarafından görülebilen Plugin/MCP araç tanımlayıcılarını değiştirmeye yönelik tek yayımlama yoludur;connectparametreleri bunları taşımaz.node.pending.pullvenode.pending.ack, bağlı Node kuyruk API'leridir.node.pending.enqueuevenode.pending.drain, çevrimdışı/bağlantısı kesilmiş Node'lar için kalıcı bekleyen işleri yönetir.
Onay aileleri
approval.history, exec, plugin ve sistem aracısı istekleri için 30 gün boyunca tutulan, en yeniden en eskiye sıralanmış terminal onaylarını döndürür (kapsamoperator.approvals). İmleçli sayfalandırmayı ve isteğe bağlı bir tür filtresini destekler; bekleyen onaylar geçmiş satırları değildir.approval.getveapproval.resolve, türden bağımsız kalıcı onay yöntemleridir (kapsamoperator.approvals).approval.get, kararlı birurlPathile arındırılmış bekleyen veya tutulan terminal projeksiyonunu döndürür;approval.resolve, standart onay kimliğini, açık birkinddeğerini ve bir kararı kabul eder, ilk yanıtın kazandığı çözümlemeyi uygular ve her zaman kaydedilmiş standart sonucu döndürür.exec.approval.request,exec.approval.get,exec.approval.listveexec.approval.resolve, tek seferlik exec onay istekleri ile bekleyen onay aramasını/yeniden yürütmesini kapsar. Bunlar, aynı kalıcı onay kayıt defteri üzerindeki protokol sınırı bağdaştırıcılarıdır.exec.approval.waitDecision, bekleyen tek bir exec onayını bekler ve nihai kararı (veya zaman aşımındanull) döndürür.exec.approvals.getveexec.approvals.set, Gateway exec onay politikası anlık görüntülerini yönetir.exec.approvals.node.getveexec.approvals.node.set, Node aktarma komutları aracılığıyla Node'a yerel exec onay politikasını yönetir.plugin.approval.request,plugin.approval.list,plugin.approval.waitDecisionveplugin.approval.resolve, Plugin tarafından tanımlanan onay akışlarını kapsar.
Control UI komutları
ui.command, biroperator.writeçağırıcısınınui-commandsyeteneğini duyuran bağlı Control UI istemcilerine türü belirlenmiş yerleşim ve gezinme komutları göndermesine olanak tanır.- Komutlar; bölme panelini ayırma/kapatma/odaklama, kenar çubuğu görünürlüğü, terminal/tarayıcı paneli görünürlüğü ve sabitlemesi ile oturumlar arası gezinmeyi kapsar.
- Protokol v1, komutları kasıtlı olarak bağlı ve yetenekli tüm Control UI istemcilerine dağıtır. Hiçbiri bağlı değilse istek, yerleşim değişmiş gibi davranmak yerine
UNAVAILABLEile başarısız olur.
Otomasyon, Skills ve araçlar
- Otomasyon:
wake, hemen veya sonraki Heartbeat'te gerçekleştirilecek bir uyandırma metni eklemesi zamanlar;cron.get,cron.list,cron.status,cron.add,cron.update,cron.remove,cron.run,cron.runszamanlanmış işleri yönetir. cron.run, manuel çalıştırmalar için kuyruğa ekleme tarzı bir RPC olarak kalır. Tamamlanma semantiğine ihtiyaç duyan istemciler, döndürülenrunIddeğerini okumalı vecron.runsiçin yoklama yapmalıdır.cron.runs, istemcilerin aynı işe ait diğer geçmiş girdileriyle yarışmadan kuyruğa alınmış tek bir manuel çalıştırmayı takip edebilmesi için isteğe bağlı, boş olmayan birrunIdfiltresini kabul eder.- Skills ve araçlar:
commands.list,skills.*,tools.catalog,tools.effective,tools.invoke. Aşağıdaki Operatör yardımcı yöntemleri bölümüne bakın.
Yaygın olay aileleri
chat:chat.injectgibi UI sohbet güncellemeleri ve yalnızca döküme ait diğer sohbet olayları. Protokol v4'te fark yüklerideltaTexttaşır;messagebirikimli asistan anlık görüntüsü olarak kalır. Önek olmayan değiştirmelerreplace=truedeğerini ayarlar ve değiştirme metni olarakdeltaTextkullanır.session.message,session.operation,session.tool: abone olunan bir oturum için döküm, sürmekte olan oturum işlemi ve olay akışı güncellemeleri.session.approval: açıkça katılım sağlanan tam oturum abonesi için arındırılmış bekleyen ve terminal onay gerçeği. Alt onaylar kalıcı üst öğe kitlesini kullanır; olaylar dökümleri hiçbir zaman değiştirmez veya aracıları uyandırmaz.sessions.changed: oturum dizini veya meta verileri değişti.presence: sistem mevcudiyeti anlık görüntüsü güncellemeleri.tick: periyodik bağlantıyı sürdürme/canlılık olayı.health: Gateway sağlık durumu anlık görüntüsü güncellemesi.heartbeat: Heartbeat olay akışı güncellemesi.cron: Cron çalıştırma/iş değişikliği olayı.shutdown: Gateway kapanış bildirimi.node.pair.requested/node.pair.resolved: Node eşleştirme yaşam döngüsü.node.invoke.request: Node çağırma isteği yayını.device.pair.requested/device.pair.resolved: eşleştirilmiş cihaz yaşam döngüsü.voicewake.changed: uyandırma sözcüğü tetikleyici yapılandırması değişti.config.changed: bir yapılandırma yazımı kalıcılaştırıldı (yük; yapılandırma yolunu, yeni anlık görüntü karmasını ve bir zaman damgasını taşır — yapılandırma içeriğini asla taşımaz). Operatör okuma kapsamındadır; istemcilerconfig.getaracılığıyla yeniler.exec.approval.requested/exec.approval.resolved: exec onayı yaşam döngüsü.plugin.approval.requested/plugin.approval.resolved: Plugin onayı yaşam döngüsü.
Node yardımcı yöntemleri
Node'lar, otomatik izin kontrolleri için geçerli Skills yürütülebilirleri listesini
almak üzere skills.bins çağrısı yapabilir.
Denetim kayıt defteri RPC'si
audit.activity.list, operatör istemcilerine aracı çalıştırması, araç eylemi ve katılım gerektiren mesaj yaşam döngüsü
meta verilerinin kararlı, en yeniden en eskiye sıralanmış bir görünümünü sunar.
operator.read gerektirir. Sorgular 30 günden eski kayıtları hariç tutar ve paylaşılan
SQLite kayıt defteri 100.000 kayıtla sınırlıdır. Süresi dolan satırlar
Gateway başlangıcında, saatlik bakım sırasında ve sonraki yazmalarda silinir. Veri modeli ve gizlilik semantiği için
Denetim geçmişi bölümüne bakın.
- Parametreler: isteğe bağlı tam
agentId,sessionKeyveyarunId; isteğe bağlıkind("agent_run","tool_action"veya"message"); isteğe bağlıstatus("started","succeeded","failed","cancelled","timed_out","blocked"veya"unknown"); isteğe bağlı mesajdirection("inbound"veya"outbound") ve tamchannel; isteğe bağlı kapsayıcıafter/beforeUnix-milisaniye sınırları;1ile500arasında isteğe bağlılimit; ve önceki sayfadan isteğe bağlı dizecursor. - Sonuç:
{ "events": AuditActivityEventV1[], "nextCursor"?: string }.
Adlandırılmış V1 sonuç birleşimi; aracı çalıştırması, araç eylemi, gelen mesaj
ve giden mesaj için ayrı şemalara sahiptir. eventType ayrıştırıcısı sırasıyla
agent_run, tool_action, inbound_message veya outbound_message değeridir; kind ve
mesaj direction, filtreleme ve görüntüleme için kullanılabilir durumda kalır. Her olayda
tamsayı schemaVersion: 1 bulunur. Mesaj kimliği başvuruları tam olarak
hmac-sha256:v1:<32 hex key id>:<64 hex digest> biçimini kullanır; kanal-gönderen aktör
kimliği de aynı biçimi kullanır.
Tüm varyantlar eventType, schemaVersion, eventId, sequence,
sourceSequence, occurredAt, kind, action, status, actor ve
redaction gerektirir. Varyant alanları şunlardır:
eventType |
Zorunlu alanlar | İsteğe bağlı alanlar |
|---|---|---|
agent_run |
agentId, runId; kind: "agent_run" |
sessionKey, sessionId, errorCode |
tool_action |
agentId, runId; kind: "tool_action" |
sessionKey, sessionId, toolCallId, toolName, errorCode |
inbound_message |
direction: "inbound", channel, conversationKind, outcome |
agentId, runId, durationMs, resultCount, kimlik başvuruları, reasonCode, errorCode |
outbound_message |
direction: "outbound", channel, conversationKind, outcome |
agentId, runId, durationMs, resultCount, kimlik başvuruları, reasonCode, deliveryKind, failureStage, errorCode |
Kapalı mesaj numaralandırmaları şunlardır:
conversationKind:direct,group,channelveyaunknown.- Gelen
outcome:completed,skippedveyafailed; isteğe bağlıreasonCode:duplicate,reply_operation_active,reply_operation_aborted,fast_abort,plugin_bound_handled,plugin_bound_unavailable,plugin_bound_declined,plugin_bound_error,before_dispatch_handled,acp_dispatch_completed,acp_dispatch_failed,acp_dispatch_emptyveyaacp_dispatch_aborted. - Giden
outcome:sent,suppressed,failedveyaunknown; isteğe bağlıreasonCode:cancelled_by_message_sending_hook,cancelled_by_reply_payload_sending_hook,empty_after_message_sending_hook,empty_after_reply_payload_sending_hookveyano_visible_payload. Platform kimliği döndürmeyen bir bağdaştırıcı, harici yan etki çürütülemeyeceği içinunknowndeğerindedir. deliveryKind:text,mediaveyaother;failureStage:platform_send,queueveyaunknown.
Terminal alanları birbirleriyle ilişkilidir; birbirinden bağımsız olarak isteğe bağlı değildir:
| Varyant | Terminal eşlemesi |
|---|---|
| Aracı çalıştırması | started için errorCode bulunmaz; başarı dışındaki her tamamlanmış durum, eşleşen run_* kodunu gerektirir. |
| Araç eylemi | started ve başarılı durumda errorCode bulunmaz; tamamlanmış diğer her durum, eşleşen tool_* kodunu gerektirir. |
| Gelen mesaj | başarılı = completed; engellendi = skipped; başarısız = failed artı message_processing_failed. reasonCode mevcut olduğunda bu terminal ailesine ait olmalıdır. |
| Giden mesaj | başarılı = sent; engellendi = suppressed artı reasonCode; başarısız = failed artı errorCode ve failureStage; bilinmiyor = unknown artı failureStage. |
Her etkinlik olayı; kararlı bir olay kimliği, monoton kayıt defteri sırası,
kaynak olay sırası, zaman damgası, aktör, eylem, durum, tamsayı
schemaVersion: 1 ve redaction: "metadata_only" içerir. Çalıştırma ve araç kayıtları,
aracı ve çalıştırma kökenini gerektirir ve oturum kökenini içerebilir. Mesaj
kayıtları aracı ve çalıştırma kimliklerini içerebilir ancak kasıtlı olarak hiçbir zaman
sessionKey veya sessionId içermez; dolayısıyla sessionKey sorgu filtresi
yalnızca çalıştırma ve araç satırlarına uygulanır. Araç olayları, araç çağrısı kimliğini ve araç adını içerebilir.
İleti kayıtları message.inbound.processed veya
message.outbound.finished kullanır ve yön, kanal, konuşma türü,
normalleştirilmiş sonuç ve isteğe bağlı teslimat türü, hata aşaması, süre,
sonuç sayısı, neden kodu ile kuruluma özel anahtarlanmış
hesap/konuşma/ileti/hedef takma adlarını ekler. Bu takma adlar
korelasyona yardımcı olur ancak anonimleştirme sağlamaz: durum veritabanı bunların anahtarını
içerirken RPC ve CLI dışa aktarımları içermez. Defter; istemleri, ileti
gövdelerini, araç bağımsız değişkenlerini, araç sonuçlarını, komut çıktısını veya ham hata metnini depolamaz.
Çalıştırma/araç sessionKey değerleri ham korelasyon meta verileri olarak kalır ve
platform hesabı ya da eş kimliklerini içerebilir; ileti kayıtları oturum anahtarlarını içermez.
Gelen satırlarda durationMs, çekirdek dağıtımından terminaline kadar geçen süreyi ölçer ve
resultCount sonlandırılmış, kuyruğa alınmış araç, blok ve yanıt yüklerini sayar. Giden
satırlarda durationMs, teslimat sahipliğinden onay,
teslim edilemeyen ileti veya uzlaştırmaya kadar olan süreyi (kuyrukta bekleme süresi dâhil) kapsar ve resultCount
tanımlanmış fiziksel platform gönderimlerini sayar. deliveryKind, mevcut olduğunda,
kancalar ve işleme sonrasındaki etkin yükü açıklar; engellenmiş veya
çökme nedeniyle belirsiz satırlar bunu içermez.
Geçerli ileti kapsamı, çekirdek
dağıtımına ulaşan kabul edilmiş gelen iletileri ve çekirdekteki yinelenen/terminal sonuçlarını içerir. Giden kapsamı,
paylaşılan kalıcı teslimata ulaşan her özgün mantıksal yanıt yükü için
bir terminal satırı yazar; parçalara ayırma ve bağdaştırıcı yayılımı resultCount içinde birleştirilir. Kuyruğa alınmış,
yeniden denenebilir veya belirsiz gönderimler yalnızca onay, teslim edilemeyen
ileti veya uzlaştırma sonrasında kaydedilir. Bu paylaşılan
sınırları atlayan Plugin'e özel ve doğrudan gönderim yolları henüz kapsam dâhilinde değildir. Sınırlı çalışan kuyruğu azami gayretle çalışır
ve hata ya da doygunluk durumunda kayıtları düşürebilir; dolayısıyla bu yüzey
kayıpsız bir uyumluluk arşivi değildir.
Kayıt varsayılan olarak açıktır ve
audit.enabled tarafından denetlenir. İleti kaydı
ayrıca audit.messages tarafından denetlenir ve varsayılan değeri "off" olur. Kayıt
devre dışı bırakıldığında audit.activity.list, daha önce yazılan kayıtları
süreleri dolana kadar sunmaya devam eder.
Yayımlanan audit.list istek, sonuç ve AuditEvent şemaları
değişmeden kalır ve yalnızca aracı çalıştırma ve araç eylemi kayıtlarını döndürür. Yeni operatör
istemcileri, Gateway bunu duyurduğunda audit.activity.list çağrısını yapmalıdır. Eski
Gateway'ler, salt okuma kapsamlı bir isteğe unknown method: audit.activity.list veya yayımlanan sürümlerde
yetkilendirme yöntem aramasından önce gerçekleştiği için
missing scope: operator.admin bildirebilir. İkincisini yalnızca yöntem duyurulmamışsa
yöntemin bulunmaması olarak değerlendirin. Ardından istemci, yalnızca filtreleri ileti türü, yön veya kanal
desteği gerektirmiyorsa audit.list çağrısını yeniden deneyebilir.
Metin sorguları ve sınırlı JSON dışa aktarımları için openclaw audit kullanın.
Görev defteri RPC'leri
Operatör istemcileri, Gateway arka plan görev kayıtlarını
görev defteri RPC'leri (packages/gateway-protocol/src/schema/tasks.ts) aracılığıyla inceler ve iptal eder. Bunlar,
ham çalışma zamanı durumunu değil, temizlenmiş görev özetlerini döndürür.
tasks.list,operator.readgerektirir.- Parametreler: isteğe bağlı
status("queued","running","completed","failed","cancelled"veya"timed_out") ya da bu durumların bir dizisi, isteğe bağlıagentId, isteğe bağlısessionKey,1ile500arasında isteğe bağlılimitve isteğe bağlı dizecursor. - Sonuç:
{ "tasks": TaskSummary[], "nextCursor"?: string }.
- Parametreler: isteğe bağlı
tasks.get,operator.readgerektirir.- Parametreler:
{ "taskId": string }. - Sonuç:
{ "task": TaskSummary }. - Eksik görev kimlikleri, Gateway'in bulunamadı hata biçimini döndürür.
- Parametreler:
tasks.cancel,operator.writegerektirir.- Parametreler:
{ "taskId": string, "reason"?: string }. - Sonuç:
{ "found": boolean, "cancelled": boolean, "reason"?: string, "task"?: TaskSummary }. found, defterde eşleşen bir görev bulunup bulunmadığını bildirir.cancelled, çalışma zamanının iptali kabul edip etmediğini veya kaydedip kaydetmediğini bildirir.
- Parametreler:
TaskSummary; id, status ve şu isteğe bağlı meta verileri içerir: kind,
runtime, title, agentId, sessionKey, childSessionKey, ownerKey,
runId, taskId, flowId, parentTaskId, sourceId, zaman damgaları, ilerleme,
terminal özeti ve temizlenmiş hata metni. agentId, görevi yürüten aracıyı
tanımlar; sessionKey ve ownerKey, istekte bulunanın ve denetimin
bağlamını korur.
Operatör yardımcı yöntemleri
commands.list(operator.read), bir aracı için çalışma zamanı komut envanterini getirir.agentIdisteğe bağlıdır; varsayılan aracı çalışma alanını okumak için bunu belirtmeyin.scope, birincilnamedeğerinin hangi yüzeyi hedeflediğini denetler:text, baştaki/olmadan birincil metin komutu belirtecini döndürür;nativeve varsayılanbothyolu, mevcut olduğunda sağlayıcıya duyarlı yerel adları döndürür.textAliases,/modelve/mgibi tam eğik çizgi takma adlarını taşır.nativeName, mevcut olduğunda sağlayıcıya duyarlı yerel komut adını taşır.provideristeğe bağlıdır ve yalnızca yerel adlandırmayı ve yerel Plugin komutlarının kullanılabilirliğini etkiler.includeArgs=false, serileştirilmiş bağımsız değişken meta verilerini yanıttan çıkarır.
tools.catalog(operator.read), bir aracı için çalışma zamanı araç kataloğunu getirir. Yanıt, gruplandırılmış araçları ve kaynak meta verilerini içerir:source:coreveyapluginpluginId:source="plugin"olduğunda Plugin sahibioptional: bir Plugin aracının isteğe bağlı olup olmadığı
tools.effective(operator.read), bir oturum için çalışma zamanında etkin araç envanterini getirir.sessionKeygereklidir.- Gateway, çağıran tarafından sağlanan kimlik doğrulama veya teslimat bağlamını kabul etmek yerine güvenilir çalışma zamanı bağlamını sunucu tarafındaki oturumdan türetir.
- Yanıt; çekirdek, Plugin, kanal ve önceden keşfedilmiş MCP sunucu araçları dâhil olmak üzere etkin envanterin, sunucu tarafından türetilmiş oturum kapsamlı bir izdüşümüdür.
tools.effective, MCP için salt okunurdur: sıcak bir oturumun MCP kataloğunu son araç politikası üzerinden yansıtabilir ancak MCP çalışma zamanları oluşturmaz, aktarımlara bağlanmaz veyatools/listgöndermez. Eşleşen sıcak katalog yoksa yanıt,mcp-not-yet-connected,mcp-not-yet-listedveyamcp-stale-cataloggibi bir bildirim içerebilir.- Etkin araç girdileri
source="core",source="plugin",source="channel"veyasource="mcp"kullanır.
tools.invoke(operator.write), kullanılabilir bir aracı/tools/invokeile aynı Gateway politika yolu üzerinden çağırır.namegereklidir.args,sessionKey,agentId,confirmveidempotencyKeyisteğe bağlıdır.- Hem
sessionKeyhem deagentIdmevcutsa çözümlenen oturum aracısıagentIdile eşleşmelidir. cron,gatewayvenodesgibi yalnızca sahip kullanımına açık çekirdek sarmalayıcıları,tools.invokedeğerinin kendisioperator.writeolsa bile sahip/yönetici kimliği (operator.admin) gerektirir.- Yanıt;
ok,toolName, isteğe bağlıoutputve türü belirlenmişerroralanlarını içeren, SDK'ya yönelik bir zarftır. Onay veya politika retleri, Gateway araç politikası işlem hattını atlamak yerine yük içindeok:falsedöndürür.
skills.status(operator.read), bir aracı için görünür Skills envanterini getirir.agentIdisteğe bağlıdır; varsayılan aracı çalışma alanını okumak için bunu belirtmeyin.- Yanıt; ham gizli değerleri açığa çıkarmadan uygunluk durumunu, eksik gereksinimleri, yapılandırma denetimlerini ve temizlenmiş kurulum seçeneklerini içerir.
skills.searchveskills.detail(operator.read), ClawHub keşif meta verilerini döndürür.skills.upload.begin,skills.upload.chunkveskills.upload.commit(operator.admin), özel bir Skills arşivini kurmadan önce hazırlar. Bu, güvenilir istemciler için ayrı bir yönetici yükleme yoludur; normal ClawHub Skills kurulum akışı değildir veskills.install.allowUploadedArchivesetkinleştirilmedikçe varsayılan olarak devre dışıdır.skills.upload.begin({ kind: "skill-archive", slug, sizeBytes, sha256?, force?, idempotencyKey? }), bu kısa ada ve zorlama değerine bağlı bir yükleme oluşturur.skills.upload.chunk({ uploadId, offset, dataBase64 }), baytları tam olarak kodu çözülmüş uzaklığa ekler.skills.upload.commit({ uploadId, sha256? }), son boyutu ve SHA-256 değerini doğrular. Tamamlama yalnızca yüklemeyi kesinleştirir; Skills'i kurmaz.- Yüklenen Skills arşivleri,
SKILL.mdkökünü içeren zip arşivleridir. Arşivin iç dizin adı hiçbir zaman kurulum hedefini seçmez.
skills.install(operator.admin) üç moda sahiptir:- ClawHub modu:
{ source: "clawhub", slug, version?, force? }, bir Skills klasörünü varsayılan aracı çalışma alanınınskills/dizinine kurar. - Yükleme modu:
{ source: "upload", uploadId, slug, force?, sha256?, timeoutMs? }, tamamlanmış bir yüklemeyi varsayılan aracı çalışma alanınınskills/<slug>dizinine kurar. Kısa ad ve zorlama değeri, özgünskills.upload.beginisteğiyle eşleşmelidir.skills.install.allowUploadedArchivesetkinleştirilmedikçe reddedilir; bu ayar ClawHub kurulumlarını etkilemez. - Gateway yükleyici modu:
{ name, installId, timeoutMs? }, Gateway ana makinesinde bildirilmiş birmetadata.openclaw.installeylemini çalıştırır. Eski istemciler hâlâdangerouslyForceUnsafeInstallgönderebilir; bu alan kullanımdan kaldırılmıştır, yalnızca protokol uyumluluğu için kabul edilir ve yok sayılır. Operatörün sahip olduğu kurulum kararları içinsecurity.installPolicykullanın.
- ClawHub modu:
skills.update(operator.admin) iki moda sahiptir:- ClawHub modu, izlenen tek bir kısa adı veya varsayılan aracı çalışma alanındaki tüm izlenen ClawHub kurulumlarını günceller.
- Yapılandırma modu,
enabled,apiKeyveenvgibiskills.entries.<skillKey>değerlerine yama uygular.
models.list görünümleri
models.list, isteğe bağlı bir view parametresini
(src/agents/model-catalog-visibility.ts) kabul eder:
- Belirtilmemiş veya
"default":agents.defaults.modelPolicy.allowyapılandırılmışsa yanıt,provider/*girdileri için dinamik olarak keşfedilen modeller dâhil olmak üzere izin verilen katalogdur. Aksi takdirde yanıt, tam Gateway kataloğudur. "configured": seçici boyutunda davranış.agents.defaults.modelPolicy.allowyapılandırılmışsaprovider/*girdileri için sağlayıcı kapsamlı keşif dâhil olmak üzere yine önceliklidir. İzin verilenler listesi olmadan yanıt, açıkmodels.providers.<provider>.modelsgirdilerini kullanır ve yalnızca yapılandırılmış model satırı yoksa tam kataloğa geri döner."provider-config": seçici izin verilenler listelerinden bağımsız, kaynakta tanımlanmışmodels.providers.*.modelsenvanteri. Satırlar genel model yeteneklerini ve rotaya duyarlı kullanılabilirliği içerir ancak sağlayıcı uç noktalarını, kimlik doğrulama malzemesini ve çalışma zamanı istek yapılandırmasını içermez."all":agents.defaults.modelPolicy.allowatlanarak tam Gateway kataloğu. Normal model seçicileri için değil, tanılama/keşif kullanıcı arayüzleri için kullanın.
Yürütme onayları
- Bir exec isteği onay gerektirdiğinde Gateway şunu yayınlar:
exec.approval.requested. - Operatör istemcileri
exec.approval.resolveçağrısını yaparak çözümler (şunu gerektirir:operator.approvals). host=nodeiçinexec.approval.request,systemRunPlaniçermelidir (standartargv/cwd/rawCommand/oturum meta verileri).systemRunPlaniçermeyen istekler reddedilir.- Onaydan sonra iletilen
node.invoke system.runçağrıları, yetkili komut/cwd/oturum bağlamı olarak bu standartsystemRunPlandeğerini yeniden kullanır. - Bir çağıran, hazırlama ile onaylanan nihai
system.runiletimi arasındacommand,rawCommand,cwd,agentIdveyasessionKeydeğerini değiştirirse Gateway, değiştirilmiş yüke güvenmek yerine çalıştırmayı reddeder.
Ajan teslimi için geri dönüş
agentistekleri, giden teslimat istemek içindeliver=trueiçerebilir.bestEffortDeliver=false(varsayılan) katı davranışı korur: çözümlenemeyen veya yalnızca dahili teslimat hedefleriINVALID_REQUESTdöndürür.bestEffortDeliver=true, harici bir teslimat rotası çözümlenemediğinde (örneğin dahili/webchat oturumları veya belirsiz çok kanallı yapılandırmalar) yalnızca oturumda yürütmeye geri dönüşe izin verir.- Nihai
agentsonuçları, teslimat istendiğindeopenclaw agent --json --deliveriçin belgelenen aynısent,suppressed,partial_failedvefaileddurumlarını kullanarakresult.deliveryStatusiçerebilir.
Sürüm yönetimi
PROTOCOL_VERSION,MIN_CLIENT_PROTOCOL_VERSION,MIN_NODE_PROTOCOL_VERSIONveMIN_PROBE_PROTOCOL_VERSION,packages/gateway-protocol/src/version.tsiçinde bulunur.- İstemciler
minProtocol+maxProtocolgönderir. Operatör ve kullanıcı arayüzü istemcileri, bu aralıkta geçerli protokolü içermelidir; mevcut istemciler ve sunucular v4 protokolünü çalıştırır. - Hem
role: "node"hem declient.mode: "node"kullanan kimliği doğrulanmış istemciler, N-1 Node protokolünü (şu anda v3) kullanabilir. Hafif yeniden başlatma sondaları aynı N-1 aralığını kullanır. Cihaz kimlik doğrulaması, eşleştirme, kapsamlar, komut politikası ve exec onayları bu uyumluluk aralığından etkilenmez. Plugin tarafından yönetilen Node yetenekleri ve komutları, barındırılan yüzeyleri N-1 sözleşmesinin parçası olmadığından Node geçerli protokole yükseltilene kadar sunulmaz. - Şemalar ve modeller TypeBox tanımlarından oluşturulur:
pnpm protocol:genpnpm protocol:gen:swiftpnpm protocol:check
İstemci sabitleri
Referans istemci uygulaması packages/gateway-client/src/ içinde bulunur
(OpenClaw bunu ince src/gateway/client.ts cephesi üzerinden sarmalar). Bu
varsayılanlar v4 protokolü genelinde kararlıdır ve üçüncü taraf istemciler için
beklenen temel değerlerdir.
| Sabit | Varsayılan | Kaynak |
|---|---|---|
PROTOCOL_VERSION |
4 |
packages/gateway-protocol/src/version.ts |
MIN_CLIENT_PROTOCOL_VERSION |
4 |
packages/gateway-protocol/src/version.ts |
MIN_NODE_PROTOCOL_VERSION |
3 |
packages/gateway-protocol/src/version.ts |
MIN_PROBE_PROTOCOL_VERSION |
3 |
packages/gateway-protocol/src/version.ts |
| İstek zaman aşımı (RPC başına) | 30_000 ms |
packages/gateway-client/src/client.ts (requestTimeoutMs) |
| Ön kimlik doğrulama / bağlantı sınaması zaman aşımı | 15_000 ms |
packages/gateway-client/src/timeouts.ts (OPENCLAW_HANDSHAKE_TIMEOUT_MS ortam değişkeni eşleştirilmiş sunucu/istemci bütçesini artırabilir) |
| İlk yeniden bağlanma geri çekilmesi | 1_000 ms |
packages/gateway-client/src/client.ts (GATEWAY_RECONNECT_POLICY) |
| Azami yeniden bağlanma geri çekilmesi | 30_000 ms |
packages/gateway-client/src/client.ts (GATEWAY_RECONNECT_POLICY) |
| Cihaz belirteci kapanışından sonraki hızlı yeniden deneme sınırlaması | 250 ms |
packages/gateway-client/src/client.ts |
terminate() öncesi zorla durdurma ek süresi |
250 ms |
FORCE_STOP_TERMINATE_GRACE_MS |
stopAndWait() varsayılan zaman aşımı |
1_000 ms |
STOP_AND_WAIT_TIMEOUT_MS |
Varsayılan tik aralığı (hello-ok öncesi) |
30_000 ms |
packages/gateway-client/src/client.ts |
| Tik zaman aşımı nedeniyle kapanma | sessizlik tickIntervalMs * 2 değerini aştığında kod 4000 |
packages/gateway-client/src/client.ts |
MAX_PAYLOAD_BYTES |
25 * 1024 * 1024 (25 MB) |
src/gateway/server-constants.ts |
Sunucu, etkin policy.tickIntervalMs, policy.maxPayload ve
policy.maxBufferedBytes değerlerini hello-ok içinde bildirir; istemciler
el sıkışma öncesi varsayılanlar yerine bu değerlere uymalıdır.
Referans istemci, bekleyen her isteğin bir son tarihi olduğunda sonlu isteklerin
yapılandırılmış son tarihlerini kendilerinin yönetmesine izin verir. Sonlu bir
timeoutMs olmadan yapılan expectFinal isteği, timeoutMs: null
içeren herhangi bir istek veya sonlu ve sınırsız isteklerin bir karışımı, tik
gözetleyicisini etkin tutar. Gelen olaylar ve yanıtlar tik zaman aşımı eşiğinden
daha uzun süre sessiz kalırsa istemci soketi 4000 koduyla kapatır,
bekleyen tüm istekleri reddeder ve yeniden bağlanır. Reddedilen istekleri yeniden
bağlandıktan sonra tekrar yürütmez.
Kimlik doğrulama
- Paylaşılan gizli anahtarlı Gateway kimlik doğrulaması, yapılandırılmış
gateway.auth.modedeğerine ("none" | "token" | "password" | "trusted-proxy") bağlı olarakconnect.params.auth.tokenveyaconnect.params.auth.passwordkullanır. - Tailscale Serve (
gateway.auth.allowTailscale: true) veya loopback olmayangateway.auth.mode: "trusted-proxy"gibi kimlik taşıyan modlar, bağlantı kimlik doğrulaması denetiminiconnect.params.auth.*yerine istek üstbilgilerinden karşılar. - Özel giriş
gateway.auth.mode: "none", paylaşılan gizli anahtarlı bağlantı kimlik doğrulamasını tamamen atlar; bu modu genel/güvenilmeyen girişlerde kullanıma açmayın. - Eşleştirmeden sonra Gateway, bağlantı rolü + kapsamlarla sınırlandırılmış
ve
hello-ok.auth.deviceTokeniçinde döndürülen bir cihaz belirteci verir. İstemciler, her başarılı bağlantıdan sonra bunu kalıcı olarak saklamalıdır. - Saklanan cihaz belirteciyle yeniden bağlanırken, bu belirteç için saklanan onaylı kapsam kümesi de yeniden kullanılmalıdır. Bu, daha önce verilmiş okuma/yoklama/durum erişimini korur ve yeniden bağlantıların sessizce yalnızca yöneticiye özgü daha dar bir örtük kapsama indirgenmesini önler.
- İstemci tarafı bağlantı kimlik doğrulaması oluşturma işlemi
(
packages/gateway-client/src/client.tsiçindekiselectConnectAuth):auth.passwordbağımsızdır ve ayarlandığında her zaman iletilir.auth.tokenşu öncelik sırasıyla doldurulur: önce açıkça belirtilen paylaşılan belirteç, ardından açıkça belirtilendeviceToken, son olarak cihaz başına saklanan belirteç (deviceId+roleile anahtarlanır).auth.bootstrapTokenyalnızca yukarıdakilerin hiçbiriauth.tokendeğerini çözümlemediğinde gönderilir. Paylaşılan bir belirteç veya çözümlemiş herhangi bir cihaz belirteci bunu engeller.- Tek seferlik
AUTH_TOKEN_MISMATCHyeniden denemesinde saklanan bir cihaz belirtecinin otomatik olarak yükseltilmesi yalnızca güvenilir uç noktalarla sınırlandırılmıştır: loopback veya sabitlenmiş birtlsFingerprintilewss://. Sabitleme olmadan genelwss://uygun değildir.
- Yerleşik kurulum kodu önyüklemesi, güvenilir mobil aktarım için birincil
Node
hello-ok.auth.deviceTokendeğerini vehello-ok.auth.deviceTokensiçinde sınırlandırılmış bir operatör belirtecini döndürür. Operatör belirteci, yerel Talk yapılandırma okumaları içinoperator.talk.secretskapsamını içerir ancak eşleştirme değişikliği kapsamlarını veoperator.adminkapsamını içermez. - Temel olmayan bir kurulum kodu önyüklemesi onay beklerken,
PAIRING_REQUIREDayrıntılarırecommendedNextStep: "wait_then_retry",retryable: truevepauseReconnect: falsedeğerlerini içerir. İstek onaylanana veya belirteç geçersiz hâle gelene kadar aynı önyükleme belirteciyle yeniden bağlanmayı sürdürün. hello-ok.auth.deviceTokensdeğerini yalnızca bağlantı,wss://veya loopback/yerel eşleştirme gibi güvenilir bir aktarımda önyükleme kimlik doğrulamasını kullandıysa kalıcı olarak saklayın.- Bir istemci açıkça
deviceTokenveyascopessağlarsa, çağrıyı yapanın istediği bu kapsam kümesi belirleyici olmaya devam eder; önbelleğe alınmış kapsamlar yalnızca istemci, cihaz başına saklanan belirteci yeniden kullanırken yeniden kullanılır. - Cihaz belirteçleri
device.token.rotatevedevice.token.revokearacılığıyla döndürülebilir/iptal edilebilir (operator.pairinggerektirir). Bir Node veya operatör dışındaki başka bir rolün döndürülmesi ya da iptal edilmesi ayrıcaoperator.admingerektirir. device.token.rotate, döndürme meta verilerini döndürür. Yedek taşıyıcı belirteci yalnızca aynı cihazdan gelen ve hâlihazırda bu cihaz belirteciyle kimliği doğrulanmış çağrılarda yineler; böylece yalnızca belirteç kullanan istemciler yeniden bağlanmadan önce yedek belirteçlerini kalıcı olarak saklayabilir. Paylaşılan/yönetici döndürmeleri taşıyıcı belirteci yinelemez.- Belirteç verme, döndürme ve iptal etme işlemleri, ilgili cihazın eşleştirme girdisinde kayıtlı onaylanmış rol kümesiyle sınırlı kalır; belirteç değişikliği, eşleştirme onayının hiç vermediği bir cihaz rolünü genişletemez veya hedefleyemez.
- Eşleştirilmiş cihaz belirteci oturumlarında, çağrıyı yapan ayrıca
operator.adminkapsamına sahip değilse cihaz yönetimi kendi cihazıyla sınırlıdır: yönetici olmayan çağrıcılar yalnızca kendi cihaz girdilerindeki operatör belirtecini yönetebilir. Node ve operatör dışındaki diğer belirteçlerin yönetimi, çağrıyı yapanın kendi cihazında bile yalnızca yöneticilere açıktır. device.token.rotatevedevice.token.revoke, hedef operatör belirtecinin kapsam kümesini çağrıyı yapanın mevcut oturum kapsamlarına göre de denetler. Yönetici olmayan çağrıcılar, hâlihazırda sahip olduklarından daha geniş bir operatör belirtecini döndüremez veya iptal edemez.- Kimlik doğrulama hataları,
error.details.codeile birlikte kurtarma ipuçlarını içerir:error.details.canRetryWithDeviceToken(boole)error.details.recommendedNextStep:retry_with_device_token,update_auth_configuration,update_auth_credentials,wait_then_retry,review_auth_configurationdeğerlerinden biri (packages/gateway-protocol/src/connect-error-details.ts).
AUTH_TOKEN_MISMATCHiçin istemci davranışı:- Güvenilir istemciler, önbelleğe alınmış cihaz başına belirteçle sınırlandırılmış tek bir yeniden deneme girişiminde bulunabilir.
- Bu yeniden deneme başarısız olursa otomatik yeniden bağlantı döngülerini durdurun ve operatör eylemi yönergelerini gösterin.
AUTH_SCOPE_MISMATCH, cihaz belirtecinin tanındığı ancak istenen rolü/kapsamları karşılamadığı anlamına gelir. Bunu hatalı bir belirteç olarak sunmayın; operatörden yeniden eşleştirme yapmasını veya daha dar/geniş kapsam sözleşmesini onaylamasını isteyin.
Cihaz kimliği ve eşleştirme
- Node'lar, bir anahtar çifti parmak izinden türetilen kararlı bir cihaz kimliği
(
device.id) içermelidir. - Gateway'ler cihaz + rol başına belirteç verir.
- Yerel otomatik onay etkinleştirilmedikçe yeni cihaz kimlikleri için eşleştirme onayı gerekir.
- Eşleştirme otomatik onayı, doğrudan yerel loopback bağlantılarını temel alır.
- OpenClaw ayrıca güvenilir, paylaşılan gizli anahtarlı yardımcı akışlar için dar kapsamlı bir arka uç/kapsayıcı içi kendi kendine bağlantı yoluna sahiptir.
- Aynı ana makinedeki tailnet veya LAN bağlantıları yine de eşleştirme açısından uzak kabul edilir ve onay gerektirir.
- WS istemcileri normalde
connectsırasındadevicekimliğini içerir (operatör + Node). Cihazsız operatör için tek istisnalar, açıkça belirtilmiş güven yollarıdır:- başarılı
gateway.auth.mode: "trusted-proxy"operatör Control UI kimlik doğrulaması. - ayrılmış dahili yardımcı yoldaki doğrudan loopback
gateway-clientarka uç RPC'leri.
- başarılı
- Cihaz kimliğinin atlanmasının kapsam sonuçları vardır. Açıkça belirtilmiş bir
güven yolu üzerinden cihazsız operatör bağlantısına izin verildiğinde OpenClaw,
söz konusu yolun adlandırılmış bir kapsam koruma istisnası olmadığı sürece,
istemcinin kendi bildirdiği kapsamları yine boş kümeye temizler. Kapsamla
sınırlandırılmış yöntemler daha sonra
missing scopeile başarısız olur. - Ayrılmış doğrudan loopback
gateway-clientarka uç yardımcı yolu, kapsamları yalnızca dahili yerel kontrol düzlemi RPC'leri için korur; özel arka uç kimlikleri bu istisnadan yararlanmaz. - Tüm bağlantılar, sunucunun sağladığı
connect.challengetek kullanımlık değerini imzalamalıdır.
Cihaz kimlik doğrulaması geçiş tanılamaları
Hâlâ doğrulama isteği öncesi imzalama davranışını kullanan eski istemciler için
connect, kararlı bir error.details.reason ile error.details.code altında
DEVICE_AUTH_* ayrıntı kodlarını döndürür.
Yaygın geçiş hataları:
| İleti | details.code | details.reason | Anlamı |
|---|---|---|---|
device nonce required |
DEVICE_AUTH_NONCE_REQUIRED |
device-nonce-missing |
İstemci device.nonce değerini atladı (veya boş gönderdi). |
device nonce mismatch |
DEVICE_AUTH_NONCE_MISMATCH |
device-nonce-mismatch |
İstemci eski/yanlış bir tek kullanımlık değerle imzaladı. |
device signature invalid |
DEVICE_AUTH_SIGNATURE_INVALID |
device-signature |
İmza yükü v2 yüküyle eşleşmiyor. |
device signature expired |
DEVICE_AUTH_SIGNATURE_EXPIRED |
device-signature-stale |
İmzalanan zaman damgası izin verilen sapmanın dışında. |
device identity mismatch |
DEVICE_AUTH_DEVICE_ID_MISMATCH |
device-id-mismatch |
device.id, genel anahtar parmak iziyle eşleşmiyor. |
device public key invalid |
DEVICE_AUTH_PUBLIC_KEY_INVALID |
device-public-key |
Genel anahtar biçimi/standartlaştırması başarısız oldu. |
Geçiş hedefi:
- Her zaman
connect.challengedeğerini bekleyin. - Sunucu tek kullanımlık değerini içeren v2 yükünü imzalayın.
- Aynı tek kullanımlık değeri
connect.params.device.nonceiçinde gönderin. - Tercih edilen imza yükü
v3değeridir (packages/gateway-client/src/device-auth.tsiçindekibuildDeviceAuthPayloadV3); bu yük, cihaz/istemci/rol/ kapsamlar/belirteç/tek kullanımlık değer alanlarına ek olarakplatformvedeviceFamilydeğerlerini bağlar. - Eski
v2imzaları uyumluluk amacıyla kabul edilmeye devam eder ancak eşleştirilmiş cihaz meta verisi sabitlemesi, yeniden bağlantıda komut politikasını denetlemeyi sürdürür.
TLS ve sabitleme
- WS bağlantıları için TLS desteklenir (
gateway.tlsyapılandırması). - İstemciler isteğe bağlı olarak Gateway sertifikası parmak izini
gateway.remote.tlsFingerprintveya CLI--tls-fingerprintaracılığıyla sabitleyebilir.
Kapsam
Bu protokol; durum, kanallar, modeller, sohbet, ajan, oturumlar, Node'lar,
onaylar ve daha fazlası dâhil olmak üzere Gateway API'sinin tamamını kullanıma
açar. Kesin yüzey, packages/gateway-protocol/src/schema.ts üzerinden yeniden dışa aktarılan TypeBox
şemalarıyla tanımlanır.