chore(i18n): refresh tr translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-22 09:03:29 +00:00
parent 087394d19c
commit c7e9f6a08d
15 changed files with 2449 additions and 2193 deletions

View File

@ -1,83 +1,84 @@
---
read_when:
- Bir CI işinin neden çalıştığını veya çalışmadığını anlamanız gerekir
- GitHub Actions denetimlerinde başarısızlıkları ayıklıyorsunuz
- Başarısız GitHub Actions kontrollerinde hata ayıklıyorsunuz
summary: CI iş grafiği, kapsam geçitleri ve yerel komut eşdeğerleri
title: CI Ardışık Düzeni
title: CI ardışık düzeni
x-i18n:
generated_at: "2026-04-22T04:21:28Z"
generated_at: "2026-04-22T08:54:52Z"
model: gpt-5.4
provider: openai
source_hash: ae08bad6cbd0f2eced6c88a792a11bc1c2b1a2bfb003a56f70ff328a2739d3fc
source_hash: fc7ec59123aee65634736320dbf1cf5cdfb08786a78cca82ce9596fedc68b3cc
source_path: ci.md
workflow: 15
---
# CI Ardışık Düzeni
# CI ardışık düzeni
CI, `main` dalına her push işleminde ve her pull requestte çalışır. Yalnızca ilgisiz alanlar değiştiğinde pahalı işleri atlamak için akıllı kapsamlandırma kullanır.
CI, `main` dalına yapılan her push işleminde ve her pull requestte çalışır. Yalnızca ilgisiz alanlar değiştiğinde pahalı işleri atlamak için akıllı kapsamlandırma kullanır.
## İş Genel Görünümü
| İş | Amaç | Ne zaman çalışır |
| -------------------------------- | -------------------------------------------------------------------------------------------- | ---------------------------------- |
| `preflight` | Yalnızca doküman değişikliklerini, değişen kapsamları, değişen eklentileri saptamak ve CI manifestini oluşturmak | Taslak olmayan push ve PRlerde her zaman |
| `security-scm-fast` | `zizmor` ile özel anahtar tespiti ve workflow denetimi | Taslak olmayan push ve PRlerde her zaman |
| `security-dependency-audit` | npm advisorylerine karşı bağımlılıksız üretim lockfile denetimi | Taslak olmayan push ve PRlerde her zaman |
| `security-fast` | Hızlı güvenlik işleri için gerekli toplu iş | Taslak olmayan push ve PRlerde her zaman |
| `build-artifacts` | `dist/` ve Control UIyi bir kez derlemek, aşağı akış işleri için yeniden kullanılabilir artifactleri yüklemek | Node ile ilgili değişiklikler |
| `checks-fast-core` | Paketlenmiş/plugin-contract/protocol denetimleri gibi hızlı Linux doğruluk hatları | Node ile ilgili değişiklikler |
| `checks-fast-contracts-channels` | Kararlı bir toplu denetim sonucu ile shardlanmış kanal sözleşmesi denetimleri | Node ile ilgili değişiklikler |
| `checks-node-extensions` | eklenti paketi genelinde paketlenmiş pluginler için tam test shardları | Node ile ilgili değişiklikler |
| `checks-node-core-test` | Kanal, paketlenmiş, sözleşme ve eklenti hatları hariç çekirdek Node test shardları | Node ile ilgili değişiklikler |
| `extension-fast` | Yalnızca değişen paketlenmiş pluginler için odaklı testler | Eklenti değişiklikleri algılandığında |
| `check` | shardlanmış ana yerel geçit eşdeğeri: üretim tipleri, lint, guardlar, test tipleri ve katı smoke | Node ile ilgili değişiklikler |
| `check-additional` | Mimari, sınır, eklenti-yüzeyi guardları, paket sınırı ve gateway-watch shardları | Node ile ilgili değişiklikler |
| `build-smoke` | Derlenmiş CLI smoke testleri ve başlangıç belleği smoke testi | Node ile ilgili değişiklikler |
| `checks` | Kalan Linux Node hatları: kanal testleri ve yalnızca push için Node 22 uyumluluğu | Node ile ilgili değişiklikler |
| `check-docs` | Doküman biçimlendirme, lint ve bozuk bağlantı denetimleri | Dokümanlar değiştiğinde |
| `skills-python` | Python destekli Skills için Ruff + pytest | Python-Skills ile ilgili değişiklikler |
| `checks-windows` | Windowsa özgü test hatları | Windows ile ilgili değişiklikler |
| `macos-node` | Paylaşılan derlenmiş artifactleri kullanan macOS TypeScript test hattı | macOS ile ilgili değişiklikler |
| `macos-swift` | macOS uygulaması için Swift lint, build ve testler | macOS ile ilgili değişiklikler |
| `android` | Android build ve test matrisi | Android ile ilgili değişiklikler |
| İş | Amaç | Ne zaman çalışır |
| -------------------------------- | ------------------------------------------------------------------------------------------ | ----------------------------------- |
| `preflight` | Yalnızca dokümantasyon değişikliklerini, değişen kapsamları, değişen eklentileri tespit etmek ve CI bildirimini oluşturmak | Taslak olmayan push ve PRlerde her zaman |
| `security-scm-fast` | `zizmor` aracılığıyla özel anahtar tespiti ve iş akışı denetimi | Taslak olmayan push ve PRlerde her zaman |
| `security-dependency-audit` | npm uyarılarına karşı bağımlılıksız üretim lockfile denetimi | Taslak olmayan push ve PRlerde her zaman |
| `security-fast` | Hızlı güvenlik işleri için gerekli toplu iş | Taslak olmayan push ve PRlerde her zaman |
| `build-artifacts` | `dist/` ve Control UIı bir kez derlemek, alt işlerde yeniden kullanılacak artifaktları yüklemek | Node ile ilgili değişiklikler |
| `checks-fast-core` | bundled/plugin-contract/protocol kontrolleri gibi hızlı Linux doğruluk aşamaları | Node ile ilgili değişiklikler |
| `checks-fast-contracts-channels` | Kararlı bir toplu kontrol sonucu ile parçalanmış kanal sözleşmesi kontrolleri | Node ile ilgili değişiklikler |
| `checks-node-extensions` | eklenti paketi genelinde bundled-plugin tam test parçaları | Node ile ilgili değişiklikler |
| `checks-node-core-test` | Kanal, bundled, sözleşme ve eklenti aşamaları hariç tutularak çekirdek Node test parçaları | Node ile ilgili değişiklikler |
| `extension-fast` | Yalnızca değişen bundled pluginler için odaklanmış testler | Eklenti değişiklikleri tespit edildiğinde |
| `check` | Parçalanmış ana yerel geçit eşdeğeri: üretim türleri, lint, korumalar, test türleri ve katı smoke | Node ile ilgili değişiklikler |
| `check-additional` | Mimari, sınır, eklenti yüzeyi korumaları, paket sınırı ve gateway-watch parçaları | Node ile ilgili değişiklikler |
| `build-smoke` | Derlenmiş CLI smoke testleri ve başlangıç belleği smoke testi | Node ile ilgili değişiklikler |
| `checks` | Kalan Linux Node aşamaları: kanal testleri ve yalnızca push için Node 22 uyumluluğu | Node ile ilgili değişiklikler |
| `check-docs` | Dokümantasyon biçimlendirme, lint ve bozuk bağlantı kontrolleri | Dokümanlar değiştiğinde |
| `skills-python` | Python destekli Skills için Ruff + pytest | Python Skills ile ilgili değişiklikler |
| `checks-windows` | Windowsa özgü test aşamaları | Windows ile ilgili değişiklikler |
| `macos-node` | Paylaşılan derlenmiş artifaktları kullanan macOS TypeScript test aşaması | macOS ile ilgili değişiklikler |
| `macos-swift` | macOS uygulaması için Swift lint, derleme ve testler | macOS ile ilgili değişiklikler |
| `android` | Android derleme ve test matrisi | Android ile ilgili değişiklikler |
## Fail-Fast sırası
## Hızlı Başarısızlık Sırası
İşler, pahalı işler çalışmadan önce ucuz denetimlerin başarısız olacağı şekilde sıralanır:
İşler, pahalı işler çalışmadan önce ucuz kontroller başarısız olacak şekilde sıralanır:
1. `preflight`, hangi hatların var olacağına karar verir. `docs-scope` ve `changed-scope` mantığı bağımsız işler değil, bu işin içindeki adımlardır.
2. `security-scm-fast`, `security-dependency-audit`, `security-fast`, `check`, `check-additional`, `check-docs` ve `skills-python`, daha ağır artifact ve platform matrisi işlerini beklemeden hızlıca başarısız olur.
3. `build-artifacts`, hızlı Linux hatlarıyla örtüşür; böylece aşağı akış tüketicileri paylaşılan build hazır olur olmaz başlayabilir.
4. Daha ağır platform ve çalışma zamanı hatları bundan sonra fan-out yapar: `checks-fast-core`, `checks-fast-contracts-channels`, `checks-node-extensions`, `checks-node-core-test`, `extension-fast`, `checks`, `checks-windows`, `macos-node`, `macos-swift` ve `android`.
1. `preflight`, hangi aşamaların var olacağına karar verir. `docs-scope` ve `changed-scope` mantığı bağımsız işler değil, bu işin içindeki adımlardır.
2. `security-scm-fast`, `security-dependency-audit`, `security-fast`, `check`, `check-additional`, `check-docs` ve `skills-python`, daha ağır artifakt ve platform matris işlerini beklemeden hızlıca başarısız olur.
3. `build-artifacts`, hızlı Linux aşamalarıyla çakışır; böylece alt tüketiciler paylaşılan derleme hazır olur olmaz başlayabilir.
4. Bundan sonra daha ağır platform ve çalışma zamanı aşamaları yayılır: `checks-fast-core`, `checks-fast-contracts-channels`, `checks-node-extensions`, `checks-node-core-test`, `extension-fast`, `checks`, `checks-windows`, `macos-node`, `macos-swift` ve `android`.
Kapsam mantığı `scripts/ci-changed-scope.mjs` içinde yaşar ve `src/scripts/ci-changed-scope.test.ts` içindeki birim testleriyle kapsanır.
Ayrı `install-smoke` workflow, aynı kapsam betiğini kendi `preflight` işi üzerinden yeniden kullanır. `run_install_smoke` değerini daha dar changed-smoke sinyalinden hesaplar; bu nedenle Docker/install smoke yalnızca kurulum, paketleme ve kapsayıcıyla ilgili değişikliklerde çalışır.
Kapsam mantığı `scripts/ci-changed-scope.mjs` içinde bulunur ve `src/scripts/ci-changed-scope.test.ts` içindeki birim testleriyle kapsanır.
Ayrı `install-smoke` iş akışı, aynı kapsam betiğini kendi `preflight` işi üzerinden yeniden kullanır. `run_install_smoke` değerini daha dar changed-smoke sinyalinden hesaplar; bu nedenle Docker/install smoke yalnızca install, paketleme ve container ile ilgili değişikliklerde çalışır.
Yerel changed-lane mantığı `scripts/changed-lanes.mjs` içinde yaşar ve `scripts/check-changed.mjs` tarafından yürütülür. Bu yerel geçit, geniş CI platform kapsamına göre mimari sınırlar konusunda daha katıdır: çekirdek üretim değişiklikleri çekirdek üretim typecheck ile birlikte çekirdek testlerini çalıştırır, yalnızca çekirdek test değişiklikleri sadece çekirdek test typecheck/testlerini çalıştırır, eklenti üretim değişiklikleri eklenti üretim typecheck ile birlikte eklenti testlerini çalıştırır ve yalnızca eklenti test değişiklikleri sadece eklenti test typecheck/testlerini çalıştırır. Public Plugin SDK veya plugin-contract değişiklikleri, eklentiler bu çekirdek sözleşmelere bağımlı olduğu için eklenti doğrulamasını genişletir. Yalnızca release metadata sürüm artışları hedeflenmiş sürüm/yapılandırma/kök-bağımlılık denetimlerini çalıştırır. Bilinmeyen kök/yapılandırma değişiklikleri güvenli tarafta kalıp tüm hatlara gider.
Yerel changed-lane mantığı `scripts/changed-lanes.mjs` içinde bulunur ve `scripts/check-changed.mjs` tarafından yürütülür. Bu yerel geçit, geniş CI platform kapsamına göre mimari sınırlar konusunda daha katıdır: çekirdek üretim değişiklikleri çekirdek üretim typecheck artı çekirdek testlerini çalıştırır, yalnızca çekirdek test değişiklikleri yalnızca çekirdek test typecheck/testlerini çalıştırır, eklenti üretim değişiklikleri eklenti üretim typecheck artı eklenti testlerini çalıştırır ve yalnızca eklenti test değişiklikleri yalnızca eklenti test typecheck/testlerini çalıştırır. Public Plugin SDK veya plugin-contract değişiklikleri, uzantılar bu çekirdek sözleşmelere bağlı olduğundan uzantı doğrulamasını genişletir. Yalnızca sürüm metadatası içeren sürüm artırımları hedefli sürüm/config/root-dependency kontrolleri çalıştırır. Bilinmeyen root/config değişiklikleri güvenli tarafta kalmak için tüm aşamalara yayılır.
Push işlemlerinde `checks` matrisi yalnızca push için olan `compat-node22` hattını ekler. Pull requestlerde bu hat atlanır ve matris normal test/kanal hatlarına odaklı kalır.
Push işlemlerinde, `checks` matrisi yalnızca push için olan `compat-node22` aşamasını ekler. Pull requestlerde bu aşama atlanır ve matris normal test/kanal aşamalarına odaklı kalır.
En yavaş Node test aileleri, her iş küçük kalsın diye include-file shardlarına bölünür: kanal sözleşmeleri registry ve çekirdek kapsamını sekizer ağırlıklı sharda böler, auto-reply reply command testleri dörder include-pattern sharda ayrılır ve diğer büyük auto-reply reply prefix grupları ikişer sharda bölünür. `check-additional` ayrıca paket sınırı compile/canary işlerini çalışma zamanı topolojisi gateway/mimari işlerinden ayırır.
En yavaş Node test aileleri, her iş küçük kalsın diye include-file parçalarına bölünür: kanal sözleşmeleri, kayıt defteri ve çekirdek kapsamını sekizer ağırlıklı parçaya böler; auto-reply reply command testleri dört include-pattern parçasına bölünür; diğer büyük auto-reply reply prefix grupları ise ikişer parçaya bölünür. `check-additional`, paket sınırı derleme/canary çalışmalarını çalışma zamanı topolojisi gateway/mimari çalışmalarından da ayırır.
Aynı PR veya `main` refi üzerine daha yeni bir push geldiğinde GitHub, yerini almış işleri `cancelled` olarak işaretleyebilir. Aynı ref için en yeni çalışma da başarısız değilse bunu CI gürültüsü olarak değerlendirin. Toplu shard denetimleri bu iptal durumunu açıkça belirtir; böylece bunu bir test başarısızlığından ayırmak daha kolay olur.
GitHub, aynı PR veya `main` referansına daha yeni bir push geldiğinde yerini alan işleri `cancelled` olarak işaretleyebilir. Aynı referans için en yeni çalışma da başarısız olmuyorsa bunu bir test hatası değil, CI gürültüsü olarak değerlendirin. Toplu parça kontrolleri, bunun bir test başarısızlığından daha kolay ayırt edilmesi için bu iptal durumunu açıkça belirtir.
## Runnerlar
## Çalıştırıcılar
| Runner | İşler |
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `blacksmith-16vcpu-ubuntu-2404` | `preflight`, `security-scm-fast`, `security-dependency-audit`, `security-fast`, `build-artifacts`, Linux denetimleri, doküman denetimleri, Python Skills, `android` |
| `blacksmith-32vcpu-windows-2025` | `checks-windows` |
| `blacksmith-12vcpu-macos-latest` | `openclaw/openclaw` üzerinde `macos-node`, `macos-swift`; forklar `macos-latest` değerine geri döner |
| Çalıştırıcı | İşler |
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `ubuntu-24.04` | `preflight`; install-smoke preflight da Blacksmith matrisinin daha erken kuyruğa girebilmesi için GitHub barındırmalı Ubuntu kullanır |
| `blacksmith-16vcpu-ubuntu-2404` | `security-scm-fast`, `security-dependency-audit`, `security-fast`, `build-artifacts`, Linux kontrolleri, dokümantasyon kontrolleri, Python Skills, `android` |
| `blacksmith-32vcpu-windows-2025` | `checks-windows` |
| `blacksmith-12vcpu-macos-latest` | `macos-node`, `macos-swift` için `openclaw/openclaw`; forklar `macos-latest` sürümüne geri döner |
## Yerel eşdeğerler
## Yerel Eşdeğerler
```bash
pnpm changed:lanes # origin/main...HEAD için yerel changed-lane sınıflandırıcısını inceleyin
pnpm check:changed # akıllı yerel geçit: sınır hattına göre değişen typecheck/lint/testler
pnpm check # hızlı yerel geçit: production tsgo + shardlanmış lint + paralel hızlı guardlar
pnpm check:changed # akıllı yerel geçit: sınır aşamasına göre değişen typecheck/lint/testler
pnpm check # hızlı yerel geçit: production tsgo + parçalanmış lint + paralel hızlı korumalar
pnpm check:test-types
pnpm check:timed # aynı geçit, aşama başına zamanlamalarla
pnpm check:timed # aşama başına sürelerle aynı geçit
pnpm build:strict-smoke
pnpm check:architecture
pnpm test:gateway:watch-regression
@ -85,5 +86,5 @@ pnpm test # vitest testleri
pnpm test:channels
pnpm test:contracts:channels
pnpm check:docs # doküman biçimlendirme + lint + bozuk bağlantılar
pnpm build # CI artifact/build-smoke hatları önemliyse dist derlemesi
pnpm build # CI artifact/build-smoke aşamaları önemliyse dist derlemesi
```

View File

@ -1,40 +1,40 @@
---
read_when:
- Yazıyor göstergesi davranışını veya varsayılanlarını değiştiriyorsunuz
summary: OpenClaw'ın yazıyor göstergelerini ne zaman gösterdiği ve bunların nasıl ayarlanacağı
- Yazıyor göstergesi davranışını veya varsayılanlarını değiştirme
summary: OpenClaw yazıyor göstergelerini ne zaman gösterir ve bunlar nasıl ayarlanır
title: Yazıyor Göstergeleri
x-i18n:
generated_at: "2026-04-05T13:51:54Z"
generated_at: "2026-04-22T08:54:48Z"
model: gpt-5.4
provider: openai
source_hash: 28c8c395a135fc0745181aab66a93582177e6acd0b3496debcbb98159a4f11dc
source_hash: 2e7e8ca448b6706b6f53fcb6a582be6d4a84715c82dfde3d53abe4268af3ae0d
source_path: concepts/typing-indicators.md
workflow: 15
---
# Yazıyor göstergeleri
Bir çalıştırma etkin durumdayken sohbet kanalına yazıyor göstergeleri gönderilir. Yazmanın **ne zaman** başlayacağını denetlemek için `agents.defaults.typingMode`, **ne sıklıkla** yenileneceğini denetlemek için `typingIntervalSeconds` kullanın.
Bir çalıştırma etkinken sohbet kanalına yazıyor göstergeleri gönderilir. Yazmanın **ne zaman** başladığını denetlemek için `agents.defaults.typingMode`, **ne sıklıkta** yenilendiğini denetlemek için ise `typingIntervalSeconds` kullanın.
## Varsayılanlar
`agents.defaults.typingMode` **ayarlı değilse**, OpenClaw legacy davranışı korur:
`agents.defaults.typingMode` **ayarlanmamışsa**, OpenClaw eski davranışı korur:
- **Doğrudan sohbetler**: model döngüsü başlar başlamaz yazıyor durumu başlar.
- **Bahsetme içeren grup sohbetleri**: yazıyor durumu hemen başlar.
- **Bahsetme içermeyen grup sohbetleri**: yazıyor durumu yalnızca mesaj metni akış halinde gelmeye başladığında başlar.
- **Heartbeat çalıştırmaları**: yazıyor durumu devre dışıdır.
- **Doğrudan sohbetler**: model döngüsü başlar başlamaz yazma başlar.
- **Bahsetme içeren grup sohbetleri**: yazma hemen başlar.
- **Bahsetme içermeyen grup sohbetleri**: yazma yalnızca mesaj metni akmaya başladığında başlar.
- **Heartbeat çalıştırmaları**: çözümlenen Heartbeat hedefi yazmayı destekleyen bir sohbetse ve yazma devre dışı bırakılmamışsa, yazma Heartbeat çalıştırması başladığında başlar.
## Modlar
`agents.defaults.typingMode` değerini şunlardan biri olarak ayarlayın:
- `never` — hiçbir zaman yazıyor göstergesi yok.
- `instant` — çalıştırma daha sonra yalnızca sessiz yanıt token'ını döndürse bile, yazıyor durumunu **model döngüsü başlar başlamaz** başlatır.
- `thinking` — yazıyor durumunu **ilk muhakeme delta'sında** başlatır (`reasoningLevel: "stream"` çalıştırma için gereklidir).
- `message` — yazıyor durumunu **ilk sessiz olmayan metin delta'sında** başlatır (`NO_REPLY` sessiz token'ını yok sayar).
- `instant` — çalıştırma daha sonra yalnızca sessiz yanıt belirtecini döndürse bile, yazmayı **model döngüsü başlar başlamaz** başlatır.
- `thinking` — yazmayı **ilk akıl yürütme deltasıyla** başlatır (`reasoningLevel: "stream"` gerektirir).
- `message` — yazmayı **ilk sessiz olmayan metin deltasıyla** başlatır (`NO_REPLY` sessiz belirtecini yok sayar).
Tetiklenme ne kadar erken olur” sırası:
Ne kadar erken tetiklendiği” sırası:
`never``message``thinking``instant`
## Yapılandırma
@ -48,7 +48,7 @@ Bir çalıştırma etkin durumdayken sohbet kanalına yazıyor göstergeleri gö
}
```
Modu veya sıklığı oturum başına geçersiz kılabilirsiniz:
Modu veya aralığı oturum başına geçersiz kılabilirsiniz:
```json5
{
@ -61,9 +61,8 @@ Modu veya sıklığı oturum başına geçersiz kılabilirsiniz:
## Notlar
- `message` modu, tüm payload tam olarak sessiz token olduğunda sessiz yanıtlar için yazıyor durumu göstermez (örneğin `NO_REPLY` / `no_reply`, büyük/küçük harf duyarsız eşleşir).
- `thinking` yalnızca çalıştırma muhakemeyi akış halinde gönderirse tetiklenir (`reasoningLevel: "stream"`).
Model muhakeme delta'ları yaymazsa yazıyor durumu başlamaz.
- Mod ne olursa olsun heartbeat'ler hiçbir zaman yazıyor durumu göstermez.
- `typingIntervalSeconds`, başlangıç zamanını değil **yenileme sıklığını** denetler.
Varsayılan değer 6 saniyedir.
- `message` modu, tüm yük tam olarak sessiz belirteç olduğunda sessiz-yalnızca yanıtlar için yazıyor göstergesi göstermez (örneğin `NO_REPLY` / `no_reply`, büyük/küçük harf duyarsız eşleştirilir).
- `thinking` yalnızca çalıştırma akıl yürütmeyi akıtırsa tetiklenir (`reasoningLevel: "stream"`). Model akıl yürütme deltaları üretmezse, yazma başlamaz.
- Heartbeat yazıyor göstergesi, çözümlenen teslim hedefi için bir canlılık sinyalidir. `message` veya `thinking` akış zamanlamasını izlemek yerine Heartbeat çalıştırması başlarken başlar. Bunu devre dışı bırakmak için `typingMode: "never"` ayarlayın.
- `target: "none"` olduğunda, hedef çözümlenemediğinde, Heartbeat için sohbet teslimi devre dışı bırakıldığında veya kanal yazmayı desteklemediğinde Heartbeat yazıyor göstergesi göstermez.
- `typingIntervalSeconds`, başlama zamanını değil, **yenileme aralığını** denetler. Varsayılan değer 6 saniyedir.

View File

@ -1,48 +1,52 @@
---
read_when:
- API sağlayıcıları başarısız olduğunda güvenilir bir geri dönüş istersiniz
- Codex CLI veya diğer yerel AI CLI'leri çalıştırıyor ve bunları yeniden kullanmak istiyorsunuz
- CLI arka ucu araç erişimi için MCP local loopback köprüsünü anlamak istiyorsunuz
summary: 'CLI arka uçları: isteğe bağlı MCP araç köprüsü ile yerel AI CLI geri dönüşü'
- Codex CLI veya diğer yerel AI CLI'larını çalıştırıyorsunuz ve bunları yeniden kullanmak istiyorsunuz
- CLI arka ucu araç erişimi için MCP loopback köprüsünü anlamak istiyorsunuz
summary: 'CLI arka uçları: isteğe bağlı MCP araç köprüsüyle yerel AI CLI geri dönüşü'
title: CLI Arka Uçları
x-i18n:
generated_at: "2026-04-16T19:31:15Z"
generated_at: "2026-04-22T08:54:54Z"
model: gpt-5.4
provider: openai
source_hash: 381273532a8622bc4628000a6fb999712b12af08faade2b5f2b7ac4cc7d23efe
source_hash: 3566d4f2b7a841473a4ed6379c1abd8dbd06c392dbff15ca37c4f8ea1e1ead51
source_path: gateway/cli-backends.md
workflow: 15
---
# CLI arka uçları (geri dönüş çalışma zamanı)
OpenClaw, API sağlayıcıları kapalı olduğunda, hız sınırlamasına takıldığında
OpenClaw, API sağlayıcıları kullanılamadığında, hız sınırına takıldığında
veya geçici olarak hatalı davrandığında **metinle sınırlı bir geri dönüş**
olarak **yerel AI CLI'leri** çalıştırabilir. Bu tasarım kasıtlı olarak temkinlidir:
olarak **yerel AI CLI'larını** çalıştırabilir. Bu özellikle temkinli bir
tasarımdır:
- **OpenClaw araçları doğrudan eklenmez**, ancak `bundleMcp: true` olan arka uçlar
araçları bir loopback MCP köprüsü üzerinden alabilir.
- Bunu destekleyen CLI'ler için **JSONL akışı**.
- **OpenClaw araçları doğrudan enjekte edilmez**, ancak `bundleMcp: true`
kullanan arka uçlar döngüsel MCP köprüsü üzerinden Gateway araçlarını
alabilir.
- Bunu destekleyen CLI'lar için **JSONL akışı**.
- **Oturumlar desteklenir** (böylece takip eden turlar tutarlı kalır).
- CLI görüntü yollarını kabul ediyorsa **görüntüler iletilebilir**.
Bu, birincil yol olmaktan çok bir **güvenlik ağı** olarak tasarlanmıştır. Bunu,
harici API'lere güvenmeden “her zaman çalışan” metin yanıtları istediğinizde kullanın.
Bu, birincil yol olmaktan ziyade bir **güvenlik ağı** olarak tasarlanmıştır.
Dış API'lere güvenmeden “her zaman çalışır” metin yanıtları istediğinizde bunu
kullanın.
ACP oturum denetimleri, arka plan görevleri,
iz/konuşma bağlama ve kalıcı harici kodlama oturumları olan tam bir harness çalışma zamanı istiyorsanız,
bunun yerine [ACP Agents](/tr/tools/acp-agents) kullanın. CLI arka uçları ACP değildir.
ACP oturum denetimleri, arka plan görevleri, iş parçacığı/konuşma bağlama ve
kalıcı harici kodlama oturumları içeren tam bir harness çalışma zamanı
istiyorsanız bunun yerine [ACP Agents](/tr/tools/acp-agents) kullanın. CLI arka
uçları ACP değildir.
## Yeni başlayanlar için hızlı başlangıç
Codex CLI'yi **hiç yapılandırma olmadan** kullanabilirsiniz (paketle gelen OpenAI Plugin
varsayılan bir arka uç kaydeder):
Codex CLI'ı **hiçbir yapılandırma olmadan** kullanabilirsiniz (paketlenmiş
OpenAI Plugin varsayılan bir arka uç kaydeder):
```bash
openclaw agent --message "hi" --model codex-cli/gpt-5.4
```
Gateway'iniz launchd/systemd altında çalışıyorsa ve PATH minimal ise, yalnızca
Gateway'niz launchd/systemd altında çalışıyorsa ve PATH sınırlıysa yalnızca
komut yolunu ekleyin:
```json5
@ -59,15 +63,18 @@ komut yolunu ekleyin:
}
```
Hepsi bu. CLI'nin kendisinin ötesinde anahtar, ek kimlik doğrulama yapılandırması gerekmez.
Hepsi bu kadar. CLI'ın kendisi dışında anahtar gerekmez, ek yetkilendirme
yapılandırması da gerekmez.
Paketle gelen bir CLI arka ucunu bir gateway ana bilgisayarında **birincil mesaj sağlayıcısı**
olarak kullanırsanız, yapılandırmanız bu arka uca bir model ref içinde veya
`agents.defaults.cliBackends` altında açıkça başvurduğunda OpenClaw artık ilgili paketli Plugin'i otomatik olarak yükler.
Paketlenmiş bir CLI arka ucunu bir Gateway ana makinesinde **birincil mesaj
sağlayıcısı** olarak kullanıyorsanız OpenClaw artık yapılandırmanız model
başvurusunda veya `agents.defaults.cliBackends` altında bu arka uca açıkça
başvurduğunda sahip olan paketlenmiş Plugin'i otomatik olarak yükler.
## Bunu geri dönüş olarak kullanma
Yalnızca birincil modeller başarısız olduğunda çalışması için geri dönüş listenize bir CLI arka ucu ekleyin:
Bir CLI arka ucunu geri dönüş listenize ekleyin; böylece yalnızca birincil
modeller başarısız olduğunda çalışır:
```json5
{
@ -88,9 +95,10 @@ Yalnızca birincil modeller başarısız olduğunda çalışması için geri dö
Notlar:
- `agents.defaults.models` (izin listesi) kullanıyorsanız, CLI arka uç modellerinizi de oraya eklemeniz gerekir.
- Birincil sağlayıcı başarısız olursa (kimlik doğrulama, hız sınırları, zaman aşımları), OpenClaw
sıradaki CLI arka ucunu dener.
- `agents.defaults.models` (izin listesi) kullanıyorsanız CLI arka ucu
modellerinizi de oraya eklemelisiniz.
- Birincil sağlayıcı başarısız olursa (yetkilendirme, hız sınırları, zaman
ımları), OpenClaw sıradaki CLI arka ucunu dener.
## Yapılandırmaya genel bakış
@ -100,8 +108,9 @@ Tüm CLI arka uçları şunun altında bulunur:
agents.defaults.cliBackends
```
Her giriş bir **sağlayıcı kimliği** ile anahtarlanır (`codex-cli`, `my-cli` gibi).
Sağlayıcı kimliği, model ref'inizin sol tarafı olur:
Her giriş bir **sağlayıcı kimliği** ile anahtarlanır (ör. `codex-cli`,
`my-cli`).
Sağlayıcı kimliği model başvurunuzun sol tarafı olur:
```
<provider>/<model>
@ -131,7 +140,7 @@ Sağlayıcı kimliği, model ref'inizin sol tarafı olur:
sessionMode: "existing",
sessionIdFields: ["session_id", "conversation_id"],
systemPromptArg: "--system",
// Codex tarzı CLI'ler bunun yerine bir istem dosyasına işaret edebilir:
// Codex tarzı CLI'lar bunun yerine bir istem dosyasına işaret edebilir:
// systemPromptFileConfigArg: "-c",
// systemPromptFileConfigKey: "model_instructions_file",
systemPromptWhen: "first",
@ -147,83 +156,101 @@ Sağlayıcı kimliği, model ref'inizin sol tarafı olur:
## Nasıl çalışır
1. Sağlayıcı önekine göre (`codex-cli/...`) bir arka uç **seçer**.
2. Aynı OpenClaw istemi + çalışma alanı bağlamını kullanarak bir sistem istemi **oluşturur**.
3. Geçmiş tutarlı kalsın diye CLI'yi bir oturum kimliğiyle (destekleniyorsa) **çalıştırır**.
4. Çıktıyı (JSON veya düz metin) **ayrıştırır** ve son metni döndürür.
5. Arka uç başına oturum kimliklerini **kalıcılaştırır**, böylece takip eden istekler aynı CLI oturumunu yeniden kullanır.
1. Sağlayıcı önekine (`codex-cli/...`) göre bir **arka uç seçer**.
2. Aynı OpenClaw istemi + çalışma alanı bağlamını kullanarak bir **sistem
istemi oluşturur**.
3. Geçmiş tutarlı kalsın diye CLI'ı destekleniyorsa bir oturum kimliğiyle
**çalıştırır**.
Paketlenmiş `claude-cli` arka ucu, OpenClaw oturumu başına bir Claude stdio
sürecini canlı tutar ve takip eden turları stream-json stdin üzerinden
gönderir.
4. **Çıktıyı ayrıştırır** (JSON veya düz metin) ve son metni döndürür.
5. Takip eden istekler aynı CLI oturumunu yeniden kullansın diye arka uç başına
**oturum kimliklerini kalıcı hale getirir**.
<Note>
Paketle gelen Anthropic `claude-cli` arka ucu yeniden desteklenmektedir. Anthropic çalışanları
bize OpenClaw tarzı Claude CLI kullanımına yeniden izin verildiğini söyledi, bu yüzden OpenClaw
Anthropic yeni bir ilke yayımlamadıkça bu entegrasyon için
`claude -p` kullanımını onaylanmış kabul eder.
Paketlenmiş Anthropic `claude-cli` arka ucu yeniden desteklenmektedir.
Anthropic çalışanları bize OpenClaw tarzı Claude CLI kullanımına yeniden izin
verildiğini söyledi; bu yüzden Anthropic yeni bir ilke yayımlamadığı sürece
OpenClaw, `claude -p` kullanımını bu entegrasyon için onaylı kabul eder.
</Note>
Paketle gelen OpenAI `codex-cli` arka ucu, OpenClaw'ın sistem istemini
Codex'in `model_instructions_file` yapılandırma geçersiz kılması (`-c
Paketlenmiş OpenAI `codex-cli` arka ucu, OpenClaw'ın sistem istemini Codex'in
`model_instructions_file` yapılandırma geçersiz kılması (`-c
model_instructions_file="..."`) üzerinden geçirir. Codex, Claude tarzı bir
`--append-system-prompt` bayrağı sunmaz, bu yüzden OpenClaw her yeni Codex CLI oturumu için
oluşturulan istemi geçici bir dosyaya yazar.
`--append-system-prompt` bayrağı sunmadığı için OpenClaw her yeni Codex CLI
oturumu için derlenmiş istemi geçici bir dosyaya yazar.
Paketle gelen Anthropic `claude-cli` arka ucu, OpenClaw Skills anlık görüntüsünü
iki yolla alır: eklenen sistem istemindeki kompakt OpenClaw Skills kataloğu ve
`--plugin-dir` ile geçirilen geçici bir Claude Code Plugin. Plugin yalnızca o agent/oturum için
uygun Skills öğelerini içerir; böylece Claude Code'un yerel beceri çözücüsü,
OpenClaw'ın istemde normalde duyuracağı aynı filtrelenmiş kümesi görür. Skill env/API anahtarı geçersiz kılmaları
çalıştırma için alt süreç ortamına yine OpenClaw tarafından uygulanır.
Paketlenmiş Anthropic `claude-cli` arka ucu OpenClaw Skills anlık görüntüsünü
iki yolla alır: eklenen sistem istemindeki derli toplu OpenClaw Skills
kataloğu ve `--plugin-dir` ile geçirilen geçici bir Claude Code Plugin'i.
Plugin, yalnızca o aracı/oturum için uygun Skills öğelerini içerir; böylece
Claude Code'un yerel beceri çözücüsü, OpenClaw'ın aksi halde istemde
duyuracağı aynı filtrelenmiş kümeyi görür. Skill env/API anahtarı geçersiz
kılmaları yine de çalışma için alt süreç ortamına OpenClaw tarafından
uygulanır.
## Oturumlar
- CLI oturumları destekliyorsa, oturum kimliği gönderilmesi için `sessionArg` (`--session-id` gibi) veya
kimliğin birden çok bayrağa eklenmesi gerekiyorsa
`sessionArgs` (`{sessionId}` yer tutuculu) ayarlayın.
- CLI farklı bayraklara sahip bir **resume alt komutu** kullanıyorsa,
`resumeArgs` ayarlayın (yeniden devam ederken `args` yerine geçer) ve isteğe bağlı olarak
`resumeOutput` ayarlayın (JSON olmayan devamlar için).
- CLI oturumları destekliyorsa `sessionArg` (ör. `--session-id`) veya kimliğin
birden fazla bayrağa eklenmesi gerektiğinde `sessionArgs`
(`{sessionId}` yer tutucusu) ayarlayın.
- CLI farklı bayraklarla bir **resume alt komutu** kullanıyorsa `resumeArgs`
değerini ayarlayın (yeniden başlatırken `args` yerine geçer) ve isteğe bağlı
olarak `resumeOutput` ayarlayın (JSON olmayan yeniden başlatmalar için).
- `sessionMode`:
- `always`: her zaman bir oturum kimliği gönderir (saklanmış yoksa yeni bir UUID).
- `existing`: yalnızca daha önce saklanmış bir oturum kimliği varsa gönderir.
- `always`: her zaman bir oturum kimliği gönderir (saklı kimlik yoksa yeni
UUID).
- `existing`: yalnızca daha önce bir kimlik saklandıysa oturum kimliği
gönderir.
- `none`: hiçbir zaman oturum kimliği göndermez.
- Paketlenmiş `claude-cli` arka ucu `liveSession: "claude-stdio"` kullanır;
böylece aktif olduğu sürece takip eden turlar canlı Claude sürecini yeniden
kullanır. Gateway yeniden başlatılırsa veya boşta duran süreç kapanırsa
OpenClaw saklı Claude oturum kimliğinden devam eder.
Serileştirme notları:
- `serialize: true`, aynı şeritteki çalıştırmaları sıralı tutar.
- Çoğu CLI tek bir sağlayıcı şeridinde serileştirme yapar.
- Kimlik doğrulama durumu değiştiğinde OpenClaw saklanan CLI oturumu yeniden kullanımını bırakır; buna yeniden giriş, belirteç döndürme veya değiştirilmiş kimlik doğrulama profili kimlik bilgisi dahildir.
- `serialize: true`, aynı hat üzerindeki çalıştırmaların sıralı kalmasını
sağlar.
- Çoğu CLI tek bir sağlayıcı hattında serileştirme yapar.
- Arka uç yetkilendirme durumu değiştiğinde, buna yeniden giriş, belirteç
döndürme veya değişmiş bir yetkilendirme profili kimlik bilgisi dahil olmak
üzere, OpenClaw saklı CLI oturumu yeniden kullanımını bırakır.
## Görüntüler (iletim)
## Görüntüler (iletme)
CLI'niz görüntü yollarını kabul ediyorsa, `imageArg` ayarlayın:
CLI'ınız görüntü yollarını kabul ediyorsa `imageArg` ayarlayın:
```json5
imageArg: "--image",
imageMode: "repeat"
```
OpenClaw base64 görüntüleri geçici dosyalara yazar. `imageArg` ayarlanmışsa bu
yollar CLI bağımsız değişkenleri olarak geçirilir. `imageArg` eksikse OpenClaw
dosya yollarını isteme ekler (yol ekleme); bu, düz yollardan yerel dosyaları otomatik
yükleyen CLI'ler için yeterlidir.
OpenClaw base64 görüntülerini geçici dosyalara yazar. `imageArg` ayarlıysa bu
yollar CLI bağımsız değişkenleri olarak geçirilir. `imageArg` yoksa OpenClaw
dosya yollarını isteme ekler (yol ekleme); bu, düz yollardan yerel dosyaları
otomatik yükleyen CLI'lar için yeterlidir.
## Girdiler / çıktılar
- `output: "json"` (varsayılan), JSON ayrıştırmayı ve metin + oturum kimliği çıkarmayı dener.
- Gemini CLI JSON çıktısı için, `usage` eksik veya boş olduğunda OpenClaw yanıt metnini `response` alanından,
kullanımı ise `stats` alanından okur.
- `output: "jsonl"`, JSONL akışlarını ayrıştırır (örneğin Codex CLI `--json`) ve mevcutsa son agent mesajını artı oturum
tanımlayıcılarını çıkarır.
- `output: "text"`, stdout'u son yanıt olarak ele alır.
- `output: "json"` (varsayılan) JSON ayrıştırmayı dener ve metin + oturum
kimliğini çıkarır.
- Gemini CLI JSON çıktısı için OpenClaw, `usage` eksikse veya boşsa yanıt
metnini `response` içinden ve kullanımı `stats` içinden okur.
- `output: "jsonl"` JSONL akışlarını ayrıştırır (örneğin Codex CLI `--json`)
ve mevcutsa son aracı mesajını ve oturum tanımlayıcılarını çıkarır.
- `output: "text"` stdout'u son yanıt olarak ele alır.
Girdi modları:
- `input: "arg"` (varsayılan), istemi son CLI bağımsız değişkeni olarak geçirir.
- `input: "stdin"`, istemi stdin üzerinden gönderir.
- İstem çok uzunsa ve `maxPromptArgChars` ayarlanmışsa stdin kullanılır.
- `input: "arg"` (varsayılan) istemi son CLI bağımsız değişkeni olarak geçirir.
- `input: "stdin"` istemi stdin üzerinden gönderir.
- İstem çok uzunsa ve `maxPromptArgChars` ayarlıysa stdin kullanılır.
## Varsayılanlar (Plugin sahipliğinde)
## Varsayılanlar (Plugin tarafından sahiplenilir)
Paketle gelen OpenAI Plugin ayrıca `codex-cli` için bir varsayılan kaydeder:
Paketlenmiş OpenAI Plugin'i `codex-cli` için de bir varsayılan kaydeder:
- `command: "codex"`
- `args: ["exec","--json","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]`
@ -234,7 +261,8 @@ Paketle gelen OpenAI Plugin ayrıca `codex-cli` için bir varsayılan kaydeder:
- `imageArg: "--image"`
- `sessionMode: "existing"`
Paketle gelen Google Plugin ayrıca `google-gemini-cli` için bir varsayılan kaydeder:
Paketlenmiş Google Plugin'i `google-gemini-cli` için de bir varsayılan
kaydeder:
- `command: "gemini"`
- `args: ["--output-format", "json", "--prompt", "{prompt}"]`
@ -245,32 +273,33 @@ Paketle gelen Google Plugin ayrıca `google-gemini-cli` için bir varsayılan ka
- `sessionMode: "existing"`
- `sessionIdFields: ["session_id", "sessionId"]`
Önkoşul: yerel Gemini CLI kurulmuş olmalı ve PATH üzerinde
`gemini` olarak kullanılabilir olmalıdır (`brew install gemini-cli` veya
Ön koşul: yerel Gemini CLI kurulmuş olmalı ve `PATH` üzerinde `gemini` olarak
erişilebilir olmalıdır (`brew install gemini-cli` veya
`npm install -g @google/gemini-cli`).
Gemini CLI JSON notları:
- Yanıt metni JSON `response` alanından okunur.
- Yanıt metni JSON içindeki `response` alanından okunur.
- `usage` yoksa veya boşsa kullanım `stats` alanına geri döner.
- `stats.cached`, OpenClaw `cacheRead` değerine normalize edilir.
- `stats.input` eksikse OpenClaw girdi belirteçlerini
- `stats.cached`, OpenClaw `cacheRead` ine normalize edilir.
- `stats.input` eksikse OpenClaw giriş token'larını
`stats.input_tokens - stats.cached` üzerinden türetir.
Yalnızca gerekirse geçersiz kılın (yaygın olan: mutlak `command` yolu).
Yalnızca gerekirse geçersiz kılın (yaygın durum: mutlak `command` yolu).
## Plugin sahipliğindeki varsayılanlar
## Plugin tarafından sahiplenilen varsayılanlar
CLI arka ucu varsayılanları artık Plugin yüzeyinin bir parçasıdır:
- Plugin'ler bunları `api.registerCliBackend(...)` ile kaydeder.
- Arka uç `id` değeri, model ref'lerdeki sağlayıcı öneki olur.
- `agents.defaults.cliBackends.<id>` içindeki kullanıcı yapılandırması yine de Plugin varsayılanını geçersiz kılar.
- Arka uca özgü yapılandırma temizliği, isteğe bağlı
`normalizeConfig` kancası aracılığıyla Plugin sahipliğinde kalır.
- Arka uç `id` değeri model başvurularındaki sağlayıcı öneki olur.
- `agents.defaults.cliBackends.<id>` içindeki kullanıcı yapılandırması yine de
Plugin varsayılanını geçersiz kılar.
- Arka uca özgü yapılandırma temizliği isteğe bağlı `normalizeConfig` kancası
üzerinden Plugin sahipliğinde kalır.
Küçük istem/mesaj uyumluluk uyarlamalarına ihtiyaç duyan Plugin'ler, bir sağlayıcıyı veya CLI arka ucunu değiştirmeden
iki yönlü metin dönüşümleri tanımlayabilir:
Küçük istem/mesaj uyumluluk uyarlamaları gereken Plugin'ler, bir sağlayıcıyı
veya CLI arka ucunu değiştirmeden iki yönlü metin dönüşümleri tanımlayabilir:
```typescript
api.registerTextTransforms({
@ -287,52 +316,60 @@ api.registerTextTransforms({
});
```
`input`, CLI'ye geçirilen sistem istemini ve kullanıcı istemini yeniden yazar. `output`
ise OpenClaw kendi denetim işaretçilerini ve kanal teslimini işlemeden önce
akışlı asistan deltalarını ve ayrıştırılmış son metni yeniden yazar.
`input`, CLI'a geçirilen sistem istemini ve kullanıcı istemini yeniden yazar.
`output`, OpenClaw kendi denetim işaretçilerini ve kanal teslimini
işlemeden önce akışlı yardımcı delta'larını ve ayrıştırılmış son metni yeniden
yazar.
Claude Code stream-json uyumlu JSONL üreten CLI'ler için,
o arka ucun yapılandırmasında `jsonlDialect: "claude-stream-json"` ayarlayın.
Claude Code stream-json ile uyumlu JSONL üreten CLI'lar için o arka ucun
yapılandırmasında `jsonlDialect: "claude-stream-json"` ayarlayın.
## Bundle MCP katmanları
CLI arka uçları OpenClaw araç çağrılarını **doğrudan** almaz, ancak bir arka uç
`bundleMcp: true` ile oluşturulmuş bir MCP yapılandırma katmanına katılabilir.
`bundleMcp: true` ile oluşturulmuş bir MCP yapılandırma katmanını kullanmayı
seçebilir.
Mevcut paketli davranış:
Mevcut paketlenmiş davranış:
- `claude-cli`: oluşturulmuş sıkı MCP yapılandırma dosyası
- `claude-cli`: oluşturulmuş katı MCP yapılandırma dosyası
- `codex-cli`: `mcp_servers` için satır içi yapılandırma geçersiz kılmaları
- `google-gemini-cli`: oluşturulmuş Gemini sistem ayarları dosyası
Bundle MCP etkin olduğunda OpenClaw:
- CLI sürecine gateway araçlarını açan bir loopback HTTP MCP sunucusu başlatır
- köprüyü oturum başına bir belirteçle (`OPENCLAW_MCP_TOKEN`) kimlik doğrular
- Gateway araçlarını CLI sürecine açığa çıkaran döngüsel HTTP MCP sunucusu
başlatır
- köprüyü oturum başına belirteçle (`OPENCLAW_MCP_TOKEN`) doğrular
- araç erişimini geçerli oturum, hesap ve kanal bağlamıyla sınırlar
- geçerli çalışma alanı için etkin bundle-MCP sunucularını yükler
- bunları mevcut arka uç MCP yapılandırması/ayar şekliyle birleştirir
- başlatma yapılandırmasını sahip olan uzantının arka uç sahipliğindeki entegrasyon modunu kullanarak yeniden yazar
- bunları mevcut arka uç MCP yapılandırması/ayar biçimiyle birleştirir
- başlatma yapılandırmasını sahip uzantının arka uç tarafından sahiplenilen
entegrasyon modunu kullanarak yeniden yazar
Hiç MCP sunucusu etkin değilse bile, OpenClaw bir arka uç bundle MCP'ye katıldığında
arka plandaki çalıştırmalar yalıtılmış kalsın diye yine de sıkı bir yapılandırma ekler.
Hiçbir MCP sunucusu etkin değilse bile bir arka uç bundle MCP'yi seçtiğinde
OpenClaw yine de katı bir yapılandırma enjekte eder; böylece arka plan
çalıştırmaları yalıtılmış kalır.
## Sınırlamalar
- **Doğrudan OpenClaw araç çağrıları yoktur.** OpenClaw, araç çağrılarını
CLI arka ucu protokolüne eklemez. Arka uçlar gateway araçlarını yalnızca
`bundleMcp: true` ile katıldıklarında görür.
- **Akış arka uca özeldir.** Bazı arka uçlar JSONL akışı yapar; diğerleri
çıkışa kadar arabelleğe alır.
- **Yapılandırılmış çıktılar**, CLI'nin JSON biçimine bağlıdır.
- **Codex CLI oturumları**, metin çıktısı üzerinden devam eder (JSONL yoktur); bu da
ilk `--json` çalıştırmasına göre daha az yapılandırılmıştır. OpenClaw oturumları yine de
normal çalışır.
- **Doğrudan OpenClaw araç çağrıları yoktur.** OpenClaw, araç çağrılarını CLI
arka ucu protokolüne enjekte etmez. Arka uçlar yalnızca `bundleMcp: true`
seçtiklerinde Gateway araçlarını görür.
- **Akış arka uca özeldir.** Bazı arka uçlar JSONL akışı yapar, diğerleri çıkışa
kadar arabelleğe alır.
- **Yapılandırılmış çıktılar** CLI'ın JSON biçimine bağlıdır.
- **Codex CLI oturumları** metin çıktısı üzerinden devam eder (JSONL yoktur);
bu, ilk `--json` çalıştırmasına göre daha az yapılandırılmıştır. OpenClaw
oturumları yine de normal çalışır.
## Sorun giderme
- **CLI bulunamadı**: `command` değerini tam yol olarak ayarlayın.
- **Yanlış model adı**: `provider/model` → CLI modeli eşlemesi için `modelAliases` kullanın.
- **Oturum sürekliliği yok**: `sessionArg` ayarlı olduğundan ve `sessionMode` değerinin
`none` olmadığından emin olun (`Codex CLI` şu anda JSON çıktısıyla devam edemez).
- **Görüntüler yok sayılıyor**: `imageArg` ayarlayın (ve CLI'nin dosya yollarını desteklediğini doğrulayın).
- **Yanlış model adı**: `provider/model` → CLI modeli eşlemesi için
`modelAliases` kullanın.
- **Oturum sürekliliği yok**: `sessionArg` ayarlı olduğundan ve `sessionMode`
değerinin `none` olmadığından emin olun (Codex CLI şu anda JSON çıktısıyla
devam edemez).
- **Görüntüler yok sayılıyor**: `imageArg` ayarlayın (ve CLI'ın dosya
yollarını desteklediğini doğrulayın).

File diff suppressed because it is too large Load Diff

View File

@ -1,38 +1,38 @@
---
read_when:
- Heartbeat temposunu veya mesajlaşmayı ayarlama
- Zamanlanmış görevler için heartbeat ile cron arasında karar verme
summary: Heartbeat polling mesajları ve bildirim kuralları
- Zamanlanmış görevler için Heartbeat ile Cron arasında karar verme
summary: Heartbeat yoklama mesajları ve bildirim kuralları
title: Heartbeat
x-i18n:
generated_at: "2026-04-11T02:44:36Z"
generated_at: "2026-04-22T08:54:51Z"
model: gpt-5.4
provider: openai
source_hash: e4485072148753076d909867a623696829bf4a82dcd0479b95d5d0cae43100b0
source_hash: 13004e4e20b02b08aaf16f22cdf664d0b59da69446ecb30453db51ffdfd1d267
source_path: gateway/heartbeat.md
workflow: 15
---
# Heartbeat (Gateway)
> **Heartbeat mi Cron mu?** Her birinin ne zaman kullanılacağına dair yönlendirme için [Automation & Tasks](/tr/automation) bölümüne bakın.
> **Heartbeat mi Cron mu?** Hangisinin ne zaman kullanılacağıyla ilgili yönlendirme için [Automation & Tasks](/tr/automation) bölümüne bakın.
Heartbeat, ana oturumda **periyodik agent dönüşleri** çalıştırır; böylece model, sizi spamlamadan dikkat gerektiren her şeyi ortaya çıkarabilir.
Heartbeat, sizi mesaj yağmuruna tutmadan dikkat gerektiren her şeyi modelin öne çıkarabilmesi için ana oturumda **periyodik agent turları** çalıştırır.
Heartbeat, zamanlanmış bir ana oturum dönüşüdür — [background task](/tr/automation/tasks) kaydı oluşturmaz.
Görev kayıtları, ayrık işler içindir (ACP çalıştırmaları, alt agent'lar, yalıtılmış cron işleri).
Heartbeat, zamanlanmış bir ana oturum turudur — [background task](/tr/automation/tasks) kaydı oluşturmaz.
Görev kayıtları ayrık işler içindir (ACP çalıştırmaları, alt agent'lar, yalıtılmış cron işleri).
Sorun giderme: [Scheduled Tasks](/tr/automation/cron-jobs#troubleshooting)
## Hızlı başlangıç (başlangıç düzeyi)
## Hızlı başlangıç (başlangıç seviyesi)
1. Heartbeat'i etkin bırakın (varsayılan `30m`, Anthropic OAuth/token kimlik doğrulaması için — Claude CLI yeniden kullanımı dahil — `1h`) veya kendi aralığınızı ayarlayın.
2. Agent çalışma alanında küçük bir `HEARTBEAT.md` kontrol listesi ya da `tasks:` bloğu oluşturun (isteğe bağlı ancak önerilir).
3. Heartbeat mesajlarının nereye gideceğine karar verin (`target: "none"` varsayılandır; son kişiye yönlendirmek için `target: "last"` ayarlayın).
1. Heartbeat'leri etkin bırakın (varsayılan `30m`, Anthropic OAuth/token kimlik doğrulaması için — Claude CLI yeniden kullanımı dahil — `1h`) ya da kendi temponuzu ayarlayın.
2. Agent çalışma alanında küçük bir `HEARTBEAT.md` kontrol listesi veya `tasks:` bloğu oluşturun (isteğe bağlı ama önerilir).
3. Heartbeat mesajlarının nereye gitmesi gerektiğine karar verin (varsayılan `target: "none"` değeridir; son kişiye yönlendirmek için `target: "last"` ayarlayın).
4. İsteğe bağlı: şeffaflık için heartbeat reasoning teslimini etkinleştirin.
5. İsteğe bağlı: heartbeat çalıştırmaları yalnızca `HEARTBEAT.md` gerektiriyorsa hafif bootstrap bağlamı kullanın.
5. İsteğe bağlı: heartbeat çalıştırmaları yalnızca `HEARTBEAT.md` gerektiriyorsa hafif başlangıç bağlamını kullanın.
6. İsteğe bağlı: her heartbeat'te tam konuşma geçmişinin gönderilmesini önlemek için yalıtılmış oturumları etkinleştirin.
7. İsteğe bağlı: heartbeat'leri etkin saatlerle sınırlandırın (yerel saat).
7. İsteğe bağlı: heartbeat'leri etkin saatlerle sınırlayın (yerel saat).
Örnek yapılandırma:
@ -43,8 +43,8 @@ Sorun giderme: [Scheduled Tasks](/tr/automation/cron-jobs#troubleshooting)
heartbeat: {
every: "30m",
target: "last", // son kişiye açık teslimat (varsayılan "none")
directPolicy: "allow", // varsayılan: doğrudan/DM hedeflerine izin ver; bastırmak için "block" ayarlayın
lightContext: true, // isteğe bağlı: yalnızca bootstrap dosyalarından HEARTBEAT.md enjekte edilir
directPolicy: "allow", // varsayılan: doğrudan/DM hedeflerine izin ver; bastırmak için "block" ayarla
lightContext: true, // isteğe bağlı: başlangıç dosyalarından yalnızca HEARTBEAT.md dosyasını ekle
isolatedSession: true, // isteğe bağlı: her çalıştırmada yeni oturum (konuşma geçmişi yok)
// activeHours: { start: "08:00", end: "24:00" },
// includeReasoning: true, // isteğe bağlı: ayrı bir `Reasoning:` mesajı da gönder
@ -56,25 +56,26 @@ Sorun giderme: [Scheduled Tasks](/tr/automation/cron-jobs#troubleshooting)
## Varsayılanlar
- Aralık: `30m` (veya algılanan kimlik doğrulama modu Anthropic OAuth/token olduğunda — Claude CLI yeniden kullanımı dahil — `1h`). `agents.defaults.heartbeat.every` ya da agent başına `agents.list[].heartbeat.every` ayarlayın; devre dışı bırakmak için `0m` kullanın.
- Aralık: `30m` (veya Anthropic OAuth/token kimlik doğrulaması algılanan kimlik doğrulama modu olduğunda — Claude CLI yeniden kullanımı dahil — `1h`). `agents.defaults.heartbeat.every` ya da agent başına `agents.list[].heartbeat.every` ayarlayın; devre dışı bırakmak için `0m` kullanın.
- İstem gövdesi (`agents.defaults.heartbeat.prompt` ile yapılandırılabilir):
`Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.`
- Heartbeat istemi, kullanıcı mesajı olarak **aynen** gönderilir. Sistem
istemi, yalnızca varsayılan agent için heartbeat etkinse ve çalıştırma dahili olarak işaretlenmişse bir “Heartbeat” bölümü içerir.
- Heartbeat'ler `0m` ile devre dışı bırakıldığında, modelin yalnızca heartbeat'e özel talimatları görmemesi için normal çalıştırmalarda da `HEARTBEAT.md`
bootstrap bağlamına dahil edilmez.
- Etkin saatler (`heartbeat.activeHours`) yapılandırılan saat diliminde denetlenir.
Pencerenin dışında heartbeat'ler, pencere içindeki bir sonraki tik'e kadar atlanır.
- Heartbeat istemi kullanıcı mesajı olarak **aynen** gönderilir. Sistem
istemi yalnızca varsayılan
agent için heartbeat'ler etkinse ve çalıştırma dahili olarak işaretlendiyse bir “Heartbeat” bölümü içerir.
- Heartbeat'ler `0m` ile devre dışı bırakıldığında, normal çalıştırmalar da başlangıç bağlamından `HEARTBEAT.md`
dosyasını çıkarır; böylece model yalnızca heartbeat'e özel yönergeleri görmez.
- Etkin saatler (`heartbeat.activeHours`) yapılandırılmış saat diliminde kontrol edilir.
Pencerenin dışında heartbeat'ler, pencere içindeki bir sonraki tick'e kadar atlanır.
## Heartbeat istemi ne için kullanılır
Varsayılan istem bilerek geniş tutulmuştur:
- **Arka plan görevleri**: “Consider outstanding tasks”, agent'ın
takipleri (gelen kutusu, takvim, hatırlatıcılar, kuyruktaki işler) gözden geçirmesini ve acil olan her şeyi ortaya çıkarmasını teşvik eder.
- **İnsan check-in'i**: “Checkup sometimes on your human during day time”, ara sıra hafif bir “ihtiyacın olan bir şey var mı?” mesajını teşvik eder; ancak yapılandırdığınız yerel saat dilimi kullanılarak gece spam'inden kaçınılır (bkz. [/concepts/timezone](/tr/concepts/timezone)).
- **Arka plan görevleri**: “Consider outstanding tasks” ifadesi agent'ı
takip edilmesi gerekenleri (gelen kutusu, takvim, hatırlatmalar, sıradaki işler) gözden geçirmeye ve acil olanları öne çıkarmaya yönlendirir.
- **İnsan kontrolü**: “Checkup sometimes on your human during day time” ifadesi ara sıra hafif bir “bir şeye ihtiyacın var mı?” mesajını teşvik eder, ancak yapılandırdığınız yerel saat dilimini kullanarak gece spam'ini önler (bkz. [/concepts/timezone](/tr/concepts/timezone)).
Heartbeat, tamamlanmış [background tasks](/tr/automation/tasks) işlemlerine tepki verebilir; ancak heartbeat çalıştırmasının kendisi bir görev kaydı oluşturmaz.
Heartbeat, tamamlanan [background tasks](/tr/automation/tasks) öğelerine tepki verebilir, ancak heartbeat çalıştırmasının kendisi bir görev kaydı oluşturmaz.
Bir heartbeat'in çok belirli bir şey yapmasını istiyorsanız (ör. “Gmail PubSub
istatistiklerini kontrol et” veya “gateway sağlığını doğrula”), `agents.defaults.heartbeat.prompt` (veya
@ -83,14 +84,15 @@ istatistiklerini kontrol et” veya “gateway sağlığını doğrula”), `age
## Yanıt sözleşmesi
- Dikkat gerektiren bir şey yoksa **`HEARTBEAT_OK`** ile yanıt verin.
- Heartbeat çalıştırmaları sırasında OpenClaw, **yanıtın başında veya sonunda**
göründüğünde `HEARTBEAT_OK` ifadesini bir onay olarak değerlendirir. Bu belirteç kaldırılır ve kalan içerik **`ackMaxChars`** (varsayılan: 300) ise yanıt bırakılır.
- `HEARTBEAT_OK`, bir yanıtın **ortasında** görünürse özel olarak
değerlendirilmez.
- Heartbeat çalıştırmaları sırasında OpenClaw, `HEARTBEAT_OK` ifadesini yanıtta
**başta veya sonda** göründüğünde bir onay olarak değerlendirir. Bu belirteç çıkarılır ve
kalan içerik **`ackMaxChars`** ise (varsayılan: 300) yanıt düşürülür.
- `HEARTBEAT_OK` yanıtın **ortasında** görünürse özel
bir işlem uygulanmaz.
- Uyarılar için **`HEARTBEAT_OK` eklemeyin**; yalnızca uyarı metnini döndürün.
Heartbeat dışında, bir mesajın başındaki/sonundaki başıboş `HEARTBEAT_OK`
kaldırılır ve günlüğe kaydedilir; yalnızca `HEARTBEAT_OK` olan bir mesaj bırakılır.
Heartbeat dışında, bir mesajın başında/sonunda yer alan başıboş `HEARTBEAT_OK`
çıkarılır ve günlüğe yazılır; yalnızca `HEARTBEAT_OK` içeren bir mesaj düşürülür.
## Yapılandırma
@ -101,9 +103,9 @@ kaldırılır ve günlüğe kaydedilir; yalnızca `HEARTBEAT_OK` olan bir mesaj
heartbeat: {
every: "30m", // varsayılan: 30m (0m devre dışı bırakır)
model: "anthropic/claude-opus-4-6",
includeReasoning: false, // varsayılan: false (mevcut olduğunda ayrı `Reasoning:` mesajı teslim et)
lightContext: false, // varsayılan: false; true, çalışma alanı bootstrap dosyalarından yalnızca HEARTBEAT.md dosyasını tutar
isolatedSession: false, // varsayılan: false; true, her heartbeat'i yeni bir oturumda çalıştırır (konuşma geçmişi yok)
includeReasoning: false, // varsayılan: false (mümkün olduğunda ayrı `Reasoning:` mesajı teslim et)
lightContext: false, // varsayılan: false; true olduğunda çalışma alanı başlangıç dosyalarından yalnızca HEARTBEAT.md tutulur
isolatedSession: false, // varsayılan: false; true olduğunda her heartbeat yeni bir oturumda çalışır (konuşma geçmişi yok)
target: "last", // varsayılan: none | seçenekler: last | none | <channel id> (çekirdek veya plugin, ör. "bluebubbles")
to: "+15551234567", // isteğe bağlı kanala özgü geçersiz kılma
accountId: "ops-bot", // isteğe bağlı çok hesaplı kanal kimliği
@ -118,18 +120,18 @@ kaldırılır ve günlüğe kaydedilir; yalnızca `HEARTBEAT_OK` olan bir mesaj
### Kapsam ve öncelik
- `agents.defaults.heartbeat`, genel heartbeat davranışını ayarlar.
- `agents.list[].heartbeat`, bunun üzerine birleştirilir; herhangi bir agent'ın `heartbeat` bloğu varsa, heartbeat'i **yalnızca bu agent'lar** çalıştırır.
- `agents.list[].heartbeat` bunun üstüne birleşir; herhangi bir agent'ta `heartbeat` bloğu varsa heartbeat'leri **yalnızca o agent'lar** çalıştırır.
- `channels.defaults.heartbeat`, tüm kanallar için görünürlük varsayılanlarını ayarlar.
- `channels.<channel>.heartbeat`, kanal varsayılanlarını geçersiz kılar.
- `channels.<channel>.accounts.<id>.heartbeat` (çok hesaplı kanallar), kanal başına ayarları geçersiz kılar.
- `channels.<channel>.accounts.<id>.heartbeat` (çok hesaplı kanallar) kanal başına ayarları geçersiz kılar.
### Agent başına heartbeat'ler
Herhangi bir `agents.list[]` girdisi bir `heartbeat` bloğu içeriyorsa, heartbeat'i
**yalnızca bu agent'lar** çalıştırır. Agent başına blok, `agents.defaults.heartbeat`
üzerine birleştirilir (böylece paylaşılan varsayılanları bir kez ayarlayıp agent başına geçersiz kılabilirsiniz).
Herhangi bir `agents.list[]` girdisi bir `heartbeat` bloğu içeriyorsa, heartbeat'leri
**yalnızca o agent'lar** çalıştırır. Agent başına blok `agents.defaults.heartbeat`
üstüne birleşir (böylece ortak varsayılanları bir kez ayarlayıp agent başına geçersiz kılabilirsiniz).
Örnek: iki agent, heartbeat'i yalnızca ikinci agent çalıştırır.
Örnek: iki agent, heartbeat'leri yalnızca ikinci agent çalıştırır.
```json5
{
@ -159,7 +161,7 @@ Herhangi bir `agents.list[]` girdisi bir `heartbeat` bloğu içeriyorsa, heartbe
### Etkin saatler örneği
Heartbeat'leri belirli bir saat diliminde mesai saatleriyle sınırlandırın:
Heartbeat'leri belirli bir saat diliminde mesai saatleriyle sınırlayın:
```json5
{
@ -171,7 +173,7 @@ Heartbeat'leri belirli bir saat diliminde mesai saatleriyle sınırlandırın:
activeHours: {
start: "09:00",
end: "22:00",
timezone: "America/New_York", // isteğe bağlı; ayarlıysa userTimezone kullanılır, aksi halde host saat dilimi
timezone: "America/New_York", // isteğe bağlı; ayarlıysa userTimezone kullanılır, aksi halde ana makine saat dilimi
},
},
},
@ -179,17 +181,17 @@ Heartbeat'leri belirli bir saat diliminde mesai saatleriyle sınırlandırın:
}
```
Bu pencerenin dışında (Doğu saatiyle sabah 9'dan önce veya akşam 10'dan sonra), heartbeat'ler atlanır. Pencere içindeki bir sonraki zamanlanmış tik normal şekilde çalışır.
Bu pencerenin dışında (Doğu saatiyle sabah 9'dan önce veya gece 10'dan sonra), heartbeat'ler atlanır. Pencere içindeki bir sonraki zamanlanmış tick normal şekilde çalışır.
### 7/24 kurulum
Heartbeat'lerin gün boyu çalışmasını istiyorsanız şu desenlerden birini kullanın:
Heartbeat'lerin tüm gün çalışmasını istiyorsanız şu kalıplardan birini kullanın:
- `activeHours` alanını tamamen atlayın (zaman penceresi kısıtlaması yoktur; bu varsayılan davranıştır).
- Tam günlük pencere ayarlayın: `activeHours: { start: "00:00", end: "24:00" }`.
- `activeHours` alanını tamamen atlayın (zaman penceresi kısıtlaması yoktur; varsayılan davranış budur).
- Tam günlük bir pencere ayarlayın: `activeHours: { start: "00:00", end: "24:00" }`.
Aynı `start` ve `end` saatini ayarlamayın (örneğin `08:00` ile `08:00`).
Bu, sıfır genişlikli pencere olarak değerlendirilir; bu yüzden heartbeat'ler her zaman atlanır.
Bu sıfır genişlikli pencere olarak değerlendirilir, bu yüzden heartbeat'ler her zaman atlanır.
### Çok hesaplı örnek
@ -204,7 +206,7 @@ Telegram gibi çok hesaplı kanallarda belirli bir hesabı hedeflemek için `acc
heartbeat: {
every: "1h",
target: "telegram",
to: "12345678:topic:42", // isteğe bağlı: belirli bir konu/başlık dizisine yönlendir
to: "12345678:topic:42", // isteğe bağlı: belirli bir konu/iş parçacığına yönlendir
accountId: "ops-bot",
},
},
@ -222,51 +224,54 @@ Telegram gibi çok hesaplı kanallarda belirli bir hesabı hedeflemek için `acc
### Alan notları
- `every`: heartbeat aralığı (süre dizgesi; varsayılan birim = dakika).
- `every`: heartbeat aralığı (süre dizesi; varsayılan birim = dakika).
- `model`: heartbeat çalıştırmaları için isteğe bağlı model geçersiz kılması (`provider/model`).
- `includeReasoning`: etkinleştirildiğinde, mevcut olduğunda ayrı `Reasoning:` mesajını da teslim eder (`/reasoning on` ile aynı yapı).
- `lightContext`: true olduğunda, heartbeat çalıştırmaları hafif bootstrap bağlamı kullanır ve çalışma alanı bootstrap dosyalarından yalnızca `HEARTBEAT.md` dosyasını tutar.
- `isolatedSession`: true olduğunda, her heartbeat önceki konuşma geçmişi olmadan yeni bir oturumda çalışır. Cron `sessionTarget: "isolated"` ile aynı yalıtım desenini kullanır. Heartbeat başına token maliyetini ciddi ölçüde azaltır. En yüksek tasarruf için `lightContext: true` ile birlikte kullanın. Teslimat yönlendirmesi yine ana oturum bağlamını kullanır.
- `includeReasoning`: etkinleştirildiğinde, mümkün olduğunda ayrı `Reasoning:` mesajını da teslim eder (`/reasoning on` ile aynı biçim).
- `lightContext`: true olduğunda, heartbeat çalıştırmaları hafif başlangıç bağlamı kullanır ve çalışma alanı başlangıç dosyalarından yalnızca `HEARTBEAT.md` dosyasını tutar.
- `isolatedSession`: true olduğunda, her heartbeat önceki konuşma geçmişi olmadan yeni bir oturumda çalışır. Cron `sessionTarget: "isolated"` ile aynı yalıtım düzenini kullanır. Heartbeat başına token maliyetini ciddi ölçüde azaltır. En yüksek tasarruf için `lightContext: true` ile birlikte kullanın. Teslim yönlendirmesi yine de ana oturum bağlamını kullanır.
- `session`: heartbeat çalıştırmaları için isteğe bağlı oturum anahtarı.
- `main` (varsayılan): agent ana oturumu.
- Açık oturum anahtarı (`openclaw sessions --json` veya [sessions CLI](/cli/sessions) çıktısından kopyalayın).
- Oturum anahtarı biçimleri: bkz. [Sessions](/tr/concepts/session) ve [Groups](/tr/channels/groups).
- Oturum anahtarı biçimleri için bkz. [Sessions](/tr/concepts/session) ve [Groups](/tr/channels/groups).
- `target`:
- `last`: son kullanılan harici kanala teslim et.
- açık kanal: yapılandırılmış herhangi bir kanal veya plugin kimliği; örneğin `discord`, `matrix`, `telegram` veya `whatsapp`.
- `none` (varsayılan): heartbeat'i çalıştırır ancak haricen **teslim etmez**.
- `directPolicy`: doğrudan/DM teslim davranışını kontrol eder:
- `allow` (varsayılan): doğrudan/DM heartbeat teslimine izin verir.
- `block`: doğrudan/DM teslimini bastırır (`reason=dm-blocked`).
- `to`: isteğe bağlı alıcı geçersiz kılması (kanala özgü kimlik; ör. WhatsApp için E.164 veya Telegram chat id). Telegram konu/thread'leri için `<chatId>:topic:<messageThreadId>` kullanın.
- `accountId`: çok hesaplı kanallar için isteğe bağlı hesap kimliği. `target: "last"` olduğunda, hesap kimliği destekliyorsa çözümlenen son kanala uygulanır; aksi halde yok sayılır. Hesap kimliği, çözümlenen kanal için yapılandırılmış bir hesapla eşleşmezse teslimat atlanır.
- açık kanal: örneğin `discord`, `matrix`, `telegram` veya `whatsapp` gibi yapılandırılmış herhangi bir kanal veya plugin kimliği.
- `none` (varsayılan): heartbeat'i çalıştır ama haricen **teslim etme**.
- `directPolicy`: doğrudan/DM teslim davranışını denetler:
- `allow` (varsayılan): doğrudan/DM heartbeat teslimine izin ver.
- `block`: doğrudan/DM teslimini bastır (`reason=dm-blocked`).
- `to`: isteğe bağlı alıcı geçersiz kılması (kanala özgü kimlik, ör. WhatsApp için E.164 veya Telegram sohbet kimliği). Telegram konuları/iş parçacıkları için `<chatId>:topic:<messageThreadId>` kullanın.
- `accountId`: çok hesaplı kanallar için isteğe bağlı hesap kimliği. `target: "last"` olduğunda hesap kimliği, hesap destekliyorsa çözümlenen son kanala uygulanır; aksi halde yok sayılır. Hesap kimliği çözümlenen kanal için yapılandırılmış bir hesapla eşleşmiyorsa teslimat atlanır.
- `prompt`: varsayılan istem gövdesini geçersiz kılar (birleştirilmez).
- `ackMaxChars`: `HEARTBEAT_OK` sonrasında teslimata izin verilmeden önce izin verilen en fazla karakter sayısı.
- `suppressToolErrorWarnings`: true olduğunda, heartbeat çalıştırmaları sırasında tool hata uyarısı payload'larını bastırır.
- `activeHours`: heartbeat çalıştırmalarını bir zaman penceresiyle sınırlandırır. `start` (HH:MM, dahil; gün başlangıcı için `00:00` kullanın), `end` (HH:MM, hariç; gün sonu için `24:00` kullanılabilir) ve isteğe bağlı `timezone` içeren nesne.
- Atlanırsa veya `"user"` ise: ayarlıysa `agents.defaults.userTimezone` kullanılır, aksi halde host sistem saat dilimine geri dönülür.
- `"local"`: her zaman host sistem saat dilimini kullanır.
- Herhangi bir IANA tanımlayıcısı (ör. `America/New_York`): doğrudan kullanılır; geçersizse yukarıdaki `"user"` davranışına geri dönülür.
- Etkin pencere için `start` ve `end` eşit olmamalıdır; eşit değerler sıfır genişlikli (her zaman pencere dışında) olarak değerlendirilir.
- Etkin pencerenin dışında, heartbeat'ler pencere içindeki bir sonraki tik'e kadar atlanır.
- `ackMaxChars`: teslimattan önce `HEARTBEAT_OK` sonrasında izin verilen en fazla karakter.
- `suppressToolErrorWarnings`: true olduğunda heartbeat çalıştırmaları sırasında araç hatası uyarı yüklerini bastırır.
- `activeHours`: heartbeat çalıştırmalarını bir zaman penceresiyle sınırlar. `start` (HH:MM, dahil; gün başlangıcı için `00:00` kullanın), `end` (HH:MM hariç; gün sonu için `24:00` kullanılabilir) ve isteğe bağlı `timezone` içeren nesne.
- Atlandığında veya `"user"` olduğunda: ayarlıysa `agents.defaults.userTimezone` kullanılır, aksi halde ana makinenin sistem saat dilimine geri düşülür.
- `"local"`: her zaman ana makinenin sistem saat dilimini kullanır.
- Herhangi bir IANA tanımlayıcısı (ör. `America/New_York`): doğrudan kullanılır; geçersizse yukarıdaki `"user"` davranışına geri düşülür.
- Etkin bir pencere için `start` ve `end` eşit olmamalıdır; eşit değerler sıfır genişlikli (her zaman pencere dışında) olarak değerlendirilir.
- Etkin pencerenin dışında heartbeat'ler, pencere içindeki bir sonraki tick'e kadar atlanır.
## Teslim davranışı
- Heartbeat'ler varsayılan olarak agent'ın ana oturumunda çalışır (`agent:<id>:<mainKey>`),
veya `session.scope = "global"` olduğunda `global` kapsamında çalışır. Bunu
Discord/WhatsApp/vb. gibi belirli bir kanal oturumuna geçirmek için `session` ayarlayın.
- `session` yalnızca çalıştırma bağlamını etkiler; teslimat `target` ve `to` tarafından kontrol edilir.
- Belirli bir kanal/alıcıya teslim etmek için `target` + `to` ayarlayın. `target: "last"` ile
teslimat, o oturum için son kullanılan harici kanalı kullanır.
- Heartbeat teslimatları varsayılan olarak doğrudan/DM hedeflerine izin verir. Heartbeat dönüşünü yine çalıştırırken doğrudan hedeflere gönderimi bastırmak için `directPolicy: "block"` ayarlayın.
veya `session.scope = "global"` olduğunda `global` içinde çalışır. Bunu
belirli bir kanal oturumuna (Discord/WhatsApp/vb.) geçersiz kılmak için `session` ayarlayın.
- `session` yalnızca çalıştırma bağlamını etkiler; teslimat `target` ve `to` tarafından denetlenir.
- Belirli bir kanala/alıcıya teslim etmek için `target` + `to` ayarlayın. `target: "last"` ile
teslimat, o oturum için son harici kanalı kullanır.
- Heartbeat teslimatları varsayılan olarak doğrudan/DM hedeflerine izin verir. Heartbeat turu yine çalışırken doğrudan hedefli gönderimleri bastırmak için `directPolicy: "block"` ayarlayın.
- Ana kuyruk meşgulse heartbeat atlanır ve daha sonra yeniden denenir.
- `target` harici bir hedefe çözülmezse çalıştırma yine gerçekleşir ancak
dışa giden mesaj gönderilmez.
- `showOk`, `showAlerts` ve `useIndicator` seçeneklerinin tümü devre dışıysa çalıştırma, en baştan `reason=alerts-disabled` olarak atlanır.
- Yalnızca uyarı teslimatı devre dışıysa, OpenClaw heartbeat'i yine çalıştırabilir, vadesi gelen görev zaman damgalarını güncelleyebilir, oturumun boşta kalma zaman damgasını geri yükleyebilir ve dışa dönük uyarı payload'unu bastırabilir.
- Yalnızca heartbeat'e ait yanıtlar oturumu canlı tutmaz; boşta kalma süresinin sona ermesi normal davranmaya devam etsin diye son `updatedAt`
değeri geri yüklenir.
- Ayrık [background tasks](/tr/automation/tasks), ana oturumun bir şeyi hızlıca fark etmesi gerektiğinde bir sistem olayı sıraya koyabilir ve heartbeat'i uyandırabilir. Bu uyandırma, heartbeat çalıştırmasını bir background task yapmaz.
- `target` hiçbir harici hedefe çözümlenmezse çalıştırma yine gerçekleşir ancak
giden mesaj gönderilmez.
- `showOk`, `showAlerts` ve `useIndicator` değerlerinin tümü devre dışıysa çalıştırma en baştan `reason=alerts-disabled` olarak atlanır.
- Yalnızca uyarı teslimatı devre dışıysa OpenClaw yine de heartbeat'i çalıştırabilir, zamanı gelen görev zaman damgalarını güncelleyebilir, oturumun boşta zaman damgasını geri yükleyebilir ve dışa dönük uyarı yükünü bastırabilir.
- Çözümlenen heartbeat hedefi yazıyor göstergesini destekliyorsa OpenClaw,
heartbeat çalıştırması etkin durumdayken yazıyor göstergesini gösterir. Bu, heartbeat'in
sohbet çıktısını göndereceği hedefin aynısını kullanır ve `typingMode: "never"` ile devre dışı bırakılır.
- Yalnızca heartbeat'e özgü yanıtlar oturumu canlı tutmaz; son `updatedAt`
geri yüklenir, böylece boşta kalma süresinin dolması normal davranır.
- Ayrık [background tasks](/tr/automation/tasks), ana oturumun bir şeyi hızlıca fark etmesi gerektiğinde bir sistem olayı sıraya alıp heartbeat'i uyandırabilir. Bu uyandırma, heartbeat çalıştırmasını bir background task yapmaz.
## Görünürlük denetimleri
@ -279,7 +284,7 @@ channels:
heartbeat:
showOk: false # HEARTBEAT_OK öğesini gizle (varsayılan)
showAlerts: true # Uyarı mesajlarını göster (varsayılan)
useIndicator: true # Gösterge olayları yay (varsayılan)
useIndicator: true # Gösterge olayları üret (varsayılan)
telegram:
heartbeat:
showOk: true # Telegram'da OK onaylarını göster
@ -290,17 +295,17 @@ channels:
showAlerts: false # Bu hesap için uyarı teslimatını bastır
```
Öncelik: hesap bazında → kanal bazında → kanal varsayılanları → yerleşik varsayılanlar.
Öncelik sırası: hesap başına → kanal başına → kanal varsayılanları → yerleşik varsayılanlar.
### Her bayrağın yaptığı şey
### Her bayrak ne yapar
- `showOk`: model yalnızca OK içeren bir yanıt döndürdüğünde `HEARTBEAT_OK` onayı gönderir.
- `showAlerts`: model OK olmayan bir yanıt döndürdüğünde uyarı içeriğini gönderir.
- `useIndicator`: UI durum yüzeyleri için gösterge olayları yayar.
- `useIndicator`: UI durum yüzeyleri için gösterge olayları üretir.
**Üçü de** false ise OpenClaw heartbeat çalıştırmasını tamamen atlar (model çağrısı yapılmaz).
### Kanal bazında ve hesap bazında örnekler
### Kanal başına ve hesap başına örnekler
```yaml
channels:
@ -321,32 +326,32 @@ channels:
showOk: true
```
### Yaygın desenler
### Yaygın kalıplar
| Amaç | Yapılandırma |
| ---------------------------------------- | ----------------------------------------------------------------------------------------- |
| Varsayılan davranış (sessiz OK'ler, uyarılar açık) | _(yapılandırma gerekmez)_ |
| Amaç | Yapılandırma |
| ---------------------------------------- | ---------------------------------------------------------------------------------------- |
| Varsayılan davranış (sessiz OK'ler, uyarılar açık) | _(yapılandırma gerekmez)_ |
| Tamamen sessiz (mesaj yok, gösterge yok) | `channels.defaults.heartbeat: { showOk: false, showAlerts: false, useIndicator: false }` |
| Yalnızca gösterge (mesaj yok) | `channels.defaults.heartbeat: { showOk: false, showAlerts: false, useIndicator: true }` |
| Yalnızca tek bir kanalda OK'ler | `channels.telegram.heartbeat: { showOk: true }` |
| Yalnızca gösterge (mesaj yok) | `channels.defaults.heartbeat: { showOk: false, showAlerts: false, useIndicator: true }` |
| Yalnızca tek bir kanalda OK'ler | `channels.telegram.heartbeat: { showOk: true }` |
## HEARTBEAT.md (isteğe bağlı)
Çalışma alanında bir `HEARTBEAT.md` dosyası varsa, varsayılan istem agent'a
onu okumasını söyler. Bunu “heartbeat kontrol listeniz” gibi düşünün: küçük, kararlı ve
Çalışma alanında bir `HEARTBEAT.md` dosyası varsa varsayılan istem,
agent'a bunu okumasını söyler. Bunu sizin “heartbeat kontrol listeniz” gibi düşünün: küçük, kararlı ve
her 30 dakikada bir eklenmesi güvenli.
Normal çalıştırmalarda `HEARTBEAT.md`, yalnızca varsayılan agent için heartbeat yönlendirmesi
etkin olduğunda enjekte edilir. Heartbeat temposunu `0m` ile devre dışı bırakmak veya
`includeSystemPromptSection: false` ayarlamak, onu normal bootstrap
Normal çalıştırmalarda `HEARTBEAT.md` yalnızca heartbeat yönlendirmesi
varsayılan agent için etkin olduğunda eklenir. Heartbeat temposunu `0m` ile devre dışı bırakmak veya
`includeSystemPromptSection: false` ayarlamak, bunu normal başlangıç
bağlamından çıkarır.
`HEARTBEAT.md` varsa ancak fiilen boşsa (yalnızca boş satırlar ve
`# Heading` gibi markdown başlıkları içeriyorsa), OpenClaw API çağrılarından tasarruf etmek için heartbeat çalıştırmasını atlar.
Bu atlama `reason=empty-heartbeat-file` olarak raporlanır.
Dosya yoksa heartbeat yine çalışır ve model ne yapacağına karar verir.
`HEARTBEAT.md` varsa ama fiilen boşsa (yalnızca boş satırlar ve
`# Heading` gibi markdown başlıkları içeriyorsa), OpenClaw API çağrılarını korumak için heartbeat çalıştırmasını atlar.
Bu atlama `reason=empty-heartbeat-file` olarak bildirilir.
Dosya eksikse heartbeat yine de çalışır ve model ne yapacağına karar verir.
İstem şişmesini önlemek için küçük tutun (kısa kontrol listesi veya hatırlatmalar).
İstem şişmesini önlemek için bunu küçük tutun (kısa kontrol listesi veya hatırlatmalar).
Örnek `HEARTBEAT.md`:
@ -354,13 +359,14 @@ Dosya yoksa heartbeat yine çalışır ve model ne yapacağına karar verir.
# Heartbeat kontrol listesi
- Hızlı tarama: gelen kutularında acil bir şey var mı?
- Gündüzse, bekleyen başka bir şey yoksa hafif bir check-in yap.
- Gündüz vaktiyse, başka bekleyen bir şey yoksa hafif bir yoklama yap.
- Bir görev engellendiyse, _neyin eksik olduğunu_ yaz ve Peter'a bir dahaki sefere sor.
```
### `tasks:` blokları
`HEARTBEAT.md`, heartbeat içindeki aralığa dayalı kontroller için küçük bir yapılandırılmış `tasks:` bloğunu da destekler.
`HEARTBEAT.md`, heartbeat içinde aralık tabanlı
kontroller için küçük ve yapılandırılmış bir `tasks:` bloğunu da destekler.
Örnek:
@ -369,80 +375,85 @@ tasks:
- name: inbox-triage
interval: 30m
prompt: "Check for urgent unread emails and flag anything time sensitive."
prompt: "Acil okunmamış e-postaları kontrol et ve zamana duyarlı olanları işaretle."
- name: calendar-scan
interval: 2h
prompt: "Check for upcoming meetings that need prep or follow-up."
prompt: "Hazırlık veya takip gerektiren yaklaşan toplantıları kontrol et."
# Ek talimatlar
# Ek yönergeler
- Uyarıları kısa tut.
- Vadesi gelen tüm görevlerden sonra dikkat gerektiren bir şey yoksa HEARTBEAT_OK ile yanıt ver.
- Zamanı gelen tüm görevlerden sonra dikkat gerektiren bir şey yoksa HEARTBEAT_OK ile yanıt ver.
```
Davranış:
- OpenClaw, `tasks:` bloğunu ayrıştırır ve her görevi kendi `interval` değerine göre kontrol eder.
- Bu tik için yalnızca **vadesi gelen** görevler heartbeat istemine eklenir.
- Vadesi gelen görev yoksa heartbeat tamamen atlanır (`reason=no-tasks-due`); böylece boşa model çağrısı yapılmaz.
- `HEARTBEAT.md` içindeki görev dışı içerik korunur ve vadesi gelen görev listesinden sonra ek bağlam olarak eklenir.
- Görev son çalıştırma zaman damgaları oturum durumunda (`heartbeatTaskState`) saklanır; böylece aralıklar normal yeniden başlatmalardan etkilenmez.
- OpenClaw `tasks:` bloğunu ayrıştırır ve her görevi kendi `interval` değerine göre kontrol eder.
- Yalnızca zamanı **gelmiş** görevler o tick için heartbeat istemine eklenir.
- Hiçbir görevin zamanı gelmemişse heartbeat tamamen atlanır (`reason=no-tasks-due`); böylece boşa model çağrısı yapılmaz.
- `HEARTBEAT.md` içindeki görev dışı içerik korunur ve zamanı gelmiş görev listesinden sonra ek bağlam olarak eklenir.
- Görev son çalıştırma zaman damgaları oturum durumunda (`heartbeatTaskState`) saklanır, böylece aralıklar normal yeniden başlatmalardan sonra da korunur.
- Görev zaman damgaları yalnızca heartbeat çalıştırması normal yanıt yolunu tamamladıktan sonra ilerletilir. Atlanan `empty-heartbeat-file` / `no-tasks-due` çalıştırmaları görevleri tamamlanmış olarak işaretlemez.
Görev modu, tümünü her tikte çalıştırma maliyetine katlanmadan tek bir heartbeat dosyasında birkaç periyodik kontrol tutmak istediğinizde kullanışlıdır.
Görev modu, her tick'te hepsi için ödeme yapmadan tek bir heartbeat dosyasında birkaç periyodik kontrol tutmak istediğinizde kullanışlıdır.
### Agent, HEARTBEAT.md dosyasını güncelleyebilir mi?
### Agent HEARTBEAT.md dosyasını güncelleyebilir mi?
Evet — eğer ondan bunu isterseniz.
Evet — isterseniz.
`HEARTBEAT.md`, agent çalışma alanındaki normal bir dosyadır; bu yüzden agent'a
(normal bir sohbette) şunun gibi bir şey söyleyebilirsiniz:
`HEARTBEAT.md`, agent çalışma alanındaki normal bir dosyadır; bu yüzden
agent'a (normal bir sohbette) şunlardan biri gibi bir şey söyleyebilirsiniz:
- “Günlük takvim kontrolü eklemek için `HEARTBEAT.md` dosyasını güncelle.”
- “`HEARTBEAT.md` dosyasını daha kısa ve gelen kutusu takiplerine odaklı olacak şekilde yeniden yaz.”
Bunun proaktif olarak olmasını istiyorsanız, heartbeat isteminize şu gibi açık bir satır da ekleyebilirsiniz: “Kontrol listesi bayatlamaya başlarsa, daha iyi bir sürümle HEARTBEAT.md dosyasını güncelle.”
Bunun proaktif olarak gerçekleşmesini istiyorsanız heartbeat isteminize
şu gibi açık bir satır da ekleyebilirsiniz: “Kontrol listesi bayatlamaya başlarsa, daha iyisiyle HEARTBEAT.md
dosyasını güncelle.”
Güvenlik notu: `HEARTBEAT.md` içine sırlar (API anahtarları, telefon numaraları, özel token'lar) koymayın — çünkü istem bağlamının bir parçası olur.
Güvenlik notu: `HEARTBEAT.md` içine sırlar (API anahtarları, telefon numaraları, özel token'lar) koymayın —
istem bağlamının bir parçası olur.
## Manuel uyandırma (isteğe bağlı)
## Elle uyandırma (istek üzerine)
Şununla bir sistem olayı sıraya koyabilir ve anında heartbeat tetikleyebilirsiniz:
Bir sistem olayı sıraya alıp anında heartbeat tetiklemek için şunu kullanabilirsiniz:
```bash
openclaw system event --text "Check for urgent follow-ups" --mode now
openclaw system event --text "Acil takipleri kontrol et" --mode now
```
Birden fazla agent için `heartbeat` yapılandırıldıysa, manuel uyandırma bu
agent heartbeat'lerinin her birini hemen çalıştırır.
Birden fazla agent'ta `heartbeat` yapılandırılmışsa, elle uyandırma bunların
her birinin heartbeat'ini hemen çalıştırır.
Bir sonraki zamanlanmış tik'i beklemek için `--mode next-heartbeat` kullanın.
Bir sonraki zamanlanmış tick'i beklemek için `--mode next-heartbeat` kullanın.
## Reasoning teslimi (isteğe bağlı)
Varsayılan olarak heartbeat'ler yalnızca son “answer” payload'unu teslim eder.
Varsayılan olarak heartbeat'ler yalnızca son “answer” yükünü teslim eder.
Şeffaflık istiyorsanız şunu etkinleştirin:
- `agents.defaults.heartbeat.includeReasoning: true`
Etkinleştirildiğinde heartbeat'ler ayrıca
`Reasoning:` önekiyle başlayan ayrı bir mesaj da teslim eder (`/reasoning on` ile aynı yapı). Bu, agent birden fazla oturum/codex yönetirken ve size neden ping atmaya karar verdiğini görmek istediğinizde yararlı olabilir
— ancak isteyeceğinizden daha fazla dahili ayrıntıyı da sızdırabilir. Grup sohbetlerinde bunu kapalı tutmak daha iyidir.
Etkinleştirildiğinde heartbeat'ler ayrıca başında
`Reasoning:` bulunan ayrı bir mesaj da teslim eder (`/reasoning on` ile aynı biçim). Bu, agent
birden fazla oturumu/codex'i yönetirken sizi neden dürtmeye karar verdiğini görmek istediğinizde yararlı olabilir
— ancak istemediğinizden daha fazla iç ayrıntı da sızdırabilir. Grup sohbetlerinde bunu
kapalı tutmanız tercih edilir.
## Maliyet farkındalığı
Heartbeat'ler tam agent dönüşleri çalıştırır. Daha kısa aralıklar daha fazla token harcar. Maliyeti azaltmak için:
Heartbeat'ler tam agent turları çalıştırır. Daha kısa aralıklar daha fazla token tüketir. Maliyeti azaltmak için:
- Tam konuşma geçmişinin gönderilmesini önlemek için `isolatedSession: true` kullanın (çalıştırma başına ~100K token'dan ~2-5K'ye düşer).
- Bootstrap dosyalarını yalnızca `HEARTBEAT.md` ile sınırlamak için `lightContext: true` kullanın.
- Daha ucuz bir `model` ayarlayın (ör. `ollama/llama3.2:1b`).
- Tam konuşma geçmişini göndermemek için `isolatedSession: true` kullanın (çalıştırma başına ~100K tokendan ~2-5K'ye düşer).
- Başlangıç dosyalarını yalnızca `HEARTBEAT.md` ile sınırlamak için `lightContext: true` kullanın.
- Daha ucuz bir `model` ayarlayın (örn. `ollama/llama3.2:1b`).
- `HEARTBEAT.md` dosyasını küçük tutun.
- Yalnızca dahili durum güncellemeleri istiyorsanız `target: "none"` kullanın.
## İlgili
- [Automation & Tasks](/tr/automation) — tüm otomasyon mekanizmaları tek bakışta
- [Automation & Tasks](/tr/automation) — tüm otomasyon mekanizmalarına hızlı bakış
- [Background Tasks](/tr/automation/tasks) — ayrık işlerin nasıl izlendiği
- [Timezone](/tr/concepts/timezone) — saat diliminin heartbeat zamanlamasını nasıl etkilediği
- [Troubleshooting](/tr/automation/cron-jobs#troubleshooting) — otomasyon sorunlarında hata ayıklama
- [Troubleshooting](/tr/automation/cron-jobs#troubleshooting) — otomasyon sorunlarını ayıklama

View File

@ -1,16 +1,16 @@
---
read_when:
- Yeni bir OpenClaw plugin'i oluşturmak istiyorsunuz
- Plugin geliştirme için hızlı bir başlangıca ihtiyacınız var
- Yeni bir OpenClaw Plugin'i oluşturmak istiyorsunuz
- Plugin geliştirme için hızlı bir başlangıç kılavuzuna ihtiyacınız var
- OpenClaw'a yeni bir kanal, sağlayıcı, araç veya başka bir yetenek ekliyorsunuz
sidebarTitle: Getting Started
summary: İlk OpenClaw plugin'inizi dakikalar içinde oluşturun
summary: İlk OpenClaw Plugin'inizi dakikalar içinde oluşturun
title: Plugin Geliştirme
x-i18n:
generated_at: "2026-04-07T08:47:01Z"
generated_at: "2026-04-22T08:54:51Z"
model: gpt-5.4
provider: openai
source_hash: 509c1f5abe1a0a74966054ed79b71a1a7ee637a43b1214c424acfe62ddf48eef
source_hash: 67368be311537f984f14bea9239b88c3eccf72a76c9dd1347bb041e02697ae24
source_path: plugins/building-plugins.md
workflow: 15
---
@ -19,47 +19,46 @@ x-i18n:
Plugin'ler OpenClaw'ı yeni yeteneklerle genişletir: kanallar, model sağlayıcıları,
konuşma, gerçek zamanlı transkripsiyon, gerçek zamanlı ses, medya anlama, görsel
üretimi, video üretimi, web getirme, web araması, ajan araçları veya bunların
oluşturma, video oluşturma, web getirme, web arama, ajan araçları veya bunların
herhangi bir kombinasyonu.
Plugin'inizi OpenClaw deposuna eklemeniz gerekmez. Onu
[ClawHub](/tr/tools/clawhub) veya npm üzerinde yayınlayın; kullanıcılar da
`openclaw plugins install <package-name>` ile kurar. OpenClaw önce ClawHub'ı dener ve
ardından otomatik olarak npm'e fallback yapar.
Plugin'inizi OpenClaw deposuna eklemeniz gerekmez. [ClawHub](/tr/tools/clawhub) veya npm'e
yayınlayın; kullanıcılar `openclaw plugins install <package-name>` ile kurar.
OpenClaw önce ClawHub'ı dener ve otomatik olarak npm'e geri düşer.
## Ön koşullar
- Node >= 22 ve bir paket yöneticisi (npm veya pnpm)
- TypeScript (ESM) bilgisi
- Repo içi plugin'ler için: deponun klonlanmış olması ve `pnpm install` çalıştırılmış olması
- Repo içi Plugin'ler için: depo klonlanmış olmalı ve `pnpm install` çalıştırılmış olmalı
## Ne tür bir plugin?
## Ne tür bir Plugin?
<CardGroup cols={3}>
<Card title="Kanal plugin'i" icon="messages-square" href="/tr/plugins/sdk-channel-plugins">
<Card title="Kanal Plugin'i" icon="messages-square" href="/tr/plugins/sdk-channel-plugins">
OpenClaw'ı bir mesajlaşma platformuna bağlayın (Discord, IRC vb.)
</Card>
<Card title="Sağlayıcı plugin'i" icon="cpu" href="/tr/plugins/sdk-provider-plugins">
<Card title="Sağlayıcı Plugin'i" icon="cpu" href="/tr/plugins/sdk-provider-plugins">
Bir model sağlayıcısı ekleyin (LLM, proxy veya özel uç nokta)
</Card>
<Card title="Araç / hook plugin'i" icon="wrench">
Ajan araçlarını, olay hook'larını veya hizmetleri kaydedin — aşağıdan devam edin
<Card title="Araç / hook Plugin'i" icon="wrench">
Ajan araçları, olay hook'ları veya hizmetler kaydedin — aşağıdan devam edin
</Card>
</CardGroup>
Bir kanal plugin'i isteğe bağlıysa ve onboarding/kurulum
çalıştığında kurulu olmayabilirse,
`openclaw/plugin-sdk/channel-setup` içinden `createOptionalChannelSetupSurface(...)` kullanın. Bu,
kurulum gereksinimini duyuran bir kurulum bağdaştırıcısı + sihirbaz çifti üretir ve
plugin kurulana kadar gerçek yapılandırma yazımlarında kapalı şekilde başarısız olur.
Bir kanal Plugin'i isteğe bağlıysa ve onboarding/kurulum çalıştığında kurulu
olmayabilecekse, `openclaw/plugin-sdk/channel-setup` içindeki
`createOptionalChannelSetupSurface(...)` kullanın. Bu, kurulum gereksinimini
bildiren bir kurulum bağdaştırıcısı + sihirbaz çifti üretir ve Plugin kurulana
kadar gerçek yapılandırma yazımlarında kapalı şekilde başarısız olur.
## Hızlı başlangıç: araç plugin'i
## Hızlı başlangıç: araç Plugin'i
Bu rehber, bir ajan aracı kaydeden minimal bir plugin oluşturur. Kanal
ve sağlayıcı plugin'leri için yukarıda bağlantısı verilen özel kılavuzlar vardır.
Bu rehber, bir ajan aracı kaydeden minimal bir Plugin oluşturur. Kanal
ve sağlayıcı Plugin'leri için yukarıda bağlantısı verilen özel kılavuzlar vardır.
<Steps>
<Step title="Paketi ve manifest'i oluşturun">
<Step title="Paketi ve manifest dosyasını oluşturun">
<CodeGroup>
```json package.json
{
@ -93,9 +92,9 @@ ve sağlayıcı plugin'leri için yukarıda bağlantısı verilen özel kılavuz
```
</CodeGroup>
Her plugin'in, yapılandırması olmasa bile bir manifest'e ihtiyacı vardır. Tam
şema için bkz. [Manifest](/tr/plugins/manifest). Kanonik ClawHub
yayınlama parçacıkları `docs/snippets/plugin-publish/` içinde yer alır.
Her Plugin'in, yapılandırması olmasa bile bir manifest dosyasına ihtiyacı vardır. Tam şema için
[Manifest](/tr/plugins/manifest) bölümüne bakın. Kanonik ClawHub
yayınlama parçacıkları `docs/snippets/plugin-publish/` içinde bulunur.
</Step>
@ -123,15 +122,15 @@ ve sağlayıcı plugin'leri için yukarıda bağlantısı verilen özel kılavuz
});
```
`definePluginEntry`, kanal olmayan plugin'ler içindir. Kanallar için
`defineChannelPluginEntry` kullanın — bkz. [Channel Plugins](/tr/plugins/sdk-channel-plugins).
Tam giriş noktası seçenekleri için bkz. [Entry Points](/tr/plugins/sdk-entrypoints).
`definePluginEntry`, kanal olmayan Plugin'ler içindir. Kanallar için
`defineChannelPluginEntry` kullanın — bkz. [Kanal Plugin'leri](/tr/plugins/sdk-channel-plugins).
Giriş noktası seçeneklerinin tamamı için bkz. [Giriş Noktaları](/tr/plugins/sdk-entrypoints).
</Step>
<Step title="Test edin ve yayınlayın">
**Harici plugin'ler:** ClawHub ile doğrulayın ve yayınlayın, ardından kurun:
**Harici Plugin'ler:** ClawHub ile doğrulayın ve yayınlayın, ardından kurun:
```bash
clawhub package publish your-org/your-plugin --dry-run
@ -139,10 +138,10 @@ ve sağlayıcı plugin'leri için yukarıda bağlantısı verilen özel kılavuz
openclaw plugins install clawhub:@myorg/openclaw-my-plugin
```
OpenClaw, `@myorg/openclaw-my-plugin` gibi çıplak paket belirtimleri için
npm'den önce ClawHub'ı da kontrol eder.
OpenClaw ayrıca `@myorg/openclaw-my-plugin` gibi yalın paket tanımlarında
npm'den önce ClawHub'ı kontrol eder.
**Repo içi plugin'ler:** birlikte gelen plugin workspace ağacının altına yerleştirin — otomatik olarak keşfedilir.
**Repo içi Plugin'ler:** paketle birlikte gelen Plugin çalışma alanı ağacının altına yerleştirin — otomatik olarak keşfedilir.
```bash
pnpm test -- <bundled-plugin-root>/my-plugin/
@ -153,57 +152,67 @@ ve sağlayıcı plugin'leri için yukarıda bağlantısı verilen özel kılavuz
## Plugin yetenekleri
Tek bir plugin, `api` nesnesi aracılığıyla istediği kadar yetenek kaydedebilir:
Tek bir Plugin, `api` nesnesi üzerinden istenen sayıda yetenek kaydedebilir:
| Yetenek | Kayıt yöntemi | Ayrıntılı kılavuz |
| Yetenek | Kayıt yöntemi | Ayrıntılı kılavuz |
| --------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------- |
| Metin çıkarımı (LLM) | `api.registerProvider(...)` | [Provider Plugins](/tr/plugins/sdk-provider-plugins) |
| CLI çıkarım arka ucu | `api.registerCliBackend(...)` | [CLI Backends](/tr/gateway/cli-backends) |
| Kanal / mesajlaşma | `api.registerChannel(...)` | [Channel Plugins](/tr/plugins/sdk-channel-plugins) |
| Konuşma (TTS/STT) | `api.registerSpeechProvider(...)` | [Provider Plugins](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Gerçek zamanlı transkripsiyon | `api.registerRealtimeTranscriptionProvider(...)` | [Provider Plugins](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Gerçek zamanlı ses | `api.registerRealtimeVoiceProvider(...)` | [Provider Plugins](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Medya anlama | `api.registerMediaUnderstandingProvider(...)` | [Provider Plugins](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Görsel üretimi | `api.registerImageGenerationProvider(...)` | [Provider Plugins](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Müzik üretimi | `api.registerMusicGenerationProvider(...)` | [Provider Plugins](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Video üretimi | `api.registerVideoGenerationProvider(...)` | [Provider Plugins](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Web getirme | `api.registerWebFetchProvider(...)` | [Provider Plugins](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Web araması | `api.registerWebSearchProvider(...)` | [Provider Plugins](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Metin çıkarımı (LLM) | `api.registerProvider(...)` | [Sağlayıcı Plugin'leri](/tr/plugins/sdk-provider-plugins) |
| CLI çıkarım arka ucu | `api.registerCliBackend(...)` | [CLI Arka Uçları](/tr/gateway/cli-backends) |
| Kanal / mesajlaşma | `api.registerChannel(...)` | [Kanal Plugin'leri](/tr/plugins/sdk-channel-plugins) |
| Konuşma (TTS/STT) | `api.registerSpeechProvider(...)` | [Sağlayıcı Plugin'leri](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Gerçek zamanlı transkripsiyon | `api.registerRealtimeTranscriptionProvider(...)` | [Sağlayıcı Plugin'leri](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Gerçek zamanlı ses | `api.registerRealtimeVoiceProvider(...)` | [Sağlayıcı Plugin'leri](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Medya anlama | `api.registerMediaUnderstandingProvider(...)` | [Sağlayıcı Plugin'leri](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Görsel oluşturma | `api.registerImageGenerationProvider(...)` | [Sağlayıcı Plugin'leri](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Müzik oluşturma | `api.registerMusicGenerationProvider(...)` | [Sağlayıcı Plugin'leri](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Video oluşturma | `api.registerVideoGenerationProvider(...)` | [Sağlayıcı Plugin'leri](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Web getirme | `api.registerWebFetchProvider(...)` | [Sağlayıcı Plugin'leri](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Web arama | `api.registerWebSearchProvider(...)` | [Sağlayıcı Plugin'leri](/tr/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
| Gömülü Pi uzantısı | `api.registerEmbeddedExtensionFactory(...)` | [SDK Genel Bakış](/tr/plugins/sdk-overview#registration-api) |
| Ajan araçları | `api.registerTool(...)` | Aşağıda |
| Özel komutlar | `api.registerCommand(...)` | [Entry Points](/tr/plugins/sdk-entrypoints) |
| Olay hook'ları | `api.registerHook(...)` | [Entry Points](/tr/plugins/sdk-entrypoints) |
| HTTP rotaları | `api.registerHttpRoute(...)` | [Internals](/tr/plugins/architecture#gateway-http-routes) |
| CLI alt komutları | `api.registerCli(...)` | [Entry Points](/tr/plugins/sdk-entrypoints) |
| Özel komutlar | `api.registerCommand(...)` | [Giriş Noktaları](/tr/plugins/sdk-entrypoints) |
| Olay hook'ları | `api.registerHook(...)` | [Giriş Noktaları](/tr/plugins/sdk-entrypoints) |
| HTTP rotaları | `api.registerHttpRoute(...)` | [İç Yapılar](/tr/plugins/architecture#gateway-http-routes) |
| CLI alt komutları | `api.registerCli(...)` | [Giriş Noktaları](/tr/plugins/sdk-entrypoints) |
Tam kayıt API'si için bkz. [SDK Overview](/tr/plugins/sdk-overview#registration-api).
Tam kayıt API'si için bkz. [SDK Genel Bakış](/tr/plugins/sdk-overview#registration-api).
Bir Plugin, son araç sonucu mesajı gönderilmeden önce async `tool_result`
yeniden yazımı gibi Pi-yerel embedded-runner hook'larına ihtiyaç duyuyorsa
`api.registerEmbeddedExtensionFactory(...)` kullanın. İş, Pi uzantısı zamanlamasına
ihtiyaç duymuyorsa normal OpenClaw Plugin hook'larını tercih edin.
Plugin'iniz özel gateway RPC yöntemleri kaydediyorsa, bunları
plugin'e özgü bir önek altında tutun. Çekirdek yönetici ad alanları (`config.*`,
`exec.approvals.*`, `wizard.*`, `update.*`) ayrılmış kalır ve bir plugin daha dar
bir kapsam istese bile her zaman `operator.admin` olarak çözülür.
Plugin'e özgü bir ön ek altında tutun. Çekirdek yönetici ad alanları (`config.*`,
`exec.approvals.*`, `wizard.*`, `update.*`) ayrılmış durumda kalır ve bir Plugin
daha dar bir kapsam istese bile her zaman `operator.admin` olarak çözülür.
Akılda tutulması gereken hook koruma semantiği:
Aklınızda bulundurmanız gereken hook koruma semantik kuralları:
- `before_tool_call`: `{ block: true }` terminaldir ve daha düşük öncelikli işleyicileri durdurur.
- `before_tool_call`: `{ block: false }` karar yokmuş gibi değerlendirilir.
- `before_tool_call`: `{ requireApproval: true }` ajan yürütmesini duraklatır ve kullanıcıdan exec approval overlay, Telegram düğmeleri, Discord etkileşimleri veya herhangi bir kanaldaki `/approve` komutu aracılığıyla onay ister.
- `before_tool_call`: `{ block: false }` karar verilmemiş olarak değerlendirilir.
- `before_tool_call`: `{ requireApproval: true }` ajan yürütmesini duraklatır ve exec onay katmanı, Telegram düğmeleri, Discord etkileşimleri veya herhangi bir kanaldaki `/approve` komutu aracılığıyla kullanıcıdan onay ister.
- `before_install`: `{ block: true }` terminaldir ve daha düşük öncelikli işleyicileri durdurur.
- `before_install`: `{ block: false }` karar yokmuş gibi değerlendirilir.
- `before_install`: `{ block: false }` karar verilmemiş olarak değerlendirilir.
- `message_sending`: `{ cancel: true }` terminaldir ve daha düşük öncelikli işleyicileri durdurur.
- `message_sending`: `{ cancel: false }` karar yokmuş gibi değerlendirilir.
- `message_sending`: `{ cancel: false }` karar verilmemiş olarak değerlendirilir.
`/approve` komutu, sınırlandırılmış fallback ile hem exec hem de plugin onaylarını işler: bir exec approval kimliği bulunamadığında, OpenClaw aynı kimliği plugin onayları üzerinden yeniden dener. Plugin onay yönlendirmesi, yapılandırmada `approvals.plugin` aracılığıyla bağımsız olarak yapılandırılabilir.
`/approve` komutu hem exec hem de Plugin onaylarını sınırlı geri dönüşle işler:
bir exec onay kimliği bulunamadığında, OpenClaw aynı kimliği Plugin onayları
üzerinden yeniden dener. Plugin onayı yönlendirmesi yapılandırmada
`approvals.plugin` üzerinden bağımsız olarak yapılandırılabilir.
Özel onay altyapısının aynı sınırlandırılmış fallback durumunu algılaması gerekiyorsa,
onay süresi dolma dizgelerini elle eşleştirmek yerine
`openclaw/plugin-sdk/error-runtime` içinden `isApprovalNotFoundError` kullanın.
Özel onay altyapısının aynı sınırlı geri dönüş durumunu algılaması gerekiyorsa,
onay süresi dolma dizelerini elle eşleştirmek yerine
`openclaw/plugin-sdk/error-runtime` içindeki `isApprovalNotFoundError`
kullanmayı tercih edin.
Ayrıntılar için bkz. [SDK Overview hook decision semantics](/tr/plugins/sdk-overview#hook-decision-semantics).
Ayrıntılar için bkz. [SDK Genel Bakış hook karar semantiği](/tr/plugins/sdk-overview#hook-decision-semantics).
## Ajan araçlarını kaydetme
Araçlar, LLM'nin çağırabileceği türlendirilmiş işlevlerdir. Zorunlu (her zaman
kullanılabilir) veya isteğe bağlı (kullanıcının katılımı gerekir) olabilirler:
Araçlar, LLM'nin çağırabildiği türlendirilmiş fonksiyonlardır. Zorunlu olabilirler
(her zaman kullanılabilir) veya isteğe bağlı olabilirler (kullanıcının açıkça etkinleştirmesi gerekir):
```typescript
register(api) {
@ -241,12 +250,12 @@ Kullanıcılar isteğe bağlı araçları yapılandırmada etkinleştirir:
```
- Araç adları çekirdek araçlarla çakışmamalıdır (çakışmalar atlanır)
- Yan etkileri veya ek ikili gereksinimleri olan araçlar için `optional: true` kullanın
- Kullanıcılar, `tools.allow` içine plugin kimliğini ekleyerek bir plugin'deki tüm araçları etkinleştirebilir
- Yan etkileri olan veya ek ikili dosya gereksinimleri bulunan araçlar için `optional: true` kullanın
- Kullanıcılar `tools.allow` alanına Plugin kimliğini ekleyerek bir Plugin'deki tüm araçları etkinleştirebilir
## Import kuralları
## İçe aktarma kuralları
Her zaman odaklanmış `openclaw/plugin-sdk/<subpath>` yollarından import edin:
Her zaman odaklı `openclaw/plugin-sdk/<subpath>` yollarından içe aktarın:
```typescript
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
@ -256,74 +265,74 @@ import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
import { ... } from "openclaw/plugin-sdk";
```
Tam alt yol başvurusu için bkz. [SDK Overview](/tr/plugins/sdk-overview).
Alt yol referansının tamamı için bkz. [SDK Genel Bakış](/tr/plugins/sdk-overview).
Plugin'inizin içinde, dahili import'lar için yerel barrel dosyalarını (`api.ts`, `runtime-api.ts`) kullanın —
kendi plugin'inizi asla kendi SDK yolu üzerinden import etmeyin.
Plugin'iniz içinde, içe aktarmalar için yerel barrel dosyaları (`api.ts`, `runtime-api.ts`) kullanın —
kendi Plugin'inizi asla SDK yolu üzerinden içe aktarmayın.
Sağlayıcı plugin'leri için, gerçekten genel bir yüzey değilse sağlayıcıya özgü yardımcıları bu paket kökü
barrel dosyalarında tutun. Güncel birlikte gelen örnekler:
Sağlayıcı Plugin'leri için, sağlayıcıya özgü yardımcıları gerçekten genel bir
ayrım noktası olmadıkça bu paket kökü barrel dosyalarında tutun. Mevcut paketle
birlikte gelen örnekler:
- Anthropic: Claude akış sarmalayıcıları ve `service_tier` / beta yardımcıları
- OpenAI: sağlayıcı oluşturucular, varsayılan model yardımcıları, gerçek zamanlı sağlayıcılar
- OpenRouter: sağlayıcı oluşturucu ve onboarding/config yardımcıları
- OpenAI: sağlayıcı oluşturucuları, varsayılan model yardımcıları, gerçek zamanlı sağlayıcılar
- OpenRouter: sağlayıcı oluşturucu ile onboarding/yapılandırma yardımcıları
Bir yardımcı yalnızca tek bir birlikte gelen sağlayıcı paketi içinde yararlıysa,
onu `openclaw/plugin-sdk/*` içine yükseltmek yerine o
paket kökü yüzeyinde tutun.
Bir yardımcı yalnızca tek bir paketle birlikte gelen sağlayıcı paketi içinde
işe yarıyorsa, onu `openclaw/plugin-sdk/*` içine taşımak yerine o paket kökü
ayrım noktasında tutun.
Üretilmiş bazı `openclaw/plugin-sdk/<bundled-id>` yardımcı yüzeyleri,
birlikte gelen plugin bakımı ve uyumluluk için hâlâ mevcuttur; örneğin
`plugin-sdk/feishu-setup` veya `plugin-sdk/zalo-setup`. Bunları,
yeni üçüncü taraf plugin'ler için varsayılan desen olarak değil, ayrılmış
yüzeyler olarak değerlendirin.
Paketle birlikte gelen Plugin bakımı ve uyumluluk için bazı üretilmiş
`openclaw/plugin-sdk/<bundled-id>` yardımcı ayrım noktaları hâlâ mevcuttur; örneğin
`plugin-sdk/feishu-setup` veya `plugin-sdk/zalo-setup`. Bunları yeni üçüncü taraf
Plugin'ler için varsayılan desen olarak değil, ayrılmış yüzeyler olarak değerlendirin.
## Gönderim öncesi kontrol listesi
<Check>**package.json** dosyasında doğru `openclaw` meta verileri var</Check>
<Check>**openclaw.plugin.json** manifest'i mevcut ve geçerli</Check>
<Check>**openclaw.plugin.json** manifest dosyası mevcut ve geçerli</Check>
<Check>Giriş noktası `defineChannelPluginEntry` veya `definePluginEntry` kullanıyor</Check>
<Check>Tüm import'lar odaklanmış `plugin-sdk/<subpath>` yollarını kullanıyor</Check>
<Check>Dahili import'lar SDK self-import'ları değil, yerel modüller kullanıyor</Check>
<Check>Tüm içe aktarmalar odaklı `plugin-sdk/<subpath>` yollarını kullanıyor</Check>
<Check>İç içe aktarmalar SDK self-import'ları değil, yerel modülleri kullanıyor</Check>
<Check>Testler geçiyor (`pnpm test -- <bundled-plugin-root>/my-plugin/`)</Check>
<Check>`pnpm check` geçiyor (repo içi plugin'ler)</Check>
<Check>`pnpm check` geçiyor (repo içi Plugin'ler)</Check>
## Beta Sürüm Testi
1. [openclaw/openclaw](https://github.com/openclaw/openclaw/releases) üzerindeki GitHub sürüm etiketlerini izleyin ve `Watch` > `Releases` üzerinden abone olun. Beta etiketleri `v2026.3.N-beta.1` gibi görünür. Sürüm duyuruları için resmi OpenClaw X hesabı [@openclaw](https://x.com/openclaw) bildirimlerini de açabilirsiniz.
2. Eşit görünür görünmez plugin'inizi beta etikete karşı test edin. Kararlı sürümden önceki pencere genellikle yalnızca birkaç saattir.
3. Testten sonra `plugin-forum` Discord kanalındaki plugin dizinizde `all good` veya neyin bozulduğunu yazarak paylaşım yapın. Henüz bir diziniz yoksa oluşturun.
4. Bir şey bozulursa, `Beta blocker: <plugin-name> - <summary>` başlıklı bir issue açın veya mevcut bir issue'yu güncelleyin ve `beta-blocker` etiketini uygulayın. Issue bağlantısını dizinize ekleyin.
5. `main` için `fix(<plugin-id>): beta blocker - <summary>` başlıklı bir PR açın ve issue'yu hem PR içinde hem de Discord dizinizde bağlayın. Katkıda bulunanlar PR'leri etiketleyemez, bu nedenle başlık bakımcılar ve otomasyon için PR tarafındaki sinyaldir. PR'si olan engelleyiciler birleştirilir; olmayanlar yine de yayına girebilir. Bakımcılar beta testi sırasında bu dizileri izler.
1. [openclaw/openclaw](https://github.com/openclaw/openclaw/releases) üzerindeki GitHub sürüm etiketlerini takip edin ve `Watch` > `Releases` üzerinden abone olun. Beta etiketleri `v2026.3.N-beta.1` gibi görünür. Sürüm duyuruları için resmi OpenClaw X hesabı [@openclaw](https://x.com/openclaw) bildirimlerini de açabilirsiniz.
2. Beta etiketi görünür görünmez Plugin'inizi buna karşı test edin. Stabil sürüm öncesindeki pencere genellikle yalnızca birkaç saattir.
3. Testten sonra `plugin-forum` Discord kanalında Plugin'inizin başlığında `all good` ya da neyin bozulduğunu yazın. Henüz bir başlığınız yoksa bir tane oluşturun.
4. Bir şey bozulursa `Beta blocker: <plugin-name> - <summary>` başlıklı bir issue açın veya mevcut issue'yu güncelleyin ve `beta-blocker` etiketini uygulayın. Issue bağlantısını başlığınıza ekleyin.
5. `main` için `fix(<plugin-id>): beta blocker - <summary>` başlıklı bir PR açın ve issue'yu hem PR'de hem de Discord başlığınızda bağlantılayın. Katkıda bulunanlar PR'leri etiketleyemez, bu nedenle başlık bakımcılar ve otomasyon için PR tarafındaki sinyaldir. PR'si olan engelleyiciler birleştirilir; PR'siz engelleyiciler buna rağmen yayınlanabilir. Bakımcılar beta testi sırasında bu başlıkları izler.
6. Sessizlik yeşil anlamına gelir. Bu pencereyi kaçırırsanız, düzeltmeniz büyük olasılıkla bir sonraki döngüye kalır.
## Sonraki adımlar
<CardGroup cols={2}>
<Card title="Kanal Plugin'leri" icon="messages-square" href="/tr/plugins/sdk-channel-plugins">
Bir mesajlaşma kanal plugin'i oluşturun
Bir mesajlaşma kanal Plugin'i geliştirin
</Card>
<Card title="Sağlayıcı Plugin'leri" icon="cpu" href="/tr/plugins/sdk-provider-plugins">
Bir model sağlayıcı plugin'i oluşturun
Bir model sağlayıcı Plugin'i geliştirin
</Card>
<Card title="SDK Genel Bakış" icon="book-open" href="/tr/plugins/sdk-overview">
Import eşlemi ve kayıt API başvurusu
İçe aktarma eşlemesi ve kayıt API referansı
</Card>
<Card title="Çalışma Zamanı Yardımcıları" icon="settings" href="/tr/plugins/sdk-runtime">
api.runtime üzerinden TTS, arama, alt ajan
`api.runtime` üzerinden TTS, arama, alt ajan
</Card>
<Card title="Test" icon="test-tubes" href="/tr/plugins/sdk-testing">
Test yardımcıları ve kalıpları
Test yardımcı araçları ve kalıpları
</Card>
<Card title="Plugin Manifest'i" icon="file-json" href="/tr/plugins/manifest">
Tam manifest şeması başvurusu
<Card title="Plugin Manifest" icon="file-json" href="/tr/plugins/manifest">
Tam manifest şeması referansı
</Card>
</CardGroup>
## İlgili
- [Plugin Mimarisi](/tr/plugins/architecture) — dahili mimariye derin bakış
- [SDK Genel Bakış](/tr/plugins/sdk-overview) — Plugin SDK başvurusu
- [Manifest](/tr/plugins/manifest) — plugin manifest biçimi
- [Channel Plugins](/tr/plugins/sdk-channel-plugins) — kanal plugin'leri geliştirme
- [Provider Plugins](/tr/plugins/sdk-provider-plugins) — sağlayıcı plugin'leri geliştirme
- [Plugin Mimarisi](/tr/plugins/architecture) — iç mimariye derinlemesine bakış
- [SDK Genel Bakış](/tr/plugins/sdk-overview) — Plugin SDK referansı
- [Manifest](/tr/plugins/manifest) — Plugin manifest biçimi
- [Kanal Plugin'leri](/tr/plugins/sdk-channel-plugins) — kanal Plugin'leri geliştirme
- [Sağlayıcı Plugin'leri](/tr/plugins/sdk-provider-plugins) — sağlayıcı Plugin'leri geliştirme

View File

@ -1,63 +1,66 @@
---
read_when:
- Paketle gelen Codex app-server harness'ı kullanmak istiyorsunuz
- Codex model ref'lerine ve yapılandırma örneklerine ihtiyacınız var
- Yalnızca Codex dağıtımları için Pi fallback'ini devre dışı bırakmak istiyorsunuz
summary: Paketle gelen Codex app-server harness üzerinden OpenClaw gömülü ajan dönüşlerini çalıştırın
title: Codex Harness
- Paketlenmiş Codex uygulama sunucusu koşum takımını kullanmak istiyorsunuz
- Codex model başvurularına ve yapılandırma örneklerine ihtiyacınız var
- Yalnızca Codex dağıtımları için Pi geri dönüşünü devre dışı bırakmak istiyorsunuz
summary: OpenClaw gömülü ajan dönüşlerini paketlenmiş Codex uygulama sunucusu koşum takımı üzerinden çalıştırın
title: Codex Koşum Takımı
x-i18n:
generated_at: "2026-04-21T09:01:33Z"
generated_at: "2026-04-22T08:54:55Z"
model: gpt-5.4
provider: openai
source_hash: 3f0cdaf68be3b2257de1046103ff04f53f9d3a65ffc15ab7af5ab1f425643d6c
source_hash: d45dbd39a7d8ebb3a39d8dca3a5125c07b7168d1658ca07b85792645fb98613c
source_path: plugins/codex-harness.md
workflow: 15
---
# Codex Harness
# Codex Koşum Takımı
Paketle gelen `codex` plugin'i, OpenClaw'un gömülü ajan dönüşlerini yerleşik Pi harness yerine
Codex app-server üzerinden çalıştırmasını sağlar.
Paketlenmiş `codex` Plugin'i, OpenClaw'ın yerleşik PI koşum takımı yerine
Codex uygulama sunucusu üzerinden gömülü ajan dönüşlerini çalıştırmasını sağlar.
Bunu, düşük düzey ajan oturumuna Codex'in sahip olmasını istediğinizde kullanın: model
keşfi, yerel thread sürdürme, yerel Compaction ve app-server yürütmesi.
OpenClaw yine de sohbet kanallarına, oturum dosyalarına, model seçimine, araçlara,
onaylara, medya teslimatına ve görünür transcript yansısına sahip olmaya devam eder.
Bunu, düşük seviyeli ajan oturumunun Codex tarafından yönetilmesini istediğinizde kullanın: model
keşfi, yerel iş parçacığı sürdürme, yerel Compaction ve uygulama sunucusu yürütmesi.
OpenClaw yine de sohbet kanallarını, oturum dosyalarını, model seçimini, araçları,
onayları, medya teslimini ve görünür transkript yansısını yönetir.
Harness varsayılan olarak kapalıdır. Yalnızca `codex` plugin'i
etkin olduğunda ve çözümlenen model bir `codex/*` modeli olduğunda ya da `embeddedHarness.runtime: "codex"` veya `OPENCLAW_AGENT_RUNTIME=codex` ile açıkça zorladığınızda seçilir.
Hiçbir zaman `codex/*` yapılandırmazsanız, mevcut Pi, OpenAI, Anthropic, Gemini, yerel
ve özel sağlayıcı çalıştırmaları mevcut davranışlarını korur.
Koşum takımı varsayılan olarak kapalıdır. Yalnızca `codex` Plugin'i
etkinleştirildiğinde ve çözümlenen model bir `codex/*` modeli olduğunda
veya `embeddedHarness.runtime: "codex"` ya da `OPENCLAW_AGENT_RUNTIME=codex`ıkça zorlandığında seçilir.
Hiçbir zaman `codex/*` yapılandırmazsanız, mevcut PI, OpenAI, Anthropic, Gemini, local
ve custom-provider çalıştırmaları mevcut davranışlarını korur.
## Doğru model önekini seçin
OpenClaw, OpenAI ve Codex biçimli erişim için ayrı yollara sahiptir:
OpenClaw, OpenAI erişimi ile Codex biçimli erişim için ayrı yollara sahiptir:
| Model ref | Çalışma zamanı yolu | Şu durumda kullanın |
| ---------------------- | --------------------------------------------- | ------------------------------------------------------------------------ |
| `openai/gpt-5.4` | OpenClaw/PI altyapısı üzerinden OpenAI sağlayıcısı | `OPENAI_API_KEY` ile doğrudan OpenAI Platform API erişimi istiyorsunuz. |
| `openai-codex/gpt-5.4` | PI üzerinden OpenAI Codex OAuth sağlayıcısı | Codex app-server harness olmadan ChatGPT/Codex OAuth istiyorsunuz. |
| `codex/gpt-5.4` | Paketle gelen Codex sağlayıcısı artı Codex harness | Gömülü ajan dönüşü için yerel Codex app-server yürütmesi istiyorsunuz. |
| Model başvurusu | Çalışma zamanı yolu | Şu durumda kullanın |
| --------------------- | ------------------------------------------- | ------------------------------------------------------------------------ |
| `openai/gpt-5.4` | OpenClaw/PI altyapısı üzerinden OpenAI sağlayıcısı | `OPENAI_API_KEY` ile doğrudan OpenAI Platform API erişimi istiyorsunuz. |
| `openai-codex/gpt-5.4` | PI üzerinden OpenAI Codex OAuth sağlayıcısı | Codex uygulama sunucusu koşum takımı olmadan ChatGPT/Codex OAuth istiyorsunuz. |
| `codex/gpt-5.4` | Paketlenmiş Codex sağlayıcısı ve Codex koşum takımı | Gömülü ajan dönüşü için yerel Codex uygulama sunucusu yürütmesi istiyorsunuz. |
Codex harness yalnızca `codex/*` model ref'lerini sahiplenir. Mevcut `openai/*`,
`openai-codex/*`, Anthropic, Gemini, xAI, yerel ve özel sağlayıcı ref'leri
Codex koşum takımı yalnızca `codex/*` model başvurularını üstlenir. Mevcut `openai/*`,
`openai-codex/*`, Anthropic, Gemini, xAI, local ve custom provider başvuruları
normal yollarını korur.
## Gereksinimler
- Paketle gelen `codex` plugin'i kullanılabilir olan OpenClaw.
- Codex app-server `0.118.0` veya daha yeni.
- App-server süreci için Codex kimlik doğrulamasının kullanılabilir olması.
- Paketlenmiş `codex` Plugin'i kullanılabilir durumda olan OpenClaw.
- Codex uygulama sunucusu `0.118.0` veya daha yeni sürüm.
- Uygulama sunucusu süreci için kullanılabilir Codex kimlik doğrulaması.
Plugin, daha eski veya sürümsüz app-server el sıkışmalarını engeller. Bu,
OpenClaw'u test edildiği protokol yüzeyinde tutar.
Plugin, daha eski veya sürümlendirilmemiş uygulama sunucusu el sıkışmalarını engeller. Bu,
OpenClaw'ı üzerinde test edildiği protokol yüzeyinde tutar.
Canlı ve Docker smoke testleri için kimlik doğrulama genellikle `OPENAI_API_KEY` üzerinden gelir; ayrıca isteğe bağlı Codex CLI dosyaları olan `~/.codex/auth.json` ve
`~/.codex/config.toml` da kullanılabilir. Yerel Codex app-server'ınızın kullandığı aynı kimlik doğrulama materyalini kullanın.
Canlı ve Docker smoke testleri için kimlik doğrulama genellikle `OPENAI_API_KEY` ile,
ayrıca `~/.codex/auth.json` ve
`~/.codex/config.toml` gibi isteğe bağlı Codex CLI dosyalarıyla sağlanır. Yerel Codex uygulama sunucunuzun
kullandığı aynı kimlik doğrulama materyalini kullanın.
## En düşük düzey yapılandırma
## Minimal yapılandırma
`codex/gpt-5.4` kullanın, paketle gelen plugin'i etkinleştirin ve `codex` harness'ı zorlayın:
`codex/gpt-5.4` kullanın, paketlenmiş Plugin'i etkinleştirin ve `codex` koşum takımını zorlayın:
```json5
{
@ -80,7 +83,7 @@ Canlı ve Docker smoke testleri için kimlik doğrulama genellikle `OPENAI_API_K
}
```
Yapılandırmanız `plugins.allow` kullanıyorsa, `codex` değerini de buraya ekleyin:
Yapılandırmanız `plugins.allow` kullanıyorsa, `codex` öğesini de oraya ekleyin:
```json5
{
@ -96,11 +99,12 @@ Yapılandırmanız `plugins.allow` kullanıyorsa, `codex` değerini de buraya ek
```
`agents.defaults.model` veya bir ajan modelini `codex/<model>` olarak ayarlamak da
paketle gelen `codex` plugin'ini otomatik olarak etkinleştirir. Açık plugin girdisi, paylaşılan yapılandırmalarda yine de kullanışlıdır çünkü dağıtım niyetini açık hâle getirir.
paketlenmiş `codex` Plugin'ini otomatik olarak etkinleştirir. Açık Plugin girdisi,
özellikle paylaşılan yapılandırmalarda yine de yararlıdır çünkü dağıtım niyetini açıkça gösterir.
## Diğer modelleri değiştirmeden Codex ekleyin
`codex/*` modeller için Codex, diğer her şey için Pi istiyorsanız `runtime: "auto"` kullanın:
`codex/*` modeller için Codex, diğer her şey için PI istiyorsanız `runtime: "auto"` değerini koruyun:
```json5
{
@ -134,15 +138,15 @@ paketle gelen `codex` plugin'ini otomatik olarak etkinleştirir. Açık plugin g
Bu yapıyla:
- `/model codex` veya `/model codex/gpt-5.4`, Codex app-server harness'ı kullanır.
- `/model codex` veya `/model codex/gpt-5.4`, Codex uygulama sunucusu koşum takımını kullanır.
- `/model gpt` veya `/model openai/gpt-5.4`, OpenAI sağlayıcı yolunu kullanır.
- `/model opus`, Anthropic sağlayıcı yolunu kullanır.
- Codex olmayan bir model seçilirse Pi, uyumluluk harness'ı olarak kalır.
- Codex olmayan bir model seçilirse, PI uyumluluk koşum takımı olarak kalır.
## Yalnızca Codex dağıtımları
Her gömülü ajan dönüşünün Codex harness kullandığını kanıtlamanız gerekiyorsa
Pi fallback'ini devre dışı bırakın:
Her gömülü ajan dönüşünün Codex koşum takımını kullandığını kanıtlamanız gerektiğinde
PI geri dönüşünü devre dışı bırakın:
```json5
{
@ -158,7 +162,7 @@ Pi fallback'ini devre dışı bırakın:
}
```
Ortam geçersiz kılması:
Ortam değişkeni geçersiz kılması:
```bash
OPENCLAW_AGENT_RUNTIME=codex \
@ -166,9 +170,9 @@ OPENCLAW_AGENT_HARNESS_FALLBACK=none \
openclaw gateway run
```
Fallback devre dışıyken, Codex plugin devre dışıysa,
istenen model bir `codex/*` ref'i değilse, app-server çok eskiyse veya
app-server başlatılamıyorsa OpenClaw erken başarısız olur.
Geri dönüş devre dışı bırakıldığında, `codex` Plugin'i devre dışıysa,
istenen model bir `codex/*` başvurusu değilse, uygulama sunucusu çok eskiyse veya
uygulama sunucusu başlatılamıyorsa OpenClaw erken başarısız olur.
## Ajan başına Codex
@ -203,14 +207,14 @@ Varsayılan ajan normal otomatik seçimi korurken bir ajanı yalnızca Codex yap
}
```
Ajan ve model değiştirmek için normal oturum komutlarını kullanın. `/new`, yeni bir
OpenClaw oturumu oluşturur ve Codex harness gerektiğinde kendi sidecar app-server
thread'ini oluşturur veya sürdürür. `/reset`, o thread için OpenClaw oturum bağını temizler.
Ajanları ve modelleri değiştirmek için normal oturum komutlarını kullanın. `/new`, yeni bir
OpenClaw oturumu oluşturur ve Codex koşum takımı gerektiğinde kendi yardımcı uygulama sunucusu
iş parçacığını oluşturur veya sürdürür. `/reset`, o iş parçacığı için OpenClaw oturum bağını temizler.
## Model keşfi
Varsayılan olarak Codex plugin'i, mevcut modelleri app-server'a sorar. Keşif
başarısız olursa veya zaman aşımına uğrarsa, paketle gelen fallback kataloğunu kullanır:
Varsayılan olarak Codex Plugin'i, uygulama sunucusundan kullanılabilir modelleri ister. Keşif
başarısız olursa veya zaman aşımına uğrarsa, paketlenmiş geri dönüş kataloğunu kullanır:
- `codex/gpt-5.4`
- `codex/gpt-5.4-mini`
@ -236,7 +240,7 @@ Keşfi `plugins.entries.codex.config.discovery` altında ayarlayabilirsiniz:
}
```
Başlangıçta Codex yoklamasından kaçınmak ve fallback kataloğuna bağlı kalmak istediğinizde
Başlangıçta Codex yoklamasından kaçınmak ve geri dönüş kataloğuna bağlı kalmak istediğinizde
keşfi devre dışı bırakın:
```json5
@ -256,16 +260,16 @@ keşfi devre dışı bırakın:
}
```
## App-server bağlantısı ve ilke
## Uygulama sunucusu bağlantısı ve ilkesi
Varsayılan olarak plugin, Codex'i yerelde şu komutla başlatır:
Varsayılan olarak Plugin, Codex'i yerel olarak şu komutla başlatır:
```bash
codex app-server --listen stdio://
```
Varsayılan olarak OpenClaw, Codex'ten yerel onaylar istemesini ister. Bu
ilkeyi daha da ayarlayabilirsiniz; örneğin sıkılaştırıp incelemeleri
ilkeyi daha da ayarlayabilirsiniz; örneğin daha sıkı hale getirip incelemeleri
guardian üzerinden yönlendirebilirsiniz:
```json5
@ -288,7 +292,7 @@ guardian üzerinden yönlendirebilirsiniz:
}
```
Zaten çalışan bir app-server için WebSocket taşımasını kullanın:
Zaten çalışmakta olan bir uygulama sunucusu için WebSocket taşımasını kullanın:
```json5
{
@ -312,22 +316,22 @@ Zaten çalışan bir app-server için WebSocket taşımasını kullanın:
Desteklenen `appServer` alanları:
| Alan | Varsayılan | Anlamı |
| ------------------- | ---------------------------------------- | ----------------------------------------------------------------------- |
| `transport` | `"stdio"` | `"stdio"` Codex'i başlatır; `"websocket"` `url` değerine bağlanır. |
| `command` | `"codex"` | stdio taşıması için yürütülebilir dosya. |
| `args` | `["app-server", "--listen", "stdio://"]` | stdio taşıması için argümanlar. |
| `url` | ayarlı değil | WebSocket app-server URL'si. |
| `authToken` | ayarlı değil | WebSocket taşıması için Bearer token. |
| `headers` | `{}` | Ek WebSocket başlıkları. |
| `requestTimeoutMs` | `60000` | app-server control-plane çağrıları için zaman aşımı. |
| `approvalPolicy` | `"on-request"` | Thread başlatma/sürdürme/dönüşe gönderilen yerel Codex onay ilkesi. |
| `sandbox` | `"workspace-write"` | Thread başlatma/sürdürmeye gönderilen yerel Codex sandbox modu. |
| `approvalsReviewer` | `"user"` | Yerel onayları Codex guardian'ın incelemesi için `"guardian_subagent"` kullanın. |
| `serviceTier` | ayarlı değil | İsteğe bağlı Codex hizmet katmanı, örneğin `"priority"`. |
| Alan | Varsayılan | Anlamı |
| ------------------- | ---------------------------------------- | ------------------------------------------------------------------------ |
| `transport` | `"stdio"` | `"stdio"` Codex'i başlatır; `"websocket"` `url` adresine bağlanır. |
| `command` | `"codex"` | stdio taşıması için yürütülebilir dosya. |
| `args` | `["app-server", "--listen", "stdio://"]` | stdio taşıması için bağımsız değişkenler. |
| `url` | ayarlanmadı | WebSocket uygulama sunucusu URL'si. |
| `authToken` | ayarlanmadı | WebSocket taşıması için Bearer token. |
| `headers` | `{}` | Ek WebSocket üst bilgileri. |
| `requestTimeoutMs` | `60000` | Uygulama sunucusu kontrol düzlemi çağrıları için zaman aşımı. |
| `approvalPolicy` | `"on-request"` | İş parçacığı başlatma/sürdürme/dönüşe gönderilen yerel Codex onay ilkesi. |
| `sandbox` | `"workspace-write"` | İş parçacığı başlatma/sürdürmeye gönderilen yerel Codex sandbox modu. |
| `approvalsReviewer` | `"user"` | Yerel onayları Codex guardian'ın incelemesini sağlamak için `"guardian_subagent"` kullanın. |
| `serviceTier` | ayarlanmadı | İsteğe bağlı Codex hizmet katmanı, örneğin `"priority"`. |
Eski ortam değişkenleri, eşleşen yapılandırma alanı ayarlı değilse
yerel testler için fallback olarak hâlâ çalışır:
Aşağıdaki eski ortam değişkenleri, eşleşen yapılandırma alanı ayarlanmadığında
yerel testler için geri dönüş olarak hâlâ çalışır:
- `OPENCLAW_CODEX_APP_SERVER_BIN`
- `OPENCLAW_CODEX_APP_SERVER_ARGS`
@ -339,7 +343,7 @@ Tekrarlanabilir dağıtımlar için yapılandırma tercih edilir.
## Yaygın tarifler
Varsayılan stdio taşımasıyla yerel Codex:
Varsayılan stdio taşıması ile yerel Codex:
```json5
{
@ -353,7 +357,7 @@ Varsayılan stdio taşımasıyla yerel Codex:
}
```
Pi fallback devre dışıyken yalnızca Codex harness doğrulaması:
PI geri dönüşü devre dışı bırakılmış şekilde yalnızca Codex koşum takımı doğrulaması:
```json5
{
@ -391,7 +395,7 @@ Guardian tarafından incelenen Codex onayları:
}
```
ık başlıklarla uzak app-server:
ık üst bilgilerle uzak uygulama sunucusu:
```json5
{
@ -414,60 +418,82 @@ Açık başlıklarla uzak app-server:
}
```
Model değiştirme OpenClaw tarafından kontrol edilmeye devam eder. Bir OpenClaw oturumu
mevcut bir Codex thread'ine bağlı olduğunda, sonraki dönüş seçili
Model değiştirme OpenClaw tarafından yönetilmeye devam eder. Bir OpenClaw oturumu mevcut bir
Codex iş parçacığına bağlandığında, sonraki dönüş şu anda seçili olan
`codex/*` modelini, sağlayıcıyı, onay ilkesini, sandbox'ı ve hizmet katmanını
yeniden app-server'a gönderir. `codex/gpt-5.4` modelinden `codex/gpt-5.2` modeline geçmek,
thread bağını korur ama Codex'ten yeni seçilen modelle devam etmesini ister.
uygulama sunucusuna yeniden gönderir. `codex/gpt-5.4` modelinden `codex/gpt-5.2` modeline geçmek,
iş parçacığı bağını korur ancak Codex'ten yeni seçilen modelle devam etmesini ister.
## Codex komutu
Paketle gelen plugin, yetkili bir slash komutu olarak `/codex` kaydeder. Bu komut
geneldir ve OpenClaw metin komutlarını destekleyen her kanalda çalışır.
Paketlenmiş Plugin, `/codex` komutunu yetkili bir slash komutu olarak kaydeder. Bu komut
geneldir ve OpenClaw metin komutlarını destekleyen herhangi bir kanalda çalışır.
Yaygın biçimler:
- `/codex status`, canlı app-server bağlantısını, modelleri, hesabı, rate limit'leri, MCP sunucularını ve Skills öğelerini gösterir.
- `/codex models`, canlı Codex app-server modellerini listeler.
- `/codex threads [filter]`, son Codex thread'lerini listeler.
- `/codex resume <thread-id>`, geçerli OpenClaw oturumunu mevcut bir Codex thread'ine bağlar.
- `/codex compact`, Codex app-server'dan bağlı thread üzerinde Compaction yapmasını ister.
- `/codex review`, bağlı thread için yerel Codex incelemesini başlatır.
- `/codex account`, hesap ve rate-limit durumunu gösterir.
- `/codex mcp`, Codex app-server MCP sunucu durumunu listeler.
- `/codex skills`, Codex app-server Skills öğelerini listeler.
- `/codex status`, canlı uygulama sunucusu bağlantısını, modelleri, hesabı, hız sınırlarını, MCP sunucularını ve Skills'i gösterir.
- `/codex models`, canlı Codex uygulama sunucusu modellerini listeler.
- `/codex threads [filter]`, son Codex iş parçacıklarını listeler.
- `/codex resume <thread-id>`, mevcut OpenClaw oturumunu mevcut bir Codex iş parçacığına bağlar.
- `/codex compact`, Codex uygulama sunucusundan bağlı iş parçacığını sıkıştırmasını ister.
- `/codex review`, bağlı iş parçacığı için yerel Codex incelemesini başlatır.
- `/codex account`, hesap ve hız sınırı durumunu gösterir.
- `/codex mcp`, Codex uygulama sunucusu MCP sunucu durumunu listeler.
- `/codex skills`, Codex uygulama sunucusu Skills listesini gösterir.
`/codex resume`, harness'ın normal dönüşler için kullandığı aynı sidecar binding dosyasını yazar. Sonraki mesajda OpenClaw o Codex thread'ini sürdürür, şu anda seçili OpenClaw `codex/*` modelini app-server'a geçirir ve genişletilmiş geçmişi etkin tutar.
`/codex resume`, normal dönüşler için koşum takımının kullandığı aynı yardımcı bağlama dosyasını
yazar. Sonraki iletide OpenClaw bu Codex iş parçacığını sürdürür, o anda seçili
OpenClaw `codex/*` modelini uygulama sunucusuna geçirir ve genişletilmiş
geçmişi etkin tutar.
Komut yüzeyi Codex app-server `0.118.0` veya daha yenisini gerektirir. Gelecekteki veya özel bir app-server ilgili JSON-RPC yöntemini sunmazsa, tekil control yöntemleri `unsupported by this Codex app-server` olarak bildirilir.
Komut yüzeyi Codex uygulama sunucusu `0.118.0` veya daha yenisini gerektirir. Tek tek
denetim yöntemleri, gelecekteki veya özel bir uygulama sunucusu o JSON-RPC yöntemini
sunmuyorsa `unsupported by this Codex app-server` olarak bildirilir.
## Araçlar, medya ve Compaction
Codex harness yalnızca düşük düzey gömülü ajan yürütücüsünü değiştirir.
Codex koşum takımı yalnızca düşük seviyeli gömülü ajan yürütücüsünü değiştirir.
OpenClaw yine de araç listesini oluşturur ve harness'tan dinamik araç sonuçlarını alır. Metin, görseller, video, müzik, TTS, onaylar ve message-tool çıktısı normal OpenClaw teslim yolu üzerinden akmaya devam eder.
OpenClaw yine de araç listesini oluşturur ve koşum takımından dinamik araç sonuçlarını
alır. Metin, görseller, video, müzik, TTS, onaylar ve mesajlaşma aracı çıktısı
normal OpenClaw teslim yolu üzerinden devam eder.
Seçili model Codex harness kullandığında, yerel thread Compaction işlemi Codex app-server'a devredilir. OpenClaw kanal geçmişi, arama, `/new`, `/reset` ve gelecekteki model veya harness değiştirme için bir transcript yansısını korur. Bu yansı, kullanıcı prompt'unu, son asistan metnini ve app-server bunları yayımladığında hafif Codex reasoning veya plan kayıtlarını içerir.
Seçili model Codex koşum takımını kullandığında, yerel iş parçacığı Compaction
işlemi Codex uygulama sunucusuna devredilir. OpenClaw, kanal geçmişi,
arama, `/new`, `/reset` ve gelecekteki model veya koşum takımı geçişleri için bir transkript yansısı tutar. Bu
yansı, kullanıcı istemini, son asistan metnini ve uygulama sunucusu bunları yayınladığında
hafif Codex akıl yürütme veya plan kayıtlarını içerir.
Medya üretimi Pi gerektirmez. Görsel, video, müzik, PDF, TTS ve medya anlama; `agents.defaults.imageGenerationModel`, `videoGenerationModel`, `pdfModel` ve `messages.tts` gibi eşleşen sağlayıcı/model ayarlarını kullanmaya devam eder.
Medya üretimi PI gerektirmez. Görsel, video, müzik, PDF, TTS ve medya
anlama; `agents.defaults.imageGenerationModel`, `videoGenerationModel`, `pdfModel` ve
`messages.tts` gibi eşleşen sağlayıcı/model ayarlarını kullanmaya devam eder.
## Sorun giderme
**Codex `/model` içinde görünmüyor:** `plugins.entries.codex.enabled` ayarını etkinleştirin, bir `codex/*` model ref'i ayarlayın veya `plugins.allow` listesinin `codex` değerini hariç tutup tutmadığını kontrol edin.
**Codex `/model` içinde görünmüyor:** `plugins.entries.codex.enabled` seçeneğini etkinleştirin,
bir `codex/*` model başvurusu ayarlayın veya `plugins.allow` içinde `codex` öğesinin hariç tutulup tutulmadığını kontrol edin.
**OpenClaw Pi'ye geri dönüyor:** test sırasında `embeddedHarness.fallback: "none"` veya `OPENCLAW_AGENT_HARNESS_FALLBACK=none` ayarlayın.
**OpenClaw, Codex yerine PI kullanıyor:** hiçbir Codex koşum takımı çalıştırmayı üstlenmezse,
OpenClaw uyumluluk arka ucu olarak PI kullanabilir. Test sırasında Codex seçimini zorlamak için
`embeddedHarness.runtime: "codex"` ayarlayın veya eşleşen bir Plugin koşum takımı olmadığında
başarısız olmak için `embeddedHarness.fallback: "none"` ayarlayın. Codex uygulama sunucusu seçildikten sonra,
hataları ek geri dönüş yapılandırması olmadan doğrudan görünür.
**App-server reddediliyor:** app-server el sıkışmasının `0.118.0` veya daha yeni bir sürüm bildirmesi için Codex'i yükseltin.
**Uygulama sunucusu reddediliyor:** uygulama sunucusu el sıkışmasının
`0.118.0` veya daha yeni bir sürüm bildirmesi için Codex'i yükseltin.
**Model keşfi yavaş:** `plugins.entries.codex.config.discovery.timeoutMs` değerini düşürün veya keşfi devre dışı bırakın.
**Model keşfi yavaş:** `plugins.entries.codex.config.discovery.timeoutMs` değerini düşürün
veya keşfi devre dışı bırakın.
**WebSocket taşıması hemen başarısız oluyor:** `appServer.url`, `authToken` ve uzak app-server'ın aynı Codex app-server protokol sürümünü konuştuğunu kontrol edin.
**WebSocket taşıması hemen başarısız oluyor:** `appServer.url`, `authToken`
ve uzak uygulama sunucusunun aynı Codex uygulama sunucusu protokol sürümünü konuştuğunu kontrol edin.
**Codex olmayan bir model Pi kullanıyor:** bu beklenen davranıştır. Codex harness yalnızca `codex/*` model ref'lerini sahiplenir.
**Codex olmayan bir model PI kullanıyor:** bu beklenen bir durumdur. Codex koşum takımı yalnızca
`codex/*` model başvurularını üstlenir.
## İlgili
- [Agent Harness Plugins](/tr/plugins/sdk-agent-harness)
- [Model Providers](/tr/concepts/model-providers)
- [Configuration Reference](/tr/gateway/configuration-reference)
- [Testing](/tr/help/testing#live-codex-app-server-harness-smoke)
- [Ajan Koşum Takımı Plugin'leri](/tr/plugins/sdk-agent-harness)
- [Model Sağlayıcıları](/tr/concepts/model-providers)
- [Yapılandırma Başvurusu](/tr/gateway/configuration-reference)
- [Test](\/help/testing#live-codex-app-server-harness-smoke)

View File

@ -1,14 +1,14 @@
---
read_when:
- Bir OpenClaw plugini geliştiriyorsunuz
- Bir plugin yapılandırma şeması yayımlamanız veya plugin doğrulama hatalarını ayıklamanız gerekiyor
summary: Plugin manifesti + JSON şeması gereksinimleri (katı yapılandırma doğrulaması)
- Bir OpenClaw plugin'i oluşturuyorsunuz
- Bir plugin yapılandırma şeması yayımlamanız veya plugin doğrulama hatalarında hata ayıklamanız gerekiyor
summary: Plugin manifesti + JSON şema gereksinimleri (katı yapılandırma doğrulaması)
title: Plugin Manifesti
x-i18n:
generated_at: "2026-04-22T04:24:28Z"
generated_at: "2026-04-22T08:54:51Z"
model: gpt-5.4
provider: openai
source_hash: 52a52f7e2c78bbef2cc51ade6eb12b6edc950237bdfc478f6e82248374c687bf
source_hash: 085c1baccb96b8e6bd4033ad11bdd5f79bdb0daec470e977fce723c3ae38cc99
source_path: plugins/manifest.md
workflow: 15
---
@ -17,55 +17,51 @@ x-i18n:
Bu sayfa yalnızca **yerel OpenClaw plugin manifesti** içindir.
Uyumlu paket düzenleri için bkz. [Plugin bundles](/tr/plugins/bundles).
Uyumlu paket düzenleri için bkz. [Plugin paketleri](/tr/plugins/bundles).
Uyumlu paket biçimleri farklı manifest dosyaları kullanır:
- Codex paketi: `.codex-plugin/plugin.json`
- Claude paketi: `.claude-plugin/plugin.json` veya manifestsiz varsayılan Claude bileşen düzeni
- Claude paketi: `.claude-plugin/plugin.json` veya manifestsiz varsayılan Claude bileşeni düzeni
- Cursor paketi: `.cursor-plugin/plugin.json`
OpenClaw bu paket düzenlerini de otomatik algılar, ancak bunlar burada açıklanan `openclaw.plugin.json` şemasına göre doğrulanmaz.
OpenClaw bu paket düzenlerini de otomatik algılar, ancak burada açıklanan `openclaw.plugin.json` şemasına göre doğrulanmazlar.
Uyumlu paketler için OpenClaw şu anda paket meta verilerini ve bildirilen
skill köklerini, Claude komut köklerini, Claude paketi `settings.json` varsayılanlarını,
Claude paketi LSP varsayılanlarını ve düzen OpenClaw çalışma zamanı beklentileriyle eşleştiğinde desteklenen hook paketlerini okur.
Uyumlu paketlerde OpenClaw şu anda düzen, OpenClaw çalışma zamanı beklentileriyle eşleştiğinde paket meta verilerini, bildirilen skill köklerini, Claude komut köklerini, Claude paketi `settings.json` varsayılanlarını, Claude paketi LSP varsayılanlarını ve desteklenen hook paketlerini okur.
Her yerel OpenClaw plugini, **plugin kökünde**
bir `openclaw.plugin.json` dosyası yayımlamak **zorundadır**. OpenClaw bu manifesti,
plugin kodunu **çalıştırmadan** yapılandırmayı doğrulamak için kullanır. Eksik veya geçersiz manifestler plugin hatası olarak değerlendirilir ve yapılandırma doğrulamasını engeller.
Her yerel OpenClaw plugin'i, **plugin kökünde** mutlaka bir `openclaw.plugin.json` dosyası yayımlamalıdır. OpenClaw bu manifesti, yapılandırmayı **plugin kodunu çalıştırmadan** doğrulamak için kullanır. Eksik veya geçersiz manifestler plugin hatası olarak değerlendirilir ve yapılandırma doğrulamasını engeller.
Tam plugin sistemi kılavuzu için bkz.: [Plugins](/tr/tools/plugin).
Tam plugin sistemi kılavuzuna bakın: [Plugins](/tr/tools/plugin).
Yerel yetenek modeli ve mevcut dış uyumluluk rehberi için:
[Capability model](/tr/plugins/architecture#public-capability-model).
[Yetenek modeli](/tr/plugins/architecture#public-capability-model).
## Bu dosya ne yapar
`openclaw.plugin.json`, OpenClawun plugin kodunuzu yüklemeden önce okuduğu meta verilerdir.
`openclaw.plugin.json`, OpenClaw'ın plugin kodunuzu yüklemeden önce okuduğu meta veridir.
Şunlar için kullanın:
- plugin kimliği
- yapılandırma doğrulaması
- plugin çalışma zamanını başlatmadan erişilebilir olması gereken kimlik doğrulama ve onboarding meta verileri
- plugin çalışma zamanını başlatmadan kullanılabilir olması gereken kimlik doğrulama ve onboarding meta verileri
- denetim düzlemi yüzeylerinin çalışma zamanı yüklenmeden önce inceleyebileceği düşük maliyetli etkinleştirme ipuçları
- kurulum/onboarding yüzeylerinin çalışma zamanı yüklenmeden önce inceleyebileceği düşük maliyetli kurulum tanımlayıcıları
- plugin çalışma zamanı yüklenmeden önce çözümlenmesi gereken takma ad ve otomatik etkinleştirme meta verileri
- plugini çalışma zamanı yüklenmeden önce otomatik etkinleştirmesi gereken kısa model ailesi sahipliği meta verileri
- plugin'i çalışma zamanı yüklenmeden önce otomatik etkinleştirmesi gereken kısa model ailesi sahipliği meta verileri
- paketlenmiş uyumluluk bağlama ve sözleşme kapsamı için kullanılan statik yetenek sahipliği anlık görüntüleri
- paylaşılan `openclaw qa` hostunun plugin çalışma zamanı yüklenmeden önce inceleyebileceği düşük maliyetli QA çalıştırıcı meta verileri
- çalışma zamanı yüklenmeden katalog ve doğrulama yüzeylerine birleştirilmesi gereken kanala özgü yapılandırma meta verileri
- yapılandırma UI ipuçları
- paylaşılan `openclaw qa` ana makinesinin plugin çalışma zamanı yüklenmeden önce inceleyebileceği düşük maliyetli QA çalıştırıcısı meta verileri
- çalışma zamanı yüklemeden katalog ve doğrulama yüzeyleriyle birleştirilmesi gereken kanala özgü yapılandırma meta verileri
- yapılandırma arayüzü ipuçları
Şunlar için kullanmayın:
- çalışma zamanı davranışı kaydetme
- kod giriş noktalarını bildirme
- çalışma zamanı davranışını kaydetmek
- kod giriş noktalarını bildirmek
- npm kurulum meta verileri
Bunlar plugin kodunuza ve `package.json` dosyanıza aittir.
Bunlar plugin kodunuza ve `package.json` dosyasına aittir.
## Asgari örnek
## Minimal örnek
```json
{
@ -84,7 +80,7 @@ Bunlar plugin kodunuza ve `package.json` dosyanıza aittir.
{
"id": "openrouter",
"name": "OpenRouter",
"description": "OpenRouter sağlayıcı plugini",
"description": "OpenRouter provider plugin",
"version": "1.0.0",
"providers": ["openrouter"],
"modelSupport": {
@ -112,19 +108,19 @@ Bunlar plugin kodunuza ve `package.json` dosyanıza aittir.
"provider": "openrouter",
"method": "api-key",
"choiceId": "openrouter-api-key",
"choiceLabel": "OpenRouter API anahtarı",
"choiceLabel": "OpenRouter API key",
"groupId": "openrouter",
"groupLabel": "OpenRouter",
"optionKey": "openrouterApiKey",
"cliFlag": "--openrouter-api-key",
"cliOption": "--openrouter-api-key <key>",
"cliDescription": "OpenRouter API anahtarı",
"cliDescription": "OpenRouter API key",
"onboardingScopes": ["text-inference"]
}
],
"uiHints": {
"apiKey": {
"label": "API anahtarı",
"label": "API key",
"placeholder": "sk-or-v1-...",
"sensitive": true
}
@ -143,64 +139,65 @@ Bunlar plugin kodunuza ve `package.json` dosyanıza aittir.
## Üst düzey alan başvurusu
| Alan | Gerekli | Tür | Anlamı |
| ----------------------------------- | ------- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | Evet | `string` | Kanonik plugin kimliği. Bu, `plugins.entries.<id>` içinde kullanılan kimliktir. |
| `configSchema` | Evet | `object` | Bu pluginin yapılandırması için satır içi JSON Şeması. |
| `enabledByDefault` | Hayır | `true` | Paketlenmiş bir plugini varsayılan olarak etkin işaretler. Plugini varsayılan olarak devre dışı bırakmak için bunu atlayın veya `true` dışındaki herhangi bir değeri ayarlayın. |
| `legacyPluginIds` | Hayır | `string[]` | Bu kanonik plugin kimliğine normalleştirilen eski kimlikler. |
| `autoEnableWhenConfiguredProviders` | Hayır | `string[]` | Kimlik doğrulama, yapılandırma veya model başvuruları bunlardan söz ettiğinde bu plugini otomatik etkinleştirmesi gereken sağlayıcı kimlikleri. |
| `kind` | Hayır | `"memory"` \| `"context-engine"` | `plugins.slots.*` tarafından kullanılan, birbirini dışlayan bir plugin türü bildirir. |
| `channels` | Hayır | `string[]` | Bu plugine ait kanal kimlikleri. Keşif ve yapılandırma doğrulaması için kullanılır. |
| `providers` | Hayır | `string[]` | Bu plugine ait sağlayıcı kimlikleri. |
| `modelSupport` | Hayır | `object` | Çalışma zamanından önce plugini otomatik yüklemek için kullanılan, manifest sahipli kısa model ailesi meta verileri. |
| `providerEndpoints` | Hayır | `object[]` | Çekirdeğin sağlayıcı çalışma zamanı yüklenmeden önce sınıflandırması gereken sağlayıcı yolları için manifest sahipli uç nokta host/baseUrl meta verileri. |
| `cliBackends` | Hayır | `string[]` | Bu plugine ait CLI çıkarım arka ucu kimlikleri. Açık yapılandırma başvurularından başlangıç otomatik etkinleştirmesi için kullanılır. |
| `syntheticAuthRefs` | Hayır | `string[]` | Çalışma zamanı yüklenmeden önce soğuk model keşfi sırasında plugin sahipli sentetik kimlik doğrulama hookunun yoklanması gereken sağlayıcı veya CLI arka ucu başvuruları. |
| `nonSecretAuthMarkers` | Hayır | `string[]` | Gizli olmayan yerel, OAuth veya ortam kimlik bilgisi durumunu temsil eden, paketlenmiş plugin sahipli yer tutucu API anahtarı değerleri. |
| `commandAliases` | Hayır | `object[]` | Çalışma zamanı yüklenmeden önce plugin farkındalıklı yapılandırma ve CLI tanıları üretmesi gereken, bu plugine ait komut adları. |
| `providerAuthEnvVars` | Hayır | `Record<string, string[]>` | OpenClawun plugin kodunu yüklemeden inceleyebileceği düşük maliyetli sağlayıcı kimlik doğrulama env meta verileri. |
| `providerAuthAliases` | Hayır | `Record<string, string>` | Kimlik doğrulama araması için başka bir sağlayıcı kimliğini yeniden kullanması gereken sağlayıcı kimlikleri; örneğin temel sağlayıcı API anahtarı ve kimlik doğrulama profillerini paylaşan bir coding sağlayıcısı. |
| `channelEnvVars` | Hayır | `Record<string, string[]>` | OpenClawun plugin kodunu yüklemeden inceleyebileceği düşük maliyetli kanal env meta verileri. Bunu, genel başlangıç/yapılandırma yardımcılarının görmesi gereken env odaklı kanal kurulumu veya kimlik doğrulama yüzeyleri için kullanın. |
| `providerAuthChoices` | Hayır | `object[]` | Onboarding seçicileri, tercih edilen sağlayıcı çözümlemesi ve basit CLI bayrak bağlama için düşük maliyetli kimlik doğrulama seçeneği meta verileri. |
| `activation` | Hayır | `object` | Sağlayıcı, komut, kanal, rota ve yetenek tetiklemeli yükleme için düşük maliyetli etkinleştirme ipuçları. Yalnızca meta veri; gerçek davranış yine de plugin çalışma zamanına aittir. |
| `setup` | Hayır | `object` | Keşif ve kurulum yüzeylerinin plugin çalışma zamanını yüklemeden inceleyebileceği düşük maliyetli kurulum/onboarding tanımlayıcıları. |
| `qaRunners` | Hayır | `object[]` | Paylaşılan `openclaw qa` hostunun plugin çalışma zamanı yüklenmeden önce kullandığı düşük maliyetli QA çalıştırıcı tanımlayıcıları. |
| `contracts` | Hayır | `object` | Konuşma, gerçek zamanlı transkripsiyon, gerçek zamanlı ses, medya-anlama, görsel üretimi, müzik üretimi, video üretimi, web-fetch, web araması ve araç sahipliği için statik paketlenmiş yetenek anlık görüntüsü. |
| `channelConfigs` | Hayır | `Record<string, object>` | Çalışma zamanı yüklenmeden keşif ve doğrulama yüzeylerine birleştirilen manifest sahipli kanal yapılandırma meta verileri. |
| `skills` | Hayır | `string[]` | Plugin köküne göre göreli yüklenecek Skills dizinleri. |
| `name` | Hayır | `string` | İnsan tarafından okunabilir plugin adı. |
| `description` | Hayır | `string` | Plugin yüzeylerinde gösterilen kısa özet. |
| `version` | Hayır | `string` | Bilgilendirici plugin sürümü. |
| `uiHints` | Hayır | `Record<string, object>` | Yapılandırma alanları için UI etiketleri, yer tutucular ve hassasiyet ipuçları. |
| Alan | Gerekli | Tür | Anlamı |
| ------------------------------------ | -------- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | Evet | `string` | Kanonik plugin kimliği. `plugins.entries.<id>` içinde kullanılan kimlik budur. |
| `configSchema` | Evet | `object` | Bu plugin'in yapılandırması için satır içi JSON Schema. |
| `enabledByDefault` | Hayır | `true` | Paketlenmiş bir plugin'i varsayılan olarak etkin işaretler. Plugin'in varsayılan olarak devre dışı kalması için bu alanı eklemeyin veya `true` dışındaki herhangi bir değere ayarlayın. |
| `legacyPluginIds` | Hayır | `string[]` | Bu kanonik plugin kimliğine normalize edilen eski kimlikler. |
| `autoEnableWhenConfiguredProviders` | Hayır | `string[]` | Kimlik doğrulama, yapılandırma veya model başvuruları bunlardan söz ettiğinde bu plugin'i otomatik etkinleştirmesi gereken provider kimlikleri. |
| `kind` | Hayır | `"memory"` \| `"context-engine"` | `plugins.slots.*` tarafından kullanılan, yalnızca birine özel plugin türünü bildirir. |
| `channels` | Hayır | `string[]` | Bu plugin'e ait kanal kimlikleri. Keşif ve yapılandırma doğrulaması için kullanılır. |
| `providers` | Hayır | `string[]` | Bu plugin'e ait provider kimlikleri. |
| `modelSupport` | Hayır | `object` | Çalışma zamanından önce plugin'i otomatik yüklemek için kullanılan, manifeste ait kısa model ailesi meta verileri. |
| `providerEndpoints` | Hayır | `object[]` | Çekirdeğin provider çalışma zamanı yüklenmeden önce sınıflandırması gereken provider rotaları için manifeste ait endpoint host/baseUrl meta verileri. |
| `cliBackends` | Hayır | `string[]` | Bu plugin'e ait CLI çıkarım backend kimlikleri. Açık yapılandırma başvurularından başlangıçta otomatik etkinleştirme için kullanılır. |
| `syntheticAuthRefs` | Hayır | `string[]` | Çalışma zamanı yüklenmeden önce soğuk model keşfi sırasında plugin'e ait sentetik kimlik doğrulama hook'unun yoklanması gereken provider veya CLI backend başvuruları. |
| `nonSecretAuthMarkers` | Hayır | `string[]` | Gizli olmayan yerel, OAuth veya ortamdan gelen kimlik bilgisi durumunu temsil eden, paketlenmiş plugin'e ait yer tutucu API anahtarı değerleri. |
| `commandAliases` | Hayır | `object[]` | Çalışma zamanı yüklenmeden önce plugin farkındalıklı yapılandırma ve CLI tanılamaları üretmesi gereken, bu plugin'e ait komut adları. |
| `providerAuthEnvVars` | Hayır | `Record<string, string[]>` | OpenClaw'ın plugin kodunu yüklemeden inceleyebileceği düşük maliyetli provider kimlik doğrulama ortam değişkeni meta verileri. |
| `providerAuthAliases` | Hayır | `Record<string, string>` | Kimlik doğrulama araması için başka bir provider kimliğini yeniden kullanması gereken provider kimlikleri; örneğin temel provider API anahtarını ve kimlik doğrulama profillerini paylaşan bir coding provider. |
| `channelEnvVars` | Hayır | `Record<string, string[]>` | OpenClaw'ın plugin kodunu yüklemeden inceleyebileceği düşük maliyetli kanal ortam değişkeni meta verileri. Bunu, genel başlangıç/yapılandırma yardımcılarının görmesi gereken ortam değişkeni odaklı kanal kurulumu veya kimlik doğrulama yüzeyleri için kullanın. |
| `providerAuthChoices` | Hayır | `object[]` | Onboarding seçicileri, tercih edilen provider çözümlemesi ve basit CLI bayrağı bağlaması için düşük maliyetli kimlik doğrulama seçeneği meta verileri. |
| `activation` | Hayır | `object` | Provider, komut, kanal, rota ve yetenek tetiklemeli yükleme için düşük maliyetli etkinleştirme ipuçları. Yalnızca meta veri; gerçek davranışın sahibi hâlâ plugin çalışma zamanıdır. |
| `setup` | Hayır | `object` | Keşif ve kurulum yüzeylerinin plugin çalışma zamanını yüklemeden inceleyebileceği düşük maliyetli kurulum/onboarding tanımlayıcıları. |
| `qaRunners` | Hayır | `object[]` | Paylaşılan `openclaw qa` ana makinesi tarafından plugin çalışma zamanı yüklenmeden önce kullanılan düşük maliyetli QA çalıştırıcısı tanımlayıcıları. |
| `contracts` | Hayır | `object` | Konuşma, gerçek zamanlı transkripsiyon, gerçek zamanlı ses, medya anlama, görsel oluşturma, müzik oluşturma, video oluşturma, web getirme, web arama ve araç sahipliği için statik paketlenmiş yetenek anlık görüntüsü. |
| `mediaUnderstandingProviderMetadata` | Hayır | `Record<string, object>` | `contracts.mediaUnderstandingProviders` içinde bildirilen provider kimlikleri için düşük maliyetli medya anlama varsayılanları. |
| `channelConfigs` | Hayır | `Record<string, object>` | Çalışma zamanı yüklenmeden keşif ve doğrulama yüzeyleriyle birleştirilen, manifeste ait kanal yapılandırma meta verileri. |
| `skills` | Hayır | `string[]` | Plugin köküne göre göreli olarak yüklenecek Skills dizinleri. |
| `name` | Hayır | `string` | İnsan tarafından okunabilir plugin adı. |
| `description` | Hayır | `string` | Plugin yüzeylerinde gösterilen kısa özet. |
| `version` | Hayır | `string` | Bilgilendirme amaçlı plugin sürümü. |
| `uiHints` | Hayır | `Record<string, object>` | Yapılandırma alanları için UI etiketleri, yer tutucular ve hassasiyet ipuçları. |
## providerAuthChoices başvurusu
## `providerAuthChoices` başvurusu
Her `providerAuthChoices` girdisi bir onboarding veya kimlik doğrulama seçeneğini tanımlar.
OpenClaw bunu sağlayıcı çalışma zamanı yüklenmeden önce okur.
Her `providerAuthChoices` girdisi bir onboarding veya kimlik doğrulama seçeneğini ıklar.
OpenClaw bunu provider çalışma zamanı yüklenmeden önce okur.
| Alan | Gerekli | Tür | Anlamı |
| --------------------- | ------- | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------- |
| `provider` | Evet | `string` | Bu seçeneğin ait olduğu sağlayıcı kimliği. |
| `method` | Evet | `string` | Yönlendirilecek kimlik doğrulama yöntemi kimliği. |
| `choiceId` | Evet | `string` | Onboarding ve CLI akışlarında kullanılan kararlı kimlik doğrulama seçeneği kimliği. |
| `choiceLabel` | Hayır | `string` | Kullanıcıya dönük etiket. Atlanırsa OpenClaw `choiceId` değerine geri döner. |
| `choiceHint` | Hayır | `string` | Seçici için kısa yardımcı metin. |
| `assistantPriority` | Hayır | `number` | Aracı odaklı etkileşimli seçicilerde düşük değerler daha önce sıralanır. |
| `assistantVisibility` | Hayır | `"visible"` \| `"manual-only"` | Elle CLI seçimine izin vermeye devam ederken seçeneği aracı seçicilerinden gizler. |
| `deprecatedChoiceIds` | Hayır | `string[]` | Kullanıcıları bu yedek seçeneğe yönlendirmesi gereken eski seçenek kimlikleri. |
| `groupId` | Hayır | `string` | İlgili seçenekleri gruplamak için isteğe bağlı grup kimliği. |
| `groupLabel` | Hayır | `string` | Bu grup için kullanıcıya dönük etiket. |
| `groupHint` | Hayır | `string` | Grup için kısa yardımcı metin. |
| `optionKey` | Hayır | `string` | Basit tek bayraklı kimlik doğrulama akışları için iç seçenek anahtarı. |
| `cliFlag` | Hayır | `string` | `--openrouter-api-key` gibi CLI bayrağı adı. |
| `cliOption` | Hayır | `string` | `--openrouter-api-key <key>` gibi tam CLI seçenek biçimi. |
| `cliDescription` | Hayır | `string` | CLI yardımında kullanılan açıklama. |
| `onboardingScopes` | Hayır | `Array<"text-inference" \| "image-generation">` | Bu seçeneğin hangi onboarding yüzeylerinde görünmesi gerektiği. Atlanırsa varsayılan `["text-inference"]` olur. |
| Alan | Gerekli | Tür | Anlamı |
| -------------------- | -------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| `provider` | Evet | `string` | Bu seçeneğin ait olduğu provider kimliği. |
| `method` | Evet | `string` | Yönlendirme yapılacak kimlik doğrulama yöntemi kimliği. |
| `choiceId` | Evet | `string` | Onboarding ve CLI akışlarında kullanılan kararlı kimlik doğrulama seçeneği kimliği. |
| `choiceLabel` | Hayır | `string` | Kullanıcıya görünen etiket. Atlanırsa OpenClaw `choiceId` değerine geri döner. |
| `choiceHint` | Hayır | `string` | Seçici için kısa yardımcı metin. |
| `assistantPriority` | Hayır | `number` | Asistan odaklı etkileşimli seçicilerde daha düşük değerler önce sıralanır. |
| `assistantVisibility`| Hayır | `"visible"` \| `"manual-only"` | Manuel CLI seçimine izin vermeye devam ederken seçeneği asistan seçicilerinden gizler. |
| `deprecatedChoiceIds`| Hayır | `string[]` | Kullanıcıları bu yeni seçenekle yönlendirmesi gereken eski seçenek kimlikleri. |
| `groupId` | Hayır | `string` | İlgili seçenekleri gruplamak için isteğe bağlı grup kimliği. |
| `groupLabel` | Hayır | `string` | Bu grup için kullanıcıya görünen etiket. |
| `groupHint` | Hayır | `string` | Grup için kısa yardımcı metin. |
| `optionKey` | Hayır | `string` | Basit tek bayraklı kimlik doğrulama akışları için dahili seçenek anahtarı. |
| `cliFlag` | Hayır | `string` | `--openrouter-api-key` gibi CLI bayrağı adı. |
| `cliOption` | Hayır | `string` | `--openrouter-api-key <key>` gibi tam CLI seçenek biçimi. |
| `cliDescription` | Hayır | `string` | CLI yardımında kullanılan açıklama. |
| `onboardingScopes` | Hayır | `Array<"text-inference" \| "image-generation">` | Bu seçeneğin hangi onboarding yüzeylerinde görünmesi gerektiği. Atlanırsa varsayılan `["text-inference"]` olur. |
## commandAliases başvurusu
## `commandAliases` başvurusu
Bir plugin, kullanıcıların yanlışlıkla `plugins.allow` içine koyabileceği veya kök CLI komutu olarak çalıştırmayı deneyebileceği bir çalışma zamanı komut adına sahipse `commandAliases` kullanın. OpenClaw bu meta verileri, plugin çalışma zamanı kodunu içe aktarmadan tanılar için kullanır.
Bir plugin, kullanıcıların yanlışlıkla `plugins.allow` içine koyabileceği veya kök CLI komutu olarak çalıştırmayı deneyebileceği bir çalışma zamanı komut adına sahipse `commandAliases` kullanın. OpenClaw bu meta verileri, plugin çalışma zamanı kodunu içe aktarmadan tanılamalar için kullanır.
```json
{
@ -214,38 +211,37 @@ Bir plugin, kullanıcıların yanlışlıkla `plugins.allow` içine koyabileceğ
}
```
| Alan | Gerekli | Tür | Anlamı |
| ------------ | ------- | ----------------- | ------------------------------------------------------------------------- |
| `name` | Evet | `string` | Bu plugine ait komut adı. |
| `kind` | Hayır | `"runtime-slash"` | Takma adı, kök CLI komutu yerine bir sohbet slash komutu olarak işaretler. |
| `cliCommand` | Hayır | `string` | Varsa CLI işlemleri için önerilecek ilgili kök CLI komutu. |
| Alan | Gerekli | Tür | Anlamı |
| ------------ | -------- | ----------------- | -------------------------------------------------------------------------- |
| `name` | Evet | `string` | Bu plugin'e ait komut adı. |
| `kind` | Hayır | `"runtime-slash"` | Takma adı, kök CLI komutu yerine bir sohbet slash komutu olarak işaretler. |
| `cliCommand` | Hayır | `string` | Varsa CLI işlemleri için önerilecek ilgili kök CLI komutu. |
## activation başvurusu
## `activation` başvurusu
Pluginin, hangi denetim düzlemi olaylarının onu daha sonra etkinleştirmesi gerektiğini düşük maliyetle bildirebildiği durumlarda `activation` kullanın.
Plugin daha sonra hangi denetim düzlemi olaylarının onu etkinleştirmesi gerektiğini düşük maliyetle bildirebiliyorsa `activation` kullanın.
## qaRunners başvurusu
## `qaRunners` başvurusu
Bir plugin, paylaşılan `openclaw qa` kökünün altında bir veya daha fazla taşıma çalıştırıcısı sağlıyorsa `qaRunners` kullanın. Bu meta verileri düşük maliyetli ve statik tutun; plugin çalışma zamanı yine de `qaRunnerCliRegistrations` dışa aktaran hafif bir `runtime-api.ts` yüzeyi üzerinden gerçek CLI kaydına sahip olur.
Bir plugin, paylaşılan `openclaw qa` kökü altında bir veya daha fazla taşıma çalıştırıcısı sağlıyorsa `qaRunners` kullanın. Bu meta veriyi düşük maliyetli ve statik tutun; plugin çalışma zamanı, `qaRunnerCliRegistrations` dışa aktaran hafif bir `runtime-api.ts` yüzeyi üzerinden gerçek CLI kaydının sahibi olmaya devam eder.
```json
{
"qaRunners": [
{
"commandName": "matrix",
"description": "Tek kullanımlık bir homeserver'a karşı Docker destekli Matrix canlı QA hattını çalıştır"
"description": "Kullan-at bir homeserver'a karşı Docker destekli Matrix canlı QA hattını çalıştır"
}
]
}
```
| Alan | Gerekli | Tür | Anlamı |
| ------------- | ------- | -------- | -------------------------------------------------------------------------- |
| `commandName` | Evet | `string` | `openclaw qa` altında bağlanan alt komut; örneğin `matrix`. |
| `description` | Hayır | `string` | Paylaşılan hostun bir stub komuta ihtiyaç duyduğunda kullandığı yedek yardım metni. |
| Alan | Gerekli | Tür | Anlamı |
| ------------- | -------- | -------- | ---------------------------------------------------------------------- |
| `commandName` | Evet | `string` | `openclaw qa` altında bağlanan alt komut; örneğin `matrix`. |
| `description` | Hayır | `string` | Paylaşılan ana makinenin bir taslak komuta ihtiyaç duyduğu durumda kullanılan yedek yardım metni. |
Bu blok yalnızca meta veridir. Çalışma zamanı davranışı kaydetmez ve `register(...)`, `setupEntry` veya diğer çalışma zamanı/plugin giriş noktalarının yerini almaz.
Geçerli tüketiciler bunu daha geniş plugin yüklemesinden önce daraltıcı bir ipucu olarak kullanır; dolayısıyla eksik etkinleştirme meta verileri genellikle yalnızca performans maliyeti doğurur. Eski manifest sahipliği yedekleri hâlâ varken doğruluğu değiştirmemelidir.
Bu blok yalnızca meta veridir. Çalışma zamanı davranışını kaydetmez ve `register(...)`, `setupEntry` veya diğer çalışma zamanı/plugin giriş noktalarının yerini almaz. Mevcut tüketiciler bunu daha geniş plugin yüklemesinden önce daraltıcı bir ipucu olarak kullanır; bu nedenle eksik etkinleştirme meta verisi genellikle yalnızca performans maliyeti doğurur; eski manifest sahipliği geri dönüşleri hâlâ varken doğruluğu değiştirmemelidir.
```json
{
@ -259,26 +255,23 @@ Geçerli tüketiciler bunu daha geniş plugin yüklemesinden önce daraltıcı b
}
```
| Alan | Gerekli | Tür | Anlamı |
| ---------------- | ------- | ---------------------------------------------------- | ----------------------------------------------------------------------- |
| `onProviders` | Hayır | `string[]` | İstendiğinde bu plugini etkinleştirmesi gereken sağlayıcı kimlikleri. |
| `onCommands` | Hayır | `string[]` | Bu plugini etkinleştirmesi gereken komut kimlikleri. |
| `onChannels` | Hayır | `string[]` | Bu plugini etkinleştirmesi gereken kanal kimlikleri. |
| `onRoutes` | Hayır | `string[]` | Bu plugini etkinleştirmesi gereken rota türleri. |
| `onCapabilities` | Hayır | `Array<"provider" \| "channel" \| "tool" \| "hook">` | Denetim düzlemi etkinleştirme planlamasında kullanılan geniş yetenek ipuçları. |
| Alan | Gerekli | Tür | Anlamı |
| ---------------- | -------- | ---------------------------------------------------- | ---------------------------------------------------------------------- |
| `onProviders` | Hayır | `string[]` | İstendiğinde bu plugin'i etkinleştirmesi gereken provider kimlikleri. |
| `onCommands` | Hayır | `string[]` | Bu plugin'i etkinleştirmesi gereken komut kimlikleri. |
| `onChannels` | Hayır | `string[]` | Bu plugin'i etkinleştirmesi gereken kanal kimlikleri. |
| `onRoutes` | Hayır | `string[]` | Bu plugin'i etkinleştirmesi gereken rota türleri. |
| `onCapabilities` | Hayır | `Array<"provider" \| "channel" \| "tool" \| "hook">` | Denetim düzlemi etkinleştirme planlamasında kullanılan geniş yetenek ipuçları. |
Mevcut canlı tüketiciler:
Geçerli canlı tüketiciler:
- komut tetiklemeli CLI planlaması eski
`commandAliases[].cliCommand` veya `commandAliases[].name` değerine geri düşer
- kanal tetiklemeli kurulum/kanal planlaması, açık kanal etkinleştirme meta verisi eksik olduğunda eski `channels[]`
sahipliğine geri düşer
- sağlayıcı tetiklemeli kurulum/çalışma zamanı planlaması, açık sağlayıcı
etkinleştirme meta verisi eksik olduğunda eski `providers[]` ve üst düzey `cliBackends[]` sahipliğine geri düşer
- komut tetiklemeli CLI planlaması, eski `commandAliases[].cliCommand` veya `commandAliases[].name` alanlarına geri döner
- kanal tetiklemeli kurulum/kanal planlaması, açık kanal etkinleştirme meta verisi eksik olduğunda eski `channels[]` sahipliğine geri döner
- provider tetiklemeli kurulum/çalışma zamanı planlaması, açık provider etkinleştirme meta verisi eksik olduğunda eski `providers[]` ve üst düzey `cliBackends[]` sahipliğine geri döner
## setup başvurusu
## `setup` başvurusu
Kurulum ve onboarding yüzeyleri, çalışma zamanı yüklenmeden önce plugin sahipli düşük maliyetli meta verilere ihtiyaç duyduğunda `setup` kullanın.
Kurulum ve onboarding yüzeyleri çalışma zamanı yüklenmeden önce plugin'e ait düşük maliyetli meta verilere ihtiyaç duyuyorsa `setup` kullanın.
```json
{
@ -297,30 +290,30 @@ Kurulum ve onboarding yüzeyleri, çalışma zamanı yüklenmeden önce plugin s
}
```
Üst düzey `cliBackends` geçerliliğini korur ve CLI çıkarım arka uçlarını tanımlamaya devam eder. `setup.cliBackends`, yalnızca meta veri olarak kalması gereken denetim düzlemi/kurulum akışları için kurulum odaklı tanımlayıcı yüzeyidir.
Üst düzey `cliBackends` geçerliliğini korur ve CLI çıkarım backend'lerini açıklamaya devam eder. `setup.cliBackends`, yalnızca meta veri olarak kalması gereken denetim düzlemi/kurulum akışları için kurulum odaklı tanımlayıcı yüzeyidir.
Varsa, `setup.providers` ve `setup.cliBackends`, kurulum keşfi için tercih edilen tanımlayıcı öncelikli arama yüzeyidir. Tanımlayıcı yalnızca aday plugini daraltıyorsa ve kurulum hâlâ daha zengin kurulum zamanı çalışma zamanı hooklarına ihtiyaç duyuyorsa `requiresRuntime: true` ayarlayın ve yedek yürütme yolu olarak `setup-api` öğesini yerinde bırakın.
Varsa `setup.providers` ve `setup.cliBackends`, kurulum keşfi için tercih edilen tanımlayıcı öncelikli arama yüzeyidir. Tanımlayıcı yalnızca aday plugin'i daraltıyorsa ve kurulum hâlâ daha zengin kurulum zamanı çalışma zamanı hook'larına ihtiyaç duyuyorsa `requiresRuntime: true` ayarlayın ve yedek yürütme yolu olarak `setup-api` kullanımını koruyun.
Kurulum araması plugin sahipli `setup-api` kodunu çalıştırabildiğinden, normalize edilmiş `setup.providers[].id` ve `setup.cliBackends[]` değerleri keşfedilen pluginler arasında genel olarak benzersiz kalmalıdır. Belirsiz sahiplik, keşif sırasından bir kazanan seçmek yerine güvenli biçimde kapatılır.
Kurulum araması plugin'e ait `setup-api` kodunu çalıştırabildiğinden, normalize edilmiş `setup.providers[].id` ve `setup.cliBackends[]` değerleri keşfedilen plugin'ler arasında benzersiz kalmalıdır. Belirsiz sahiplik, keşif sırasından bir kazanan seçmek yerine güvenli biçimde başarısız olur.
### setup.providers başvurusu
### `setup.providers` başvurusu
| Alan | Gerekli | Tür | Anlamı |
| ------------- | ------- | ---------- | ---------------------------------------------------------------------------------------- |
| `id` | Evet | `string` | Kurulum veya onboarding sırasında sunulan sağlayıcı kimliği. Normalize edilmiş kimlikleri genel olarak benzersiz tutun. |
| `authMethods` | Hayır | `string[]` | Tam çalışma zamanını yüklemeden bu sağlayıcının desteklediği kurulum/kimlik doğrulama yöntemleri. |
| `envVars` | Hayır | `string[]` | Genel kurulum/durum yüzeylerinin plugin çalışma zamanı yüklenmeden önce kontrol edebileceği env değişkenleri. |
| Alan | Gerekli | Tür | Anlamı |
| ------------- | -------- | ---------- | --------------------------------------------------------------------------------------- |
| `id` | Evet | `string` | Kurulum veya onboarding sırasında ığa çıkan provider kimliği. Normalize kimlikleri küresel olarak benzersiz tutun. |
| `authMethods` | Hayır | `string[]` | Bu provider'ın tam çalışma zamanını yüklemeden desteklediği kurulum/kimlik doğrulama yöntemi kimlikleri. |
| `envVars` | Hayır | `string[]` | Genel kurulum/durum yüzeylerinin plugin çalışma zamanı yüklenmeden önce denetleyebileceği ortam değişkenleri. |
### setup alanları
### `setup` alanları
| Alan | Gerekli | Tür | Anlamı |
| ------------------ | ------- | ---------- | ----------------------------------------------------------------------------------------------- |
| `providers` | Hayır | `object[]` | Kurulum ve onboarding sırasında sunulan sağlayıcı kurulum tanımlayıcıları. |
| `cliBackends` | Hayır | `string[]` | Tanımlayıcı öncelikli kurulum araması için kullanılan kurulum zamanı arka uç kimlikleri. Normalize edilmiş kimlikleri genel olarak benzersiz tutun. |
| `configMigrations` | Hayır | `string[]` | Bu pluginin kurulum yüzeyine ait yapılandırma geçiş kimlikleri. |
| `requiresRuntime` | Hayır | `boolean` | Tanımlayıcı aramasından sonra kurulumun hâlâ `setup-api` yürütmesine ihtiyaç duyup duymadığı. |
| Alan | Gerekli | Tür | Anlamı |
| ------------------ | -------- | ---------- | ---------------------------------------------------------------------------------------------- |
| `providers` | Hayır | `object[]` | Kurulum ve onboarding sırasında ığa çıkan provider kurulum tanımlayıcıları. |
| `cliBackends` | Hayır | `string[]` | Tanımlayıcı öncelikli kurulum araması için kullanılan kurulum zamanı backend kimlikleri. Normalize kimlikleri küresel olarak benzersiz tutun. |
| `configMigrations` | Hayır | `string[]` | Bu plugin'in kurulum yüzeyine ait yapılandırma geçişi kimlikleri. |
| `requiresRuntime` | Hayır | `boolean` | Tanımlayıcı aramasından sonra kurulumun hâlâ `setup-api` yürütmesine ihtiyaç duyup duymadığı. |
## uiHints başvurusu
## `uiHints` başvurusu
`uiHints`, yapılandırma alan adlarından küçük işleme ipuçlarına giden bir eşlemedir.
@ -328,8 +321,8 @@ Kurulum araması plugin sahipli `setup-api` kodunu çalıştırabildiğinden, no
{
"uiHints": {
"apiKey": {
"label": "API anahtarı",
"help": "OpenRouter istekleri için kullanılır",
"label": "API key",
"help": "Used for OpenRouter requests",
"placeholder": "sk-or-v1-...",
"sensitive": true
}
@ -339,22 +332,23 @@ Kurulum araması plugin sahipli `setup-api` kodunu çalıştırabildiğinden, no
Her alan ipucu şunları içerebilir:
| Alan | Tür | Anlamı |
| ------------- | ---------- | --------------------------------------- |
| `label` | `string` | Kullanıcıya dönük alan etiketi. |
| `help` | `string` | Kısa yardımcı metin. |
| `tags` | `string[]` | İsteğe bağlı UI etiketleri. |
| `advanced` | `boolean` | Alanı gelişmiş olarak işaretler. |
| Alan | Tür | Anlamı |
| ------------- | ---------- | ------------------------------------- |
| `label` | `string` | Kullanıcıya görünen alan etiketi. |
| `help` | `string` | Kısa yardımcı metin. |
| `tags` | `string[]` | İsteğe bağlı UI etiketleri. |
| `advanced` | `boolean` | Alanı gelişmiş olarak işaretler. |
| `sensitive` | `boolean` | Alanı gizli veya hassas olarak işaretler. |
| `placeholder` | `string` | Form girdileri için yer tutucu metin. |
| `placeholder` | `string` | Form girdileri için yer tutucu metin. |
## contracts başvurusu
## `contracts` başvurusu
`contracts` öğesini yalnızca OpenClawun plugin çalışma zamanını içe aktarmadan okuyabileceği statik yetenek sahipliği meta verileri için kullanın.
OpenClaw'ın plugin çalışma zamanını içe aktarmadan okuyabileceği statik yetenek sahipliği meta verileri için yalnızca `contracts` kullanın.
```json
{
"contracts": {
"embeddedExtensionFactories": ["pi"],
"speechProviders": ["openai"],
"realtimeTranscriptionProviders": ["openai"],
"realtimeVoiceProviders": ["openai"],
@ -370,21 +364,56 @@ Her alan ipucu şunları içerebilir:
Her liste isteğe bağlıdır:
| Alan | Tür | Anlamı |
| -------------------------------- | ---------- | ---------------------------------------------------------- |
| `speechProviders` | `string[]` | Bu plugine ait konuşma sağlayıcısı kimlikleri. |
| `realtimeTranscriptionProviders` | `string[]` | Bu plugine ait gerçek zamanlı transkripsiyon sağlayıcısı kimlikleri. |
| `realtimeVoiceProviders` | `string[]` | Bu plugine ait gerçek zamanlı ses sağlayıcısı kimlikleri. |
| `mediaUnderstandingProviders` | `string[]` | Bu plugine ait medya-anlama sağlayıcısı kimlikleri. |
| `imageGenerationProviders` | `string[]` | Bu plugine ait görsel üretimi sağlayıcısı kimlikleri. |
| `videoGenerationProviders` | `string[]` | Bu plugine ait video üretimi sağlayıcısı kimlikleri. |
| `webFetchProviders` | `string[]` | Bu plugine ait web-fetch sağlayıcısı kimlikleri. |
| `webSearchProviders` | `string[]` | Bu plugine ait web araması sağlayıcısı kimlikleri. |
| `tools` | `string[]` | Paketlenmiş sözleşme denetimleri için bu plugine ait aracı araç adları. |
| Alan | Tür | Anlamı |
| -------------------------------- | ---------- | --------------------------------------------------------------------- |
| `embeddedExtensionFactories` | `string[]` | Paketlenmiş bir plugin'in fabrika kaydedebileceği gömülü çalışma zamanı kimlikleri. |
| `speechProviders` | `string[]` | Bu plugin'in sahip olduğu konuşma provider kimlikleri. |
| `realtimeTranscriptionProviders` | `string[]` | Bu plugin'in sahip olduğu gerçek zamanlı transkripsiyon provider kimlikleri. |
| `realtimeVoiceProviders` | `string[]` | Bu plugin'in sahip olduğu gerçek zamanlı ses provider kimlikleri. |
| `mediaUnderstandingProviders` | `string[]` | Bu plugin'in sahip olduğu medya anlama provider kimlikleri. |
| `imageGenerationProviders` | `string[]` | Bu plugin'in sahip olduğu görsel oluşturma provider kimlikleri. |
| `videoGenerationProviders` | `string[]` | Bu plugin'in sahip olduğu video oluşturma provider kimlikleri. |
| `webFetchProviders` | `string[]` | Bu plugin'in sahip olduğu web getirme provider kimlikleri. |
| `webSearchProviders` | `string[]` | Bu plugin'in sahip olduğu web arama provider kimlikleri. |
| `tools` | `string[]` | Paketlenmiş sözleşme denetimleri için bu plugin'in sahip olduğu ajan araç adları. |
## channelConfigs başvurusu
## `mediaUnderstandingProviderMetadata` başvurusu
Bir kanal plugini, çalışma zamanı yüklenmeden önce düşük maliyetli yapılandırma meta verilerine ihtiyaç duyduğunda `channelConfigs` kullanın.
Bir medya anlama provider'ının, genel çekirdek yardımcılarının çalışma zamanı yüklenmeden önce ihtiyaç duyduğu varsayılan modellere, otomatik kimlik doğrulama geri dönüş önceliğine veya yerel belge desteğine sahip olduğu durumlarda `mediaUnderstandingProviderMetadata` kullanın. Anahtarlar ayrıca `contracts.mediaUnderstandingProviders` içinde de bildirilmelidir.
```json
{
"contracts": {
"mediaUnderstandingProviders": ["example"]
},
"mediaUnderstandingProviderMetadata": {
"example": {
"capabilities": ["image", "audio"],
"defaultModels": {
"image": "example-vision-latest",
"audio": "example-transcribe-latest"
},
"autoPriority": {
"image": 40
},
"nativeDocumentInputs": ["pdf"]
}
}
}
```
Her provider girdisi şunları içerebilir:
| Alan | Tür | Anlamı |
| ---------------------- | ----------------------------------- | --------------------------------------------------------------------------- |
| `capabilities` | `("image" \| "audio" \| "video")[]` | Bu provider tarafından sunulan medya yetenekleri. |
| `defaultModels` | `Record<string, string>` | Yapılandırma bir model belirtmediğinde kullanılan yetenekten modele varsayılan eşlemeleri. |
| `autoPriority` | `Record<string, number>` | Kimlik bilgisine dayalı otomatik provider geri dönüşünde daha düşük sayılar önce sıralanır. |
| `nativeDocumentInputs` | `"pdf"[]` | Provider tarafından desteklenen yerel belge girdileri. |
## `channelConfigs` başvurusu
Bir kanal plugin'inin çalışma zamanı yüklenmeden önce düşük maliyetli yapılandırma meta verilerine ihtiyaç duyduğu durumlarda `channelConfigs` kullanın.
```json
{
@ -413,17 +442,17 @@ Bir kanal plugini, çalışma zamanı yüklenmeden önce düşük maliyetli y
Her kanal girdisi şunları içerebilir:
| Alan | Tür | Anlamı |
| ------------- | ------------------------ | ------------------------------------------------------------------------------------------ |
| `schema` | `object` | `channels.<id>` için JSON Şeması. Bildirilen her kanal yapılandırma girdisi için gereklidir. |
| `uiHints` | `Record<string, object>` | Bu kanal yapılandırma bölümü için isteğe bağlı UI etiketleri/yer tutucular/hassas ipuçları. |
| `label` | `string` | Çalışma zamanı meta verisi hazır olmadığında seçici ve inceleme yüzeylerine birleştirilen kanal etiketi. |
| `description` | `string` | İnceleme ve katalog yüzeyleri için kısa kanal açıklaması. |
| `preferOver` | `string[]` | Seçim yüzeylerinde bunun önüne geçmesi gereken eski veya düşük öncelikli plugin kimlikleri. |
| Alan | Tür | Anlamı |
| ------------- | ------------------------ | ------------------------------------------------------------------------------------------- |
| `schema` | `object` | `channels.<id>` için JSON Schema. Bildirilen her kanal yapılandırma girdisi için zorunludur. |
| `uiHints` | `Record<string, object>` | Bu kanal yapılandırma bölümü için isteğe bağlı UI etiketleri/yer tutucular/hassasiyet ipuçları. |
| `label` | `string` | Çalışma zamanı meta verileri hazır olmadığında seçiciye ve inceleme yüzeylerine birleştirilen kanal etiketi. |
| `description` | `string` | İnceleme ve katalog yüzeyleri için kısa kanal açıklaması. |
| `preferOver` | `string[]` | Bu kanalın seçim yüzeylerinde geride bırakması gereken eski veya daha düşük öncelikli plugin kimlikleri. |
## modelSupport başvurusu
## `modelSupport` başvurusu
OpenClawun, plugin çalışma zamanı yüklenmeden önce `gpt-5.4` veya `claude-sonnet-4.6` gibi kısa model kimliklerinden sağlayıcı plugininizi çıkarsamasını istiyorsanız `modelSupport` kullanın.
OpenClaw'ın, plugin çalışma zamanı yüklenmeden önce `gpt-5.4` veya `claude-sonnet-4.6` gibi kısa model kimliklerinden provider plugin'inizi çıkarsaması gerektiğinde `modelSupport` kullanın.
```json
{
@ -434,71 +463,66 @@ OpenClawun, plugin çalışma zamanı yüklenmeden önce `gpt-5.4` veya `clau
}
```
OpenClaw şu önceliği uygular:
OpenClaw şu öncelik sırasını uygular:
- açık `provider/model` başvuruları sahip `providers` manifest meta verilerini kullanır
- `modelPatterns`, `modelPrefixes` üzerinde önceliklidir
- hem paketlenmemiş bir plugin hem de paketlenmiş bir plugin eşleşirse, paketlenmemiş plugin kazanır
- geri kalan belirsizlik, kullanıcı veya yapılandırma bir sağlayıcı belirtinceye kadar yok sayılır
- açık `provider/model` başvuruları, sahibi olan `providers` manifest meta verilerini kullanır
- `modelPatterns`, `modelPrefixes` değerlerini geçersiz kılar
- hem paketlenmemiş bir plugin hem de paketlenmiş bir plugin eşleşirse paketlenmemiş plugin kazanır
- kalan belirsizlik, kullanıcı veya yapılandırma bir provider belirtinceye kadar yok sayılır
Alanlar:
| Alan | Tür | Anlamı |
| --------------- | ---------- | --------------------------------------------------------------------------- |
| `modelPrefixes` | `string[]` | Kısa model kimliklerine karşı `startsWith` ile eşleşen önekler. |
| Alan | Tür | Anlamı |
| --------------- | ---------- | ---------------------------------------------------------------------------- |
| `modelPrefixes` | `string[]` | Kısa model kimliklerine karşı `startsWith` ile eşleşen önekler. |
| `modelPatterns` | `string[]` | Profil son eki kaldırıldıktan sonra kısa model kimliklerine karşı eşleşen regex kaynakları. |
Eski üst düzey yetenek anahtarları kullanımdan kaldırılmıştır. `speechProviders`, `realtimeTranscriptionProviders`,
`realtimeVoiceProviders`, `mediaUnderstandingProviders`,
`imageGenerationProviders`, `videoGenerationProviders`,
`webFetchProviders` ve `webSearchProviders` alanlarını `contracts` altına taşımak için `openclaw doctor --fix` kullanın; normal
manifest yükleme artık bu üst düzey alanları yetenek sahipliği olarak ele almaz.
Eski üst düzey yetenek anahtarları kullanımdan kaldırılmıştır. `speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders` ve `webSearchProviders` alanlarını `contracts` altına taşımak için `openclaw doctor --fix` kullanın; normal manifest yükleme artık bu üst düzey alanları yetenek sahipliği olarak değerlendirmez.
## Manifest ile package.json karşılaştırması
Bu iki dosya farklı görevler görür:
Bu iki dosya farklı işler yapar:
| Dosya | Şunun için kullanın |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `openclaw.plugin.json` | Keşif, yapılandırma doğrulaması, kimlik doğrulama seçeneği meta verileri ve plugin kodu çalışmadan önce var olması gereken UI ipuçları |
| Dosya | Şunun için kullanın |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `openclaw.plugin.json` | Plugin kodu çalışmadan önce var olması gereken keşif, yapılandırma doğrulaması, kimlik doğrulama seçeneği meta verileri ve UI ipuçları |
| `package.json` | npm meta verileri, bağımlılık kurulumu ve giriş noktaları, kurulum geçitlemesi, setup veya katalog meta verileri için kullanılan `openclaw` bloğu |
Bir meta veri parçasının nereye ait olduğundan emin değilseniz şu kuralı kullanın:
Bir meta verinin nereye ait olduğundan emin değilseniz şu kuralı kullanın:
- OpenClaw bunu plugin kodunu yüklemeden önce bilmek zorundaysa `openclaw.plugin.json` içine koyun
- paketleme, giriş dosyaları veya npm kurulum davranışıyla ilgiliyse `package.json` içine koyun
### Keşfi etkileyen package.json alanları
### Keşfi etkileyen `package.json` alanları
Bazı çalışma zamanı öncesi plugin meta verileri, `openclaw.plugin.json` yerine kasten `package.json` içindeki
`openclaw` bloğu altında bulunur.
Çalışma zamanından önceki bazı plugin meta verileri, bilinçli olarak `openclaw.plugin.json` yerine `package.json` içindeki `openclaw` bloğunda bulunur.
Önemli örnekler:
| Alan | Anlamı |
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `openclaw.extensions` | Yerel plugin giriş noktalarını bildirir. Plugin paket dizini içinde kalmak zorundadır. |
| `openclaw.runtimeExtensions` | Kurulu paketler için derlenmiş JavaScript çalışma zamanı giriş noktalarını bildirir. Plugin paket dizini içinde kalmak zorundadır. |
| `openclaw.setupEntry` | Onboarding, ertelenmiş kanal başlatma ve salt okunur kanal durumu/SecretRef keşfi sırasında kullanılan hafif yalnızca-kurulum giriş noktası. Plugin paket dizini içinde kalmak zorundadır. |
| `openclaw.runtimeSetupEntry` | Kurulu paketler için derlenmiş JavaScript kurulum giriş noktasını bildirir. Plugin paket dizini içinde kalmak zorundadır. |
| `openclaw.channel` | Etiketler, doküman yolları, takma adlar ve seçim metni gibi düşük maliyetli kanal katalog meta verileri. |
| `openclaw.channel.configuredState` | Tam kanal çalışma zamanını yüklemeden "yalnızca env tabanlı kurulum zaten var mı?" sorusunu cevaplayabilen hafif configured-state checker meta verileri. |
| `openclaw.channel.persistedAuthState` | Tam kanal çalışma zamanını yüklemeden "zaten oturum açılmış bir şey var mı?" sorusunu cevaplayabilen hafif persisted-auth checker meta verileri. |
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Paketlenmiş ve dışarıda yayımlanmış pluginler için kurulum/güncelleme ipuçları. |
| `openclaw.install.defaultChoice` | Birden fazla kurulum kaynağı olduğunda tercih edilen kurulum yolu. |
| `openclaw.install.minHostVersion` | `>=2026.3.22` gibi bir semver alt sınırı kullanan, desteklenen en düşük OpenClaw host sürümü. |
| `openclaw.install.allowInvalidConfigRecovery` | Yapılandırma geçersiz olduğunda dar kapsamlı bir paketlenmiş-plugin yeniden kurulum kurtarma yoluna izin verir. |
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Başlangıç sırasında tam kanal plugininden önce yalnızca-kurulum kanal yüzeylerinin yüklenmesine izin verir. |
| Alan | Anlamı |
| ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `openclaw.extensions` | Yerel plugin giriş noktalarını bildirir. Plugin paket dizini içinde kalmalıdır. |
| `openclaw.runtimeExtensions` | Kurulu paketler için derlenmiş JavaScript çalışma zamanı giriş noktalarını bildirir. Plugin paket dizini içinde kalmalıdır. |
| `openclaw.setupEntry` | Onboarding, ertelenmiş kanal başlangıcı ve salt okunur kanal durumu/SecretRef keşfi sırasında kullanılan hafif, yalnızca setup giriş noktasıdır. Plugin paket dizini içinde kalmalıdır. |
| `openclaw.runtimeSetupEntry` | Kurulu paketler için derlenmiş JavaScript setup giriş noktasını bildirir. Plugin paket dizini içinde kalmalıdır. |
| `openclaw.channel` | Etiketler, belge yolları, takma adlar ve seçim metni gibi düşük maliyetli kanal katalog meta verileri. |
| `openclaw.channel.configuredState` | Tam kanal çalışma zamanını yüklemeden "yalnızca env temelli kurulum zaten mevcut mu?" sorusunu yanıtlayabilen hafif yapılandırılmış durum denetleyicisi meta verileri. |
| `openclaw.channel.persistedAuthState` | Tam kanal çalışma zamanını yüklemeden "zaten oturum açılmış bir şey var mı?" sorusunu yanıtlayabilen hafif kalıcı kimlik doğrulama durumu denetleyicisi meta verileri. |
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Paketlenmiş ve dışarıda yayımlanmış plugin'ler için kurulum/güncelleme ipuçları. |
| `openclaw.install.defaultChoice` | Birden fazla kurulum kaynağı mevcut olduğunda tercih edilen kurulum yolu. |
| `openclaw.install.minHostVersion` | `>=2026.3.22` gibi bir semver alt sınırı kullanarak desteklenen en düşük OpenClaw ana makine sürümü. |
| `openclaw.install.allowInvalidConfigRecovery` | Yapılandırma geçersiz olduğunda dar kapsamlı, paketlenmiş plugin yeniden kurulum kurtarma yoluna izin verir. |
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Başlangıç sırasında tam kanal plugin'inden önce yalnızca setup kanal yüzeylerinin yüklenmesine izin verir. |
`openclaw.install.minHostVersion`, kurulum ve manifest kayıt defteri yükleme sırasında zorlanır. Geçersiz değerler reddedilir; daha yeni ama geçerli değerler eski hostlarda plugini atlar.
`openclaw.install.minHostVersion`, kurulum ve manifest kayıt defteri yükleme sırasında uygulanır. Geçersiz değerler reddedilir; daha yeni ama geçerli değerler, daha eski ana makinelerde plugin'i atlar.
Kanal pluginleri, durum, kanal listesi veya SecretRef taramalarının tam çalışma zamanını yüklemeden yapılandırılmış hesapları tanımlaması gerektiğinde `openclaw.setupEntry` sağlamalıdır. Kurulum girdisi kanal meta verilerini ve kurulum için güvenli yapılandırma, durum ve sır bağdaştırıcılarını sunmalıdır; ağ istemcilerini, gateway dinleyicilerini ve taşıma çalışma zamanlarını ana uzantı giriş noktasında tutun.
Kanal plugin'leri, durum, kanal listesi veya SecretRef taramalarının tam çalışma zamanını yüklemeden yapılandırılmış hesapları belirlemesi gerektiğinde `openclaw.setupEntry` sağlamalıdır. Setup girişi, kanal meta verilerini ve setup için güvenli yapılandırma, durum ve gizli anahtar adaptörlerini açığa çıkarmalıdır; ağ istemcilerini, Gateway dinleyicilerini ve taşıma çalışma zamanlarını ana eklenti giriş noktasında tutun.
Çalışma zamanı giriş noktası alanları, kaynak giriş noktası alanları için paket sınırı denetimlerini geçersiz kılmaz. Örneğin `openclaw.runtimeExtensions`, sınır dışına kaçan bir `openclaw.extensions` yolunu yüklenebilir hâle getiremez.
Çalışma zamanı giriş noktası alanları, kaynak giriş noktası alanları için paket sınırı denetimlerini geçersiz kılmaz. Örneğin, `openclaw.runtimeExtensions`, sınır dışına çıkan bir `openclaw.extensions` yolunu yüklenebilir hâle getiremez.
`openclaw.install.allowInvalidConfigRecovery` kasten dardır. Keyfi bozuk yapılandırmaları kurulabilir hâle getirmez. Bugün yalnızca eksik paketlenmiş plugin yolu veya aynı paketlenmiş plugin için bayat `channels.<id>` girdisi gibi belirli bayat paketlenmiş-plugin yükseltme hatalarından kurulum akışlarının kurtulmasına izin verir. İlgisiz yapılandırma hataları yine de kurulumu engeller ve operatörleri `openclaw doctor --fix` komutuna yönlendirir.
`openclaw.install.allowInvalidConfigRecovery` kasıtlı olarak dar kapsamlıdır. Rastgele bozuk yapılandırmaları kurulabilir hâle getirmez. Bugün yalnızca, eksik paketlenmiş plugin yolu veya aynı paketlenmiş plugin için eski bir `channels.<id>` girdisi gibi belirli eski paketlenmiş plugin yükseltme hatalarından kurulum akışlarının kurtulmasına izin verir. İlgisiz yapılandırma hataları hâlâ kurulumu engeller ve operatörleri `openclaw doctor --fix` komutuna yönlendirir.
`openclaw.channel.persistedAuthState`, küçük bir checker modülü için paket meta verisidir:
`openclaw.channel.persistedAuthState`, küçük bir denetleyici modül için paket meta verisidir:
```json
{
@ -514,9 +538,9 @@ Kanal pluginleri, durum, kanal listesi veya SecretRef taramalarının tam ça
}
```
Bunu, setup, doctor veya configured-state akışlarının tam kanal plugini yüklenmeden önce düşük maliyetli bir evet/hayır kimlik doğrulama yoklamasına ihtiyaç duyduğu durumlarda kullanın. Hedef dışa aktarım yalnızca kalıcı durumu okuyan küçük bir işlev olmalıdır; bunu tam kanal çalışma zamanı barrelı üzerinden yönlendirmeyin.
Setup, doctor veya yapılandırılmış durum akışlarının tam kanal plugin'i yüklenmeden önce düşük maliyetli bir evet/hayır kimlik doğrulama yoklamasına ihtiyaç duyduğu durumlarda bunu kullanın. Hedef dışa aktarma, yalnızca kalıcı durumu okuyan küçük bir işlev olmalıdır; bunu tam kanal çalışma zamanı barrel'ı üzerinden yönlendirmeyin.
`openclaw.channel.configuredState`, düşük maliyetli yalnızca-env configured denetimleri için aynı biçimi izler:
`openclaw.channel.configuredState`, düşük maliyetli yalnızca env tabanlı yapılandırılmış durum denetimleri için aynı biçimi izler:
```json
{
@ -532,82 +556,63 @@ Bunu, setup, doctor veya configured-state akışlarının tam kanal plugini y
}
```
Bunu, bir kanal configured-state bilgisini env veya başka küçük çalışma zamanı dışı girdilerden cevaplayabiliyorsa kullanın. Denetim tam yapılandırma çözümlemesi veya gerçek kanal çalışma zamanı gerektiriyorsa, bu mantığı bunun yerine plugin `config.hasConfiguredState` hooku içinde tutun.
Bir kanal, yapılandırılmış durumu env veya diğer küçük çalışma zamanı dışı girdilerden yanıtlayabiliyorsa bunu kullanın. Denetim tam yapılandırma çözümlemesi veya gerçek kanal çalışma zamanını gerektiriyorsa bu mantığı bunun yerine plugin `config.hasConfiguredState` hook'unda tutun.
## Keşif önceliği (yinelenen plugin kimlikleri)
OpenClaw, pluginleri birkaç kökten keşfeder (paketlenmiş, genel kurulum, çalışma alanı, açık yapılandırmayla seçilmiş yollar). İki keşif aynı `id` değerini paylaşıyorsa yalnızca **en yüksek öncelikli** manifest tutulur; daha düşük öncelikli yinelenenler yanında yüklenmek yerine düşürülür.
OpenClaw plugin'leri çeşitli köklerden keşfeder (paketlenmiş, global kurulum, çalışma alanı, yapılandırmada açıkça seçilen yollar). İki keşif aynı `id` değerini paylaşıyorsa yalnızca **en yüksek öncelikli** manifest tutulur; daha düşük öncelikli yinelenenler onun yanında yüklenmek yerine atılır.
Öncelik, yüksekten düşüğe:
Öncelik sırası, yüksekten düşüğe:
1. **Yapılandırmayla seçilen** — `plugins.entries.<id>` içinde açıkça sabitlenmiş bir yol
2. **Paketlenmiş** — OpenClaw ile gelen pluginler
3. **Genel kurulum** — genel OpenClaw plugin köküne kurulmuş pluginler
4. **Çalışma alanı** — geçerli çalışma alanına göre keşfedilen pluginler
1. **Yapılandırmada seçilen** — `plugins.entries.<id>` içinde açıkça sabitlenmiş bir yol
2. **Paketlenmiş** — OpenClaw ile birlikte gelen plugin'ler
3. **Global kurulum** — global OpenClaw plugin köküne kurulmuş plugin'ler
4. **Çalışma alanı** — geçerli çalışma alanına göre keşfedilen plugin'ler
Sonuçlar:
- Çalışma alanında duran, çatallanmış veya bayat bir paketlenmiş plugin kopyası paketlenmiş derlemeyi gölgeleyemez.
- Paketlenmiş bir plugini yerel bir kopyayla gerçekten geçersiz kılmak için, çalışma alanı keşfine güvenmek yerine öncelikle kazanması amacıyla onu `plugins.entries.<id>` üzerinden sabitleyin.
- Yinelenen düşürmeler günlüğe kaydedilir; böylece Doctor ve başlangıç tanıları elenen kopyaya işaret edebilir.
- Çalışma alanında duran, çatallanmış veya eski bir paketlenmiş plugin kopyası, paketlenmiş derlemenin önüne geçmez.
- Paketlenmiş bir plugin'i yerel olanla gerçekten geçersiz kılmak için, çalışma alanı keşfine güvenmek yerine öncelik sırasıyla kazanması amacıyla onu `plugins.entries.<id>` üzerinden sabitleyin.
- Atılan yinelenenler günlüğe kaydedilir; böylece Doctor ve başlangıç tanılamaları elenen kopyayı gösterebilir.
## JSON Şeması gereksinimleri
## JSON Schema gereksinimleri
- **Her plugin bir JSON Şeması yayımlamak zorundadır**, hiçbir yapılandırma kabul etmese bile.
- **Her plugin mutlaka bir JSON Schema yayımlamalıdır**, yapılandırma kabul etmese bile.
- Boş bir şema kabul edilebilir (örneğin `{ "type": "object", "additionalProperties": false }`).
- Şemalar çalışma zamanında değil, yapılandırma okuma/yazma sırasında doğrulanır.
## Doğrulama davranışı
- Plugin manifesti tarafından kanal kimliği bildirilmediği sürece bilinmeyen `channels.*` anahtarları **hatadır**.
- `plugins.entries.<id>`, `plugins.allow`, `plugins.deny` ve `plugins.slots.*`
**keşfedilebilir** plugin kimliklerine başvurmalıdır. Bilinmeyen kimlikler **hatadır**.
- Bir plugin kuruluysa ama manifesti veya şeması bozuksa ya da eksikse,
doğrulama başarısız olur ve Doctor plugin hatasını bildirir.
- Plugin yapılandırması varsa ama plugin **devre dışıysa**, yapılandırma korunur ve
Doctor + günlüklerde bir **uyarı** gösterilir.
- Bilinmeyen `channels.*` anahtarları, kanal kimliği bir plugin manifesti tarafından bildirilmedikçe **hatadır**.
- `plugins.entries.<id>`, `plugins.allow`, `plugins.deny` ve `plugins.slots.*`, **keşfedilebilir** plugin kimliklerine başvurmalıdır. Bilinmeyen kimlikler **hatadır**.
- Bir plugin kuruluysa ancak bozuk veya eksik manifesti ya da şeması varsa doğrulama başarısız olur ve Doctor plugin hatasını bildirir.
- Plugin yapılandırması varsa ancak plugin **devre dışıysa**, yapılandırma korunur ve Doctor + günlüklerde bir **uyarı** gösterilir.
Tam `plugins.*` şeması için bkz. [Configuration reference](/tr/gateway/configuration).
Tam `plugins.*` şeması için bkz. [Yapılandırma başvurusu](/tr/gateway/configuration).
## Notlar
- Manifest, yerel dosya sistemi yüklemeleri dahil **yerel OpenClaw pluginleri için zorunludur**.
- Çalışma zamanı yine de plugin modülünü ayrı olarak yükler; manifest yalnızca
keşif + doğrulama içindir.
- Yerel manifestler JSON5 ile ayrıştırılır; dolayısıyla son değer hâlâ bir nesne olduğu sürece yorumlar, sondaki virgüller ve tırnaksız anahtarlar kabul edilir.
- Manifest yükleyicisi yalnızca belgelenmiş manifest alanlarını okur. Buraya
özel üst düzey anahtarlar eklemekten kaçının.
- `providerAuthEnvVars`, kimlik doğrulama yoklamaları, env-marker
doğrulaması ve env adlarını incelemek için plugin çalışma zamanını başlatmaması gereken benzer sağlayıcı kimlik doğrulama yüzeyleri için düşük maliyetli meta veri yoludur.
- `providerAuthAliases`, sağlayıcı varyantlarının başka bir sağlayıcının kimlik doğrulama
env değişkenlerini, kimlik doğrulama profillerini, yapılandırma destekli kimlik doğrulamayı ve API anahtarlı onboarding seçeneğini çekirdeğe bu ilişkiyi sabit kodlamadan yeniden kullanmasına izin verir.
- `providerEndpoints`, sağlayıcı pluginlerinin basit uç nokta host/baseUrl
eşleştirme meta verilerine sahip olmasını sağlar. Bunu yalnızca çekirdeğin zaten desteklediği uç nokta sınıfları için kullanın; çalışma zamanı davranışı yine de plugine aittir.
- `syntheticAuthRefs`, çalışma zamanı kayıt defteri oluşmadan önce soğuk model keşfi için görünür olması gereken sağlayıcı sahipli sentetik
kimlik doğrulama hookları için düşük maliyetli meta veri yoludur. Yalnızca çalışma zamanı sağlayıcısı veya CLI arka ucu gerçekten `resolveSyntheticAuth` uygulayan başvuruları listeleyin.
- `nonSecretAuthMarkers`, yerel, OAuth veya ortam kimlik bilgisi işaretçileri gibi paketlenmiş plugin sahipli
yer tutucu API anahtarları için düşük maliyetli meta veri yoludur.
Çekirdek, sahip sağlayıcıyı sabit kodlamadan bunları kimlik doğrulama gösterimi ve sır denetimleri için gizli olmayan değerler olarak ele alır.
- `channelEnvVars`, env adlarını incelemek için plugin çalışma zamanını başlatmaması gereken shell-env yedeği, setup
istemleri ve benzeri kanal yüzeyleri için düşük maliyetli meta veri yoludur. Env adları meta veridir, tek başlarına etkinleştirme değildir: durum, denetim, Cron teslim doğrulaması ve diğer salt okunur
yüzeyler, bir env değişkenini yapılandırılmış kanal olarak kabul etmeden önce yine de plugin güveni ve etkili etkinleştirme ilkesini uygular.
- `providerAuthChoices`, sağlayıcı çalışma zamanı yüklenmeden önce kimlik doğrulama seçeneği seçicileri,
`--auth-choice` çözümlemesi, tercih edilen sağlayıcı eşlemesi ve basit onboarding
CLI bayrağı kaydı için düşük maliyetli meta veri yoludur. Sağlayıcı kodu gerektiren çalışma zamanı sihirbazı
meta verileri için bkz.
[Provider runtime hooks](/tr/plugins/architecture#provider-runtime-hooks).
- Birbirini dışlayan plugin türleri `plugins.slots.*` üzerinden seçilir.
- `kind: "memory"` değeri `plugins.slots.memory` tarafından seçilir.
- `kind: "context-engine"` değeri `plugins.slots.contextEngine`
tarafından seçilir (varsayılan: yerleşik `legacy`).
- Bir plugin bunlara ihtiyaç duymuyorsa `channels`, `providers`, `cliBackends` ve `skills`
atlanabilir.
- Plugininiz yerel modüllere bağımlıysa derleme adımlarını ve tüm
paket yöneticisi izin listesi gereksinimlerini belgeleyin (örneğin pnpm `allow-build-scripts`
- Manifest, yerel dosya sistemi yüklemeleri dahil **yerel OpenClaw plugin'leri için zorunludur**.
- Çalışma zamanı yine de plugin modülünü ayrı olarak yükler; manifest yalnızca keşif + doğrulama içindir.
- Yerel manifestler JSON5 ile ayrıştırılır; bu nedenle son değer hâlâ bir nesne olduğu sürece yorumlar, sondaki virgüller ve tırnaksız anahtarlar kabul edilir.
- Manifest yükleyicisi yalnızca belgelenmiş manifest alanlarını okur. Buraya özel üst düzey anahtarlar eklemekten kaçının.
- `providerAuthEnvVars`, kimlik doğrulama yoklamaları, env işaretleyici doğrulaması ve env adlarını incelemek için plugin çalışma zamanını başlatmaması gereken benzer provider kimlik doğrulama yüzeyleri için düşük maliyetli meta veri yoludur.
- `providerAuthAliases`, provider varyantlarının başka bir provider'ın kimlik doğrulama env değişkenlerini, kimlik doğrulama profillerini, yapılandırma tabanlı kimlik doğrulamayı ve API anahtarı onboarding seçeneğini, bu ilişkiyi çekirdekte sabit kodlamadan yeniden kullanmasına izin verir.
- `providerEndpoints`, provider plugin'lerinin basit endpoint host/baseUrl eşleştirme meta verilerinin sahibi olmasına izin verir. Bunu yalnızca çekirdeğin zaten desteklediği endpoint sınıfları için kullanın; çalışma zamanı davranışının sahibi hâlâ plugin'dir.
- `syntheticAuthRefs`, çalışma zamanı kayıt defteri mevcut olmadan önce soğuk model keşfine görünür olması gereken provider'a ait sentetik kimlik doğrulama hook'ları için düşük maliyetli meta veri yoludur. Yalnızca çalışma zamanı provider'ı veya CLI backend'i gerçekten `resolveSyntheticAuth` uygulayan başvuruları listeleyin.
- `nonSecretAuthMarkers`, yerel, OAuth veya ortamdan gelen kimlik bilgisi işaretleyicileri gibi paketlenmiş plugin'e ait yer tutucu API anahtarları için düşük maliyetli meta veri yoludur. Çekirdek, sahibi olan provider'ı sabit kodlamadan bunları kimlik doğrulama gösterimi ve gizli bilgi denetimleri için gizli olmayan değerler olarak ele alır.
- `channelEnvVars`, env adlarını incelemek için plugin çalışma zamanını başlatmaması gereken kabuk env geri dönüşü, setup istemleri ve benzer kanal yüzeyleri için düşük maliyetli meta veri yoludur. Env adları meta veridir, tek başlarına etkinleştirme değildir: durum, denetim, Cron teslim doğrulaması ve diğer salt okunur yüzeyler, bir env değişkenini yapılandırılmış kanal olarak kabul etmeden önce hâlâ plugin güvenini ve etkili etkinleştirme ilkesini uygular.
- `providerAuthChoices`, provider çalışma zamanı yüklenmeden önce kimlik doğrulama seçici arayüzleri, `--auth-choice` çözümlemesi, tercih edilen provider eşlemesi ve basit onboarding CLI bayrağı kaydı için düşük maliyetli meta veri yoludur. Provider kodu gerektiren çalışma zamanı sihirbazı meta verileri için bkz. [Provider çalışma zamanı hook'ları](/tr/plugins/architecture#provider-runtime-hooks).
- Yalnızca birine özel plugin türleri `plugins.slots.*` üzerinden seçilir.
- `kind: "memory"` şu alan tarafından seçilir: `plugins.slots.memory`.
- `kind: "context-engine"` şu alan tarafından seçilir: `plugins.slots.contextEngine`
(varsayılan: yerleşik `legacy`).
- `channels`, `providers`, `cliBackends` ve `skills`, bir plugin bunlara ihtiyaç duymuyorsa atlanabilir.
- Plugin'iniz yerel modüllere bağlıysa derleme adımlarını ve paket yöneticisi izin listesi gereksinimlerini belgeleyin (örneğin, pnpm `allow-build-scripts`
- `pnpm rebuild <package>`).
## İlgili
- [Building Plugins](/tr/plugins/building-plugins) — pluginlerle başlamaya giriş
- [Plugin Architecture](/tr/plugins/architecture) — iç mimari
- [SDK Overview](/tr/plugins/sdk-overview) — Plugin SDK başvurusu
- [Plugin'ler Oluşturma](/tr/plugins/building-plugins) — plugin'lerle çalışmaya başlama
- [Plugin Mimarisi](/tr/plugins/architecture) — iç mimari
- [SDK Genel Bakış](/tr/plugins/sdk-overview) — Plugin SDK başvurusu

View File

@ -1,37 +1,37 @@
---
read_when:
- Gömülü ajan çalışma zamanını veya harness kayıt defterini değiştiriyorsunuz
- Bir paketlenmiş veya güvenilir plugin'den bir ajan harness'i kaydediyorsunuz
- Codex plugin'inin model sağlayıcılarla nasıl ilişkili olduğunu anlamanız gerekir
- Gömülü aracı çalışma zamanını veya harness kayıt defterini değiştiriyorsunuz
- Bir paketlenmiş veya güvenilir Plugin'den bir aracı harness'i kaydediyorsunuz
- Codex Plugin'inin model sağlayıcılarla nasıl ilişkili olduğunu anlamanız gerekiyor
sidebarTitle: Agent Harness
summary: Düşük seviyeli gömülü ajan yürütücüsünü değiştiren plugin'ler için deneysel SDK yüzeyi
title: Ajan Harness Plugin'leri
summary: Düşük seviyeli gömülü aracı yürütücüsünü değiştiren Plugin'ler için deneysel SDK yüzeyi
title: Aracı Harness Plugin'leri
x-i18n:
generated_at: "2026-04-12T00:18:56Z"
generated_at: "2026-04-22T08:55:04Z"
model: gpt-5.4
provider: openai
source_hash: 62b88fd24ce8b600179db27e16e8d764a2cd7a14e5c5df76374c33121aa5e365
source_hash: 728fef59ae3cce29a3348842820f1f71a2eac98ae6b276179bce6c85d16613df
source_path: plugins/sdk-agent-harness.md
workflow: 15
---
# Ajan Harness Plugin'leri
# Aracı Harness Plugin'leri
Bir **ajan harness'i**, hazırlanmış bir OpenClaw ajan dönüşü için düşük seviyeli yürütücüdür. Bir model sağlayıcısı, bir kanal veya bir araç kayıt defteri değildir.
Bir **agent harness**, hazırlanmış bir OpenClaw aracı dönüşü için düşük seviyeli yürütücüdür. Bu, bir model sağlayıcı, bir kanal veya bir araç kayıt defteri değildir.
Bu yüzeyi yalnızca paketlenmiş veya güvenilir yerel plugin'ler için kullanın. Sözleşme hâlâ deneyseldir çünkü parametre türleri kasıtlı olarak mevcut gömülü çalıştırıcıyı yansıtır.
Bu yüzeyi yalnızca paketlenmiş veya güvenilir yerel Plugin'ler için kullanın. Parametre türleri bilinçli olarak mevcut gömülü yürütücüyü yansıttığı için sözleşme hâlâ deneyseldir.
## Bir harness ne zaman kullanılmalı
Bir model ailesinin kendine ait yerel oturum çalışma zamanı varsa ve normal OpenClaw sağlayıcı taşıması yanlış soyutlamaysa bir ajan harness'i kaydedin.
Bir model ailesinin kendi yerel oturum çalışma zamanı varsa ve normal OpenClaw sağlayıcı taşıması yanlış soyutlamaysa bir agent harness kaydedin.
Örnekler:
- iş parçacıklarını ve sıkıştırmayı sahiplenen yerel bir kodlama ajanı sunucusu
- yerel plan/muhakeme/araç olaylarını akış olarak iletmesi gereken yerel bir CLI veya daemon
- OpenClaw oturum dökümüne ek olarak kendi devam kimliğine ihtiyaç duyan bir model çalışma zamanı
- iş parçacıklarını ve Compaction'ı yöneten yerel bir kodlama aracı sunucusu
- yerel plan/akıl yürütme/araç olaylarını akıtması gereken yerel bir CLI veya daemon
- OpenClaw oturum dökümüne ek olarak kendi sürdürme kimliğine ihtiyaç duyan bir model çalışma zamanı
Yalnızca yeni bir LLM API eklemek için bir harness kaydetmeyin. Normal HTTP veya WebSocket model API'leri için bir [sağlayıcı plugin'i](/tr/plugins/sdk-provider-plugins) oluşturun.
Yalnızca yeni bir LLM API'si eklemek için harness kaydetmeyin. Normal HTTP veya WebSocket model API'leri için bir [sağlayıcı Plugin'i](/tr/plugins/sdk-provider-plugins) oluşturun.
## Çekirdeğin hâlâ sahip olduğu alanlar
@ -39,15 +39,15 @@ Bir harness seçilmeden önce OpenClaw şunları zaten çözümlemiştir:
- sağlayıcı ve model
- çalışma zamanı kimlik doğrulama durumu
- düşünme seviyesi ve bağlam bütçesi
- OpenClaw döküm/oturum dosyası
- düşünme düzeyi ve bağlam bütçesi
- OpenClaw dökümü/oturum dosyası
- çalışma alanı, sandbox ve araç ilkesi
- kanal yanıt callback'leri ve akış callback'leri
- model fallback ve canlı model değiştirme ilkesi
- kanal yanıt geri çağrıları ve akış geri çağrıları
- model geri dönüşü ve canlı model değiştirme ilkesi
Bu ayrım kasıtlıdır. Bir harness hazırlanmış bir denemeyi çalıştırır; sağlayıcı seçmez, kanal teslimatını değiştirmez veya modelleri sessizce değiştirmez.
Bu ayrım bilinçlidir. Bir harness hazırlanmış bir denemeyi çalıştırır; sağlayıcı seçmez, kanal teslimini değiştirmez veya sessizce model değiştirmez.
## Bir harness kaydetme
## Bir harness kaydedin
**İçe aktarma:** `openclaw/plugin-sdk/agent-harness`
@ -85,49 +85,49 @@ export default definePluginEntry({
## Seçim ilkesi
OpenClaw, sağlayıcı/model çözümlemesinden sonra bir harness seçer:
OpenClaw bir harness'i sağlayıcı/model çözümlemesinden sonra seçer:
1. `OPENCLAW_AGENT_RUNTIME=<id>` bu kimliğe sahip kayıtlı bir harness'i zorlar.
2. `OPENCLAW_AGENT_RUNTIME=pi` yerleşik PI harness'ini zorlar.
3. `OPENCLAW_AGENT_RUNTIME=auto` kayıtlı harness'lere çözümlenen sağlayıcıyı/modeli destekleyip desteklemediklerini sorar.
4. Hiçbir kayıtlı harness eşleşmezse OpenClaw, PI fallback devre dışı bırakılmadıkça PI kullanır.
1. `OPENCLAW_AGENT_RUNTIME=<id>`, bu kimliğe sahip kayıtlı bir harness'i zorlar.
2. `OPENCLAW_AGENT_RUNTIME=pi`, yerleşik PI harness'ini zorlar.
3. `OPENCLAW_AGENT_RUNTIME=auto`, kayıtlı harness'lere çözümlemiş sağlayıcı/modeli destekleyip desteklemediklerini sorar.
4. Hiçbir kayıtlı harness eşleşmezse OpenClaw, PI geri dönüşü devre dışı bırakılmadıkça PI kullanır.
Zorlanan plugin harness hataları çalıştırma hataları olarak görünür. `auto` modunda OpenClaw, seçilen plugin harness bir dönüş yan etkileri üretmeden önce başarısız olursa PI'ye fallback yapabilir. Bunun yerine bu fallback'i kesin hata hâline getirmek için `OPENCLAW_AGENT_HARNESS_FALLBACK=none` veya `embeddedHarness.fallback: "none"` ayarlayın.
Plugin harness hataları çalıştırma hataları olarak görünür. `auto` modunda PI geri dönüşü yalnızca kayıtlı hiçbir Plugin harness çözümlemiş sağlayıcı/modeli desteklemediğinde kullanılır. Bir Plugin harness bir çalıştırmayı sahiplendikten sonra OpenClaw aynı dönüşü PI üzerinden yeniden oynatmaz; çünkü bu, kimlik doğrulama/çalışma zamanı anlamlarını değiştirebilir veya yan etkileri çoğaltabilir.
Paketlenmiş Codex plugin'i, harness kimliği olarak `codex` kaydeder. Çekirdek bunu sıradan bir plugin harness kimliği olarak değerlendirir; Codex'e özgü takma adlar paylaşılan çalışma zamanı seçicisinde değil, plugin'de veya operatör yapılandırmasında yer almalıdır.
Paketlenmiş Codex Plugin'i, harness kimliği olarak `codex` kaydeder. Çekirdek buna sıradan bir Plugin harness kimliği gibi davranır; Codex'e özgü diğer adlar ortak çalışma zamanı seçicisinde değil, Plugin'de veya operatör yapılandırmasında yer almalıdır.
## Sağlayıcı artı harness eşleştirmesi
## Sağlayıcı ve harness eşleştirmesi
Çoğu harness ayrıca bir sağlayıcı da kaydetmelidir. Sağlayıcı; model başvurularını, kimlik doğrulama durumunu, model meta verilerini ve `/model` seçimini OpenClaw'un geri kalanına görünür kılar. Harness daha sonra `supports(...)` içinde bu sağlayıcıyı sahiplenir.
Çoğu harness aynı zamanda bir sağlayıcı da kaydetmelidir. Sağlayıcı; model başvurularını, kimlik doğrulama durumunu, model meta verilerini ve `/model` seçimini OpenClaw'ın geri kalanına görünür kılar. Harness daha sonra `supports(...)` içinde bu sağlayıcıyı sahiplenir.
Paketlenmiş Codex plugin'i bu düzeni izler:
Paketlenmiş Codex Plugin'i bu deseni izler:
- sağlayıcı kimliği: `codex`
- kullanıcı model başvuruları: `codex/gpt-5.4`, `codex/gpt-5.2` veya Codex uygulama sunucusunun döndürdüğü başka bir model
- harness kimliği: `codex`
- kimlik doğrulama: sentetik sağlayıcı kullanılabilirliği, çünkü Codex harness'i yerel Codex giriş/oturumunu sahiplenir
- kimlik doğrulama: sentetik sağlayıcı kullanılabilirliği, çünkü yerel Codex oturum açma/oturumunu Codex harness'i yönetir
- uygulama sunucusu isteği: OpenClaw çıplak model kimliğini Codex'e gönderir ve harness'in yerel uygulama sunucusu protokolüyle konuşmasına izin verir
Codex plugin'i ekleyicidir. Düz `openai/gpt-*` başvuruları OpenAI sağlayıcı başvuruları olarak kalır ve normal OpenClaw sağlayıcı yolunu kullanmaya devam eder. Codex tarafından yönetilen kimlik doğrulama, Codex model keşfi, yerel iş parçacıkları ve Codex uygulama sunucusu yürütmesi istediğinizde `codex/gpt-*` seçin. `/model`, OpenAI sağlayıcı kimlik bilgileri gerektirmeden Codex uygulama sunucusunun döndürdüğü Codex modelleri arasında geçiş yapabilir.
Codex Plugin'i ekleyicidir. Düz `openai/gpt-*` başvuruları OpenAI sağlayıcı başvuruları olarak kalır ve normal OpenClaw sağlayıcı yolunu kullanmaya devam eder. Codex tarafından yönetilen kimlik doğrulama, Codex model keşfi, yerel iş parçacıkları ve Codex uygulama sunucusu yürütmesi istediğinizde `codex/gpt-*` seçin. `/model`, OpenAI sağlayıcı kimlik bilgileri gerektirmeden Codex uygulama sunucusunun döndürdüğü Codex modelleri arasında geçiş yapabilir.
Operatör kurulumu, model öneki örnekleri ve yalnızca Codex yapılandırmaları için bkz. [Codex Harness](/tr/plugins/codex-harness).
Operatör kurulumu, model öneki örnekleri ve yalnızca Codex yapılandırmaları için [Codex Harness](/tr/plugins/codex-harness) bölümüne bakın.
OpenClaw, Codex uygulama sunucusunun `0.118.0` veya daha yeni sürümünü gerektirir. Codex plugin'i, uygulama sunucusunun başlatma el sıkışmasını kontrol eder ve daha eski veya sürümlendirilmemiş sunucuları engeller; böylece OpenClaw yalnızca test edildiği protokol yüzeyine karşı çalışır.
OpenClaw, Codex uygulama sunucusu `0.118.0` veya daha yenisini gerektirir. Codex Plugin'i uygulama sunucusu başlatma el sıkışmasını denetler ve eski veya sürümsüz sunucuları engeller; böylece OpenClaw yalnızca test edilmiş protokol yüzeyi üzerinde çalışır.
### Yerel Codex harness modu
Paketlenmiş `codex` harness'i, gömülü OpenClaw ajan dönüşleri için yerel Codex modudur. Önce paketlenmiş `codex` plugin'ini etkinleştirin ve yapılandırmanız kısıtlayıcı bir izin listesi kullanıyorsa `plugins.allow` içine `codex` ekleyin. Bu, `openai-codex/*` ile farklıdır:
Paketlenmiş `codex` harness'i, gömülü OpenClaw aracı dönüşleri için yerel Codex modudur. Önce paketlenmiş `codex` Plugin'ini etkinleştirin ve yapılandırmanız kısıtlayıcı bir izin listesi kullanıyorsa `plugins.allow` içine `codex` ekleyin. Bu, `openai-codex/*` ile farklıdır:
- `openai-codex/*`, normal OpenClaw sağlayıcı yolu üzerinden ChatGPT/Codex OAuth kullanır.
- `codex/*`, paketlenmiş Codex sağlayıcısını kullanır ve dönüşü Codex uygulama sunucusu üzerinden yönlendirir.
Bu mod çalıştığında yerel iş parçacığı kimliği, devam etme davranışı, sıkıştırma ve uygulama sunucusu yürütmesi Codex'in kontrolündedir. OpenClaw ise sohbet kanalına, görünür döküm yansıtmasına, araç ilkesine, onaylara, medya teslimine ve oturum seçimine sahip olmaya devam eder. Codex uygulama sunucusu yolunun kullanıldığını ve PI fallback'in bozuk bir yerel harness'i gizlemediğini kanıtlamanız gerektiğinde `embeddedHarness.runtime: "codex"` ile birlikte `embeddedHarness.fallback: "none"` kullanın.
Bu mod çalıştığında, yerel iş parçacığı kimliği, sürdürme davranışı, Compaction ve uygulama sunucusu yürütmesinin sahibi Codex olur. OpenClaw ise yine sohbet kanalının, görünür döküm yansısının, araç ilkesinin, onayların, medya tesliminin ve oturum seçiminin sahibi olmaya devam eder. Yalnızca Codex uygulama sunucusu yolunun çalıştırmayı sahiplenebildiğini kanıtlamanız gerektiğinde `embeddedHarness.runtime: "codex"` ile birlikte `embeddedHarness.fallback: "none"` kullanın. Bu yapılandırma yalnızca bir seçim korumasıdır: Codex uygulama sunucusu hataları zaten PI üzerinden yeniden denenmek yerine doğrudan başarısız olur.
## PI fallback'i devre dışı bırakma
## PI geri dönüşünü devre dışı bırakma
Varsayılan olarak OpenClaw, gömülü ajanları `{ runtime: "auto", fallback: "pi" }` olarak ayarlanmış `agents.defaults.embeddedHarness` ile çalıştırır. `auto` modunda kayıtlı plugin harness'ler bir sağlayıcı/model çiftini sahiplenebilir. Hiçbiri eşleşmezse veya otomatik seçilen bir plugin harness çıktı üretmeden önce başarısız olursa OpenClaw PI'ye fallback yapar.
Varsayılan olarak OpenClaw, gömülü aracıları `agents.defaults.embeddedHarness` değeri `{ runtime: "auto", fallback: "pi" }` olacak şekilde çalıştırır. `auto` modunda kayıtlı Plugin harness'ler bir sağlayıcı/model çiftini sahiplenebilir. Hiçbiri eşleşmezse OpenClaw PI'ye geri döner.
Bir plugin harness'in çalıştırılan tek çalışma zamanı olduğunu kanıtlamanız gerektiğinde `fallback: "none"` ayarlayın. Bu, otomatik PI fallback'ini devre dışı bırakır;ık bir `runtime: "pi"` veya `OPENCLAW_AGENT_RUNTIME=pi` kullanımını engellemez.
Eksik Plugin harness seçiminin PI kullanmak yerine başarısız olmasını istediğinizde `fallback: "none"` ayarlayın. Seçilen Plugin harness hataları zaten kesin olarak başarısız olur. Bu,ık bir `runtime: "pi"` veya `OPENCLAW_AGENT_RUNTIME=pi` kullanımını engellemez.
Yalnızca Codex gömülü çalıştırmaları için:
@ -145,7 +145,7 @@ Yalnızca Codex gömülü çalıştırmaları için:
}
```
Herhangi bir kayıtlı plugin harness'in eşleşen modelleri sahiplenmesini istiyor ancak OpenClaw'un sessizce PI'ye fallback yapmasını asla istemiyorsanız `runtime: "auto"` olarak bırakın ve fallback'i devre dışı bırakın:
Herhangi bir kayıtlı Plugin harness'in eşleşen modelleri sahiplenmesini ama OpenClaw'ın sessizce PI'ye geri dönmesini asla istemiyorsanız `runtime: "auto"` değerini koruyun ve geri dönüşü devre dışı bırakın:
```json
{
@ -160,7 +160,7 @@ Herhangi bir kayıtlı plugin harness'in eşleşen modelleri sahiplenmesini isti
}
```
Ajan başına geçersiz kılmalar aynı yapıyı kullanır:
Aracı başına geçersiz kılmalar aynı biçimi kullanır:
```json
{
@ -185,7 +185,7 @@ Ajan başına geçersiz kılmalar aynı yapıyı kullanır:
}
```
`OPENCLAW_AGENT_RUNTIME` yapılandırılmış çalışma zamanını hâlâ geçersiz kılar. Ortamdan PI fallback'ini devre dışı bırakmak için `OPENCLAW_AGENT_HARNESS_FALLBACK=none` kullanın.
`OPENCLAW_AGENT_RUNTIME` yapılandırılmış çalışma zamanını yine geçersiz kılar. Ortamdan PI geri dönüşünü devre dışı bırakmak için `OPENCLAW_AGENT_HARNESS_FALLBACK=none` kullanın.
```bash
OPENCLAW_AGENT_RUNTIME=codex \
@ -193,34 +193,34 @@ OPENCLAW_AGENT_HARNESS_FALLBACK=none \
openclaw gateway run
```
Fallback devre dışıyken, istenen harness kayıtlı değilse, çözümlenen sağlayıcıyı/modeli desteklemiyorsa veya dönüş yan etkileri üretmeden önce başarısız olursa bir oturum erken başarısız olur. Bu, yalnızca Codex dağıtımları ve Codex uygulama sunucusu yolunun gerçekten kullanıldığını kanıtlaması gereken canlı testler için kasıtlıdır.
Geri dönüş devre dışıyken, istenen harness kayıtlı değilse, çözümlemiş sağlayıcı/modeli desteklemiyorsa veya dönüş yan etkileri üretmeden önce başarısız olursa bir oturum erken başarısız olur. Bu, yalnızca Codex dağıtımları ve Codex uygulama sunucusu yolunun gerçekten kullanımda olduğunu kanıtlaması gereken canlı testler için bilinçli bir davranıştır.
Bu ayar yalnızca gömülü ajan harness'ini kontrol eder. Görsel, video, müzik, TTS, PDF veya diğer sağlayıcıya özgü model yönlendirmelerini devre dışı bırakmaz.
Bu ayar yalnızca gömülü agent harness'i denetler. Görüntü, video, müzik, TTS, PDF veya sağlayıcıya özgü diğer model yönlendirmelerini devre dışı bırakmaz.
## Yerel oturumlar ve döküm yansıtması
## Yerel oturumlar ve döküm yansısı
Bir harness yerel bir oturum kimliği, iş parçacığı kimliği veya daemon tarafı devam etme belirteci tutabilir. Bu bağııkça OpenClaw oturumuyla ilişkilendirilmiş olarak tutun ve kullanıcıya görünür asistan/araç çıktısını OpenClaw dökümüne yansıtmaya devam edin.
Bir harness yerel bir oturum kimliği, iş parçacığı kimliği veya daemon taraflı sürdürme belirteci tutabilir. Bu bağııkça OpenClaw oturumuyla ilişkilendirin ve kullanıcıya görünür yardımcı/araç çıktısını OpenClaw dökümüne yansıtmaya devam edin.
OpenClaw dökümü şu alanlar için uyumluluk katmanı olarak kalır:
- kanalda görünür oturum geçmişi
- döküm arama ve indeksleme
- sonraki bir dönüşte yerleşik PI harness'ine geri dönme
- döküm arama ve dizinleme
- daha sonraki bir dönüşte yerleşik PI harness'ine geri geçiş
- genel `/new`, `/reset` ve oturum silme davranışı
Harness'iniz bir sidecar bağı saklıyorsa, sahip OpenClaw oturumu sıfırlandığında OpenClaw'un bunu temizleyebilmesi için `reset(...)` uygulayın.
Harness'iniz bir yan bağ saklıyorsa, sahip OpenClaw oturumu sıfırlandığında OpenClaw'ın bunu temizleyebilmesi için `reset(...)` uygulayın.
## Araç ve medya sonuçları
Çekirdek OpenClaw araç listesini oluşturur ve bunu hazırlanmış denemeye geçirir. Bir harness dinamik bir araç çağrısı yürüttüğünde, kanal medyasını kendiniz göndermek yerine araç sonucunu harness sonuç şekli üzerinden geri döndürün.
Bu, metin, görsel, video, müzik, TTS, onay ve mesajlaşma aracı çıktılarını PI destekli çalıştırmalarla aynı teslim yolunda tutar.
Bu, metin, görüntü, video, müzik, TTS, onay ve mesajlaşma aracı çıktılarının PI destekli çalıştırmalarla aynı teslim yolunda kalmasını sağlar.
## Mevcut sınırlamalar
- Genel içe aktarma yolu geneldir, ancak bazı deneme/sonuç türü takma adları uyumluluk için hâlâ `Pi` adlarını taşır.
- Üçüncü taraf harness kurulumu deneyseldir. Yerel bir oturum çalışma zamanına ihtiyaç duyana kadar sağlayıcı plugin'lerini tercih edin.
- Harness değiştirme dönüşler arasında desteklenir. Yerel araçlar, onaylar, asistan metni veya mesaj göndermeleri başladıktan sonra dönüşün ortasında harness değiştirmeyin.
- Genel içe aktarma yolu herkese açık olsa da bazı deneme/sonuç türü diğer adları uyumluluk için hâlâ `Pi` adlarını taşır.
- Üçüncü taraf harness kurulumu deneyseldir. Yerel bir oturum çalışma zamanına ihtiyaç duyana kadar sağlayıcı Plugin'lerini tercih edin.
- Dönüşler arasında harness değiştirme desteklenir. Yerel araçlar, onaylar, yardımcı metni veya mesaj göndermeleri başladıktan sonra dönüşün ortasında harness değiştirmeyin.
## İlgili

View File

@ -1,112 +1,122 @@
---
read_when:
- Yeni bir mesajlaşma kanal plugin'i oluşturuyorsunuz
- OpenClaw'ı bir mesajlaşma platformuna bağlamak istiyorsunuz
- ChannelPlugin bağdaştırıcı yüzeyini anlamanız gerekiyor
- Yeni bir mesajlaşma kanal eklentisi oluşturuyorsunuz
- OpenClawu bir mesajlaşma platformuna bağlamak istiyorsunuz
- ChannelPlugin bağdaştırıcı yüzeyini anlamanız gerekir
sidebarTitle: Channel Plugins
summary: OpenClaw için bir mesajlaşma kanal plugin'i oluşturma adım adım kılavuzu
title: Kanal Plugin'leri Oluşturma
summary: OpenClaw için bir mesajlaşma kanal eklentisi oluşturmaya yönelik adım adım kılavuz
title: Kanal Eklentileri Oluşturma
x-i18n:
generated_at: "2026-04-22T04:24:41Z"
generated_at: "2026-04-22T08:55:26Z"
model: gpt-5.4
provider: openai
source_hash: f08bf785cd2e16ed6ce0317f4fd55c9eccecf7476d84148ad47e7be516dd71fb
source_hash: e67d8c4be8cc4a312e5480545497b139c27bed828304de251e6258a3630dd9b5
source_path: plugins/sdk-channel-plugins.md
workflow: 15
---
# Kanal Plugin'leri Oluşturma
# Kanal Eklentileri Oluşturma
Bu kılavuz, OpenClaw'ı bir
mesajlaşma platformuna bağlayan bir kanal plugin'i oluşturmayı adım adım anlatır. Sonunda DM güvenliği,
eşleştirme, yanıt dizileme ve giden mesajlaşma ile çalışan bir kanalınız olacak.
Bu kılavuz, OpenClawu bir mesajlaşma platformuna bağlayan bir kanal eklentisi
oluşturma sürecinde size yol gösterir. Sonunda DM güvenliği,
eşleştirme, yanıt iş parçacığı oluşturma ve giden mesajlaşma özelliklerine sahip çalışan bir kanalınız olacak.
<Info>
Daha önce hiç OpenClaw plugin'i oluşturmadıysanız, önce temel paket
yapısı ve manifest kurulumu için [Başlangıç](/tr/plugins/building-plugins) belgesini okuyun.
Daha önce hiç OpenClaw eklentisi oluşturmadıysanız, temel paket
yapısı ve bildirim kurulumu için önce [Başlangıç](/tr/plugins/building-plugins)
bölümünü okuyun.
</Info>
## Kanal plugin'leri nasıl çalışır
## Kanal eklentileri nasıl çalışır
Kanal plugin'lerinin kendi gönder/düzenle/tepki ver araçlarına ihtiyacı yoktur. OpenClaw,
core içinde tek bir paylaşılan `message` aracı tutar. Plugin'iniz şunlardan sorumludur:
Kanal eklentilerinin kendi send/edit/react araçlarına ihtiyacı yoktur. OpenClaw,
çekirdekte tek bir paylaşılan `message` aracını tutar. Eklentinizin sahip olduğu alanlar şunlardır:
- **Yapılandırma** — hesap çözümleme ve kurulum sihirbazı
- **Güvenlik** — DM ilkesi ve izin listeleri
- **Eşleştirme** — DM onay akışı
- **Oturum dil bilgisi** — sağlayıcıya özgü konuşma kimliklerinin temel sohbetlere, ileti dizisi kimliklerine ve üst geri dönüşlere nasıl eşlendiği
- **Giden işlemler** — platforma metin, medya ve anket gönderimi
- **Dizileme** — yanıtların nasıl dizilendiği
- **Oturum grameri** — sağlayıcıya özgü konuşma kimliklerinin temel sohbetlere, thread kimliklerine ve üst geri dönüşlerine nasıl eşlendiği
- **Giden** — platforma metin, medya ve anket gönderme
- **Thread oluşturma** — yanıtların nasıl threadlendiği
- **Heartbeat yazıyor durumu** — heartbeat teslim hedefleri için isteğe bağlı yazıyor/meşgul sinyalleri
Core; paylaşılan message aracına, prompt bağlamasına, dış oturum-anahtarı biçimine,
genel `:thread:` muhasebesine ve dispatch'e sahiptir.
Çekirdek; paylaşılan message aracına, prompt bağlamasına, dış oturum anahtarı şekline,
genel `:thread:` kayıt tutmaya ve dağıtıma sahiptir.
Kanalınız gelen yanıtlardan bağımsız yazıyor göstergelerini destekliyorsa,
kanal eklentisi üzerinde `heartbeat.sendTyping(...)` sağlayın. Çekirdek bunu,
heartbeat model çalışması başlamadan önce çözümlenmiş heartbeat teslim hedefiyle çağırır ve
paylaşılan yazıyor keepalive/cleanup yaşam döngüsünü kullanır. Platform açık bir durdurma sinyali gerektiriyorsa
`heartbeat.clearTyping(...)` de ekleyin.
Kanalınız medya kaynakları taşıyan message-tool parametreleri ekliyorsa, bu
parametre adlarını `describeMessageTool(...).mediaSourceParams` üzerinden açığa çıkarın. Core,
korumalı alan yol normalizasyonu ve giden medya erişim
ilkesi için bu açık listeyi kullanır; böylece plugin'lerin sağlayıcıya özgü
avatar, ek veya kapak görseli parametreleri için paylaşılan core özel durumlarına ihtiyacı kalmaz.
parametre adlarını `describeMessageTool(...).mediaSourceParams` üzerinden sağlayın. Çekirdek
sandbox yol normalleştirmesi ve giden medya erişim ilkesi için bu açık listeyi kullanır;
böylece eklentiler sağlayıcıya özgü avatar,
ek veya kapak resmi parametreleri için paylaşılan çekirdekte özel durumlara ihtiyaç duymaz.
Tercihen şu gibi eylem anahtarlı bir eşleme döndürün:
`{ "set-profile": ["avatarUrl", "avatarPath"] }`; böylece ilgisiz eylemler başka bir eylemin
medya parametrelerini miras almaz. Düz bir dizi ise kasıtlı olarak
ığa çıkarılan her eylem arasında paylaşılan parametreler için hâlâ çalışır.
`{ "set-profile": ["avatarUrl", "avatarPath"] }`; böylece ilgisiz eylemler başka
bir eylemin medya argümanlarını devralmaz. Tüm açığa çıkarılan eylemler arasında kasıtlı olarak paylaşılan
parametreler için düz bir dizi de çalışır.
Platformunuz konuşma kimlikleri içinde ek kapsam tutuyorsa, bu ayrıştırmayı
plugin içinde `messaging.resolveSessionConversation(...)` ile tutun. Bu, `rawId` değerini
temel konuşma kimliğine, isteğe bağlı ileti dizisi kimliğine, açık `baseConversationId`
değerine ve herhangi bir `parentConversationCandidates` değerine eşlemek için
kanonik kancadır.
`parentConversationCandidates` döndürdüğünüzde bunları en dar üst öğeden
Platformunuz konuşma kimlikleri içinde ek kapsam saklıyorsa, bu ayrıştırmayı
eklenti içinde `messaging.resolveSessionConversation(...)` ile tutun. Bu,
`rawId` değerini temel konuşma kimliğine, isteğe bağlı thread
kimliğine, açık `baseConversationId` değerine ve herhangi bir
`parentConversationCandidates` değerine eşlemek için kanonik kancadır.
`parentConversationCandidates` döndürdüğünüzde, bunları en dar üstten
en geniş/temel konuşmaya doğru sıralı tutun.
Kayıt defteri önyüklenmeden önce aynı ayrıştırmaya ihtiyaç duyan paketlenmiş plugin'ler
ayrıca eşleşen bir
`resolveSessionConversation(...)` dışa aktarımıyla üst düzey bir `session-key-api.ts` dosyası da sunabilir.
Core, çalışma zamanı plugin kayıt defteri henüz kullanılamadığında bu önyükleme güvenli yüzeyi
yalnızca o zaman kullanır.
Kanal kaydı başlatılmadan önce aynı ayrıştırmaya ihtiyaç duyan bundled pluginler,
eşleşen bir `resolveSessionConversation(...)` dışa aktarımıyla üst düzey bir
`session-key-api.ts` dosyası da sağlayabilir. Çekirdek, çalışma zamanı eklenti kaydı henüz mevcut değilse
bu önyükleme açısından güvenli yüzeyi yalnızca o durumda kullanır.
`messaging.resolveParentConversationCandidates(...)`, bir plugin yalnızca
genel/ham kimliğin üstüne üst geri dönüşlere ihtiyaç duyduğunda eski uyumluluk amaçlı geri dönüş olarak kullanılabilir.
Her iki kanca da varsa core önce
`resolveSessionConversation(...).parentConversationCandidates` değerini kullanır ve kanonik kanca
bunları atladığında ancak o zaman `resolveParentConversationCandidates(...)` değerine geri döner.
`messaging.resolveParentConversationCandidates(...)`, bir eklenti yalnızca
genel/raw kimliğin üstünde üst geri dönüşlerine ihtiyaç duyduğunda
eski uyumluluk geri dönüşü olarak kullanılmaya devam eder. Her iki kanca da varsa, çekirdek önce
`resolveSessionConversation(...).parentConversationCandidates` değerini kullanır ve yalnızca kanonik kanca
bunları atladığında `resolveParentConversationCandidates(...)` değerine geri döner.
## Onaylar ve kanal yetenekleri
Çoğu kanal plugin'inin onaya özgü koda ihtiyacı yoktur.
Çoğu kanal eklentisinin onaya özgü koda ihtiyacı yoktur.
- Core; aynı sohbette `/approve`, paylaşılan onay düğmesi payload'ları ve genel geri dönüş tesliminden sorumludur.
- Kanal onaya özgü davranış gerektiriyorsa kanal plugin'i üzerinde tek bir `approvalCapability` nesnesini tercih edin.
- `ChannelPlugin.approvals` kaldırılmıştır. Onay teslimi/yerel oluşturma/kimlik doğrulama bilgilerini `approvalCapability` üzerine koyun.
- `plugin.auth` yalnızca login/logout içindir; core artık bu nesneden onay kimlik doğrulama kancalarını okumaz.
- `approvalCapability.authorizeActorAction` ve `approvalCapability.getActionAvailabilityState`, kanonik onay-kimlik doğrulama seam'idir.
- Aynı sohbet onay kimlik doğrulama kullanılabilirliği için `approvalCapability.getActionAvailabilityState` kullanın.
- Kanalınız yerel exec onaylarınıığa çıkarıyorsa, başlatan yüzey/yerel istemci durumu aynı sohbet onay kimlik doğrulamasından farklı olduğunda `approvalCapability.getExecInitiatingSurfaceState` kullanın. Core bu exec'e özgü kancayı `enabled` ile `disabled` ayrımını yapmak, başlatan kanalın yerel exec onaylarını destekleyip desteklemediğine karar vermek ve kanalı yerel istemci geri dönüş yönlendirmesine dahil etmek için kullanır. `createApproverRestrictedNativeApprovalCapability(...)`, yaygın durum için bunu doldurur.
- Yinelenen yerel onay istemlerini gizleme veya teslimden önce yazma göstergeleri gönderme gibi kanala özgü payload yaşam döngüsü davranışları için `outbound.shouldSuppressLocalPayloadPrompt` veya `outbound.beforeDeliverPayload` kullanın.
- `approvalCapability.delivery` yalnızca yerel onay yönlendirmesi veya geri dönüş bastırması için kullanın.
- Kanala ait yerel onay gerçekleri için `approvalCapability.nativeRuntime` kullanın. Core'un onay yaşam döngüsünü kurmasına izin verirken çalışma zamanı modülünüzü isteğe bağlı olarak içe aktarabilen `createLazyChannelApprovalNativeRuntimeAdapter(...)` ile bunu sıcak kanal giriş noktalarında tembel tutun.
- `approvalCapability.render` yalnızca bir kanalın gerçekten paylaşılan oluşturucu yerine özel onay payload'larına ihtiyacı olduğunda kullanın.
- Devre dışı yol yanıtının yerel exec onaylarını etkinleştirmek için gereken tam yapılandırma düğmelerini açıklamasını istiyorsa `approvalCapability.describeExecApprovalSetup` kullanın. Kanca `{ channel, channelLabel, accountId }` alır; adlandırılmış hesaplı kanallar üst düzey varsayılanlar yerine `channels.<channel>.accounts.<id>.execApprovals.*` gibi hesap kapsamlı yollar oluşturmalıdır.
- Bir kanal mevcut yapılandırmadan kararlı sahip benzeri DM kimliklerini çıkarabiliyorsa, onaya özgü core mantığı eklemeden aynı sohbette `/approve` kısıtlaması yapmak için `openclaw/plugin-sdk/approval-runtime` içinden `createResolvedApproverActionAuthAdapter` kullanın.
- Bir kanal yerel onay teslimine ihtiyaç duyuyorsa, kanal kodunu hedef normalizasyonu ile taşıma/sunum gerçeklerine odaklı tutun. `openclaw/plugin-sdk/approval-runtime` içinden `createChannelExecApprovalProfile`, `createChannelNativeOriginTargetResolver`, `createChannelApproverDmTargetResolver` ve `createApproverRestrictedNativeApprovalCapability` kullanın. Kanala özgü gerçekleri `approvalCapability.nativeRuntime` arkasına, tercihen `createChannelApprovalNativeRuntimeAdapter(...)` veya `createLazyChannelApprovalNativeRuntimeAdapter(...)` üzerinden koyun; böylece core işleyiciyi kurabilir ve istek filtreleme, yönlendirme, tekrar engelleme, süre sonu, Gateway aboneliği ve başka yere yönlendirildi bildirimlerinden sorumlu olabilir. `nativeRuntime` birkaç küçük seam'e ayrılmıştır:
- `availability` — hesabın yapılandırılmış olup olmadığı ve bir isteğin işlenip işlenmemesi gerektiği
- `presentation` — paylaşılan onay görünüm modelini beklemede/çözüldü/süresi doldu yerel payload'larına veya son eylemlere eşleme
- `transport` — hedefleri hazırlama ile yerel onay mesajlarını gönderme/güncelleme/silme
- `interactions` — yerel düğmeler veya tepkiler için isteğe bağlı bağla/bağlantıyı kaldır/eylem temizle kancaları
- Çekirdek aynı sohbette `/approve`, paylaşılan onay düğmesi payloadları ve genel geri dönüş teslimine sahiptir.
- Kanal onaya özgü davranış gerektiriyorsa, kanal eklentisinde tek bir `approvalCapability` nesnesini tercih edin.
- `ChannelPlugin.approvals` kaldırıldı. Onay teslimi/yerel işleme/oluşturma/yetkilendirme bilgilerini `approvalCapability` üzerine koyun.
- `plugin.auth` yalnızca login/logout içindir; çekirdek artık bu nesneden onay auth kancalarını okumaz.
- `approvalCapability.authorizeActorAction` ve `approvalCapability.getActionAvailabilityState`, kanonik approval-auth yüzeyidir.
- Aynı sohbet onay auth kullanılabilirliği için `approvalCapability.getActionAvailabilityState` kullanın.
- Kanalınız yerel exec onaylarınıığa çıkarıyorsa, başlatan yüzey/yerel istemci durumu aynı sohbet onay auth durumundan farklıysa `approvalCapability.getExecInitiatingSurfaceState` kullanın. Çekirdek bu exece özgü kancayı `enabled` ile `disabled` ayrımını yapmak, başlatan kanalın yerel exec onaylarını destekleyip desteklemediğine karar vermek ve kanalı yerel istemci geri dönüş rehberliğine dahil etmek için kullanır. `createApproverRestrictedNativeApprovalCapability(...)` bunu yaygın durum için doldurur.
- Yinelenen yerel onay istemlerini gizleme veya teslimden önce yazıyor göstergeleri gönderme gibi kanala özgü payload yaşam döngüsü davranışları için `outbound.shouldSuppressLocalPayloadPrompt` veya `outbound.beforeDeliverPayload` kullanın.
- `approvalCapability.delivery` değerini yalnızca yerel onay yönlendirmesi veya geri dönüş bastırma için kullanın.
- Kanalın sahip olduğu yerel onay bilgileri için `approvalCapability.nativeRuntime` kullanın. Bunu, çekirdeğin onay yaşam döngüsünü yine de bir araya getirmesine izin verirken çalışma zamanı modülünüzü isteğe bağlı içe aktarabilen `createLazyChannelApprovalNativeRuntimeAdapter(...)` ile yoğun kanal giriş noktalarında tembel tutun.
- Kanal, paylaşılan oluşturucu yerine gerçekten özel onay payloadlarına ihtiyaç duyuyorsa yalnızca `approvalCapability.render` kullanın.
- Kanal, devre dışı yol yanıtının yerel exec onaylarını etkinleştirmek için gereken tam yapılandırma düğmelerini açıklamasını istiyorsa `approvalCapability.describeExecApprovalSetup` kullanın. Kanca `{ channel, channelLabel, accountId }` alır; adlandırılmış hesap kanalları, üst düzey varsayılanlar yerine `channels.<channel>.accounts.<id>.execApprovals.*` gibi hesap kapsamlı yollar oluşturmalıdır.
- Bir kanal mevcut yapılandırmadan kararlı owner benzeri DM kimliklerini çıkarabiliyorsa, onaya özgü çekirdek mantığı eklemeden aynı sohbet `/approve` erişimini kısıtlamak için `openclaw/plugin-sdk/approval-runtime` içinden `createResolvedApproverActionAuthAdapter` kullanın.
- Bir kanalın yerel onay teslimine ihtiyacı varsa, kanal kodunu hedef normalizasyonu ile taşıma/sunum bilgilerine odaklı tutun. `openclaw/plugin-sdk/approval-runtime` içinden `createChannelExecApprovalProfile`, `createChannelNativeOriginTargetResolver`, `createChannelApproverDmTargetResolver` ve `createApproverRestrictedNativeApprovalCapability` kullanın. Kanalın özel bilgilerini `approvalCapability.nativeRuntime` arkasına koyun; ideal olarak `createChannelApprovalNativeRuntimeAdapter(...)` veya `createLazyChannelApprovalNativeRuntimeAdapter(...)` üzerinden, böylece çekirdek işleyiciyi bir araya getirebilir ve istek filtreleme, yönlendirme, yinelenen kaldırma, süre sonu, gateway aboneliği ve başka yere yönlendirilmiş bildirimlere sahip olabilir. `nativeRuntime` birkaç küçük yüzeye ayrılmıştır:
- `availability` — hesabın yapılandırılıp yapılandırılmadığı ve bir isteğin işlenip işlenmemesi gerektiği
- `presentation` — paylaşılan onay görünüm modelini beklemede/çözümlendi/süresi doldu yerel payloadlarına veya son eylemlere eşlemek
- `transport` — hedefleri hazırlamak ve yerel onay mesajlarını göndermek/güncellemek/silmek
- `interactions` — yerel düğmeler veya tepkiler için isteğe bağlı bind/unbind/clear-action kancaları
- `observe` — isteğe bağlı teslim tanılama kancaları
- Kanalın istemci, token, Bolt uygulaması veya Webhook alıcısı gibi çalışma zamanına ait nesnelere ihtiyacı varsa bunları `openclaw/plugin-sdk/channel-runtime-context` üzerinden kaydedin. Genel runtime-context kayıt defteri, core'un onaya özgü sarmalayıcı glue eklemeden kanal başlangıç durumundan yetenek güdümlü işleyicileri önyüklemesine izin verir.
- Yalnızca yetenek güdümlü seam henüz yeterince ifade gücüne sahip değilse daha alt seviye `createChannelApprovalHandler` veya `createChannelNativeApprovalRuntime` kullanın.
- Yerel onay kanalları, `accountId` ve `approvalKind` değerlerinin ikisini de bu yardımcılar üzerinden yönlendirmelidir. `accountId`, çok hesaplı onay ilkesini doğru bot hesabına kapsamlar; `approvalKind` ise exec ile plugin onay davranışını core içindeki sabit dallanmalar olmadan kanal için kullanılabilir tutar.
- Core artık onay yeniden yönlendirme bildirimlerinin de sahibidir. Kanal plugin'leri `createChannelNativeApprovalRuntime` içinden kendi "onay DM'lere / başka bir kanala gitti" takip mesajlarını göndermemelidir; bunun yerine paylaşılan onay yeteneği yardımcıları üzerinden doğru origin + approver-DM yönlendirmesini açığa çıkarın ve core'un başlatan sohbete herhangi bir bildirim göndermeden önce gerçek teslimleri toplamasına izin verin.
- Teslim edilen onay kimliği türünü uçtan uca koruyun. Yerel istemciler exec ile plugin onay yönlendirmesini kanal yerel durumundan tahmin etmemeli veya yeniden yazmamalıdır.
- Kanalın istemci, token, Bolt uygulaması veya Webhook alıcısı gibi çalışma zamanına ait nesnelere ihtiyacı varsa, bunları `openclaw/plugin-sdk/channel-runtime-context` üzerinden kaydedin. Genel runtime-context kaydı, çekirdeğin onaya özgü sarmalayıcı glue eklemeden kanal başlangıç durumundan yetenek odaklı işleyicileri başlatmasına izin verir.
- Yalnızca yetenek odaklı yüzey henüz yeterince ifade edici değilse daha alt düzey `createChannelApprovalHandler` veya `createChannelNativeApprovalRuntime` kullanımına yönelin.
- Yerel onay kanalları, hem `accountId` hem de `approvalKind` değerini bu yardımcılar üzerinden yönlendirmelidir. `accountId`, çok hesaplı onay ilkesini doğru bot hesabı kapsamında tutar; `approvalKind` ise çekirdekte sabit dallar olmadan exec ile eklenti onayı davranışını kanal için erişilebilir kılar.
- Çekirdek artık onay yeniden yönlendirme bildirimlerine de sahiptir. Kanal eklentileri `createChannelNativeApprovalRuntime` içinden kendi "onay DMlere / başka bir kanala gitti" takip mesajlarını göndermemelidir; bunun yerine paylaşılan onay yeteneği yardımcıları üzerinden doğru origin + approver-DM yönlendirmesini açığa çıkarmalı ve başlatan sohbete herhangi bir bildirim göndermeden önce çekirdeğin gerçek teslimleri toplamasına izin vermelidir.
- Teslim edilen onay kimliği türünü uçtan uca koruyun. Yerel istemciler,
exec ile eklenti onayı yönlendirmesini kanal yerel durumundan tahmin etmemeli
veya yeniden yazmamalıdır.
- Farklı onay türleri kasıtlı olarak farklı yerel yüzeyler açığa çıkarabilir.
Geçerli paketlenmiş örnekler:
- Slack, hem exec hem de plugin kimlikleri için yerel onay yönlendirmesini kullanılabilir tutar.
- Matrix, exec ve plugin onayları için aynı yerel DM/kanal yönlendirmesi ile tepki UX'ini korurken, kimlik doğrulamanın onay türüne göre farklılaşmasına yine de izin verir.
- `createApproverRestrictedNativeApprovalAdapter` hâlâ bir uyumluluk sarmalayıcısı olarak vardır, ancak yeni kodlar yetenek oluşturucuyu tercih etmeli ve plugin üzerinde `approvalCapability`ığa çıkarmalıdır.
Mevcut bundled örnekler:
- Slack, hem exec hem de eklenti kimlikleri için yerel onay yönlendirmesini kullanılabilir tutar.
- Matrix, onay türüne göre auth farklılaşmasına izin verirken exec
ve eklenti onayları için aynı yerel DM/kanal yönlendirmesi ve reaction UXini korur.
- `createApproverRestrictedNativeApprovalAdapter` hâlâ bir uyumluluk sarmalayıcısı olarak vardır, ancak yeni kod capability oluşturucusunu tercih etmeli ve eklentide `approvalCapability`ığa çıkarmalıdır.
Sıcak kanal giriş noktaları için, bu ailenin yalnızca bir parçasına
ihtiyacınız olduğunda daha dar çalışma zamanı alt yollarını tercih edin:
Yoğun kanal giriş noktalarında, bu aileden yalnızca bir parçaya ihtiyacınız varsa
daha dar çalışma zamanı alt yollarını tercih edin:
- `openclaw/plugin-sdk/approval-auth-runtime`
- `openclaw/plugin-sdk/approval-client-runtime`
@ -118,8 +128,8 @@ ihtiyacınız olduğunda daha dar çalışma zamanı alt yollarını tercih edin
- `openclaw/plugin-sdk/approval-reply-runtime`
- `openclaw/plugin-sdk/channel-runtime-context`
Benzer şekilde, daha geniş şemsiye yüzeye ihtiyacınız olmadığında
`openclaw/plugin-sdk/setup-runtime`,
Benzer şekilde, daha geniş şemsiye
yüzeye ihtiyacınız yoksa `openclaw/plugin-sdk/setup-runtime`,
`openclaw/plugin-sdk/setup-adapter-runtime`,
`openclaw/plugin-sdk/reply-runtime`,
`openclaw/plugin-sdk/reply-dispatch-runtime`,
@ -128,105 +138,110 @@ Benzer şekilde, daha geniş şemsiye yüzeye ihtiyacınız olmadığında
Özellikle kurulum için:
- `openclaw/plugin-sdk/setup-runtime`, çalışma zamanı güvenli kurulum yardımcılarını kapsar:
içe aktarma güvenli kurulum yama bağdaştırıcıları (`createPatchedAccountSetupAdapter`,
- `openclaw/plugin-sdk/setup-runtime`, çalışma zamanında güvenli kurulum yardımcılarını kapsar:
içe aktarma ısından güvenli kurulum patch bağdaştırıcıları (`createPatchedAccountSetupAdapter`,
`createEnvPatchedAccountSetupAdapter`,
`createSetupInputPresenceValidator`), lookup-note çıktısı,
`promptResolvedAllowFrom`, `splitSetupEntries` ve devredilmiş
setup-proxy oluşturucuları
- `openclaw/plugin-sdk/setup-adapter-runtime`, `createEnvPatchedAccountSetupAdapter`
için dar env-farkında bağdaştırıcı seam'idir
için dar env-farkındalıklı bağdaştırıcı yüzeyidir
- `openclaw/plugin-sdk/channel-setup`, isteğe bağlı kurulum setup
oluşturucularını ve birkaç setup-safe ilkel öğeyi kapsar:
oluşturucularını ve birkaç setup-safe ilkel yapıyı kapsar:
`createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`,
Kanalınız env güdümlü kurulumu veya kimlik doğrulamayı destekliyorsa ve genel başlangıç/yapılandırma
Kanalınız env tabanlı kurulum veya auth destekliyorsa ve genel başlangıç/config
akışlarının çalışma zamanı yüklenmeden önce bu env adlarını bilmesi gerekiyorsa,
bunları plugin manifest içinde `channelEnvVars` ile bildirin. Kanal çalışma zamanı `envVars` değerlerini veya
yerel sabitleri yalnızca operatör odaklı kopya için tutun.
bunları eklenti manifestinde `channelEnvVars` ile bildirin. Kanal çalışma zamanı
`envVars` veya yerel sabitlerini yalnızca operatöre yönelik metinler için kullanın.
Kanalınız plugin çalışma zamanı başlamadan önce `status`, `channels list`, `channels status` veya
SecretRef taramalarında görünebiliyorsa, `package.json` içine `openclaw.setupEntry` ekleyin.
Bu giriş noktası, salt okunur komut yollarında içe aktarılmaya güvenli olmalı
ve bu özetler için gereken kanal meta verisini, setup-safe yapılandırma bağdaştırıcısını,
durum bağdaştırıcısını ve kanal gizli hedef meta verisini döndürmelidir. Kurulum girişinden
istemci, dinleyici veya taşıma çalışma zamanlarını başlatmayın.
Kanalınız eklenti çalışma zamanı başlamadan önce `status`, `channels list`, `channels status` veya
SecretRef taramalarında görünebiliyorsa, `package.json` içine
`openclaw.setupEntry` ekleyin. Bu giriş noktası salt okunur komut yollarında içe aktarılmak için güvenli olmalı
ve bu özetler için gerekli kanal metadatasını, setup-safe config bağdaştırıcısını,
status bağdaştırıcısını ve kanal secret hedef metadatasını döndürmelidir. Kurulum girişinden
istemcileri, dinleyicileri veya taşıma çalışma zamanlarını başlatmayın.
`createOptionalChannelSetupWizard`, `DEFAULT_ACCOUNT_ID`,
`createTopLevelChannelDmPolicy`, `setSetupChannelEnabled` ve
`splitSetupEntries`
- yalnızca daha ağır paylaşılan kurulum/yapılandırma yardımcılarına da
ihtiyacınız olduğunda daha geniş `openclaw/plugin-sdk/setup` seam'ini kullanın; örneğin
- yalnızca daha ağır paylaşılan setup/config yardımcılarına da ihtiyacınız varsa
daha geniş `openclaw/plugin-sdk/setup` yüzeyini kullanın; örneğin
`moveSingleAccountChannelSectionToDefaultAccount(...)`
Kanalınız yalnızca kurulum yüzeylerinde "önce bu plugin'i kurun" mesajını
duyurmak istiyorsa, `createOptionalChannelSetupSurface(...)` tercih edin. Oluşturulan
bağdaştırıcı/sihirbaz, yapılandırma yazımlarında ve sonlandırmada fail-closed davranır; ayrıca
aynı kurulum-gerekli mesajını doğrulama, sonlandırma ve docs-link
kopyasında yeniden kullanır.
Kanalınız yalnızca kurulum yüzeylerinde "önce bu eklentiyi kurun" bilgisini
duyurmak istiyorsa, `createOptionalChannelSetupSurface(...)` tercih edin. Üretilen
bağdaştırıcı/sihirbaz config yazımlarında ve sonlandırmada kapalı başarısız olur,
ayrıca doğrulama, sonlandırma ve docs-link metinlerinde aynı kurulum gerekli
mesajını yeniden kullanır.
Diğer sıcak kanal yolları için, daha geniş eski yüzeyler yerine dar yardımcıları tercih edin:
Diğer yoğun kanal yolları için, daha geniş eski yüzeyler yerine dar yardımcıları tercih edin:
- çok hesaplı yapılandırma ve
varsayılan hesap geri dönüşü için `openclaw/plugin-sdk/account-core`,
varsayılan hesap geri dönüşü için
`openclaw/plugin-sdk/account-core`,
`openclaw/plugin-sdk/account-id`,
`openclaw/plugin-sdk/account-resolution` ve
`openclaw/plugin-sdk/account-helpers`
- gelen rota/zarf ve
kaydet-ve-dispatch bağlaması için `openclaw/plugin-sdk/inbound-envelope` ve
kaydet-ve-dağıt bağlaması için
`openclaw/plugin-sdk/inbound-envelope` ve
`openclaw/plugin-sdk/inbound-reply-dispatch`
- hedef ayrıştırma/eşleştirme için `openclaw/plugin-sdk/messaging-targets`
- hedef ayrıştırma/eşleme için `openclaw/plugin-sdk/messaging-targets`
- medya yükleme ile giden
kimlik/gönderim temsilcileri ve payload planlaması için `openclaw/plugin-sdk/outbound-media` ve
kimlik/gönderme delegeleri ve payload planlaması için
`openclaw/plugin-sdk/outbound-media` ve
`openclaw/plugin-sdk/outbound-runtime`
- bir giden rota açık bir `replyToId`/`threadId` değerini korumalıysa veya
temel oturum anahtarı hâlâ eşleşirken mevcut `:thread:` oturumunu geri kazanmalıysa
`openclaw/plugin-sdk/channel-core` içinden `buildThreadAwareOutboundSessionRoute(...)`.
Sağlayıcı plugin'leri, platformlarının yerel ileti dizisi teslim anlambilimi
olduğunda önceliği, sonek davranışını ve ileti dizisi kimliği normalizasyonunu geçersiz kılabilir.
- ileti dizisi bağlama yaşam döngüsü
- giden bir rota açık bir
`replyToId`/`threadId` değerini korumalıysa veya temel oturum anahtarı hâlâ eşleşirken mevcut
`:thread:` oturumunu geri kazanmalıysa,
`openclaw/plugin-sdk/channel-core` içinden
`buildThreadAwareOutboundSessionRoute(...)`.
Sağlayıcı eklentileri, platformlarının yerel thread teslim semantiği varsa
önceliği, sonek davranışını ve thread kimliği normalleştirmesini geçersiz kılabilir.
- thread-binding yaşam döngüsü
ve bağdaştırıcı kaydı için `openclaw/plugin-sdk/thread-bindings-runtime`
- yalnızca eski bir agent/medya
- yalnızca eski bir agent/media
payload alan düzeni hâlâ gerekiyorsa `openclaw/plugin-sdk/agent-media-payload`
- Telegram özel komut
normalizasyonu, yinelenen/çakışma doğrulaması ve geri dönüşte kararlı komut
normalleştirmesi, yinelenen/çakışma doğrulaması ve geri dönüş açısından kararlı bir komut
yapılandırma sözleşmesi için `openclaw/plugin-sdk/telegram-command-config`
Yalnızca kimlik doğrulama yapan kanallar genelde varsayılan yolda durabilir: onayları core yönetir ve plugin yalnızca giden/kimlik doğrulama yeteneklerini açığa çıkarır. Matrix, Slack, Telegram ve özel sohbet taşıma katmanları gibi yerel onay kanalları, kendi onay yaşam döngülerini yazmak yerine paylaşılan yerel yardımcıları kullanmalıdır.
Yalnızca auth kullanan kanallar genellikle varsayılan yolda durabilir: çekirdek onayları yönetir ve eklenti yalnızca giden/auth yeteneklerini açığa çıkarır. Matrix, Slack, Telegram ve özel sohbet taşıma katmanları gibi yerel onay kanalları, kendi onay yaşam döngülerini oluşturmak yerine paylaşılan yerel yardımcıları kullanmalıdır.
## Gelen mention ilkesi
Gelen mention işleme mantığını iki katmana bölünmüş tutun:
Gelen mention işlemeyi iki katmana ayrılmış halde tutun:
- plugin'e ait kanıt toplama
- eklentinin sahip olduğu kanıt toplama
- paylaşılan ilke değerlendirmesi
Mention ilkesi kararları için `openclaw/plugin-sdk/channel-mention-gating` kullanın.
Daha geniş gelen
yardımcı barrel'ına ihtiyaç duyduğunuzda yalnızca `openclaw/plugin-sdk/channel-inbound` kullanın.
yardımcı barrelına ihtiyacınız olduğunda yalnızca `openclaw/plugin-sdk/channel-inbound` kullanın.
Plugin yerel mantığı için uygun örnekler:
Eklenti yerel mantığı için uygun örnekler:
- bota yanıt tespiti
- bottan alıntı tespiti
- ileti dizisine katılım kontrolleri
- servis/sistem mesajı dışlamaları
- bot katılımını kanıtlamak için gereken platforma özgü yerel önbellekler
- bota yanıt algılama
- bottan alıntı algılama
- thread katılımı kontrolleri
- hizmet/sistem mesajı hariç tutmaları
- bot katılımını kanıtlamak için gereken platform yerel önbellekleri
Paylaşılan yardımcı için uygun örnekler:
- `requireMention`
- açık mention sonucu
- örtük mention izin listesi
- komut baypası
- komut bypass
- son atlama kararı
Tercih edilen akış:
1. Yerel mention olgularını hesaplayın.
2. Bu olguları `resolveInboundMentionDecision({ facts, policy })` içine geçin.
3. Gelen geçidinizde `decision.effectiveWasMentioned`, `decision.shouldBypassMention` ve `decision.shouldSkip` değerlerini kullanın.
1. Yerel mention bilgilerini hesaplayın.
2. Bu bilgileri `resolveInboundMentionDecision({ facts, policy })` içine geçin.
3. Gelen geçidinizde `decision.effectiveWasMentioned`, `decision.shouldBypassMention` ve `decision.shouldSkip` kullanın.
```typescript
import {
@ -265,8 +280,8 @@ const decision = resolveInboundMentionDecision({
if (decision.shouldSkip) return;
```
`api.runtime.channel.mentions`, çalışma zamanı enjeksiyonuna zaten bağlı olan
paketlenmiş kanal plugin'leri için aynı paylaşılan mention yardımcılarınıığa çıkarır:
`api.runtime.channel.mentions`, çalışma zamanı enjeksiyonuna zaten bağımlı olan
bundled kanal eklentileri için aynı paylaşılan mention yardımcılarınıığa çıkarır:
- `buildMentionRegexes`
- `matchesMentionPatterns`
@ -275,22 +290,23 @@ paketlenmiş kanal plugin'leri için aynı paylaşılan mention yardımcıların
- `resolveInboundMentionDecision`
Yalnızca `implicitMentionKindWhen` ve
`resolveInboundMentionDecision` kullanmanız gerekiyorsa,
`resolveInboundMentionDecision` gerekiyorsa,
ilgili olmayan gelen çalışma zamanı yardımcılarını yüklemekten kaçınmak için
`openclaw/plugin-sdk/channel-mention-gating` inden içe aktarın.
`openclaw/plugin-sdk/channel-mention-gating` üzerinden içe aktarın.
Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarımları olarak
`openclaw/plugin-sdk/channel-inbound` üzerinde kalmaktadır. Yeni kod
Eski `resolveMentionGating*` yardımcıları yalnızca
uyumluluk dışa aktarımları olarak
`openclaw/plugin-sdk/channel-inbound` üzerinde kalır. Yeni kod,
`resolveInboundMentionDecision({ facts, policy })` kullanmalıdır.
## Adım adım anlatım
## Adım adım açıklama
<Steps>
<a id="step-1-package-and-manifest"></a>
<Step title="Paket ve manifest">
Standart plugin dosyalarını oluşturun. `package.json` içindeki `channel` alanı,
bunu bir kanal plugin'i yapan alandır. Tam paket meta veri yüzeyi için
bkz. [Plugin Kurulumu ve Yapılandırma](/tr/plugins/sdk-setup#openclaw-channel):
Standart eklenti dosyalarını oluşturun. `package.json` içindeki `channel` alanı,
bunun bir kanal eklentisi olmasını sağlar. Tam paket metadata yüzeyi için
bkz. [Eklenti Kurulumu ve Yapılandırma](/tr/plugins/sdk-setup#openclaw-channel):
<CodeGroup>
```json package.json
@ -304,7 +320,7 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım
"channel": {
"id": "acme-chat",
"label": "Acme Chat",
"blurb": "OpenClaw'ı Acme Chat'e bağlayın."
"blurb": "Connect OpenClaw to Acme Chat."
}
}
}
@ -316,7 +332,7 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım
"kind": "channel",
"channels": ["acme-chat"],
"name": "Acme Chat",
"description": "Acme Chat kanal plugin'i",
"description": "Acme Chat channel plugin",
"configSchema": {
"type": "object",
"additionalProperties": false,
@ -339,9 +355,9 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım
</Step>
<Step title="Kanal plugin nesnesini oluşturun">
`ChannelPlugin` arayüzünde birçok isteğe bağlı bağdaştırıcı yüzeyi vardır. En az
düzey olan `id` ve `setup` ile başlayın ve ihtiyaç duydukça bağdaştırıcılar ekleyin.
<Step title="Kanal eklentisi nesnesini oluşturun">
`ChannelPlugin` arayüzü birçok isteğe bağlı bağdaştırıcı yüzeyine sahiptir. En
azıyla başlayın — `id` ve `setup` ve ihtiyaç duydukça bağdaştırıcılar ekleyin.
`src/channel.ts` oluşturun:
@ -351,7 +367,7 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım
createChannelPluginBase,
} from "openclaw/plugin-sdk/channel-core";
import type { OpenClawConfig } from "openclaw/plugin-sdk/channel-core";
import { acmeChatApi } from "./client.js"; // platform API istemciniz
import { acmeChatApi } from "./client.js"; // your platform API client
type ResolvedAccount = {
accountId: string | null;
@ -392,7 +408,7 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım
},
}),
// DM güvenliği: bot'a kim mesaj gönderebilir
// DM security: who can message the bot
security: {
dm: {
channelKey: "acme-chat",
@ -402,21 +418,21 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım
},
},
// Eşleştirme: yeni DM kişileri için onay akışı
// Pairing: approval flow for new DM contacts
pairing: {
text: {
idLabel: "Acme Chat kullanıcı adı",
message: "Kimliğinizi doğrulamak için bu kodu gönderin:",
idLabel: "Acme Chat username",
message: "Send this code to verify your identity:",
notify: async ({ target, code }) => {
await acmeChatApi.sendDm(target, `Pairing code: ${code}`);
},
},
},
// Dizileme: yanıtlar nasıl teslim edilir
// Threading: how replies are delivered
threading: { topLevelReplyToMode: "reply" },
// Giden: platforma mesaj gönder
// Outbound: send messages to the platform
outbound: {
attachedResults: {
sendText: async (params) => {
@ -437,17 +453,18 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım
```
<Accordion title="createChatChannelPlugin sizin için ne yapar">
Düşük seviyeli bağdaştırıcı arayüzlerini elle uygulamak yerine
bildirimsel seçenekler verirsiniz ve oluşturucu bunları birleştirir:
Düşük seviyeli bağdaştırıcı arayüzlerini el ile uygulamak yerine,
bildirime dayalı seçenekler geçirirsiniz ve oluşturucu bunları birleştirir:
| Seçenek | Bağladığı şey |
| --- | --- |
| `security.dm` | Yapılandırma alanlarından kapsamlı DM güvenlik çözümleyicisi |
| `pairing.text` | Kod değişimi ile metin tabanlı DM eşleştirme akışı |
| `threading` | Reply-to-mode çözümleyicisi (sabit, hesap kapsamlı veya özel) |
| `outbound.attachedResults` | Sonuç meta verisi döndüren gönderim işlevleri (mesaj kimlikleri) |
| `threading` | Reply-to modu çözümleyicisi (sabit, hesap kapsamlı veya özel) |
| `outbound.attachedResults` | Sonuç metadatası döndüren gönderim işlevleri (mesaj kimlikleri) |
Tam denetime ihtiyacınız varsa bildirimsel seçenekler yerine ham bağdaştırıcı nesneleri de geçebilirsiniz.
Tam denetim gerekiyorsa bildirime dayalı seçenekler yerine ham bağdaştırıcı
nesneleri de geçebilirsiniz.
</Accordion>
</Step>
@ -462,20 +479,20 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım
export default defineChannelPluginEntry({
id: "acme-chat",
name: "Acme Chat",
description: "Acme Chat kanal plugin'i",
description: "Acme Chat channel plugin",
plugin: acmeChatPlugin,
registerCliMetadata(api) {
api.registerCli(
({ program }) => {
program
.command("acme-chat")
.description("Acme Chat yönetimi");
.description("Acme Chat management");
},
{
descriptors: [
{
name: "acme-chat",
description: "Acme Chat yönetimi",
description: "Acme Chat management",
hasSubcommands: false,
},
],
@ -489,15 +506,15 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım
```
Kanalın sahip olduğu CLI tanımlayıcılarını `registerCliMetadata(...)` içine koyun; böylece OpenClaw
tam kanal çalışma zamanını etkinleştirmeden kök yardım ekranında bunları gösterebilir,
normal tam yüklemeler de gerçek komut
kaydı için aynı tanımlayıcıları alır. `registerFull(...)` alanını yalnızca çalışma zamanına özgü işler için tutun.
Eğer `registerFull(...)` Gateway RPC yöntemleri kaydediyorsa,
plugin'e özgü bir önek kullanın. Core yönetici ad alanları (`config.*`,
`exec.approvals.*`, `wizard.*`, `update.*`) ayrılmıştır ve her zaman
`operator.admin` çözümüne gider.
`defineChannelPluginEntry`, kayıt modu ayrımını otomatik olarak yönetir. Tüm
seçenekler için bkz. [Giriş Noktaları](/tr/plugins/sdk-entrypoints#definechannelpluginentry).
tam kanal çalışma zamanını etkinleştirmeden bunları kök yardımında gösterebilir;
normal tam yüklemeler ise gerçek komut
kaydı için aynı tanımlayıcıları almaya devam eder. `registerFull(...)` değerini yalnızca çalışma zamanı işi için tutun.
Eğer `registerFull(...)` gateway RPC yöntemleri kaydediyorsa,
eklentiye özgü bir önek kullanın. Çekirdek yönetici ad alanları (`config.*`,
`exec.approvals.*`, `wizard.*`, `update.*`) ayrılmış kalır ve her zaman
`operator.admin` olarak çözülür.
`defineChannelPluginEntry`, kayıt modu ayrımını otomatik olarak işler. Tüm
seçenekler için [Giriş Noktaları](/tr/plugins/sdk-entrypoints#definechannelpluginentry) bölümüne bakın.
</Step>
@ -511,34 +528,34 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım
export default defineSetupPluginEntry(acmeChatPlugin);
```
OpenClaw, kanal devre dışıyken
veya yapılandırılmamışken tam giriş yerine bunu yükler.
Bu, setup akışları sırasında ağır çalışma zamanı kodunun çekilmesini önler.
Ayrıntılar için bkz. [Kurulum ve Yapılandırma](/tr/plugins/sdk-setup#setup-entry).
OpenClaw, kanal devre dışı olduğunda
veya yapılandırılmadığında tam giriş yerine bunu yükler.
Bu, kurulum akışları sırasında ağır çalışma zamanı kodunun içe çekilmesini önler.
Ayrıntılar için [Kurulum ve Yapılandırma](/tr/plugins/sdk-setup#setup-entry) bölümüne bakın.
Setup-safe dışa aktarımları yan modüllere ayıran paketlenmiş çalışma alanı kanalları,
ık bir setup zamanı çalışma zamanı ayarlayıcısına da ihtiyaç duyduklarında
Kurulum açısından güvenli dışa aktarımları yan modüllere ayıran bundled çalışma alanı kanalları,
ık bir kurulum zamanı çalışma zamanı ayarlayıcısına da ihtiyaç duyduklarında
`openclaw/plugin-sdk/channel-entry-contract` içinden
`defineBundledChannelSetupEntry(...)` kullanabilir.
</Step>
<Step title="Gelen mesajları işleyin">
Plugin'inizin platformdan mesaj alması ve bunları
OpenClaw'a iletmesi gerekir. Tipik desen, isteği doğrulayan ve
kendi kanalınızın gelen işleyicisi üzerinden dispatch eden bir Webhook'tir:
Eklentinizin platformdan mesaj alması ve bunları
OpenClawa iletmesi gerekir. Tipik desen, isteği doğrulayan ve
bunu kanalınızın gelen işleyicisi üzerinden dağıtan bir Webhooktur:
```typescript
registerFull(api) {
api.registerHttpRoute({
path: "/acme-chat/webhook",
auth: "plugin", // plugin tarafından yönetilen kimlik doğrulama (imzaları kendiniz doğrulayın)
auth: "plugin", // eklenti tarafından yönetilen auth (imzaları kendiniz doğrulayın)
handler: async (req, res) => {
const event = parseWebhookPayload(req);
// Gelen işleyiciniz mesajı OpenClaw'a dispatch eder.
// Kesin bağlama platform SDK'nıza bağlıdır —
// gerçek bir örnek için paketlenmiş Microsoft Teams veya Google Chat plugin paketine bakın.
// Gelen işleyiciniz mesajı OpenClawa dağıtır.
// Kesin bağlama platform SDKnıza bağlıdır —
// gerçek bir örnek için bundled Microsoft Teams veya Google Chat eklenti paketine bakın.
await handleAcmeChatInbound(api, event);
res.statusCode = 200;
@ -550,9 +567,9 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım
```
<Note>
Gelen mesaj işleme kanala özgüdür. Her kanal plugin'i
kendi gelen işlem hattına sahiptir. Gerçek desenler için paketlenmiş kanal plugin'lerine
(örneğin Microsoft Teams veya Google Chat plugin paketi) bakın.
Gelen mesaj işleme kanala özeldir. Her kanal eklentisi
kendi gelen işlem hattına sahiptir. Gerçek örüntüler için bundled kanal eklentilerine
(örneğin Microsoft Teams veya Google Chat eklenti paketine) bakın.
</Note>
</Step>
@ -566,7 +583,7 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım
import { acmeChatPlugin } from "./channel.js";
describe("acme-chat plugin", () => {
it("yapılandırmadan hesabı çözümler", () => {
it("resolves account from config", () => {
const cfg = {
channels: {
"acme-chat": { token: "test-token", allowFrom: ["user1"] },
@ -576,7 +593,7 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım
expect(account.token).toBe("test-token");
});
it("gizli bilgileri somutlaştırmadan hesabı inceler", () => {
it("inspects account without materializing secrets", () => {
const cfg = {
channels: { "acme-chat": { token: "test-token" } },
} as any;
@ -585,7 +602,7 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım
expect(result.tokenStatus).toBe("available");
});
it("eksik yapılandırmayı bildirir", () => {
it("reports missing config", () => {
const cfg = { channels: {} } as any;
const result = acmeChatPlugin.setup!.inspectAccount!(cfg, undefined);
expect(result.configured).toBe(false);
@ -606,46 +623,46 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım
```
<bundled-plugin-root>/acme-chat/
├── package.json # openclaw.channel meta verisi
├── openclaw.plugin.json # Yapılandırma şeması içeren manifest
├── package.json # openclaw.channel metadata
├── openclaw.plugin.json # Yapılandırma şemasını içeren manifest
├── index.ts # defineChannelPluginEntry
├── setup-entry.ts # defineSetupPluginEntry
├── api.ts # Herkese açık dışa aktarımlar (isteğe bağlı)
├── runtime-api.ts # İç çalışma zamanı dışa aktarımları (isteğe bağlı)
├── api.ts # Genel dışa aktarımlar (isteğe bağlı)
├── runtime-api.ts # Dahili çalışma zamanı dışa aktarımları (isteğe bağlı)
└── src/
├── channel.ts # createChatChannelPlugin aracılığıyla ChannelPlugin
├── channel.ts # createChatChannelPlugin üzerinden ChannelPlugin
├── channel.test.ts # Testler
├── client.ts # Platform API istemcisi
└── runtime.ts # Çalışma zamanı deposu (gerekirse)
```
## Gelişmiş konular
## İleri konular
<CardGroup cols={2}>
<Card title="Dizileme seçenekleri" icon="git-branch" href="/tr/plugins/sdk-entrypoints#registration-mode">
Sabit, hesap kapsamlı veya özel yanıt kipleri
<Card title="Thread oluşturma seçenekleri" icon="git-branch" href="/tr/plugins/sdk-entrypoints#registration-mode">
Sabit, hesap kapsamlı veya özel yanıt modları
</Card>
<Card title="Mesaj aracı entegrasyonu" icon="puzzle" href="/tr/plugins/architecture#channel-plugins-and-the-shared-message-tool">
<Card title="Message tool entegrasyonu" icon="puzzle" href="/tr/plugins/architecture#channel-plugins-and-the-shared-message-tool">
describeMessageTool ve eylem keşfi
</Card>
<Card title="Hedef çözümleme" icon="crosshair" href="/tr/plugins/architecture#channel-target-resolution">
inferTargetChatType, looksLikeId, resolveTarget
</Card>
<Card title="Çalışma zamanı yardımcıları" icon="settings" href="/tr/plugins/sdk-runtime">
api.runtime aracılığıyla TTS, STT, medya, alt agent
api.runtime üzerinden TTS, STT, medya, alt agent
</Card>
</CardGroup>
<Note>
Bazı paketlenmiş yardımcı seam'leri, paketlenmiş plugin bakımı ve
uyumluluk için hâlâ vardır. Bunlar yeni kanal plugin'leri için önerilen desen değildir;
o paketlenmiş plugin ailesini doğrudan korumuyorsanız ortak SDK
yüzeyinden genel channel/setup/reply/runtime alt yollarını tercih edin.
Bazı bundled yardımcı yüzeyler, bundled plugin bakımı ve
uyumluluk için hâlâ vardır. Bunlar yeni kanal eklentileri için önerilen örüntü değildir;
o bundled plugin ailesini doğrudan sürdürmüyorsanız ortak SDK
yüzeyindeki genel channel/setup/reply/runtime alt yollarını tercih edin.
</Note>
## Sonraki adımlar
- [Sağlayıcı Plugin'leri](/tr/plugins/sdk-provider-plugins) — plugin'iniz ayrıca modeller de sağlıyorsa
- [SDK Genel Bakışı](/tr/plugins/sdk-overview) — tam alt yol içe aktarma başvurusu
- [Provider Plugins](/tr/plugins/sdk-provider-plugins) — eklentiniz modeller de sağlıyorsa
- [SDK Overview](/tr/plugins/sdk-overview) — tam alt yol içe aktarma başvurusu
- [SDK Testing](/tr/plugins/sdk-testing) — test yardımcıları ve sözleşme testleri
- [Plugin Manifest](/tr/plugins/manifest) — tam manifest şeması

View File

@ -1,30 +1,30 @@
---
read_when:
- Hangi SDK alt yolundan içe aktarma yapmanız gerektiğini bilmeniz gerekiyor
- OpenClawPluginApi üzerindeki tüm kayıt yöntemleri için bir başvuru istiyorsunuz
- OpenClawPluginApi üzerindeki tüm kayıt yöntemleri için bir başvuru kaynağı istiyorsunuz
- Belirli bir SDK dışa aktarımını arıyorsunuz
sidebarTitle: SDK Overview
summary: İçe aktarma eşlemesi, kayıt API başvurusu ve SDK mimarisi
title: Plugin SDK Genel Bakışı
summary: İçe aktarma eşlemesi, kayıt API referansı ve SDK mimarisi
title: Plugin SDK Genel Bakış
x-i18n:
generated_at: "2026-04-22T04:25:38Z"
generated_at: "2026-04-22T08:55:41Z"
model: gpt-5.4
provider: openai
source_hash: 8045c11976bbda6afe3303a0aab08caf0d0a86ebcf1aaaf927943b90cc517673
source_hash: e57019e6f9a7fed7842ac575e025b6db41d125f5fa9d0d1de03923fdb1f6bcc3
source_path: plugins/sdk-overview.md
workflow: 15
---
# Plugin SDK Genel Bakışı
# Plugin SDK Genel Bakış
Plugin SDK, plugin'ler ile çekirdek arasındaki türlenmiş sözleşmedir. Bu sayfa,
**neyi içe aktarmanız gerektiği** ve **neyi kaydedebileceğiniz** için başvurudur.
Plugin SDK, Plugin'ler ile çekirdek arasındaki türlendirilmiş sözleşmedir. Bu sayfa,
**neyi içe aktaracağınızın** ve **neleri kaydedebileceğinizin** başvuru kaynağıdır.
<Tip>
**Nasıl yapılır kılavuzu mu arıyorsunuz?**
- İlk plugin mi? [Getting Started](/tr/plugins/building-plugins) ile başlayın
- Kanal plugin'i mi? [Channel Plugins](/tr/plugins/sdk-channel-plugins) bölümüne bakın
- Sağlayıcı plugin'i mi? [Provider Plugins](/tr/plugins/sdk-provider-plugins) bölümüne bakın
- İlk Plugin? [Başlangıç](/tr/plugins/building-plugins) ile başlayın
- Kanal Plugin'i? Bkz. [Kanal Plugin'leri](/tr/plugins/sdk-channel-plugins)
- Sağlayıcı Plugin'i? Bkz. [Sağlayıcı Plugin'leri](/tr/plugins/sdk-provider-plugins)
</Tip>
## İçe aktarma kuralı
@ -36,55 +36,58 @@ import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
```
Her alt yol küçük, kendi içinde yeterli bir modüldür. Bu, başlangıcı hızlı tutar
ve döngüsel bağımlılık sorunlarını önler. Kanala özgü giriş/oluşturma yardımcıları için
`openclaw/plugin-sdk/channel-core` tercih edin; daha geniş şemsiye yüzeyi ve
Her alt yol küçük, kendi içinde yeterli bir modüldür. Bu, başlatmayı hızlı tutar
ve döngüsel bağımlılık sorunlarını önler. Kanala özgü giriş/derleme yardımcıları için
`openclaw/plugin-sdk/channel-core` tercih edin; daha geniş şemsiye yüzey ve
`buildChannelConfigSchema` gibi paylaşılan yardımcılar için
`openclaw/plugin-sdk/core` kullanın.
`openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`,
`openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp` gibi
sağlayıcı adlı kolaylık arayüzleri veya kanal markalı yardımcı arayüzleri eklemeyin ve bunlara
bağımlı olmayın. Paketlenmiş plugin'ler kendi `api.ts` veya `runtime-api.ts`
barrel dosyaları içinde genel SDK alt yollarını birleştirmelidir; çekirdek ise
ya bu plugin-yerel barrel dosyalarını kullanmalı ya da ihtiyaç gerçekten kanallar arasıysa dar bir genel SDK
sağlayıcı adlı kullanım kolaylığı sağlayan ayrım noktalarını veya
kanal markalı yardımcı ayrım noktalarını eklemeyin ya da bunlara bağımlı olmayın.
Paketle birlikte gelen Plugin'ler, kendi `api.ts` veya `runtime-api.ts` barrel dosyaları içinde
genel SDK alt yollarını birleştirmelidir; çekirdek ise ya bu Plugin'e yerel barrel dosyalarını
kullanmalı ya da ihtiyaç gerçekten kanallar arasıysa dar, genel bir SDK
sözleşmesi eklemelidir.
Oluşturulan dışa aktarma eşlemesi hâlâ `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`,
`plugin-sdk/zalo`, `plugin-sdk/zalo-setup` ve `plugin-sdk/matrix*` gibi küçük bir
paketlenmiş-plugin yardımcı arayüzleri kümesi içerir. Bu
alt yollar yalnızca paketlenmiş-plugin bakımı ve uyumluluğu için vardır; aşağıdaki ortak tabloda kasıtlı olarak
atlanırlar ve yeni üçüncü taraf plugin'ler için önerilen içe aktarma yolu değildir.
Üretilmiş dışa aktarma eşlemesi hâlâ `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`,
`plugin-sdk/zalo`, `plugin-sdk/zalo-setup` ve `plugin-sdk/matrix*` gibi
az sayıda paketle birlikte gelen Plugin yardımcı ayrım noktasını içerir. Bu
alt yollar yalnızca paketle birlikte gelen Plugin bakımı ve uyumluluk içindir;
aşağıdaki ortak tabloda bilinçli olarak yer verilmemiştir ve yeni üçüncü taraf
Plugin'ler için önerilen içe aktarma yolu değildir.
## Alt yol başvurusu
## Alt yol referansı
En yaygın kullanılan alt yollar, amaçlarına göre gruplandırılmıştır. Oluşturulan tam
200+'den fazla alt yol listesi `scripts/lib/plugin-sdk-entrypoints.json` içinde bulunur.
En sık kullanılan alt yollar, amaçlarına göre gruplanmıştır. 200'den fazla alt yoldan oluşan
üretilmiş tam liste `scripts/lib/plugin-sdk-entrypoints.json` içinde bulunur.
Ayrılmış paketlenmiş-plugin yardımcı alt yolları bu oluşturulan listede yine görünür.
Bir belge sayfasııkça birini genel olarak öne çıkarmadıkça bunları uygulama ayrıntısı/uyumluluk yüzeyleri olarak değerlendirin.
Ayrılmış paketle birlikte gelen Plugin yardımcı alt yolları bu üretilmiş listede
hâlâ görünür. Bir doküman sayfası birini açıkça herkese açık olarak öne çıkarmadıkça,
bunları uygulama ayrıntısı/uyumluluk yüzeyleri olarak değerlendirin.
### Plugin girişi
| Alt yol | Temel dışa aktarımlar |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `plugin-sdk/plugin-entry` | `definePluginEntry` |
| Alt yol | Temel dışa aktarımlar |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `plugin-sdk/plugin-entry` | `definePluginEntry` |
| `plugin-sdk/core` | `defineChannelPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase`, `defineSetupPluginEntry`, `buildChannelConfigSchema` |
| `plugin-sdk/config-schema` | `OpenClawSchema` |
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
| `plugin-sdk/config-schema` | `OpenClawSchema` |
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
<AccordionGroup>
<Accordion title="Kanal alt yolları">
| Alt yol | Temel dışa aktarımlar |
| --- | --- |
| `plugin-sdk/channel-core` | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
| `plugin-sdk/config-schema` | Kök `openclaw.json` Zod şeması dışa aktarımı (`OpenClawSchema`) |
| `plugin-sdk/config-schema` | Kök `openclaw.json` Zod şema dışa aktarımı (`OpenClawSchema`) |
| `plugin-sdk/channel-setup` | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, ayrıca `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
| `plugin-sdk/setup` | Paylaşılan kurulum sihirbazı yardımcıları, izin listesi istemleri, kurulum durumu oluşturucuları |
| `plugin-sdk/setup-runtime` | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` |
| `plugin-sdk/setup-adapter-runtime` | `createEnvPatchedAccountSetupAdapter` |
| `plugin-sdk/setup-tools` | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
| `plugin-sdk/account-core` | Çok hesaplı yapılandırma/eylem geçidi yardımcıları, varsayılan hesap geri dönüş yardımcıları |
| `plugin-sdk/account-core` | Çok hesaplı yapılandırma/eylem kapısı yardımcıları, varsayılan hesap geri dönüş yardımcıları |
| `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, hesap kimliği normalleştirme yardımcıları |
| `plugin-sdk/account-resolution` | Hesap arama + varsayılan geri dönüş yardımcıları |
| `plugin-sdk/account-helpers` | Dar hesap listesi/hesap eylemi yardımcıları |
@ -92,38 +95,38 @@ Bir belge sayfasııkça birini genel olarak öne çıkarmadıkça bunları
| `plugin-sdk/channel-reply-pipeline` | `createChannelReplyPipeline` |
| `plugin-sdk/channel-config-helpers` | `createHybridChannelConfigAdapter` |
| `plugin-sdk/channel-config-schema` | Kanal yapılandırma şeması türleri |
| `plugin-sdk/telegram-command-config` | Paketlenmiş sözleşme geri dönüşü ile Telegram özel komut normalleştirme/doğrulama yardımcıları |
| `plugin-sdk/command-gating` | Dar komut yetkilendirme geçidi yardımcıları |
| `plugin-sdk/telegram-command-config` | Paketle birlikte gelen sözleşme geri dönüşü ile Telegram özel komut normalleştirme/doğrulama yardımcıları |
| `plugin-sdk/command-gating` | Dar komut yetkilendirme kapısı yardımcıları |
| `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` |
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink`, taslak akış yaşam döngüsü/nihai hâle getirme yardımcıları |
| `plugin-sdk/inbound-envelope` | Paylaşılan gelen yönlendirme + zarf oluşturucu yardımcıları |
| `plugin-sdk/inbound-reply-dispatch` | Paylaşılan gelen kaydetme ve dağıtma yardımcıları |
| `plugin-sdk/messaging-targets` | Hedef ayrıştırma/eşleme yardımcıları |
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink`, taslak akış yaşam döngüsü/sonlandırma yardımcıları |
| `plugin-sdk/inbound-envelope` | Paylaşılan gelen rota + zarf oluşturucu yardımcıları |
| `plugin-sdk/inbound-reply-dispatch` | Paylaşılan gelen kayıt ve sevk yardımcıları |
| `plugin-sdk/messaging-targets` | Hedef ayrıştırma/eşleştirme yardımcıları |
| `plugin-sdk/outbound-media` | Paylaşılan giden medya yükleme yardımcıları |
| `plugin-sdk/outbound-runtime` | Giden kimlik, gönderim temsilcisi ve yük planlama yardımcıları |
| `plugin-sdk/outbound-runtime` | Giden kimlik, gönderme delegesi ve yük planlama yardımcıları |
| `plugin-sdk/poll-runtime` | Dar anket normalleştirme yardımcıları |
| `plugin-sdk/thread-bindings-runtime` | Konu bağlama yaşam döngüsü ve bağdaştırıcı yardımcıları |
| `plugin-sdk/agent-media-payload` | Eski aracı medya yükü oluşturucusu |
| `plugin-sdk/conversation-runtime` | Konuşma/konu bağlama, eşleme ve yapılandırılmış bağlama yardımcıları |
| `plugin-sdk/runtime-config-snapshot` | Çalışma zamanı yapılandırma anlık görüntü yardımcısı |
| `plugin-sdk/thread-bindings-runtime` | İş parçacığı bağlama yaşam döngüsü ve bağdaştırıcı yardımcıları |
| `plugin-sdk/agent-media-payload` | Eski ajan medya yükü oluşturucusu |
| `plugin-sdk/conversation-runtime` | Konuşma/iş parçacığı bağlama, eşleştirme ve yapılandırılmış bağlama yardımcıları |
| `plugin-sdk/runtime-config-snapshot` | Çalışma zamanı yapılandırma anlık görüntü yardımcısı |
| `plugin-sdk/runtime-group-policy` | Çalışma zamanı grup ilkesi çözümleme yardımcıları |
| `plugin-sdk/channel-status` | Paylaşılan kanal durum anlık görüntüsü/özet yardımcıları |
| `plugin-sdk/channel-config-primitives` | Dar kanal yapılandırma şeması ilkel öğeleri |
| `plugin-sdk/channel-config-primitives` | Dar kanal yapılandırma şeması ilkel türleri |
| `plugin-sdk/channel-config-writes` | Kanal yapılandırma yazma yetkilendirme yardımcıları |
| `plugin-sdk/channel-plugin-common` | Paylaşılan kanal plugin başlangıç dışa aktarımları |
| `plugin-sdk/channel-plugin-common` | Paylaşılan kanal Plugin başlangıç dışa aktarımları |
| `plugin-sdk/allowlist-config-edit` | İzin listesi yapılandırma düzenleme/okuma yardımcıları |
| `plugin-sdk/group-access` | Paylaşılan grup erişimi karar yardımcıları |
| `plugin-sdk/group-access` | Paylaşılan grup erişim kararı yardımcıları |
| `plugin-sdk/direct-dm` | Paylaşılan doğrudan DM kimlik doğrulama/koruma yardımcıları |
| `plugin-sdk/interactive-runtime` | Anlamsal mesaj sunumu, teslimat ve eski etkileşimli yanıt yardımcıları. Bkz. [Message Presentation](/tr/plugins/message-presentation) |
| `plugin-sdk/channel-inbound` | Gelen debounce, bahsetme eşleme, mention-policy yardımcıları ve zarf yardımcıları için uyumluluk barrel dosyası |
| `plugin-sdk/interactive-runtime` | Anlamsal mesaj sunumu, teslimat ve eski etkileşimli yanıt yardımcıları. Bkz. [Mesaj Sunumu](/tr/plugins/message-presentation) |
| `plugin-sdk/channel-inbound` | Gelen debounce, mention eşleştirme, mention-policy yardımcıları ve zarf yardımcıları için uyumluluk barrel dosyası |
| `plugin-sdk/channel-mention-gating` | Daha geniş gelen çalışma zamanı yüzeyi olmadan dar mention-policy yardımcıları |
| `plugin-sdk/channel-location` | Kanal konum bağlamı ve biçimlendirme yardımcıları |
| `plugin-sdk/channel-logging` | Gelen düşüşler ve yazıyor/ack hataları için kanal günlükleme yardımcıları |
| `plugin-sdk/channel-logging` | Gelen düşüşler ve yazıyor/onay hataları için kanal günlükleme yardımcıları |
| `plugin-sdk/channel-send-result` | Yanıt sonuç türleri |
| `plugin-sdk/channel-actions` | Kanal mesaj eylemi yardımcıları, ayrıca plugin uyumluluğu için tutulan kullanımdan kaldırılmış yerel şema yardımcıları |
| `plugin-sdk/channel-targets` | Hedef ayrıştırma/eşleme yardımcıları |
| `plugin-sdk/channel-contract` | Kanal sözleşmesi türleri |
| `plugin-sdk/channel-feedback` | Geri bildirim/tepki bağlantıları |
| `plugin-sdk/channel-actions` | Kanal mesaj eylemi yardımcıları, ayrıca Plugin uyumluluğu için tutulan kullanımdan kaldırılmış yerel şema yardımcıları |
| `plugin-sdk/channel-targets` | Hedef ayrıştırma/eşleştirme yardımcıları |
| `plugin-sdk/channel-contract` | Kanal sözleşme türleri |
| `plugin-sdk/channel-feedback` | Geri bildirim/reaksiyon bağlantıları |
| `plugin-sdk/channel-secret-runtime` | `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment` ve gizli hedef türleri gibi dar gizli sözleşme yardımcıları |
</Accordion>
@ -131,27 +134,27 @@ Bir belge sayfasııkça birini genel olarak öne çıkarmadıkça bunları
| Alt yol | Temel dışa aktarımlar |
| --- | --- |
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
| `plugin-sdk/provider-setup` | Düzenlenmiş yerel/kendi kendine barındırılan sağlayıcı kurulum yardımcıları |
| `plugin-sdk/self-hosted-provider-setup` | Odaklanmış OpenAI uyumlu kendi kendine barındırılan sağlayıcı kurulum yardımcıları |
| `plugin-sdk/provider-setup` | Düzenlenmiş local/self-hosted sağlayıcı kurulum yardımcıları |
| `plugin-sdk/self-hosted-provider-setup` | Odaklı OpenAI uyumlu self-hosted sağlayıcı kurulum yardımcıları |
| `plugin-sdk/cli-backend` | CLI arka uç varsayılanları + watchdog sabitleri |
| `plugin-sdk/provider-auth-runtime` | Sağlayıcı plugin'leri için çalışma zamanı API anahtarı çözümleme yardımcıları |
| `plugin-sdk/provider-auth-runtime` | Sağlayıcı Plugin'leri için çalışma zamanı API anahtarı çözümleme yardımcıları |
| `plugin-sdk/provider-auth-api-key` | `upsertApiKeyProfile` gibi API anahtarı onboarding/profil yazma yardımcıları |
| `plugin-sdk/provider-auth-result` | Standart OAuth auth-result oluşturucusu |
| `plugin-sdk/provider-auth-login` | Sağlayıcı plugin'leri için paylaşılan etkileşimli giriş yardımcıları |
| `plugin-sdk/provider-env-vars` | Sağlayıcı kimlik doğrulama ortam değişkeni arama yardımcıları |
| `plugin-sdk/provider-auth-login` | Sağlayıcı Plugin'leri için paylaşılan etkileşimli giriş yardımcıları |
| `plugin-sdk/provider-env-vars` | Sağlayıcı kimlik doğrulama env var arama yardımcıları |
| `plugin-sdk/provider-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile`, `upsertApiKeyProfile`, `writeOAuthCredentials` |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, paylaşılan replay-policy oluşturucuları, sağlayıcı uç nokta yardımcıları ve `normalizeNativeXaiModelId` gibi model kimliği normalleştirme yardımcıları |
| `plugin-sdk/provider-catalog-shared` | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
| `plugin-sdk/provider-http` | Genel sağlayıcı HTTP/uç nokta yetenek yardımcıları |
| `plugin-sdk/provider-web-fetch-contract` | `enablePluginInConfig` ve `WebFetchProviderPlugin` gibi dar web-fetch yapılandırma/seçim sözleşme yardımcıları |
| `plugin-sdk/provider-web-fetch` | Web-fetch sağlayıcı kayıt/önbellek yardımcıları |
| `plugin-sdk/provider-web-search-config-contract` | Plugin etkinleştirme bağlantısına ihtiyaç duymayan sağlayıcılar için dar web-search yapılandırma/kimlik bilgisi yardımcıları |
| `plugin-sdk/provider-web-search-contract` | `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` ve kapsamlı kimlik bilgisi ayarlayıcıları/getter'ları gibi dar web-search yapılandırma/kimlik bilgisi sözleşme yardımcıları |
| `plugin-sdk/provider-web-search` | Web-search sağlayıcı kayıt/önbellek/çalışma zamanı yardımcıları |
| `plugin-sdk/provider-web-fetch-contract` | `enablePluginInConfig` ve `WebFetchProviderPlugin` gibi dar web getirme yapılandırma/seçim sözleşmesi yardımcıları |
| `plugin-sdk/provider-web-fetch` | Web getirme sağlayıcısı kayıt/önbellek yardımcıları |
| `plugin-sdk/provider-web-search-config-contract` | Plugin etkinleştirme bağlantısına ihtiyaç duymayan sağlayıcılar için dar web arama yapılandırma/kimlik bilgisi yardımcıları |
| `plugin-sdk/provider-web-search-contract` | `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` ve kapsamlı kimlik bilgisi ayarlayıcıları/alıcıları gibi dar web arama yapılandırma/kimlik bilgisi sözleşmesi yardımcıları |
| `plugin-sdk/provider-web-search` | Web arama sağlayıcısı kayıt/önbellek/çalışma zamanı yardımcıları |
| `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, Gemini şema temizleme + tanılama ve `resolveXaiModelCompatPatch` / `applyXaiModelCompat` gibi xAI uyumluluk yardımcıları |
| `plugin-sdk/provider-usage` | `fetchClaudeUsage` ve benzerleri |
| `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, akış sarmalayıcı türleri ve paylaşılan Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot sarmalayıcı yardımcıları |
| `plugin-sdk/provider-transport-runtime` | Korunan fetch, taşıma mesajı dönüşümleri ve yazılabilir taşıma olay akışları gibi yerel sağlayıcı taşıma yardımcıları |
| `plugin-sdk/provider-transport-runtime` | Korumalı fetch, taşıma mesajı dönüşümleri ve yazılabilir taşıma olay akışları gibi yerel sağlayıcı taşıma yardımcıları |
| `plugin-sdk/provider-onboard` | Onboarding yapılandırma yama yardımcıları |
| `plugin-sdk/global-singleton` | Süreç-yerel singleton/map/önbellek yardımcıları |
</Accordion>
@ -161,25 +164,25 @@ Bir belge sayfasııkça birini genel olarak öne çıkarmadıkça bunları
| --- | --- |
| `plugin-sdk/command-auth` | `resolveControlCommandGate`, komut kayıt defteri yardımcıları, gönderen yetkilendirme yardımcıları |
| `plugin-sdk/command-status` | `buildCommandsMessagePaginated` ve `buildHelpMessage` gibi komut/yardım mesajı oluşturucuları |
| `plugin-sdk/approval-auth-runtime` | Onaylayan çözümleme ve aynı sohbet eylem kimlik doğrulama yardımcıları |
| `plugin-sdk/approval-auth-runtime` | Onaylayıcı çözümleme ve aynı sohbet eylem kimlik doğrulama yardımcıları |
| `plugin-sdk/approval-client-runtime` | Yerel exec onay profili/filtre yardımcıları |
| `plugin-sdk/approval-delivery-runtime` | Yerel onay yeteneği/teslimat bağdaştırıcıları |
| `plugin-sdk/approval-gateway-runtime` | Paylaşılan onay gateway çözümleme yardımcısı |
| `plugin-sdk/approval-handler-adapter-runtime` | Sıcak kanal giriş noktaları için hafif yerel onay bağdaştırıcısı yükleme yardımcıları |
| `plugin-sdk/approval-handler-runtime` | Daha geniş onay işleyici çalışma zamanı yardımcıları; dar bağdaştırıcı/gateway arayüzleri yeterliyse onları tercih edin |
| `plugin-sdk/approval-handler-runtime` | Daha geniş onay işleyicisi çalışma zamanı yardımcıları; daha dar bağdaştırıcı/gateway ayrım noktaları yeterliyse onları tercih edin |
| `plugin-sdk/approval-native-runtime` | Yerel onay hedefi + hesap bağlama yardımcıları |
| `plugin-sdk/approval-reply-runtime` | Exec/plugin onay yanıt yükü yardımcıları |
| `plugin-sdk/command-auth-native` | Yerel komut kimlik doğrulama + yerel oturum hedef yardımcısı |
| `plugin-sdk/approval-reply-runtime` | Exec/Plugin onay yanıt yükü yardımcıları |
| `plugin-sdk/command-auth-native` | Yerel komut kimlik doğrulama + yerel oturum hedefi yardımcıları |
| `plugin-sdk/command-detection` | Paylaşılan komut algılama yardımcıları |
| `plugin-sdk/command-surface` | Komut gövdesi normalleştirme ve komut yüzeyi yardımcıları |
| `plugin-sdk/allow-from` | `formatAllowFromLowercase` |
| `plugin-sdk/channel-secret-runtime` | Kanal/plugin gizli bilgi yüzeyleri için dar gizli sözleşme toplama yardımcıları |
| `plugin-sdk/channel-secret-runtime` | Kanal/Plugin gizli yüzeyleri için dar gizli sözleşme toplama yardımcıları |
| `plugin-sdk/secret-ref-runtime` | Gizli sözleşme/yapılandırma ayrıştırması için dar `coerceSecretRef` ve SecretRef türleme yardımcıları |
| `plugin-sdk/security-runtime` | Paylaşılan güven, DM geçitlemesi, harici içerik ve gizli bilgi toplama yardımcıları |
| `plugin-sdk/ssrf-policy` | Ana makine izin listesi ve özel ağ SSRF ilke yardımcıları |
| `plugin-sdk/security-runtime` | Paylaşılan güven, DM kapılama, harici içerik ve gizli toplama yardımcıları |
| `plugin-sdk/ssrf-policy` | Ana bilgisayar izin listesi ve özel ağ SSRF ilkesi yardımcıları |
| `plugin-sdk/ssrf-dispatcher` | Geniş altyapı çalışma zamanı yüzeyi olmadan dar sabitlenmiş dağıtıcı yardımcıları |
| `plugin-sdk/ssrf-runtime` | Sabitlenmiş dağıtıcı, SSRF korumalı fetch ve SSRF ilke yardımcıları |
| `plugin-sdk/secret-input` | Gizli bilgi girdisi ayrıştırma yardımcıları |
| `plugin-sdk/ssrf-runtime` | Sabitlenmiş dağıtıcı, SSRF korumalı fetch ve SSRF ilkesi yardımcıları |
| `plugin-sdk/secret-input` | Gizli girdi ayrıştırma yardımcıları |
| `plugin-sdk/webhook-ingress` | Webhook istek/hedef yardımcıları |
| `plugin-sdk/webhook-request-guards` | İstek gövdesi boyutu/zaman aşımı yardımcıları |
</Accordion>
@ -187,109 +190,109 @@ Bir belge sayfasııkça birini genel olarak öne çıkarmadıkça bunları
<Accordion title="Çalışma zamanı ve depolama alt yolları">
| Alt yol | Temel dışa aktarımlar |
| --- | --- |
| `plugin-sdk/runtime` | Geniş çalışma zamanı/günlükleme/yedekleme/plugin yükleme yardımcıları |
| `plugin-sdk/runtime-env` | Dar çalışma zamanı ortamı, günlükleyici, zaman aşımı, yeniden deneme ve backoff yardımcıları |
| `plugin-sdk/runtime` | Geniş çalışma zamanı/günlükleme/yedekleme/Plugin kurulum yardımcıları |
| `plugin-sdk/runtime-env` | Dar çalışma zamanı env, günlükleyici, zaman aşımı, retry ve backoff yardımcıları |
| `plugin-sdk/channel-runtime-context` | Genel kanal çalışma zamanı bağlamı kaydı ve arama yardımcıları |
| `plugin-sdk/runtime-store` | `createPluginRuntimeStore` |
| `plugin-sdk/plugin-runtime` | Paylaşılan plugin komutu/hook/http/etkileşimli yardımcıları |
| `plugin-sdk/hook-runtime` | Paylaşılan Webhook/dahili hook işlem hattı yardımcıları |
| `plugin-sdk/plugin-runtime` | Paylaşılan Plugin komutu/hook/http/etkileşimli yardımcılar |
| `plugin-sdk/hook-runtime` | Paylaşılan Webhook/ hook işlem hattı yardımcıları |
| `plugin-sdk/lazy-runtime` | `createLazyRuntimeModule`, `createLazyRuntimeMethod` ve `createLazyRuntimeSurface` gibi tembel çalışma zamanı içe aktarma/bağlama yardımcıları |
| `plugin-sdk/process-runtime` | Süreç exec yardımcıları |
| `plugin-sdk/cli-runtime` | CLI biçimlendirme, bekleme ve sürüm yardımcıları |
| `plugin-sdk/gateway-runtime` | Gateway istemcisi ve kanal durumu yama yardımcıları |
| `plugin-sdk/config-runtime` | Yapılandırma yükleme/yazma yardımcıları |
| `plugin-sdk/telegram-command-config` | Paketlenmiş Telegram sözleşme yüzeyi kullanılamadığında bile Telegram komut adı/açıklama normalleştirme ve kopya/çakışma denetimleri |
| `plugin-sdk/text-autolink-runtime` | Geniş text-runtime barrel dosyası olmadan dosya başvurusu otomatik bağlantı algılama |
| `plugin-sdk/approval-runtime` | Exec/plugin onay yardımcıları, onay yeteneği oluşturucuları, kimlik doğrulama/profil yardımcıları, yerel yönlendirme/çalışma zamanı yardımcıları |
| `plugin-sdk/reply-runtime` | Paylaşılan gelen/yanıt çalışma zamanı yardımcıları, parçalama, dağıtma, Heartbeat, yanıt planlayıcısı |
| `plugin-sdk/reply-dispatch-runtime` | Dar yanıt dağıtma/nihai hâle getirme yardımcıları |
| `plugin-sdk/telegram-command-config` | Paketle birlikte gelen Telegram sözleşme yüzeyi kullanılamadığında bile Telegram komut adı/açıklama normalleştirme ve yinelenen/çakışma kontrolleri |
| `plugin-sdk/text-autolink-runtime` | Geniş text-runtime barrel dosyası olmadan dosya referansı otomatik bağlantı algılama |
| `plugin-sdk/approval-runtime` | Exec/Plugin onay yardımcıları, onay yeteneği oluşturucuları, kimlik doğrulama/profil yardımcıları, yerel yönlendirme/çalışma zamanı yardımcıları |
| `plugin-sdk/reply-runtime` | Paylaşılan gelen/yanıt çalışma zamanı yardımcıları, parçalara ayırma, sevk, Heartbeat, yanıt planlayıcı |
| `plugin-sdk/reply-dispatch-runtime` | Dar yanıt sevk/sonlandırma yardımcıları |
| `plugin-sdk/reply-history` | `buildHistoryContext`, `recordPendingHistoryEntry` ve `clearHistoryEntriesIfEnabled` gibi paylaşılan kısa pencere yanıt geçmişi yardımcıları |
| `plugin-sdk/reply-reference` | `createReplyReferencePlanner` |
| `plugin-sdk/reply-chunking` | Dar metin/markdown parçalama yardımcıları |
| `plugin-sdk/reply-chunking` | Dar metin/Markdown parçalara ayırma yardımcıları |
| `plugin-sdk/session-store-runtime` | Oturum deposu yolu + updated-at yardımcıları |
| `plugin-sdk/state-paths` | State/OAuth dizin yolu yardımcıları |
| `plugin-sdk/routing` | `resolveAgentRoute`, `buildAgentSessionKey` ve `resolveDefaultAgentBoundAccountId` gibi yönlendirme/oturum anahtarı/hesap bağlama yardımcıları |
| `plugin-sdk/status-helpers` | Paylaşılan kanal/hesap durum özeti yardımcıları, çalışma zamanı durum varsayılanları ve sorun meta verisi yardımcıları |
| `plugin-sdk/state-paths` | Durum/OAuth dizin yolu yardımcıları |
| `plugin-sdk/routing` | `resolveAgentRoute`, `buildAgentSessionKey` ve `resolveDefaultAgentBoundAccountId` gibi rota/oturum anahtarı/hesap bağlama yardımcıları |
| `plugin-sdk/status-helpers` | Paylaşılan kanal/hesap durum özeti yardımcıları, çalışma zamanı durumu varsayılanları ve issue meta verisi yardımcıları |
| `plugin-sdk/target-resolver-runtime` | Paylaşılan hedef çözümleyici yardımcıları |
| `plugin-sdk/string-normalization-runtime` | Slug/dize normalleştirme yardımcıları |
| `plugin-sdk/request-url` | Fetch/istek benzeri girdilerden dize URL'leri ayıklama |
| `plugin-sdk/run-command` | Normalize edilmiş stdout/stderr sonuçlarıyla zamanlamalı komut çalıştırıcısı |
| `plugin-sdk/request-url` | Fetch/istek benzeri girdilerden dize URL'leri çıkarma |
| `plugin-sdk/run-command` | Normalleştirilmiş stdout/stderr sonuçlarıyla zamanlamalı komut çalıştırıcısı |
| `plugin-sdk/param-readers` | Yaygın araç/CLI parametre okuyucuları |
| `plugin-sdk/tool-payload` | Araç sonuç nesnelerinden normalize yükleri ayıklama |
| `plugin-sdk/tool-send` | Araç bağımsız değişkenlerinden kanonik gönderim hedef alanlarını ayıklama |
| `plugin-sdk/tool-payload` | Araç sonuç nesnelerinden normalleştirilmiş yükleri çıkarma |
| `plugin-sdk/tool-send` | Araç argümanlarından kanonik gönderim hedefi alanlarını çıkarma |
| `plugin-sdk/temp-path` | Paylaşılan geçici indirme yolu yardımcıları |
| `plugin-sdk/logging-core` | Alt sistem günlükleyicisi ve kırpma yardımcıları |
| `plugin-sdk/logging-core` | Alt sistem günlükleyicisi ve redaksiyon yardımcıları |
| `plugin-sdk/markdown-table-runtime` | Markdown tablo modu yardımcıları |
| `plugin-sdk/json-store` | Küçük JSON durumu okuma/yazma yardımcıları |
| `plugin-sdk/json-store` | Küçük JSON durum okuma/yazma yardımcıları |
| `plugin-sdk/file-lock` | Yeniden girişli dosya kilidi yardımcıları |
| `plugin-sdk/persistent-dedupe` | Disk destekli dedupe önbellek yardımcıları |
| `plugin-sdk/acp-runtime` | ACP çalışma zamanı/oturumu ve yanıt dağıtma yardımcıları |
| `plugin-sdk/acp-binding-resolve-runtime` | Yaşam döngüsü başlangıç içe aktarımları olmadan salt okunur ACP bağlama çözümleme |
| `plugin-sdk/agent-config-primitives` | Dar aracı çalışma zamanı yapılandırma şeması ilkel öğeleri |
| `plugin-sdk/persistent-dedupe` | Disk destekli yinelenenleri ayıklama önbellek yardımcıları |
| `plugin-sdk/acp-runtime` | ACP çalışma zamanı/oturum ve yanıt sevk yardımcıları |
| `plugin-sdk/acp-binding-resolve-runtime` | Yaşam döngüsü başlatma içe aktarmaları olmadan salt okunur ACP bağlama çözümleme |
| `plugin-sdk/agent-config-primitives` | Dar ajan çalışma zamanı yapılandırma şeması ilkel türleri |
| `plugin-sdk/boolean-param` | Gevşek boolean parametre okuyucusu |
| `plugin-sdk/dangerous-name-runtime` | Tehlikeli ad eşleme çözümleme yardımcıları |
| `plugin-sdk/dangerous-name-runtime` | Tehlikeli ad eşleştirme çözümleme yardımcıları |
| `plugin-sdk/device-bootstrap` | Cihaz bootstrap ve eşleme belirteci yardımcıları |
| `plugin-sdk/extension-shared` | Paylaşılan pasif kanal, durum ve ambient proxy yardımcı ilkel öğeleri |
| `plugin-sdk/extension-shared` | Paylaşılan pasif kanal, durum ve ortam proxy yardımcı ilkel türleri |
| `plugin-sdk/models-provider-runtime` | `/models` komutu/sağlayıcı yanıt yardımcıları |
| `plugin-sdk/skill-commands-runtime` | Skills komut listeleme yardımcıları |
| `plugin-sdk/native-command-registry` | Yerel komut kayıt defteri/oluşturma/serileştirme yardımcıları |
| `plugin-sdk/agent-harness` | Düşük düzey aracı harness'leri için deneysel güvenilir plugin yüzeyi: harness türleri, etkin çalıştırma yönlendirme/abort yardımcıları, OpenClaw araç köprüsü yardımcıları ve deneme sonucu yardımcıları |
| `plugin-sdk/provider-zai-endpoint` | Z.A.I uç nokta algılama yardımcıları |
| `plugin-sdk/agent-harness` | Düşük seviye ajan harness'leri için deneysel güvenilir Plugin yüzeyi: harness türleri, etkin çalıştırma yönlendirme/durdurma yardımcıları, OpenClaw araç köprüsü yardımcıları ve deneme sonucu yardımcı araçları |
| `plugin-sdk/provider-zai-endpoint` | Z.AI uç nokta algılama yardımcıları |
| `plugin-sdk/infra-runtime` | Sistem olayı/Heartbeat yardımcıları |
| `plugin-sdk/collection-runtime` | Küçük sınırlı önbellek yardımcıları |
| `plugin-sdk/diagnostic-runtime` | Tanılama bayrağı ve olay yardımcıları |
| `plugin-sdk/error-runtime` | Hata grafiği, biçimlendirme, paylaşılan hata sınıflandırma yardımcıları, `isApprovalNotFoundError` |
| `plugin-sdk/fetch-runtime` | Sarılmış fetch, proxy ve sabitlenmiş arama yardımcıları |
| `plugin-sdk/runtime-fetch` | Proxy/korumalı-fetch içe aktarımları olmadan dağıtıcı farkındalıklı çalışma zamanı fetch |
| `plugin-sdk/runtime-fetch` | Proxy/korumalı fetch içe aktarmaları olmadan dağıtıcı farkındalıklı çalışma zamanı fetch'i |
| `plugin-sdk/response-limit-runtime` | Geniş medya çalışma zamanı yüzeyi olmadan sınırlı yanıt gövdesi okuyucusu |
| `plugin-sdk/session-binding-runtime` | Yapılandırılmış bağlama yönlendirmesi veya eşleme depoları olmadan mevcut konuşma bağlama durumu |
| `plugin-sdk/session-store-runtime` | Geniş yapılandırma yazma/bakım içe aktarımları olmadan oturum deposu okuma yardımcıları |
| `plugin-sdk/context-visibility-runtime` | Geniş yapılandırma/güvenlik içe aktarımları olmadan bağlam görünürlüğü çözümleme ve ek bağlam filtreleme |
| `plugin-sdk/string-coerce-runtime` | Markdown/günlükleme içe aktarımları olmadan dar ilkel kayıt/dize zorlama ve normalleştirme yardımcıları |
| `plugin-sdk/host-runtime` | Ana makine adı ve SCP ana makine normalleştirme yardımcıları |
| `plugin-sdk/retry-runtime` | Yeniden deneme yapılandırması ve yeniden deneme çalıştırıcı yardımcıları |
| `plugin-sdk/agent-runtime` | Aracı dizini/kimlik/çalışma alanı yardımcıları |
| `plugin-sdk/directory-runtime` | Yapılandırma destekli dizin sorgulama/dedupe |
| `plugin-sdk/session-store-runtime` | Geniş yapılandırma yazma/bakım içe aktarmaları olmadan oturum deposu okuma yardımcıları |
| `plugin-sdk/context-visibility-runtime` | Geniş yapılandırma/güvenlik içe aktarmaları olmadan bağlam görünürlüğü çözümleme ve ek bağlam filtreleme |
| `plugin-sdk/string-coerce-runtime` | Markdown/günlükleme içe aktarmaları olmadan dar ilkel kayıt/dize dönüştürme ve normalleştirme yardımcıları |
| `plugin-sdk/host-runtime` | Ana bilgisayar adı ve SCP ana bilgisayar normalleştirme yardımcıları |
| `plugin-sdk/retry-runtime` | Retry yapılandırması ve retry çalıştırıcısı yardımcıları |
| `plugin-sdk/agent-runtime` | Ajan dizini/kimliği/çalışma alanı yardımcıları |
| `plugin-sdk/directory-runtime` | Yapılandırma destekli dizin sorgulama/yinelenenleri ayıklama |
| `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` |
</Accordion>
<Accordion title="Yetenek ve test alt yolları">
| Alt yol | Temel dışa aktarımlar |
| --- | --- |
| `plugin-sdk/media-runtime` | Medya yükü oluşturucularına ek olarak paylaşılan medya fetch/dönüştürme/depolama yardımcıları |
| `plugin-sdk/media-generation-runtime` | Paylaşılan medya oluşturma geri dönüş yardımcıları, aday seçimi ve eksik model mesajlaşması |
| `plugin-sdk/media-runtime` | Paylaşılan medya fetch/dönüştürme/depolama yardımcıları ile medya yükü oluşturucuları |
| `plugin-sdk/media-generation-runtime` | Paylaşılan medya oluşturma failover yardımcıları, aday seçimi ve eksik model mesajlaşması |
| `plugin-sdk/media-understanding` | Medya anlama sağlayıcı türleri ile sağlayıcıya dönük görsel/ses yardımcı dışa aktarımları |
| `plugin-sdk/text-runtime` | Aracı tarafından görülebilen metin temizleme, markdown oluşturma/parçalama/tablo yardımcıları, kırpma yardımcıları, yönerge etiketi yardımcıları ve güvenli metin yardımcıları gibi paylaşılan metin/markdown/günlükleme yardımcıları |
| `plugin-sdk/text-chunking` | Giden metin parçalama yardımcısı |
| `plugin-sdk/speech` | Konuşma sağlayıcı türleri ile sağlayıcıya dönük yönerge, kayıt defteri ve doğrulama yardımcıları |
| `plugin-sdk/speech-core` | Paylaşılan konuşma sağlayıcı türleri, kayıt defteri, yönerge ve normalleştirme yardımcıları |
| `plugin-sdk/text-runtime` | Asistan tarafından görülebilen metin temizleme, Markdown işleme/parçalara ayırma/tablo yardımcıları, redaksiyon yardımcıları, directive-tag yardımcıları ve güvenli metin yardımcıları gibi paylaşılan metin/Markdown/günlükleme yardımcıları |
| `plugin-sdk/text-chunking` | Giden metin parçalara ayırma yardımcısı |
| `plugin-sdk/speech` | Konuşma sağlayıcı türleri ile sağlayıcıya dönük directive, kayıt defteri ve doğrulama yardımcıları |
| `plugin-sdk/speech-core` | Paylaşılan konuşma sağlayıcı türleri, kayıt defteri, directive ve normalleştirme yardımcıları |
| `plugin-sdk/realtime-transcription` | Gerçek zamanlı transkripsiyon sağlayıcı türleri ve kayıt defteri yardımcıları |
| `plugin-sdk/realtime-voice` | Gerçek zamanlı ses sağlayıcı türleri ve kayıt defteri yardımcıları |
| `plugin-sdk/image-generation` | Görsel oluşturma sağlayıcı türleri |
| `plugin-sdk/image-generation-core` | Paylaşılan görsel oluşturma türleri, geri dönüş, kimlik doğrulama ve kayıt defteri yardımcıları |
| `plugin-sdk/image-generation-core` | Paylaşılan görsel oluşturma türleri, failover, kimlik doğrulama ve kayıt defteri yardımcıları |
| `plugin-sdk/music-generation` | Müzik oluşturma sağlayıcı/istek/sonuç türleri |
| `plugin-sdk/music-generation-core` | Paylaşılan müzik oluşturma türleri, geri dönüş yardımcıları, sağlayıcı arama ve model-ref ayrıştırma |
| `plugin-sdk/music-generation-core` | Paylaşılan müzik oluşturma türleri, failover yardımcıları, sağlayıcı arama ve model-ref ayrıştırma |
| `plugin-sdk/video-generation` | Video oluşturma sağlayıcı/istek/sonuç türleri |
| `plugin-sdk/video-generation-core` | Paylaşılan video oluşturma türleri, geri dönüş yardımcıları, sağlayıcı arama ve model-ref ayrıştırma |
| `plugin-sdk/webhook-targets` | Webhook hedef kayıt defteri ve rota yükleme yardımcıları |
| `plugin-sdk/video-generation-core` | Paylaşılan video oluşturma türleri, failover yardımcıları, sağlayıcı arama ve model-ref ayrıştırma |
| `plugin-sdk/webhook-targets` | Webhook hedef kayıt defteri ve rota kurulum yardımcıları |
| `plugin-sdk/webhook-path` | Webhook yol normalleştirme yardımcıları |
| `plugin-sdk/web-media` | Paylaşılan uzak/yerel medya yükleme yardımcıları |
| `plugin-sdk/zod` | Plugin SDK kullanıcıları için yeniden dışa aktarılan `zod` |
| `plugin-sdk/web-media` | Paylaşılan uzak/local medya yükleme yardımcıları |
| `plugin-sdk/zod` | Plugin SDK tüketicileri için yeniden dışa aktarılan `zod` |
| `plugin-sdk/testing` | `installCommonResolveTargetErrorCases`, `shouldAckReaction` |
</Accordion>
<Accordion title="Memory alt yolları">
| Alt yol | Temel dışa aktarımlar |
| --- | --- |
| `plugin-sdk/memory-core` | Yönetici/yapılandırma/dosya/CLI yardımcıları için paketlenmiş memory-core yardımcı yüzeyi |
| `plugin-sdk/memory-core-engine-runtime` | Memory dizin/arama çalışma zamanı cephesi |
| `plugin-sdk/memory-core` | Manager/config/file/CLI yardımcıları için paketle birlikte gelen memory-core yardımcı yüzeyi |
| `plugin-sdk/memory-core-engine-runtime` | Memory dizini/arama çalışma zamanı yüzeyi |
| `plugin-sdk/memory-core-host-engine-foundation` | Memory host foundation engine dışa aktarımları |
| `plugin-sdk/memory-core-host-engine-embeddings` | Memory host embedding sözleşmeleri, kayıt defteri erişimi, yerel sağlayıcı ve genel toplu/uzak yardımcılar |
| `plugin-sdk/memory-core-host-engine-embeddings` | Memory host embedding sözleşmeleri, kayıt defteri erişimi, local sağlayıcı ve genel batch/uzak yardımcıları |
| `plugin-sdk/memory-core-host-engine-qmd` | Memory host QMD engine dışa aktarımları |
| `plugin-sdk/memory-core-host-engine-storage` | Memory host storage engine dışa aktarımları |
| `plugin-sdk/memory-core-host-multimodal` | Memory host multimodal yardımcıları |
| `plugin-sdk/memory-core-host-query` | Memory host sorgu yardımcıları |
| `plugin-sdk/memory-core-host-secret` | Memory host gizli bilgi yardımcıları |
| `plugin-sdk/memory-core-host-secret` | Memory host gizli yardımcıları |
| `plugin-sdk/memory-core-host-events` | Memory host olay günlüğü yardımcıları |
| `plugin-sdk/memory-core-host-status` | Memory host durum yardımcıları |
| `plugin-sdk/memory-core-host-runtime-cli` | Memory host CLI çalışma zamanı yardımcıları |
@ -298,82 +301,93 @@ Bir belge sayfasııkça birini genel olarak öne çıkarmadıkça bunları
| `plugin-sdk/memory-host-core` | Memory host çekirdek çalışma zamanı yardımcıları için sağlayıcıdan bağımsız takma ad |
| `plugin-sdk/memory-host-events` | Memory host olay günlüğü yardımcıları için sağlayıcıdan bağımsız takma ad |
| `plugin-sdk/memory-host-files` | Memory host dosya/çalışma zamanı yardımcıları için sağlayıcıdan bağımsız takma ad |
| `plugin-sdk/memory-host-markdown` | Memory'ye komşu plugin'ler için paylaşılan yönetilen-markdown yardımcıları |
| `plugin-sdk/memory-host-search` | Arama yöneticisi erişimi için Active Memory çalışma zamanı cephesi |
| `plugin-sdk/memory-host-markdown` | Memory'ye komşu Plugin'ler için paylaşılan yönetilen Markdown yardımcıları |
| `plugin-sdk/memory-host-search` | Arama yöneticisi erişimi için Active Memory çalışma zamanı yüzeyi |
| `plugin-sdk/memory-host-status` | Memory host durum yardımcıları için sağlayıcıdan bağımsız takma ad |
| `plugin-sdk/memory-lancedb` | Paketlenmiş memory-lancedb yardımcı yüzeyi |
| `plugin-sdk/memory-lancedb` | Paketle birlikte gelen memory-lancedb yardımcı yüzeyi |
</Accordion>
<Accordion title="Ayrılmış paketlenmiş yardımcı alt yolları">
<Accordion title="Ayrılmış paketle birlikte gelen yardımcı alt yollar">
| Aile | Geçerli alt yollar | Amaçlanan kullanım |
| --- | --- | --- |
| Tarayıcı | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Paketlenmiş tarayıcı plugin desteği yardımcıları (`browser-support` uyumluluk barrel dosyası olarak kalır) |
| Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Paketlenmiş Matrix yardımcı/çalışma zamanı yüzeyi |
| Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Paketlenmiş LINE yardımcı/çalışma zamanı yüzeyi |
| IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Paketlenmiş IRC yardımcı yüzeyi |
| Kanala özgü yardımcılar | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Paketlenmiş kanal uyumluluk/yardımcı arayüzleri |
| Kimlik doğrulama/plugin'e özgü yardımcılar | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Paketlenmiş özellik/plugin yardımcı arayüzleri; `plugin-sdk/github-copilot-token` şu anda `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` ve `resolveCopilotApiToken` dışa aktarır |
| Tarayıcı | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Paketle birlikte gelen tarayıcı Plugin destek yardımcıları (`browser-support` uyumluluk barrel dosyası olarak kalır) |
| Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Paketle birlikte gelen Matrix yardımcı/çalışma zamanı yüzeyi |
| Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Paketle birlikte gelen LINE yardımcı/çalışma zamanı yüzeyi |
| IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Paketle birlikte gelen IRC yardımcı yüzeyi |
| Kanala özgü yardımcılar | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Paketle birlikte gelen kanal uyumluluk/yardımcı ayrım noktaları |
| Kimlik doğrulama/Plugin'e özgü yardımcılar | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Paketle birlikte gelen özellik/Plugin yardımcı ayrım noktaları; `plugin-sdk/github-copilot-token` şu anda `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` ve `resolveCopilotApiToken` dışa aktarır |
</Accordion>
</AccordionGroup>
## Kayıt API'si
`register(api)` geri çağrısı, şu yöntemlere sahip bir `OpenClawPluginApi` nesnesi alır:
`register(api)` callback'i, şu
yöntemlere sahip bir `OpenClawPluginApi` nesnesi alır:
### Yetenek kaydı
| Yöntem | Kaydettiği şey |
| ------------------------------------------------ | ------------------------------------ |
| `api.registerProvider(...)` | Metin çıkarımı (LLM) |
| `api.registerAgentHarness(...)` | Deneysel düşük düzey aracı yürütücüsü |
| `api.registerCliBackend(...)` | Yerel CLI çıkarım arka ucu |
| `api.registerChannel(...)` | Mesajlaşma kanalı |
| `api.registerSpeechProvider(...)` | Metinden konuşmaya / STT sentezi |
| `api.registerRealtimeTranscriptionProvider(...)` | Akış gerçek zamanlı transkripsiyon |
| Yöntem | Ne kaydeder |
| ------------------------------------------------ | ------------------------------------- |
| `api.registerProvider(...)` | Metin çıkarımı (LLM) |
| `api.registerAgentHarness(...)` | Deneysel düşük seviye ajan yürütücüsü |
| `api.registerCliBackend(...)` | local CLI çıkarım arka ucu |
| `api.registerChannel(...)` | Mesajlaşma kanalı |
| `api.registerSpeechProvider(...)` | Metinden konuşmaya / STT sentezi |
| `api.registerRealtimeTranscriptionProvider(...)` | Akış tabanlı gerçek zamanlı transkripsiyon |
| `api.registerRealtimeVoiceProvider(...)` | Çift yönlü gerçek zamanlı ses oturumları |
| `api.registerMediaUnderstandingProvider(...)` | Görsel/ses/video analizi |
| `api.registerImageGenerationProvider(...)` | Görsel oluşturma |
| `api.registerMusicGenerationProvider(...)` | Müzik oluşturma |
| `api.registerVideoGenerationProvider(...)` | Video oluşturma |
| `api.registerWebFetchProvider(...)` | Web getirme / kazıma sağlayıcısı |
| `api.registerWebSearchProvider(...)` | Web arama |
| `api.registerMediaUnderstandingProvider(...)` | Görsel/ses/video analizi |
| `api.registerImageGenerationProvider(...)` | Görsel oluşturma |
| `api.registerMusicGenerationProvider(...)` | Müzik oluşturma |
| `api.registerVideoGenerationProvider(...)` | Video oluşturma |
| `api.registerWebFetchProvider(...)` | Web getirme / scrape sağlayıcısı |
| `api.registerWebSearchProvider(...)` | Web arama |
### Araçlar ve komutlar
| Yöntem | Kaydettiği şey |
| ------------------------------- | ---------------------------------------------- |
| `api.registerTool(tool, opts?)` | Aracı aracı (zorunlu veya `{ optional: true }`) |
| `api.registerCommand(def)` | Özel komut (LLM'yi atlar) |
| Yöntem | Ne kaydeder |
| ------------------------------- | -------------------------------------------- |
| `api.registerTool(tool, opts?)` | Ajan aracı (zorunlu veya `{ optional: true }`) |
| `api.registerCommand(def)` | Özel komut (LLM'yi atlar) |
### Altyapı
| Yöntem | Kaydettiği şey |
| ---------------------------------------------- | --------------------------------------- |
| `api.registerHook(events, handler, opts?)` | Olay hook'u |
| `api.registerHttpRoute(params)` | Gateway HTTP uç noktası |
| `api.registerGatewayMethod(name, handler)` | Gateway RPC yöntemi |
| `api.registerCli(registrar, opts?)` | CLI alt komutu |
| `api.registerService(service)` | Arka plan hizmeti |
| `api.registerInteractiveHandler(registration)` | Etkileşimli işleyici |
| `api.registerMemoryPromptSupplement(builder)` | Eklemeli memory-komşu istem bölümü |
| `api.registerMemoryCorpusSupplement(adapter)` | Eklemeli memory arama/okuma korpusu |
| Yöntem | Ne kaydeder |
| ----------------------------------------------- | ------------------------------------- |
| `api.registerHook(events, handler, opts?)` | Olay hook'u |
| `api.registerHttpRoute(params)` | Gateway HTTP uç noktası |
| `api.registerGatewayMethod(name, handler)` | Gateway RPC yöntemi |
| `api.registerCli(registrar, opts?)` | CLI alt komutu |
| `api.registerService(service)` | Arka plan hizmeti |
| `api.registerInteractiveHandler(registration)` | Etkileşimli işleyici |
| `api.registerEmbeddedExtensionFactory(factory)` | Pi embedded-runner uzantı fabrikası |
| `api.registerMemoryPromptSupplement(builder)` | Eklemeli Memory'ye komşu prompt bölümü |
| `api.registerMemoryCorpusSupplement(adapter)` | Eklemeli Memory arama/okuma corpus'u |
Ayrılmış çekirdek yönetici ad alanları (`config.*`, `exec.approvals.*`, `wizard.*`,
`update.*`), bir plugin daha dar bir gateway yöntem kapsamı atamaya çalışsa bile,
`update.*`), bir Plugin daha dar bir gateway yöntemi kapsamı atamaya çalışsa bile
her zaman `operator.admin` olarak kalır. Plugin'e ait yöntemler için
plugin'e özgü önekleri tercih edin.
Plugin'e özgü ön ekleri tercih edin.
### CLI kayıt meta verileri
Bir Plugin OpenClaw gömülü çalıştırmalarında Pi-yerel
olay zamanlamasına ihtiyaç duyuyorsa `api.registerEmbeddedExtensionFactory(...)` kullanın; örneğin,
son araç-sonucu mesajı gönderilmeden önce gerçekleşmesi gereken async `tool_result`
yeniden yazımları gibi.
Bu, bugün paketle birlikte gelen Plugin ayrım noktasıdır: yalnızca paketle birlikte gelen Plugin'ler bir tane kaydedebilir ve
`openclaw.plugin.json` içinde `contracts.embeddedExtensionFactories: ["pi"]`
bildirmelidir.
Bu daha düşük seviye ayrım noktasını gerektirmeyen her şey için normal OpenClaw Plugin hook'larını koruyun.
`api.registerCli(registrar, opts?)`, iki tür üst düzey meta veriyi kabul eder:
### CLI kayıt meta verisi
`api.registerCli(registrar, opts?)` iki tür üst seviye meta veri kabul eder:
- `commands`: registrar'ın sahip olduğu açık komut kökleri
- `descriptors`: kök CLI yardımı,
yönlendirme ve tembel plugin CLI kaydı için ayrıştırma zamanı komut tanımlayıcıları
- `descriptors`: kök CLI yardımı, yönlendirme ve tembel Plugin CLI kaydı için
ayrıştırma zamanında kullanılan komut tanımlayıcıları
Bir plugin komutunun normal kök CLI yolunda tembel yüklenmesini istiyorsanız,
o registrar tarafından açığa çıkarılan her üst düzey komut kökünü kapsayan `descriptors`
sağlayın.
Bir Plugin komutunun normal kök CLI yolunda tembel yüklenmiş kalmasını
istiyorsanız, o registrar'ın açığa çıkardığı her üst seviye komut kökünü kapsayan
`descriptors` sağlayın.
```typescript
api.registerCli(
@ -385,7 +399,7 @@ api.registerCli(
descriptors: [
{
name: "matrix",
description: "Matrix hesaplarını, doğrulamayı, cihazları ve profil durumunu yönet",
description: "Manage Matrix accounts, verification, devices, and profile state",
hasSubcommands: true,
},
],
@ -393,134 +407,135 @@ api.registerCli(
);
```
Yalnızca tembel kök CLI kaydına ihtiyacınız yoksa `commands` alanını tek başına kullanın.
Bu hevesli uyumluluk yolu desteklenmeye devam eder, ancak ayrıştırma zamanı tembel yükleme için
tanımlayıcı destekli yer tutucular yüklemez.
Yalnızca `commands` kullanın; ama sadece tembel kök CLI kaydına ihtiyacınız
yoksa. Bu eager uyumluluk yolu desteklenmeye devam eder, ancak ayrıştırma zamanında
tembel yükleme için descriptor destekli yer tutucular kurmaz.
### CLI arka uç kaydı
`api.registerCliBackend(...)`, bir plugin'in `codex-cli` gibi yerel bir
AI CLI arka ucu için varsayılan yapılandırmaya sahip olmasına izin verir.
`api.registerCliBackend(...)`, bir Plugin'in `codex-cli` gibi local
bir AI CLI arka ucu için varsayılan yapılandırmaya sahip olmasını sağlar.
- Arka uç `id` değeri, `codex-cli/gpt-5` gibi model başvurularında sağlayıcı öneki olur.
- Arka uç `config`, `agents.defaults.cliBackends.<id>` ile aynı şekli kullanır.
- Kullanıcı yapılandırması yine kazanır. OpenClaw, CLI'yi çalıştırmadan önce
plugin varsayılanı üzerine `agents.defaults.cliBackends.<id>` değerini birleştirir.
- Bir arka uç birleştirmeden sonra uyumluluk yeniden yazımları gerektiriyorsa
(örneğin eski bayrak biçimlerini normalleştirmek gibi) `normalizeConfig` kullanın.
- Arka uç `id`, `codex-cli/gpt-5` gibi model ref'lerinde sağlayıcı ön eki olur.
- Arka uç `config`, `agents.defaults.cliBackends.<id>` ile aynı biçimi kullanır.
- Kullanıcı yapılandırması yine önceliklidir. OpenClaw, CLI'yi çalıştırmadan önce
`agents.defaults.cliBackends.<id>` değerini Plugin varsayılanı üzerine birleştirir.
- Bir arka uç birleştirme sonrası uyumluluk yeniden yazımlarına ihtiyaç duyuyorsa
(örneğin eski bayrak biçimlerini normalleştirmek), `normalizeConfig` kullanın.
### Özel yuvalar
### Ayrıcalıklı yuvalar
| Yöntem | Kaydettiği şey |
| Yöntem | Ne kaydeder |
| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `api.registerContextEngine(id, factory)` | Bağlam motoru (aynı anda bir etkin). `assemble()` geri çağrısı `availableTools` ve `citationsMode` alır; böylece motor istem eklerini buna göre uyarlayabilir. |
| `api.registerMemoryCapability(capability)` | Birleşik memory yeteneği |
| `api.registerMemoryPromptSection(builder)` | Memory istem bölümü oluşturucusu |
| `api.registerMemoryFlushPlan(resolver)` | Memory boşaltma planı çözümleyicisi |
| `api.registerMemoryRuntime(runtime)` | Memory çalışma zamanı bağdaştırıcısı |
| `api.registerContextEngine(id, factory)` | Bağlam motoru (aynı anda bir tane etkin). `assemble()` callback'i, motorun prompt eklemelerini uyarlayabilmesi için `availableTools` ve `citationsMode` alır. |
| `api.registerMemoryCapability(capability)` | Birleşik Memory yeteneği |
| `api.registerMemoryPromptSection(builder)` | Memory prompt bölümü oluşturucusu |
| `api.registerMemoryFlushPlan(resolver)` | Memory flush plan çözümleyicisi |
| `api.registerMemoryRuntime(runtime)` | Memory çalışma zamanı bağdaştırıcısı |
### Memory embedding bağdaştırıcıları
| Yöntem | Kaydettiği şey |
| ---------------------------------------------- | -------------------------------------------- |
| `api.registerMemoryEmbeddingProvider(adapter)` | Etkin plugin için Memory embedding bağdaştırıcısı |
| Yöntem | Ne kaydeder |
| ---------------------------------------------- | ------------------------------------------------ |
| `api.registerMemoryEmbeddingProvider(adapter)` | Etkin Plugin için Memory embedding bağdaştırıcısı |
- `registerMemoryCapability`, tercih edilen özel memory-plugin API'sidir.
- `registerMemoryCapability`, eşlik eden plugin'lerin dışa aktarılan memory çıktılarını
belirli bir memory plugin'in özel düzenine uzanmak yerine
- `registerMemoryCapability`, tercih edilen ayrıcalıklı memory-Plugin API'sidir.
- `registerMemoryCapability`, eşlik eden Plugin'lerin dışa aktarılan Memory artefaktlarını
belirli bir Memory Plugin'inin özel düzenine erişmek yerine
`openclaw/plugin-sdk/memory-host-core` üzerinden tüketebilmesi için
`publicArtifacts.listArtifacts(...)` de gösterebilir.
`publicArtifacts.listArtifacts(...)` da açığa çıkarabilir.
- `registerMemoryPromptSection`, `registerMemoryFlushPlan` ve
`registerMemoryRuntime`, eski uyumlu özel memory-plugin API'leridir.
- `registerMemoryEmbeddingProvider`, etkin memory plugin'in bir
veya daha fazla embedding bağdaştırıcı kimliği (örneğin `openai`, `gemini` veya özel
bir plugin tanımlı kimlik) kaydetmesine izin verir.
`registerMemoryRuntime`, eski uyumluluğu koruyan ayrıcalıklı memory-Plugin API'leridir.
- `registerMemoryEmbeddingProvider`, etkin Memory Plugin'inin bir
veya daha fazla embedding bağdaştırıcı kimliği (örneğin `openai`, `gemini`
veya Plugin tarafından tanımlanan özel bir kimlik) kaydetmesini sağlar.
- `agents.defaults.memorySearch.provider` ve
`agents.defaults.memorySearch.fallback` gibi kullanıcı yapılandırmaları, kayıtlı bu
bağdaştırıcı kimliklerine göre çözülür.
`agents.defaults.memorySearch.fallback` gibi kullanıcı yapılandırmaları,
kaydedilmiş bu bağdaştırıcı kimliklerine göre çözülür.
### Olaylar ve yaşam döngüsü
| Yöntem | Yaptığı şey |
| -------------------------------------------- | --------------------------- |
| `api.on(hookName, handler, opts?)` | Türlenmiş yaşam döngüsü hook'u |
| `api.onConversationBindingResolved(handler)` | Konuşma bağlama geri çağrısı |
| Yöntem | Ne yapar |
| ------------------------------------------- | ---------------------------- |
| `api.on(hookName, handler, opts?)` | Türlendirilmiş yaşam döngüsü hook'u |
| `api.onConversationBindingResolved(handler)` | Konuşma bağlama callback'i |
### Hook karar anlambilimi
### Hook karar semantiği
- `before_tool_call`: `{ block: true }` döndürmek terminaldir. Herhangi bir işleyici bunu ayarladığında daha düşük öncelikli işleyiciler atlanır.
- `before_tool_call`: `{ block: false }` döndürmek karar verilmemiş sayılır (`block` alanını hiç vermemekle aynıdır), geçersiz kılma değildir.
- `before_install`: `{ block: true }` döndürmek terminaldir. Herhangi bir işleyici bunu ayarladığında daha düşük öncelikli işleyiciler atlanır.
- `before_install`: `{ block: false }` döndürmek karar verilmemiş sayılır (`block` alanını hiç vermemekle aynıdır), geçersiz kılma değildir.
- `reply_dispatch`: `{ handled: true, ... }` döndürmek terminaldir. Herhangi bir işleyici gönderimi üstlendiğinde daha düşük öncelikli işleyiciler ve varsayılan model gönderim yolu atlanır.
- `message_sending`: `{ cancel: true }` döndürmek terminaldir. Herhangi bir işleyici bunu ayarladığında daha düşük öncelikli işleyiciler atlanır.
- `message_sending`: `{ cancel: false }` döndürmek karar verilmemiş sayılır (`cancel` alanını hiç vermemekle aynıdır), geçersiz kılma değildir.
- `before_tool_call`: `{ block: true }` döndürmek terminaldir. Herhangi bir işleyici bunu ayarladığında, daha düşük öncelikli işleyiciler atlanır.
- `before_tool_call`: `{ block: false }` döndürmek, geçersiz kılma olarak değil, karar verilmemiş olarak değerlendirilir (`block` alanını hiç vermemekle aynıdır).
- `before_install`: `{ block: true }` döndürmek terminaldir. Herhangi bir işleyici bunu ayarladığında, daha düşük öncelikli işleyiciler atlanır.
- `before_install`: `{ block: false }` döndürmek, geçersiz kılma olarak değil, karar verilmemiş olarak değerlendirilir (`block` alanını hiç vermemekle aynıdır).
- `reply_dispatch`: `{ handled: true, ... }` döndürmek terminaldir. Herhangi bir işleyici sevki üstlendiğinde, daha düşük öncelikli işleyiciler ve varsayılan model sevk yolu atlanır.
- `message_sending`: `{ cancel: true }` döndürmek terminaldir. Herhangi bir işleyici bunu ayarladığında, daha düşük öncelikli işleyiciler atlanır.
- `message_sending`: `{ cancel: false }` döndürmek, geçersiz kılma olarak değil, karar verilmemiş olarak değerlendirilir (`cancel` alanını hiç vermemekle aynıdır).
### API nesnesi alanları
| Alan | Tür | Açıklama |
| ------------------------ | ------------------------- | -------------------------------------------------------------------------------------------- |
| `api.id` | `string` | Plugin kimliği |
| `api.name` | `string` | Görünen ad |
| `api.version` | `string?` | Plugin sürümü (isteğe bağlı) |
| `api.description` | `string?` | Plugin açıklaması (isteğe bağlı) |
| `api.source` | `string` | Plugin kaynak yolu |
| `api.rootDir` | `string?` | Plugin kök dizini (isteğe bağlı) |
| `api.config` | `OpenClawConfig` | Geçerli yapılandırma anlık görüntüsü (varsa etkin bellek içi çalışma zamanı anlık görüntüsü) |
| `api.pluginConfig` | `Record<string, unknown>` | `plugins.entries.<id>.config` içindeki plugin'e özgü yapılandırma |
| `api.runtime` | `PluginRuntime` | [Runtime yardımcıları](/tr/plugins/sdk-runtime) |
| `api.logger` | `PluginLogger` | Kapsamlı günlükleyici (`debug`, `info`, `warn`, `error`) |
| `api.registrationMode` | `PluginRegistrationMode` | Geçerli yükleme modu; `"setup-runtime"` tam giriş öncesi hafif başlangıç/kurulum penceresidir |
| `api.resolvePath(input)` | `(string) => string` | Yolu plugin köküne göre çözümle |
| Alan | Tür | Açıklama |
| ----------------------- | ------------------------- | ------------------------------------------------------------------------------------------- |
| `api.id` | `string` | Plugin kimliği |
| `api.name` | `string` | Görünen ad |
| `api.version` | `string?` | Plugin sürümü (isteğe bağlı) |
| `api.description` | `string?` | Plugin açıklaması (isteğe bağlı) |
| `api.source` | `string` | Plugin kaynak yolu |
| `api.rootDir` | `string?` | Plugin kök dizini (isteğe bağlı) |
| `api.config` | `OpenClawConfig` | Geçerli yapılandırma anlık görüntüsü (varsa etkin bellek içi çalışma zamanı anlık görüntüsü) |
| `api.pluginConfig` | `Record<string, unknown>` | `plugins.entries.<id>.config` içinden Plugin'e özgü yapılandırma |
| `api.runtime` | `PluginRuntime` | [Çalışma zamanı yardımcıları](/tr/plugins/sdk-runtime) |
| `api.logger` | `PluginLogger` | Kapsamlı günlükleyici (`debug`, `info`, `warn`, `error`) |
| `api.registrationMode` | `PluginRegistrationMode` | Geçerli yükleme modu; `"setup-runtime"` hafif tam giriş öncesi başlatma/kurulum penceresidir |
| `api.resolvePath(input)` | `(string) => string` | Plugin köküne göre göreli yol çözümleme |
## Dahili modül kuralı
## İç modül kuralı
Plugin'iniz içinde, dahili içe aktarmalar için yerel barrel dosyaları kullanın:
Plugin'iniz içinde, içe aktarmalar için yerel barrel dosyaları kullanın:
```
my-plugin/
api.ts # Harici kullanıcılar için genel dışa aktarımlar
runtime-api.ts # Yalnızca dahili çalışma zamanı dışa aktarımları
api.ts # Harici tüketiciler için herkese açık dışa aktarımlar
runtime-api.ts # Yalnızca çalışma zamanı dışa aktarımları
index.ts # Plugin giriş noktası
setup-entry.ts # Hafif yalnızca kurulum girişi (isteğe bağlı)
setup-entry.ts # Yalnızca kurulum için hafif giriş (isteğe bağlı)
```
<Warning>
Üretim kodunda kendi plugin'inizi asla `openclaw/plugin-sdk/<your-plugin>`
üzerinden içe aktarmayın. Dahili içe aktarmaları `./api.ts` veya
Üretim kodunda kendi Plugin'inizi asla `openclaw/plugin-sdk/<your-plugin>`
üzerinden içe aktarmayın. İç içe aktarmaları `./api.ts` veya
`./runtime-api.ts` üzerinden yönlendirin. SDK yolu yalnızca harici sözleşmedir.
</Warning>
Facade ile yüklenen paketlenmiş plugin genel yüzeyleri (`api.ts`, `runtime-api.ts`,
`index.ts`, `setup-entry.ts` ve benzer genel giriş dosyaları) artık OpenClaw zaten
çalışıyorsa etkin çalışma zamanı yapılandırma anlık görüntüsünü tercih eder. Henüz çalışma zamanı
anlık görüntüsü yoksa disk üzerindeki çözülmüş yapılandırma dosyasına geri dönerler.
Facade ile yüklenen paketle birlikte gelen Plugin herkese açık yüzeyleri (`api.ts`, `runtime-api.ts`,
`index.ts`, `setup-entry.ts` ve benzeri herkese açık giriş dosyaları), OpenClaw
zaten çalışıyorsa artık etkin çalışma zamanı yapılandırma anlık görüntüsünü tercih eder.
Henüz bir çalışma zamanı anlık görüntüsü yoksa, disk üzerindeki çözümlenmiş yapılandırma dosyasına geri dönerler.
Sağlayıcı plugin'leri, bir yardımcı kasıtlı olarak sağlayıcıya özgüyse ve henüz genel bir SDK
alt yoluna ait değilse dar bir plugin-yerel sözleşme barrel dosyası da gösterebilir. Geçerli paketlenmiş örnek:
Anthropic sağlayıcısı Claude akış yardımcılarını, Anthropic beta-header ve `service_tier`
mantığını genel bir `plugin-sdk/*` sözleşmesine taşımak yerine kendi genel `api.ts` / `contract-api.ts`
arayüzünde tutar.
Sağlayıcı Plugin'leri ayrıca, bir yardımcı kasıtlı olarak sağlayıcıya özgüyse ve
henüz genel bir SDK alt yoluna ait değilse, dar bir Plugin'e yerel sözleşme barrel dosyası da açığa çıkarabilir.
Mevcut paketle birlikte gelen örnek: Anthropic sağlayıcısı Claude
akış yardımcılarını, Anthropic beta-header ve `service_tier` mantığını genel bir
`plugin-sdk/*` sözleşmesine taşımak yerine kendi herkese açık `api.ts` / `contract-api.ts`
ayrım noktasında tutar.
Diğer geçerli paketlenmiş örnekler:
Diğer mevcut paketle birlikte gelen örnekler:
- `@openclaw/openai-provider`: `api.ts`, sağlayıcı oluşturucularını,
varsayılan model yardımcılarını ve gerçek zamanlı sağlayıcı oluşturucularını dışa aktarır
- `@openclaw/openrouter-provider`: `api.ts`, sağlayıcı oluşturucusunu ve
- `@openclaw/openai-provider`: `api.ts` sağlayıcı oluşturucuları,
varsayılan model yardımcıları ve gerçek zamanlı sağlayıcı oluşturucuları dışa aktarır
- `@openclaw/openrouter-provider`: `api.ts` sağlayıcı oluşturucuyu ve
onboarding/yapılandırma yardımcılarını dışa aktarır
<Warning>
Uzantı üretim kodu ayrıca `openclaw/plugin-sdk/<other-plugin>`
içe aktarımlarından kaçınmalıdır. Bir yardımcı gerçekten paylaşılıyorsa iki plugin'i birbirine bağlamak yerine
bunu `openclaw/plugin-sdk/speech`, `.../provider-model-shared` veya başka
bir yetenek odaklı yüzey gibi tr bir SDK alt yoluna taşıyın.
içe aktarmalarından da kaçınmalıdır. Bir yardımcı gerçekten paylaşılıyorsa, iki Plugin'i birbirine bağlamak yerine
onu `openclaw/plugin-sdk/speech`, `.../provider-model-shared` veya başka
bir yetenek odaklı yüzey gibi tarafsız bir SDK alt yoluna taşıyın.
</Warning>
## İlgili
- [Entry Points](/tr/plugins/sdk-entrypoints) — `definePluginEntry` ve `defineChannelPluginEntry` seçenekleri
- [Runtime Helpers](/tr/plugins/sdk-runtime) — tam `api.runtime` ad alanı başvurusu
- [Setup and Config](/tr/plugins/sdk-setup) — paketleme, manifest'ler, yapılandırma şemaları
- [Testing](/tr/plugins/sdk-testing) — test yardımcıları ve lint kuralları
- [SDK Migration](/tr/plugins/sdk-migration) — kullanımdan kaldırılmış yüzeylerden geçiş
- [Plugin Internals](/tr/plugins/architecture) — derin mimari ve yetenek modeli
- [Giriş Noktaları](/tr/plugins/sdk-entrypoints) — `definePluginEntry` ve `defineChannelPluginEntry` seçenekleri
- [Çalışma Zamanı Yardımcıları](/tr/plugins/sdk-runtime) — tam `api.runtime` ad alanı referansı
- [Kurulum ve Yapılandırma](/tr/plugins/sdk-setup) — paketleme, manifest dosyaları, yapılandırma şemaları
- [Test](/tr/plugins/sdk-testing) — test yardımcı araçları ve lint kuralları
- [SDK Geçişi](/tr/plugins/sdk-migration) — kullanımdan kaldırılmış yüzeylerden geçiş
- [Plugin İç Yapıları](/tr/plugins/architecture) — derin mimari ve yetenek modeli

View File

@ -1,37 +1,37 @@
---
read_when:
- Ollama aracılığıyla OpenClaw'ı bulut veya yerel modellerle çalıştırmak istiyorsunuz
- Ollama kurulumu ve yapılandırma rehberliğine ihtiyacınız var
- Görsel anlama için Ollama vision modelleri istiyorsunuz
- OpenClaw'ı Ollama üzerinden bulut veya yerel modellerle çalıştırmak istiyorsunuz
- Ollama kurulumu ve yapılandırma rehberine ihtiyacınız var
- Görüntü anlama için Ollama vision modellerini istiyorsunuz
summary: OpenClaw'ı Ollama ile çalıştırın (bulut ve yerel modeller)
title: Ollama
x-i18n:
generated_at: "2026-04-22T04:27:24Z"
generated_at: "2026-04-22T08:55:44Z"
model: gpt-5.4
provider: openai
source_hash: 32623b6523f22930a5987fb22d2074f1e9bb274cc01ae1ad1837825cc04ec179
source_hash: 704beed3bf988d6c2ad50b2a1533f6dcef655e44b34f23104827d2acb71b8655
source_path: providers/ollama.md
workflow: 15
---
# Ollama
OpenClaw, barındırılan bulut modelleri ve yerel/kendi barındırdığınız Ollama sunucuları için Ollama'nın yerel API'si (`/api/chat`) ile bütünleşir. Ollama'yı üç modda kullanabilirsiniz: erişilebilir bir Ollama host üzerinden `Cloud + Local`, `https://ollama.com` karşısında `Cloud only` veya erişilebilir bir Ollama host karşısında `Local only`.
OpenClaw, barındırılan bulut modelleri ve yerel/kendi barındırdığınız Ollama sunucuları için Ollama'nın yerel API'siyle (`/api/chat`) bütünleşir. Ollama'yı üç modda kullanabilirsiniz: erişilebilir bir Ollama ana makinesi üzerinden `Cloud + Local`, `https://ollama.com` üzerinde `Cloud only` veya erişilebilir bir Ollama ana makinesi üzerinde `Local only`.
<Warning>
**Uzak Ollama kullanıcıları**: OpenClaw ile `/v1` OpenAI uyumlu URL'yi (`http://host:11434/v1`) kullanmayın. Bu, araç çağırmayı bozar ve modeller ham araç JSON'unu düz metin olarak çıkarabilir. Bunun yerine yerel Ollama API URL'sini kullanın: `baseUrl: "http://host:11434"` (`/v1` yok).
**Uzak Ollama kullanıcıları**: OpenClaw ile `/v1` OpenAI uyumlu URL'yi (`http://host:11434/v1`) kullanmayın. Bu, araç çağırmayı bozar ve modeller ham araç JSON'unu düz metin olarak çıktılayabilir. Bunun yerine yerel Ollama API URL'sini kullanın: `baseUrl: "http://host:11434"` (`/v1` olmadan).
</Warning>
## Başlarken
## Başlangıç
Tercih ettiğiniz kurulum yöntemini ve modu seçin.
<Tabs>
<Tab title="Onboarding (önerilen)">
**Şunun için en iyisi:** çalışan bir Ollama bulut veya yerel kuruluma en hızlı yol.
<Tab title="İlk kurulum (önerilen)">
**Şunun için en iyisi:** çalışan bir Ollama bulut veya yerel kurulumuna giden en hızlı yol.
<Steps>
<Step title="Onboarding'i çalıştırın">
<Step title="İlk kurulumu çalıştırın">
```bash
openclaw onboard
```
@ -39,12 +39,12 @@ Tercih ettiğiniz kurulum yöntemini ve modu seçin.
Sağlayıcı listesinden **Ollama** seçin.
</Step>
<Step title="Modunuzu seçin">
- **Cloud + Local** — yerel Ollama host'u ve bu host üzerinden yönlendirilen bulut modelleri
- **Cloud + Local** — yerel Ollama ana makinesi artı bu ana makine üzerinden yönlendirilen bulut modelleri
- **Cloud only**`https://ollama.com` üzerinden barındırılan Ollama modelleri
- **Local only** — yalnızca yerel modeller
</Step>
<Step title="Bir model seçin">
`Cloud only`, `OLLAMA_API_KEY` ister ve barındırılan bulut varsayılanlarını önerir. `Cloud + Local` ve `Local only`, bir Ollama base URL'si ister, kullanılabilir modelleri keşfeder ve seçilen yerel model henüz mevcut değilse otomatik olarak çeker. `Cloud + Local` ayrıca o Ollama host'unun bulut erişimi için oturum açıp açmadığını da denetler.
`Cloud only`, `OLLAMA_API_KEY` ister ve barındırılan bulut varsayılanlarını önerir. `Cloud + Local` ve `Local only`, bir Ollama temel URL'si ister, kullanılabilir modelleri keşfeder ve seçilen yerel model henüz mevcut değilse onu otomatik olarak çeker. `Cloud + Local` ayrıca o Ollama ana makinesinin bulut erişimi için oturum açmış olup olmadığını da denetler.
</Step>
<Step title="Modelin kullanılabilir olduğunu doğrulayın">
```bash
@ -61,7 +61,7 @@ Tercih ettiğiniz kurulum yöntemini ve modu seçin.
--accept-risk
```
İsteğe bağlı olarak özel bir base URL veya model belirleyin:
İsteğe bağlı olarak özel bir temel URL veya model belirtebilirsiniz:
```bash
openclaw onboard --non-interactive \
@ -77,8 +77,8 @@ Tercih ettiğiniz kurulum yöntemini ve modu seçin.
**Şunun için en iyisi:** bulut veya yerel kurulum üzerinde tam denetim.
<Steps>
<Step title="Bulut veya yereli seçin">
- **Cloud + Local**: Ollama'yı kurun, `ollama signin` ile oturum açın ve bulut isteklerini bu host üzerinden yönlendirin
<Step title="Bulut veya yerel seçin">
- **Cloud + Local**: Ollama'yı kurun, `ollama signin` ile oturum açın ve bulut isteklerini bu ana makine üzerinden yönlendirin
- **Cloud only**: `https://ollama.com` adresini bir `OLLAMA_API_KEY` ile kullanın
- **Local only**: Ollama'yı [ollama.com/download](https://ollama.com/download) adresinden kurun
</Step>
@ -92,16 +92,16 @@ Tercih ettiğiniz kurulum yöntemini ve modu seçin.
```
</Step>
<Step title="OpenClaw için Ollama'yı etkinleştirin">
`Cloud only` için gerçek `OLLAMA_API_KEY` anahtarınızı kullanın. Host destekli kurulumlarda herhangi bir yer tutucu değer çalışır:
`Cloud only` için gerçek `OLLAMA_API_KEY` değerinizi kullanın. Ana makine destekli kurulumlarda herhangi bir yer tutucu değer çalışır:
```bash
# Bulut
# Cloud
export OLLAMA_API_KEY="your-ollama-api-key"
# Yalnızca yerel
# Local-only
export OLLAMA_API_KEY="ollama-local"
# Veya config dosyanızda yapılandırın
# Veya yapılandırma dosyanızda yapılandırın
openclaw config set models.providers.ollama.apiKey "OLLAMA_API_KEY"
```
</Step>
@ -111,7 +111,7 @@ Tercih ettiğiniz kurulum yöntemini ve modu seçin.
openclaw models set ollama/gemma4
```
Veya varsayılanı config içinde ayarlayın:
Veya varsayılanı yapılandırmada ayarlayın:
```json5
{
@ -132,25 +132,25 @@ Tercih ettiğiniz kurulum yöntemini ve modu seçin.
<Tabs>
<Tab title="Cloud + Local">
`Cloud + Local`, hem yerel hem de bulut modeller için denetim noktası olarak erişilebilir bir Ollama host'u kullanır. Bu, Ollama'nın tercih ettiği hibrit akıştır.
`Cloud + Local`, hem yerel hem de bulut modelleri için denetim noktası olarak erişilebilir bir Ollama ana makinesi kullanır. Bu, Ollama'nın tercih ettiği hibrit akıştır.
Kurulum sırasında **Cloud + Local** kullanın. OpenClaw, Ollama base URL'sini ister, o hosttan yerel modelleri keşfeder ve host'un `ollama signin` ile bulut erişimi için oturum açıp açmadığını denetler. Host oturum açmışsa OpenClaw, `kimi-k2.5:cloud`, `minimax-m2.7:cloud` ve `glm-5.1:cloud` gibi barındırılan bulut varsayılanlarını da önerir.
Kurulum sırasında **Cloud + Local** kullanın. OpenClaw Ollama temel URL'sini ister, o ana makinedeki yerel modelleri keşfeder ve ana makinenin `ollama signin` ile bulut erişimi için oturum açıp açmadığını denetler. Ana makine oturum açmışsa OpenClaw ayrıca `kimi-k2.5:cloud`, `minimax-m2.7:cloud` ve `glm-5.1:cloud` gibi barındırılan bulut varsayılanlarını da önerir.
Host henüz oturum açmamışsa OpenClaw, siz `ollama signin` çalıştırana kadar kurulumu yalnızca yerel olarak tutar.
Ana makine henüz oturum açmamışsa, `ollama signin` çalıştırana kadar OpenClaw kurulumu yalnızca yerel modda tutar.
</Tab>
<Tab title="Cloud only">
`Cloud only`, Ollama'nın `https://ollama.com` üzerindeki barındırılan API'sine karşı çalışır.
`Cloud only`, Ollama'nın `https://ollama.com` adresindeki barındırılan API'sine karşı çalışır.
Kurulum sırasında **Cloud only** kullanın. OpenClaw, `OLLAMA_API_KEY` ister, `baseUrl: "https://ollama.com"` ayarlar ve barındırılan bulut model listesini tohumlar. Bu yol bir yerel Ollama sunucusu veya `ollama signin` gerektirmez.
Kurulum sırasında **Cloud only** kullanın. OpenClaw `OLLAMA_API_KEY` ister, `baseUrl: "https://ollama.com"` ayarlar ve barındırılan bulut model listesini tohumlar. Bu yol bir yerel Ollama sunucusu veya `ollama signin` gerektirmez.
`openclaw onboard` sırasında gösterilen bulut model listesi, `https://ollama.com/api/tags` adresinden canlı olarak doldurulur ve 500 giriş ile sınırlandırılır; böylece seçici statik bir tohum yerine mevcut barındırılan kataloğu yansıtır. Kurulum sırasında `ollama.com` erişilemezse veya model döndürmezse OpenClaw, onboarding'in yine tamamlanabilmesi için önceki sabit kodlanmış önerilere geri döner.
`openclaw onboard` sırasında gösterilen bulut model listesi, `https://ollama.com/api/tags` adresinden canlı olarak doldurulur ve 500 girişle sınırlandırılır; böylece seçici, statik bir tohum yerine mevcut barındırılan kataloğu yansıtır. Kurulum sırasında `ollama.com` erişilemezse veya model döndürmezse, OpenClaw ilk kurulumun yine tamamlanabilmesi için önceki sabit kodlanmış önerilere geri döner.
</Tab>
<Tab title="Local only">
Yalnızca yerel modda OpenClaw, yapılandırılmış Ollama örneğinden modelleri keşfeder. Bu yol yerel veya kendi barındırdığınız Ollama sunucuları içindir.
Yalnızca yerel modda OpenClaw, yapılandırılan Ollama örneğinden modelleri keşfeder. Bu yol yerel veya kendi barındırdığınız Ollama sunucuları içindir.
OpenClaw şu anda yerel varsayılan olarak `gemma4` önerir.
@ -159,18 +159,18 @@ Tercih ettiğiniz kurulum yöntemini ve modu seçin.
## Model keşfi (örtük sağlayıcı)
`OLLAMA_API_KEY` (veya bir auth profili) ayarladığınızda ve **`models.providers.ollama` tanımlamadığınızda**, OpenClaw modelleri `http://127.0.0.1:11434` adresindeki yerel Ollama örneğinden keşfeder.
`OLLAMA_API_KEY` (veya bir kimlik doğrulama profili) ayarladığınızda ve `models.providers.ollama` tanımlamadığınızda, OpenClaw `http://127.0.0.1:11434` adresindeki yerel Ollama örneğinden modelleri keşfeder.
| Davranış | Ayrıntı |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Katalog sorgusu | `/api/tags` sorgulanır |
| Yetenek algılama | `contextWindow` değerini okumak ve yetenekleri (vision dahil) algılamak için best-effort `/api/show` aramaları kullanır |
| Vision modelleri | `/api/show` tarafından bildirilen `vision` yeteneğine sahip modeller, görsel destekli (`input: ["text", "image"]`) olarak işaretlenir; böylece OpenClaw görselleri isteme otomatik enjekte eder |
| Reasoning algılama | `reasoning`, model adı sezgisiyle işaretlenir (`r1`, `reasoning`, `think`) |
| Token sınırları | `maxTokens`, OpenClaw tarafından kullanılan varsayılan Ollama maksimum token sınırına ayarlanır |
| Maliyetler | Tüm maliyetler `0` olarak ayarlanır |
| Davranış | Ayrıntı |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Katalog sorgusu | `/api/tags` sorgular |
| Yetenek algılama | `contextWindow` okumak ve yetenekleri algılamak için en iyi çabayla `/api/show` aramaları kullanır (vision dahil) |
| Vision modelleri | `/api/show` tarafından bildirilen `vision` yeteneğine sahip modeller görüntü destekli (`input: ["text", "image"]`) olarak işaretlenir, böylece OpenClaw görselleri isteme otomatik olarak ekler |
| Akıl yürütme algılama | Bir model adı sezgiseliğiyle (`r1`, `reasoning`, `think`) `reasoning` olarak işaretler |
| Belirteç sınırları | `maxTokens` değerini OpenClaw'ın kullandığı varsayılan Ollama azami belirteç sınırına ayarlar |
| Maliyetler | Tüm maliyetleri `0` olarak ayarlar |
Bu, kataloğu yerel Ollama örneğiyle uyumlu tutarken manuel model girişlerinden kaçınır.
Bu, kataloğu yerel Ollama örneğiyle uyumlu tutarken elle model girdileri gereksinimini ortadan kaldırır.
```bash
# Hangi modellerin kullanılabilir olduğunu görün
@ -184,15 +184,15 @@ Yeni bir model eklemek için onu Ollama ile çekmeniz yeterlidir:
ollama pull mistral
```
Yeni model otomatik olarak keşfedilir ve kullanıma ılır.
Yeni model otomatik olarak keşfedilir ve kullanıma sunulur.
<Note>
`models.providers.ollama` değerini açıkça ayarlarsanız otomatik keşif atlanır ve modelleri elle tanımlamanız gerekir. Aşağıdaki açık yapılandırma bölümüne bakın.
</Note>
## Vision ve görsel açıklama
## Vision ve görsel açıklaması
Paketle gelen Ollama plugin'i, Ollama'yı görsel destekli bir medya anlama sağlayıcısı olarak kaydeder. Bu, OpenClaw'ın açık görsel açıklama isteklerini ve yapılandırılmış görsel model varsayılanlarını yerel veya barındırılan Ollama vision modelleri üzerinden yönlendirmesini sağlar.
Paketlenmiş Ollama Plugin'i, Ollama'yı görüntü destekli bir medya anlama sağlayıcısı olarak kaydeder. Bu, OpenClaw'ın açık görsel açıklama isteklerini ve yapılandırılmış görüntü modeli varsayılanlarını yerel veya barındırılan Ollama vision modelleri üzerinden yönlendirmesine olanak tanır.
Yerel vision için görselleri destekleyen bir model çekin:
@ -201,7 +201,7 @@ ollama pull qwen2.5vl:7b
export OLLAMA_API_KEY="ollama-local"
```
Sonra infer CLI ile doğrulayın:
Ardından infer CLI ile doğrulayın:
```bash
openclaw infer image describe \
@ -210,9 +210,9 @@ openclaw infer image describe \
--json
```
`--model` tam bir `<provider/model>` ref'i olmalıdır. Ayarlandığında `openclaw infer image describe`, model yerel vision desteklediği için açıklamayı atlamak yerine o modeli doğrudan çalıştırır.
`--model` tam bir `<provider/model>` başvurusu olmalıdır. Ayarlandığında `openclaw infer image describe`, model yerel olarak vision desteklediği için açıklamayı atlamak yerine o modeli doğrudan çalıştırır.
Gelen medya için Ollama'yı varsayılan görsel anlama modeli yapmak üzere `agents.defaults.imageModel` yapılandırın:
Ollama'yı gelen medya için varsayılan görüntü anlama modeli yapmak üzere `agents.defaults.imageModel` ayarlayın:
```json5
{
@ -226,7 +226,7 @@ Gelen medya için Ollama'yı varsayılan görsel anlama modeli yapmak üzere `ag
}
```
`models.providers.ollama.models` değerini elle tanımlarsanız vision modellerini görsel girdi desteğiyle işaretleyin:
`models.providers.ollama.models` değerini elle tanımlarsanız vision modellerini görüntü girişi desteğiyle işaretleyin:
```json5
{
@ -238,7 +238,7 @@ Gelen medya için Ollama'yı varsayılan görsel anlama modeli yapmak üzere `ag
}
```
OpenClaw, görsel destekli olarak işaretlenmemiş modeller için görsel açıklama isteklerini reddeder. Örtük keşifte OpenClaw bunu, `/api/show` bir vision yeteneği bildirdiğinde Ollama'dan okur.
OpenClaw, görüntü destekli olarak işaretlenmemiş modeller için görsel açıklama isteklerini reddeder. Örtük keşifte OpenClaw bunu Ollama'dan, `/api/show` bir vision yeteneği bildirdiğinde okur.
## Yapılandırma
@ -251,13 +251,13 @@ OpenClaw, görsel destekli olarak işaretlenmemiş modeller için görsel açık
```
<Tip>
`OLLAMA_API_KEY` ayarlıysa sağlayıcı girdisinde `apiKey` alanını atlayabilirsiniz; OpenClaw bunu kullanılabilirlik denetimleri için doldurur.
`OLLAMA_API_KEY` ayarlanmışsa sağlayıcı girdisinde `apiKey` değerini atlayabilirsiniz ve OpenClaw bunu kullanılabilirlik denetimleri için doldurur.
</Tip>
</Tab>
<Tab title="Açık (elle modeller)">
Barındırılan bulut kurulumu istediğinizde, Ollama başka bir host/bağlantı noktasında çalıştığında, belirli bağlam pencerelerini veya model listelerini zorlamak istediğinizde ya da tamamen manuel model tanımları istediğinizde açık yapılandırmayı kullanın.
Barındırılan bulut kurulumu istediğinizde, Ollama başka bir ana makine/bağlantı noktasında çalıştığında, belirli bağlam pencerelerini veya model listelerini zorlamak istediğinizde ya da tamamen elle model tanımları istediğinizde açık yapılandırma kullanın.
```json5
{
@ -286,8 +286,8 @@ OpenClaw, görsel destekli olarak işaretlenmemiş modeller için görsel açık
</Tab>
<Tab title="Özel base URL">
Ollama farklı bir host veya bağlantı noktasında çalışıyorsa (açık yapılandırma otomatik keşfi devre dışı bırakır, bu yüzden modelleri elle tanımlayın):
<Tab title="Özel temel URL">
Ollama farklı bir ana makine veya bağlantı noktasında çalışıyorsa (açık yapılandırma otomatik keşfi devre dışı bırakır, bu yüzden modelleri elle tanımlayın):
```json5
{
@ -304,7 +304,7 @@ OpenClaw, görsel destekli olarak işaretlenmemiş modeller için görsel açık
```
<Warning>
URL'ye `/v1` eklemeyin. `/v1` yolu OpenAI uyumlu modu kullanır; burada araç çağırma güvenilir değildir. Yol son eki olmayan temel Ollama URL'sini kullanın.
URL'ye `/v1` eklemeyin. `/v1` yolu, araç çağırmanın güvenilir olmadığı OpenAI uyumlu modu kullanır. Yol son eki olmadan temel Ollama URL'sini kullanın.
</Warning>
</Tab>
@ -329,15 +329,15 @@ Yapılandırıldıktan sonra tüm Ollama modelleriniz kullanılabilir olur:
## Ollama Web Search
OpenClaw, paketle gelen bir `web_search` sağlayıcısı olarak **Ollama Web Search** desteği sunar.
OpenClaw, paketlenmiş bir `web_search` sağlayıcısı olarak **Ollama Web Search** desteği sunar.
| Özellik | Ayrıntı |
| ----------- | ------------------------------------------------------------------------------------------------------------------- |
| Host | Yapılandırılmış Ollama host'unuzu kullanır (`models.providers.ollama.baseUrl` ayarlıysa onu, aksi halde `http://127.0.0.1:11434`) |
| Kimlik doğrulama | Anahtar gerektirmez |
| Gereksinim | Ollama çalışıyor olmalı ve `ollama signin` ile oturum açılmış olmalı |
| Özellik | Ayrıntı |
| ----------- | ----------------------------------------------------------------------------------------------------------------- |
| Ana makine | Yapılandırılmış Ollama ana makinenizi kullanır (`models.providers.ollama.baseUrl` ayarlıysa onu, aksi halde `http://127.0.0.1:11434`) |
| Kimlik doğrulama | Anahtarsız |
| Gereksinim | Ollama çalışıyor olmalı ve `ollama signin` ile oturum açılmış olmalı |
Kurulum sırasında **Ollama Web Search** seçin `openclaw onboard` veya `openclaw configure --section web`, ya da şunu ayarlayın:
`openclaw onboard` veya `openclaw configure --section web` sırasında **Ollama Web Search** seçin ya da şunu ayarlayın:
```json5
{
@ -352,7 +352,7 @@ Kurulum sırasında **Ollama Web Search** seçin `openclaw onboard` veya `opencl
```
<Note>
Tam kurulum ve davranış ayrıntıları için [Ollama Web Search](/tr/tools/ollama-search) bölümüne bakın.
Tam kurulum ve davranış ayrıntıları için bkz. [Ollama Web Search](/tr/tools/ollama-search).
</Note>
## Gelişmiş yapılandırma
@ -360,10 +360,10 @@ Tam kurulum ve davranış ayrıntıları için [Ollama Web Search](/tr/tools/oll
<AccordionGroup>
<Accordion title="Eski OpenAI uyumlu mod">
<Warning>
**Araç çağırma, OpenAI uyumlu modda güvenilir değildir.** Bu modu yalnızca bir proxy için OpenAI biçimine ihtiyacınız varsa ve yerel araç çağırma davranışına bağlı değilseniz kullanın.
**Araç çağırma OpenAI uyumlu modda güvenilir değildir.** Bu modu yalnızca bir proxy için OpenAI biçimine ihtiyacınız varsa ve yerel araç çağırma davranışına bağlı değilseniz kullanın.
</Warning>
Bunun yerine OpenAI uyumlu uç noktayı kullanmanız gerekiyorsa (örneğin yalnızca OpenAI biçimini destekleyen bir proxy arkasında), `api: "openai-completions"` değerini açıkça ayarlayın:
Bunun yerine OpenAI uyumlu uç noktayı kullanmanız gerekiyorsa (örneğin yalnızca OpenAI biçimini destekleyen bir proxy'nin arkasında), `api: "openai-completions"` değerini açıkça ayarlayın:
```json5
{
@ -381,9 +381,9 @@ Tam kurulum ve davranış ayrıntıları için [Ollama Web Search](/tr/tools/oll
}
```
Bu mod aynı anda akış ve araç çağırmayı desteklemeyebilir. Model config içinde `params: { streaming: false }` ile akışı devre dışı bırakmanız gerekebilir.
Bu mod aynı anda akışı ve araç çağırmayı desteklemeyebilir. Model yapılandırmasında `params: { streaming: false }` ile akışı devre dışı bırakmanız gerekebilir.
`api: "openai-completions"` Ollama ile kullanıldığında OpenClaw varsayılan olarak `options.num_ctx` enjekte eder; böylece Ollama sessizce 4096 bağlam penceresine geri düşmez. Proxy/upstream bilinmeyen `options` alanlarını reddediyorsa bu davranışı devre dışı bırakın:
`api: "openai-completions"` Ollama ile kullanıldığında, OpenClaw varsayılan olarak `options.num_ctx` ekler; böylece Ollama sessizce 4096 bağlam penceresine geri dönmez. Proxy'niz/yukarı akışınız bilinmeyen `options` alanlarını reddediyorsa, bu davranışı devre dışı bırakın:
```json5
{
@ -404,9 +404,9 @@ Tam kurulum ve davranış ayrıntıları için [Ollama Web Search](/tr/tools/oll
</Accordion>
<Accordion title="Bağlam pencereleri">
Otomatik keşfedilen modeller için OpenClaw, mevcut olduğunda Ollama tarafından bildirilen bağlam penceresini kullanır; aksi halde OpenClaw tarafından kullanılan varsayılan Ollama bağlam penceresine geri döner.
Otomatik keşfedilen modeller için OpenClaw mümkün olduğunda Ollama'nın bildirdiği bağlam penceresini kullanır; aksi halde OpenClaw'ın kullandığı varsayılan Ollama bağlam penceresine geri döner.
ık sağlayıcı config'inde `contextWindow` ve `maxTokens` değerlerini geçersiz kılabilirsiniz:
ık sağlayıcı yapılandırmasında `contextWindow` ve `maxTokens` değerlerini geçersiz kılabilirsiniz:
```json5
{
@ -428,8 +428,8 @@ Tam kurulum ve davranış ayrıntıları için [Ollama Web Search](/tr/tools/oll
</Accordion>
<Accordion title="Reasoning modelleri">
OpenClaw, varsayılan olarak `deepseek-r1`, `reasoning` veya `think` gibi ada sahip modelleri reasoning yetenekli olarak değerlendirir.
<Accordion title="Akıl yürütme modelleri">
OpenClaw, varsayılan olarak `deepseek-r1`, `reasoning` veya `think` gibi adlara sahip modelleri akıl yürütme yetenekli olarak değerlendirir.
```bash
ollama pull deepseek-r1:32b
@ -440,18 +440,18 @@ Tam kurulum ve davranış ayrıntıları için [Ollama Web Search](/tr/tools/oll
</Accordion>
<Accordion title="Model maliyetleri">
Ollama ücretsizdir ve yerelde çalışır, bu nedenle tüm model maliyetleri $0 olarak ayarlanır. Bu hem otomatik keşfedilen hem de elle tanımlanan modeller için geçerlidir.
Ollama ücretsizdir ve yerel olarak çalışır, bu nedenle tüm model maliyetleri $0 olarak ayarlanır. Bu hem otomatik keşfedilen hem de elle tanımlanan modeller için geçerlidir.
</Accordion>
<Accordion title="Bellek embedding'leri">
Paketle gelen Ollama plugin'i,
[bellek araması](/tr/concepts/memory) için bir bellek embedding sağlayıcısı kaydeder. Yapılandırılmış Ollama base URL'sini
Paketlenmiş Ollama Plugin'i,
[bellek araması](/tr/concepts/memory) için bir bellek embedding sağlayıcısı kaydeder. Yapılandırılmış Ollama temel URL'sini
ve API anahtarını kullanır.
| Özellik | Değer |
| ------------- | ------------------ |
| Varsayılan model | `nomic-embed-text` |
| Otomatik çekme | Evet — embedding modeli yerelde mevcut değilse otomatik olarak çekilir |
| Özellik | Değer |
| ------------- | ------------------- |
| Varsayılan model | `nomic-embed-text` |
| Otomatik çekme | Evet — embedding modeli yerelde yoksa otomatik olarak çekilir |
Ollama'yı bellek araması embedding sağlayıcısı olarak seçmek için:
@ -470,6 +470,8 @@ Tam kurulum ve davranış ayrıntıları için [Ollama Web Search](/tr/tools/oll
<Accordion title="Akış yapılandırması">
OpenClaw'ın Ollama bütünleşimi varsayılan olarak **yerel Ollama API'sini** (`/api/chat`) kullanır; bu, aynı anda hem akışı hem de araç çağırmayı tam olarak destekler. Özel bir yapılandırma gerekmez.
Yerel `/api/chat` istekleri için OpenClaw ayrıca düşünme denetimini doğrudan Ollama'ya iletir: `/think off` ve `openclaw agent --thinking off`, üst düzey `think: false` gönderir; `off` dışındaki düşünme düzeyleri ise `think: true` gönderir.
<Tip>
OpenAI uyumlu uç noktayı kullanmanız gerekiyorsa yukarıdaki "Eski OpenAI uyumlu mod" bölümüne bakın. Bu modda akış ve araç çağırma aynı anda çalışmayabilir.
</Tip>
@ -481,7 +483,7 @@ Tam kurulum ve davranış ayrıntıları için [Ollama Web Search](/tr/tools/oll
<AccordionGroup>
<Accordion title="Ollama algılanmadı">
Ollama'nın çalıştığından, `OLLAMA_API_KEY` (veya bir auth profili) ayarladığınızdan ve **açık bir `models.providers.ollama` girdisi tanımlamadığınızdan** emin olun:
Ollama'nın çalıştığından, `OLLAMA_API_KEY` (veya bir kimlik doğrulama profili) ayarladığınızdan ve açık bir `models.providers.ollama` girdisi tanımlamadığınızdan emin olun:
```bash
ollama serve
@ -496,10 +498,10 @@ Tam kurulum ve davranış ayrıntıları için [Ollama Web Search](/tr/tools/oll
</Accordion>
<Accordion title="Kullanılabilir model yok">
Modeliniz listelenmiyorsa modeli yerelde çekin veya `models.providers.ollama` içinde açıkça tanımlayın.
Modeliniz listelenmiyorsa modeli ya yerel olarak çekin ya da `models.providers.ollama` içinde açıkça tanımlayın.
```bash
ollama list # Yüklü olanları görün
ollama list # Kurulu olanları görün
ollama pull gemma4
ollama pull gpt-oss:20b
ollama pull llama3.3 # Veya başka bir model
@ -529,15 +531,15 @@ Daha fazla yardım: [Sorun giderme](/tr/help/troubleshooting) ve [SSS](/tr/help/
<CardGroup cols={2}>
<Card title="Model sağlayıcıları" href="/tr/concepts/model-providers" icon="layers">
Tüm sağlayıcılara, model ref'lerine ve failover davranışına genel bakış.
Tüm sağlayıcılara, model başvurularına ve yük devretme davranışına genel bakış.
</Card>
<Card title="Model seçimi" href="/tr/concepts/models" icon="brain">
Modeller nasıl seçilir ve yapılandırılır.
Modellerin nasıl seçileceği ve yapılandırılacağı.
</Card>
<Card title="Ollama Web Search" href="/tr/tools/ollama-search" icon="magnifying-glass">
Ollama destekli web araması için tam kurulum ve davranış ayrıntıları.
</Card>
<Card title="Yapılandırma" href="/tr/gateway/configuration" icon="gear">
Tam config referansı.
Tam yapılandırma başvurusu.
</Card>
</CardGroup>

View File

@ -0,0 +1,67 @@
---
read_when:
- OpenClaw ile Tencent Hy modellerini kullanmak istiyorsunuz
- TokenHub API anahtarı kurulumuna ihtiyacınız var
summary: Tencent Cloud TokenHub kurulumu
title: Tencent Cloud (TokenHub)
x-i18n:
generated_at: "2026-04-22T08:55:45Z"
model: gpt-5.4
provider: openai
source_hash: 04da073973792c55dc0c2d287bfc51187bb2128bbbd5c4a483f850adeea50ab5
source_path: providers/tencent.md
workflow: 15
---
# Tencent Cloud (TokenHub)
Tencent Cloud sağlayıcısı, TokenHub uç noktası (`tencent-tokenhub`) üzerinden
Tencent Hy modellerine erişim sağlar.
Sağlayıcı, OpenAI uyumlu bir API kullanır.
## Hızlı başlangıç
```bash
openclaw onboard --auth-choice tokenhub-api-key
```
## Etkileşimsiz örnek
```bash
openclaw onboard --non-interactive \
--mode local \
--auth-choice tokenhub-api-key \
--tokenhub-api-key "$TOKENHUB_API_KEY" \
--skip-health \
--accept-risk
```
## Sağlayıcılar ve uç noktalar
| Sağlayıcı | Uç nokta | Kullanım durumu |
| ------------------ | ----------------------------- | ----------------------- |
| `tencent-tokenhub` | `tokenhub.tencentmaas.com/v1` | Tencent TokenHub ile Hy |
## Kullanılabilir modeller
### tencent-tokenhub
- **hy3-preview** — Hy3 önizlemesi (256K bağlam, akıl yürütme, varsayılan)
## Notlar
- TokenHub model başvuruları `tencent-tokenhub/<modelId>` kullanır.
- Gerekirse fiyatlandırma ve bağlam meta verilerini `models.providers` içinde geçersiz kılın.
## Ortam notu
Gateway bir daemon olarak çalışıyorsa (launchd/systemd), `TOKENHUB_API_KEY`
değerinin o süreç için kullanılabilir olduğundan emin olun (örneğin,
`~/.openclaw/.env` içinde veya `env.shellEnv` aracılığıyla).
## İlgili belgeler
- [OpenClaw Yapılandırması](/tr/gateway/configuration)
- [Model Sağlayıcıları](/tr/concepts/model-providers)
- [Tencent TokenHub](https://cloud.tencent.com/document/product/1823/130050)

View File

@ -1,128 +1,130 @@
---
read_when:
- OpenClawun hangi araçları sunduğunu anlamak istiyorsunuz
- Araçları yapılandırmanız, izin vermeniz veya engellemeniz gerekiyor
- Yerleşik araçlar, Skills ve pluginler arasında karar veriyorsunuz
summary: 'OpenClaw araçları ve pluginlerine genel bakış: agentın neler yapabildiği ve nasıl genişletileceği'
title: Araçlar ve Pluginler
- OpenClaw'ın hangi araçları sağladığını anlamak istiyorsunuz
- Araçları yapılandırmanız, izin vermeniz veya reddetmeniz gerekiyor
- Yerleşik araçlar, Skills ve Plugin'ler arasında karar veriyorsunuz
summary: 'OpenClaw araçları ve plugin''lerine genel bakış: ajanın neler yapabildiği ve nasıl genişletileceği'
title: Araçlar ve Plugin'ler
x-i18n:
generated_at: "2026-04-06T03:13:34Z"
generated_at: "2026-04-22T08:55:47Z"
model: gpt-5.4
provider: openai
source_hash: b2371239316997b0fe389bfa2ec38404e1d3e177755ad81ff8035ac583d9adeb
source_hash: 6edb9e13b72e6345554f25c8d8413d167a69501e6626828d9aa3aac6907cd092
source_path: tools/index.md
workflow: 15
---
# Araçlar ve Pluginler
# Araçlar ve Plugin'ler
Agentın metin üretmenin ötesinde yaptığı her şey **araçlar** aracılığıyla olur.
Araçlar, agentın dosya okumasını, komut çalıştırmasını, webde gezinmesini, mesaj
Ajanın metin üretmenin ötesinde yaptığı her şey **araçlar** üzerinden gerçekleşir.
Araçlar, ajanın dosya okumasını, komut çalıştırmasını, web'de gezinmesini, ileti
göndermesini ve cihazlarla etkileşime girmesini sağlar.
## Araçlar, Skills ve pluginler
## Araçlar, Skills ve Plugin'ler
OpenClaw birlikte çalışan üç katmana sahiptir:
<Steps>
<Step title="Araçlar, agentın çağırdığı şeylerdir">
Araç, agentın çağırabildiği tiplenmiş bir işlevdir (ör. `exec`, `browser`,
<Step title="Araçlar ajanın çağırdığı şeylerdir">
Araç, ajanın çağırabildiği türlendirilmiş bir işlevdir (ör. `exec`, `browser`,
`web_search`, `message`). OpenClaw bir dizi **yerleşik araç** ile gelir ve
pluginler ek araçlar kaydedebilir.
Plugin'ler ek araçlar kaydedebilir.
Agent, araçları model APIsine gönderilen yapılandırılmış işlev tanımları olarak görür.
Ajan araçları, model API'sine gönderilen yapılandırılmış işlev tanımları olarak görür.
</Step>
<Step title="Skills, agenta ne zaman ve nasıl kullanılacağını öğretir">
Skill, sistem komutuna enjekte edilen bir markdown dosyasıdır (`SKILL.md`).
Skills, agenta araçları etkili şekilde kullanması için bağlam, kısıtlar ve
<Step title="Skills ajana ne zaman ve nasıl olduğunu öğretir">
Skill, sistem istemine enjekte edilen bir markdown dosyasıdır (`SKILL.md`).
Skills, aracı etkili biçimde kullanmak için ajana bağlam, kısıtlar ve
adım adım rehberlik sağlar. Skills çalışma alanınızda, paylaşılan klasörlerde
bulunabilir veya pluginlerin içinde gelebilir.
bulunabilir veya Plugin'lerin içinde gelebilir.
[Skills başvurusu](/tr/tools/skills) | [Skill oluşturma](/tr/tools/creating-skills)
[Skills başvurusu](/tr/tools/skills) | [Skills oluşturma](/tr/tools/creating-skills)
</Step>
<Step title="Pluginler her şeyi birlikte paketler">
Plugin, herhangi bir yetenek kombinasyonunu kaydedebilen bir pakettir:
channels, model providerlar, araçlar, Skills, konuşma, gerçek zamanlı transcription,
gerçek zamanlı voice, medya anlama, görsel oluşturma, video oluşturma,
web fetch, web search ve daha fazlası. Bazı pluginler **core**dur (OpenClaw ile
birlikte gelir), bazıları ise **external**dır (topluluk tarafından npm üzerinde yayımlanır).
<Step title="Plugin'ler her şeyi bir arada paketler">
Plugin; kanallar, model sağlayıcıları, araçlar, Skills, konuşma, gerçek zamanlı transkripsiyon,
gerçek zamanlı ses, medya anlama, görsel üretimi, video üretimi,
web getirme, web arama ve daha fazlası gibi yeteneklerin herhangi bir
birleşimini kaydedebilen bir pakettir. Bazı Plugin'ler **core**'dur (OpenClaw ile
birlikte gelir), diğerleri **external**'dır (topluluk tarafından npm üzerinde yayımlanır).
[Pluginleri kurun ve yapılandırın](/tr/tools/plugin) | [Kendinizinkini oluşturun](/tr/plugins/building-plugins)
[Plugin'leri kurun ve yapılandırın](/tr/tools/plugin) | [Kendi Plugin'inizi oluşturun](/tr/plugins/building-plugins)
</Step>
</Steps>
## Yerleşik araçlar
Bu araçlar OpenClaw ile birlikte gelir ve herhangi bir plugin kurmadan kullanılabilir:
Bu araçlar OpenClaw ile birlikte gelir ve herhangi bir Plugin kurmadan kullanılabilir:
| Araç | Ne yapar | Sayfa |
| ------------------------------------------ | --------------------------------------------------------------------- | ------------------------------------------- |
| `exec` / `process` | Shell komutları çalıştırır, arka plan süreçlerini yönetir | [Exec](/tr/tools/exec) |
| `code_execution` | Sandbox içinde uzak Python analizi çalıştırır | [Code Execution](/tr/tools/code-execution) |
| `browser` | Bir Chromium tarayıcısını denetler (gezinme, tıklama, ekran görüntüsü) | [Browser](/tr/tools/browser) |
| `web_search` / `x_search` / `web_fetch` | Webde arama yapar, X gönderilerini arar, sayfa içeriğini getirir | [Web](/tr/tools/web) |
| `read` / `write` / `edit` | Çalışma alanında dosya G/Ç | |
| `apply_patch` | Çok parçalı dosya yamaları | [Apply Patch](/tr/tools/apply-patch) |
| `message` | Tüm channels üzerinden mesaj gönderir | [Agent Send](/tr/tools/agent-send) |
| `canvas` | Node Canvası sürer (sunum, değerlendirme, snapshot) | |
| `exec` / `process` | Kabuk komutları çalıştırır, arka plan süreçlerini yönetir | [Exec](/tr/tools/exec) |
| `code_execution` | Korumalı uzak Python analizini çalıştırır | [Kod Çalıştırma](/tr/tools/code-execution) |
| `browser` | Bir Chromium tarayıcısını denetler (gezinme, tıklama, ekran görüntüsü alma) | [Tarayıcı](/tr/tools/browser) |
| `web_search` / `x_search` / `web_fetch` | Web'de arama yapar, X gönderilerinde arama yapar, sayfa içeriği getirir | [Web](/tr/tools/web) |
| `read` / `write` / `edit` | Çalışma alanında dosya G/Ç işlemleri | |
| `apply_patch` | Çok parçalı dosya yamaları | [Yama Uygula](/tr/tools/apply-patch) |
| `message` | Tüm kanallar arasında ileti gönderir | [Ajan Gönderimi](/tr/tools/agent-send) |
| `canvas` | node Canvas'ı sürer (sunma, değerlendirme, anlık görüntü alma) | |
| `nodes` | Eşleştirilmiş cihazları keşfeder ve hedefler | |
| `cron` / `gateway` | Zamanlanmış işleri yönetir; gatewayi inceler, düzeltir, yeniden başlatır veya günceller | |
| `image` / `image_generate` | Görselleri analiz eder veya oluşturur | [Image Generation](/tr/tools/image-generation) |
| `music_generate` | Müzik parçaları oluşturur | [Music Generation](/tools/music-generation) |
| `video_generate` | Videolar oluşturur | [Video Generation](/tools/video-generation) |
| `cron` / `gateway` | Zamanlanmış işleri yönetir; gateway'i inceler, yamalar, yeniden başlatır veya günceller | |
| `image` / `image_generate` | Görselleri analiz eder veya üretir | [Görsel Üretimi](/tr/tools/image-generation) |
| `music_generate` | Müzik parçaları üretir | [Müzik Üretimi](/tr/tools/music-generation) |
| `video_generate` | Videolar üretir | [Video Üretimi](/tr/tools/video-generation) |
| `tts` | Tek seferlik metinden konuşmaya dönüştürme | [TTS](/tr/tools/tts) |
| `sessions_*` / `subagents` / `agents_list` | Oturum yönetimi, durum ve alt agent orkestrasyonu | [Sub-agents](/tr/tools/subagents) |
| `session_status` | Hafif `/status` tarzı geri okuma ve oturum model geçersiz kılması | [Session Tools](/tr/concepts/session-tool) |
| `sessions_*` / `subagents` / `agents_list` | Oturum yönetimi, durum ve alt ajan orkestrasyonu | [Alt ajanlar](/tr/tools/subagents) |
| `session_status` | Hafif `/status` tarzı geri okuma ve oturum modeli geçersiz kılması | [Oturum Araçları](/tr/concepts/session-tool) |
Görsel işleri için analizde `image`, oluşturmada veya düzenlemede `image_generate` kullanın. `openai/*`, `google/*`, `fal/*` veya varsayılan olmayan başka bir görsel providerı hedefliyorsanız, önce o providerın auth/API anahtarını yapılandırın.
Görsel çalışmaları için analizde `image`, üretim veya düzenlemede `image_generate` kullanın. `openai/*`, `google/*`, `fal/*` veya varsayılan olmayan başka bir görsel sağlayıcısını hedefliyorsanız önce o sağlayıcının kimlik doğrulamasını/API anahtarını yapılandırın.
Müzik işleri için `music_generate` kullanın. `google/*`, `minimax/*` veya varsayılan olmayan başka bir müzik providerı hedefliyorsanız, önce o providerın auth/API anahtarını yapılandırın.
Müzik çalışmaları için `music_generate` kullanın. `google/*`, `minimax/*` veya varsayılan olmayan başka bir müzik sağlayıcısını hedefliyorsanız önce o sağlayıcının kimlik doğrulamasını/API anahtarını yapılandırın.
Video işleri için `video_generate` kullanın. `qwen/*` veya varsayılan olmayan başka bir video providerı hedefliyorsanız, önce o providerın auth/API anahtarını yapılandırın.
Video çalışmaları için `video_generate` kullanın. `qwen/*` veya varsayılan olmayan başka bir video sağlayıcısını hedefliyorsanız önce o sağlayıcının kimlik doğrulamasını/API anahtarını yapılandırın.
İş akışı odaklı ses üretimi için, ComfyUI gibi bir plugin bunu kaydettiğinde
`music_generate` kullanın. Bu, metinden konuşmaya olan `tts`den ayrıdır.
İş akışı odaklı ses üretimi için ComfyUI gibi bir Plugin bunu kaydediyorsa
`music_generate` kullanın. Bu, metinden konuşmaya dönüştürme olan `tts`'den ayrıdır.
`session_status`, sessions grubundaki hafif durum/geri okuma aracıdır.
`session_status`, oturumlar grubundaki hafif durum/geri okuma aracıdır.
Geçerli oturum hakkında `/status` tarzı soruları yanıtlar ve isteğe bağlı olarak
oturum başına model geçersiz kılması ayarlayabilir; `model=default` bu
geçersiz kılmayı temizler. `/status` gibi, en son transcript kullanım girdisinden
seyrek token/cache sayaçlarını ve etkin çalışma zamanı model etiketini geriye dönük doldurabilir.
geçersiz kılmayı temizler. `/status` gibi, en son transkript kullanım girdisinden
seyrek token/önbellek sayaçlarını ve etkin çalışma zamanı modeli etiketini
geriye dönük doldurabilir.
`gateway`, gateway işlemleri için yalnızca sahip tarafından kullanılabilen çalışma zamanı aracıdır:
- Düzenlemelerden önce tek bir yol kapsamlı config alt ağacı için `config.schema.lookup`
- Geçerli config snapshotı + hash için `config.get`
- Yeniden başlatmalı kısmi config güncellemeleri için `config.patch`
- Yalnızca tam config değiştirme için `config.apply`
- Açık self-update + yeniden başlatma için `update.run`
- Düzenlemelerden önce tek bir yol kapsamlı yapılandırma alt ağacı için `config.schema.lookup`
- Geçerli yapılandırma anlık görüntüsü + hash için `config.get`
- Yeniden başlatmalı kısmi yapılandırma güncellemeleri için `config.patch`
- Yalnızca tam yapılandırma değişimi için `config.apply`
- Açık kendi kendini güncelleme + yeniden başlatma için `update.run`
Kısmi değişikliklerde önce `config.schema.lookup`, sonra `config.patch` tercih edin.
`config.apply` yalnızca tüm configi bilerek değiştirdiğinizde kullanılmalıdır.
`config.apply` seçeneğini yalnızca tüm yapılandırmayı bilerek değiştirdiğinizde kullanın.
Araç ayrıca `tools.exec.ask` veya `tools.exec.security` değerlerini değiştirmeyi reddeder;
eski `tools.bash.*` takma adları aynı korumalı exec yollarına normalize edilir.
### Plugin tarafından sağlanan araçlar
Pluginler ek araçlar kaydedebilir. Bazı örnekler:
Plugin'ler ek araçlar kaydedebilir. Bazı örnekler:
- [Lobster](/tr/tools/lobster) — devam ettirilebilir onaylarla tiplenmiş iş akışı çalışma zamanı
- [LLM Task](/tr/tools/llm-task) — yapılandırılmış çıktı için yalnızca JSON LLM adımı
- [Music Generation](/tools/music-generation) — iş akışı destekli providerlarla paylaşılan `music_generate` aracı
- [Diffs](/tr/tools/diffs) — diff görüntüleyici ve oluşturucu
- [OpenProse](/tr/prose) — markdown-first iş akışı orkestrasyonu
- [LLM Task](/tr/tools/llm-task) — yapılandırılmış çıktı için yalnızca JSON kullanan LLM adımı
- [Lobster](/tr/tools/lobster) — sürdürülebilir onaylara sahip türlendirilmiş iş akışı çalışma zamanı
- [Müzik Üretimi](/tr/tools/music-generation) — iş akışı destekli sağlayıcılara sahip paylaşılan `music_generate` aracı
- [OpenProse](/tr/prose) — markdown öncelikli iş akışı orkestrasyonu
- [Tokenjuice](/tr/tools/tokenjuice) — gürültülü `exec` ve `bash` araç sonuçlarını sıkıştırır
## Araç yapılandırması
### İzin ve engelleme listeleri
### İzin ve ret listeleri
Agentın hangi araçları çağırabileceğini config içindeki `tools.allow` / `tools.deny`
ile denetleyin. Engelleme her zaman izne üstün gelir.
Ajanın hangi araçları çağırabileceğini yapılandırmada `tools.allow` / `tools.deny`
üzerinden denetleyin. Ret her zaman izni geçersiz kılar.
```json5
{
@ -136,18 +138,18 @@ ile denetleyin. Engelleme her zaman izne üstün gelir.
### Araç profilleri
`tools.profile`, `allow`/`deny` uygulanmadan önce temel bir izin listesi ayarlar.
Agent başına geçersiz kılma: `agents.list[].tools.profile`.
Ajan başına geçersiz kılma: `agents.list[].tools.profile`.
| Profil | Neleri içerir |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `full` | Kısıtlama yok (ayarlanmamış olmasıyla aynı) |
| Profil | İçerdikleri |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `full` | Kısıtlama yoktur (ayarlanmamışla aynıdır) |
| `coding` | `group:fs`, `group:runtime`, `group:web`, `group:sessions`, `group:memory`, `cron`, `image`, `image_generate`, `music_generate`, `video_generate` |
| `messaging` | `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status` |
| `minimal` | Yalnızca `session_status` |
| `messaging` | `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status` |
| `minimal` | yalnızca `session_status` |
### Araç grupları
İzin/engelleme listelerinde `group:*` kısa yollarını kullanın:
İzin/ret listelerinde `group:*` kısayollarını kullanın:
| Grup | Araçlar |
| ------------------ | --------------------------------------------------------------------------------------------------------- |
@ -162,21 +164,20 @@ Agent başına geçersiz kılma: `agents.list[].tools.profile`.
| `group:nodes` | nodes |
| `group:agents` | agents_list |
| `group:media` | image, image_generate, music_generate, video_generate, tts |
| `group:openclaw` | Tüm yerleşik OpenClaw araçları (plugin araçları hariç) |
| `group:openclaw` | Tüm yerleşik OpenClaw araçları (Plugin araçları hariç) |
`sessions_history`, sınırlı ve güvenlik filtreli bir geri çağırma görünümü döndürür.
Thinking etiketlerini, `<relevant-memories>` iskeletini, düz metin tool-call XML
yüklerini (şunlar dahil: `<tool_call>...</tool_call>`,
`sessions_history`, sınırlı ve güvenlik filtreli bir geri çağırma görünümü döndürür. Şunları ayıklar:
thinking etiketleri, `<relevant-memories>` iskelesi, düz metin araç çağrısı XML
yükleri (şunlar dahil: `<tool_call>...</tool_call>`,
`<function_call>...</function_call>`, `<tool_calls>...</tool_calls>`,
`<function_calls>...</function_calls>` ve kesilmiş tool-call blokları),
seviyesi düşürülmüş tool-call iskeletini, sızmış ASCII/tam genişlikli model kontrol
tokenlarını ve assistant metnindeki bozuk MiniMax tool-call XMLini ayıklar; ardından
ham transcript dökümü gibi davranmak yerine redaksiyon/kısaltma ve olası büyük satır
yer tutucuları uygular.
`<function_calls>...</function_calls>` ve kesilmiş araç çağrısı blokları),
düşürülmüş araç çağrısı iskelesi, sızmış ASCII/tam genişlikli model denetim
token'ları ve asistan metnindeki hatalı MiniMax araç çağrısı XML'i; ardından
ham transkript dökümü gibi davranmak yerine redaksiyon/kısaltma ve olasıırı büyük satır yer tutucuları uygular.
### Providera özgü kısıtlamalar
### Sağlayıcıya özgü kısıtlamalar
Global varsayılanları değiştirmeden belirli providerlar için araçları kısıtlamak üzere
Genel varsayılanları değiştirmeden belirli sağlayıcılar için araçları kısıtlamak üzere
`tools.byProvider` kullanın:
```json5

View File

@ -0,0 +1,84 @@
---
read_when:
- OpenClaw içinde daha kısa `exec` veya `bash` araç sonuçları istiyorsunuz
- Paketlenmiş tokenjuice Plugin'ini etkinleştirmek istiyorsunuz
- tokenjuice'ın neyi değiştirdiğini ve neyi ham bıraktığını anlamanız gerekiyor
summary: İsteğe bağlı paketlenmiş bir Plugin ile gürültülü exec ve bash araç sonuçlarını sıkıştırın
title: Tokenjuice
x-i18n:
generated_at: "2026-04-22T08:56:00Z"
model: gpt-5.4
provider: openai
source_hash: 9b9a1054c9b1cc62e43ac6d5904c7790f9b27d8e0d0700c9da6e287c00e91783
source_path: tools/tokenjuice.md
workflow: 15
---
# Tokenjuice
`tokenjuice`, komut zaten çalıştırıldıktan sonra gürültülü `exec` ve `bash`
araç sonuçlarını sıkıştıran isteğe bağlı paketlenmiş bir Plugin'dir.
Komutun kendisini değil, döndürülen `tool_result` değerini değiştirir.
Tokenjuice shell girdisini yeniden yazmaz, komutları yeniden çalıştırmaz veya
çıkış kodlarını değiştirmez.
Bugün bu, Tokenjuice'ın gömülü `tool_result` yoluna bağlandığı ve oturuma geri
dönen çıktıyı kırptığı Pi gömülü çalıştırmaları için geçerlidir.
## Plugin'i etkinleştirin
Hızlı yol:
```bash
openclaw config set plugins.entries.tokenjuice.enabled true
```
Eşdeğeri:
```bash
openclaw plugins enable tokenjuice
```
OpenClaw bu Plugin'i zaten içerir. Ayrı bir `plugins install`
veya `tokenjuice install openclaw` adımı yoktur.
Yapılandırmayı doğrudan düzenlemeyi tercih ederseniz:
```json5
{
plugins: {
entries: {
tokenjuice: {
enabled: true,
},
},
},
}
```
## tokenjuice neyi değiştirir
- Gürültülü `exec` ve `bash` sonuçlarını, oturuma geri beslenmeden önce sıkıştırır.
- Özgün komut çalıştırmasını değiştirmeden bırakır.
- Tokenjuice'ın ham bırakması gereken tam dosya içeriği okumalarını ve diğer komutları korur.
- İsteğe bağlı kalır: her yerde birebir çıktı istiyorsanız Plugin'i devre dışı bırakın.
## Çalıştığını doğrulayın
1. Plugin'i etkinleştirin.
2. `exec` çağırabilen bir oturum başlatın.
3. `git status` gibi gürültülü bir komut çalıştırın.
4. Döndürülen araç sonucunun ham shell çıktısından daha kısa ve daha yapılandırılmış olduğunu kontrol edin.
## Plugin'i devre dışı bırakın
```bash
openclaw config set plugins.entries.tokenjuice.enabled false
```
Veya:
```bash
openclaw plugins disable tokenjuice
```