Skip to main content

Kancalar

Hooks, ajan komutları ve olaylarına yanıt olarak eylemleri otomatikleştirmek için genişletilebilir, olay güdümlü bir sistem sağlar. Hooks dizinlerden otomatik olarak keşfedilir ve Skills’in OpenClaw’da çalışmasına benzer şekilde CLI komutlarıyla yönetilebilir.

Yön Bulma

Hooks, bir şey olduğunda çalışan küçük betiklerdir. İki tür vardır:
  • Hooks (bu sayfa): /new, /reset, /stop gibi ajan olayları veya yaşam döngüsü olayları tetiklendiğinde Gateway içinde çalışır.
  • Webhooks: Diğer sistemlerin OpenClaw’da iş tetiklemesine olanak tanıyan harici HTTP webhook’larıdır. Webhook Hooks bölümüne bakın veya Gmail yardımcı komutları için openclaw webhooks kullanın.
Hooks, eklentilerin (plugins) içine de paketlenebilir; bkz. Plugins. Yaygın kullanımlar:
  • Bir oturumu sıfırladığınızda bellek anlık görüntüsünü kaydetmek
  • Sorun giderme veya uyumluluk için komutların denetim kaydını tutmak
  • Bir oturum başladığında veya bittiğinde takip otomasyonunu tetikleme
  • Olaylar tetiklendiğinde ajan çalışma alanına dosya yazmak veya harici API’leri çağırmak
Küçük bir TypeScript fonksiyonu yazabiliyorsanız, bir hook yazabilirsiniz. Hooks otomatik olarak keşfedilir ve CLI üzerinden etkinleştirip devre dışı bırakabilirsiniz.

Genel Bakış

Hooks sistemi şunları yapmanıza olanak tanır:
  • /new verildiğinde oturum bağlamını belleğe kaydetmek
  • Denetim için tüm komutları kaydetmek
  • Ajan yaşam döngüsü olaylarında özel otomasyonları tetikleme
  • Çekirdek kodu değiştirmeden OpenClaw davranışını genişletmek

Başlarken

Paketli Hooks

OpenClaw, otomatik olarak keşfedilen dört paketli hook ile gelir:
  • 💾 session-memory: /new verdiğinizde, oturum bağlamını ajan çalışma alanınıza (varsayılan ~/.openclaw/workspace/memory/) kaydeder
  • 😈 soul-evil: Bir temizleme penceresinde veya rastgele bir olasılıkla enjekte edilen SOUL.md içeriğini SOUL_EVIL.md ile değiştirir
  • 📝 command-logger: Tüm komut olaylarını ~/.openclaw/logs/commands.log dosyasına kaydeder
  • 🚀 boot-md: Gateway başladığında BOOT.md çalıştırır (dahili hooks etkin olmalıdır)
Mevcut hook’ları listeleme:
Bir hook’u etkinleştirme:
Hook durumunu kontrol etme:
Ayrıntılı bilgi alma:

Onboarding

Onboarding sırasında (openclaw onboard), önerilen hook’ları etkinleştirmeniz istenir. Sihirbaz, uygun hook’ları otomatik olarak keşfeder ve seçim için sunar.

Hook Keşfi

Hooks, öncelik sırasına göre üç dizinden otomatik olarak keşfedilir:
  1. Çalışma alanı hook’ları: <workspace>/hooks/ (ajan başına, en yüksek öncelik)
  2. Yönetilen hook’lar: ~/.openclaw/hooks/ (kullanıcı tarafından yüklenen, çalışma alanları arasında paylaşılan)
  3. Paketli hook’lar: <openclaw>/dist/hooks/bundled/ (OpenClaw ile birlikte gelir)
Yönetilen hook dizinleri tek bir hook veya hook paketi (paket dizini) olabilir. Her hook, aşağıdakileri içeren bir dizindir:

Hook Paketleri (npm/arşivler)

Hook paketleri, package.json içindeki openclaw.hooks aracılığıyla bir veya daha fazla hook dışa aktaran standart npm paketleridir. Şu şekilde yükleyin:
Npm tanımları yalnızca registry tabanlıdır (paket adı + isteğe bağlı sürüm/etiket). Git/URL/dosya tanımları reddedilir. Örnek package.json:
Her giriş, HOOK.md ve handler.ts (veya index.ts) içeren bir hook dizinine işaret eder. Hook paketleri bağımlılıklarıyla birlikte gelebilir; bunlar ~/.openclaw/hooks/<id> altında yüklenecektir. Güvenlik notu: openclaw hooks install, bağımlılıkları npm install --ignore-scripts ile kurar (yaşam döngüsü betikleri olmadan). Hook paket bağımlılık ağaçlarını “pure JS/TS” olarak tutun ve postinstall derlemelerine dayanan paketlerden kaçının.

Hook Yapısı

HOOK.md Biçimi

HOOK.md dosyası, YAML frontmatter içindeki meta veriler ile Markdown dokümantasyonu içerir:

Meta Veri Alanları

metadata.openclaw nesnesi şunları destekler:
  • emoji: CLI için görüntü emojisi (örn. "💾")
  • events: Dinlenecek olaylar dizisi (örn. ["command:new", "command:reset"])
  • export: Kullanılacak adlandırılmış dışa aktarım (varsayılan "default")
  • homepage: Dokümantasyon URL’si
  • requires: İsteğe bağlı gereksinimler
    • bins: PATH üzerinde gerekli ikililer (örn. ["git", "node"])
    • anyBins: Bu ikililerden en az biri mevcut olmalıdır
    • env: Gerekli ortam değişkenleri
    • config: Gerekli yapılandırma yolları (örn. ["workspace.dir"])
    • os: Gerekli platformlar (örn. ["darwin", "linux"])
  • always: Uygunluk denetimlerini atla (boolean)
  • install: Yükleme yöntemleri (paketli hook’lar için: [{"id":"bundled","kind":"bundled"}])

İşleyici (Handler) Uygulaması

handler.ts dosyası bir HookHandler fonksiyonu dışa aktarır:

Olay Bağlamı

Her olay şunları içerir:

Olay Türleri

Komut Olayları

Ajan komutları verildiğinde tetiklenir:
  • command: Tüm komut olayları (genel dinleyici)
  • command:new: /new komutu verildiğinde
  • command:reset: /reset komutu verildiğinde
  • command:stop: /stop komutu verildiğinde

Ajan Olayları

  • agent:bootstrap: Çalışma alanı bootstrap dosyaları enjekte edilmeden önce (hook’lar context.bootstrapFiles’i değiştirebilir)

Gateway Olayları

Gateway başladığında tetiklenir:
  • gateway:startup: Kanallar başladıktan ve hook’lar yüklendikten sonra

Araç Sonucu Hook’ları (Plugin API)

Bu hook’lar olay akışı dinleyicileri değildir; eklentilerin, OpenClaw bunları kalıcı hale getirmeden önce araç sonuçlarını eşzamanlı olarak ayarlamasına olanak tanır.
  • tool_result_persist: Oturum dökümüne yazılmadan önce araç sonuçlarını dönüştürür. Eşzamanlı olmalıdır; güncellenmiş araç sonucu yükünü döndürün veya olduğu gibi bırakmak için undefined döndürün. Agent Loop.

Gelecek Olaylar

Planlanan olay türleri:
  • session:start: Yeni bir oturum başladığında
  • session:end: Bir oturum sona erdiğinde
  • agent:error: Bir ajan hata ile karşılaştığında
  • message:sent: Bir mesaj gönderildiğinde
  • message:received: Bir mesaj alındığında

Özel Hook’lar Oluşturma

1. Konum Seçin

  • Çalışma alanı hook’ları (<workspace>/hooks/): Ajan başına, en yüksek öncelik
  • Yönetilen hook’lar (~/.openclaw/hooks/): Çalışma alanları arasında paylaşılan

2. Dizin Yapısını Oluşturun

3. HOOK.md Oluşturun

4. handler.ts Oluşturun

5. Etkinleştirin ve Test Edin

Yapılandırma

Yeni Yapılandırma Biçimi (Önerilen)

Hook Başına Yapılandırma

Hook’ların özel yapılandırması olabilir:

Ek Dizinler

Ek dizinlerden hook yükleyin:

Eski Yapılandırma Biçimi (Hâlâ Desteklenir)

Geriye dönük uyumluluk için eski yapılandırma biçimi hâlâ çalışır:
Not: module, workspace’e göreli bir yol olmalıdır. Mutlak yollar ve workspace dışına geçişler reddedilir. Geçiş: Yeni hook’lar için keşfe dayalı yeni sistemi kullanın. Eski işleyiciler, dizin tabanlı hook’lardan sonra yüklenir.

CLI Komutları

Hook’ları Listeleme

Hook Bilgisi

Uygunluğu Kontrol Etme

Etkinleştir/Devre Dışı Bırak

Paketlenmiş kanca referansı

session-memory

/new verdiğinizde oturum bağlamını belleğe kaydeder. Olaylar: command:new Gereksinimler: workspace.dir yapılandırılmış olmalıdır Çıktı: <workspace>/memory/YYYY-MM-DD-slug.md (varsayılan ~/.openclaw/workspace) Ne yapar:
  1. Doğru dökümü bulmak için sıfırlama öncesi oturum girdisini kullanır
  2. Konuşmanın son 15 satırını çıkarır
  3. Tanımlayıcı bir dosya adı slug’ı üretmek için LLM kullanır
  4. Oturum meta verilerini tarihli bir bellek dosyasına kaydeder
Örnek çıktı:
Dosya adı örnekleri:
  • 2026-01-16-vendor-pitch.md
  • 2026-01-16-api-design.md
  • 2026-01-16-1430.md (slug üretimi başarısız olursa yedek zaman damgası)
Etkinleştir:

bootstrap-extra-files

Bir temizleme penceresinde veya rastgele bir olasılıkla enjekte edilen SOUL.md içeriğini SOUL_EVIL.md ile değiştirir. Olaylar: agent:bootstrap Hata ayıklama Çıktı: Dosya yazılmaz; değişimler yalnızca bellek içinde gerçekleşir. Yapılandırma:
Dokümanlar: SOUL Evil Hook
  • Yollar workspace’e göreli olarak çözülür.
  • Dosyalar workspace içinde kalmalıdır (realpath kontrolü yapılır).
  • Yalnızca tanınan bootstrap temel adları yüklenir.
  • Subagent allowlist korunur (yalnızca AGENTS.md ve TOOLS.md).
Etkinleştir:

command-logger

Tüm komut olaylarını merkezi bir denetim dosyasına kaydeder. Olaylar: command Gereksinimler: Yok Çıktı: ~/.openclaw/logs/commands.log Ne yapar:
  1. Olay ayrıntılarını yakalar (komut eylemi, zaman damgası, oturum anahtarı, gönderen kimliği, kaynak)
  2. Günlük dosyasına JSONL biçiminde ekler
  3. Arka planda sessizce çalışır
Örnek günlük girdileri:
Günlükleri görüntüle:
Etkinleştir:

boot-md

Gateway başladığında (kanallar başladıktan sonra) BOOT.md çalıştırır. Bunun çalışması için dahili hook’lar etkin olmalıdır. Olaylar: gateway:startup Gereksinimler: workspace.dir yapılandırılmış olmalıdır Ne yapar:
  1. Çalışma alanınızdan BOOT.md okur
  2. Talimatları ajan çalıştırıcısı aracılığıyla yürütür
  3. İstenen giden mesajları mesaj aracıyla gönderir
Etkinleştir:

En İyi Uygulamalar

İşleyicileri Hızlı Tutun

Hook’lar komut işleme sırasında çalışır. Hafif tutun:

Hataları Zarifçe Ele Alın

Riskli işlemleri her zaman sarmalayın:

Olayları Erken Filtreleyin

Olay ilgili değilse erken dönün:

Belirli Olay Anahtarlarını Kullanın

Mümkün olduğunda meta verilerde tam olayları belirtin:
Şunun yerine:

Hata ayıklama

Hook Günlüğünü Etkinleştirin

Gateway, başlangıçta hook yüklemeyi günlüğe alır:

Keşfi Kontrol Et

Keşfedilen tüm hook’ları listeleyin:

Kayıt (Registration) Kontrolü

İşleyicinizde, çağrıldığında günlüğe kaydedin:

Uygunluğu Doğrulayın

Bir hook’un neden uygun olmadığını kontrol edin:
Çıktıda eksik gereksinimleri arayın.

Test

Gateway Günlükleri

Hook yürütümünü görmek için gateway günlüklerini izleyin:

Hook’ları Doğrudan Test Edin

İşleyicilerinizi yalıtılmış olarak test edin:

Mimari

Çekirdek Bileşenler

  • src/hooks/types.ts: Tür tanımları
  • src/hooks/workspace.ts: Dizin tarama ve yükleme
  • src/hooks/frontmatter.ts: HOOK.md meta veri ayrıştırma
  • src/hooks/config.ts: Uygunluk denetimi
  • src/hooks/hooks-status.ts: Durum raporlama
  • src/hooks/loader.ts: Dinamik modül yükleyici
  • src/cli/hooks-cli.ts: CLI komutları
  • src/gateway/server-startup.ts: Gateway başlangıcında hook’ları yükler
  • src/auto-reply/reply/commands-core.ts: Komut olaylarını tetikler

Keşif Akışı

Olay Akışı

Sorun Giderme

Hook Keşfedilmiyor

  1. Dizin yapısını kontrol edin:
  2. HOOK.md biçimini doğrulayın:
  3. Keşfedilen tüm hook’ları listeleyin:

Hook Çalışmıyor

Gereksinimleri kontrol edin:
Eksik olanları arayın:
  • İkililer (PATH’i kontrol edin)
  • Ortam değişkenleri
  • Yapılandırma değerleri
  • İşletim sistemi uyumluluğu

Hook Uygun Değil

  1. Hook’un etkin olduğunu doğrulayın:
  2. Hook’ların yeniden yüklenmesi için gateway sürecinizi yeniden başlatın.
  3. Hatalar için gateway günlüklerini kontrol edin:

İşleyici Hataları

TypeScript/ithalat hatalarını kontrol edin:

Geçiş Kılavuzu

Eski Yapılandırmadan Keşfe

Önce:
Sonra:
  1. Hook dizini oluşturun:
  2. HOOK.md oluşturun:
  3. Yapılandırmayı güncelleyin:
  4. Doğrulayın ve gateway sürecinizi yeniden başlatın:
Geçişin faydaları:
  • Otomatik keşif
  • CLI ile yönetim
  • Uygunluk denetimi
  • Daha iyi dokümantasyon
  • Tutarlı yapı

Ayrıca Bakınız