返回

04. OpenClaw Gateway Temel Kavramları

OpenClaw Gateway'in temel mimarisini derinlemesine anlayın. Bu makale, Session oturum modeli, Message Router mesaj yönlendirme, Tool Registry araç kaydı, Skills beceri sistemi, WebSocket protokolü gibi temel kavramları ayrıntılı olarak açıklar ve geliştiricilerin ileri düzey yapılandırma ve sorun giderme yeteneklerini kazanmasına yardımcı olur.

OpenClaw v2026.2 için geçerlidir | Bu makale, temel yapılandırmayı tamamlamış ve mimariyi derinlemesine anlamak isteyen kullanıcılar için uygundur. İlk 3 eğitimin tamamlanması önerilir.

TL;DR: Gateway, OpenClaw’ın temel kontrol düzlemidir. Session, konuşma bağlam kapsayıcısıdır (main/channel/group), Message Router mesaj yönlendirmesini belirler, Tool Registry araç yetkilerini yönetir, Skills önceden paketlenmiş yetenek genişletmeleridir. WebSocket uç noktası ws://127.0.0.1:18789/ws, yaygın komutlar openclaw gateway/doctor/config. Bu kavramları anlamak, ileri düzey yapılandırmanın temelidir.

Mimari Genel Bakış

Genel Mimari

flowchart TB
    subgraph Clients["İstemci Katmanı"]
        WA[WhatsApp]
        TG[Telegram]
        DC[Discord]
        SL[Slack]
        WC[WebChat]
        CLI[CLI]
        MAC[macOS App]
        IOS[iOS Node]
        AND[Android Node]
    end
    
    subgraph Gateway["Gateway Katmanı"]
        WS[WebSocket Sunucusu]
        HTTP[HTTP Sunucusu]
        MR[Mesaj Yönlendiricisi]
        SM[Oturum Yöneticisi]
        TR[Araç Kaydı]
        EM[Olay Yöneticisi]
        CFG[Yapılandırma Deposu]
    end
    
    subgraph Agent["Agent Katmanı"]
        PI[Pi Agent]
        PROMPT[Prompt Motoru]
        TOOLS[Araç Yürütücüsü]
        SKILLS[Beceri Yöneticisi]
    end
    
    subgraph External["Harici Servisler"]
        FS[Dosya Sistemi]
        BR[Tarayıcı]
        API[API Servisleri]
        DB[Veritabanı]
        CAL[Cron Zamanlayıcı]
    end
    
    Clients --> WS
    Clients --> HTTP
    WS --> MR
    HTTP --> MR
    MR --> SM
    SM --> PI
    PI --> PROMPT
    PI --> TOOLS
    PI --> SKILLS
    TOOLS --> TR
    TR --> External
    EM --> MR
    CFG --> SM
    CFG --> TR

Bileşen Görevleri

Bileşen Görev Temel Yetenek
WebSocket Sunucusu İstemci bağlantı yönetimi Bağlantı sürdürme, kalp atışı algılama, mesaj gönderme/alma
HTTP Sunucusu REST API ve statik kaynaklar Web UI, sağlık kontrolü, yapılandırma arayüzü
Mesaj Yönlendiricisi Mesaj yönlendirme ve dağıtım Kanal tanıma, oturum eşleme, mesaj iletimi
Oturum Yöneticisi Oturum yaşam döngüsü yönetimi Oluşturma, geri yükleme, sıkıştırma, temizleme
Araç Kaydı Araç kayıt ve çağırma Araç keşfi, yetki kontrolü, yürütme sandbox’u
Olay Yöneticisi Olay dağıtım ve abonelik Webhook, Cron, dahili olaylar
Yapılandırma Deposu Yapılandırma kalıcılığı Canlı güncelleme, sürüm yönetimi, yedekleme geri yükleme

Veri Akışı

sequenceDiagram
    participant U as Kullanıcı
    participant C as Kanal
    participant WS as WebSocket
    participant MR as Yönlendirici
    participant SM as Oturum
    participant A as Agent
    participant T as Araçlar
    
    U->>C: Mesaj gönder
    C->>WS: Mesaj gönder
    WS->>MR: Yönlendirme isteği
    MR->>SM: Oturumu bul/oluştur
    SM-->>MR: Oturumu döndür
    MR->>A: Mesajı ilet
    A->>A: Mesajı işle
    A->>T: Araç çağır (isteğe bağlı)
    T-->>A: Sonucu döndür
    A-->>MR: Yanıt oluştur
    MR->>WS: Yanıt gönder
    WS->>C: Yanıtı gönder
    C-->>U: Mesajı göster

Session Oturum Modeli

Session Nedir?

Session, OpenClaw’daki en temel kavramlardan biridir. Her Session bağımsız bir konuşma bağlamını temsil eder ve şunları içerir:

Bileşen Açıklama
Mesaj Geçmişi Tam konuşma kaydı
Bağlam Durumu Mevcut görev, geçici değişkenler
Yapılandırma Model, düşünme seviyesi, sandbox ayarları
Meta Veriler Oluşturma zamanı, Token istatistikleri, ilişkili kanallar

Session Türleri

{
  "sessions": {
    "main": {
      "type": "main",
      "model": "anthropic/claude-opus-4-6",
      "thinkingLevel": "high",
      "channel": null,
      "created": "2026-02-26T10:00:00Z"
    },
    "telegram:user:123456789": {
      "type": "channel",
      "model": "anthropic/claude-opus-4-6",
      "thinkingLevel": "normal",
      "channel": "telegram",
      "sender": "123456789",
      "created": "2026-02-26T10:05:00Z"
    },
    "telegram:group:-100123456789": {
      "type": "group",
      "model": "anthropic/claude-sonnet-4",
      "thinkingLevel": "minimal",
      "channel": "telegram",
      "groupId": "-100123456789",
      "created": "2026-02-26T10:10:00Z"
    }
  }
}
Tür Session ID Formatı Açıklama
main main Varsayılan ana oturum, CLI ve WebChat kullanır
channel {channel}:user:{senderId} Özel sohbet oturumu, kanal ve kullanıcıya göre izole
group {channel}:group:{groupId} Grup oturumu, gruba göre izole

Session Yaşam Döngüsü

stateDiagram-v2
    [*] --> Created: Mesaj ulaştı
    Created --> Active: İlk yanıt
    Active --> Active: Mesaj etkileşimi
    Active --> Idle: Aktivite yok
    Idle --> Active: Yeni mesaj
    Idle --> Compacted: Otomatik sıkıştırma
    Compacted --> Active: Sohbete devam
    Active --> Reset: /reset komutu
    Reset --> Created: Yeniden başla
    Active --> Pruned: Oturum temizliği
    Idle --> Pruned: Zaman aşımı temizliği
    Pruned --> [*]

Session Komutları

Sohbette aşağıdaki komutları göndererek oturumları yönetin:

Komut İşlev Örnek
/status Oturum durumunu görüntüle Model, Token, maliyet göster
/new veya /reset Oturumu sıfırla Geçmişi temizle, yeni sohbet başlat
/compact Bağlamı sıkıştır Geçmişi özetle, Token boşalt
/think <level> Düşünme seviyesini ayarla /think high
/verbose on/off Ayrıntılı modu aç/kapat Araç çağrılarını göster/gizle
/usage off/tokens/full Kullanım gösterimi /usage full

Session Yapılandırması

{
  "sessionPruning": {
    "enabled": true,
    "maxAge": 86400000,
    "maxSize": 100,
    "pruneOnStartup": true
  },
  "sessionCompression": {
    "enabled": true,
    "threshold": 50000,
    "targetRatio": 0.3
  }
}
Yapılandırma Açıklama Varsayılan
maxAge Oturum maksimum yaşam süresi (milisaniye) 24 saat
maxSize Maksimum mesaj sayısı 100 mesaj
threshold Sıkıştırma eşiği (Token) 50000
targetRatio Sıkıştırma hedef oranı %30

Message Router Mesaj Yönlendirme

Yönlendirme Kuralları

Message Router, gelen mesajları doğru Session’a yönlendirmekten sorumludur:

flowchart TB
    MSG[Mesaj ulaştı] --> CH{Kanal türü?}
    CH -->|Özel sohbet| DM[Gönderen ID'sini çıkar]
    CH -->|Grup sohbeti| GRP[Grup ID'sini çıkar]
    CH -->|WebChat/CLI| MAIN[main oturumunu kullan]
    
    DM --> SID[Session: channel:user:id]
    GRP --> GID[Session: channel:group:id]
    
    SID --> EXISTS{Oturum mevcut mu?}
    GID --> EXISTS
    
    EXISTS -->|Evet| LOAD[Oturumu yükle]
    EXISTS -->|Hayır| CREATE[Yeni oturum oluştur]
    
    CREATE --> LOAD
    LOAD --> AGENT[Agent'a ilet]

Yönlendirme Yapılandırması

{
  "messageRouting": {
    "defaultSession": "main",
    "channelMapping": {
      "telegram": {
        "userPrefix": "telegram:user",
        "groupPrefix": "telegram:group"
      },
      "whatsapp": {
        "userPrefix": "whatsapp:user",
        "groupPrefix": "whatsapp:group"
      }
    },
    "groupActivation": {
      "mode": "mention",
      "mentionPatterns": ["@bot", "/bot"]
    }
  }
}

Grup Aktivasyon Stratejisi

Mod Açıklama Uygun Senaryo
mention Yanıt vermek için @mention gerekir Aktif gruplar, rahatsızlığı azaltır
always Tüm mesajlara yanıt ver Özel çalışma grupları
keyword Anahtar kelime içerdiğinde yanıt ver Belirli konu grupları
{
  "channels": {
    "telegram": {
      "groups": {
        "*": {
          "requireMention": true
        },
        "-100WORKGROUP": {
          "requireMention": false,
          "activationMode": "always"
        }
      }
    }
  }
}

Tool Registry Araç Kaydı

Yerleşik Araçlar

OpenClaw zengin yerleşik araçlara sahiptir:

Araç Kategorisi Araç Adı İşlev
Dosya İşleme read Dosya okuma
write Dosya yazma
edit Dosya düzenleme
Komut Yürütme bash Shell komutu yürütme
process Süreç yönetimi
Tarayıcı browser Tarayıcı kontrolü
Arama web_search Web araması
Düğüm camera Kamera işlemleri
screen_record Ekran kaydı
notify Bildirim gönderme
Oturum sessions_list Oturumları listele
sessions_history Oturum geçmişi
sessions_send Oturumlar arası mesaj
Canvas canvas Canvas işlemleri

Araç Yetki Kontrolü

{
  "agents": {
    "defaults": {
      "sandbox": {
        "mode": "off",
        "allowlist": ["read", "write", "bash", "web_search"],
        "denylist": []
      }
    }
  }
}
Sandbox Modu Açıklama
off Tüm araçlar kullanılabilir (yalnızca main oturumu)
non-main main olmayan oturumlarda sandbox etkin
always Tüm oturumlarda sandbox etkin

Sandbox Yapılandırma Detayları

{
  "agents": {
    "defaults": {
      "sandbox": {
        "mode": "non-main",
        "allowlist": [
          "read",
          "write",
          "edit",
          "bash",
          "web_search",
          "sessions_list",
          "sessions_history"
        ],
        "denylist": [
          "browser",
          "canvas",
          "camera",
          "screen_record"
        ]
      }
    }
  }
}

Skills Beceri Sistemi

Skills Mimarisi

flowchart LR
    subgraph Skills["Beceri Dizini"]
        S1[gmail/SKILL.md]
        S2[calendar/SKILL.md]
        S3[home-assistant/SKILL.md]
    end
    
    subgraph Manager["Beceri Yöneticisi"]
        DISC[Keşif]
        LOAD[Yükleme]
        EXEC[Yürütme]
    end
    
    subgraph Agent["Agent"]
        PROMPT[Prompt'a Enjekte Et]
        TOOLS[Araçları Kaydet]
        RES[Sonuç Döndür]
    end
    
    Skills --> DISC
    DISC --> LOAD
    LOAD --> PROMPT
    LOAD --> TOOLS
    PROMPT --> Agent
    TOOLS --> Agent
    Agent --> EXEC
    EXEC --> RES

Skills Dizin Yapısı

~/.openclaw/workspace/skills/
├── gmail/
│   ├── SKILL.md          # Beceri tanımı
│   ├── package.json      # Bağımlılıklar (isteğe bağlı)
│   └── src/
│       └── index.js      # Uygulama (isteğe bağlı)
├── calendar/
│   └── SKILL.md
└── my-custom-skill/
    └── SKILL.md

SKILL.md Yapısı

# Gmail Skill

## Description
Send and read Gmail messages through OpenClaw.

## Triggers
- email
- gmail
- mail
- send email
- read email

## Instructions
When the user wants to send an email:
1. Ask for recipient, subject, and body
2. Use the gmail_send tool
3. Confirm the email was sent

When the user wants to check emails:
1. Use the gmail_list tool
2. Summarize the results

## Tools
- gmail_list: List recent emails
- gmail_send: Send an email
- gmail_read: Read a specific email

## Examples
User: "Check my email"
Action: Use gmail_list tool

User: "Send an email to [email protected]"
Action: Ask for subject and body, then use gmail_send

Skills Kurulum Yöntemleri

# ClawHub'dan kur
openclaw skill install gmail

# GitHub'dan kur
openclaw skill install github:user/repo/skill-name

# Manuel kurulum
git clone https://github.com/user/skill-repo.git ~/.openclaw/workspace/skills/skill-name

Skills Yapılandırması

{
  "skills": {
    "bundled": true,
    "managed": true,
    "workspace": true,
    "installGating": true
  }
}
Yapılandırma Açıklama
bundled Yerleşik becerileri etkinleştir
managed ClawHub tarafından yönetilen becerileri etkinleştir
workspace Yerel çalışma alanı becerilerini etkinleştir
installGating Kurulumdan önce onay gerekli

WebSocket Protokolü

Bağlantı Uç Noktası

ws://127.0.0.1:18789/ws

Mesaj Formatı

{
  "type": "message_type",
  "id": "unique_message_id",
  "data": {
    // Mesaj içeriği
  }
}

İstemci Mesaj Türleri

Tür Açıklama Örnek
agent.send Mesaj gönder Agent ile sohbet
session.list Oturumları listele Oturum yönetimi
session.get Oturum detaylarını al Oturumu görüntüle
session.patch Oturum yapılandırmasını değiştir Model değiştir
config.get Yapılandırma al Ayarları oku
config.set Yapılandırma ayarla Ayarları güncelle

Sunucu Mesaj Türleri

Tür Açıklama
agent.response Agent yanıtı
agent.thinking Düşünme süreci (akış)
tool.invoked Araç çağrısı
tool.result Araç sonucu
session.created Oturum oluşturuldu
session.reset Oturum sıfırlandı
error Hata mesajı

Örnek: Mesaj Gönderme

// WebSocket'e bağlan
const ws = new WebSocket('ws://127.0.0.1:18789/ws');

// Mesaj gönder
ws.send(JSON.stringify({
  type: 'agent.send',
  id: 'msg-001',
  data: {
    session: 'main',
    message: 'Merhaba, lütfen kendini tanıt'
  }
}));

// Yanıtı al
ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);
  console.log(msg);
  
  // Örnek çıktı:
  // {
  //   type: 'agent.response',
  //   id: 'msg-001',
  //   data: {
  //     content: 'Merhaba! Ben senin OpenClaw asistanınım...',
  //     session: 'main'
  //   }
  // }
};

Event System Olay Sistemi

Yerleşik Olaylar

Olay Tetiklenme Zamanı
message.received Kullanıcı mesajı alındığında
message.sent Yanıt mesajı gönderildiğinde
session.created Yeni oturum oluşturulduğunda
session.reset Oturum sıfırlandığında
tool.invoked Araç çağrıldığında
tool.completed Araç yürütmesi tamamlandığında
agent.thinking Agent düşünürken
error.occurred Hata oluştuğunda

Webhook Yapılandırması

{
  "webhooks": [
    {
      "url": "https://your-server.com/webhook/openclaw",
      "events": ["message.received", "tool.invoked"],
      "secret": "your_webhook_secret",
      "headers": {
        "X-Custom-Header": "value"
      }
    }
  ]
}

Webhook Yükü

{
  "event": "message.received",
  "timestamp": "2026-02-26T10:30:00Z",
  "data": {
    "channel": "telegram",
    "sender": "123456789",
    "session": "telegram:user:123456789",
    "message": "Merhaba",
    "metadata": {
      "messageId": "msg_abc123",
      "timestamp": "2026-02-26T10:30:00Z"
    }
  },
  "signature": "sha256=..."
}

Cron Zamanlanmış Görevler

Yapılandırma Örneği

{
  "cron": [
    {
      "id": "daily-briefing",
      "schedule": "0 9 * * *",
      "session": "main",
      "message": "Bugünkü takvim planımı ver",
      "enabled": true
    },
    {
      "id": "weekly-summary",
      "schedule": "0 18 * * 5",
      "session": "main",
      "message": "Bu haftanın çalışma özetini oluştur",
      "enabled": true
    }
  ]
}

Cron İfadesi

┌───────────── Dakika (0 - 59)
│ ┌───────────── Saat (0 - 23)
│ │ ┌───────────── Gün (1 - 31)
│ │ │ ┌───────────── Ay (1 - 12)
│ │ │ │ ┌───────────── Haftanın günü (0 - 6, 0 = Pazar)
│ │ │ │ │
* * * * *

Yaygın Örnekler

İfade Açıklama
0 9 * * * Her gün 9:00
0 18 * * 1-5 İş günleri 18:00
*/30 * * * * Her 30 dakika
0 0 1 * * Her ayın 1’i 0:00

Yapılandırma Hiyerarşisi ve Önceliği

Öncelik Sırası

CLI parametreleri > Ortam değişkenleri > Yapılandırma dosyası > Varsayılan değerler

Yapılandırma Kaynakları

Kaynak Konum Öncelik
CLI parametreleri Komut satırı parametreleri En yüksek
Ortam değişkenleri OPENCLAW_* Yüksek
Yapılandırma dosyası ~/.openclaw/openclaw.json Orta
Varsayılan değerler Kod içinde yerleşik En düşük

Yapılandırma Birleştirme Örneği

// ~/.openclaw/openclaw.json
{
  "agent": {
    "model": "anthropic/claude-opus-4-6"
  }
}
# Ortam değişkeni ile geçersiz kıl
export OPENCLAW_AGENT_MODEL="anthropic/claude-sonnet-4"

# CLI parametresi ile geçersiz kıl (en yüksek öncelik)
openclaw gateway --model "anthropic/claude-opus-4"

Yapılandırma Canlı Güncellemesi

# Yapılandırmayı güncelle (yeniden başlatma gerekmez)
openclaw config set agent.model "anthropic/claude-sonnet-4"

# Yapılandırma dosyasını yeniden yükle
openclaw config reload

# Yapılandırmayı doğrula
openclaw config get agent.model

Yaygın Komutlar Referansı

Gateway Yönetimi

# Gateway'i başlat
openclaw gateway

# Port belirt
openclaw gateway --port 18790

# Arka planda çalıştır
openclaw gateway --daemon

# Ayrıntılı günlük
openclaw gateway --verbose

# Sağlık kontrolü
openclaw health

Oturum Yönetimi

# Tüm oturumları listele
openclaw session list

# Oturum detaylarını görüntüle
openclaw session show main
openclaw session show telegram:user:123456789

# Oturumu sıfırla
openclaw session reset main

# Oturumu sil
openclaw session delete telegram:user:123456789

Yapılandırma Yönetimi

# Yapılandırmayı görüntüle
openclaw config get agent.model
openclaw config get channels.telegram.botToken

# Yapılandırmayı ayarla
openclaw config set agent.thinkingLevel high

# Tüm yapılandırmaları listele
openclaw config list

# Yapılandırmayı doğrula
openclaw config validate

Tanılama Araçları

# Tam tanılama
openclaw doctor

# Belirli öğeyi kontrol et
openclaw doctor --check gateway
openclaw doctor --check config
openclaw doctor --check channels

# Günlükleri görüntüle
openclaw logs
openclaw logs --follow
openclaw logs --level error

Sorun Giderme

Gateway Başlatılamıyor

# Port kullanımını kontrol et
lsof -i :18789
netstat -tlnp | grep 18789

# Yapılandırma sözdizimini kontrol et
openclaw config validate

# Ayrıntılı hatayı görüntüle
openclaw gateway --verbose 2>&1 | tee gateway.log

Oturum Kayboldu

# Oturum dizinini kontrol et
ls -la ~/.openclaw/sessions/

# Temizleme yapılandırmasını kontrol et
openclaw config get sessionPruning

# Otomatik temizlemeyi devre dışı bırak
openclaw config set sessionPruning.enabled false

Araç Çağrısı Başarısız

# Sandbox yapılandırmasını kontrol et
openclaw config get agents.defaults.sandbox

# Sandbox'u geçici olarak devre dışı bırak
openclaw config set agents.defaults.sandbox.mode off

# Araç günlüklerini görüntüle
openclaw logs --filter tool

WebSocket Bağlantısı Başarısız

# Gateway durumunu kontrol et
curl http://127.0.0.1:18789/health

# WebSocket uç noktasını kontrol et
wscat -c ws://127.0.0.1:18789/ws

# Güvenlik duvarını kontrol et
sudo ufw status
sudo iptables -L -n | grep 18789

Özet

Gateway temel kavramlarını anlamak, OpenClaw’a hakim olmanın anahtarıdır:

  • Session: Konuşma bağlamının kapsayıcısı, tür izolasyonunu destekler
  • Message Router: Mesaj yönlendirmenin çekirdeği, mesajın nereye gideceğini belirler
  • Tool Registry: Araç kayıt merkezi, Agent yeteneklerini kontrol eder
  • Skills: Beceri genişletme sistemi, işlevleri hızla artırır
  • WebSocket: Gerçek zamanlı iletişim protokolü, özel istemcileri destekler
  • Event System: Olay dağıtım mekanizması, Webhook ve Cron’u destekler

Bu kavramlar sonraki makalelerde tekrar tekrar karşınıza çıkacaktır; bunları derinlemesine anlamak, OpenClaw’ı daha iyi yapılandırmanıza ve kullanmanıza yardımcı olacaktır.


Bu Bölümün Özeti:

  • Gateway genel mimarisi ve bileşen görevlerini öğrendiniz
  • Session oturum modeli ve yaşam döngüsünü anladınız
  • Mesaj yönlendirme ve grup aktivasyon stratejisini öğrendiniz
  • Araç yetkileri ve sandbox yapılandırmasını kavradınız
  • WebSocket protokolü ve olay sistemini öğrendiniz

Güncelleme Kayıtları:

  • 2026-02-26: İlk sürüm yayınlandı, OpenClaw v2026.2 temel alınmıştır

Seri Navigasyonu: