Eklentiler (Uzantılar)
38. Hızlı başlangıç (eklentilere yeni misiniz?)
Bir eklenti, OpenClaw’u ek özelliklerle (komutlar, araçlar ve Gateway RPC) genişleten küçük bir kod modülüdür. Çoğu zaman, çekirdek OpenClaw’da henüz yerleşik olmayan bir özelliğe ihtiyacınız olduğunda (ya da isteğe bağlı özellikleri ana kurulumunuzdan ayrı tutmak istediğinizde) eklentileri kullanırsınız. Hızlı yol:- Zaten yüklü olanları görün:
- Resmî bir eklenti kurun (örnek: Voice Call):
- Gateway’i yeniden başlatın, ardından
plugins.entries.<id>.configaltında yapılandırın.
40. Mevcut eklentiler (resmi)
- Microsoft Teams, 2026.1.15 itibarıyla yalnızca eklenti olarak sunulmaktadır; Teams kullanıyorsanız
@openclaw/msteams’yi kurun. - Memory (Core) — paketli bellek arama eklentisi (
plugins.slots.memoryile varsayılan olarak etkindir) - Memory (LanceDB) — paketli uzun süreli bellek eklentisi (otomatik geri çağırma/yakalama;
plugins.slots.memory = "memory-lancedb"ayarlayın) - Voice Call —
@openclaw/voice-call - Zalo Personal —
@openclaw/zalouser - Matrix —
@openclaw/matrix - Nostr —
@openclaw/nostr - Zalo —
@openclaw/zalo - Microsoft Teams —
@openclaw/msteams - Google Antigravity OAuth (sağlayıcı kimlik doğrulaması) —
google-antigravity-autholarak paketlidir (varsayılan olarak devre dışı) - Gemini CLI OAuth (sağlayıcı kimlik doğrulaması) —
google-gemini-cli-autholarak paketlidir (varsayılan olarak devre dışı) - Qwen OAuth (sağlayıcı kimlik doğrulaması) —
qwen-portal-autholarak paketlidir (varsayılan olarak devre dışı) - Copilot Proxy (sağlayıcı kimlik doğrulaması) — yerel VS Code Copilot Proxy köprüsü; yerleşik
github-copilotcihaz oturum açmadan ayrıdır (paketli, varsayılan olarak devre dışı)
- Gateway RPC yöntemleri
- Gateway HTTP işleyicileri
- Ajan araçları
- CLI komutları
- Arka plan servisleri
- İsteğe bağlı yapılandırma doğrulaması
- Skills (eklenti bildiriminde
skillsdizinlerini listeleyerek) - Otomatik yanıt komutları (AI ajanını çağırmadan çalışır)
Çalışma zamanı yardımcıları
Eklentiler,api.runtime üzerinden seçili çekirdek yardımcılarına erişebilir. Telefon için TTS:
- Çekirdek
messages.ttsyapılandırmasını kullanır (OpenAI veya ElevenLabs). - PCM ses arabelleği + örnekleme hızı döndürür. Eklentiler, sağlayıcılar için yeniden örnekleme/kodlama yapmalıdır.
- Edge TTS telefon için desteklenmez.
Keşif ve öncelik
OpenClaw, şu sırayla tarar:- Yapılandırma yolları
plugins.load.paths(dosya veya dizin)
- Çalışma alanı uzantıları
<workspace>/.openclaw/extensions/*.ts<workspace>/.openclaw/extensions/*/index.ts
- Genel uzantılar
~/.openclaw/extensions/*.ts~/.openclaw/extensions/*/index.ts
- Paketli uzantılar (OpenClaw ile birlikte gönderilir, varsayılan olarak devre dışıdır)
<openclaw>/extensions/*
plugins.entries.<id>.enabled veya openclaw plugins enable <id> ile açıkça etkinleştirilmelidir. Kurulu eklentiler varsayılan olarak etkindir, ancak aynı şekilde devre dışı bırakılabilir.
Her eklenti kök dizininde bir openclaw.plugin.json dosyası bulunmalıdır. Bir yol bir dosyayı işaret ediyorsa, eklenti kökü dosyanın dizinidir ve bildirimi içermelidir.
Birden fazla eklenti aynı id’ye çözülürse, yukarıdaki sırada ilk eşleşme kazanır ve daha düşük öncelikli kopyalar yok sayılır.
Paket paketleri
Bir eklenti dizini,openclaw.extensions içeren bir package.json barındırabilir:
name/<fileBase> olur.
Eklentiniz npm bağımlılıkları içe aktarıyorsa, bunları o dizine kurun; böylece node_modules kullanılabilir (npm install / pnpm install).
Güvenlik notu: openclaw plugins install, eklenti bağımlılıklarını
npm install --ignore-scripts (lifecycle script’leri olmadan) ile kurar. Eklenti bağımlılık
ağaçlarını “pure JS/TS” tutun ve postinstall derlemeleri gerektiren paketlerden kaçının.
Kanal katalog meta verileri
Kanal eklentileri,openclaw.channel üzerinden katılım meta verilerini ve openclaw.install üzerinden kurulum ipuçlarını duyurabilir. Bu, çekirdek kataloğu verisiz tutar.
Örnek:
~/.openclaw/mpm/plugins.json~/.openclaw/mpm/catalog.json~/.openclaw/plugins/catalog.json
OPENCLAW_PLUGIN_CATALOG_PATHS’yı (veya OPENCLAW_MPM_CATALOG_PATHS) bir ya da daha fazla JSON dosyasına yönlendirin (virgül/noktalı virgül/PATH ile ayrılmış). Her dosya { "entries": [ { "name": "@scope/pkg", "openclaw": { "channel": {...}, "install": {...} } } ] } içermelidir.
Eklenti kimlikleri (ID’ler)
Varsayılan eklenti id’leri:- Paket paketleri:
package.jsonname - Tekil dosya: dosya taban adı (
~/.../voice-call.ts→voice-call)
id dışa aktarıyorsa, OpenClaw bunu kullanır ancak yapılandırılmış id ile eşleşmediğinde uyarır.
Yapılandırma
enabled: ana anahtar (varsayılan: true)allow: izin listesi (isteğe bağlı)deny: engelleme listesi (isteğe bağlı; engelleme kazanır)load.paths: ek eklenti dosyaları/dizinlerientries.<id>: eklenti başına anahtarlar + yapılandırma
entries,allow,denyveyaslotsiçindeki bilinmeyen eklenti id’leri hatadır.- Bilinmeyen
channels.<id>anahtarları, eklenti bildirimi kanal id’sini beyan etmedikçe hatadır. - Eklenti yapılandırması,
openclaw.plugin.jsoniçine gömülü JSON Schema kullanılarak doğrulanır (configSchema). - Bir eklenti devre dışıysa, yapılandırması korunur ve bir uyarı üretilir.
Eklenti yuvaları (özel kategoriler)
Bazı eklenti kategorileri özeldir (aynı anda yalnızca biri etkin olabilir). Hangi eklentinin yuvayı sahipleneceğini seçmek içinplugins.slots kullanın:
kind: "memory" beyan ederse, yalnızca seçilen yüklenir. Diğerleri tanılayıcı bilgilerle devre dışı bırakılır.
Kontrol UI’si (şema + etiketler)
Kontrol UI’si, daha iyi formlar oluşturmak içinconfig.schema (JSON Schema + uiHints) kullanır.
OpenClaw, keşfedilen eklentilere göre çalışma zamanında uiHints’i zenginleştirir:
plugins.entries.<id>/.enabled/.configiçin eklenti başına etiketler ekler- İsteğe bağlı eklenti tarafından sağlanan yapılandırma alanı ipuçlarını şu altında birleştirir:
plugins.entries.<id>.config.<field>
uiHints sağlayın.
Örnek:
CLI
plugins update yalnızca plugins.installs altında izlenen npm kurulumları için çalışır.
Eklentiler ayrıca kendi üst düzey komutlarını da kaydedebilir (örnek: openclaw voicecall).
Eklenti API’si (genel bakış)
- Eklentiler şunlardan birini dışa aktarır:
- Bir fonksiyon:
(api) => { ... } - Bir nesne:
{ id, name, configSchema, register(api) { ... } }
43. Eklenti kancaları
Eklentiler kancalarla birlikte gönderilebilir ve bunları çalışma zamanında kaydedebilir. Bu, ayrı bir kanca paketi kurulumuna gerek kalmadan olay güdümlü otomasyon sağlar.Örnek
- Kanca dizinleri normal kanca yapısını izler (
HOOK.md+handler.ts). - Kanca uygunluk kuralları geçerliliğini korur (OS/binary/ortam/yapılandırma gereksinimleri).
- Eklenti tarafından yönetilen kancalar
openclaw hooks listiçindeplugin:<id>ile görünür. - Eklenti tarafından yönetilen kancaları
openclaw hooksüzerinden etkinleştirip devre dışı bırakamazsınız; bunun yerine eklentiyi etkinleştirip devre dışı bırakın.
Sağlayıcı eklentileri (model kimlik doğrulaması)
Eklentiler, kullanıcıların OAuth veya API anahtarı kurulumunu OpenClaw içinde çalıştırabilmesi için model sağlayıcı kimlik doğrulama akışları kaydedebilir (harici betik gerekmez). Bir sağlayıcıyıapi.registerProvider(...) üzerinden kaydedin. Her sağlayıcı bir
veya daha fazla kimlik doğrulama yöntemi (OAuth, API anahtarı, cihaz kodu vb.) sunar. Bu yöntemler şunları besler:
openclaw models auth login --provider <id> [--method <id>]
run,prompter,runtime,openUrlveoauth.createVpsAwareHandlersyardımcılarını içeren birProviderAuthContextalır.- Varsayılan modelleri veya sağlayıcı yapılandırmasını eklemeniz gerektiğinde
configPatchdöndürün. --set-default’nin ajan varsayılanlarını güncelleyebilmesi içindefaultModeldöndürün.
Bir mesajlaşma kanalı kaydetme
Eklentiler, yerleşik kanallar gibi davranan kanal eklentileri kaydedebilir (WhatsApp, Telegram vb.). Kanal yapılandırmasıchannels.<id> altında yer alır ve kanal eklentisi kodunuz tarafından doğrulanır.
- Yapılandırmayı
channels.<id>altında tutun (plugins.entriesaltında değil). meta.label, CLI/UI listelerinde etiketler için kullanılır.meta.aliases, normalleştirme ve CLI girdileri için alternatif id’ler ekler.meta.preferOver, her ikisi de yapılandırıldığında otomatik etkinleştirmeyi atlamak için kanal id’lerini listeler.meta.detailLabelvemeta.systemImage, UI’lerin daha zengin kanal etiketleri/simgeleri göstermesini sağlar.
Yeni bir mesajlaşma kanalı yazma (adım adım)
Bir model sağlayıcı değil, yeni bir sohbet yüzeyi (“mesajlaşma kanalı”) istediğinizde bunu kullanın. Model sağlayıcı belgeleri/providers/* altında yer alır.
- Bir id + yapılandırma şekli seçin
- Tüm kanal yapılandırması
channels.<id>altında yer alır. - Çoklu hesap kurulumları için
channels.<id>.accounts.<accountId>’i tercih edin.
- Kanal meta verilerini tanımlayın
meta.label,meta.selectionLabel,meta.docsPath,meta.blurbCLI/UI listelerini kontrol eder.meta.docsPath,/channels/<id>gibi bir dokümantasyon sayfasına işaret etmelidir.meta.preferOver, bir eklentinin başka bir kanalın yerini almasına izin verir (otomatik etkinleştirme onu tercih eder).meta.detailLabelvemeta.systemImage, ayrıntı metni/simgeler için UI’ler tarafından kullanılır.
- Gerekli bağdaştırıcıları uygulayın
config.listAccountIds+config.resolveAccountcapabilities(sohbet türleri, medya, iş parçacıkları vb.)outbound.deliveryMode+outbound.sendText(temel gönderim için)
- Gerektikçe isteğe bağlı bağdaştırıcıları ekleyin
setup(sihirbaz),security(DM politikası),status(sağlık/tanılamalar)gateway(başlat/durdur/giriş),mentions,threading,streamingactions(mesaj eylemleri),commands(yerel komut davranışı)
- Eklentinizde kanalı kaydedin
api.registerChannel({ plugin })
plugins.load.paths), gateway’i yeniden başlatın,
ardından yapılandırmanızda channels.<id>’ü ayarlayın.
Ajan araçları
Özel kılavuza bakın: Eklenti ajan araçları.Bir gateway RPC yöntemi kaydetme
CLI komutları kaydetme
Otomatik yanıt komutları kaydetme
Eklentiler, AI ajanını çağırmadan çalışan özel eğik çizgi komutları kaydedebilir. Bu, LLM işlemeye ihtiyaç duymayan aç/kapa komutları, durum kontrolleri veya hızlı eylemler için kullanışlıdır.- Komut işleyici bağlamı:
senderId: Gönderenin kimliği (varsa)channel: Komutun gönderildiği kanalisAuthorizedSender: Gönderenin yetkili bir kullanıcı olup olmadığıargs: Komuttan sonra iletilen argümanlar (eğeracceptsArgs: true)commandBody: Komutun tam metniconfig: Geçerli OpenClaw yapılandırması
name: Komut adı (başındaki/olmadan)description: Komut listelerinde gösterilen yardım metniacceptsArgs: Komutun argüman kabul edip etmediği (varsayılan: false). False ise ve argüman verilirse, komut eşleşmez ve mesaj diğer işleyicilere düşerrequireAuth: Yetkili gönderici gerektirip gerektirmediği (varsayılan: true)handler:{ text: string }döndüren fonksiyon (async olabilir)
- Eklenti komutları, yerleşik komutlar ve AI ajanından önce işlenir
- Komutlar küresel olarak kaydedilir ve tüm kanallarda çalışır
- Komut adları büyük/küçük harfe duyarsızdır (
/MyStatus,/mystatusile eşleşir) - Komut adları bir harfle başlamalı ve yalnızca harfler, sayılar, tireler ve alt çizgiler içermelidir
- Ayrılmış komut adları (ör.
help,status,resetvb.) eklentiler tarafından geçersiz kılınamaz - Eklentiler arasında yinelenen komut kaydı, tanılayıcı bir hatayla başarısız olur
Arka plan servisleri kaydetme
47. Adlandırma kuralları
- Gateway yöntemleri:
pluginId.action(örnek:voicecall.status) - Araçlar:
snake_case(örnek:voice_call) - CLI komutları: kebab veya camel; ancak çekirdek komutlarla çakışmaktan kaçının
Skills
Eklentiler, depoda bir skill gönderebilir (skills/<name>/SKILL.md).
plugins.entries.<id>.enabled (veya diğer yapılandırma kapıları) ile etkinleştirin ve
çalışma alanınızda/yönetilen skill konumlarında mevcut olduğundan emin olun.
Dağıtım (npm)
Önerilen paketleme:- Ana paket:
openclaw(bu depo) - Eklentiler:
@openclaw/*altında ayrı npm paketleri (örnek:@openclaw/voice-call)
- Eklenti
package.json’ü, bir veya daha fazla giriş dosyası içerenopenclaw.extensions’ü içermelidir. - Giriş dosyaları
.jsveya.tsolabilir (jiti, TS’yi çalışma zamanında yükler). openclaw plugins install <npm-spec>,npm packkullanır,~/.openclaw/extensions/<id>/içine çıkarır ve yapılandırmada etkinleştirir.- Yapılandırma anahtarı kararlılığı: kapsamlı paketler,
plugins.entries.*için kapsamsız id’ye normalize edilir.
Örnek eklenti: Voice Call
Bu depo bir sesli arama eklentisi içerir (Twilio veya günlükleme yedeği):- Kaynak:
extensions/voice-call - Skill:
skills/voice-call - CLI:
openclaw voicecall start|status - Araç:
voice_call - RPC:
voicecall.start,voicecall.status - Yapılandırma (twilio):
provider: "twilio"+twilio.accountSid/authToken/from(isteğe bağlıstatusCallbackUrl,twimlUrl) - Yapılandırma (geliştirme):
provider: "log"(ağ yok)
extensions/voice-call/README.md’ye bakın.
Güvenli kullanım notları
Eklentiler Gateway ile aynı işlem içinde çalışır. Bunları güvenilir kod olarak değerlendirin:- Yalnızca güvendiğiniz eklentileri kurun.
plugins.allowizin listelerini tercih edin.- Değişikliklerden sonra Gateway’i yeniden başlatın.
Eklentileri test etme
Eklentiler testlerle birlikte gönderilebilir (ve gönderilmelidir):- Depo içi eklentiler, Vitest testlerini
src/**altında tutabilir (örnek:src/plugins/voice-call.plugin.test.ts). - Ayrı yayımlanan eklentiler kendi CI’larını (lint/build/test) çalıştırmalı ve
openclaw.extensions’nın derlenmiş giriş noktasını işaret ettiğini doğrulamalıdır (dist/index.js).