diff --git a/docs/tr/channels/matrix.md b/docs/tr/channels/matrix.md index 752528b91..e1632aba7 100644 --- a/docs/tr/channels/matrix.md +++ b/docs/tr/channels/matrix.md @@ -2,51 +2,51 @@ read_when: - OpenClaw içinde Matrix kurulumu - Matrix E2EE ve doğrulamayı yapılandırma -summary: Matrix destek durumu, kurulum ve yapılandırma örnekleri +summary: Matrix desteği durumu, kurulum ve yapılandırma örnekleri title: Matrix x-i18n: - generated_at: "2026-04-09T01:29:59Z" + generated_at: "2026-04-15T08:53:14Z" model: gpt-5.4 provider: openai - source_hash: 28fc13c7620c1152200315ae69c94205da6de3180c53c814dd8ce03b5cb1758f + source_hash: 631f6fdcfebc23136c1a66b04851a25c047535d13cceba5650b8b421bc3afcf8 source_path: channels/matrix.md workflow: 15 --- # Matrix -Matrix, OpenClaw için paketlenmiş bir kanal eklentisidir. -Resmi `matrix-js-sdk` kullanır ve DM'leri, odaları, thread'leri, medyayı, tepkileri, anketleri, konumu ve E2EE'yi destekler. +Matrix, OpenClaw için paketlenmiş bir kanal Plugin'idir. +Resmi `matrix-js-sdk` kullanır ve DM'leri, odaları, iş parçacıklarını, medyayı, tepkileri, anketleri, konumu ve E2EE'yi destekler. -## Paketlenmiş eklenti +## Paketlenmiş Plugin -Matrix, güncel OpenClaw sürümlerinde paketlenmiş bir eklenti olarak gelir, bu yüzden normal +Matrix, güncel OpenClaw sürümlerinde paketlenmiş bir Plugin olarak gelir; bu nedenle normal paketlenmiş derlemelerde ayrı bir kurulum gerekmez. -Eski bir derlemeyi veya Matrix'i dışlayan özel bir kurulumu kullanıyorsanız, onu +Matrix'i dışlayan daha eski bir derlemeyi veya özel bir kurulumu kullanıyorsanız, onu elle yükleyin: -npm'den yükleme: +npm'den yükleyin: ```bash openclaw plugins install @openclaw/matrix ``` -Yerel bir checkout'tan yükleme: +Yerel bir checkout'tan yükleyin: ```bash openclaw plugins install ./path/to/local/matrix-plugin ``` -Eklenti davranışı ve kurulum kuralları için [Plugins](/tr/tools/plugin) bölümüne bakın. +Plugin davranışı ve yükleme kuralları için [Plugins](/tr/tools/plugin) sayfasına bakın. ## Kurulum -1. Matrix eklentisinin kullanılabilir olduğundan emin olun. +1. Matrix Plugin'inin kullanılabilir olduğundan emin olun. - Güncel paketlenmiş OpenClaw sürümleri bunu zaten içerir. - Eski/özel kurulumlar bunu yukarıdaki komutlarla elle ekleyebilir. 2. Homeserver'ınızda bir Matrix hesabı oluşturun. -3. `channels.matrix` yapılandırmasını şu seçeneklerden biriyle ayarlayın: +3. `channels.matrix` yapılandırmasını şu seçeneklerden biriyle yapın: - `homeserver` + `accessToken`, veya - `homeserver` + `userId` + `password`. 4. Gateway'i yeniden başlatın. @@ -60,10 +60,10 @@ openclaw channels add openclaw configure --section channels ``` -Matrix sihirbazı şunları sorar: +Matrix sihirbazı şunları ister: - homeserver URL'si -- kimlik doğrulama yöntemi: erişim belirteci veya parola +- kimlik doğrulama yöntemi: access token veya parola - kullanıcı kimliği (yalnızca parola kimlik doğrulaması) - isteğe bağlı cihaz adı - E2EE'nin etkinleştirilip etkinleştirilmeyeceği @@ -71,24 +71,24 @@ Matrix sihirbazı şunları sorar: Sihirbazın temel davranışları: -- Matrix kimlik doğrulama ortam değişkenleri zaten varsa ve bu hesap için yapılandırmada henüz kimlik doğrulama kaydedilmemişse, sihirbaz kimlik doğrulamayı ortam değişkenlerinde tutmak için bir ortam değişkeni kısayolu sunar. +- Matrix kimlik doğrulama ortam değişkenleri zaten varsa ve bu hesap için yapılandırmada henüz kimlik doğrulama kaydedilmemişse, sihirbaz kimlik doğrulamayı ortam değişkenlerinde tutmak için bir ortam kısayolu sunar. - Hesap adları hesap kimliğine normalize edilir. Örneğin, `Ops Bot`, `ops-bot` olur. -- DM izin listesi girdileri doğrudan `@user:server` kabul eder; görünen adlar yalnızca canlı dizin araması tam bir eşleşme bulduğunda çalışır. -- Oda izin listesi girdileri doğrudan oda kimliklerini ve takma adları kabul eder. `!room:server` veya `#alias:server` tercih edin; çözümlenmemiş adlar çalışma zamanında izin listesi çözümlemesi tarafından yok sayılır. -- Davet otomatik katılımı izin listesi modunda yalnızca kararlı davet hedeflerini kullanın: `!roomId:server`, `#alias:server` veya `*`. Düz oda adları reddedilir. -- Kaydetmeden önce oda adlarını çözümlemek için `openclaw channels resolve --channel matrix "Project Room"` komutunu kullanın. +- DM allowlist girdileri doğrudan `@user:server` kabul eder; görünen adlar yalnızca canlı dizin araması tek bir kesin eşleşme bulduğunda çalışır. +- Oda allowlist girdileri doğrudan oda kimliklerini ve takma adları kabul eder. `!room:server` veya `#alias:server` tercih edin; çözümlenemeyen adlar allowlist çözümlemesi sırasında çalışma zamanında yok sayılır. +- Davet otomatik katılım allowlist modunda yalnızca kararlı davet hedefleri kullanın: `!roomId:server`, `#alias:server` veya `*`. Düz oda adları reddedilir. +- Kaydetmeden önce oda adlarını çözümlemek için `openclaw channels resolve --channel matrix "Project Room"` kullanın. `channels.matrix.autoJoin` varsayılan olarak `off` değerindedir. -Bunu ayarlamazsanız, bot davet edilen odalara veya yeni DM tarzı davetlere katılmaz; bu nedenle önce elle katılmazsanız yeni gruplarda veya davet edilen DM'lerde görünmez. +Bunu ayarlamazsanız, bot davet edilen odalara veya yeni DM tarzı davetlere katılmaz; bu nedenle önce elle katılmadığınız sürece yeni gruplarda veya davet edilen DM'lerde görünmez. -Hangi davetleri kabul edeceğini kısıtlamak için `autoJoinAllowlist` ile birlikte `autoJoin: "allowlist"` ayarlayın ya da her davete katılmasını istiyorsanız `autoJoin: "always"` ayarlayın. +Kabul ettiği davetleri sınırlamak için `autoJoin: "allowlist"` ile birlikte `autoJoinAllowlist` ayarlayın veya her davete katılmasını istiyorsanız `autoJoin: "always"` ayarlayın. `allowlist` modunda `autoJoinAllowlist` yalnızca `!roomId:server`, `#alias:server` veya `*` kabul eder. -İzin listesi örneği: +Allowlist örneği: ```json5 { @@ -118,7 +118,7 @@ Her davete katıl: } ``` -En az belirteç tabanlı kurulum: +En az düzeyde token tabanlı kurulum: ```json5 { @@ -133,7 +133,7 @@ En az belirteç tabanlı kurulum: } ``` -Parola tabanlı kurulum (girişten sonra belirteç önbelleğe alınır): +Parola tabanlı kurulum (girişten sonra token önbelleğe alınır): ```json5 { @@ -149,11 +149,11 @@ Parola tabanlı kurulum (girişten sonra belirteç önbelleğe alınır): } ``` -Matrix önbelleğe alınmış kimlik bilgilerini `~/.openclaw/credentials/matrix/` içinde saklar. +Matrix, önbelleğe alınmış kimlik bilgilerini `~/.openclaw/credentials/matrix/` içinde saklar. Varsayılan hesap `credentials.json` kullanır; adlandırılmış hesaplar `credentials-.json` kullanır. -Orada önbelleğe alınmış kimlik bilgileri varsa, mevcut kimlik doğrulama doğrudan yapılandırmada ayarlı olmasa bile OpenClaw, kurulum, doctor ve kanal durumu keşfi için Matrix'i yapılandırılmış kabul eder. +Önbelleğe alınmış kimlik bilgileri burada mevcut olduğunda, geçerli kimlik doğrulama doğrudan yapılandırmada ayarlanmamış olsa bile OpenClaw, kurulum, doctor ve kanal durumu keşfi için Matrix'i yapılandırılmış kabul eder. -Ortam değişkeni karşılıkları (yapılandırma anahtarı ayarlı olmadığında kullanılır): +Ortam değişkeni eşdeğerleri (yapılandırma anahtarı ayarlanmadığında kullanılır): - `MATRIX_HOMESERVER` - `MATRIX_ACCESS_TOKEN` @@ -176,19 +176,19 @@ Varsayılan olmayan hesaplar için hesap kapsamlı ortam değişkenlerini kullan - `MATRIX_OPS_HOMESERVER` - `MATRIX_OPS_ACCESS_TOKEN` -Normalize edilmiş `ops-bot` hesap kimliği için şunu kullanın: +Normalize edilmiş `ops-bot` hesap kimliği için şunları kullanın: - `MATRIX_OPS_X2D_BOT_HOMESERVER` - `MATRIX_OPS_X2D_BOT_ACCESS_TOKEN` -Matrix, hesap kimliklerindeki noktalamayı, hesap kapsamlı ortam değişkenlerinin çakışmasız kalması için kaçışlar. -Örneğin, `-`, `_X2D_` olur; dolayısıyla `ops-prod`, `MATRIX_OPS_X2D_PROD_*` ile eşlenir. +Matrix, hesap kimliklerindeki noktalama işaretlerini, hesap kapsamlı ortam değişkenlerinin çakışmasız kalmasını sağlamak için kaçışlar. +Örneğin, `-`, `_X2D_` olur; bu nedenle `ops-prod`, `MATRIX_OPS_X2D_PROD_*` ile eşlenir. -Etkileşimli sihirbaz, bu kimlik doğrulama ortam değişkenleri zaten mevcutsa ve seçilen hesap için yapılandırmada Matrix kimlik doğrulaması henüz kaydedilmemişse ortam değişkeni kısayolunu sunar. +Etkileşimli sihirbaz, ortam değişkeni kısayolunu yalnızca bu kimlik doğrulama ortam değişkenleri zaten mevcutsa ve seçilen hesap için yapılandırmada zaten Matrix kimlik doğrulaması kaydedilmemişse sunar. ## Yapılandırma örneği -Bu, DM eşleme, oda izin listesi ve etkin E2EE içeren pratik bir temel yapılandırmadır: +Bu, DM pairing, oda allowlist ve etkin E2EE ile pratik bir temel yapılandırmadır: ```json5 { @@ -224,15 +224,16 @@ Bu, DM eşleme, oda izin listesi ve etkin E2EE içeren pratik bir temel yapılan ``` `autoJoin`, DM tarzı davetler dahil tüm Matrix davetleri için geçerlidir. OpenClaw, -davet anında davet edilen bir odayı güvenilir biçimde DM mi yoksa grup mu diye -sınıflandıramaz; bu yüzden tüm davetler önce `autoJoin` üzerinden geçer. `dm.policy`, -bot katıldıktan ve oda DM olarak sınıflandırıldıktan sonra uygulanır. +davet edilen bir odayı davet anında güvenilir biçimde DM veya grup olarak sınıflandıramaz; bu nedenle tüm davetler önce `autoJoin` +üzerinden geçer. `dm.policy`, bot katıldıktan ve oda DM olarak sınıflandırıldıktan sonra uygulanır. ## Akış önizlemeleri Matrix yanıt akışı isteğe bağlıdır. -OpenClaw'un tek bir canlı önizleme yanıtı göndermesini, model metin üretirken bu önizlemeyi yerinde düzenlemesini ve yanıt tamamlandığında sonlandırmasını istiyorsanız `channels.matrix.streaming` değerini `"partial"` olarak ayarlayın: +OpenClaw'ın tek bir canlı önizleme +yanıtı göndermesini, model metin üretirken bu önizlemeyi yerinde düzenlemesini ve ardından +yanıt tamamlandığında bunu sonlandırmasını istiyorsanız `channels.matrix.streaming` değerini `"partial"` olarak ayarlayın: ```json5 { @@ -244,38 +245,38 @@ OpenClaw'un tek bir canlı önizleme yanıtı göndermesini, model metin üretir } ``` -- `streaming: "off"` varsayılandır. OpenClaw son yanıtı bekler ve bir kez gönderir. -- `streaming: "partial"`, mevcut asistan bloğu için normal Matrix metin mesajları kullanarak düzenlenebilir bir önizleme mesajı oluşturur. Bu, Matrix'in eski önizleme-önce bildirim davranışını korur; bu nedenle standart istemciler bitmiş blok yerine ilk akış önizleme metni için bildirim gönderebilir. -- `streaming: "quiet"`, mevcut asistan bloğu için düzenlenebilir tek bir sessiz önizleme bildirimi oluşturur. Bunu yalnızca alıcı push kurallarını sonlandırılmış önizleme düzenlemeleri için de yapılandırdığınızda kullanın. -- `blockStreaming: true` ayrı Matrix ilerleme mesajlarını etkinleştirir. Önizleme akışı etkinleştirildiğinde Matrix, geçerli blok için canlı taslağı tutar ve tamamlanmış blokları ayrı mesajlar olarak korur. -- Önizleme akışı açıkken `blockStreaming` kapalıysa, Matrix canlı taslağı yerinde düzenler ve blok veya tur bittiğinde aynı olayı sonlandırır. -- Önizleme artık tek bir Matrix olayına sığmazsa, OpenClaw önizleme akışını durdurur ve normal son teslimata geri döner. -- Medya yanıtları yine ekleri normal şekilde gönderir. Eski bir önizleme artık güvenle yeniden kullanılamıyorsa, OpenClaw son medya yanıtını göndermeden önce onu redact eder. -- Önizleme düzenlemeleri ek Matrix API çağrıları gerektirir. En muhafazakar rate-limit davranışını istiyorsanız akışı kapalı bırakın. +- `streaming: "off"` varsayılan değerdir. OpenClaw son yanıtı bekler ve bir kez gönderir. +- `streaming: "partial"`, mevcut asistan bloğu için normal Matrix metin mesajları kullanarak düzenlenebilir bir önizleme mesajı oluşturur. Bu, Matrix'in eski önizleme-önce bildirim davranışını korur; bu nedenle standart istemciler bitmiş blok yerine ilk akış önizleme metninde bildirim gönderebilir. +- `streaming: "quiet"`, mevcut asistan bloğu için düzenlenebilir sessiz bir önizleme bildirimi oluşturur. Bunu yalnızca sonlandırılmış önizleme düzenlemeleri için alıcı push kuralları da yapılandırdığınızda kullanın. +- `blockStreaming: true`, ayrı Matrix ilerleme mesajlarını etkinleştirir. Önizleme akışı etkin olduğunda Matrix, mevcut blok için canlı taslağı korur ve tamamlanan blokları ayrı mesajlar olarak saklar. +- Önizleme akışı açıkken ve `blockStreaming` kapalıyken Matrix, canlı taslağı yerinde düzenler ve blok veya dönüş bittiğinde aynı olayı sonlandırır. +- Önizleme artık tek bir Matrix olayına sığmıyorsa OpenClaw önizleme akışını durdurur ve normal son teslimata geri döner. +- Medya yanıtları ekleri normal şekilde göndermeye devam eder. Eski bir önizleme artık güvenle yeniden kullanılamıyorsa OpenClaw, son medya yanıtını göndermeden önce bunu redact eder. +- Önizleme düzenlemeleri ek Matrix API çağrıları gerektirir. En tutucu hız sınırı davranışını istiyorsanız akışı kapalı bırakın. `blockStreaming` tek başına taslak önizlemelerini etkinleştirmez. Önizleme düzenlemeleri için `streaming: "partial"` veya `streaming: "quiet"` kullanın; ardından yalnızca tamamlanmış asistan bloklarının ayrı ilerleme mesajları olarak görünür kalmasını da istiyorsanız `blockStreaming: true` ekleyin. -Özel push kuralları olmadan standart Matrix bildirimlerine ihtiyacınız varsa, önizleme-önce davranışı için `streaming: "partial"` kullanın veya yalnızca son teslimat için `streaming` kapalı bırakın. `streaming: "off"` ile: +Özel push kuralları olmadan standart Matrix bildirimlerine ihtiyacınız varsa, önizleme-önce davranışı için `streaming: "partial"` kullanın veya yalnızca son teslimat için `streaming` seçeneğini kapalı bırakın. `streaming: "off"` ile: -- `blockStreaming: true`, biten her bloğu normal bildirim veren bir Matrix mesajı olarak gönderir. -- `blockStreaming: false`, yalnızca son tamamlanmış yanıtı normal bildirim veren bir Matrix mesajı olarak gönderir. +- `blockStreaming: true`, tamamlanan her bloğu normal, bildirim gönderen bir Matrix mesajı olarak yollar. +- `blockStreaming: false`, yalnızca son tamamlanmış yanıtı normal, bildirim gönderen bir Matrix mesajı olarak yollar. ### Sessiz sonlandırılmış önizlemeler için self-hosted push kuralları Kendi Matrix altyapınızı çalıştırıyorsanız ve sessiz önizlemelerin yalnızca bir blok veya son yanıt tamamlandığında bildirim göndermesini istiyorsanız, `streaming: "quiet"` ayarlayın ve sonlandırılmış önizleme düzenlemeleri için kullanıcı başına bir push kuralı ekleyin. -Bu genellikle homeserver genelinde bir yapılandırma değişikliği değil, alıcı kullanıcı tarafında yapılan bir kurulumdur: +Bu genellikle homeserver genelinde bir yapılandırma değişikliği değil, alıcı kullanıcı kurulumu olur: Başlamadan önce hızlı eşleme: - alıcı kullanıcı = bildirimi alması gereken kişi -- bot kullanıcısı = yanıtı gönderen OpenClaw Matrix hesabı -- aşağıdaki API çağrıları için alıcı kullanıcının erişim belirtecini kullanın -- push kuralındaki `sender` için bot kullanıcısının tam MXID'siyle eşleştirin +- bot kullanıcı = yanıtı gönderen OpenClaw Matrix hesabı +- aşağıdaki API çağrıları için alıcı kullanıcının access token'ını kullanın +- push kuralındaki `sender` değerini bot kullanıcının tam MXID'siyle eşleştirin -1. Sessiz önizlemeleri kullanacak şekilde OpenClaw'u yapılandırın: +1. OpenClaw'ı sessiz önizlemeleri kullanacak şekilde yapılandırın: ```json5 { @@ -288,12 +289,12 @@ Başlamadan önce hızlı eşleme: ``` 2. Alıcı hesabın zaten normal Matrix push bildirimleri aldığından emin olun. Sessiz önizleme - kuralları yalnızca bu kullanıcının zaten çalışan pusher'ları/cihazları varsa çalışır. + kuralları yalnızca bu kullanıcı zaten çalışan pusher'lara/cihazlara sahipse çalışır. -3. Alıcı kullanıcının erişim belirtecini alın. - - Botun belirtecini değil, alıcı kullanıcının belirtecini kullanın. - - Mevcut bir istemci oturum belirtecini yeniden kullanmak genellikle en kolay yoldur. - - Yeni bir belirteç üretmeniz gerekiyorsa, standart Matrix Client-Server API üzerinden giriş yapabilirsiniz: +3. Alıcı kullanıcının access token'ını alın. + - Bot'un token'ını değil, alıcı kullanıcının token'ını kullanın. + - Mevcut bir istemci oturumu token'ını yeniden kullanmak genellikle en kolay yoldur. + - Yeni bir token üretmeniz gerekiyorsa, standart Matrix Client-Server API üzerinden giriş yapabilirsiniz: ```bash curl -sS -X POST \ @@ -317,8 +318,8 @@ curl -sS \ "https://matrix.example.org/_matrix/client/v3/pushers" ``` -Bu, etkin pusher/cihaz döndürmüyorsa aşağıdaki OpenClaw -kuralını eklemeden önce önce normal Matrix bildirimlerini düzeltin. +Bu çağrı etkin pusher/dönüş cihazı döndürmüyorsa, aşağıdaki +OpenClaw kuralını eklemeden önce önce normal Matrix bildirimlerini düzeltin. OpenClaw, sonlandırılmış yalnızca metin içeren önizleme düzenlemelerini şu şekilde işaretler: @@ -361,22 +362,22 @@ curl -sS -X PUT \ Komutu çalıştırmadan önce şu değerleri değiştirin: - `https://matrix.example.org`: homeserver temel URL'niz -- `$USER_ACCESS_TOKEN`: alıcı kullanıcının erişim belirteci -- `openclaw-finalized-preview-botname`: bu alıcı kullanıcı için bu bota özgü benzersiz bir kural kimliği +- `$USER_ACCESS_TOKEN`: alıcı kullanıcının access token'ı +- `openclaw-finalized-preview-botname`: bu bot için bu alıcı kullanıcıya özgü bir kural kimliği - `@bot:example.org`: alıcı kullanıcının MXID'si değil, OpenClaw Matrix bot MXID'niz -Çok botlu kurulumlar için önemli: +Çoklu bot kurulumları için önemli: -- Push kuralları `ruleId` ile anahtarlanır. Aynı kural kimliğine karşı `PUT` komutunu yeniden çalıştırmak, o tek kuralı günceller. +- Push kuralları `ruleId` ile anahtarlanır. Aynı kural kimliğine karşı `PUT` işlemini yeniden çalıştırmak, o tek kuralı günceller. - Bir alıcı kullanıcı birden fazla OpenClaw Matrix bot hesabı için bildirim alacaksa, her `sender` eşleşmesi için benzersiz bir kural kimliğiyle bot başına bir kural oluşturun. -- Basit bir desen `openclaw-finalized-preview-` biçimidir; örneğin `openclaw-finalized-preview-ops` veya `openclaw-finalized-preview-support`. +- Basit bir desen `openclaw-finalized-preview-` şeklindedir; örneğin `openclaw-finalized-preview-ops` veya `openclaw-finalized-preview-support`. -Kural olay gönderenine göre değerlendirilir: +Kural, olayın göndericisine göre değerlendirilir: -- alıcı kullanıcının belirteciyle kimlik doğrulayın +- alıcı kullanıcının token'ı ile kimlik doğrulaması yapın - `sender` değerini OpenClaw bot MXID'siyle eşleştirin -6. Kuralın var olduğunu doğrulayın: +6. Kuralın mevcut olduğunu doğrulayın: ```bash curl -sS \ @@ -384,10 +385,10 @@ curl -sS \ "https://matrix.example.org/_matrix/client/v3/pushrules/global/override/openclaw-finalized-preview-botname" ``` -7. Akışlı bir yanıtı test edin. Sessiz modda oda sessiz bir taslak önizleme göstermeli ve son - yerinde düzenleme blok veya tur tamamlandığında tek bir kez bildirim göndermelidir. +7. Akışlı bir yanıtı test edin. Sessiz modda, oda sessiz bir taslak önizleme göstermeli ve son + yerinde düzenleme blok veya dönüş tamamlandığında bir kez bildirim göndermelidir. -Daha sonra kuralı kaldırmanız gerekirse, aynı kural kimliğini alıcı kullanıcının belirteciyle silin: +Kuralı daha sonra kaldırmanız gerekirse, aynı kural kimliğini alıcı kullanıcının token'ı ile silin: ```bash curl -sS -X DELETE \ @@ -397,33 +398,33 @@ curl -sS -X DELETE \ Notlar: -- Kuralı botun değil, alıcı kullanıcının erişim belirteciyle oluşturun. -- Yeni kullanıcı tanımlı `override` kuralları varsayılan bastırma kurallarının önüne eklenir; bu nedenle ek bir sıralama parametresi gerekmez. -- Bu yalnızca OpenClaw'un güvenle yerinde sonlandırabildiği yalnızca metin içeren önizleme düzenlemelerini etkiler. Medya geri dönüşleri ve eski önizleme geri dönüşleri hâlâ normal Matrix teslimatını kullanır. -- `GET /_matrix/client/v3/pushers` hiçbir pusher göstermiyorsa, kullanıcının bu hesap/cihaz için henüz çalışan Matrix push teslimatı yoktur. +- Kuralı botun token'ı ile değil, alıcı kullanıcının access token'ı ile oluşturun. +- Yeni kullanıcı tanımlı `override` kuralları varsayılan bastırma kurallarının önüne eklenir, bu nedenle ek bir sıralama parametresi gerekmez. +- Bu yalnızca OpenClaw'ın güvenli şekilde yerinde sonlandırabildiği yalnızca metin içeren önizleme düzenlemelerini etkiler. Medya fallback'leri ve eski önizleme fallback'leri yine normal Matrix teslimatını kullanır. +- `GET /_matrix/client/v3/pushers` hiçbir pusher göstermiyorsa, kullanıcı bu hesap/cihaz için henüz çalışan Matrix push teslimatına sahip değildir. #### Synapse -Synapse için yukarıdaki kurulum genellikle tek başına yeterlidir: +Synapse için, yukarıdaki kurulum genellikle tek başına yeterlidir: - Sonlandırılmış OpenClaw önizleme bildirimleri için özel bir `homeserver.yaml` değişikliği gerekmez. -- Synapse dağıtımınız zaten normal Matrix push bildirimleri gönderiyorsa, kullanıcı belirteci + yukarıdaki `pushrules` çağrısı temel kurulum adımıdır. -- Synapse'i bir reverse proxy veya workers arkasında çalıştırıyorsanız, `/_matrix/client/.../pushrules/` yolunun Synapse'e doğru ulaştığından emin olun. -- Synapse workers kullanıyorsanız, pusher'ların sağlıklı olduğundan emin olun. Push teslimatı ana süreç veya `synapse.app.pusher` / yapılandırılmış pusher worker'ları tarafından yönetilir. +- Synapse dağıtımınız zaten normal Matrix push bildirimleri gönderiyorsa, kullanıcı token'ı + yukarıdaki `pushrules` çağrısı ana kurulum adımıdır. +- Synapse'i bir reverse proxy veya worker'ların arkasında çalıştırıyorsanız, `/_matrix/client/.../pushrules/` yolunun Synapse'e doğru ulaştığından emin olun. +- Synapse worker'ları kullanıyorsanız, pusher'ların sağlıklı olduğundan emin olun. Push teslimatı ana süreç veya `synapse.app.pusher` / yapılandırılmış pusher worker'ları tarafından işlenir. #### Tuwunel -Tuwunel için yukarıda gösterilen aynı kurulum akışını ve push-rule API çağrısını kullanın: +Tuwunel için, yukarıda gösterilen aynı kurulum akışını ve push-rule API çağrısını kullanın: - Sonlandırılmış önizleme işaretleyicisinin kendisi için Tuwunel'e özgü bir yapılandırma gerekmez. -- Normal Matrix bildirimleri bu kullanıcı için zaten çalışıyorsa, kullanıcı belirteci + yukarıdaki `pushrules` çağrısı temel kurulum adımıdır. -- Kullanıcı başka bir cihazda etkinken bildirimler kayboluyor gibi görünüyorsa, `suppress_push_when_active` etkin mi kontrol edin. Tuwunel bu seçeneği 12 Eylül 2025 tarihinde Tuwunel 1.4.2'de ekledi ve bir cihaz etkinken diğer cihazlara yapılan push'ları bilinçli olarak bastırabilir. +- O kullanıcı için normal Matrix bildirimleri zaten çalışıyorsa, kullanıcı token'ı + yukarıdaki `pushrules` çağrısı ana kurulum adımıdır. +- Kullanıcı başka bir cihazda etkinken bildirimler kayboluyor gibi görünüyorsa, `suppress_push_when_active` seçeneğinin etkin olup olmadığını kontrol edin. Tuwunel bu seçeneği 12 Eylül 2025'te Tuwunel 1.4.2 sürümünde ekledi ve bir cihaz etkinken diğer cihazlara gönderilen push'ları kasıtlı olarak bastırabilir. -## Bottan bota odalar +## Botlar arası odalar Varsayılan olarak, yapılandırılmış diğer OpenClaw Matrix hesaplarından gelen Matrix mesajları yok sayılır. -Ajanlar arası Matrix trafiğini bilinçli olarak istiyorsanız `allowBots` kullanın: +Kasıtlı olarak agent'lar arası Matrix trafiği istiyorsanız `allowBots` kullanın: ```json5 { @@ -440,17 +441,17 @@ Ajanlar arası Matrix trafiğini bilinçli olarak istiyorsanız `allowBots` kull } ``` -- `allowBots: true`, izin verilen odalar ve DM'lerde yapılandırılmış diğer Matrix bot hesaplarından gelen mesajları kabul eder. -- `allowBots: "mentions"`, bu mesajları odalarda yalnızca bu bottan görünür biçimde bahsettiklerinde kabul eder. DM'lere yine izin verilir. -- `groups..allowBots`, hesap düzeyindeki ayarı tek bir oda için geçersiz kılar. -- OpenClaw, kendine yanıt döngülerini önlemek için aynı Matrix kullanıcı kimliğinden gelen mesajları yine yok sayar. -- Matrix burada yerel bir bot bayrağı sunmaz; OpenClaw, "bot tarafından yazılmış" ifadesini "bu OpenClaw gateway'inde yapılandırılmış başka bir Matrix hesabı tarafından gönderilmiş" olarak değerlendirir. +- `allowBots: true`, izin verilen odalarda ve DM'lerde yapılandırılmış diğer Matrix bot hesaplarından gelen mesajları kabul eder. +- `allowBots: "mentions"`, bu mesajları yalnızca odalarda bu bottan görünür şekilde bahsettiklerinde kabul eder. DM'lere yine izin verilir. +- `groups..allowBots`, tek bir oda için hesap düzeyindeki ayarı geçersiz kılar. +- OpenClaw, kendi kendine yanıt döngülerini önlemek için aynı Matrix kullanıcı kimliğinden gelen mesajları yine yok sayar. +- Matrix burada yerel bir bot işareti sunmaz; OpenClaw, "bot-authored" kavramını "bu OpenClaw gateway üzerinde yapılandırılmış başka bir Matrix hesabı tarafından gönderilmiş" olarak ele alır. -Paylaşılan odalarda bottan bota trafiği etkinleştirirken katı oda izin listeleri ve mention gereksinimleri kullanın. +Paylaşılan odalarda botlar arası trafiği etkinleştirirken sıkı oda allowlist'leri ve bahsetme gereksinimleri kullanın. ## Şifreleme ve doğrulama -Şifreli (E2EE) odalarda, giden görsel olayları `thumbnail_file` kullanır; böylece görsel önizlemeleri tam ek ile birlikte şifrelenir. Şifrelenmemiş odalarda hâlâ düz `thumbnail_url` kullanılır. Yapılandırma gerekmez — eklenti E2EE durumunu otomatik olarak algılar. +Şifrelenmiş (E2EE) odalarda, giden görsel olayları `thumbnail_file` kullanır; böylece görsel önizlemeleri tam ek ile birlikte şifrelenir. Şifrelenmemiş odalar hâlâ düz `thumbnail_url` kullanır. Yapılandırma gerekmez — Plugin, E2EE durumunu otomatik olarak algılar. Şifrelemeyi etkinleştirin: @@ -474,13 +475,13 @@ Doğrulama durumunu kontrol edin: openclaw matrix verify status ``` -Ayrıntılı durum (tam tanılama): +Ayrıntılı durum (tam tanı): ```bash openclaw matrix verify status --verbose ``` -Makine tarafından okunabilir çıktıda saklanan kurtarma anahtarını da ekleyin: +Makine tarafından okunabilir çıktıya saklanan recovery key'i ekleyin: ```bash openclaw matrix verify status --include-recovery-key --json @@ -492,19 +493,19 @@ Cross-signing ve doğrulama durumunu bootstrap edin: openclaw matrix verify bootstrap ``` -Ayrıntılı bootstrap tanılaması: +Ayrıntılı bootstrap tanısı: ```bash openclaw matrix verify bootstrap --verbose ``` -Bootstrap işleminden önce yeni bir cross-signing kimliği sıfırlamasını zorlayın: +Bootstrap öncesinde yeni bir cross-signing kimliği sıfırlamasını zorlayın: ```bash openclaw matrix verify bootstrap --force-reset-cross-signing ``` -Bu cihazı bir kurtarma anahtarıyla doğrulayın: +Bu cihazı bir recovery key ile doğrulayın: ```bash openclaw matrix verify device "" @@ -522,38 +523,38 @@ Oda anahtarı yedeği sağlığını kontrol edin: openclaw matrix verify backup status ``` -Ayrıntılı yedek sağlığı tanılaması: +Ayrıntılı yedek sağlığı tanısı: ```bash openclaw matrix verify backup status --verbose ``` -Oda anahtarlarını sunucu yedeğinden geri yükleyin: +Sunucu yedeğinden oda anahtarlarını geri yükleyin: ```bash openclaw matrix verify backup restore ``` -Ayrıntılı geri yükleme tanılaması: +Ayrıntılı geri yükleme tanısı: ```bash openclaw matrix verify backup restore --verbose ``` -Mevcut sunucu yedeğini silin ve yeni bir yedek temel çizgisi oluşturun. Saklanan +Geçerli sunucu yedeğini silin ve yeni bir yedek temel çizgisi oluşturun. Saklanan yedek anahtarı temiz biçimde yüklenemiyorsa, bu sıfırlama secret storage'ı da yeniden oluşturabilir; böylece -gelecekteki cold start'lar yeni yedek anahtarını yükleyebilir: +gelecekteki soğuk başlangıçlar yeni yedek anahtarını yükleyebilir: ```bash openclaw matrix verify backup reset --yes ``` -Tüm `verify` komutları varsayılan olarak kısadır (sessiz dahili SDK günlükleme dahil) ve ayrıntılı tanılamayı yalnızca `--verbose` ile gösterir. +Tüm `verify` komutları varsayılan olarak kısa çıktı verir (sessiz dahili SDK günlükleri dahil) ve ayrıntılı tanıyı yalnızca `--verbose` ile gösterir. Betik yazarken tam makine tarafından okunabilir çıktı için `--json` kullanın. -Çok hesaplı kurulumlarda Matrix CLI komutları, siz `--account ` vermediğiniz sürece örtük Matrix varsayılan hesabını kullanır. -Birden çok adlandırılmış hesap yapılandırırsanız, önce `channels.matrix.defaultAccount` ayarlayın; aksi halde bu örtük CLI işlemleri durur ve sizden açıkça bir hesap seçmenizi ister. -Doğrulama veya cihaz işlemlerinin açıkça adlandırılmış bir hesabı hedeflemesini istediğiniz her durumda `--account` kullanın: +Çok hesaplı kurulumlarda Matrix CLI komutları, `--account ` geçmezseniz örtük Matrix varsayılan hesabını kullanır. +Birden fazla adlandırılmış hesap yapılandırırsanız, önce `channels.matrix.defaultAccount` ayarlayın; aksi halde bu örtük CLI işlemleri durur ve sizden açıkça bir hesap seçmenizi ister. +Doğrulama veya cihaz işlemlerinin açıkça adlandırılmış bir hesabı hedeflemesini istediğinizde `--account` kullanın: ```bash openclaw matrix verify status --account assistant @@ -561,38 +562,38 @@ openclaw matrix verify backup restore --account assistant openclaw matrix devices list --account assistant ``` -Adlandırılmış bir hesap için şifreleme devre dışıysa veya kullanılamıyorsa, Matrix uyarıları ve doğrulama hataları örneğin `channels.matrix.accounts.assistant.encryption` gibi bu hesabın yapılandırma anahtarını işaret eder. +Adlandırılmış bir hesap için şifreleme devre dışıysa veya kullanılamıyorsa, Matrix uyarıları ve doğrulama hataları o hesabın yapılandırma anahtarını işaret eder; örneğin `channels.matrix.accounts.assistant.encryption`. -### "Doğrulanmış" ne anlama gelir +### "Doğrulandı" ne anlama gelir -OpenClaw bu Matrix cihazını yalnızca kendi cross-signing kimliğiniz tarafından doğrulandığında doğrulanmış kabul eder. -Pratikte `openclaw matrix verify status --verbose`, üç güven sinyali sunar: +OpenClaw, bu Matrix cihazını yalnızca kendi cross-signing kimliğiniz tarafından doğrulandığında doğrulanmış olarak kabul eder. +Pratikte `openclaw matrix verify status --verbose`, üç güven sinyali gösterir: -- `Locally trusted`: bu cihaz yalnızca geçerli istemci tarafından güvenilir kabul edilir -- `Cross-signing verified`: SDK, cihazı cross-signing üzerinden doğrulanmış olarak raporlar +- `Locally trusted`: bu cihaza yalnızca mevcut istemci güvenir +- `Cross-signing verified`: SDK, cihazın cross-signing yoluyla doğrulandığını bildirir - `Signed by owner`: cihaz, kendi self-signing anahtarınız tarafından imzalanmıştır -`Verified by owner`, yalnızca cross-signing doğrulaması veya sahip imzası mevcut olduğunda `yes` olur. -Yalnızca yerel güven, OpenClaw'un cihazı tamamen doğrulanmış kabul etmesi için yeterli değildir. +`Verified by owner`, yalnızca cross-signing doğrulaması veya owner-signing mevcut olduğunda `yes` olur. +Yalnızca yerel güven, OpenClaw'ın cihazı tam doğrulanmış kabul etmesi için yeterli değildir. ### Bootstrap ne yapar `openclaw matrix verify bootstrap`, şifreli Matrix hesapları için onarım ve kurulum komutudur. -Sırayla şunların tümünü yapar: +Sırayla aşağıdakilerin tümünü yapar: -- mümkün olduğunda mevcut kurtarma anahtarını yeniden kullanarak secret storage'ı bootstrap eder -- cross-signing'i bootstrap eder ve eksik herkese açık cross-signing anahtarlarını yükler -- mevcut cihazı işaretlemeyi ve cross-signing ile imzalamayı dener -- zaten mevcut değilse yeni bir sunucu tarafı oda anahtarı yedeği oluşturur +- mümkün olduğunda mevcut recovery key'i yeniden kullanarak secret storage'ı bootstrap eder +- cross-signing'i bootstrap eder ve eksik genel cross-signing anahtarlarını yükler +- mevcut cihazı işaretlemeyi ve cross-sign etmeyi dener +- henüz yoksa sunucu tarafında yeni bir oda anahtarı yedeği oluşturur -Homeserver, cross-signing anahtarlarını yüklemek için etkileşimli kimlik doğrulama gerektiriyorsa OpenClaw önce kimlik doğrulama olmadan, sonra `m.login.dummy` ile, `channels.matrix.password` yapılandırılmışsa da `m.login.password` ile yüklemeyi dener. +Homeserver, cross-signing anahtarlarını yüklemek için etkileşimli kimlik doğrulama gerektiriyorsa OpenClaw önce kimlik doğrulama olmadan, ardından `m.login.dummy` ile, `channels.matrix.password` yapılandırılmışsa da `m.login.password` ile yüklemeyi dener. -`--force-reset-cross-signing` seçeneğini yalnızca mevcut cross-signing kimliğini bilinçli olarak silmek ve yenisini oluşturmak istediğinizde kullanın. +`--force-reset-cross-signing` seçeneğini yalnızca mevcut cross-signing kimliğini bilerek atmak ve yenisini oluşturmak istediğinizde kullanın. -Mevcut oda anahtarı yedeğini bilinçli olarak silmek ve gelecekteki mesajlar için yeni -bir yedek temel çizgisi başlatmak istiyorsanız `openclaw matrix verify backup reset --yes` kullanın. -Bunu yalnızca kurtarılamayan eski şifreli geçmişin erişilemez kalacağını -ve OpenClaw'un mevcut yedek sırrı güvenle yüklenemiyorsa secret storage'ı yeniden oluşturabileceğini kabul ediyorsanız yapın. +Mevcut oda anahtarı yedeğini bilerek atmak ve gelecekteki mesajlar için yeni +bir yedek temel çizgisi başlatmak istiyorsanız, `openclaw matrix verify backup reset --yes` kullanın. +Bunu yalnızca kurtarılamayan eski şifreli geçmişin erişilemez kalacağını ve OpenClaw'ın mevcut yedek +gizlisi güvenle yüklenemiyorsa secret storage'ı yeniden oluşturabileceğini kabul ediyorsanız yapın. ### Yeni yedek temel çizgisi @@ -604,23 +605,23 @@ openclaw matrix verify backup status --verbose openclaw matrix verify status ``` -Açıkça adlandırılmış bir Matrix hesabını hedeflemek istediğinizde her komuta `--account ` ekleyin. +Adlandırılmış bir Matrix hesabını açıkça hedeflemek istediğinizde her komuta `--account ` ekleyin. ### Başlangıç davranışı -`encryption: true` olduğunda Matrix, `startupVerification` değerini varsayılan olarak `"if-unverified"` yapar. -Başlangıçta bu cihaz hâlâ doğrulanmamışsa Matrix, başka bir Matrix istemcisinde self-verification isteyecek, -zaten beklemede olan bir istek varken yinelenen istekleri atlayacak ve yeniden başlatmalardan sonra tekrar denemeden önce yerel bir cooldown uygulayacaktır. +`encryption: true` olduğunda Matrix varsayılan olarak `startupVerification` değerini `"if-unverified"` yapar. +Başlangıçta bu cihaz hâlâ doğrulanmamışsa Matrix, başka bir Matrix istemcisinde self-verification ister, +biri zaten beklemedeyken yinelenen istekleri atlar ve yeniden başlatmalardan sonra yeniden denemeden önce yerel bir bekleme süresi uygular. Başarısız istek denemeleri varsayılan olarak başarılı istek oluşturmaya göre daha erken yeniden denenir. Otomatik başlangıç isteklerini devre dışı bırakmak için `startupVerification: "off"` ayarlayın veya daha kısa ya da daha uzun bir yeniden deneme penceresi istiyorsanız `startupVerificationCooldownHours` değerini ayarlayın. -Başlangıç ayrıca otomatik olarak muhafazakar bir crypto bootstrap geçişi gerçekleştirir. -Bu geçiş önce mevcut secret storage ve cross-signing kimliğini yeniden kullanmayı dener ve siz açık bir bootstrap onarım akışı çalıştırmadığınız sürece cross-signing'i sıfırlamaktan kaçınır. +Başlangıç ayrıca otomatik olarak tutucu bir kripto bootstrap geçişi de yapar. +Bu geçiş önce mevcut secret storage ve cross-signing kimliğini yeniden kullanmayı dener ve açık bir bootstrap onarım akışı çalıştırmadığınız sürece cross-signing'i sıfırlamaktan kaçınır. -Başlangıç bozuk bootstrap durumu bulursa ve `channels.matrix.password` yapılandırılmışsa, OpenClaw daha katı bir onarım yolu deneyebilir. -Geçerli cihaz zaten owner-signed ise OpenClaw bu kimliği otomatik olarak sıfırlamak yerine korur. +Başlangıç bozuk bootstrap durumu bulursa ve `channels.matrix.password` yapılandırılmışsa, OpenClaw daha sıkı bir onarım yolu deneyebilir. +Mevcut cihaz zaten owner-signed ise, OpenClaw bu kimliği otomatik olarak sıfırlamak yerine korur. -Tam yükseltme akışı, sınırlar, kurtarma komutları ve yaygın geçiş mesajları için [Matrix migration](/tr/install/migrating-matrix) bölümüne bakın. +Tam yükseltme akışı, sınırlar, kurtarma komutları ve yaygın geçiş mesajları için [Matrix migration](/tr/install/migrating-matrix) sayfasına bakın. ### Doğrulama bildirimleri @@ -628,22 +629,22 @@ Matrix, doğrulama yaşam döngüsü bildirimlerini doğrudan katı DM doğrulam Buna şunlar dahildir: - doğrulama isteği bildirimleri -- doğrulama hazır bildirimleri ("Emoji ile doğrula" yönlendirmesi açıkça belirtilir) -- doğrulama başlatma ve tamamlama bildirimleri -- mevcut olduğunda SAS ayrıntıları (emoji ve ondalık) +- doğrulama hazır bildirimleri (açık "Emoji ile doğrula" yönlendirmesiyle) +- doğrulama başlangıç ve tamamlanma bildirimleri +- varsa SAS ayrıntıları (emoji ve ondalık) -Başka bir Matrix istemcisinden gelen doğrulama istekleri OpenClaw tarafından izlenir ve otomatik kabul edilir. -Self-verification akışlarında OpenClaw, emoji doğrulaması kullanılabilir olduğunda SAS akışını da otomatik başlatır ve kendi tarafını onaylar. -Başka bir Matrix kullanıcısı/cihazından gelen doğrulama isteklerinde OpenClaw isteği otomatik kabul eder ve ardından SAS akışının normal şekilde ilerlemesini bekler. -Doğrulamayı tamamlamak için yine de Matrix istemcinizde emoji veya ondalık SAS değerini karşılaştırmanız ve orada "Eşleşiyorlar" seçeneğini onaylamanız gerekir. +Başka bir Matrix istemcisinden gelen doğrulama istekleri OpenClaw tarafından izlenir ve otomatik olarak kabul edilir. +Self-verification akışları için OpenClaw, emoji doğrulaması kullanılabilir olduğunda SAS akışını da otomatik olarak başlatır ve kendi tarafını onaylar. +Başka bir Matrix kullanıcısı/cihazından gelen doğrulama istekleri için OpenClaw isteği otomatik olarak kabul eder ve ardından SAS akışının normal şekilde ilerlemesini bekler. +Doğrulamayı tamamlamak için yine de Matrix istemcinizde emoji veya ondalık SAS'ı karşılaştırmanız ve orada "Eşleşiyorlar"ı onaylamanız gerekir. -OpenClaw kendi başlattığı yinelenen akışları körü körüne otomatik kabul etmez. Başlangıç, bir self-verification isteği zaten beklemedeyse yeni bir istek oluşturmayı atlar. +OpenClaw, kendi başlattığı yinelenen akışları körü körüne otomatik kabul etmez. Bir self-verification isteği zaten beklemedeyse başlangıç yeni bir istek oluşturmayı atlar. -Doğrulama protokolü/sistem bildirimleri ajan sohbet işlem hattına iletilmez, bu yüzden `NO_REPLY` üretmezler. +Doğrulama protokolü/sistem bildirimleri agent sohbet ardışık düzenine iletilmez; bu nedenle `NO_REPLY` üretmezler. ### Cihaz hijyeni -OpenClaw tarafından yönetilen eski Matrix cihazları hesapta birikebilir ve şifreli oda güvenini anlamayı zorlaştırabilir. +Eski OpenClaw tarafından yönetilen Matrix cihazları hesapta birikebilir ve şifreli oda güveninin anlaşılmasını zorlaştırabilir. Bunları şu komutla listeleyin: ```bash @@ -656,22 +657,23 @@ Eski OpenClaw tarafından yönetilen cihazları şu komutla kaldırın: openclaw matrix devices prune-stale ``` -### Crypto store +### Kripto deposu -Matrix E2EE, Node içinde resmi `matrix-js-sdk` Rust crypto yolunu ve IndexedDB shim olarak `fake-indexeddb` kullanır. Crypto durumu bir anlık görüntü dosyasına (`crypto-idb-snapshot.json`) kalıcı olarak kaydedilir ve başlangıçta geri yüklenir. Anlık görüntü dosyası, kısıtlayıcı dosya izinleriyle saklanan hassas çalışma zamanı durumudur. +Matrix E2EE, Node içinde resmi `matrix-js-sdk` Rust kripto yolunu kullanır; IndexedDB shim'i olarak `fake-indexeddb` kullanılır. Kripto durumu bir anlık görüntü dosyasına (`crypto-idb-snapshot.json`) kalıcı olarak yazılır ve başlangıçta geri yüklenir. Anlık görüntü dosyası, kısıtlayıcı dosya izinleriyle saklanan hassas çalışma zamanı durumudur. -Şifreli çalışma zamanı durumu, hesap başına, kullanıcı başına token-hash kökleri altında -`~/.openclaw/matrix/accounts//__//` dizininde bulunur. -Bu dizin sync store'u (`bot-storage.json`), crypto store'u (`crypto/`), -kurtarma anahtarı dosyasını (`recovery-key.json`), IndexedDB anlık görüntüsünü (`crypto-idb-snapshot.json`), -thread bağlarını (`thread-bindings.json`) ve başlangıç doğrulama durumunu (`startup-verification.json`) içerir. -Belirteç değiştiğinde ama hesap kimliği aynı kaldığında OpenClaw, bu hesap/homeserver/kullanıcı demeti için -mevcut en iyi kökü yeniden kullanır; böylece önceki sync durumu, crypto durumu, thread bağları +Şifrelenmiş çalışma zamanı durumu, hesap başına ve kullanıcı token-hash kökleri altında +`~/.openclaw/matrix/accounts//__//` +dizininde bulunur. +Bu dizin sync deposunu (`bot-storage.json`), kripto deposunu (`crypto/`), +recovery key dosyasını (`recovery-key.json`), IndexedDB anlık görüntüsünü (`crypto-idb-snapshot.json`), +iş parçacığı bağlarını (`thread-bindings.json`) ve başlangıç doğrulama durumunu (`startup-verification.json`) içerir. +Token değiştiğinde ancak hesap kimliği aynı kaldığında, OpenClaw o hesap/homeserver/kullanıcı üçlüsü için +mevcut en iyi kökü yeniden kullanır; böylece önceki sync durumu, kripto durumu, iş parçacığı bağları ve başlangıç doğrulama durumu görünür kalır. ## Profil yönetimi -Seçili hesap için Matrix self-profile'ı şu komutla güncelleyin: +Seçilen hesap için Matrix self-profile'ını şu komutla güncelleyin: ```bash openclaw matrix profile set --name "OpenClaw Assistant" @@ -680,47 +682,47 @@ openclaw matrix profile set --avatar-url https://cdn.example.org/avatar.png Açıkça adlandırılmış bir Matrix hesabını hedeflemek istediğinizde `--account ` ekleyin. -Matrix `mxc://` avatar URL'lerini doğrudan kabul eder. Bir `http://` veya `https://` avatar URL'si verdiğinizde OpenClaw önce bunu Matrix'e yükler ve çözümlenen `mxc://` URL'sini tekrar `channels.matrix.avatarUrl` içine (veya seçilen hesap geçersiz kılmasına) kaydeder. +Matrix, `mxc://` avatar URL'lerini doğrudan kabul eder. `http://` veya `https://` avatar URL'si verdiğinizde OpenClaw önce bunu Matrix'e yükler ve çözümlenen `mxc://` URL'sini tekrar `channels.matrix.avatarUrl` içine (veya seçilen hesap geçersiz kılmasına) yazar. -## Thread'ler +## İş parçacıkları -Matrix, hem otomatik yanıtlar hem de mesaj aracı gönderimleri için yerel Matrix thread'lerini destekler. +Matrix, hem otomatik yanıtlar hem de mesaj aracı gönderimleri için yerel Matrix iş parçacıklarını destekler. -- `dm.sessionScope: "per-user"` (varsayılan), Matrix DM yönlendirmesini gönderen kapsamlı tutar; böylece aynı eşe çözümlenen birden fazla DM odası tek bir oturumu paylaşabilir. -- `dm.sessionScope: "per-room"`, her Matrix DM odasını kendi oturum anahtarına izole ederken normal DM kimlik doğrulama ve izin listesi denetimlerini kullanmaya devam eder. -- Açık Matrix konuşma bağları yine de `dm.sessionScope` üzerinde önceliklidir; bu yüzden bağlı odalar ve thread'ler seçilmiş hedef oturumlarını korur. -- `threadReplies: "off"`, yanıtları üst düzeyde tutar ve gelen thread'li mesajları ana oturum üzerinde tutar. -- `threadReplies: "inbound"`, yalnızca gelen mesaj zaten o thread içindeyse thread içinde yanıt verir. -- `threadReplies: "always"`, oda yanıtlarını tetikleyici mesaja köklenen bir thread içinde tutar ve o konuşmayı ilk tetikleyici mesajdan itibaren eşleşen thread kapsamlı oturum üzerinden yönlendirir. -- `dm.threadReplies`, yalnızca DM'ler için üst düzey ayarı geçersiz kılar. Örneğin, odalardaki thread'leri izole tutarken DM'leri düz tutabilirsiniz. -- Gelen thread'li mesajlar, thread kök mesajını ek ajan bağlamı olarak içerir. -- Mesaj aracı gönderimleri, açık bir `threadId` verilmediği sürece hedef aynı odaya ya da aynı DM kullanıcı hedefineyse mevcut Matrix thread'ini otomatik devralır. -- Aynı oturumlu DM kullanıcı hedefi yeniden kullanımı yalnızca mevcut oturum meta verisi aynı Matrix hesabındaki aynı DM eşini kanıtlarsa devreye girer; aksi halde OpenClaw normal kullanıcı kapsamlı yönlendirmeye geri döner. -- OpenClaw, bir Matrix DM odasının aynı paylaşılan Matrix DM oturumunda başka bir DM odasıyla çakıştığını gördüğünde, thread bağları etkinse ve `dm.sessionScope` ipucu varsa o odaya bir defalık `/focus` kaçış yolunu içeren bir `m.notice` gönderir. -- Çalışma zamanı thread bağları Matrix için desteklenir. `/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` ve thread'e bağlı `/acp spawn`, Matrix odalarında ve DM'lerde çalışır. -- Üst düzey Matrix oda/DM `/focus`, `threadBindings.spawnSubagentSessions=true` olduğunda yeni bir Matrix thread'i oluşturur ve bunu hedef oturuma bağlar. -- Mevcut bir Matrix thread'i içinde `/focus` veya `/acp spawn --thread here` çalıştırmak bunun yerine geçerli thread'i bağlar. +- `dm.sessionScope: "per-user"` (varsayılan), Matrix DM yönlendirmesini gönderici kapsamlı tutar; böylece aynı eşe çözümlendiklerinde birden fazla DM odası tek bir oturumu paylaşabilir. +- `dm.sessionScope: "per-room"`, normal DM kimlik doğrulama ve allowlist kontrollerini kullanmaya devam ederken her Matrix DM odasını kendi oturum anahtarına izole eder. +- Açık Matrix konuşma bağları yine de `dm.sessionScope` ayarına üstün gelir; bu nedenle bağlanmış odalar ve iş parçacıkları seçtikleri hedef oturumu korur. +- `threadReplies: "off"`, yanıtları üst düzeyde tutar ve gelen iş parçacıklı mesajları üst oturumda tutar. +- `threadReplies: "inbound"`, yalnızca gelen mesaj zaten o iş parçacığındaysa iş parçacığı içinde yanıt verir. +- `threadReplies: "always"`, oda yanıtlarını tetikleyici mesaja köklenen bir iş parçacığında tutar ve o konuşmayı ilk tetikleyici mesajdan itibaren eşleşen iş parçacığı kapsamlı oturum üzerinden yönlendirir. +- `dm.threadReplies`, yalnızca DM'ler için üst düzey ayarı geçersiz kılar. Örneğin, odalardaki iş parçacıklarını izole ederken DM'leri düz tutabilirsiniz. +- Gelen iş parçacıklı mesajlar, iş parçacığının kök mesajını ek agent bağlamı olarak içerir. +- Mesaj aracı gönderimleri, açık bir `threadId` verilmediği sürece hedef aynı oda veya aynı DM kullanıcı hedefi olduğunda mevcut Matrix iş parçacığını otomatik olarak devralır. +- Aynı oturumlu DM kullanıcı hedefi yeniden kullanımı yalnızca mevcut oturum meta verileri aynı Matrix hesabındaki aynı DM eşini kanıtladığında devreye girer; aksi durumda OpenClaw normal kullanıcı kapsamlı yönlendirmeye geri döner. +- OpenClaw, bir Matrix DM odasının aynı paylaşılan Matrix DM oturumundaki başka bir DM odasıyla çakıştığını gördüğünde, iş parçacığı bağları etkinse ve `dm.sessionScope` ipucu varsa o odaya `/focus` kaçış kapağıyla tek seferlik bir `m.notice` gönderir. +- Çalışma zamanı iş parçacığı bağları Matrix için desteklenir. `/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` ve iş parçacığına bağlı `/acp spawn`, Matrix odalarında ve DM'lerde çalışır. +- Üst düzey Matrix oda/DM `/focus`, `threadBindings.spawnSubagentSessions=true` olduğunda yeni bir Matrix iş parçacığı oluşturur ve onu hedef oturuma bağlar. +- Mevcut bir Matrix iş parçacığı içinde `/focus` veya `/acp spawn --thread here` çalıştırmak bunun yerine o mevcut iş parçacığını bağlar. ## ACP konuşma bağları -Matrix odaları, DM'ler ve mevcut Matrix thread'leri, sohbet yüzeyi değiştirilmeden kalıcı ACP çalışma alanlarına dönüştürülebilir. +Matrix odaları, DM'ler ve mevcut Matrix iş parçacıkları, sohbet yüzeyi değiştirilmeden kalıcı ACP çalışma alanlarına dönüştürülebilir. Hızlı operatör akışı: -- Kullanmaya devam etmek istediğiniz Matrix DM, oda veya mevcut thread içinde `/acp spawn codex --bind here` çalıştırın. -- Üst düzey bir Matrix DM veya odasında mevcut DM/oda sohbet yüzeyi olarak kalır ve gelecekteki mesajlar oluşturulan ACP oturumuna yönlendirilir. -- Mevcut bir Matrix thread'i içinde `--bind here`, o geçerli thread'i yerinde bağlar. +- Kullanmaya devam etmek istediğiniz Matrix DM, oda veya mevcut iş parçacığı içinde `/acp spawn codex --bind here` çalıştırın. +- Üst düzey bir Matrix DM veya odasında, mevcut DM/oda sohbet yüzeyi olarak kalır ve gelecekteki mesajlar oluşturulan ACP oturumuna yönlendirilir. +- Mevcut bir Matrix iş parçacığı içinde `--bind here`, o mevcut iş parçacığını yerinde bağlar. - `/new` ve `/reset`, aynı bağlı ACP oturumunu yerinde sıfırlar. - `/acp close`, ACP oturumunu kapatır ve bağı kaldırır. Notlar: -- `--bind here` bir alt Matrix thread'i oluşturmaz. -- `threadBindings.spawnAcpSessions`, yalnızca OpenClaw'un bir alt Matrix thread'i oluşturması veya bağlaması gereken `/acp spawn --thread auto|here` için gereklidir. +- `--bind here` alt bir Matrix iş parçacığı oluşturmaz. +- `threadBindings.spawnAcpSessions`, yalnızca OpenClaw'ın alt bir Matrix iş parçacığı oluşturması veya bağlaması gereken `/acp spawn --thread auto|here` için gereklidir. -### Thread bağlama yapılandırması +### İş parçacığı bağlama yapılandırması -Matrix, genel varsayılanları `session.threadBindings` üzerinden devralır ve kanal başına geçersiz kılmaları da destekler: +Matrix, genel varsayılanları `session.threadBindings` içinden devralır ve ayrıca kanal başına geçersiz kılmaları destekler: - `threadBindings.enabled` - `threadBindings.idleHours` @@ -728,27 +730,27 @@ Matrix, genel varsayılanları `session.threadBindings` üzerinden devralır ve - `threadBindings.spawnSubagentSessions` - `threadBindings.spawnAcpSessions` -Matrix thread'e bağlı spawn işaretleri isteğe bağlıdır: +Matrix iş parçacığına bağlı oluşturma bayrakları isteğe bağlıdır: -- Üst düzey `/focus` komutunun yeni Matrix thread'leri oluşturup bağlamasına izin vermek için `threadBindings.spawnSubagentSessions: true` ayarlayın. -- `/acp spawn --thread auto|here` komutunun ACP oturumlarını Matrix thread'lerine bağlamasına izin vermek için `threadBindings.spawnAcpSessions: true` ayarlayın. +- Üst düzey `/focus` komutunun yeni Matrix iş parçacıkları oluşturup bağlamasına izin vermek için `threadBindings.spawnSubagentSessions: true` ayarlayın. +- `/acp spawn --thread auto|here` komutunun ACP oturumlarını Matrix iş parçacıklarına bağlamasına izin vermek için `threadBindings.spawnAcpSessions: true` ayarlayın. ## Tepkiler Matrix, giden tepki eylemlerini, gelen tepki bildirimlerini ve gelen ack tepkilerini destekler. -- Giden tepki araçları `channels["matrix"].actions.reactions` tarafından denetlenir. +- Giden tepki araçları `channels["matrix"].actions.reactions` ile denetlenir. - `react`, belirli bir Matrix olayına tepki ekler. -- `reactions`, belirli bir Matrix olayı için geçerli tepki özetini listeler. -- `emoji=""`, bot hesabının o olay üzerindeki kendi tepkilerini kaldırır. -- `remove: true`, bot hesabından yalnızca belirtilen emoji tepkisini kaldırır. +- `reactions`, belirli bir Matrix olayı için mevcut tepki özetini listeler. +- `emoji=""`, bot hesabının o olaydaki kendi tepkilerini kaldırır. +- `remove: true`, yalnızca bot hesabındaki belirtilen emoji tepkisini kaldırır. Ack tepkileri standart OpenClaw çözümleme sırasını kullanır: - `channels["matrix"].accounts..ackReaction` - `channels["matrix"].ackReaction` - `messages.ackReaction` -- ajan kimliği emoji geri dönüşü +- agent kimliği emoji fallback'i Ack tepki kapsamı şu sırayla çözülür: @@ -766,28 +768,28 @@ Davranış: - `reactionNotifications: "own"`, bot tarafından yazılmış Matrix mesajlarını hedeflediklerinde eklenen `m.reaction` olaylarını iletir. - `reactionNotifications: "off"`, tepki sistem olaylarını devre dışı bırakır. -- Matrix bunları bağımsız `m.reaction` kaldırmaları olarak değil redact işlemleri olarak sunduğu için tepki kaldırmaları sistem olaylarına dönüştürülmez. +- Tepki kaldırmaları sistem olaylarına dönüştürülmez; çünkü Matrix bunları bağımsız `m.reaction` kaldırmaları olarak değil, redaction olarak gösterir. ## Geçmiş bağlamı -- `channels.matrix.historyLimit`, bir Matrix oda mesajı ajanı tetiklediğinde `InboundHistory` olarak eklenecek son oda mesajı sayısını denetler. `messages.groupChat.historyLimit` değerine geri döner; her ikisi de ayarlı değilse etkin varsayılan `0` olur. Devre dışı bırakmak için `0` ayarlayın. +- `channels.matrix.historyLimit`, bir Matrix oda mesajı agent'ı tetiklediğinde kaç son oda mesajının `InboundHistory` olarak dahil edileceğini kontrol eder. `messages.groupChat.historyLimit` değerine fallback yapar; ikisi de ayarlanmazsa etkin varsayılan `0` olur. Devre dışı bırakmak için `0` ayarlayın. - Matrix oda geçmişi yalnızca oda içindir. DM'ler normal oturum geçmişini kullanmaya devam eder. -- Matrix oda geçmişi yalnızca pending durumundadır: OpenClaw henüz bir yanıt tetiklememiş oda mesajlarını arabelleğe alır, ardından bir mention veya başka bir tetikleyici geldiğinde bu pencerenin anlık görüntüsünü alır. -- Geçerli tetikleyici mesaj `InboundHistory` içine dahil edilmez; o tur için ana gelen gövdede kalır. -- Aynı Matrix olayının yeniden denemeleri, daha yeni oda mesajlarına doğru kaymak yerine özgün geçmiş anlık görüntüsünü yeniden kullanır. +- Matrix oda geçmişi yalnızca bekleyen mesajlardan oluşur: OpenClaw henüz yanıt tetiklememiş oda mesajlarını tamponlar, sonra bir mention veya başka bir tetikleyici geldiğinde bu pencerenin anlık görüntüsünü alır. +- Mevcut tetikleyici mesaj `InboundHistory` içine dahil edilmez; o dönüş için ana gelen gövdede kalır. +- Aynı Matrix olayının yeniden denemeleri, daha yeni oda mesajlarına kaymak yerine özgün geçmiş anlık görüntüsünü yeniden kullanır. ## Bağlam görünürlüğü -Matrix, alınan yanıt metni, thread kökleri ve pending geçmiş gibi ek oda bağlamı için paylaşılan `contextVisibility` denetimini destekler. +Matrix, getirilen yanıt metni, iş parçacığı kökleri ve bekleyen geçmiş gibi ek oda bağlamı için paylaşılan `contextVisibility` denetimini destekler. -- `contextVisibility: "all"` varsayılandır. Ek bağlam alındığı gibi korunur. -- `contextVisibility: "allowlist"`, ek bağlamı etkin oda/kullanıcı izin listesi denetimleri tarafından izin verilen gönderenlere filtreler. -- `contextVisibility: "allowlist_quote"`, `allowlist` gibi davranır ama yine de açık biçimde alıntılanmış tek bir yanıtı korur. +- `contextVisibility: "all"` varsayılandır. Ek bağlam alındığı gibi tutulur. +- `contextVisibility: "allowlist"`, ek bağlamı etkin oda/kullanıcı allowlist kontrolleri tarafından izin verilen göndericilerle sınırlar. +- `contextVisibility: "allowlist_quote"`, `allowlist` gibi davranır, ancak yine de tek bir açık alıntı yanıtı korur. -Bu ayar, ek bağlam görünürlüğünü etkiler; gelen mesajın kendisinin bir yanıtı tetikleyip tetikleyemeyeceğini etkilemez. -Tetikleme yetkilendirmesi hâlâ `groupPolicy`, `groups`, `groupAllowFrom` ve DM politika ayarlarından gelir. +Bu ayar, ek bağlam görünürlüğünü etkiler; gelen iletinin kendisinin bir yanıtı tetikleyip tetikleyemeyeceğini etkilemez. +Tetikleyici yetkilendirmesi yine `groupPolicy`, `groups`, `groupAllowFrom` ve DM ilke ayarlarından gelir. -## DM ve oda politikası +## DM ve oda ilkesi ```json5 { @@ -810,22 +812,22 @@ Tetikleme yetkilendirmesi hâlâ `groupPolicy`, `groups`, `groupAllowFrom` ve DM } ``` -Mention geçitleme ve izin listesi davranışı için [Groups](/tr/channels/groups) bölümüne bakın. +Mention geçitleme ve allowlist davranışı için [Groups](/tr/channels/groups) sayfasına bakın. -Matrix DM'leri için eşleme örneği: +Matrix DM'leri için pairing örneği: ```bash openclaw pairing list matrix openclaw pairing approve matrix ``` -Onaylanmamış bir Matrix kullanıcısı siz onu onaylamadan önce size mesaj göndermeye devam ederse, OpenClaw aynı bekleyen eşleme kodunu yeniden kullanır ve yeni bir kod üretmek yerine kısa bir cooldown sonrasında yeniden bir hatırlatma yanıtı gönderebilir. +Onaylanmamış bir Matrix kullanıcısı onaydan önce size mesaj göndermeye devam ederse, OpenClaw aynı bekleyen pairing kodunu yeniden kullanır ve yeni bir kod üretmek yerine kısa bir bekleme süresinden sonra yeniden bir hatırlatma yanıtı gönderebilir. -Paylaşılan DM eşleme akışı ve depolama düzeni için [Pairing](/tr/channels/pairing) bölümüne bakın. +Paylaşılan DM pairing akışı ve depolama düzeni için [Pairing](/tr/channels/pairing) sayfasına bakın. ## Doğrudan oda onarımı -Doğrudan mesaj durumu eşzamanını kaybederse, OpenClaw canlı DM yerine eski tekil odaları işaret eden eski `m.direct` eşlemeleriyle kalabilir. Bir eş için geçerli eşlemeyi şu komutla inceleyin: +Doğrudan mesaj durumu senkron dışına çıkarsa, OpenClaw canlı DM yerine eski tekli odaları işaret eden bayat `m.direct` eşlemeleriyle kalabilir. Bir eş için mevcut eşlemeyi şu komutla inceleyin: ```bash openclaw matrix direct inspect --user-id @alice:example.org @@ -839,47 +841,47 @@ openclaw matrix direct repair --user-id @alice:example.org Onarım akışı: -- zaten `m.direct` içinde eşlenmiş katı 1:1 bir DM'yi tercih eder -- bunun yerine o kullanıcıyla şu anda katılım sağlanmış herhangi bir katı 1:1 DM'ye geri döner -- sağlıklı bir DM yoksa yeni bir doğrudan oda oluşturur ve `m.direct` değerini yeniden yazar +- zaten `m.direct` içinde eşlenmiş olan katı 1:1 DM'yi tercih eder +- bu kullanıcıyla mevcutta katılınmış herhangi bir katı 1:1 DM'ye fallback yapar +- sağlıklı bir DM yoksa yeni bir doğrudan oda oluşturur ve `m.direct` eşlemesini yeniden yazar Onarım akışı eski odaları otomatik olarak silmez. Yalnızca sağlıklı DM'yi seçer ve eşlemeyi günceller; böylece yeni Matrix gönderimleri, doğrulama bildirimleri ve diğer doğrudan mesaj akışları yeniden doğru odayı hedefler. ## Exec onayları -Matrix, bir Matrix hesabı için yerel bir onay istemcisi gibi davranabilir. Yerel -DM/kanal yönlendirme ayarları yine exec onay yapılandırması altında yer alır: +Matrix, bir Matrix hesabı için yerel bir onay istemcisi olarak davranabilir. Yerel +DM/kanal yönlendirme düğmeleri yine exec onay yapılandırması altında bulunur: - `channels.matrix.execApprovals.enabled` -- `channels.matrix.execApprovals.approvers` (isteğe bağlı; `channels.matrix.dm.allowFrom` değerine geri döner) +- `channels.matrix.execApprovals.approvers` (isteğe bağlı; `channels.matrix.dm.allowFrom` değerine fallback yapar) - `channels.matrix.execApprovals.target` (`dm` | `channel` | `both`, varsayılan: `dm`) - `channels.matrix.execApprovals.agentFilter` - `channels.matrix.execApprovals.sessionFilter` -Onaylayıcılar `@owner:example.org` gibi Matrix kullanıcı kimlikleri olmalıdır. Matrix, `enabled` ayarsız veya `"auto"` olduğunda ve en az bir onaylayıcı çözümlenebildiğinde yerel onayları otomatik etkinleştirir. Exec onayları önce `execApprovals.approvers` kullanır ve `channels.matrix.dm.allowFrom` değerine geri dönebilir. Eklenti onayları `channels.matrix.dm.allowFrom` üzerinden yetkilendirilir. Matrix'i yerel bir onay istemcisi olarak açıkça devre dışı bırakmak için `enabled: false` ayarlayın. Aksi halde onay istekleri diğer yapılandırılmış onay yollarına veya onay geri dönüş politikasına döner. +Onaylayanlar `@owner:example.org` gibi Matrix kullanıcı kimlikleri olmalıdır. `enabled` ayarlanmamışsa veya `"auto"` ise ve en az bir onaylayan çözümlenebiliyorsa Matrix yerel onayları otomatik etkinleştirir. Exec onayları önce `execApprovals.approvers` kullanır ve `channels.matrix.dm.allowFrom` değerine fallback yapabilir. Plugin onayları `channels.matrix.dm.allowFrom` üzerinden yetkilendirilir. Matrix'i yerel bir onay istemcisi olarak açıkça devre dışı bırakmak için `enabled: false` ayarlayın. Aksi halde onay istekleri diğer yapılandırılmış onay yollarına veya onay fallback ilkesine geri düşer. Matrix yerel yönlendirmesi her iki onay türünü de destekler: -- `channels.matrix.execApprovals.*`, Matrix onay istemleri için yerel DM/kanal fanout modunu denetler. -- Exec onayları `execApprovals.approvers` veya `channels.matrix.dm.allowFrom` içinden exec onaylayıcı kümesini kullanır. -- Eklenti onayları Matrix DM izin listesini `channels.matrix.dm.allowFrom` içinden kullanır. -- Matrix tepki kısayolları ve mesaj güncellemeleri hem exec hem de eklenti onayları için geçerlidir. +- `channels.matrix.execApprovals.*`, Matrix onay istemleri için yerel DM/kanal fanout modunu kontrol eder. +- Exec onayları, `execApprovals.approvers` veya `channels.matrix.dm.allowFrom` içinden gelen exec onaylayan kümesini kullanır. +- Plugin onayları, `channels.matrix.dm.allowFrom` içindeki Matrix DM allowlist'ini kullanır. +- Matrix tepki kısayolları ve mesaj güncellemeleri hem exec hem de Plugin onayları için geçerlidir. Teslimat kuralları: -- `target: "dm"`, onay istemlerini onaylayıcı DM'lerine gönderir -- `target: "channel"`, istemi kaynak Matrix odasına veya DM'ye geri gönderir -- `target: "both"`, onaylayıcı DM'lerine ve kaynak Matrix odasına veya DM'ye gönderir +- `target: "dm"`, onay istemlerini onaylayan DM'lerine gönderir +- `target: "channel"`, istemi kaynak Matrix oda veya DM'ye geri gönderir +- `target: "both"`, onaylayan DM'lerine ve kaynak Matrix oda veya DM'ye gönderir -Matrix onay istemleri, birincil onay mesajında tepki kısayolları başlatır: +Matrix onay istemleri, birincil onay mesajında tepki kısayollarını başlatır: - `✅` = bir kez izin ver - `❌` = reddet -- `♾️` = bu karar etkin exec politikası tarafından izin verildiğinde her zaman izin ver +- `♾️` = bu karar etkin exec ilkesi tarafından izin verildiğinde her zaman izin ver -Onaylayıcılar o mesaja tepki verebilir veya geri dönüş slash komutlarını kullanabilir: `/approve allow-once`, `/approve allow-always` veya `/approve deny`. +Onaylayanlar bu mesaja tepki verebilir veya fallback slash komutlarını kullanabilir: `/approve allow-once`, `/approve allow-always` veya `/approve deny`. -Yalnızca çözümlenmiş onaylayıcılar izin verebilir veya reddedebilir. Exec onaylarında kanal teslimatı komut metnini içerir, bu nedenle `channel` veya `both` seçeneklerini yalnızca güvenilir odalarda etkinleştirin. +Yalnızca çözümlenmiş onaylayanlar onay verebilir veya reddedebilir. Exec onaylarında kanal teslimatı komut metnini içerir; bu nedenle `channel` veya `both` seçeneklerini yalnızca güvenilen odalarda etkinleştirin. Hesap başına geçersiz kılma: @@ -887,7 +889,7 @@ Hesap başına geçersiz kılma: İlgili belgeler: [Exec approvals](/tr/tools/exec-approvals) -## Çok hesap +## Çok hesaplı ```json5 { @@ -917,23 +919,24 @@ Hesap başına geçersiz kılma: } ``` -Üst düzey `channels.matrix` değerleri, bir hesap bunları geçersiz kılmadıkça adlandırılmış hesaplar için varsayılan görevi görür. -Devralınan oda girdilerini bir Matrix hesabıyla sınırlamak için `groups..account` kullanabilirsiniz. -`account` içermeyen girdiler tüm Matrix hesapları arasında paylaşımlı kalır ve `account: "default"` içeren girdiler varsayılan hesap doğrudan üst düzey `channels.matrix.*` üzerinde yapılandırıldığında da çalışmaya devam eder. -Kısmi paylaşımlı kimlik doğrulama varsayılanları kendi başlarına ayrı bir örtük varsayılan hesap oluşturmaz. OpenClaw üst düzey `default` hesabını yalnızca o varsayılan hesapta yeni kimlik doğrulama varsa (`homeserver` artı `accessToken` veya `homeserver` artı `userId` ve `password`) sentezler; adlandırılmış hesaplar daha sonra önbelleğe alınmış kimlik bilgileri kimlik doğrulamayı sağladığında `homeserver` artı `userId` üzerinden yine keşfedilebilir kalabilir. -Matrix'te zaten tam olarak bir adlandırılmış hesap varsa veya `defaultAccount` mevcut bir adlandırılmış hesap anahtarını işaret ediyorsa, tek hesaptan çok hesaba onarım/kurulum yükseltmesi yeni bir `accounts.default` girdisi oluşturmak yerine o hesabı korur. Yalnızca Matrix kimlik doğrulama/bootstrap anahtarları bu yükseltilmiş hesaba taşınır; paylaşılan teslimat politikası anahtarları üst düzeyde kalır. -OpenClaw'un örtük yönlendirme, probe ve CLI işlemleri için bir adlandırılmış Matrix hesabını tercih etmesini istiyorsanız `defaultAccount` ayarlayın. +Üst düzey `channels.matrix` değerleri, bir hesap bunları geçersiz kılmadığı sürece adlandırılmış hesaplar için varsayılan görevi görür. +Devralınan oda girdilerini bir Matrix hesabına `groups..account` ile kapsamlandırabilirsiniz. +`account` içermeyen girdiler tüm Matrix hesapları arasında paylaşılmış kalır ve `account: "default"` içeren girdiler, varsayılan hesap doğrudan üst düzey `channels.matrix.*` üzerinde yapılandırıldığında yine çalışır. +Kısmi paylaşılan kimlik doğrulama varsayılanları kendi başlarına ayrı bir örtük varsayılan hesap oluşturmaz. OpenClaw üst düzey `default` hesabını yalnızca o varsayılan hesapta yeni kimlik doğrulama varsa (`homeserver` artı `accessToken` veya `homeserver` artı `userId` ve `password`) sentezler; adlandırılmış hesaplar ise önbelleğe alınmış kimlik bilgileri daha sonra kimlik doğrulamayı karşıladığında `homeserver` artı `userId` ile keşfedilebilir kalabilir. +Matrix'te zaten tam olarak bir adlandırılmış hesap varsa veya `defaultAccount` mevcut bir adlandırılmış hesap anahtarını işaret ediyorsa, tek hesaptan çok hesaba onarım/kurulum yükseltmesi yeni bir `accounts.default` girdisi oluşturmak yerine o hesabı korur. Yalnızca Matrix kimlik doğrulama/bootstrap anahtarları bu yükseltilmiş hesaba taşınır; paylaşılan teslimat ilkesi anahtarları üst düzeyde kalır. +Örtük yönlendirme, probing ve CLI işlemleri için OpenClaw'ın adlandırılmış Matrix hesaplarından birini tercih etmesini istiyorsanız `defaultAccount` ayarlayın. +Birden fazla Matrix hesabı yapılandırılmışsa ve hesap kimliklerinden biri `default` ise, `defaultAccount` ayarlanmamış olsa bile OpenClaw bu hesabı örtük olarak kullanır. Birden fazla adlandırılmış hesap yapılandırırsanız, örtük hesap seçimine dayanan CLI komutları için `defaultAccount` ayarlayın veya `--account ` geçin. Bu örtük seçimi tek bir komut için geçersiz kılmak istediğinizde `openclaw matrix verify ...` ve `openclaw matrix devices ...` komutlarına `--account ` geçin. -Paylaşılan çok hesaplı desen için [Configuration reference](/tr/gateway/configuration-reference#multi-account-all-channels) bölümüne bakın. +Paylaşılan çok hesaplı desen için [Configuration reference](/tr/gateway/configuration-reference#multi-account-all-channels) sayfasına bakın. ## Özel/LAN homeserver'lar -Varsayılan olarak OpenClaw, siz -hesap başına açıkça izin vermediğiniz sürece SSRF koruması için özel/dahili Matrix homeserver'ları engeller. +Varsayılan olarak OpenClaw, SSRF koruması için özel/dahili Matrix homeserver'larını engeller; siz +hesap başına açıkça izin vermedikçe bağlanmaz. -Homeserver'ınız localhost, bir LAN/Tailscale IP'si veya dahili bir ana makine adında çalışıyorsa, +Homeserver'ınız localhost, bir LAN/Tailscale IP'si veya dahili bir host adı üzerinde çalışıyorsa, o Matrix hesabı için `network.dangerouslyAllowPrivateNetwork` seçeneğini etkinleştirin: ```json5 @@ -960,10 +963,10 @@ openclaw matrix account add \ --access-token syt_ops_xxx ``` -Bu açık onay yalnızca güvenilir özel/dahili hedeflere izin verir. `http://matrix.example.org:8008` gibi -genel düz metin homeserver'lar engellenmiş kalır. Mümkün olduğunda `https://` tercih edin. +Bu açık katılım yalnızca güvenilen özel/dahili hedeflere izin verir. Aşağıdaki gibi herkese açık düz metin homeserver'lar +`http://matrix.example.org:8008` yine engellenir. Mümkün olduğunda `https://` tercih edin. -## Matrix trafiğini proxy ile yönlendirme +## Matrix trafiğini proxy üzerinden geçirmek Matrix dağıtımınız açık bir giden HTTP(S) proxy gerektiriyorsa, `channels.matrix.proxy` ayarlayın: @@ -979,86 +982,86 @@ Matrix dağıtımınız açık bir giden HTTP(S) proxy gerektiriyorsa, `channels } ``` -Adlandırılmış hesaplar üst düzey varsayılanı `channels.matrix.accounts..proxy` ile geçersiz kılabilir. -OpenClaw aynı proxy ayarını çalışma zamanı Matrix trafiği ve hesap durum probe'ları için kullanır. +Adlandırılmış hesaplar, üst düzey varsayılanı `channels.matrix.accounts..proxy` ile geçersiz kılabilir. +OpenClaw aynı proxy ayarını çalışma zamanı Matrix trafiği ve hesap durum probing işlemleri için kullanır. ## Hedef çözümleme -Matrix, OpenClaw'un sizden bir oda veya kullanıcı hedefi istediği her yerde şu hedef biçimlerini kabul eder: +Matrix, OpenClaw'ın sizden bir oda veya kullanıcı hedefi istediği her yerde şu hedef biçimlerini kabul eder: - Kullanıcılar: `@user:server`, `user:@user:server` veya `matrix:user:@user:server` - Odalar: `!room:server`, `room:!room:server` veya `matrix:room:!room:server` - Takma adlar: `#alias:server`, `channel:#alias:server` veya `matrix:channel:#alias:server` -Canlı dizin araması, oturum açmış Matrix hesabını kullanır: +Canlı dizin araması, oturum açılmış Matrix hesabını kullanır: -- Kullanıcı aramaları o homeserver'daki Matrix kullanıcı dizinini sorgular. -- Oda aramaları açık oda kimliklerini ve takma adları doğrudan kabul eder, ardından bu hesap için katılınan oda adlarını aramaya geri döner. -- Katılınan oda adı araması best-effort çalışır. Bir oda adı bir kimliğe veya takma ada çözümlenemezse, çalışma zamanı izin listesi çözümlemesinde yok sayılır. +- Kullanıcı aramaları, o homeserver üzerindeki Matrix kullanıcı dizinini sorgular. +- Oda aramaları açık oda kimliklerini ve takma adları doğrudan kabul eder, ardından o hesap için katılınmış oda adlarını aramaya fallback yapar. +- Katılınmış oda adı araması best-effort çalışır. Bir oda adı oda kimliğine veya takma ada çözümlenemiyorsa, çalışma zamanı allowlist çözümlemesi sırasında yok sayılır. ## Yapılandırma başvurusu -- `enabled`: kanalı etkinleştir veya devre dışı bırak. +- `enabled`: kanalı etkinleştirir veya devre dışı bırakır. - `name`: hesap için isteğe bağlı etiket. - `defaultAccount`: birden fazla Matrix hesabı yapılandırıldığında tercih edilen hesap kimliği. - `homeserver`: homeserver URL'si, örneğin `https://matrix.example.org`. -- `network.dangerouslyAllowPrivateNetwork`: bu Matrix hesabının özel/dahili homeserver'lara bağlanmasına izin ver. Homeserver `localhost`, bir LAN/Tailscale IP'si veya `matrix-synapse` gibi dahili bir ana makineye çözümlendiğinde bunu etkinleştirin. -- `proxy`: Matrix trafiği için isteğe bağlı HTTP(S) proxy URL'si. Adlandırılmış hesaplar üst düzey varsayılanı kendi `proxy` değerleriyle geçersiz kılabilir. +- `network.dangerouslyAllowPrivateNetwork`: bu Matrix hesabının özel/dahili homeserver'lara bağlanmasına izin verir. Homeserver `localhost`, bir LAN/Tailscale IP'si veya `matrix-synapse` gibi dahili bir ana makineye çözümleniyorsa bunu etkinleştirin. +- `proxy`: Matrix trafiği için isteğe bağlı HTTP(S) proxy URL'si. Adlandırılmış hesaplar üst düzey varsayılanı kendi `proxy` ayarlarıyla geçersiz kılabilir. - `userId`: tam Matrix kullanıcı kimliği, örneğin `@bot:example.org`. -- `accessToken`: belirteç tabanlı kimlik doğrulama için erişim belirteci. Düz metin değerleri ve SecretRef değerleri, env/file/exec sağlayıcıları genelinde `channels.matrix.accessToken` ve `channels.matrix.accounts..accessToken` için desteklenir. Bkz. [Secrets Management](/tr/gateway/secrets). -- `password`: parola tabanlı giriş için parola. Düz metin değerleri ve SecretRef değerleri desteklenir. +- `accessToken`: token tabanlı kimlik doğrulama için access token. Düz metin değerler ve SecretRef değerleri, env/file/exec sağlayıcıları genelinde `channels.matrix.accessToken` ve `channels.matrix.accounts..accessToken` için desteklenir. Bkz. [Secrets Management](/tr/gateway/secrets). +- `password`: parola tabanlı oturum açma için parola. Düz metin değerler ve SecretRef değerleri desteklenir. - `deviceId`: açık Matrix cihaz kimliği. -- `deviceName`: parola ile giriş için cihaz görünen adı. -- `avatarUrl`: profil eşitleme ve `profile set` güncellemeleri için saklanan self-avatar URL'si. -- `initialSyncLimit`: başlangıç senkronizasyonu sırasında alınan en fazla olay sayısı. -- `encryption`: E2EE'yi etkinleştir. -- `allowlistOnly`: `true` olduğunda `open` oda politikasını `allowlist` seviyesine yükseltir ve `disabled` dışındaki tüm etkin DM politikalarını (`pairing` ve `open` dahil) `allowlist` olmaya zorlar. `disabled` politikalarını etkilemez. -- `allowBots`: yapılandırılmış diğer OpenClaw Matrix hesaplarından gelen mesajlara izin ver (`true` veya `"mentions"`). +- `deviceName`: parola ile oturum açma için cihaz görünen adı. +- `avatarUrl`: profil senkronizasyonu ve `profile set` güncellemeleri için depolanan self-avatar URL'si. +- `initialSyncLimit`: başlangıç sync sırasında getirilen en yüksek olay sayısı. +- `encryption`: E2EE'yi etkinleştirir. +- `allowlistOnly`: `true` olduğunda, `open` oda ilkesini `allowlist` olarak yükseltir ve `disabled` dışındaki tüm etkin DM ilkelerini (`pairing` ve `open` dahil) `allowlist` olmaya zorlar. `disabled` ilkelerini etkilemez. +- `allowBots`: yapılandırılmış diğer OpenClaw Matrix hesaplarından gelen mesajlara izin verir (`true` veya `"mentions"`). - `groupPolicy`: `open`, `allowlist` veya `disabled`. - `contextVisibility`: ek oda bağlamı görünürlük modu (`all`, `allowlist`, `allowlist_quote`). -- `groupAllowFrom`: oda trafiği için kullanıcı kimliği izin listesi. Girdiler tam Matrix kullanıcı kimlikleri olmalıdır; çözümlenmemiş adlar çalışma zamanında yok sayılır. -- `historyLimit`: grup geçmiş bağlamı olarak eklenecek en fazla oda mesajı sayısı. `messages.groupChat.historyLimit` değerine geri döner; her ikisi de ayarlı değilse etkin varsayılan `0` olur. Devre dışı bırakmak için `0` ayarlayın. +- `groupAllowFrom`: oda trafiği için kullanıcı kimliği allowlist'i. Girdiler tam Matrix kullanıcı kimlikleri olmalıdır; çözümlenmemiş adlar çalışma zamanında yok sayılır. +- `historyLimit`: grup geçmiş bağlamı olarak dahil edilecek en yüksek oda mesajı sayısı. `messages.groupChat.historyLimit` değerine fallback yapar; ikisi de ayarlanmazsa etkin varsayılan `0` olur. Devre dışı bırakmak için `0` ayarlayın. - `replyToMode`: `off`, `first`, `all` veya `batched`. - `markdown`: giden Matrix metni için isteğe bağlı Markdown işleme yapılandırması. -- `streaming`: `off` (varsayılan), `"partial"`, `"quiet"`, `true` veya `false`. `"partial"` ve `true`, normal Matrix metin mesajlarıyla önizleme-önce taslak güncellemelerini etkinleştirir. `"quiet"`, self-hosted push-rule kurulumları için bildirim vermeyen önizleme bildirimleri kullanır. `false`, `"off"` ile eşdeğerdir. +- `streaming`: `off` (varsayılan), `"partial"`, `"quiet"`, `true` veya `false`. `"partial"` ve `true`, normal Matrix metin mesajlarıyla önizleme-önce taslak güncellemelerini etkinleştirir. `"quiet"`, self-hosted push-rule kurulumları için bildirim göndermeyen önizleme bildirimlerini kullanır. `false`, `"off"` ile eşdeğerdir. - `blockStreaming`: `true`, taslak önizleme akışı etkinken tamamlanmış asistan blokları için ayrı ilerleme mesajlarını etkinleştirir. - `threadReplies`: `off`, `inbound` veya `always`. -- `threadBindings`: thread'e bağlı oturum yönlendirmesi ve yaşam döngüsü için kanal başına geçersiz kılmalar. +- `threadBindings`: iş parçacığına bağlı oturum yönlendirmesi ve yaşam döngüsü için kanal başına geçersiz kılmalar. - `startupVerification`: başlangıçta otomatik self-verification istek modu (`if-unverified`, `off`). -- `startupVerificationCooldownHours`: otomatik başlangıç doğrulama isteklerini yeniden denemeden önce bekleme süresi. -- `textChunkLimit`: karakter cinsinden giden mesaj parça boyutu (`chunkMode` değeri `length` olduğunda uygulanır). +- `startupVerificationCooldownHours`: otomatik başlangıç doğrulama istekleri yeniden denenmeden önceki bekleme süresi. +- `textChunkLimit`: karakter cinsinden giden mesaj parça boyutu (`chunkMode`, `length` olduğunda uygulanır). - `chunkMode`: `length`, mesajları karakter sayısına göre böler; `newline`, satır sınırlarında böler. -- `responsePrefix`: bu kanal için tüm giden yanıtların başına eklenecek isteğe bağlı dize. +- `responsePrefix`: bu kanal için tüm giden yanıtlara eklenen isteğe bağlı dize. - `ackReaction`: bu kanal/hesap için isteğe bağlı ack tepki geçersiz kılması. - `ackReactionScope`: isteğe bağlı ack tepki kapsamı geçersiz kılması (`group-mentions`, `group-all`, `direct`, `all`, `none`, `off`). - `reactionNotifications`: gelen tepki bildirim modu (`own`, `off`). - `mediaMaxMb`: giden gönderimler ve gelen medya işleme için MB cinsinden medya boyutu üst sınırı. -- `autoJoin`: davet otomatik katılım politikası (`always`, `allowlist`, `off`). Varsayılan: `off`. DM tarzı davetler dahil tüm Matrix davetleri için geçerlidir. -- `autoJoinAllowlist`: `autoJoin` değeri `allowlist` olduğunda izin verilen odalar/takma adlar. Takma ad girdileri davet işleme sırasında oda kimliklerine çözülür; OpenClaw davet edilen odanın iddia ettiği takma ad durumuna güvenmez. -- `dm`: DM politika bloğu (`enabled`, `policy`, `allowFrom`, `sessionScope`, `threadReplies`). -- `dm.policy`: OpenClaw odaya katıldıktan ve onu DM olarak sınıflandırdıktan sonra DM erişimini denetler. Bir davetin otomatik katılımını değiştirmaz. -- `dm.allowFrom`: bunları canlı dizin aramasıyla zaten çözümlemediyseniz girdiler tam Matrix kullanıcı kimlikleri olmalıdır. -- `dm.sessionScope`: `per-user` (varsayılan) veya `per-room`. Eş aynı olsa bile her Matrix DM odasının ayrı bağlam tutmasını istiyorsanız `per-room` kullanın. -- `dm.threadReplies`: yalnızca DM için thread politika geçersiz kılması (`off`, `inbound`, `always`). Hem yanıt yerleşimi hem de DM'lerde oturum izolasyonu için üst düzey `threadReplies` ayarını geçersiz kılar. -- `execApprovals`: Matrix yerel exec onay teslimatı (`enabled`, `approvers`, `target`, `agentFilter`, `sessionFilter`). -- `execApprovals.approvers`: exec isteklerini onaylamasına izin verilen Matrix kullanıcı kimlikleri. `dm.allowFrom` zaten onaylayıcıları tanımlıyorsa isteğe bağlıdır. +- `autoJoin`: davet otomatik katılım ilkesi (`always`, `allowlist`, `off`). Varsayılan: `off`. DM tarzı davetler dahil tüm Matrix davetleri için geçerlidir. +- `autoJoinAllowlist`: `autoJoin`, `allowlist` olduğunda izin verilen odalar/takma adlar. Takma ad girdileri davet işleme sırasında oda kimliklerine çözülür; OpenClaw, davet edilen oda tarafından bildirilen takma ad durumuna güvenmez. +- `dm`: DM ilke bloğu (`enabled`, `policy`, `allowFrom`, `sessionScope`, `threadReplies`). +- `dm.policy`: OpenClaw odaya katılıp onu DM olarak sınıflandırdıktan sonra DM erişimini kontrol eder. Bir davetin otomatik katılıp katılınmayacağını değiştirmez. +- `dm.allowFrom`: girdiler, siz bunları canlı dizin aramasıyla zaten çözümlemediyseniz tam Matrix kullanıcı kimlikleri olmalıdır. +- `dm.sessionScope`: `per-user` (varsayılan) veya `per-room`. Eş aynı olsa bile her Matrix DM odasının ayrı bağlam korumasını istiyorsanız `per-room` kullanın. +- `dm.threadReplies`: yalnızca DM'lere yönelik iş parçacığı ilkesi geçersiz kılması (`off`, `inbound`, `always`). Hem yanıt yerleşimi hem de DM'lerde oturum izolasyonu için üst düzey `threadReplies` ayarını geçersiz kılar. +- `execApprovals`: Matrix'e özgü yerel exec onayı teslimatı (`enabled`, `approvers`, `target`, `agentFilter`, `sessionFilter`). +- `execApprovals.approvers`: exec isteklerini onaylamasına izin verilen Matrix kullanıcı kimlikleri. `dm.allowFrom` zaten onaylayanları tanımlıyorsa isteğe bağlıdır. - `execApprovals.target`: `dm | channel | both` (varsayılan: `dm`). - `accounts`: adlandırılmış hesap başına geçersiz kılmalar. Üst düzey `channels.matrix` değerleri bu girdiler için varsayılan görevi görür. -- `groups`: oda başına politika eşlemi. Oda kimliklerini veya takma adları tercih edin; çözümlenmemiş oda adları çalışma zamanında yok sayılır. Çözümlemeden sonra oturum/grup kimliği kararlı oda kimliğini kullanır. -- `groups..account`: çok hesaplı kurulumlarda devralınmış bir oda girdisini belirli bir Matrix hesabıyla sınırla. -- `groups..allowBots`: yapılandırılmış bot gönderenler için oda düzeyi geçersiz kılma (`true` veya `"mentions"`). -- `groups..users`: oda başına gönderen izin listesi. -- `groups..tools`: oda başına araç izin/verme reddetme geçersiz kılmaları. -- `groups..autoReply`: oda düzeyi mention geçitleme geçersiz kılması. `true`, o oda için mention gereksinimlerini devre dışı bırakır; `false`, bunları yeniden zorlar. -- `groups..skills`: isteğe bağlı oda düzeyi Skills filtresi. -- `groups..systemPrompt`: isteğe bağlı oda düzeyi system prompt parçası. +- `groups`: oda başına ilke eşlemesi. Oda kimliklerini veya takma adları tercih edin; çözümlenmemiş oda adları çalışma zamanında yok sayılır. Oturum/grup kimliği çözümlemeden sonra kararlı oda kimliğini kullanır. +- `groups..account`: çok hesaplı kurulumlarda tek bir devralınmış oda girdisini belirli bir Matrix hesabıyla sınırlar. +- `groups..allowBots`: yapılandırılmış bot göndericileri için oda düzeyinde geçersiz kılma (`true` veya `"mentions"`). +- `groups..users`: oda başına gönderici allowlist'i. +- `groups..tools`: oda başına araç izin/verme veya reddetme geçersiz kılmaları. +- `groups..autoReply`: oda düzeyinde mention geçitleme geçersiz kılması. `true`, o oda için mention gereksinimlerini devre dışı bırakır; `false`, bunları yeniden zorunlu kılar. +- `groups..skills`: isteğe bağlı oda düzeyinde Skills filtresi. +- `groups..systemPrompt`: isteğe bağlı oda düzeyinde system prompt parçacığı. - `rooms`: `groups` için eski takma ad. -- `actions`: eylem başına araç denetimi (`messages`, `reactions`, `pins`, `profile`, `memberInfo`, `channelInfo`, `verification`). +- `actions`: eylem başına araç geçitleme (`messages`, `reactions`, `pins`, `profile`, `memberInfo`, `channelInfo`, `verification`). ## İlgili - [Channels Overview](/tr/channels) — desteklenen tüm kanallar -- [Pairing](/tr/channels/pairing) — DM kimlik doğrulaması ve eşleme akışı +- [Pairing](/tr/channels/pairing) — DM kimlik doğrulaması ve pairing akışı - [Groups](/tr/channels/groups) — grup sohbeti davranışı ve mention geçitleme - [Channel Routing](/tr/channels/channel-routing) — mesajlar için oturum yönlendirmesi - [Security](/tr/gateway/security) — erişim modeli ve sağlamlaştırma diff --git a/docs/tr/concepts/dreaming.md b/docs/tr/concepts/dreaming.md index 7d14a82a7..a82966a65 100644 --- a/docs/tr/concepts/dreaming.md +++ b/docs/tr/concepts/dreaming.md @@ -1,136 +1,140 @@ --- read_when: - Bellek yükseltmenin otomatik olarak çalışmasını istiyorsunuz - - Her rüya görme evresinin ne yaptığını anlamak istiyorsunuz - - Sağlamlaştırmayı `MEMORY.md` dosyasını kirletmeden ayarlamak istiyorsunuz -summary: Hafif, derin ve REM evreleri ile arka plan bellek sağlamlaştırması ve bir Rüya Günlüğü -title: Rüya görme (deneysel) + - Her bir rüya görme evresinin ne yaptığını anlamak istiyorsunuz + - Pekiştirmeyi `MEMORY.md` dosyasını kirletmeden ayarlamak istiyorsunuz +summary: Hafif, derin ve REM evreleri ile rüya günlüğü içeren arka plan bellek pekiştirmesi +title: Dreaming (deneysel) x-i18n: - generated_at: "2026-04-09T01:27:50Z" + generated_at: "2026-04-15T08:53:15Z" model: gpt-5.4 provider: openai - source_hash: 26476eddb8260e1554098a6adbb069cf7f5e284cf2e09479c6d9d8f8b93280ef + source_hash: 5882a5068f2eabe54ca9893184e5385330a432b921870c38626399ce11c31e25 source_path: concepts/dreaming.md workflow: 15 --- -# Rüya görme (deneysel) +# Dreaming (deneysel) -Rüya görme, `memory-core` içindeki arka plan bellek sağlamlaştırma sistemidir. -OpenClaw'un güçlü kısa süreli sinyalleri kalıcı belleğe taşımasına yardımcı olurken -sürecin açıklanabilir ve incelenebilir kalmasını sağlar. +Dreaming, `memory-core` içindeki arka plan bellek pekiştirme sistemidir. +OpenClaw’un güçlü kısa süreli sinyalleri kalıcı belleğe taşımasına yardımcı olurken +süreci açıklanabilir ve incelenebilir halde tutar. -Rüya görme **isteğe bağlıdır** ve varsayılan olarak devre dışıdır. +Dreaming **isteğe bağlıdır** ve varsayılan olarak devre dışıdır. -## Rüya görmenin yazdıkları +## Dreaming’in yazdıkları -Rüya görme iki tür çıktı tutar: +Dreaming iki tür çıktı tutar: -- `memory/.dreams/` içinde **makine durumu** (geri çağırma deposu, evre sinyalleri, içe aktarma denetim noktaları, kilitler). -- `DREAMS.md` içinde (veya mevcut `dreams.md` içinde) **insan tarafından okunabilir çıktı** ve `memory/dreaming//YYYY-MM-DD.md` altında isteğe bağlı evre raporu dosyaları. +- `memory/.dreams/` içinde **makine durumu** (geri çağırma deposu, evre sinyalleri, alım denetim noktaları, kilitler). +- `DREAMS.md` (veya mevcut `dreams.md`) içinde **insan tarafından okunabilir çıktı** ve isteğe bağlı olarak `memory/dreaming//YYYY-MM-DD.md` altındaki evre raporu dosyaları. -Uzun vadeli yükseltme hâlâ yalnızca `MEMORY.md` dosyasına yazar. +Uzun vadeli yükseltme yine yalnızca `MEMORY.md` dosyasına yazar. ## Evre modeli -Rüya görme, birlikte çalışan üç evre kullanır: +Dreaming üç işbirlikçi evre kullanır: -| Evre | Amaç | Kalıcı yazım | -| ----- | ----------------------------------------- | ----------------- | -| Hafif | Yakın tarihli kısa süreli materyali sıralamak ve hazırlamak | Hayır | -| Derin | Kalıcı adayları puanlamak ve yükseltmek | Evet (`MEMORY.md`) | -| REM | Temalar ve tekrar eden fikirler üzerine düşünmek | Hayır | +| Evre | Amaç | Kalıcı yazma | +| ----- | ---- | ------------ | +| Light | Son kısa süreli materyali sıralamak ve hazırlamak | Hayır | +| Deep | Kalıcı adayları puanlamak ve yükseltmek | Evet (`MEMORY.md`) | +| REM | Temalar ve yinelenen fikirler üzerine düşünmek | Hayır | -Bu evreler, kullanıcı tarafından ayrı ayrı yapılandırılan -"modlar" değil, iç uygulama ayrıntılarıdır. +Bu evreler, kullanıcı tarafından ayrı ayrı yapılandırılan "modlar" değil, +dahili uygulama ayrıntılarıdır. -### Hafif evre +### Light evresi -Hafif evre, yakın tarihli günlük bellek sinyallerini ve geri çağırma izlerini içe aktarır, bunları tekilleştirir -ve aday satırları hazırlar. +Light evresi son günlük bellek sinyallerini ve geri çağırma izlerini alır, +yinelenenleri ayıklar ve aday satırları hazırlar. -- Kısa süreli geri çağırma durumundan, yakın tarihli günlük bellek dosyalarından ve mevcut olduğunda sansürlenmiş oturum transkriptlerinden okur. +- Uygun olduğunda kısa süreli geri çağırma durumundan, son günlük bellek dosyalarından ve sansürlenmiş oturum dökümlerinden okur. - Depolama satır içi çıktı içerdiğinde yönetilen bir `## Light Sleep` bloğu yazar. -- Daha sonraki derin sıralama için pekiştirme sinyalleri kaydeder. -- Asla `MEMORY.md` dosyasına yazmaz. +- Daha sonraki deep sıralaması için pekiştirme sinyalleri kaydeder. +- `MEMORY.md` dosyasına asla yazmaz. -### Derin evre +### Deep evresi -Derin evre, neyin uzun vadeli bellek olacağına karar verir. +Deep evresi, neyin uzun vadeli belleğe dönüşeceğine karar verir. - Adayları ağırlıklı puanlama ve eşik geçitleri kullanarak sıralar. -- `minScore`, `minRecallCount` ve `minUniqueQueries` değerlerinin geçilmesini gerektirir. -- Yazmadan önce parçaları canlı günlük dosyalardan yeniden yükler; böylece eski/silinmiş parçalar atlanır. +- `minScore`, `minRecallCount` ve `minUniqueQueries` koşullarının geçilmesini gerektirir. +- Yazmadan önce parçacıkları canlı günlük dosyalardan yeniden alır; böylece eski/silinmiş parçacıklar atlanır. - Yükseltilen girdileri `MEMORY.md` dosyasına ekler. -- `DREAMS.md` içine bir `## Deep Sleep` özeti yazar ve isteğe bağlı olarak `memory/dreaming/deep/YYYY-MM-DD.md` dosyasını yazar. +- `DREAMS.md` içine bir `## Deep Sleep` özeti yazar ve isteğe bağlı olarak `memory/dreaming/deep/YYYY-MM-DD.md` dosyasına yazar. ### REM evresi -REM evresi, örüntüleri ve yansıtıcı sinyalleri çıkarır. +REM evresi örüntüleri ve yansıtıcı sinyalleri çıkarır. -- Yakın tarihli kısa süreli izlerden tema ve yansıma özetleri oluşturur. +- Son kısa süreli izlerden tema ve yansıma özetleri oluşturur. - Depolama satır içi çıktı içerdiğinde yönetilen bir `## REM Sleep` bloğu yazar. -- Derin sıralamada kullanılan REM pekiştirme sinyallerini kaydeder. -- Asla `MEMORY.md` dosyasına yazmaz. +- Deep sıralamasında kullanılan REM pekiştirme sinyallerini kaydeder. +- `MEMORY.md` dosyasına asla yazmaz. -## Oturum transkripti içe aktarma +## Oturum dökümü alımı -Rüya görme, sansürlenmiş oturum transkriptlerini rüya görme külliyatına içe aktarabilir. Transkriptler -mevcut olduğunda, günlük bellek sinyalleri ve geri çağırma izleriyle birlikte hafif -evreye beslenir. Kişisel ve hassas içerik içe aktarmadan önce sansürlenir. +Dreaming, sansürlenmiş oturum dökümlerini Dreaming derlemine alabilir. Dökümler +mevcut olduğunda, günlük bellek sinyalleri ve geri çağırma izleriyle birlikte +light evresine beslenir. Kişisel ve hassas içerik alımdan önce sansürlenir. -## Rüya Günlüğü +## Dream Diary -Rüya görme ayrıca `DREAMS.md` içinde anlatı biçiminde bir **Rüya Günlüğü** tutar. -Her evre yeterli miktarda materyale sahip olduktan sonra, `memory-core` en iyi çabayla arka planda -bir alt ajan dönüşü çalıştırır (varsayılan çalışma zamanı modeli kullanılarak) ve kısa bir günlük girdisi ekler. +Dreaming ayrıca `DREAMS.md` içinde anlatı biçiminde bir **Dream Diary** tutar. +Her evrede yeterli materyal oluştuğunda, `memory-core` en iyi çaba esaslı bir arka plan +alt ajan turu çalıştırır (varsayılan çalışma zamanı modeli kullanılarak) ve kısa +bir günlük girdisi ekler. Bu günlük, yükseltme kaynağı değil, Dreams UI içinde insanlar tarafından okunmak içindir. +Dreaming tarafından üretilen günlük/rapor yapıtları kısa süreli +yükseltmeden hariç tutulur. Yalnızca temellendirilmiş bellek parçacıkları +`MEMORY.md` içine yükseltilebilir. -İnceleme ve kurtarma çalışmaları için ayrıca temellendirilmiş bir geçmiş doldurma hattı da vardır: +İnceleme ve kurtarma işleri için temellendirilmiş bir geçmiş doldurma hattı da vardır: - `memory rem-harness --path ... --grounded`, geçmiş `YYYY-MM-DD.md` notlarından temellendirilmiş günlük çıktısını önizler. -- `memory rem-backfill --path ...`, geri alınabilir temellendirilmiş günlük girdilerini `DREAMS.md` içine yazar. -- `memory rem-backfill --path ... --stage-short-term`, temellendirilmiş kalıcı adayları, normal derin evrenin zaten kullandığı aynı kısa süreli kanıt deposuna hazırlar. -- `memory rem-backfill --rollback` ve `--rollback-short-term`, bu hazırlanmış geçmiş doldurma yapıtlarını, sıradan günlük girdilerine veya canlı kısa süreli geri çağırmaya dokunmadan kaldırır. +- `memory rem-backfill --path ...`, geri alınabilir temellendirilmiş günlük girdilerini `DREAMS.md` dosyasına yazar. +- `memory rem-backfill --path ... --stage-short-term`, temellendirilmiş kalıcı adayları normal deep evresinin zaten kullandığı aynı kısa süreli kanıt deposuna hazırlık olarak koyar. +- `memory rem-backfill --rollback` ve `--rollback-short-term`, sıradan günlük girdilerine veya canlı kısa süreli geri çağırmaya dokunmadan bu hazırlanmış geçmiş doldurma yapıtlarını kaldırır. -Control UI, aynı günlük geri doldurma/sıfırlama akışını sunar; böylece -temellendirilmiş adayların yükseltmeyi hak edip etmediğine karar vermeden önce sonuçları Dreams sahnesinde -inceleyebilirsiniz. Sahne ayrıca ayrı bir temellendirilmiş hat gösterir; böylece -hangi hazırlanmış kısa süreli girdilerin geçmiş yeniden oynatmadan geldiğini, hangi yükseltilmiş -öğelerin temellendirme odaklı olduğunu görebilir ve yalnızca temellendirilmiş hazırlanmış girdileri -sıradan canlı kısa süreli duruma dokunmadan temizleyebilirsiniz. +Control UI, aynı günlük geçmiş doldurma/sıfırlama akışını sunar; böylece sonuçları, +temellendirilmiş adayların yükseltilmeyi hak edip etmediğine karar vermeden önce +Dreams sahnesinde inceleyebilirsiniz. Sahne ayrıca belirgin bir temellendirilmiş hat da gösterir; böylece +hangi hazırlanmış kısa süreli girdilerin geçmiş tekrar oynatmadan geldiğini, +hangi yükseltilmiş öğelerin temellendirme kaynaklı olduğunu görebilir ve sıradan canlı kısa süreli duruma +dokunmadan yalnızca temellendirilmiş hazırlanmış girdileri temizleyebilirsiniz. -## Derin sıralama sinyalleri +## Deep sıralama sinyalleri -Derin sıralama, evre pekiştirmesine ek olarak altı ağırlıklı temel sinyal kullanır: +Deep sıralaması altı ağırlıklı temel sinyal ile evre pekiştirmesini kullanır: -| Sinyal | Ağırlık | Açıklama | -| ------------------- | ------ | ------------------------------------------------- | -| Sıklık | 0.24 | Girdinin biriktirdiği kısa süreli sinyal sayısı | -| İlgililik | 0.30 | Girdi için ortalama getirme kalitesi | -| Sorgu çeşitliliği | 0.15 | Onu ortaya çıkaran farklı sorgu/gün bağlamları | -| Yakınlık | 0.15 | Zamanla azalan tazelik puanı | -| Sağlamlaştırma | 0.10 | Çok günlük tekrar gücü | -| Kavramsal zenginlik | 0.06 | Parça/yol kaynağından kavram etiketi yoğunluğu | +| Sinyal | Ağırlık | Açıklama | +| ------ | ------- | -------- | +| Sıklık | 0.24 | Girdinin kaç kısa süreli sinyal biriktirdiği | +| İlgililik | 0.30 | Girdi için ortalama geri getirme kalitesi | +| Sorgu çeşitliliği | 0.15 | Onu ortaya çıkaran farklı sorgu/gün bağlamları | +| Yakınlık | 0.15 | Zamana bağlı olarak azalan tazelik puanı | +| Pekiştirme | 0.10 | Çok günlük yineleme gücü | +| Kavramsal zenginlik | 0.06 | Parçacık/yol üzerindeki kavram etiketi yoğunluğu | -Hafif ve REM evresi isabetleri, -`memory/.dreams/phase-signals.json` içinden zamanla azalan küçük bir ek artış sağlar. +Light ve REM evresi isabetleri, +`memory/.dreams/phase-signals.json` dosyasından gelen zamana bağlı olarak azalan küçük bir artış ekler. ## Zamanlama -Etkinleştirildiğinde `memory-core`, tam bir rüya görme -taraması için tek bir cron işi otomatik olarak yönetir. Her tarama evreleri sırayla çalıştırır: hafif -> REM -> derin. +Etkinleştirildiğinde `memory-core`, tam bir Dreaming taraması için tek bir Cron +işini otomatik olarak yönetir. Her tarama evreleri sırayla çalıştırır: light -> REM -> deep. Varsayılan sıklık davranışı: -| Ayar | Varsayılan | -| -------------------- | ---------- | +| Ayar | Varsayılan | +| ---- | ---------- | | `dreaming.frequency` | `0 3 * * *` | ## Hızlı başlangıç -Rüya görmeyi etkinleştirin: +Dreaming’i etkinleştirin: ```json { @@ -148,7 +152,7 @@ Rüya görmeyi etkinleştirin: } ``` -Özel bir tarama sıklığı ile rüya görmeyi etkinleştirin: +Özel bir tarama sıklığıyla Dreaming’i etkinleştirin: ```json { @@ -188,8 +192,8 @@ openclaw memory promote --limit 5 openclaw memory status --deep ``` -Elle `memory promote`, CLI bayraklarıyla geçersiz kılınmadığı sürece varsayılan olarak -derin evre eşiklerini kullanır. +Elle çalıştırılan `memory promote`, CLI bayraklarıyla geçersiz kılınmadıkça +varsayılan olarak deep evresi eşiklerini kullanır. Belirli bir adayın neden yükseltileceğini veya yükseltilmeyeceğini açıklayın: @@ -198,8 +202,7 @@ openclaw memory promote-explain "router vlan" openclaw memory promote-explain "router vlan" --json ``` -Hiçbir şey yazmadan REM yansımalarını, aday gerçekleri ve derin yükseltme çıktısını -önizleyin: +Herhangi bir şey yazmadan REM yansımalarını, aday gerçekleri ve deep yükseltme çıktısını önizleyin: ```bash openclaw memory rem-harness @@ -210,30 +213,30 @@ openclaw memory rem-harness --json Tüm ayarlar `plugins.entries.memory-core.config.dreaming` altında bulunur. -| Anahtar | Varsayılan | -| ----------- | ---------- | -| `enabled` | `false` | +| Anahtar | Varsayılan | +| ------- | ---------- | +| `enabled` | `false` | | `frequency` | `0 3 * * *` | -Evre politikası, eşikler ve depolama davranışı iç uygulama -ayrıntılarıdır (kullanıcıya açık yapılandırma değildir). +Evre politikası, eşikler ve depolama davranışı dahili uygulama +ayrıntılarıdır (kullanıcıya dönük yapılandırma değildir). -Tam anahtar listesi için [Bellek yapılandırma başvurusu](/tr/reference/memory-config#dreaming-experimental) sayfasına bakın. +Tam anahtar listesi için bkz. [Bellek yapılandırma başvurusu](/tr/reference/memory-config#dreaming-experimental). ## Dreams UI -Etkinleştirildiğinde Gateway içindeki **Dreams** sekmesi şunları gösterir: +Etkinleştirildiğinde Gateway **Dreams** sekmesi şunları gösterir: -- mevcut rüya görme etkin durumu -- evre düzeyi durum ve yönetilen tarama varlığı -- kısa süreli, temellendirilmiş, sinyal ve bugün yükseltilen sayılarını +- geçerli Dreaming etkin durumunu +- evre düzeyinde durumu ve yönetilen tarama varlığını +- kısa süreli, temellendirilmiş, sinyal ve bugün yükseltilen sayıları - bir sonraki zamanlanmış çalıştırmanın zamanlamasını -- hazırlanmış geçmiş yeniden oynatma girdileri için ayrı bir temellendirilmiş Sahne hattını -- `doctor.memory.dreamDiary` tarafından desteklenen genişletilebilir bir Rüya Günlüğü okuyucusunu +- hazırlık aşamasındaki geçmiş tekrar oynatma girdileri için ayrı bir temellendirilmiş Sahne hattını +- `doctor.memory.dreamDiary` tarafından desteklenen genişletilebilir bir Dream Diary okuyucusunu ## İlgili - [Bellek](/tr/concepts/memory) -- [Bellek Arama](/tr/concepts/memory-search) +- [Bellek Araması](/tr/concepts/memory-search) - [memory CLI](/cli/memory) - [Bellek yapılandırma başvurusu](/tr/reference/memory-config) diff --git a/docs/tr/gateway/local-models.md b/docs/tr/gateway/local-models.md index b6c3305f7..dd49097b4 100644 --- a/docs/tr/gateway/local-models.md +++ b/docs/tr/gateway/local-models.md @@ -2,27 +2,27 @@ read_when: - Modelleri kendi GPU makinenizden sunmak istiyorsunuz - LM Studio’yu veya OpenAI uyumlu bir proxy’yi yapılandırıyorsunuz - - En güvenli yerel model rehberine ihtiyacınız var + - En güvenli yerel model rehberliğine ihtiyacınız var summary: OpenClaw’ı yerel LLM’lerde çalıştırın (LM Studio, vLLM, LiteLLM, özel OpenAI uç noktaları) title: Yerel Modeller x-i18n: - generated_at: "2026-04-14T08:52:10Z" + generated_at: "2026-04-15T08:53:16Z" model: gpt-5.4 provider: openai - source_hash: 1544c522357ba4b18dfa6d05ea8d60c7c6262281b53863d9aee7002464703ca7 + source_hash: 8778cc1c623a356ff3cf306c494c046887f9417a70ec71e659e4a8aae912a780 source_path: gateway/local-models.md workflow: 15 --- # Yerel modeller -Yerel kullanım mümkündür, ancak OpenClaw büyük bağlam ve prompt injection’a karşı güçlü savunmalar bekler. Küçük kartlar bağlamı kırpar ve güvenliği zayıflatır. Hedefinizi yüksek tutun: **≥2 tam donanımlı Mac Studio veya eşdeğer GPU sistemi (~30 bin $+)**. Tek bir **24 GB** GPU yalnızca daha hafif prompt’larda ve daha yüksek gecikmeyle çalışır. Çalıştırabildiğiniz **en büyük / tam boyutlu model varyantını kullanın**; yoğun biçimde quantize edilmiş veya “small” checkpoint’ler prompt injection riskini artırır (bkz. [Güvenlik](/tr/gateway/security)). +Yerelde kullanım mümkündür, ancak OpenClaw geniş bağlam + prompt injection’a karşı güçlü savunmalar bekler. Küçük kartlar bağlamı kırpar ve güvenliği sızdırır. Yüksek hedefleyin: **en az 2 tam donanımlı Mac Studio veya eşdeğer GPU sistemi (~30 bin $+)**. Tek bir **24 GB** GPU yalnızca daha hafif prompt’larda ve daha yüksek gecikmeyle işe yarar. Çalıştırabildiğiniz **en büyük / tam boyutlu model varyantını kullanın**; agresif biçimde quantize edilmiş veya “small” checkpoint’ler prompt injection riskini artırır ([Güvenlik](/tr/gateway/security) bölümüne bakın). -En az sürtünmeli yerel model kurulumu istiyorsanız, [LM Studio](/tr/providers/lmstudio) veya [Ollama](/tr/providers/ollama) ile başlayıp `openclaw onboard` çalıştırın. Bu sayfa, daha üst seviye yerel yığınlar ve özel OpenAI uyumlu yerel sunucular için görüş odaklı rehberdir. +En az sürtünmeli yerel kurulumu istiyorsanız [LM Studio](/tr/providers/lmstudio) veya [Ollama](/tr/providers/ollama) ile başlayın ve `openclaw onboard` çalıştırın. Bu sayfa, daha üst düzey yerel yığınlar ve özel OpenAI uyumlu yerel sunucular için görüş odaklı rehberdir. ## Önerilen: LM Studio + büyük yerel model (Responses API) -Şu anda en iyi yerel yığın. LM Studio’da büyük bir model yükleyin (örneğin, tam boyutlu bir Qwen, DeepSeek veya Llama derlemesi), yerel sunucuyu etkinleştirin (varsayılan `http://127.0.0.1:1234`) ve akıl yürütmeyi nihai metinden ayrı tutmak için Responses API kullanın. +Şu anda en iyi yerel yığın. LM Studio’da büyük bir model yükleyin (örneğin tam boyutlu bir Qwen, DeepSeek veya Llama derlemesi), yerel sunucuyu etkinleştirin (varsayılan `http://127.0.0.1:1234`) ve muhakemeyi nihai metinden ayrı tutmak için Responses API kullanın. ```json5 { @@ -45,7 +45,7 @@ En az sürtünmeli yerel model kurulumu istiyorsanız, [LM Studio](/tr/providers models: [ { id: “my-local-model”, - name: “Yerel Model”, + name: “Local Model”, reasoning: false, input: [“text”], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, @@ -62,13 +62,13 @@ En az sürtünmeli yerel model kurulumu istiyorsanız, [LM Studio](/tr/providers **Kurulum kontrol listesi** - LM Studio’yu yükleyin: [https://lmstudio.ai](https://lmstudio.ai) -- LM Studio’da, **mevcut en büyük model derlemesini** indirin (“small”/ağır quantize edilmiş varyantlardan kaçının), sunucuyu başlatın ve `http://127.0.0.1:1234/v1/models` çıktısında modelin listelendiğini doğrulayın. -- `my-local-model` değerini LM Studio’da görünen gerçek model kimliğiyle değiştirin. +- LM Studio’da mevcut **en büyük model derlemesini** indirin (“small”/ağır quantize edilmiş varyantlardan kaçının), sunucuyu başlatın, `http://127.0.0.1:1234/v1/models` adresinin modeli listelediğini doğrulayın. +- `my-local-model` değerini, LM Studio’da gösterilen gerçek model kimliğiyle değiştirin. - Modeli yüklü tutun; soğuk yükleme başlangıç gecikmesi ekler. - LM Studio derlemeniz farklıysa `contextWindow`/`maxTokens` değerlerini ayarlayın. -- WhatsApp için yalnızca son metnin gönderilmesi amacıyla Responses API kullanın. +- WhatsApp için yalnızca nihai metnin gönderilmesi amacıyla Responses API kullanın. -Yerelde çalıştırıyor olsanız bile barındırılan modelleri yapılandırılmış tutun; yedeklerin kullanılabilir kalması için `models.mode: "merge"` kullanın. +Yerelde çalıştırıyor olsanız bile barındırılan modelleri yapılandırılmış halde tutun; yedeklerin kullanılabilir kalması için `models.mode: "merge"` kullanın. ### Hibrit yapılandırma: barındırılan birincil, yerel yedek @@ -97,7 +97,7 @@ Yerelde çalıştırıyor olsanız bile barındırılan modelleri yapılandırı models: [ { id: "my-local-model", - name: "Yerel Model", + name: "Local Model", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, @@ -111,18 +111,18 @@ Yerelde çalıştırıyor olsanız bile barındırılan modelleri yapılandırı } ``` -### Önce yerel, güvenlik ağı olarak barındırılan +### Önce yerel, barındırılan güvenlik ağıyla -Birincil ve yedek sırasını değiştirin; yerel makine devre dışı kaldığında Sonnet veya Opus’a geri dönebilmek için aynı providers bloğunu ve `models.mode: "merge"` ayarını koruyun. +Birincil ve yedek sırasını değiştirin; yerel makine kapalıyken Sonnet veya Opus’a geri düşebilmek için aynı provider bloğunu ve `models.mode: "merge"` ayarını koruyun. ### Bölgesel barındırma / veri yönlendirme -- Barındırılan MiniMax/Kimi/GLM varyantları OpenRouter üzerinde de bölgeye sabitlenmiş uç noktalarla mevcuttur (ör. ABD’de barındırılan). Trafiği seçtiğiniz yargı alanında tutarken Anthropic/OpenAI yedeklerini korumak için orada bölgesel varyantı seçin ve yine `models.mode: "merge"` kullanın. -- Yalnızca yerel kullanım en güçlü gizlilik yoludur; barındırılan bölgesel yönlendirme ise sağlayıcı özelliklerine ihtiyaç duyduğunuz ama veri akışı üzerinde kontrol de istediğiniz durumlar için orta yoldur. +- Barındırılan MiniMax/Kimi/GLM varyantları, bölgeye sabitlenmiş uç noktalarla OpenRouter üzerinde de bulunur (örneğin ABD’de barındırılan). Trafiği seçtiğiniz yargı alanında tutmak için oradaki bölgesel varyantı seçin ve yine Anthropic/OpenAI yedekleri için `models.mode: "merge"` kullanın. +- Yalnızca yerel kullanım en güçlü gizlilik yoludur; barındırılan bölgesel yönlendirme ise sağlayıcı özelliklerine ihtiyaç duyduğunuz ama veri akışı üzerinde denetim istediğiniz durumda orta yoldur. ## Diğer OpenAI uyumlu yerel proxy’ler -vLLM, LiteLLM, OAI-proxy veya özel Gateway’ler OpenAI tarzı bir `/v1` uç noktası sunuyorsa çalışır. Yukarıdaki provider bloğunu kendi uç noktanız ve model kimliğinizle değiştirin: +vLLM, LiteLLM, OAI-proxy veya özel Gateway’ler, OpenAI tarzı bir `/v1` uç noktası sundukları sürece çalışır. Yukarıdaki provider bloğunu kendi uç noktanız ve model kimliğinizle değiştirin: ```json5 { @@ -136,7 +136,7 @@ vLLM, LiteLLM, OAI-proxy veya özel Gateway’ler OpenAI tarzı bir `/v1` uç no models: [ { id: "my-local-model", - name: "Yerel Model", + name: "Local Model", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, @@ -150,26 +150,26 @@ vLLM, LiteLLM, OAI-proxy veya özel Gateway’ler OpenAI tarzı bir `/v1` uç no } ``` -Barındırılan modellerin yedek olarak kullanılabilir kalması için `models.mode: "merge"` ayarını koruyun. +Barındırılan modellerin yedek olarak kullanılabilir kalması için `models.mode: "merge"` kullanın. Yerel/proxy’lenmiş `/v1` arka uçları için davranış notu: - OpenClaw bunları yerel OpenAI uç noktaları olarak değil, proxy tarzı OpenAI uyumlu yollar olarak ele alır -- yalnızca yerel OpenAI’ye özgü istek şekillendirmesi burada uygulanmaz: `service_tier` yoktur, Responses `store` yoktur, OpenAI reasoning-compat payload şekillendirmesi yoktur ve prompt-cache ipuçları yoktur +- yerel OpenAI’ye özgü istek şekillendirme burada uygulanmaz: `service_tier` yoktur, Responses `store` yoktur, OpenAI reasoning uyumluluk payload şekillendirmesi yoktur ve prompt-cache ipuçları yoktur - gizli OpenClaw atıf başlıkları (`originator`, `version`, `User-Agent`) bu özel proxy URL’lerine eklenmez Daha katı OpenAI uyumlu arka uçlar için uyumluluk notları: -- Bazı sunucular Chat Completions içinde yapılandırılmış content-part dizileri yerine yalnızca string `messages[].content` kabul eder. Bu uç noktalar için `models.providers..models[].compat.requiresStringContent: true` ayarlayın. -- Bazı daha küçük veya daha katı yerel arka uçlar, özellikle tool şemaları dahil edildiğinde, OpenClaw’ın tam agent-runtime prompt yapısıyla kararsız çalışır. Arka uç küçük doğrudan `/v1/chat/completions` çağrılarında çalışıyor ama normal OpenClaw agent dönüşlerinde başarısız oluyorsa önce `models.providers..models[].compat.supportsTools: false` deneyin. +- Bazı sunucular Chat Completions için yapılandırılmış içerik-parçası dizileri yerine yalnızca string `messages[].content` kabul eder. Bu uç noktalar için `models.providers..models[].compat.requiresStringContent: true` ayarlayın. +- Bazı daha küçük veya daha katı yerel arka uçlar, özellikle araç şemaları dahil edildiğinde, OpenClaw’ın tam agent-runtime prompt yapısıyla kararsız çalışır. Arka uç küçük doğrudan `/v1/chat/completions` çağrılarında çalışıyor ama normal OpenClaw agent dönüşlerinde başarısız oluyorsa önce `browser`, `cron` ve `message` gibi ağır varsayılan araçları bırakmak için `agents.defaults.localModelMode: "lean"` deneyin; bu da işe yaramazsa `models.providers..models[].compat.supportsTools: false` deneyin. - Arka uç yalnızca daha büyük OpenClaw çalıştırmalarında hâlâ başarısız oluyorsa, kalan sorun genellikle OpenClaw’ın taşıma katmanı değil, yukarı akış model/sunucu kapasitesi veya bir arka uç hatasıdır. ## Sorun giderme - Gateway proxy’ye ulaşabiliyor mu? `curl http://127.0.0.1:1234/v1/models`. -- LM Studio modeli boşaltılmış mı? Yeniden yükleyin; “takılı kalıyor” durumunun yaygın nedenlerinden biri soğuk başlangıçtır. -- OpenClaw, algılanan bağlam penceresi **32k**’nin altındaysa uyarır ve **16k**’nin altında engeller. Bu ön kontrolde takılırsanız, sunucu/model bağlam sınırını artırın veya daha büyük bir model seçin. -- Bağlam hataları mı var? `contextWindow` değerini düşürün veya sunucu sınırınızı yükseltin. -- OpenAI uyumlu sunucu `messages[].content ... expected a string` döndürüyor mu? Bu model girdisine `compat.requiresStringContent: true` ekleyin. -- Doğrudan küçük `/v1/chat/completions` çağrıları çalışıyor ama `openclaw infer model run` Gemma veya başka bir yerel modelde başarısız mı oluyor? Önce tool şemalarını `compat.supportsTools: false` ile devre dışı bırakın, sonra yeniden test edin. Sunucu yalnızca daha büyük OpenClaw prompt’larında hâlâ çöküyorsa, bunu yukarı akış sunucu/model sınırlaması olarak değerlendirin. -- Güvenlik: yerel modeller sağlayıcı tarafı filtreleri atlar; prompt injection etki alanını sınırlamak için agent’ları dar tutun ve Compaction’ı açık bırakın. +- LM Studio modeli yüklenmemiş mi? Yeniden yükleyin; soğuk başlangıç yaygın bir “takılı kalma” nedenidir. +- OpenClaw, algılanan bağlam penceresi **32k**’nin altındaysa uyarır ve **16k**’nin altındaysa engeller. Bu ön kontrolde takılırsanız, sunucu/model bağlam sınırını yükseltin veya daha büyük bir model seçin. +- Bağlam hataları mı alıyorsunuz? `contextWindow` değerini düşürün veya sunucu sınırınızı yükseltin. +- OpenAI uyumlu sunucu `messages[].content ... expected a string` döndürüyor mu? O model girdisine `compat.requiresStringContent: true` ekleyin. +- Doğrudan küçük `/v1/chat/completions` çağrıları çalışıyor ama `openclaw infer model run` Gemma’da veya başka bir yerel modelde başarısız mı oluyor? Önce `compat.supportsTools: false` ile araç şemalarını kapatın, sonra yeniden test edin. Sunucu yalnızca daha büyük OpenClaw prompt’larında hâlâ çöküyorsa, bunu yukarı akış sunucu/model sınırlaması olarak değerlendirin. +- Güvenlik: yerel modeller sağlayıcı tarafı filtreleri atlar; prompt injection etki alanını sınırlamak için agent’ları dar tutun ve Compaction’ı açık tutun. diff --git a/docs/tr/help/testing.md b/docs/tr/help/testing.md index 2fe271974..8ab768d0c 100644 --- a/docs/tr/help/testing.md +++ b/docs/tr/help/testing.md @@ -2,89 +2,91 @@ read_when: - Testleri yerel olarak veya CI içinde çalıştırma - Model/sağlayıcı hataları için regresyonlar ekleme - - Gateway + ajan davranışını hata ayıklama -summary: 'Test kiti: birim/e2e/canlı paketleri, Docker çalıştırıcıları ve her testin neleri kapsadığı' + - Gateway + aracı davranışında hata ayıklama +summary: 'Test kiti: unit/e2e/canlı paketleri, Docker çalıştırıcıları ve her testin neleri kapsadığı' title: Test etme x-i18n: - generated_at: "2026-04-13T08:50:46Z" + generated_at: "2026-04-15T08:53:14Z" model: gpt-5.4 provider: openai - source_hash: 3db91b4bc36f626cd014958ec66b08b9cecd9faaa20a5746cd3a49ad4b0b1c38 + source_hash: fbf647a5cf13b5861a3ba0cb367dc816c57f0e9c60d3cd6320da193bfadf5609 source_path: help/testing.md workflow: 15 --- # Test etme -OpenClaw üç Vitest paketine (birim/entegrasyon, e2e, canlı) ve küçük bir Docker çalıştırıcıları kümesine sahiptir. +OpenClaw’ın üç Vitest paketi vardır (unit/integration, e2e, canlı) ve küçük bir Docker çalıştırıcı kümesi bulunur. -Bu belge, “nasıl test ediyoruz” kılavuzudur: +Bu belge bir “nasıl test ediyoruz” kılavuzudur: -- Her paketin neyi kapsadığı (ve özellikle neyi _kapsamadığı) +- Her paketin neleri kapsadığı (ve özellikle neleri _kapsamadığı_) - Yaygın iş akışları için hangi komutların çalıştırılacağı (yerel, push öncesi, hata ayıklama) -- Canlı testlerin kimlik bilgilerini nasıl bulduğu ve modelleri/sağlayıcıları nasıl seçtiği -- Gerçek dünyadaki model/sağlayıcı sorunları için regresyonların nasıl ekleneceği +- Canlı testlerin kimlik bilgilerini nasıl keşfettiği ve model/sağlayıcıları nasıl seçtiği +- Gerçek dünya model/sağlayıcı sorunları için regresyonların nasıl ekleneceği ## Hızlı başlangıç Çoğu gün: -- Tam kapı (push öncesinde beklenir): `pnpm build && pnpm check && pnpm test` -- Güçlü bir makinede daha hızlı yerel tam paket çalıştırması: `pnpm test:max` +- Tam geçit (push öncesinde beklenen): `pnpm build && pnpm check && pnpm test` +- Geniş kaynaklı bir makinede daha hızlı yerel tam paket çalıştırması: `pnpm test:max` - Doğrudan Vitest izleme döngüsü: `pnpm test:watch` -- Doğrudan dosya hedefleme artık extension/channel yollarını da yönlendiriyor: `pnpm test extensions/discord/src/monitor/message-handler.preflight.test.ts` -- Tek bir hata üzerinde yineleme yapıyorsanız önce hedefli çalıştırmaları tercih edin. +- Doğrudan dosya hedefleme artık uzantı/kanal yollarını da yönlendirir: `pnpm test extensions/discord/src/monitor/message-handler.preflight.test.ts` +- Tek bir hatayı iteratif olarak düzeltirken önce hedefli çalıştırmaları tercih edin. - Docker destekli QA sitesi: `pnpm qa:lab:up` - Linux VM destekli QA hattı: `pnpm openclaw qa suite --runner multipass --scenario channel-chat-baseline` -Testlere dokunduğunuzda veya daha fazla güven istediğinizde: +Testlere dokunduğunuzda veya ek güven istediğinizde: -- Kapsama kapısı: `pnpm test:coverage` +- Kapsam geçidi: `pnpm test:coverage` - E2E paketi: `pnpm test:e2e` -Gerçek sağlayıcıları/modelleri hata ayıklarken (gerçek kimlik bilgileri gerekir): +Gerçek sağlayıcıları/modelleri hata ayıklarken (gerçek kimlik bilgileri gerektirir): - Canlı paket (modeller + Gateway araç/görsel probları): `pnpm test:live` - Tek bir canlı dosyayı sessizce hedefleyin: `pnpm test:live -- src/agents/models.profiles.live.test.ts` İpucu: yalnızca tek bir başarısız duruma ihtiyacınız olduğunda, aşağıda açıklanan allowlist ortam değişkenleriyle canlı testleri daraltmayı tercih edin. -## QA'ya özgü çalıştırıcılar +## QA’ye özgü çalıştırıcılar -Bu komutlar, QA-lab gerçekçiliğine ihtiyaç duyduğunuzda ana test paketlerinin yanında yer alır: +QA-lab gerçekçiliğine ihtiyaç duyduğunuzda bu komutlar ana test paketlerinin yanında yer alır: - `pnpm openclaw qa suite` - - Depo destekli QA senaryolarını doğrudan host üzerinde çalıştırır. - - Varsayılan olarak seçili birden fazla senaryoyu yalıtılmış Gateway worker'larıyla paralel çalıştırır; en fazla 64 worker veya seçili senaryo sayısı kadar kullanır. Worker sayısını ayarlamak için `--concurrency `, eski seri hat için ise `--concurrency 1` kullanın. + - Depo destekli QA senaryolarını doğrudan ana makinede çalıştırır. + - Varsayılan olarak, yalıtılmış Gateway işçileriyle birden çok seçili senaryoyu paralel çalıştırır; en fazla 64 işçi veya seçili senaryo sayısı kullanılır. İşçi sayısını ayarlamak için `--concurrency `, eski seri hat içinse `--concurrency 1` kullanın. - `pnpm openclaw qa suite --runner multipass` - Aynı QA paketini tek kullanımlık bir Multipass Linux VM içinde çalıştırır. - - Host üzerindeki `qa suite` ile aynı senaryo seçimi davranışını korur. + - Ana makinedeki `qa suite` ile aynı senaryo seçme davranışını korur. - `qa suite` ile aynı sağlayıcı/model seçim bayraklarını yeniden kullanır. - - Canlı çalıştırmalar, misafir için pratik olan desteklenen QA kimlik doğrulama girdilerini iletir: - ortam tabanlı sağlayıcı anahtarları, QA canlı sağlayıcı yapılandırma yolu ve varsa `CODEX_HOME`. - - Çıktı dizinleri depo kökü altında kalmalıdır; böylece misafir, bağlanan çalışma alanı üzerinden geri yazabilir. - - Normal QA raporunu + özeti ve Multipass günlüklerini `.artifacts/qa-e2e/...` altına yazar. + - Canlı çalıştırmalar, konuk için pratik olan desteklenen QA kimlik doğrulama girdilerini iletir: + ortam tabanlı sağlayıcı anahtarları, QA canlı sağlayıcı yapılandırma yolu ve mevcutsa `CODEX_HOME`. + - Çıktı dizinleri depo kökü altında kalmalıdır; böylece konuk, bağlanmış çalışma alanı üzerinden geri yazabilir. + - Normal QA raporu + özetin yanı sıra Multipass günlüklerini `.artifacts/qa-e2e/...` altına yazar. - `pnpm qa:lab:up` - Operatör tarzı QA çalışmaları için Docker destekli QA sitesini başlatır. - `pnpm openclaw qa matrix` - - Matrix canlı QA hattını, tek kullanımlık Docker destekli bir Tuwunel homeserver karşısında çalıştırır. - - `driver`, `sut`, `observer` olmak üzere üç geçici Matrix kullanıcısı ve bir özel oda sağlar; ardından gerçek Matrix Plugin ile SUT taşıması olarak bir QA Gateway alt süreci başlatır. + - Matrix canlı QA hattını tek kullanımlık Docker destekli bir Tuwunel homeserver’a karşı çalıştırır. + - Bu QA ana makinesi şu anda yalnızca repo/geliştirme içindir. Paketlenmiş OpenClaw kurulumları `qa-lab` göndermez, bu nedenle `openclaw qa` sunmazlar. + - Depo checkout’ları paketli çalıştırıcıyı doğrudan yükler; ayrı bir plugin kurulum adımı gerekmez. + - Üç geçici Matrix kullanıcısı (`driver`, `sut`, `observer`) ile bir özel oda oluşturur, ardından gerçek Matrix plugin’i SUT taşıması olarak kullanılarak bir QA Gateway alt süreci başlatır. - Varsayılan olarak sabitlenmiş kararlı Tuwunel imajı `ghcr.io/matrix-construct/tuwunel:v1.5.1` kullanılır. Farklı bir imajı test etmeniz gerektiğinde `OPENCLAW_QA_MATRIX_TUWUNEL_IMAGE` ile geçersiz kılın. - - Matrix şu anda yalnızca `--credential-source env` destekler; çünkü hat geçici kullanıcıları yerel olarak oluşturur. - - Bir Matrix QA raporu, özeti ve gözlemlenen olaylar artifact'ını `.artifacts/qa-e2e/...` altına yazar. + - Matrix, hattın yerel olarak tek kullanımlık kullanıcılar oluşturması nedeniyle paylaşılan kimlik bilgisi kaynağı bayraklarını sunmaz. + - Matrix QA raporunu, özetini ve gözlemlenen olaylar yapıtını `.artifacts/qa-e2e/...` altına yazar. - `pnpm openclaw qa telegram` - - Telegram canlı QA hattını, ortamdaki driver ve SUT bot token'larıyla gerçek bir özel grup karşısında çalıştırır. - - `OPENCLAW_QA_TELEGRAM_GROUP_ID`, `OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN` ve `OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN` gerekir. Grup kimliği sayısal Telegram sohbet kimliği olmalıdır. + - Telegram canlı QA hattını, ortamdaki sürücü ve SUT bot belirteçlerini kullanarak gerçek bir özel gruba karşı çalıştırır. + - `OPENCLAW_QA_TELEGRAM_GROUP_ID`, `OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN` ve `OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN` gerektirir. Grup kimliği, sayısal Telegram sohbet kimliği olmalıdır. - Paylaşılan havuz kimlik bilgileri için `--credential-source convex` destekler. Varsayılan olarak env modunu kullanın veya havuzlanmış kiralamalara geçmek için `OPENCLAW_QA_CREDENTIAL_SOURCE=convex` ayarlayın. - - Aynı özel grupta iki farklı bot gerekir ve SUT botunun bir Telegram kullanıcı adı sunması gerekir. - - Kararlı botlar arası gözlem için `@BotFather` içinde her iki bot için de Bot-to-Bot Communication Mode'u etkinleştirin ve driver botun grup bot trafiğini gözlemleyebildiğinden emin olun. - - Bir Telegram QA raporu, özeti ve gözlemlenen mesajlar artifact'ını `.artifacts/qa-e2e/...` altına yazar. + - Aynı özel grupta iki farklı bot gerektirir; ayrıca SUT botunun bir Telegram kullanıcı adını göstermesi gerekir. + - Kararlı botlar arası gözlem için her iki botta da `@BotFather` içinde Bot-to-Bot Communication Mode’u etkinleştirin ve sürücü botunun grup bot trafiğini gözlemleyebildiğinden emin olun. + - Telegram QA raporunu, özetini ve gözlemlenen mesajlar yapıtını `.artifacts/qa-e2e/...` altına yazar. -Canlı taşıma hatları tek bir standart sözleşmeyi paylaşır; böylece yeni taşımalar sapma göstermez: +Canlı taşıma hatları tek bir standart sözleşmeyi paylaşır; böylece yeni taşımalar sapmaz: -`qa-channel` geniş sentetik QA paketi olarak kalır ve canlı taşıma kapsam matriksinin bir parçası değildir. +`qa-channel`, geniş sentetik QA paketi olmaya devam eder ve canlı taşıma kapsam matrisi parçası değildir. -| Hat | Canary | Mention gating | Allowlist block | Üst düzey yanıt | Yeniden başlatma sonrası sürdürme | İleti dizisi takibi | İleti dizisi yalıtımı | Tepki gözlemi | Yardım komutu | +| Hat | Canary | Mention gating | Allowlist block | Üst düzey yanıt | Yeniden başlatma sonrası sürdürme | İş parçacığı takibi | İş parçacığı yalıtımı | Tepki gözlemi | Yardım komutu | | -------- | ------ | -------------- | --------------- | --------------- | --------------------------------- | ------------------- | --------------------- | ------------- | ------------- | | Matrix | x | x | x | x | x | x | x | x | | | Telegram | x | | | | | | | | x | @@ -103,9 +105,9 @@ Gerekli ortam değişkenleri: - Seçilen rol için bir gizli anahtar: - `maintainer` için `OPENCLAW_QA_CONVEX_SECRET_MAINTAINER` - `ci` için `OPENCLAW_QA_CONVEX_SECRET_CI` -- Kimlik bilgisi rolü seçimi: +- Kimlik bilgisi rol seçimi: - CLI: `--credential-role maintainer|ci` - - Ortam varsayılanı: `OPENCLAW_QA_CREDENTIAL_ROLE` (varsayılan `maintainer`) + - Varsayılan ortam: `OPENCLAW_QA_CREDENTIAL_ROLE` (varsayılan `maintainer`) İsteğe bağlı ortam değişkenleri: @@ -115,13 +117,13 @@ Gerekli ortam değişkenleri: - `OPENCLAW_QA_CREDENTIAL_HTTP_TIMEOUT_MS` (varsayılan `15000`) - `OPENCLAW_QA_CONVEX_ENDPOINT_PREFIX` (varsayılan `/qa-credentials/v1`) - `OPENCLAW_QA_CREDENTIAL_OWNER_ID` (isteğe bağlı izleme kimliği) -- `OPENCLAW_QA_ALLOW_INSECURE_HTTP=1`, yalnızca yerel geliştirme için loopback `http://` Convex URL'lerine izin verir. +- `OPENCLAW_QA_ALLOW_INSECURE_HTTP=1`, yalnızca yerel geliştirme için loopback `http://` Convex URL’lerine izin verir. -`OPENCLAW_QA_CONVEX_SITE_URL` normal çalışmada `https://` kullanmalıdır. +Normal çalışmada `OPENCLAW_QA_CONVEX_SITE_URL`, `https://` kullanmalıdır. Maintainer yönetici komutları (havuz ekleme/kaldırma/listeleme) özellikle `OPENCLAW_QA_CONVEX_SECRET_MAINTAINER` gerektirir. -Maintainer'lar için CLI yardımcıları: +Maintainer’lar için CLI yardımcıları: ```bash pnpm openclaw qa credentials add --kind telegram --payload-file qa/telegram-credential.json @@ -129,7 +131,7 @@ pnpm openclaw qa credentials list --kind telegram pnpm openclaw qa credentials remove --credential-id ``` -Betiklerde ve CI yardımcı araçlarında makine tarafından okunabilir çıktı için `--json` kullanın. +Betiklerde ve CI yardımcı programlarında makine tarafından okunabilir çıktı için `--json` kullanın. Varsayılan uç nokta sözleşmesi (`OPENCLAW_QA_CONVEX_SITE_URL` + `/qa-credentials/v1`): @@ -143,66 +145,71 @@ Varsayılan uç nokta sözleşmesi (`OPENCLAW_QA_CONVEX_SITE_URL` + `/qa-credent - `POST /release` - İstek: `{ kind, ownerId, actorRole, credentialId, leaseToken }` - Başarı: `{ status: "ok" }` (veya boş `2xx`) -- `POST /admin/add` (yalnızca maintainer gizli anahtarı) +- `POST /admin/add` (yalnızca maintainer secret) - İstek: `{ kind, actorId, payload, note?, status? }` - Başarı: `{ status: "ok", credential }` -- `POST /admin/remove` (yalnızca maintainer gizli anahtarı) +- `POST /admin/remove` (yalnızca maintainer secret) - İstek: `{ credentialId, actorId }` - Başarı: `{ status: "ok", changed, credential }` - Etkin kiralama koruması: `{ status: "error", code: "LEASE_ACTIVE", ... }` -- `POST /admin/list` (yalnızca maintainer gizli anahtarı) +- `POST /admin/list` (yalnızca maintainer secret) - İstek: `{ kind?, status?, includePayload?, limit? }` - Başarı: `{ status: "ok", credentials, count }` -Telegram türü için yük biçimi: +Telegram türü için yük şekli: - `{ groupId: string, driverToken: string, sutToken: string }` -- `groupId` sayısal bir Telegram sohbet kimliği dizesi olmalıdır. -- `admin/add`, `kind: "telegram"` için bu biçimi doğrular ve hatalı biçimlendirilmiş yükleri reddeder. +- `groupId`, sayısal bir Telegram sohbet kimliği dizgesi olmalıdır. +- `admin/add`, `kind: "telegram"` için bu şekli doğrular ve hatalı yükleri reddeder. -### QA'ya bir kanal ekleme +### QA’ye kanal ekleme Bir kanalı markdown QA sistemine eklemek tam olarak iki şey gerektirir: 1. Kanal için bir taşıma bağdaştırıcısı. -2. Kanal sözleşmesini çalıştıran bir senaryo paketi. +2. Kanal sözleşmesini uygulayan bir senaryo paketi. -Paylaşılan `qa-lab` çalıştırıcısı akışı sahiplenebiliyorsa, kanala özgü bir QA çalıştırıcısı eklemeyin. +Paylaşılan `qa-lab` ana makinesi akışı sahiplenebiliyorken yeni bir üst düzey QA komut kökü eklemeyin. -`qa-lab` paylaşılan mekanikleri sahiplenir: +`qa-lab`, paylaşılan ana makine mekaniklerinin sahibidir: +- `openclaw qa` komut kökü - paket başlatma ve kapatma -- worker eşzamanlılığı -- artifact yazımı -- rapor üretimi +- işçi eşzamanlılığı +- yapıt yazımı +- rapor oluşturma - senaryo yürütme - eski `qa-channel` senaryoları için uyumluluk takma adları -Kanal bağdaştırıcısı taşıma sözleşmesini sahiplenir: +Çalıştırıcı plugin’leri taşıma sözleşmesinin sahibidir: -- Gateway'nin bu taşıma için nasıl yapılandırıldığı -- hazır oluşun nasıl kontrol edildiği +- `openclaw qa ` komutunun paylaşılan `qa` kökü altına nasıl bağlandığı +- Gateway’in bu taşıma için nasıl yapılandırıldığı +- hazır olma durumunun nasıl denetlendiği - gelen olayların nasıl enjekte edildiği - giden mesajların nasıl gözlemlendiği -- transkriptlerin ve normalize edilmiş taşıma durumunun nasıl sunulduğu +- kayıt dökümlerinin ve normalleştirilmiş taşıma durumunun nasıl sunulduğu - taşıma destekli eylemlerin nasıl yürütüldüğü -- taşımaya özgü sıfırlama veya temizliğin nasıl ele alındığı +- taşıma-özel sıfırlama veya temizleme işlemlerinin nasıl ele alındığı -Yeni bir kanal için minimum benimseme çıtası şudur: +Yeni bir kanal için minimum benimseme eşiği şöyledir: -1. Taşıma bağdaştırıcısını paylaşılan `qa-lab` seam üzerinde uygulayın. -2. Bağdaştırıcıyı taşıma kayıt defterine kaydedin. -3. Taşımaya özgü mekanikleri bağdaştırıcı veya kanal harness'i içinde tutun. -4. `qa/scenarios/` altında markdown senaryoları yazın veya uyarlayın. -5. Yeni senaryolar için genel senaryo yardımcılarını kullanın. -6. Depo kasıtlı bir geçiş yapmıyorsa mevcut uyumluluk takma adlarını çalışır durumda tutun. +1. Paylaşılan `qa` kökünün sahibi olarak `qa-lab` kalsın. +2. Taşıma çalıştırıcısını paylaşılan `qa-lab` ana makine dikişinde uygulayın. +3. Taşıma-özel mekanikleri çalıştırıcı plugin veya kanal harness’i içinde tutun. +4. Çalıştırıcıyı, rakip bir kök komut kaydetmek yerine `openclaw qa ` olarak bağlayın. + Çalıştırıcı plugin’leri `openclaw.plugin.json` içinde `qaRunners` tanımlamalı ve `runtime-api.ts` içinden eşleşen bir `qaRunnerCliRegistrations` dizisi dışa aktarmalıdır. + `runtime-api.ts` hafif kalmalıdır; tembel CLI ve çalıştırıcı yürütmesi ayrı giriş noktalarının arkasında kalmalıdır. +5. `qa/scenarios/` altında markdown senaryoları yazın veya uyarlayın. +6. Yeni senaryolar için genel senaryo yardımcılarını kullanın. +7. Depo kasıtlı bir geçiş yapmıyorsa mevcut uyumluluk takma adlarını çalışır durumda tutun. Karar kuralı katıdır: -- Davranış bir kez `qa-lab` içinde ifade edilebiliyorsa, `qa-lab` içine koyun. -- Davranış bir kanal taşımasına bağlıysa, onu o bağdaştırıcıda veya Plugin harness'inde tutun. -- Bir senaryo birden fazla kanalın kullanabileceği yeni bir yetenek gerektiriyorsa, `suite.ts` içinde kanala özgü bir dal yerine genel bir yardımcı ekleyin. -- Bir davranış yalnızca bir taşıma için anlamlıysa, senaryoyu taşımaya özgü tutun ve bunu senaryo sözleşmesinde açık hale getirin. +- Bir davranış `qa-lab` içinde tek seferde ifade edilebiliyorsa, onu `qa-lab` içine koyun. +- Davranış tek bir kanal taşımasına bağlıysa, onu o çalıştırıcı plugin veya plugin harness’i içinde tutun. +- Bir senaryonun birden fazla kanalın kullanabileceği yeni bir yeteneğe ihtiyacı varsa, `suite.ts` içinde kanala özgü bir dal eklemek yerine genel bir yardımcı ekleyin. +- Bir davranış yalnızca tek bir taşıma için anlamlıysa, senaryoyu taşıma-özel tutun ve bunu senaryo sözleşmesinde açıkça belirtin. Yeni senaryolar için tercih edilen genel yardımcı adları şunlardır: @@ -219,7 +226,7 @@ Yeni senaryolar için tercih edilen genel yardımcı adları şunlardır: - `formatTransportTranscript` - `resetTransport` -Mevcut senaryolar için uyumluluk takma adları kullanılabilir olmaya devam eder; bunlar arasında şunlar vardır: +Mevcut senaryolar için uyumluluk takma adları kullanılabilir olmaya devam eder, bunlar arasında şunlar vardır: - `waitForQaChannelReady` - `waitForOutboundMessage` @@ -228,60 +235,61 @@ Mevcut senaryolar için uyumluluk takma adları kullanılabilir olmaya devam ede - `resetBus` Yeni kanal çalışmaları genel yardımcı adlarını kullanmalıdır. -Uyumluluk takma adları bir “flag day” geçişini önlemek içindir; yeni senaryo yazımında model olarak kullanılmaları için değil. +Uyumluluk takma adları, bayrak günü tarzı bir geçişten kaçınmak için vardır; yeni senaryo yazımı için model olarak değil. ## Test paketleri (ne nerede çalışır) -Paketleri “artan gerçekçilik” (ve artan oynaklık/maliyet) olarak düşünün: +Paketleri “artan gerçekçilik” (ve artan kararsızlık/maliyet) olarak düşünün: -### Birim / entegrasyon (varsayılan) +### Unit / integration (varsayılan) - Komut: `pnpm test` - Yapılandırma: mevcut kapsamlı Vitest projeleri üzerinde on adet sıralı shard çalıştırması (`vitest.full-*.config.ts`) -- Dosyalar: `src/**/*.test.ts`, `packages/**/*.test.ts`, `test/**/*.test.ts` altındaki core/birim envanterleri ve `vitest.unit.config.ts` tarafından kapsanan allowlist içindeki `ui` Node testleri +- Dosyalar: `src/**/*.test.ts`, `packages/**/*.test.ts`, `test/**/*.test.ts` altındaki çekirdek/unit envanterleri ve `vitest.unit.config.ts` tarafından kapsanan allowlist’e alınmış `ui` node testleri - Kapsam: - - Saf birim testleri - - Süreç içi entegrasyon testleri (Gateway auth, yönlendirme, araçlar, ayrıştırma, yapılandırma) + - Saf unit testleri + - Süreç içi entegrasyon testleri (Gateway kimlik doğrulama, yönlendirme, araçlar, ayrıştırma, yapılandırma) - Bilinen hatalar için deterministik regresyonlar - Beklentiler: - - CI içinde çalışır + - CI’da çalışır - Gerçek anahtarlar gerekmez - Hızlı ve kararlı olmalıdır - Projeler notu: - - Hedeflenmemiş `pnpm test` artık tek bir devasa yerel root-project süreci yerine on bir küçük shard yapılandırması (`core-unit-src`, `core-unit-security`, `core-unit-ui`, `core-unit-support`, `core-support-boundary`, `core-contracts`, `core-bundled`, `core-runtime`, `agentic`, `auto-reply`, `extensions`) çalıştırır. Bu, yüklü makinelerde tepe RSS'yi azaltır ve auto-reply/extension işlerinin ilgisiz paketleri aç bırakmasını önler. - - `pnpm test --watch` hâlâ yerel root `vitest.config.ts` proje grafiğini kullanır; çünkü çoklu shard izleme döngüsü pratik değildir. - - `pnpm test`, `pnpm test:watch` ve `pnpm test:perf:imports`, açık dosya/dizin hedeflerini önce kapsamlı hatlar üzerinden yönlendirir; böylece `pnpm test extensions/discord/src/monitor/message-handler.preflight.test.ts` tam root proje başlatma maliyetini ödemez. - - `pnpm test:changed`, fark yalnızca yönlendirilebilir kaynak/test dosyalarına dokunduğunda değişen git yollarını aynı kapsamlı hatlara genişletir; yapılandırma/kurulum düzenlemeleri ise yine geniş root-project yeniden çalıştırmasına düşer. - - Ajanlar, komutlar, plugin'ler, auto-reply yardımcıları, `plugin-sdk` ve benzeri saf yardımcı alanlardaki import açısından hafif birim testleri, `test/setup-openclaw-runtime.ts` dosyasını atlayan `unit-fast` hattı üzerinden yönlendirilir; durum bilgili/çalışma zamanı açısından ağır dosyalar mevcut hatlarda kalır. - - Seçilmiş `plugin-sdk` ve `commands` yardımcı kaynak dosyaları da changed-mode çalıştırmalarını bu hafif hatlardaki açık kardeş testlere eşler; böylece yardımcı düzenlemeleri o dizin için tam ağır paketi yeniden çalıştırmaz. - - `auto-reply` artık üç özel bölüme sahiptir: üst düzey core yardımcıları, üst düzey `reply.*` entegrasyon testleri ve `src/auto-reply/reply/**` alt ağacı. Bu, en ağır yanıt harness işini ucuz status/chunk/token testlerinden uzak tutar. + - Hedeflenmemiş `pnpm test` artık tek bir devasa yerel root-project süreci yerine on bir küçük shard yapılandırması (`core-unit-src`, `core-unit-security`, `core-unit-ui`, `core-unit-support`, `core-support-boundary`, `core-contracts`, `core-bundled`, `core-runtime`, `agentic`, `auto-reply`, `extensions`) çalıştırır. Bu, yüklü makinelerde tepe RSS’yi azaltır ve auto-reply/uzantı işlerinin ilgisiz paketleri aç bırakmasını önler. + - `pnpm test --watch` hâlâ yerel root `vitest.config.ts` proje grafiğini kullanır, çünkü çok shard’lı bir izleme döngüsü pratik değildir. + - `pnpm test`, `pnpm test:watch` ve `pnpm test:perf:imports`, açık dosya/dizin hedeflerini önce kapsamlı hatlar üzerinden yönlendirir; böylece `pnpm test extensions/discord/src/monitor/message-handler.preflight.test.ts`, tam root proje başlatma maliyetini ödemez. + - `pnpm test:changed`, fark yalnızca yönlendirilebilir kaynak/test dosyalarına dokunduğunda değişen git yollarını aynı kapsamlı hatlara genişletir; config/setup düzenlemeleri ise yine geniş root-project yeniden çalıştırmasına düşer. + - Agents, commands, plugins, auto-reply yardımcıları, `plugin-sdk` ve benzeri saf yardımcı alanlardan import açısından hafif unit testleri, `test/setup-openclaw-runtime.ts` dosyasını atlayan `unit-fast` hattı üzerinden yönlendirilir; durumlu/çalışma zamanı açısından ağır dosyalar mevcut hatlarda kalır. + - Seçilmiş `plugin-sdk` ve `commands` yardımcı kaynak dosyaları da changed-mode çalıştırmalarını bu hafif hatlardaki açık kardeş testlere eşler; böylece yardımcı düzenlemeleri, o dizin için tam ağır paketin yeniden çalıştırılmasını önler. + - `auto-reply` artık üç özel kovaya sahiptir: üst düzey çekirdek yardımcılar, üst düzey `reply.*` entegrasyon testleri ve `src/auto-reply/reply/**` alt ağacı. Bu, en ağır yanıt harness işlerini ucuz status/chunk/token testlerinden uzak tutar. - Gömülü çalıştırıcı notu: - - Mesaj aracı keşif girdilerini veya Compaction çalışma zamanı bağlamını değiştirdiğinizde, her iki kapsama düzeyini de koruyun. + - Mesaj-aracı keşif girdilerini veya Compaction çalışma zamanı bağlamını değiştirdiğinizde, + kapsamanın her iki düzeyini de koruyun. - Saf yönlendirme/normalleştirme sınırları için odaklı yardımcı regresyonları ekleyin. - Ayrıca gömülü çalıştırıcı entegrasyon paketlerini de sağlıklı tutun: `src/agents/pi-embedded-runner/compact.hooks.test.ts`, `src/agents/pi-embedded-runner/run.overflow-compaction.test.ts` ve `src/agents/pi-embedded-runner/run.overflow-compaction.loop.test.ts`. - - Bu paketler, kapsamlı kimliklerin ve Compaction davranışının gerçek `run.ts` / `compact.ts` yolları üzerinden akmaya devam ettiğini doğrular; yalnızca yardımcı testler bu entegrasyon yolları için yeterli bir ikame değildir. + - Bu paketler, kapsamlı kimliklerin ve Compaction davranışının hâlâ gerçek `run.ts` / `compact.ts` yollarından geçtiğini doğrular; yalnızca yardımcı testleri bu entegrasyon yolları için yeterli bir ikame değildir. - Havuz notu: - Temel Vitest yapılandırması artık varsayılan olarak `threads` kullanır. - - Paylaşılan Vitest yapılandırması ayrıca `isolate: false` ayarlar ve root projeleri, e2e ve canlı yapılandırmalar boyunca yalıtılmamış çalıştırıcıyı kullanır. - - Root UI hattı `jsdom` kurulumunu ve optimizer'ını korur, ancak artık o da paylaşılan yalıtılmamış çalıştırıcı üzerinde çalışır. - - Her `pnpm test` shard'ı, paylaşılan Vitest yapılandırmasından aynı `threads` + `isolate: false` varsayılanlarını devralır. - - Paylaşılan `scripts/run-vitest.mjs` başlatıcısı artık büyük yerel çalıştırmalar sırasında V8 derleme churn'ünü azaltmak için varsayılan olarak Vitest alt Node süreçlerine `--no-maglev` de ekler. Stok V8 davranışıyla karşılaştırma yapmanız gerekiyorsa `OPENCLAW_VITEST_ENABLE_MAGLEV=1` ayarlayın. -- Hızlı yerel yineleme notu: - - `pnpm test:changed`, değişen yollar daha küçük bir pakete temiz biçimde eşlendiğinde kapsamlı hatlar üzerinden yönlendirir. - - `pnpm test:max` ve `pnpm test:changed:max` aynı yönlendirme davranışını korur; yalnızca daha yüksek bir worker sınırıyla. - - Yerel worker otomatik ölçekleme artık kasıtlı olarak daha muhafazakârdır ve host yük ortalaması zaten yüksek olduğunda da geri çekilir; böylece aynı anda birden çok Vitest çalıştırması varsayılan olarak daha az zarar verir. - - Temel Vitest yapılandırması, test bağlantıları değiştiğinde changed-mode yeniden çalıştırmaların doğru kalması için projeleri/yapılandırma dosyalarını `forceRerunTriggers` olarak işaretler. - - Yapılandırma, desteklenen host'larda `OPENCLAW_VITEST_FS_MODULE_CACHE` özelliğini etkin tutar; doğrudan profil oluşturma için açık bir önbellek konumu istiyorsanız `OPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/abs/path` ayarlayın. -- Performans hata ayıklama notu: - - `pnpm test:perf:imports`, Vitest import süresi raporlamasını ve import dökümü çıktısını etkinleştirir. - - `pnpm test:perf:imports:changed`, aynı profil görünümünü `origin/main` sonrasındaki değişen dosyalarla sınırlar. -- `pnpm test:perf:changed:bench -- --ref `, ilgili commit farkı için yönlendirilmiş `test:changed` ile yerel root-project yolunu karşılaştırır ve duvar saati ile macOS maksimum RSS'yi yazdırır. -- `pnpm test:perf:changed:bench -- --worktree`, mevcut kirli ağacı değişen dosya listesini `scripts/test-projects.mjs` ve root Vitest yapılandırması üzerinden yönlendirerek kıyaslar. - - `pnpm test:perf:profile:main`, Vitest/Vite başlatma ve dönüştürme yükü için bir main-thread CPU profili yazar. - - `pnpm test:perf:profile:runner`, dosya paralelliği devre dışıyken birim paketi için runner CPU+heap profilleri yazar. + - Paylaşılan Vitest yapılandırması ayrıca `isolate: false` değerini sabitler ve root projeleri, e2e ve canlı yapılandırmalar genelinde izole olmayan çalıştırıcıyı kullanır. + - Root UI hattı `jsdom` kurulumunu ve optimizer’ını korur, ancak artık paylaşılan izole olmayan çalıştırıcı üzerinde çalışır. + - Her `pnpm test` shard’ı, paylaşılan Vitest yapılandırmasından aynı `threads` + `isolate: false` varsayılanlarını devralır. + - Paylaşılan `scripts/run-vitest.mjs` başlatıcısı artık büyük yerel çalıştırmalarda V8 derleme churn’ünü azaltmak için varsayılan olarak Vitest alt Node süreçlerine `--no-maglev` de ekler. Stok V8 davranışıyla karşılaştırmanız gerekiyorsa `OPENCLAW_VITEST_ENABLE_MAGLEV=1` ayarlayın. +- Hızlı yerel iterasyon notu: + - `pnpm test:changed`, değişen yollar daha küçük bir pakete temiz şekilde eşleniyorsa kapsamlı hatlar üzerinden yönlendirilir. + - `pnpm test:max` ve `pnpm test:changed:max` aynı yönlendirme davranışını korur, yalnızca daha yüksek bir işçi sınırıyla. + - Yerel işçi otomatik ölçeklendirmesi artık kasıtlı olarak daha muhafazakârdır ve ana makinenin yük ortalaması zaten yüksek olduğunda da geri çekilir; böylece birden fazla eşzamanlı Vitest çalıştırması varsayılan olarak daha az zarar verir. + - Temel Vitest yapılandırması, changed-mode yeniden çalıştırmalarının test kablolaması değiştiğinde doğru kalması için projeleri/yapılandırma dosyalarını `forceRerunTriggers` olarak işaretler. + - Yapılandırma, desteklenen ana makinelerde `OPENCLAW_VITEST_FS_MODULE_CACHE` seçeneğini etkin tutar; doğrudan profilleme için tek bir açık önbellek konumu istiyorsanız `OPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/abs/path` ayarlayın. +- Perf-debug notu: + - `pnpm test:perf:imports`, Vitest import süresi raporlamasını ve import döküm çıktısını etkinleştirir. + - `pnpm test:perf:imports:changed`, aynı profilleme görünümünü `origin/main` sonrasındaki değişen dosyalarla sınırlar. +- `pnpm test:perf:changed:bench -- --ref `, bu commit edilmiş fark için yönlendirilmiş `test:changed` ile yerel root-project yolunu karşılaştırır ve duvar süresi ile macOS maksimum RSS’yi yazdırır. +- `pnpm test:perf:changed:bench -- --worktree`, değişen dosya listesini `scripts/test-projects.mjs` ve root Vitest yapılandırması üzerinden yönlendirerek mevcut kirli ağacı kıyaslar. + - `pnpm test:perf:profile:main`, Vitest/Vite başlatma ve transform yükü için ana iş parçacığı CPU profilini yazar. + - `pnpm test:perf:profile:runner`, dosya paralelliği devre dışıyken unit paketi için çalıştırıcı CPU+heap profilleri yazar. ### E2E (Gateway smoke) @@ -289,36 +297,36 @@ Paketleri “artan gerçekçilik” (ve artan oynaklık/maliyet) olarak düşün - Yapılandırma: `vitest.e2e.config.ts` - Dosyalar: `src/**/*.e2e.test.ts`, `test/**/*.e2e.test.ts` - Çalışma zamanı varsayılanları: - - Depodaki geri kalanla uyumlu olarak Vitest `threads` ve `isolate: false` kullanır. - - Uyarlanabilir worker'lar kullanır (CI: en fazla 2, yerel: varsayılan 1). + - Deponun geri kalanıyla eşleşecek şekilde Vitest `threads` ve `isolate: false` kullanır. + - Uyarlanabilir işçiler kullanır (CI: en fazla 2, yerel: varsayılan 1). - Konsol G/Ç yükünü azaltmak için varsayılan olarak sessiz modda çalışır. - Yararlı geçersiz kılmalar: - - Worker sayısını zorlamak için `OPENCLAW_E2E_WORKERS=` (üst sınır 16). + - İşçi sayısını zorlamak için `OPENCLAW_E2E_WORKERS=` (üst sınır 16). - Ayrıntılı konsol çıktısını yeniden etkinleştirmek için `OPENCLAW_E2E_VERBOSE=1`. - Kapsam: - Çok örnekli Gateway uçtan uca davranışı - - WebSocket/HTTP yüzeyleri, Node eşleştirme ve daha ağır ağ çalışmaları + - WebSocket/HTTP yüzeyleri, Node eşleştirme ve daha ağır ağ iletişimi - Beklentiler: - - CI içinde çalışır (boru hattında etkinleştirildiğinde) + - CI’da çalışır (boru hattında etkinleştirildiğinde) - Gerçek anahtarlar gerekmez - - Birim testlerinden daha fazla hareketli parçaya sahiptir (daha yavaş olabilir) + - Unit testlerden daha fazla hareketli parçaya sahiptir (daha yavaş olabilir) ### E2E: OpenShell backend smoke - Komut: `pnpm test:e2e:openshell` - Dosya: `test/openshell-sandbox.e2e.test.ts` - Kapsam: - - Docker aracılığıyla host üzerinde yalıtılmış bir OpenShell Gateway başlatır - - Geçici bir yerel Dockerfile'dan bir sandbox oluşturur - - OpenClaw'ın OpenShell backend'ini gerçek `sandbox ssh-config` + SSH exec üzerinden çalıştırır - - Uzak-kanonik dosya sistemi davranışını sandbox fs bridge üzerinden doğrular + - Docker üzerinden ana makinede yalıtılmış bir OpenShell Gateway başlatır + - Geçici yerel bir Dockerfile’dan bir sandbox oluşturur + - OpenClaw’ın OpenShell backend’ini gerçek `sandbox ssh-config` + SSH exec üzerinden çalıştırır + - Uzak kanonik dosya sistemi davranışını sandbox fs köprüsü üzerinden doğrular - Beklentiler: - Yalnızca isteğe bağlıdır; varsayılan `pnpm test:e2e` çalıştırmasının parçası değildir - Yerel bir `openshell` CLI ve çalışan bir Docker daemon gerektirir - - Yalıtılmış `HOME` / `XDG_CONFIG_HOME` kullanır, ardından test Gateway'ini ve sandbox'ı yok eder + - Yalıtılmış `HOME` / `XDG_CONFIG_HOME` kullanır, ardından test Gateway’ini ve sandbox’ı yok eder - Yararlı geçersiz kılmalar: - - Geniş e2e paketini elle çalıştırırken testi etkinleştirmek için `OPENCLAW_E2E_OPENSHELL=1` - - Varsayılan olmayan bir CLI ikilisine veya sarmalayıcı betiğe işaret etmek için `OPENCLAW_E2E_OPENSHELL_COMMAND=/path/to/openshell` + - Daha geniş e2e paketini elle çalıştırırken testi etkinleştirmek için `OPENCLAW_E2E_OPENSHELL=1` + - Varsayılan olmayan bir CLI binary’si veya wrapper betiğine işaret etmek için `OPENCLAW_E2E_OPENSHELL_COMMAND=/path/to/openshell` ### Canlı (gerçek sağlayıcılar + gerçek modeller) @@ -328,140 +336,140 @@ Paketleri “artan gerçekçilik” (ve artan oynaklık/maliyet) olarak düşün - Varsayılan: `pnpm test:live` tarafından **etkinleştirilir** (`OPENCLAW_LIVE_TEST=1` ayarlar) - Kapsam: - “Bu sağlayıcı/model bugün gerçek kimlik bilgileriyle gerçekten çalışıyor mu?” - - Sağlayıcı biçim değişikliklerini, araç çağırma tuhaflıklarını, auth sorunlarını ve oran sınırı davranışını yakalar + - Sağlayıcı biçim değişikliklerini, araç çağırma tuhaflıklarını, kimlik doğrulama sorunlarını ve oran sınırı davranışını yakalar - Beklentiler: - - Tasarım gereği CI için kararlı değildir (gerçek ağlar, gerçek sağlayıcı politikaları, kotalar, kesintiler) + - Tasarım gereği CI’da kararlı değildir (gerçek ağlar, gerçek sağlayıcı politikaları, kotalar, kesintiler) - Paraya mal olur / oran sınırlarını kullanır - “Her şeyi” çalıştırmak yerine daraltılmış alt kümeleri çalıştırmak tercih edilir -- Canlı çalıştırmalar eksik API anahtarlarını almak için `~/.profile` dosyasını kaynak olarak yükler. -- Varsayılan olarak canlı çalıştırmalar yine de `HOME` dizinini yalıtır ve yapılandırma/auth materyalini geçici bir test home'una kopyalar; böylece birim fixture'ları gerçek `~/.openclaw` dizininizi değiştiremez. -- Canlı testlerin gerçek home dizininizi kullanmasını özellikle istediğinizde yalnızca `OPENCLAW_LIVE_USE_REAL_HOME=1` ayarlayın. -- `pnpm test:live` artık daha sessiz bir modu varsayılan yapar: `[live] ...` ilerleme çıktısını korur, ancak ek `~/.profile` bildirimini bastırır ve Gateway bootstrap günlükleri/Bonjour gürültüsünü susturur. Tam başlangıç günlüklerini geri istiyorsanız `OPENCLAW_LIVE_TEST_QUIET=0` ayarlayın. -- API anahtarı rotasyonu (sağlayıcıya özgü): virgül/noktalı virgül biçiminde `*_API_KEYS` veya `*_API_KEY_1`, `*_API_KEY_2` ayarlayın (örneğin `OPENAI_API_KEYS`, `ANTHROPIC_API_KEYS`, `GEMINI_API_KEYS`) ya da canlıya özgü geçersiz kılma için `OPENCLAW_LIVE_*_KEY`; testler oran sınırı yanıtlarında yeniden dener. +- Canlı çalıştırmalar, eksik API anahtarlarını almak için `~/.profile` dosyasını kaynak olarak yükler. +- Varsayılan olarak canlı çalıştırmalar yine de `HOME` dizinini yalıtır ve config/auth materyalini geçici bir test home dizinine kopyalar; böylece unit fixture’ları gerçek `~/.openclaw` dizininizi değiştiremez. +- Canlı testlerin gerçek home dizininizi kullanmasını bilerek istediğinizde yalnızca `OPENCLAW_LIVE_USE_REAL_HOME=1` ayarlayın. +- `pnpm test:live` artık varsayılan olarak daha sessiz bir mod kullanır: `[live] ...` ilerleme çıktısını korur, ancak ek `~/.profile` bildirimini bastırır ve Gateway bootstrap günlükleri/Bonjour gürültüsünü susturur. Tam başlatma günlüklerini geri istiyorsanız `OPENCLAW_LIVE_TEST_QUIET=0` ayarlayın. +- API anahtarı rotasyonu (sağlayıcıya özgü): virgül/noktalı virgül biçimiyle `*_API_KEYS` veya `*_API_KEY_1`, `*_API_KEY_2` ayarlayın (örneğin `OPENAI_API_KEYS`, `ANTHROPIC_API_KEYS`, `GEMINI_API_KEYS`) ya da canlıya özgü geçersiz kılma için `OPENCLAW_LIVE_*_KEY`; testler oran sınırı yanıtlarında yeniden dener. - İlerleme/Heartbeat çıktısı: - - Canlı paketler artık stderr'e ilerleme satırları yazar; böylece uzun sağlayıcı çağrıları, Vitest konsol yakalaması sessiz olsa bile görünür biçimde aktif kalır. - - `vitest.live.config.ts`, Vitest konsol müdahalesini devre dışı bırakır; böylece sağlayıcı/Gateway ilerleme satırları canlı çalıştırmalar sırasında anında akar. - - Doğrudan model Heartbeat'lerini `OPENCLAW_LIVE_HEARTBEAT_MS` ile ayarlayın. - - Gateway/probe Heartbeat'lerini `OPENCLAW_LIVE_GATEWAY_HEARTBEAT_MS` ile ayarlayın. + - Canlı paketler artık ilerleme satırlarını stderr’e gönderir; böylece Vitest konsol yakalaması sessiz olduğunda bile uzun sağlayıcı çağrılarının etkin olduğu görünür. + - `vitest.live.config.ts`, canlı çalıştırmalarda sağlayıcı/Gateway ilerleme satırlarının anında akması için Vitest konsol engellemesini devre dışı bırakır. + - Doğrudan model Heartbeat’lerini `OPENCLAW_LIVE_HEARTBEAT_MS` ile ayarlayın. + - Gateway/probe Heartbeat’lerini `OPENCLAW_LIVE_GATEWAY_HEARTBEAT_MS` ile ayarlayın. ## Hangi paketi çalıştırmalıyım? Bu karar tablosunu kullanın: -- Mantık/testler düzenleniyorsa: `pnpm test` çalıştırın (ve çok şey değiştirdiyseniz `pnpm test:coverage`) -- Gateway ağ iletişimine / WS protokolüne / eşleştirmeye dokunuyorsanız: `pnpm test:e2e` ekleyin +- Mantık/test düzenliyorsanız: `pnpm test` çalıştırın (çok şey değiştirdiyseniz ayrıca `pnpm test:coverage`) +- Gateway ağı / WS protokolü / eşleştirme alanına dokunuyorsanız: `pnpm test:e2e` ekleyin - “Botum çalışmıyor” / sağlayıcıya özgü arızalar / araç çağırma sorunlarını hata ayıklıyorsanız: daraltılmış bir `pnpm test:live` çalıştırın ## Canlı: Android Node yetenek taraması - Test: `src/gateway/android-node.capabilities.live.test.ts` - Betik: `pnpm android:test:integration` -- Amaç: bağlı bir Android Node tarafından şu anda **duyurulan her komutu** çağırmak ve komut sözleşmesi davranışını doğrulamak. +- Amaç: bağlı bir Android Node tarafından şu anda duyurulan **her komutu** çağırmak ve komut sözleşmesi davranışını doğrulamak. - Kapsam: - - Ön koşullu/manuel kurulum (paket uygulamayı kurmaz/çalıştırmaz/eşleştirmez). + - Önkoşullandırılmış/manuel kurulum (paket uygulamayı kurmaz/çalıştırmaz/eşleştirmez). - Seçilen Android Node için komut bazında Gateway `node.invoke` doğrulaması. - Gerekli ön kurulum: - - Android uygulaması zaten Gateway'ye bağlanmış ve eşleştirilmiş olmalıdır. - - Uygulama ön planda tutulmalıdır. - - Başarılı olmasını beklediğiniz yetenekler için izinler/yakalama onayı verilmiş olmalıdır. + - Android uygulaması zaten bağlı ve Gateway ile eşleştirilmiş olmalı. + - Uygulama ön planda tutulmalı. + - Başarılı olmasını beklediğiniz yetenekler için izinler/yakalama onayı verilmiş olmalı. - İsteğe bağlı hedef geçersiz kılmaları: - `OPENCLAW_ANDROID_NODE_ID` veya `OPENCLAW_ANDROID_NODE_NAME`. - `OPENCLAW_ANDROID_GATEWAY_URL` / `OPENCLAW_ANDROID_GATEWAY_TOKEN` / `OPENCLAW_ANDROID_GATEWAY_PASSWORD`. -- Tam Android kurulum ayrıntıları: [Android Uygulaması](/tr/platforms/android) +- Android için tam kurulum ayrıntıları: [Android App](/tr/platforms/android) ## Canlı: model smoke (profil anahtarları) -Canlı testler, arızaları izole edebilmek için iki katmana ayrılmıştır: +Canlı testler, hataları izole edebilmek için iki katmana ayrılmıştır: -- “Doğrudan model”, sağlayıcının/modelin verilen anahtarla en azından yanıt verebildiğini söyler. -- “Gateway smoke”, bu model için tam Gateway+ajan hattının çalıştığını söyler (oturumlar, geçmiş, araçlar, sandbox ilkesi vb.). +- “Doğrudan model”, sağlayıcı/modelin verilen anahtarla en azından yanıt verip veremediğini söyler. +- “Gateway smoke”, tam Gateway+agent hattının bu model için çalıştığını söyler (oturumlar, geçmiş, araçlar, sandbox politikası vb.). ### Katman 1: Doğrudan model tamamlama (Gateway yok) - Test: `src/agents/models.profiles.live.test.ts` - Amaç: - - Keşfedilen modelleri listelemek - - Kimlik bilgileriniz olan modelleri seçmek için `getApiKeyForModel` kullanmak + - Keşfedilen modelleri numaralandırmak + - Kimlik bilgisine sahip olduğunuz modelleri seçmek için `getApiKeyForModel` kullanmak - Model başına küçük bir tamamlama çalıştırmak (ve gerektiğinde hedefli regresyonlar) - Nasıl etkinleştirilir: - - `pnpm test:live` (veya Vitest doğrudan çağrılıyorsa `OPENCLAW_LIVE_TEST=1`) -- Bu paketi gerçekten çalıştırmak için `OPENCLAW_LIVE_MODELS=modern` (veya `all`, modern için takma ad) ayarlayın; aksi halde `pnpm test:live` odağını Gateway smoke üzerinde tutmak için bu paket atlanır + - `pnpm test:live` (veya Vitest’i doğrudan çağırıyorsanız `OPENCLAW_LIVE_TEST=1`) +- Bu paketi gerçekten çalıştırmak için `OPENCLAW_LIVE_MODELS=modern` (veya `all`, modern için takma ad) ayarlayın; aksi halde `pnpm test:live` odağını Gateway smoke üzerinde tutmak için atlanır - Modeller nasıl seçilir: - - Modern allowlist'i çalıştırmak için `OPENCLAW_LIVE_MODELS=modern` (Opus/Sonnet 4.6+, GPT-5.x + Codex, Gemini 3, GLM 4.7, MiniMax M2.7, Grok 4) + - Modern allowlist’i çalıştırmak için `OPENCLAW_LIVE_MODELS=modern` (Opus/Sonnet 4.6+, GPT-5.x + Codex, Gemini 3, GLM 4.7, MiniMax M2.7, Grok 4) - `OPENCLAW_LIVE_MODELS=all`, modern allowlist için bir takma addır - veya `OPENCLAW_LIVE_MODELS="openai/gpt-5.4,anthropic/claude-opus-4-6,..."` (virgülle ayrılmış allowlist) - - Modern/all taramaları varsayılan olarak özenle seçilmiş yüksek sinyalli bir üst sınır kullanır; kapsamlı bir modern tarama için `OPENCLAW_LIVE_MAX_MODELS=0` veya daha küçük bir üst sınır için pozitif bir sayı ayarlayın. + - Modern/all taramaları varsayılan olarak özenle seçilmiş, yüksek sinyalli bir üst sınır kullanır; kapsamlı bir modern tarama için `OPENCLAW_LIVE_MAX_MODELS=0`, daha küçük bir sınır için ise pozitif bir sayı ayarlayın. - Sağlayıcılar nasıl seçilir: - `OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"` (virgülle ayrılmış allowlist) - Anahtarlar nereden gelir: - - Varsayılan olarak: profil deposu ve env geri dönüşleri + - Varsayılan olarak: profil deposu ve env fallback’leri - Yalnızca **profil deposunu** zorunlu kılmak için `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1` ayarlayın - Bunun var olma nedeni: - - “Sağlayıcı API'si bozuk / anahtar geçersiz” ile “Gateway ajan hattı bozuk” durumlarını ayırır + - “Sağlayıcı API’si bozuk / anahtar geçersiz” ile “Gateway agent hattı bozuk” durumlarını ayırır - Küçük, yalıtılmış regresyonlar içerir (örnek: OpenAI Responses/Codex Responses reasoning replay + araç çağrısı akışları) -### Katman 2: Gateway + geliştirme ajanı smoke (`@openclaw` gerçekte ne yapıyor) +### Katman 2: Gateway + geliştirme agent smoke (`@openclaw` gerçekte ne yapar) - Test: `src/gateway/gateway-models.profiles.live.test.ts` - Amaç: - - Süreç içi bir Gateway başlatmak - - Bir `agent:dev:*` oturumu oluşturmak/düzeltmek (çalıştırma başına model geçersiz kılma) - - Anahtarlı modeller üzerinde dolaşmak ve şunları doğrulamak: + - Süreç içinde bir Gateway başlatmak + - Bir `agent:dev:*` oturumu oluşturmak/yamalamak (çalıştırma başına model geçersiz kılma) + - Anahtarlı modeller üzerinde yinelemek ve şunları doğrulamak: - “anlamlı” yanıt (araç yok) - gerçek bir araç çağrısının çalışması (`read` probe) - isteğe bağlı ek araç probları (`exec+read` probe) - OpenAI regresyon yollarının (yalnızca araç çağrısı → takip) çalışmaya devam etmesi -- Probe ayrıntıları (böylece hataları hızlıca açıklayabilirsiniz): - - `read` probe: test, çalışma alanına nonce içeren bir dosya yazar ve ajandan bu dosyayı `read` etmesini ve nonce'u geri yankılamasını ister. - - `exec+read` probe: test, ajandan geçici bir dosyaya nonce yazmak için `exec` kullanmasını, ardından bunu tekrar `read` etmesini ister. - - image probe: test, oluşturulmuş bir PNG (kedi + rastgele kod) ekler ve modelin `cat ` döndürmesini bekler. +- Probe ayrıntıları (hataları hızlı açıklayabilmeniz için): + - `read` probe: test, çalışma alanına bir nonce dosyası yazar ve agent’tan bunu `read` etmesini ve nonce’u geri yankılamasını ister. + - `exec+read` probe: test, agent’tan bir nonce’u geçici bir dosyaya `exec` ile yazmasını, ardından bunu geri `read` etmesini ister. + - image probe: test, oluşturulmuş bir PNG (kedi + rastgeleleştirilmiş kod) ekler ve modelin `cat ` döndürmesini bekler. - Uygulama başvurusu: `src/gateway/gateway-models.profiles.live.test.ts` ve `src/gateway/live-image-probe.ts`. - Nasıl etkinleştirilir: - - `pnpm test:live` (veya Vitest doğrudan çağrılıyorsa `OPENCLAW_LIVE_TEST=1`) + - `pnpm test:live` (veya Vitest’i doğrudan çağırıyorsanız `OPENCLAW_LIVE_TEST=1`) - Modeller nasıl seçilir: - Varsayılan: modern allowlist (Opus/Sonnet 4.6+, GPT-5.x + Codex, Gemini 3, GLM 4.7, MiniMax M2.7, Grok 4) - `OPENCLAW_LIVE_GATEWAY_MODELS=all`, modern allowlist için bir takma addır - - Ya da daraltmak için `OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"` (veya virgülle ayrılmış liste) ayarlayın - - Modern/all Gateway taramaları varsayılan olarak özenle seçilmiş yüksek sinyalli bir üst sınır kullanır; kapsamlı bir modern tarama için `OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0` veya daha küçük bir üst sınır için pozitif bir sayı ayarlayın. -- Sağlayıcılar nasıl seçilir (“her şeyi OpenRouter” yapmaktan kaçının): + - Ya da daraltmak için `OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"` (veya virgüllü liste) ayarlayın + - Modern/all Gateway taramaları varsayılan olarak özenle seçilmiş, yüksek sinyalli bir üst sınır kullanır; kapsamlı bir modern tarama için `OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0`, daha küçük bir sınır için ise pozitif bir sayı ayarlayın. +- Sağlayıcılar nasıl seçilir (“OpenRouter her şey” yaklaşımından kaçının): - `OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"` (virgülle ayrılmış allowlist) -- Araç + görsel probları bu canlı testte her zaman açıktır: +- Araç + image probe’ları bu canlı testte her zaman açıktır: - `read` probe + `exec+read` probe (araç stresi) - - model görsel girdi desteği sunduğunda image probe çalışır + - image probe, model image girişi desteğini duyurduğunda çalışır - Akış (üst düzey): - Test, “CAT” + rastgele kod içeren küçük bir PNG üretir (`src/gateway/live-image-probe.ts`) - Bunu `agent` üzerinden `attachments: [{ mimeType: "image/png", content: "" }]` ile gönderir - - Gateway ekleri `images[]` içine ayrıştırır (`src/gateway/server-methods/agent.ts` + `src/gateway/chat-attachments.ts`) - - Gömülü ajan çok kipli bir kullanıcı mesajını modele iletir + - Gateway, ekleri `images[]` içine ayrıştırır (`src/gateway/server-methods/agent.ts` + `src/gateway/chat-attachments.ts`) + - Gömülü agent, modele çok kipli bir kullanıcı mesajı iletir - Doğrulama: yanıt `cat` + kodu içerir (OCR toleransı: küçük hatalara izin verilir) -İpucu: makinenizde neyi test edebileceğinizi görmek için (ve tam `provider/model` kimlikleri için) şunu çalıştırın: +İpucu: makinenizde neyi test edebileceğinizi (ve tam `provider/model` kimliklerini) görmek için şunu çalıştırın: ```bash openclaw models list openclaw models list --json ``` -## Canlı: CLI backend smoke (Claude, Codex, Gemini veya diğer yerel CLI'lar) +## Canlı: CLI backend smoke (Claude, Codex, Gemini veya diğer yerel CLI’lar) - Test: `src/gateway/gateway-cli-backend.live.test.ts` -- Amaç: Gateway + ajan hattını, varsayılan yapılandırmanıza dokunmadan yerel bir CLI backend kullanarak doğrulamak. -- Backend'e özgü smoke varsayılanları, sahibi olan extension'ın `cli-backend.ts` tanımıyla birlikte bulunur. +- Amaç: varsayılan config’inize dokunmadan, yerel bir CLI backend kullanarak Gateway + agent hattını doğrulamak. +- Backend’e özgü smoke varsayılanları, sahibi olan uzantının `cli-backend.ts` tanımıyla birlikte yaşar. - Etkinleştirme: - - `pnpm test:live` (veya Vitest doğrudan çağrılıyorsa `OPENCLAW_LIVE_TEST=1`) + - `pnpm test:live` (veya Vitest’i doğrudan çağırıyorsanız `OPENCLAW_LIVE_TEST=1`) - `OPENCLAW_LIVE_CLI_BACKEND=1` - Varsayılanlar: - Varsayılan sağlayıcı/model: `claude-cli/claude-sonnet-4-6` - - Komut/argüman/görsel davranışı, sahibi olan CLI backend Plugin metadatasından gelir. + - Komut/argüman/image davranışı, sahibi olan CLI backend plugin meta verisinden gelir. - Geçersiz kılmalar (isteğe bağlı): - `OPENCLAW_LIVE_CLI_BACKEND_MODEL="codex-cli/gpt-5.4"` - `OPENCLAW_LIVE_CLI_BACKEND_COMMAND="/full/path/to/codex"` - `OPENCLAW_LIVE_CLI_BACKEND_ARGS='["exec","--json","--color","never","--sandbox","read-only","--skip-git-repo-check"]'` - - Gerçek bir görsel eki göndermek için `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=1` (yollar prompt içine enjekte edilir). - - Görsel dosya yollarını prompt enjeksiyonu yerine CLI argümanları olarak geçirmek için `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"`. - - `IMAGE_ARG` ayarlandığında görsel argümanlarının nasıl geçirileceğini kontrol etmek için `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"` (veya `"list"`). + - Gerçek bir image eki göndermek için `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=1` (yollar prompt içine enjekte edilir). + - Image dosya yollarını prompt enjeksiyonu yerine CLI argümanları olarak geçirmek için `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"`. + - `IMAGE_ARG` ayarlandığında image argümanlarının nasıl geçirileceğini denetlemek için `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"` (veya `"list"`). - İkinci bir tur göndermek ve resume akışını doğrulamak için `OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1`. - - Varsayılan Claude Sonnet -> Opus aynı oturum sürekliliği probe'unu devre dışı bırakmak için `OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=0` (seçilen model bir geçiş hedefini desteklediğinde bunu zorla açmak için `1` ayarlayın). + - Varsayılan Claude Sonnet -> Opus aynı oturum sürekliliği probe’unu devre dışı bırakmak için `OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=0` (seçilen model bir geçiş hedefini desteklediğinde bunu zorla açmak için `1` ayarlayın). Örnek: @@ -488,27 +496,27 @@ pnpm test:docker:live-cli-backend:gemini Notlar: -- Docker çalıştırıcısı `scripts/test-live-cli-backend-docker.sh` konumundadır. -- Canlı CLI-backend smoke'u depo Docker imajı içinde root olmayan `node` kullanıcısı olarak çalıştırır. -- Sahibi olan extension'dan CLI smoke metadata'sını çözümler, ardından eşleşen Linux CLI paketini (`@anthropic-ai/claude-code`, `@openai/codex` veya `@google/gemini-cli`) önbelleğe alınmış yazılabilir `OPENCLAW_DOCKER_CLI_TOOLS_DIR` önekine kurar (varsayılan: `~/.cache/openclaw/docker-cli-tools`). -- `pnpm test:docker:live-cli-backend:claude-subscription`, ya `~/.claude/.credentials.json` içindeki `claudeAiOauth.subscriptionType` üzerinden ya da `claude setup-token` içinden `CLAUDE_CODE_OAUTH_TOKEN` aracılığıyla taşınabilir Claude Code abonelik OAuth'u gerektirir. Önce Docker içinde doğrudan `claude -p` komutunu doğrular, ardından Anthropic API anahtarı env değişkenlerini korumadan iki Gateway CLI-backend turu çalıştırır. Bu abonelik hattı, Claude şu anda üçüncü taraf uygulama kullanımını normal abonelik planı sınırları yerine ek kullanım faturalandırması üzerinden yönlendirdiği için Claude MCP/araç ve görsel problarını varsayılan olarak devre dışı bırakır. -- Canlı CLI-backend smoke artık Claude, Codex ve Gemini için aynı uçtan uca akışı çalıştırır: metin turu, görsel sınıflandırma turu, ardından Gateway CLI üzerinden doğrulanan MCP `cron` araç çağrısı. -- Claude'un varsayılan smoke'u ayrıca oturumu Sonnet'ten Opus'a geçirir ve devam eden oturumun önceki bir notu hâlâ hatırladığını doğrular. +- Docker çalıştırıcısı `scripts/test-live-cli-backend-docker.sh` konumunda bulunur. +- Canlı CLI-backend smoke testini depo Docker imajı içinde root olmayan `node` kullanıcısı olarak çalıştırır. +- Sahibi olan uzantıdan CLI smoke meta verisini çözer, ardından eşleşen Linux CLI paketini (`@anthropic-ai/claude-code`, `@openai/codex` veya `@google/gemini-cli`) `OPENCLAW_DOCKER_CLI_TOOLS_DIR` içindeki önbelleğe alınmış yazılabilir bir öneke kurar (varsayılan: `~/.cache/openclaw/docker-cli-tools`). +- `pnpm test:docker:live-cli-backend:claude-subscription`, taşınabilir Claude Code abonelik OAuth’u gerektirir; bu ya `claudeAiOauth.subscriptionType` içeren `~/.claude/.credentials.json` üzerinden ya da `claude setup-token` komutundan gelen `CLAUDE_CODE_OAUTH_TOKEN` ile sağlanır. Önce Docker içinde doğrudan `claude -p` çalışmasını doğrular, ardından Anthropic API anahtarı ortam değişkenlerini korumadan iki Gateway CLI-backend turu çalıştırır. Bu abonelik hattı, Claude şu anda üçüncü taraf uygulama kullanımını normal abonelik planı sınırları yerine ek kullanım faturalandırması üzerinden yönlendirdiği için varsayılan olarak Claude MCP/tool ve image probe’larını devre dışı bırakır. +- Canlı CLI-backend smoke artık Claude, Codex ve Gemini için aynı uçtan uca akışı uygular: metin turu, image sınıflandırma turu, ardından Gateway CLI üzerinden doğrulanan MCP `cron` araç çağrısı. +- Claude’un varsayılan smoke testi ayrıca oturumu Sonnet’ten Opus’a yamalar ve yeniden başlatılan oturumun önceki bir notu hâlâ hatırladığını doğrular. ## Canlı: ACP bind smoke (`/acp spawn ... --bind here`) - Test: `src/gateway/gateway-acp-bind.live.test.ts` -- Amaç: gerçek bir ACP ajanıyla gerçek ACP konuşma-bind akışını doğrulamak: - - `/acp spawn --bind here` gönder - - sentetik bir message-channel konuşmasını yerinde bağla - - aynı konuşmada normal bir takip mesajı gönder - - takibin bağlı ACP oturum transkriptine ulaştığını doğrula +- Amaç: canlı bir ACP agent ile gerçek ACP konuşma bağlama akışını doğrulamak: + - `/acp spawn --bind here` göndermek + - sentetik bir mesaj-kanalı konuşmasını yerinde bağlamak + - aynı konuşmada normal bir takip mesajı göndermek + - takibin bağlı ACP oturum kaydına düştüğünü doğrulamak - Etkinleştirme: - `pnpm test:live src/gateway/gateway-acp-bind.live.test.ts` - `OPENCLAW_LIVE_ACP_BIND=1` - Varsayılanlar: - - Docker içindeki ACP ajanları: `claude,codex,gemini` - - Doğrudan `pnpm test:live ...` için ACP ajanı: `claude` + - Docker içindeki ACP agent’ları: `claude,codex,gemini` + - Doğrudan `pnpm test:live ...` için ACP agent: `claude` - Sentetik kanal: Slack DM tarzı konuşma bağlamı - ACP backend: `acpx` - Geçersiz kılmalar: @@ -518,8 +526,8 @@ Notlar: - `OPENCLAW_LIVE_ACP_BIND_AGENTS=claude,codex,gemini` - `OPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND='npx -y @agentclientprotocol/claude-agent-acp@'` - Notlar: - - Bu hat, testlerin haricen teslim ediyormuş gibi yapmadan message-channel bağlamı ekleyebilmesi için admin-only sentetik originating-route alanlarıyla Gateway `chat.send` yüzeyini kullanır. - - `OPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND` ayarlanmamışsa, test seçilen ACP harness ajanı için gömülü `acpx` Plugin'inin yerleşik ajan kayıt defterini kullanır. + - Bu hat, testlerin harici teslim ediyormuş gibi davranmadan mesaj-kanalı bağlamı ekleyebilmesi için yöneticiye özel sentetik originating-route alanlarıyla Gateway `chat.send` yüzeyini kullanır. + - `OPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND` ayarlanmamışsa test, seçilen ACP harness agent için gömülü `acpx` plugin’inin yerleşik agent kayıt defterini kullanır. Örnek: @@ -535,7 +543,7 @@ Docker tarifi: pnpm test:docker:live-acp-bind ``` -Tek ajanlı Docker tarifleri: +Tek agent’lı Docker tarifleri: ```bash pnpm test:docker:live-acp-bind:claude @@ -545,31 +553,31 @@ pnpm test:docker:live-acp-bind:gemini Docker notları: -- Docker çalıştırıcısı `scripts/test-live-acp-bind-docker.sh` konumundadır. -- Varsayılan olarak ACP bind smoke'u tüm desteklenen canlı CLI ajanlarına sırayla karşı çalıştırır: `claude`, `codex`, ardından `gemini`. +- Docker çalıştırıcısı `scripts/test-live-acp-bind-docker.sh` konumunda bulunur. +- Varsayılan olarak ACP bind smoke testini desteklenen tüm canlı CLI agent’larına sırayla karşı çalıştırır: `claude`, `codex`, ardından `gemini`. - Matrisi daraltmak için `OPENCLAW_LIVE_ACP_BIND_AGENTS=claude`, `OPENCLAW_LIVE_ACP_BIND_AGENTS=codex` veya `OPENCLAW_LIVE_ACP_BIND_AGENTS=gemini` kullanın. -- `~/.profile` dosyasını kaynak olarak yükler, eşleşen CLI auth materyalini container içine hazırlar, `acpx`'i yazılabilir bir npm önekine kurar, sonra istenen canlı CLI'yı (`@anthropic-ai/claude-code`, `@openai/codex` veya `@google/gemini-cli`) eksikse kurar. -- Docker içinde çalıştırıcı `OPENCLAW_LIVE_ACP_BIND_ACPX_COMMAND=$HOME/.npm-global/bin/acpx` ayarlar; böylece acpx, kaynak olarak yüklenen profildeki sağlayıcı env değişkenlerini alt harness CLI için kullanılabilir tutar. +- `~/.profile` dosyasını kaynak olarak yükler, eşleşen CLI kimlik doğrulama materyalini konteynıra hazırlar, `acpx`’i yazılabilir bir npm önekine kurar, ardından istenen canlı CLI’ı (`@anthropic-ai/claude-code`, `@openai/codex` veya `@google/gemini-cli`) eksikse kurar. +- Docker içinde çalıştırıcı `OPENCLAW_LIVE_ACP_BIND_ACPX_COMMAND=$HOME/.npm-global/bin/acpx` ayarlar; böylece acpx, kaynak olarak yüklenen profildeki sağlayıcı ortam değişkenlerini alt harness CLI için kullanılabilir tutar. ## Canlı: Codex app-server harness smoke -- Amaç: Plugin sahibi olunan Codex harness'i normal Gateway +- Amaç: plugin’e ait Codex harness’ini normal Gateway `agent` yöntemi üzerinden doğrulamak: - - paketlenmiş `codex` Plugin'ini yüklemek + - paketli `codex` plugin’ini yüklemek - `OPENCLAW_AGENT_RUNTIME=codex` seçmek - - `codex/gpt-5.4` için ilk Gateway ajan turunu göndermek + - `codex/gpt-5.4` için ilk bir Gateway agent turu göndermek - aynı OpenClaw oturumuna ikinci bir tur göndermek ve app-server - thread'inin devam edebildiğini doğrulamak - - `/codex status` ve `/codex models` komutlarını aynı Gateway komutu - yolu üzerinden çalıştırmak + thread’inin resume yapabildiğini doğrulamak + - aynı Gateway komut + yolu üzerinden `/codex status` ve `/codex models` çalıştırmak - Test: `src/gateway/gateway-codex-harness.live.test.ts` - Etkinleştirme: `OPENCLAW_LIVE_CODEX_HARNESS=1` - Varsayılan model: `codex/gpt-5.4` -- İsteğe bağlı görsel probe: `OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1` -- İsteğe bağlı MCP/araç probe: `OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1` -- Smoke, bozuk bir Codex - harness'inin sessizce PI'ya geri düşerek başarılı olamaması için `OPENCLAW_AGENT_HARNESS_FALLBACK=none` ayarlar. -- Auth: shell/profile üzerinden `OPENAI_API_KEY`, artı isteğe bağlı olarak kopyalanmış +- İsteğe bağlı image probe: `OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1` +- İsteğe bağlı MCP/tool probe: `OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1` +- Smoke testi `OPENCLAW_AGENT_HARNESS_FALLBACK=none` ayarlar; böylece bozuk bir Codex + harness’i sessizce PI’ya geri düşerek testi geçemez. +- Kimlik doğrulama: shell/profile içinden `OPENAI_API_KEY`, ayrıca isteğe bağlı olarak kopyalanan `~/.codex/auth.json` ve `~/.codex/config.toml` Yerel tarif: @@ -592,20 +600,20 @@ pnpm test:docker:live-codex-harness Docker notları: -- Docker çalıştırıcısı `scripts/test-live-codex-harness-docker.sh` konumundadır. +- Docker çalıştırıcısı `scripts/test-live-codex-harness-docker.sh` konumunda bulunur. - Bağlanan `~/.profile` dosyasını kaynak olarak yükler, `OPENAI_API_KEY` geçirir, varsa Codex CLI - auth dosyalarını kopyalar, `@openai/codex` paketini yazılabilir bağlanmış bir npm - önekine kurar, kaynak ağacı hazırlar ve ardından yalnızca Codex-harness canlı testini çalıştırır. -- Docker varsayılan olarak görsel ve MCP/araç problarını etkinleştirir. Daha dar bir hata ayıklama çalıştırması gerektiğinde + kimlik doğrulama dosyalarını kopyalar, `@openai/codex` paketini yazılabilir, bağlanmış bir npm + önekine kurar, kaynak ağacını hazırlar ve ardından yalnızca Codex-harness canlı testini çalıştırır. +- Docker, image ve MCP/tool probe’larını varsayılan olarak etkinleştirir. Daha dar bir hata ayıklama çalıştırmasına ihtiyaç duyduğunuzda `OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0` veya `OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0` ayarlayın. -- Docker ayrıca `OPENCLAW_AGENT_HARNESS_FALLBACK=none` dışa aktarır; bu canlı - test yapılandırmasıyla eşleşir, böylece `openai-codex/*` veya PI geri dönüşü bir Codex harness +- Docker ayrıca `OPENCLAW_AGENT_HARNESS_FALLBACK=none` dışa aktarır; bu, canlı + test yapılandırmasıyla eşleşir; böylece `openai-codex/*` veya PI fallback bir Codex harness regresyonunu gizleyemez. ### Önerilen canlı tarifler -Dar, açık allowlist'ler en hızlı ve en az oynak olanlardır: +Dar, açık allowlist’ler en hızlı ve en az kararsız olanlardır: - Tek model, doğrudan (Gateway yok): - `OPENCLAW_LIVE_MODELS="openai/gpt-5.4" pnpm test:live src/agents/models.profiles.live.test.ts` @@ -613,7 +621,7 @@ Dar, açık allowlist'ler en hızlı ve en az oynak olanlardır: - Tek model, Gateway smoke: - `OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.4" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts` -- Birkaç sağlayıcı arasında araç çağırma: +- Birden çok sağlayıcıda araç çağırma: - `OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.4,anthropic/claude-opus-4-6,google/gemini-3-flash-preview,zai/glm-4.7,minimax/MiniMax-M2.7" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts` - Google odağı (Gemini API anahtarı + Antigravity): @@ -622,20 +630,20 @@ Dar, açık allowlist'ler en hızlı ve en az oynak olanlardır: Notlar: -- `google/...` Gemini API'yi kullanır (API anahtarı). -- `google-antigravity/...` Antigravity OAuth köprüsünü kullanır (Cloud Code Assist tarzı ajan uç noktası). -- `google-gemini-cli/...` makinenizdeki yerel Gemini CLI'ı kullanır (ayrı auth + araç davranışı farklılıkları). -- Gemini API ile Gemini CLI arasındaki fark: - - API: OpenClaw, Google'ın barındırılan Gemini API'sini HTTP üzerinden çağırır (API anahtarı / profil auth); çoğu kullanıcının “Gemini” derken kastettiği budur. - - CLI: OpenClaw yerel bir `gemini` ikilisini shell üzerinden çağırır; bunun kendi auth mekanizması vardır ve davranışı farklı olabilir (streaming/araç desteği/sürüm kayması). +- `google/...`, Gemini API’yi kullanır (API anahtarı). +- `google-antigravity/...`, Antigravity OAuth köprüsünü kullanır (Cloud Code Assist tarzı agent uç noktası). +- `google-gemini-cli/...`, makinenizdeki yerel Gemini CLI’ı kullanır (ayrı kimlik doğrulama + araç farklılıkları). +- Gemini API ile Gemini CLI karşılaştırması: + - API: OpenClaw, Google’ın barındırılan Gemini API’sini HTTP üzerinden çağırır (API anahtarı / profil kimlik doğrulaması); çoğu kullanıcının “Gemini” derken kastettiği budur. + - CLI: OpenClaw, yerel bir `gemini` binary’sini shell üzerinden çağırır; kendi kimlik doğrulamasına sahiptir ve farklı davranabilir (streaming/araç desteği/sürüm kayması). -## Canlı: model matriksi (neleri kapsıyoruz) +## Canlı: model matrisi (neleri kapsıyoruz) -Sabit bir “CI model listesi” yoktur (canlı isteğe bağlıdır), ancak anahtarlara sahip bir geliştirme makinesinde düzenli olarak kapsanması **önerilen** modeller bunlardır. +Sabit bir “CI model listesi” yoktur (canlı testler isteğe bağlıdır), ancak anahtarlara sahip bir geliştirme makinesinde düzenli olarak kapsanması **önerilen** modeller bunlardır. -### Modern smoke kümesi (araç çağırma + görsel) +### Modern smoke seti (araç çağırma + image) -Çalışır durumda tutmayı beklediğimiz “yaygın modeller” çalıştırması budur: +Çalışmaya devam etmesini beklediğimiz “yaygın modeller” çalıştırması budur: - OpenAI (Codex dışı): `openai/gpt-5.4` (isteğe bağlı: `openai/gpt-5.4-mini`) - OpenAI Codex: `openai-codex/gpt-5.4` @@ -645,12 +653,12 @@ Sabit bir “CI model listesi” yoktur (canlı isteğe bağlıdır), ancak anah - Z.AI (GLM): `zai/glm-4.7` - MiniMax: `minimax/MiniMax-M2.7` -Araçlar + görselle Gateway smoke çalıştırması: +Araçlar + image ile Gateway smoke çalıştırması: `OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.4,openai-codex/gpt-5.4,anthropic/claude-opus-4-6,google/gemini-3.1-pro-preview,google/gemini-3-flash-preview,google-antigravity/claude-opus-4-6-thinking,google-antigravity/gemini-3-flash,zai/glm-4.7,minimax/MiniMax-M2.7" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts` ### Temel seviye: araç çağırma (Read + isteğe bağlı Exec) -Sağlayıcı ailesi başına en az bir tane seçin: +Her sağlayıcı ailesi için en az bir tane seçin: - OpenAI: `openai/gpt-5.4` (veya `openai/gpt-5.4-mini`) - Anthropic: `anthropic/claude-opus-4-6` (veya `anthropic/claude-sonnet-4-6`) @@ -658,44 +666,44 @@ Sağlayıcı ailesi başına en az bir tane seçin: - Z.AI (GLM): `zai/glm-4.7` - MiniMax: `minimax/MiniMax-M2.7` -İsteğe bağlı ek kapsama (olsa iyi olur): +İsteğe bağlı ek kapsam (olması iyi olur): - xAI: `xai/grok-4` (veya mevcut en son sürüm) -- Mistral: `mistral/`… (etkinleştirdiğiniz araç yetenekli bir model seçin) +- Mistral: `mistral/`… (etkinleştirdiğiniz “tools” yetenekli bir model seçin) - Cerebras: `cerebras/`… (erişiminiz varsa) - LM Studio: `lmstudio/`… (yerel; araç çağırma API moduna bağlıdır) -### Vision: görsel gönderimi (ek → çok kipli mesaj) +### Vision: image gönderme (ek → çok kipli mesaj) -Görsel probe'u çalıştırmak için `OPENCLAW_LIVE_GATEWAY_MODELS` içine en az bir görsel destekli model ekleyin (Claude/Gemini/OpenAI'nin görsel yetenekli varyantları vb.). +Image probe’unu çalıştırmak için `OPENCLAW_LIVE_GATEWAY_MODELS` içine en az bir image yetenekli model ekleyin (Claude/Gemini/OpenAI vision yetenekli varyantları vb.). -### Toplayıcılar / alternatif Gateway'ler +### Toplayıcılar / alternatif Gateway’ler -Anahtarlarınız etkinse şunlar üzerinden de test desteğimiz vardır: +Anahtarlarınız etkinse, şu yollar üzerinden de test desteklenir: -- OpenRouter: `openrouter/...` (yüzlerce model; araç+görsel destekli adayları bulmak için `openclaw models scan` kullanın) -- OpenCode: Zen için `opencode/...` ve Go için `opencode-go/...` (`OPENCODE_API_KEY` / `OPENCODE_ZEN_API_KEY` ile auth) +- OpenRouter: `openrouter/...` (yüzlerce model; araç+image yetenekli adayları bulmak için `openclaw models scan` kullanın) +- OpenCode: Zen için `opencode/...` ve Go için `opencode-go/...` (`OPENCODE_API_KEY` / `OPENCODE_ZEN_API_KEY` ile kimlik doğrulama) -Canlı matrikse ekleyebileceğiniz daha fazla sağlayıcı (kimlik bilgileri/yapılandırmanız varsa): +Canlı matrise ekleyebileceğiniz daha fazla sağlayıcı (kimlik bilgileriniz/config’iniz varsa): - Yerleşik: `openai`, `openai-codex`, `anthropic`, `google`, `google-vertex`, `google-antigravity`, `google-gemini-cli`, `zai`, `openrouter`, `opencode`, `opencode-go`, `xai`, `groq`, `cerebras`, `mistral`, `github-copilot` -- `models.providers` üzerinden (özel uç noktalar): `minimax` (bulut/API), ayrıca OpenAI/Anthropic uyumlu tüm vekiller (LM Studio, vLLM, LiteLLM vb.) +- `models.providers` üzerinden (özel uç noktalar): `minimax` (bulut/API), ayrıca OpenAI/Anthropic uyumlu herhangi bir proxy (LM Studio, vLLM, LiteLLM vb.) -İpucu: belgelerde “tüm modelleri” sabit kodlamaya çalışmayın. Yetkili liste, makinenizde `discoverModels(...)` ne döndürüyorsa ve hangi anahtarlar mevcutsa odur. +İpucu: belgelerde “tüm modelleri” sabitlemeye çalışmayın. Yetkili liste, makinenizde `discoverModels(...)` ne döndürüyorsa ve hangi anahtarlar mevcutsa odur. ## Kimlik bilgileri (asla commit etmeyin) -Canlı testler kimlik bilgilerini CLI ile aynı şekilde keşfeder. Pratik sonuçlar: +Canlı testler, kimlik bilgilerini CLI ile aynı şekilde keşfeder. Pratik sonuçları: - CLI çalışıyorsa, canlı testler de aynı anahtarları bulmalıdır. -- Bir canlı test “kimlik bilgisi yok” diyorsa, bunu `openclaw models list` / model seçimini hata ayıklarken yaptığınız gibi hata ayıklayın. +- Canlı bir test “kimlik bilgisi yok” diyorsa, bunu `openclaw models list` / model seçimini hata ayıklar gibi hata ayıklayın. -- Ajan başına auth profilleri: `~/.openclaw/agents//agent/auth-profiles.json` (canlı testlerde “profil anahtarları” denince kastedilen budur) -- Yapılandırma: `~/.openclaw/openclaw.json` (veya `OPENCLAW_CONFIG_PATH`) -- Eski durum dizini: `~/.openclaw/credentials/` (varsa hazırlanan canlı home'a kopyalanır, ancak ana profil-anahtarı deposu bu değildir) -- Canlı yerel çalıştırmalar varsayılan olarak etkin yapılandırmayı, ajan başına `auth-profiles.json` dosyalarını, eski `credentials/` dizinini ve desteklenen harici CLI auth dizinlerini geçici bir test home'una kopyalar; hazırlanan canlı home'lar `workspace/` ve `sandboxes/` öğelerini atlar ve probların gerçek host çalışma alanınızdan uzak durması için `agents.*.workspace` / `agentDir` yol geçersiz kılmaları temizlenir. +- Agent başına kimlik doğrulama profilleri: `~/.openclaw/agents//agent/auth-profiles.json` (canlı testlerde “profil anahtarları” denince kastedilen budur) +- Config: `~/.openclaw/openclaw.json` (veya `OPENCLAW_CONFIG_PATH`) +- Eski durum dizini: `~/.openclaw/credentials/` (mevcutsa hazırlanan canlı home dizinine kopyalanır, ancak ana profil-anahtar deposu değildir) +- Yerel canlı çalıştırmalar varsayılan olarak etkin config’i, agent başına `auth-profiles.json` dosyalarını, eski `credentials/` dizinini ve desteklenen harici CLI kimlik doğrulama dizinlerini geçici bir test home dizinine kopyalar; hazırlanan canlı home dizinleri `workspace/` ve `sandboxes/` dizinlerini atlar, ayrıca probe’ların gerçek ana makine çalışma alanınıza dokunmaması için `agents.*.workspace` / `agentDir` yol geçersiz kılmaları kaldırılır. -Ortam anahtarlarına güvenmek istiyorsanız (ör. `~/.profile` içinde dışa aktarılmışsa), yerel testleri `source ~/.profile` sonrasında çalıştırın veya aşağıdaki Docker çalıştırıcılarını kullanın (`~/.profile` dosyasını container içine bağlayabilirler). +Ortam anahtarlarına güvenmek istiyorsanız (örneğin `~/.profile` içinde dışa aktarılmışsa), yerel testleri `source ~/.profile` sonrasında çalıştırın veya aşağıdaki Docker çalıştırıcılarını kullanın (`~/.profile` dosyasını konteynıra bağlayabilirler). ## Deepgram canlı (ses transkripsiyonu) @@ -713,97 +721,101 @@ Ortam anahtarlarına güvenmek istiyorsanız (ör. `~/.profile` içinde dışa a - Test: `extensions/comfy/comfy.live.test.ts` - Etkinleştirme: `OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts` - Kapsam: - - Paketlenmiş comfy görsel, video ve `music_generate` yollarını çalıştırır - - `models.providers.comfy.` yapılandırılmamışsa her yeteneği atlar - - Comfy workflow gönderimi, polling, indirmeler veya Plugin kaydı değiştirildikten sonra faydalıdır + - Paketlenmiş comfy image, video ve `music_generate` yollarını çalıştırır + - `models.providers.comfy.` yapılandırılmadıysa her yeteneği atlar + - Comfy workflow gönderimi, yoklama, indirmeler veya plugin kaydı değiştirildikten sonra kullanışlıdır -## Görsel üretimi canlı +## Image generation canlı - Test: `src/image-generation/runtime.live.test.ts` - Komut: `pnpm test:live src/image-generation/runtime.live.test.ts` - Harness: `pnpm test:live:media image` - Kapsam: - - Kayıtlı her görsel üretim sağlayıcısı Plugin'ini listeler - - Probe'dan önce eksik sağlayıcı env değişkenlerini giriş shell'inizden (`~/.profile`) yükler - - Varsayılan olarak saklanan auth profillerinden önce canlı/env API anahtarlarını kullanır; böylece `auth-profiles.json` içindeki bayat test anahtarları gerçek shell kimlik bilgilerini maskelemez - - Kullanılabilir auth/profil/model olmayan sağlayıcıları atlar - - Stok görsel üretim varyantlarını paylaşılan çalışma zamanı yeteneği üzerinden çalıştırır: + - Kayıtlı her image-generation sağlayıcı plugin’ini numaralandırır + - Probe yapmadan önce eksik sağlayıcı ortam değişkenlerini giriş shell’inizden (`~/.profile`) yükler + - Varsayılan olarak canlı/env API anahtarlarını kayıtlı kimlik doğrulama profillerinin önünde kullanır; böylece `auth-profiles.json` içindeki eski test anahtarları gerçek shell kimlik bilgilerini maskelemez + - Kullanılabilir kimlik doğrulama/profil/modeli olmayan sağlayıcıları atlar + - Stok image-generation varyantlarını paylaşılan çalışma zamanı yeteneği üzerinden çalıştırır: - `google:flash-generate` - `google:pro-generate` - `google:pro-edit` - `openai:default-generate` -- Şu anda kapsanan paketlenmiş sağlayıcılar: +- Şu anda kapsanan paketli sağlayıcılar: - `openai` - `google` - İsteğe bağlı daraltma: - `OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS="openai,google"` - `OPENCLAW_LIVE_IMAGE_GENERATION_MODELS="openai/gpt-image-1,google/gemini-3.1-flash-image-preview"` - `OPENCLAW_LIVE_IMAGE_GENERATION_CASES="google:flash-generate,google:pro-edit"` -- İsteğe bağlı auth davranışı: - - Profil deposu auth'unu zorlamak ve yalnızca env geçersiz kılmalarını yok saymak için `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1` +- İsteğe bağlı kimlik doğrulama davranışı: + - Profil deposu kimlik doğrulamasını zorlamak ve yalnızca env geçersiz kılmalarını yok saymak için `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1` -## Müzik üretimi canlı +## Music generation canlı - Test: `extensions/music-generation-providers.live.test.ts` - Etkinleştirme: `OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.ts` - Harness: `pnpm test:live:media music` - Kapsam: - - Paylaşılan paketlenmiş müzik üretimi sağlayıcısı yolunu çalıştırır - - Şu anda Google ve MiniMax'ı kapsar - - Probe'dan önce sağlayıcı env değişkenlerini giriş shell'inizden (`~/.profile`) yükler - - Varsayılan olarak saklanan auth profillerinden önce canlı/env API anahtarlarını kullanır; böylece `auth-profiles.json` içindeki bayat test anahtarları gerçek shell kimlik bilgilerini maskelemez - - Kullanılabilir auth/profil/model olmayan sağlayıcıları atlar - - Mevcut olduğunda bildirilen her iki çalışma zamanı modunu da çalıştırır: - - yalnızca prompt girdisiyle `generate` - - sağlayıcı `capabilities.edit.enabled` bildirdiğinde `edit` - - Mevcut paylaşılan hat kapsaması: + - Paylaşılan paketli music-generation sağlayıcı yolunu çalıştırır + - Şu anda Google ve MiniMax’i kapsar + - Probe yapmadan önce sağlayıcı ortam değişkenlerini giriş shell’inizden (`~/.profile`) yükler + - Varsayılan olarak canlı/env API anahtarlarını kayıtlı kimlik doğrulama profillerinin önünde kullanır; böylece `auth-profiles.json` içindeki eski test anahtarları gerçek shell kimlik bilgilerini maskelemez + - Kullanılabilir kimlik doğrulama/profil/modeli olmayan sağlayıcıları atlar + - Kullanılabilir olduğunda bildirilen her iki çalışma zamanı modunu da çalıştırır: + - Yalnızca prompt girdisiyle `generate` + - Sağlayıcı `capabilities.edit.enabled` bildiriyorsa `edit` + - Mevcut paylaşılan hat kapsamı: - `google`: `generate`, `edit` - `minimax`: `generate` - `comfy`: ayrı Comfy canlı dosyası, bu paylaşılan tarama değil - İsteğe bağlı daraltma: - `OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS="google,minimax"` - `OPENCLAW_LIVE_MUSIC_GENERATION_MODELS="google/lyria-3-clip-preview,minimax/music-2.5+"` -- İsteğe bağlı auth davranışı: - - Profil deposu auth'unu zorlamak ve yalnızca env geçersiz kılmalarını yok saymak için `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1` +- İsteğe bağlı kimlik doğrulama davranışı: + - Profil deposu kimlik doğrulamasını zorlamak ve yalnızca env geçersiz kılmalarını yok saymak için `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1` -## Video üretimi canlı +## Video generation canlı - Test: `extensions/video-generation-providers.live.test.ts` - Etkinleştirme: `OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts` - Harness: `pnpm test:live:media video` - Kapsam: - - Paylaşılan paketlenmiş video üretimi sağlayıcısı yolunu çalıştırır - - Probe'dan önce sağlayıcı env değişkenlerini giriş shell'inizden (`~/.profile`) yükler - - Varsayılan olarak saklanan auth profillerinden önce canlı/env API anahtarlarını kullanır; böylece `auth-profiles.json` içindeki bayat test anahtarları gerçek shell kimlik bilgilerini maskelemez - - Kullanılabilir auth/profil/model olmayan sağlayıcıları atlar - - Mevcut olduğunda bildirilen her iki çalışma zamanı modunu da çalıştırır: - - yalnızca prompt girdisiyle `generate` - - sağlayıcı `capabilities.imageToVideo.enabled` bildirdiğinde ve seçilen sağlayıcı/model paylaşılan taramada tampon destekli yerel görsel girdisini kabul ettiğinde `imageToVideo` - - sağlayıcı `capabilities.videoToVideo.enabled` bildirdiğinde ve seçilen sağlayıcı/model paylaşılan taramada tampon destekli yerel video girdisini kabul ettiğinde `videoToVideo` - - Paylaşılan taramada şu anda bildirilen ama atlanan `imageToVideo` sağlayıcıları: - - `vydra`, çünkü paketlenmiş `veo3` yalnızca metin desteklidir ve paketlenmiş `kling` uzak bir görsel URL'si gerektirir - - Sağlayıcıya özgü Vydra kapsaması: + - Paylaşılan paketli video-generation sağlayıcı yolunu çalıştırır + - Varsayılan olarak release-safe smoke yolunu kullanır: FAL dışı sağlayıcılar, sağlayıcı başına bir text-to-video isteği, bir saniyelik lobster prompt’u ve `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS` içinden gelen sağlayıcı başına işlem sınırı (varsayılan `180000`) + - Sağlayıcı tarafı kuyruk gecikmesi release süresine baskın gelebileceği için varsayılan olarak FAL’i atlar; açıkça çalıştırmak için `--video-providers fal` veya `OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"` verin + - Probe yapmadan önce sağlayıcı ortam değişkenlerini giriş shell’inizden (`~/.profile`) yükler + - Varsayılan olarak canlı/env API anahtarlarını kayıtlı kimlik doğrulama profillerinin önünde kullanır; böylece `auth-profiles.json` içindeki eski test anahtarları gerçek shell kimlik bilgilerini maskelemez + - Kullanılabilir kimlik doğrulama/profil/modeli olmayan sağlayıcıları atlar + - Varsayılan olarak yalnızca `generate` çalıştırır + - Kullanılabilir olduğunda bildirilen dönüşüm modlarını da çalıştırmak için `OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1` ayarlayın: + - Sağlayıcı `capabilities.imageToVideo.enabled` bildiriyorsa ve seçilen sağlayıcı/model paylaşılan taramada tampon destekli yerel image girdisini kabul ediyorsa `imageToVideo` + - Sağlayıcı `capabilities.videoToVideo.enabled` bildiriyorsa ve seçilen sağlayıcı/model paylaşılan taramada tampon destekli yerel video girdisini kabul ediyorsa `videoToVideo` + - Paylaşılan taramada şu anda bildirilen ancak atlanan `imageToVideo` sağlayıcıları: + - `vydra`; çünkü paketlenmiş `veo3` yalnızca metindir ve paketlenmiş `kling` uzak bir image URL’si gerektirir + - Sağlayıcıya özgü Vydra kapsamı: - `OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_VYDRA_VIDEO=1 pnpm test:live -- extensions/vydra/vydra.live.test.ts` - - bu dosya varsayılan olarak uzak bir görsel URL fixture'ı kullanan bir `kling` hattıyla birlikte `veo3` text-to-video çalıştırır - - Şu anki `videoToVideo` canlı kapsaması: - - seçilen model `runway/gen4_aleph` olduğunda yalnızca `runway` - - Paylaşılan taramada şu anda bildirilen ama atlanan `videoToVideo` sağlayıcıları: - - `alibaba`, `qwen`, `xai`, çünkü bu yollar şu anda uzak `http(s)` / MP4 referans URL'leri gerektiriyor - - `google`, çünkü mevcut paylaşılan Gemini/Veo hattı yerel tampon destekli girdi kullanıyor ve bu yol paylaşılan taramada kabul edilmiyor - - `openai`, çünkü mevcut paylaşılan hatta kuruma özgü video inpaint/remix erişimi garantileri yok + - bu dosya varsayılan olarak uzak image URL fixture’ı kullanan bir `kling` hattının yanı sıra `veo3` text-to-video çalıştırır + - Şu anki `videoToVideo` canlı kapsamı: + - yalnızca seçilen model `runway/gen4_aleph` olduğunda `runway` + - Paylaşılan taramada şu anda bildirilen ancak atlanan `videoToVideo` sağlayıcıları: + - `alibaba`, `qwen`, `xai`; çünkü bu yollar şu anda uzak `http(s)` / MP4 referans URL’leri gerektiriyor + - `google`; çünkü mevcut paylaşılan Gemini/Veo hattı yerel tampon destekli girdi kullanıyor ve bu yol paylaşılan taramada kabul edilmiyor + - `openai`; çünkü mevcut paylaşılan hat, kuruma özgü video inpaint/remix erişim garantilerine sahip değil - İsteğe bağlı daraltma: - `OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="google,openai,runway"` - `OPENCLAW_LIVE_VIDEO_GENERATION_MODELS="google/veo-3.1-fast-generate-preview,openai/sora-2,runway/gen4_aleph"` -- İsteğe bağlı auth davranışı: - - Profil deposu auth'unu zorlamak ve yalnızca env geçersiz kılmalarını yok saymak için `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1` + - Varsayılan taramadaki FAL dâhil her sağlayıcıyı eklemek için `OPENCLAW_LIVE_VIDEO_GENERATION_SKIP_PROVIDERS=""` + - Agresif bir smoke çalıştırması için sağlayıcı başına işlem sınırını azaltmak üzere `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000` +- İsteğe bağlı kimlik doğrulama davranışı: + - Profil deposu kimlik doğrulamasını zorlamak ve yalnızca env geçersiz kılmalarını yok saymak için `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1` -## Medya canlı harness'i +## Medya canlı harness’i - Komut: `pnpm test:live:media` - Amaç: - - Paylaşılan görsel, müzik ve video canlı paketlerini tek bir depoya özgü giriş noktası üzerinden çalıştırır - - Eksik sağlayıcı env değişkenlerini `~/.profile` dosyasından otomatik yükler - - Varsayılan olarak her paketi o anda kullanılabilir auth'u olan sağlayıcılara otomatik daraltır + - Paylaşılan image, music ve video canlı paketlerini depo yerel tek bir giriş noktası üzerinden çalıştırır + - Eksik sağlayıcı ortam değişkenlerini `~/.profile` içinden otomatik yükler + - Varsayılan olarak her paketi şu anda kullanılabilir kimlik doğrulamaya sahip sağlayıcılara otomatik olarak daraltır - `scripts/test-live.mjs` dosyasını yeniden kullanır; böylece Heartbeat ve sessiz mod davranışı tutarlı kalır - Örnekler: - `pnpm test:live:media` @@ -811,126 +823,125 @@ Ortam anahtarlarına güvenmek istiyorsanız (ör. `~/.profile` içinde dışa a - `pnpm test:live:media video --video-providers openai,runway --all-providers` - `pnpm test:live:media music --quiet` -## Docker çalıştırıcıları (isteğe bağlı “Linux'ta çalışıyor” kontrolleri) +## Docker çalıştırıcıları (isteğe bağlı “Linux’ta çalışıyor” kontrolleri) -Bu Docker çalıştırıcıları iki gruba ayrılır: +Bu Docker çalıştırıcıları iki kovaya ayrılır: -- Canlı model çalıştırıcıları: `test:docker:live-models` ve `test:docker:live-gateway`, yalnızca eşleşen profil-anahtarı canlı dosyalarını depo Docker imajı içinde çalıştırır (`src/agents/models.profiles.live.test.ts` ve `src/gateway/gateway-models.profiles.live.test.ts`), yerel yapılandırma dizininizi ve çalışma alanınızı bağlar (ve bağlandıysa `~/.profile` dosyasını kaynak olarak yükler). Eşleşen yerel giriş noktaları `test:live:models-profiles` ve `test:live:gateway-profiles`'tır. -- Docker canlı çalıştırıcıları, tam bir Docker taramasının pratik kalması için varsayılan olarak daha küçük bir smoke sınırı kullanır: +- Canlı model çalıştırıcıları: `test:docker:live-models` ve `test:docker:live-gateway`, depo Docker imajı içinde yalnızca eşleşen profil-anahtarı canlı dosyalarını çalıştırır (`src/agents/models.profiles.live.test.ts` ve `src/gateway/gateway-models.profiles.live.test.ts`); yerel config dizininizi ve çalışma alanınızı bağlar (ve bağlanmışsa `~/.profile` dosyasını kaynak olarak yükler). Eşleşen yerel giriş noktaları `test:live:models-profiles` ve `test:live:gateway-profiles` komutlarıdır. +- Docker canlı çalıştırıcıları varsayılan olarak daha küçük bir smoke sınırı kullanır; böylece tam Docker taraması pratik kalır: `test:docker:live-models` varsayılan olarak `OPENCLAW_LIVE_MAX_MODELS=12`, ve `test:docker:live-gateway` varsayılan olarak `OPENCLAW_LIVE_GATEWAY_SMOKE=1`, `OPENCLAW_LIVE_GATEWAY_MAX_MODELS=8`, `OPENCLAW_LIVE_GATEWAY_STEP_TIMEOUT_MS=45000` ve - `OPENCLAW_LIVE_GATEWAY_MODEL_TIMEOUT_MS=90000` ayarlar. Daha büyük kapsamlı taramayı - özellikle istediğinizde bu env değişkenlerini geçersiz kılın. -- `test:docker:all`, canlı Docker imajını önce `test:docker:live-build` aracılığıyla bir kez oluşturur, sonra bunu iki canlı Docker hattı için yeniden kullanır. -- Container smoke çalıştırıcıları: `test:docker:openwebui`, `test:docker:onboard`, `test:docker:gateway-network`, `test:docker:mcp-channels` ve `test:docker:plugins`, bir veya daha fazla gerçek container başlatır ve daha üst düzey entegrasyon yollarını doğrular. + `OPENCLAW_LIVE_GATEWAY_MODEL_TIMEOUT_MS=90000` ayarlarını kullanır. Daha büyük kapsamlı taramayı açıkça istediğinizde bu ortam değişkenlerini geçersiz kılın. +- `test:docker:all`, canlı Docker imajını bir kez `test:docker:live-build` ile oluşturur, ardından bunu iki canlı Docker hattı için yeniden kullanır. +- Konteyner smoke çalıştırıcıları: `test:docker:openwebui`, `test:docker:onboard`, `test:docker:gateway-network`, `test:docker:mcp-channels` ve `test:docker:plugins`; bir veya daha fazla gerçek konteyner başlatır ve daha üst düzey entegrasyon yollarını doğrular. -Canlı model Docker çalıştırıcıları ayrıca yalnızca gerekli CLI auth home'larını (veya çalıştırma daraltılmadıysa desteklenenlerin tümünü) bind-mount eder, sonra dış CLI OAuth'unun host auth deposunu değiştirmeden token'ları yenileyebilmesi için bunları çalıştırma öncesinde container home'una kopyalar: +Canlı model Docker çalıştırıcıları ayrıca yalnızca gerekli CLI kimlik doğrulama home dizinlerini (veya çalıştırma daraltılmamışsa desteklenenlerin tümünü) bind-mount eder, ardından harici CLI OAuth’un ana makine kimlik doğrulama deposunu değiştirmeden belirteçleri yenileyebilmesi için bunları çalıştırma öncesinde konteyner home dizinine kopyalar: - Doğrudan modeller: `pnpm test:docker:live-models` (betik: `scripts/test-live-models-docker.sh`) - ACP bind smoke: `pnpm test:docker:live-acp-bind` (betik: `scripts/test-live-acp-bind-docker.sh`) - CLI backend smoke: `pnpm test:docker:live-cli-backend` (betik: `scripts/test-live-cli-backend-docker.sh`) - Codex app-server harness smoke: `pnpm test:docker:live-codex-harness` (betik: `scripts/test-live-codex-harness-docker.sh`) -- Gateway + geliştirme ajanı: `pnpm test:docker:live-gateway` (betik: `scripts/test-live-gateway-models-docker.sh`) +- Gateway + geliştirme agent’ı: `pnpm test:docker:live-gateway` (betik: `scripts/test-live-gateway-models-docker.sh`) - Open WebUI canlı smoke: `pnpm test:docker:openwebui` (betik: `scripts/e2e/openwebui-docker.sh`) -- Onboarding wizard'ı (TTY, tam scaffolding): `pnpm test:docker:onboard` (betik: `scripts/e2e/onboard-docker.sh`) -- Gateway ağ iletişimi (iki container, WS auth + health): `pnpm test:docker:gateway-network` (betik: `scripts/e2e/gateway-network-docker.sh`) -- MCP kanal köprüsü (tohumlanmış Gateway + stdio bridge + ham Claude notification-frame smoke): `pnpm test:docker:mcp-channels` (betik: `scripts/e2e/mcp-channels-docker.sh`) -- Plugin'ler (kurulum smoke + `/plugin` takma adı + Claude paketi yeniden başlatma semantiği): `pnpm test:docker:plugins` (betik: `scripts/e2e/plugins-docker.sh`) +- Onboarding sihirbazı (TTY, tam iskelet): `pnpm test:docker:onboard` (betik: `scripts/e2e/onboard-docker.sh`) +- Gateway ağı (iki konteyner, WS kimlik doğrulama + sağlık): `pnpm test:docker:gateway-network` (betik: `scripts/e2e/gateway-network-docker.sh`) +- MCP kanal köprüsü (seed edilmiş Gateway + stdio bridge + ham Claude bildirim-çerçevesi smoke): `pnpm test:docker:mcp-channels` (betik: `scripts/e2e/mcp-channels-docker.sh`) +- Plugins (kurulum smoke + `/plugin` takma adı + Claude bundle yeniden başlatma semantiği): `pnpm test:docker:plugins` (betik: `scripts/e2e/plugins-docker.sh`) -Canlı model Docker çalıştırıcıları ayrıca mevcut checkout'u salt okunur olarak bind-mount eder ve -container içinde geçici bir workdir'e hazırlar. Bu, çalışma zamanı -imajını ince tutarken yine de tam yerel kaynak/yapılandırmanız üzerinde Vitest çalıştırılmasını sağlar. -Hazırlama adımı `.pnpm-store`, `.worktrees`, `__openclaw_vitest__` ve -uygulamaya özgü `.build` veya Gradle çıktı dizinleri gibi büyük yerel önbellekleri ve uygulama derleme çıktılarını atlar; böylece Docker canlı çalıştırmaları -makineye özgü artifact'ları kopyalamak için dakikalar harcamaz. -Ayrıca `OPENCLAW_SKIP_CHANNELS=1` ayarlarlar; böylece Gateway canlı probları -container içinde gerçek Telegram/Discord vb. kanal worker'larını başlatmaz. -`test:docker:live-models` yine de `pnpm test:live` çalıştırır; bu nedenle bu Docker hattında -Gateway canlı kapsamını daraltmanız veya hariç tutmanız gerektiğinde `OPENCLAW_LIVE_GATEWAY_*` -değerlerini de iletin. -`test:docker:openwebui` daha üst düzey bir uyumluluk smoke'udur: OpenAI uyumlu HTTP uç noktaları etkin bir -OpenClaw Gateway container'ı başlatır, -bu Gateway'ye karşı sabitlenmiş bir Open WebUI container'ı başlatır, Open WebUI üzerinden oturum açar, -`/api/models` içinde `openclaw/default` gösterildiğini doğrular, ardından -Open WebUI'nin `/api/chat/completions` vekili üzerinden gerçek bir sohbet isteği gönderir. -İlk çalıştırma gözle görülür biçimde daha yavaş olabilir; çünkü Docker'ın -Open WebUI imajını çekmesi gerekebilir ve Open WebUI'nin kendi soğuk başlangıç kurulumunu tamamlaması gerekebilir. -Bu hat kullanılabilir bir canlı model anahtarı bekler ve `OPENCLAW_PROFILE_FILE` -(Docker'lı çalıştırmalarda varsayılan olarak `~/.profile`) bunu sağlamak için birincil yoldur. +Canlı model Docker çalıştırıcıları ayrıca mevcut checkout’u yalnızca okunur olarak bind-mount eder ve +konteyner içinde geçici bir çalışma dizinine hazırlar. Bu, çalışma zamanı +imajını ince tutarken yine de Vitest’i tam olarak yerel kaynak/config’inize karşı çalıştırır. +Hazırlama adımı `.pnpm-store`, `.worktrees`, `__openclaw_vitest__` ve uygulamaya özel `.build` veya +Gradle çıktı dizinleri gibi büyük yalnızca yerel önbellekleri ve uygulama derleme çıktılarını atlar; böylece Docker canlı çalıştırmaları makineye özgü yapıtları +dakikalarca kopyalamaz. +Ayrıca `OPENCLAW_SKIP_CHANNELS=1` ayarlarlar; böylece Gateway canlı probe’ları +konteyner içinde gerçek Telegram/Discord/vb. kanal işçilerini başlatmaz. +`test:docker:live-models` yine de `pnpm test:live` çalıştırır; bu nedenle bu Docker hattında Gateway canlı kapsamını daraltmanız veya hariç tutmanız gerektiğinde +`OPENCLAW_LIVE_GATEWAY_*` değişkenlerini de iletin. +`test:docker:openwebui`, daha üst düzey bir uyumluluk smoke testidir: OpenAI uyumlu HTTP uç noktaları etkin olan bir +OpenClaw Gateway konteyneri başlatır, +bu Gateway’e karşı sabitlenmiş bir Open WebUI konteyneri başlatır, Open WebUI üzerinden oturum açar, +`/api/models` yolunun `openclaw/default` değerini sunduğunu doğrular, ardından +Open WebUI’nin `/api/chat/completions` proxy’si üzerinden gerçek bir sohbet isteği gönderir. +İlk çalıştırma belirgin şekilde daha yavaş olabilir; çünkü Docker’ın +Open WebUI imajını çekmesi gerekebilir ve Open WebUI’nin de kendi soğuk başlatma kurulumunu tamamlaması gerekebilir. +Bu hat kullanılabilir bir canlı model anahtarı bekler ve Docker’laştırılmış çalıştırmalarda bunu sağlamak için birincil yol +`OPENCLAW_PROFILE_FILE` (`varsayılan olarak ~/.profile`) değeridir. Başarılı çalıştırmalar `{ "ok": true, "model": "openclaw/default", ... }` gibi küçük bir JSON yükü yazdırır. `test:docker:mcp-channels` kasıtlı olarak deterministiktir ve gerçek bir -Telegram, Discord veya iMessage hesabı gerektirmez. Tohumlanmış bir Gateway -container'ı başlatır, `openclaw mcp serve` üreten ikinci bir container başlatır, sonra -yönlendirilmiş konuşma keşfini, transkript okumalarını, ek metadata'sını, +Telegram, Discord veya iMessage hesabına ihtiyaç duymaz. Seed edilmiş bir Gateway +konteyneri başlatır, `openclaw mcp serve` oluşturan ikinci bir konteyner başlatır, ardından +yönlendirilmiş konuşma keşfini, kayıt dökümü okumalarını, ek meta verilerini, canlı olay kuyruğu davranışını, giden gönderim yönlendirmesini ve Claude tarzı kanal + -izin bildirimlerini gerçek stdio MCP köprüsü üzerinden doğrular. Bildirim kontrolü -ham stdio MCP frame'lerini doğrudan inceler; böylece smoke, yalnızca belirli bir istemci SDK'sının -tesadüfen yüzeye çıkardığını değil, köprünün gerçekten ne yayımladığını doğrular. +izin bildirimlerini gerçek stdio MCP köprüsü üzerinden doğrular. Bildirim denetimi +ham stdio MCP çerçevelerini doğrudan inceler; böylece smoke testi belirli bir istemci SDK’sının tesadüfen ortaya çıkardığını değil, +köprünün gerçekten ne yaydığını doğrular. -Manuel ACP doğal dil thread smoke'u (CI değil): +Manuel ACP sade dil thread smoke testi (CI değil): - `bun scripts/dev/discord-acp-plain-language-smoke.ts --channel ...` -- Bu betiği regresyon/hata ayıklama iş akışları için tutun. ACP thread yönlendirme doğrulaması için yeniden gerekebilir, bu yüzden silmeyin. +- Bu betiği regresyon/hata ayıklama iş akışları için saklayın. ACP thread yönlendirme doğrulaması için tekrar gerekebilir, bu yüzden silmeyin. -Yararlı env değişkenleri: +Yararlı ortam değişkenleri: - `OPENCLAW_CONFIG_DIR=...` (varsayılan: `~/.openclaw`) `/home/node/.openclaw` dizinine bağlanır - `OPENCLAW_WORKSPACE_DIR=...` (varsayılan: `~/.openclaw/workspace`) `/home/node/.openclaw/workspace` dizinine bağlanır -- `OPENCLAW_PROFILE_FILE=...` (varsayılan: `~/.profile`) `/home/node/.profile` dizinine bağlanır ve testleri çalıştırmadan önce kaynak olarak yüklenir -- `OPENCLAW_DOCKER_CLI_TOOLS_DIR=...` (varsayılan: `~/.cache/openclaw/docker-cli-tools`) Docker içindeki önbelleğe alınmış CLI kurulumları için `/home/node/.npm-global` dizinine bağlanır -- `$HOME` altındaki harici CLI auth dizinleri/dosyaları `/host-auth...` altında salt okunur olarak bağlanır, sonra testler başlamadan önce `/home/node/...` içine kopyalanır +- `OPENCLAW_PROFILE_FILE=...` (varsayılan: `~/.profile`) `/home/node/.profile` dosyasına bağlanır ve testler çalıştırılmadan önce kaynak olarak yüklenir +- `OPENCLAW_DOCKER_CLI_TOOLS_DIR=...` (varsayılan: `~/.cache/openclaw/docker-cli-tools`) Docker içinde önbelleğe alınmış CLI kurulumları için `/home/node/.npm-global` dizinine bağlanır +- `$HOME` altındaki harici CLI kimlik doğrulama dizinleri/dosyaları `/host-auth...` altına salt okunur olarak bağlanır, ardından testler başlamadan önce `/home/node/...` içine kopyalanır - Varsayılan dizinler: `.minimax` - Varsayılan dosyalar: `~/.codex/auth.json`, `~/.codex/config.toml`, `.claude.json`, `~/.claude/.credentials.json`, `~/.claude/settings.json`, `~/.claude/settings.local.json` - - Daraltılmış sağlayıcı çalıştırmaları yalnızca `OPENCLAW_LIVE_PROVIDERS` / `OPENCLAW_LIVE_GATEWAY_PROVIDERS` değerlerinden çıkarılan gerekli dizinleri/dosyaları bağlar - - El ile geçersiz kılmak için `OPENCLAW_DOCKER_AUTH_DIRS=all`, `OPENCLAW_DOCKER_AUTH_DIRS=none` veya `OPENCLAW_DOCKER_AUTH_DIRS=.claude,.codex` gibi virgülle ayrılmış bir liste kullanın + - Daraltılmış sağlayıcı çalıştırmaları yalnızca `OPENCLAW_LIVE_PROVIDERS` / `OPENCLAW_LIVE_GATEWAY_PROVIDERS` üzerinden çıkarılan gerekli dizinleri/dosyaları bağlar + - Elle geçersiz kılmak için `OPENCLAW_DOCKER_AUTH_DIRS=all`, `OPENCLAW_DOCKER_AUTH_DIRS=none` veya `OPENCLAW_DOCKER_AUTH_DIRS=.claude,.codex` gibi virgüllü bir liste kullanın - Çalıştırmayı daraltmak için `OPENCLAW_LIVE_GATEWAY_MODELS=...` / `OPENCLAW_LIVE_MODELS=...` -- Container içindeki sağlayıcıları filtrelemek için `OPENCLAW_LIVE_GATEWAY_PROVIDERS=...` / `OPENCLAW_LIVE_PROVIDERS=...` -- Yeniden derleme gerektirmeyen tekrar çalıştırmalar için mevcut `openclaw:local-live` imajını yeniden kullanmak üzere `OPENCLAW_SKIP_DOCKER_BUILD=1` -- Kimlik bilgilerinin env'den değil profil deposundan geldiğinden emin olmak için `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1` -- Open WebUI smoke için Gateway'nin sunduğu modeli seçmek üzere `OPENCLAW_OPENWEBUI_MODEL=...` -- Open WebUI smoke'unun kullandığı nonce kontrol prompt'unu geçersiz kılmak için `OPENCLAW_OPENWEBUI_PROMPT=...` +- Konteyner içinde sağlayıcıları filtrelemek için `OPENCLAW_LIVE_GATEWAY_PROVIDERS=...` / `OPENCLAW_LIVE_PROVIDERS=...` +- Yeniden derleme gerektirmeyen tekrar çalıştırmalar için mevcut `openclaw:local-live` imajını yeniden kullanmak amacıyla `OPENCLAW_SKIP_DOCKER_BUILD=1` +- Kimlik bilgilerinin env’den değil profil deposundan geldiğinden emin olmak için `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1` +- Open WebUI smoke testi için Gateway tarafından sunulan modeli seçmek amacıyla `OPENCLAW_OPENWEBUI_MODEL=...` +- Open WebUI smoke testinin kullandığı nonce denetim prompt’unu geçersiz kılmak için `OPENCLAW_OPENWEBUI_PROMPT=...` - Sabitlenmiş Open WebUI imaj etiketini geçersiz kılmak için `OPENWEBUI_IMAGE=...` -## Belgeler sağlama kontrolü +## Doküman tutarlılığı -Belge düzenlemelerinden sonra belge kontrollerini çalıştırın: `pnpm check:docs`. -Sayfa içi başlık kontrollerine de ihtiyacınız olduğunda tam Mintlify anchor doğrulamasını çalıştırın: `pnpm docs:check-links:anchors`. +Belge düzenlemelerinden sonra docs denetimlerini çalıştırın: `pnpm check:docs`. +Sayfa içi başlık denetimlerine de ihtiyaç duyduğunuzda tam Mintlify anchor doğrulamasını çalıştırın: `pnpm docs:check-links:anchors`. -## Çevrimdışı regresyon (CI-güvenli) +## Çevrimdışı regresyon (CI-safe) -Bunlar, gerçek sağlayıcılar olmadan “gerçek boru hattı” regresyonlarıdır: +Bunlar gerçek sağlayıcılar olmadan “gerçek hat” regresyonlarıdır: -- Gateway araç çağırma (sahte OpenAI, gerçek Gateway + ajan döngüsü): `src/gateway/gateway.test.ts` (durum: "runs a mock OpenAI tool call end-to-end via gateway agent loop") -- Gateway wizard'ı (WS `wizard.start`/`wizard.next`, config + auth yazımı zorunlu): `src/gateway/gateway.test.ts` (durum: "runs wizard over ws and writes auth token config") +- Gateway araç çağırma (sahte OpenAI, gerçek Gateway + agent döngüsü): `src/gateway/gateway.test.ts` (durum: "runs a mock OpenAI tool call end-to-end via gateway agent loop") +- Gateway sihirbazı (WS `wizard.start`/`wizard.next`, config + auth yazımı zorunlu): `src/gateway/gateway.test.ts` (durum: "runs wizard over ws and writes auth token config") -## Ajan güvenilirliği değerlendirmeleri (Skills) +## Agent güvenilirliği değerlendirmeleri (Skills) -Zaten “ajan güvenilirliği değerlendirmeleri” gibi davranan birkaç CI-güvenli testimiz var: +Zaten “agent güvenilirliği değerlendirmeleri” gibi davranan birkaç CI-safe testimiz var: -- Gerçek Gateway + ajan döngüsü üzerinden sahte araç çağırma (`src/gateway/gateway.test.ts`). -- Oturum bağlantısını ve config etkilerini doğrulayan uçtan uca wizard akışları (`src/gateway/gateway.test.ts`). +- Gerçek Gateway + agent döngüsü üzerinden sahte araç çağırma (`src/gateway/gateway.test.ts`). +- Oturum kablolamasını ve config etkilerini doğrulayan uçtan uca sihirbaz akışları (`src/gateway/gateway.test.ts`). Skills için hâlâ eksik olanlar ([Skills](/tr/tools/skills) bölümüne bakın): -- **Karar verme:** Skills prompt içinde listelendiğinde, ajan doğru Skill'i seçiyor mu (veya ilgisiz olanlardan kaçınıyor mu)? -- **Uyumluluk:** ajan kullanmadan önce `SKILL.md` dosyasını okuyor ve gerekli adımları/argümanları izliyor mu? -- **İş akışı sözleşmeleri:** araç sırasını, oturum geçmişi taşınmasını ve sandbox sınırlarını doğrulayan çok turlu senaryolar. +- **Karar verme:** Skills prompt içinde listelendiğinde, agent doğru Skill’i seçiyor mu (veya ilgisiz olanlardan kaçınıyor mu)? +- **Uyumluluk:** agent kullanımdan önce `SKILL.md` dosyasını okuyor mu ve gerekli adımları/argümanları izliyor mu? +- **İş akışı sözleşmeleri:** araç sırasını, oturum geçmişi devralımını ve sandbox sınırlarını doğrulayan çok turlu senaryolar. Gelecekteki değerlendirmeler önce deterministik kalmalıdır: -- Araç çağrılarını + sırasını, Skill dosyası okumalarını ve oturum bağlantısını doğrulamak için sahte sağlayıcılar kullanan bir senaryo çalıştırıcısı. -- Skill odaklı küçük bir senaryo paketi (kullan vs kaçın, kapılama, prompt injection). -- İsteğe bağlı canlı değerlendirmeler (isteğe bağlı, env kapılı) yalnızca CI-güvenli paket yerleştirildikten sonra. +- Araç çağrılarını + sırasını, Skill dosyası okumalarını ve oturum kablolamasını doğrulamak için sahte sağlayıcılar kullanan bir senaryo çalıştırıcısı. +- Skill odaklı küçük bir senaryo paketi (kullan vs kaçın, geçitleme, prompt injection). +- İsteğe bağlı canlı değerlendirmeler (env ile geçitlenen), yalnızca CI-safe paket yerleştirildikten sonra. -## Sözleşme testleri (Plugin ve kanal şekli) +## Sözleşme testleri (plugin ve kanal şekli) -Sözleşme testleri, kayıtlı her Plugin ve kanalın kendi -arayüz sözleşmesine uyduğunu doğrular. Keşfedilen tüm Plugin'ler üzerinde dolaşır ve -bir dizi şekil ve davranış doğrulaması çalıştırırlar. Varsayılan `pnpm test` birim hattı -bu paylaşılan seam ve smoke dosyalarını kasıtlı olarak atlar; paylaşılan kanal veya sağlayıcı yüzeylerine dokunduğunuzda sözleşme komutlarını açıkça çalıştırın. +Sözleşme testleri, kayıtlı her plugin ve kanalın kendi +arayüz sözleşmesine uyduğunu doğrular. Keşfedilen tüm plugin’ler üzerinde yineleme yapar ve +şekil ile davranış doğrulamalarından oluşan bir paket çalıştırır. Varsayılan `pnpm test` unit hattı bu paylaşılan dikiş ve smoke dosyalarını +özellikle atlar; paylaşılan kanal veya sağlayıcı yüzeylerine dokunduğunuzda sözleşme komutlarını +açıkça çalıştırın. ### Komutlar @@ -942,30 +953,30 @@ bu paylaşılan seam ve smoke dosyalarını kasıtlı olarak atlar; paylaşılan `src/channels/plugins/contracts/*.contract.test.ts` konumunda bulunur: -- **plugin** - Temel Plugin şekli (id, name, capabilities) +- **plugin** - Temel plugin şekli (id, name, capabilities) - **setup** - Kurulum sihirbazı sözleşmesi - **session-binding** - Oturum bağlama davranışı - **outbound-payload** - Mesaj yükü yapısı - **inbound** - Gelen mesaj işleme - **actions** - Kanal eylem işleyicileri -- **threading** - Thread kimliği işleme +- **threading** - Thread ID işleme - **directory** - Dizin/roster API -- **group-policy** - Grup ilkesi zorlaması +- **group-policy** - Grup politikası zorlaması ### Sağlayıcı durum sözleşmeleri `src/plugins/contracts/*.contract.test.ts` konumunda bulunur. -- **status** - Kanal durum probe'ları +- **status** - Kanal durum probe’ları - **registry** - Plugin kayıt defteri şekli ### Sağlayıcı sözleşmeleri `src/plugins/contracts/*.contract.test.ts` konumunda bulunur: -- **auth** - Auth akışı sözleşmesi -- **auth-choice** - Auth seçimi/seçenek belirleme -- **catalog** - Model katalog API'si +- **auth** - Kimlik doğrulama akışı sözleşmesi +- **auth-choice** - Kimlik doğrulama seçimi/tercihi +- **catalog** - Model katalog API’si - **discovery** - Plugin keşfi - **loader** - Plugin yükleme - **runtime** - Sağlayıcı çalışma zamanı @@ -974,21 +985,21 @@ bu paylaşılan seam ve smoke dosyalarını kasıtlı olarak atlar; paylaşılan ### Ne zaman çalıştırılmalı -- Plugin SDK dışa aktarımlarını veya alt yollarını değiştirdikten sonra -- Bir kanal veya sağlayıcı Plugin'i ekledikten ya da değiştirdikten sonra +- `plugin-sdk` dışa aktarımlarını veya alt yollarını değiştirdikten sonra +- Bir kanal veya sağlayıcı plugin’i ekledikten ya da değiştirdikten sonra - Plugin kaydı veya keşfini yeniden düzenledikten sonra -Sözleşme testleri CI içinde çalışır ve gerçek API anahtarları gerektirmez. +Sözleşme testleri CI’da çalışır ve gerçek API anahtarları gerektirmez. ## Regresyon ekleme (rehber) -Canlıda keşfedilen bir sağlayıcı/model sorununu düzelttiğinizde: +Canlı testlerde keşfedilen bir sağlayıcı/model sorununu düzelttiğinizde: -- Mümkünse CI-güvenli bir regresyon ekleyin (sahte/stub sağlayıcı veya tam istek-şekli dönüşümünü yakalayın) -- Sorun doğası gereği yalnızca canlıysa (oran sınırları, auth politikaları), canlı testi dar ve env değişkenleriyle isteğe bağlı tutun +- Mümkünse CI-safe bir regresyon ekleyin (sahte/stub sağlayıcı ya da tam istek-şekli dönüşümünü yakalayın) +- Sorun doğası gereği yalnızca canlıysa (oran sınırları, kimlik doğrulama politikaları), canlı testi dar ve env değişkenleriyle isteğe bağlı tutun - Hatayı yakalayan en küçük katmanı hedeflemeyi tercih edin: - sağlayıcı istek dönüştürme/replay hatası → doğrudan modeller testi - - Gateway oturum/geçmiş/araç hattı hatası → Gateway canlı smoke veya CI-güvenli Gateway mock testi -- SecretRef gezinme koruma kuralı: - - `src/secrets/exec-secret-ref-id-parity.test.ts`, kayıt defteri metadata'sından (`listSecretTargetRegistryEntries()`) SecretRef sınıfı başına örneklenmiş bir hedef türetir, ardından traversal segment `exec` kimliklerinin reddedildiğini doğrular. - - `src/secrets/target-registry-data.ts` içinde yeni bir `includeInPlan` SecretRef hedef ailesi eklerseniz, o testte `classifyTargetClass` öğesini güncelleyin. Test, yeni sınıfların sessizce atlanamaması için sınıflandırılmamış hedef kimliklerinde kasıtlı olarak başarısız olur. + - Gateway oturum/geçmiş/araç hattı hatası → Gateway canlı smoke veya CI-safe Gateway mock testi +- SecretRef traversal guardrail: + - `src/secrets/exec-secret-ref-id-parity.test.ts`, kayıt defteri meta verisinden (`listSecretTargetRegistryEntries()`) SecretRef sınıfı başına örneklenmiş bir hedef türetir, ardından traversal segment exec kimliklerinin reddedildiğini doğrular. + - `src/secrets/target-registry-data.ts` içine yeni bir `includeInPlan` SecretRef hedef ailesi eklerseniz, bu testte `classifyTargetClass` işlevini güncelleyin. Test, sınıflandırılmamış hedef kimliklerinde kasıtlı olarak başarısız olur; böylece yeni sınıflar sessizce atlanamaz. diff --git a/docs/tr/plugins/architecture.md b/docs/tr/plugins/architecture.md index bff86d8c9..5cf34e8b8 100644 --- a/docs/tr/plugins/architecture.md +++ b/docs/tr/plugins/architecture.md @@ -1,30 +1,30 @@ --- read_when: - - Yerel OpenClaw Pluginleri oluşturuyor veya hata ayıklıyorsunuz - - Plugin yetenek modelini veya sahiplik sınırlarını anlamak - - Plugin yükleme hattı veya kayıt sistemi üzerinde çalışmak - - Sağlayıcı çalışma zamanı kancaları veya kanal Pluginleri uygulamak + - Yerel OpenClaw Plugin'leri oluşturma veya hata ayıklama + - Plugin yetenek modelini veya sahiplik sınırlarını anlama + - Plugin yükleme ardışık düzeni veya kayıt sistemi üzerinde çalışma + - Sağlayıcı çalışma zamanı kancalarını veya kanal Plugin'lerini uygulama sidebarTitle: Internals -summary: 'Plugin iç yapıları: yetenek modeli, sahiplik, sözleşmeler, yükleme hattı ve çalışma zamanı yardımcıları' -title: Plugin iç yapıları +summary: 'Plugin iç bileşenleri: yetenek modeli, sahiplik, sözleşmeler, yükleme ardışık düzeni ve çalışma zamanı yardımcıları' +title: Plugin İç Bileşenleri x-i18n: - generated_at: "2026-04-12T23:28:40Z" + generated_at: "2026-04-15T08:53:14Z" model: gpt-5.4 provider: openai - source_hash: 37361c1e9d2da57c77358396f19dfc7f749708b66ff68f1bf737d051b5d7675d + source_hash: f86798b5d2b0ad82d2397a52a6c21ed37fe6eee1dd3d124a9e4150c4f630b841 source_path: plugins/architecture.md workflow: 15 --- -# Plugin iç yapıları +# Plugin İç Bileşenleri - Bu, **derin mimari başvuru kaynağıdır**. Pratik kılavuzlar için şunlara bakın: - - [Pluginleri kurun ve kullanın](/tr/tools/plugin) — kullanıcı kılavuzu - - [Başlangıç](/tr/plugins/building-plugins) — ilk Plugin eğitimi - - [Kanal Pluginleri](/tr/plugins/sdk-channel-plugins) — bir mesajlaşma kanalı oluşturun - - [Sağlayıcı Pluginleri](/tr/plugins/sdk-provider-plugins) — bir model sağlayıcısı oluşturun - - [SDK Genel Bakış](/tr/plugins/sdk-overview) — içe aktarma haritası ve kayıt API’si + Bu, **derin mimari başvuru** sayfasıdır. Pratik kılavuzlar için şunlara bakın: + - [Plugin'leri kurun ve kullanın](/tr/tools/plugin) — kullanıcı kılavuzu + - [Başlangıç](/tr/plugins/building-plugins) — ilk Plugin öğreticisi + - [Kanal Plugin'leri](/tr/plugins/sdk-channel-plugins) — bir mesajlaşma kanalı oluşturun + - [Sağlayıcı Plugin'leri](/tr/plugins/sdk-provider-plugins) — bir model sağlayıcısı oluşturun + - [SDK Genel Bakış](/tr/plugins/sdk-overview) — içe aktarma eşlemesi ve kayıt API'si Bu sayfa, OpenClaw Plugin sisteminin iç mimarisini kapsar. @@ -32,79 +32,77 @@ Bu sayfa, OpenClaw Plugin sisteminin iç mimarisini kapsar. ## Genel yetenek modeli Yetenekler, OpenClaw içindeki genel **yerel Plugin** modelidir. Her -yerel OpenClaw Plugin’i bir veya daha fazla yetenek türüne karşı kayıt olur: +yerel OpenClaw Plugin'i bir veya daha fazla yetenek türüne karşı kayıt olur: -| Yetenek | Kayıt yöntemi | Örnek Pluginler | -| --------------------- | ------------------------------------------------ | ------------------------------------ | -| Metin çıkarımı | `api.registerProvider(...)` | `openai`, `anthropic` | -| CLI çıkarım arka ucu | `api.registerCliBackend(...)` | `openai`, `anthropic` | -| Konuşma | `api.registerSpeechProvider(...)` | `elevenlabs`, `microsoft` | -| Gerçek zamanlı yazıya döküm | `api.registerRealtimeTranscriptionProvider(...)` | `openai` | -| Gerçek zamanlı ses | `api.registerRealtimeVoiceProvider(...)` | `openai` | -| Medya anlama | `api.registerMediaUnderstandingProvider(...)` | `openai`, `google` | -| Görüntü oluşturma | `api.registerImageGenerationProvider(...)` | `openai`, `google`, `fal`, `minimax` | -| Müzik oluşturma | `api.registerMusicGenerationProvider(...)` | `google`, `minimax` | -| Video oluşturma | `api.registerVideoGenerationProvider(...)` | `qwen` | -| Web getirme | `api.registerWebFetchProvider(...)` | `firecrawl` | -| Web arama | `api.registerWebSearchProvider(...)` | `google` | -| Kanal / mesajlaşma | `api.registerChannel(...)` | `msteams`, `matrix` | +| Yetenek | Kayıt yöntemi | Örnek Plugin'ler | +| --------------------- | ----------------------------------------------- | ----------------------------------- | +| Metin çıkarımı | `api.registerProvider(...)` | `openai`, `anthropic` | +| CLI çıkarım arka ucu | `api.registerCliBackend(...)` | `openai`, `anthropic` | +| Konuşma | `api.registerSpeechProvider(...)` | `elevenlabs`, `microsoft` | +| Gerçek zamanlı deşifre| `api.registerRealtimeTranscriptionProvider(...)` | `openai` | +| Gerçek zamanlı ses | `api.registerRealtimeVoiceProvider(...)` | `openai` | +| Medya anlama | `api.registerMediaUnderstandingProvider(...)` | `openai`, `google` | +| Görüntü oluşturma | `api.registerImageGenerationProvider(...)` | `openai`, `google`, `fal`, `minimax` | +| Müzik oluşturma | `api.registerMusicGenerationProvider(...)` | `google`, `minimax` | +| Video oluşturma | `api.registerVideoGenerationProvider(...)` | `qwen` | +| Web getirme | `api.registerWebFetchProvider(...)` | `firecrawl` | +| Web arama | `api.registerWebSearchProvider(...)` | `google` | +| Kanal / mesajlaşma | `api.registerChannel(...)` | `msteams`, `matrix` | Sıfır yetenek kaydeden ancak kancalar, araçlar veya -hizmetler sağlayan bir Plugin, **yalnızca eski kanca kullanan** bir Plugin’dir. Bu kalıp hâlâ tamamen desteklenmektedir. +hizmetler sağlayan bir Plugin, **eski yalnızca kanca** Plugin'idir. Bu desen hâlâ tamamen desteklenir. ### Harici uyumluluk duruşu -Yetenek modeli çekirdeğe yerleşmiştir ve bugün paketlenmiş/yerel Pluginler -tarafından kullanılmaktadır, ancak harici Plugin uyumluluğu için hâlâ -“dışa aktarılmışsa sabittir” yaklaşımından daha sıkı bir çıta gerekir. +Yetenek modeli çekirdeğe yerleşmiştir ve bugün paketlenmiş/yerel Plugin'ler +tarafından kullanılmaktadır, ancak harici Plugin uyumluluğu için "dışa aktarılmışsa, +o hâlde sabitlenmiştir" yaklaşımından daha sıkı bir eşik gerekir. -Geçerli yönlendirme: +Güncel yönlendirme: -- **mevcut harici Pluginler:** kanca tabanlı entegrasyonları çalışır durumda tutun; - bunu uyumluluk temel çizgisi olarak değerlendirin -- **yeni paketlenmiş/yerel Pluginler:** satıcıya özgü içe sızmalar veya - yeni yalnızca kanca tasarımları yerine açık yetenek kaydını tercih edin -- **yetenek kaydını benimseyen harici Pluginler:** izin verilir, ancak belgeler - bir sözleşmeyi açıkça kararlı olarak işaretlemedikçe, yeteneğe özgü yardımcı yüzeyleri gelişen yapılar olarak değerlendirin +- **mevcut harici Plugin'ler:** kanca tabanlı entegrasyonları çalışır durumda tutun; bunu + uyumluluk taban çizgisi olarak değerlendirin +- **yeni paketlenmiş/yerel Plugin'ler:** satıcıya özgü iç erişimler veya yeni yalnızca kanca tasarımları yerine + açık yetenek kaydını tercih edin +- **yetenek kaydını benimseyen harici Plugin'ler:** buna izin verilir, ancak belgeler bir + sözleşmeyi açıkça kararlı olarak işaretlemedikçe yeteneğe özgü yardımcı yüzeyleri gelişen yüzeyler olarak değerlendirin Pratik kural: -- yetenek kayıt API’leri amaçlanan yöndür -- geçiş sürecinde eski kancalar, harici Pluginler için en güvenli - kırılmasız yol olmaya devam eder -- dışa aktarılan yardımcı alt yolların hepsi eşdeğer değildir; tesadüfi yardımcı dışa aktarımlarını değil, - dar ve belgelenmiş sözleşmeyi tercih edin +- yetenek kayıt API'leri amaçlanan yöndür +- eski kancalar, geçiş sırasında harici Plugin'ler için en güvenli + bozulmasız yol olmaya devam eder +- dışa aktarılan yardımcı alt yolların hepsi eşdeğer değildir; tesadüfi yardımcı dışa aktarımları değil, + belgelenmiş dar sözleşmeyi tercih edin -### Plugin şekilleri +### Plugin biçimleri -OpenClaw, yüklenen her Plugin’i, gerçek -kayıt davranışına göre bir şekle sınıflandırır (yalnızca statik meta verilere göre değil): +OpenClaw, yüklenen her Plugin'i gerçek kayıt davranışına göre +(yalnızca statik meta verilere göre değil) bir biçime sınıflandırır: - **plain-capability** -- tam olarak bir yetenek türü kaydeder (örneğin `mistral` gibi yalnızca sağlayıcı olan bir Plugin) - **hybrid-capability** -- birden fazla yetenek türü kaydeder (örneğin `openai`, metin çıkarımı, konuşma, medya anlama ve görüntü - oluşturmanın sahibidir) -- **hook-only** -- yalnızca kancalar kaydeder (tipli veya özel), yetenek, + oluşturma için sahiplik üstlenir) +- **hook-only** -- yalnızca kancaları kaydeder (türlendirilmiş veya özel), yetenek, araç, komut veya hizmet kaydetmez -- **non-capability** -- araçlar, komutlar, hizmetler veya yollar kaydeder ancak - yetenek kaydetmez +- **non-capability** -- yetenek kaydetmeden araçlar, komutlar, hizmetler veya rotalar kaydeder -Bir Plugin’in şeklini ve yetenek dökümünü görmek için `openclaw plugins inspect ` kullanın. -Ayrıntılar için [CLI başvurusu](/cli/plugins#inspect) sayfasına bakın. +Bir Plugin'in biçimini ve yetenek +dökümünü görmek için `openclaw plugins inspect ` kullanın. Ayrıntılar için [CLI başvurusu](/cli/plugins#inspect) bölümüne bakın. ### Eski kancalar -`before_agent_start` kancası, yalnızca kanca kullanan Pluginler için bir -uyumluluk yolu olarak desteklenmeye devam etmektedir. Eski gerçek dünya Pluginleri hâlâ buna bağlıdır. +`before_agent_start` kancası, yalnızca kanca kullanan Plugin'ler için bir uyumluluk yolu olarak desteklenmeye devam eder. Gerçek dünyadaki eski Plugin'ler hâlâ buna bağımlıdır. Yön: - çalışır durumda tutun -- bunu eski olarak belgeleyin -- model/sağlayıcı geçersiz kılma işleri için `before_model_resolve` tercih edin -- istem değişikliği işleri için `before_prompt_build` tercih edin -- ancak gerçek kullanım düştükten ve fikstür kapsamı geçiş güvenliğini kanıtladıktan sonra kaldırın +- eski olarak belgeleyin +- model/sağlayıcı geçersiz kılma çalışmaları için `before_model_resolve` tercih edin +- istem mutasyonu çalışmaları için `before_prompt_build` tercih edin +- gerçek kullanım azalmadan ve demirbaş kapsamı geçiş güvenliğini kanıtlamadan kaldırmayın ### Uyumluluk sinyalleri @@ -113,73 +111,82 @@ Yön: | Sinyal | Anlamı | | -------------------------- | ----------------------------------------------------------- | -| **config valid** | Yapılandırma sorunsuz ayrıştırılır ve Pluginler çözümlenir | -| **compatibility advisory** | Plugin desteklenen ama daha eski bir kalıp kullanıyor (örn. `hook-only`) | -| **legacy warning** | Plugin, kullanımdan kaldırılmış olan `before_agent_start` kullanıyor | +| **config valid** | Yapılandırma sorunsuz ayrıştırılır ve Plugin'ler çözülür | +| **compatibility advisory** | Plugin desteklenen ama daha eski bir desen kullanıyor (örn. `hook-only`) | +| **legacy warning** | Plugin kullanımdan kaldırılmış olan `before_agent_start` kullanıyor | | **hard error** | Yapılandırma geçersiz veya Plugin yüklenemedi | -Bugün ne `hook-only` ne de `before_agent_start` Plugin’inizi bozacaktır -- +Bugün ne `hook-only` ne de `before_agent_start` Plugin'inizi bozmaz -- `hook-only` tavsiye niteliğindedir ve `before_agent_start` yalnızca bir uyarı tetikler. Bu sinyaller `openclaw status --all` ve `openclaw plugins doctor` içinde de görünür. ## Mimariye genel bakış -OpenClaw’ın Plugin sistemi dört katmandan oluşur: +OpenClaw'ın Plugin sistemi dört katmandan oluşur: 1. **Manifest + keşif** OpenClaw, yapılandırılmış yollardan, çalışma alanı köklerinden, - genel uzantı köklerinden ve paketlenmiş uzantılardan aday Pluginleri bulur. - Keşif önce yerel `openclaw.plugin.json` manifestlerini ve desteklenen paket manifestlerini okur. + genel uzantı köklerinden ve paketlenmiş uzantılardan aday Plugin'leri bulur. Keşif önce + yerel `openclaw.plugin.json` manifestlerini ve desteklenen paket manifestlerini okur. 2. **Etkinleştirme + doğrulama** - Çekirdek, keşfedilen bir Plugin’in etkin mi, devre dışı mı, engellenmiş mi - yoksa bellek gibi ayrıcalıklı bir yuva için seçilmiş mi olduğuna karar verir. + Çekirdek, keşfedilen bir Plugin'in etkin, devre dışı, engellenmiş + veya bellek gibi özel bir yuva için seçilmiş olup olmadığına karar verir. 3. **Çalışma zamanı yükleme** - Yerel OpenClaw Pluginleri jiti aracılığıyla süreç içinde yüklenir ve - yetenekleri merkezi bir kayıt sistemine kaydeder. Uyumlu paketler, - çalışma zamanı kodu içe aktarılmadan kayıt sistemindeki kayıtlara normalize edilir. + Yerel OpenClaw Plugin'leri `jiti` aracılığıyla süreç içinde yüklenir ve + yetenekleri merkezi bir kayıt sistemine kaydeder. Uyumlu paketler, çalışma zamanı kodu içe aktarılmadan + kayıt sistemi kayıtlarına normalize edilir. 4. **Yüzey tüketimi** - OpenClaw’ın geri kalanı kayıt sistemini okuyarak araçları, kanalları, sağlayıcı - kurulumunu, kancaları, HTTP yollarını, CLI komutlarını ve hizmetleri sunar. + OpenClaw'ın geri kalanı, araçları, kanalları, sağlayıcı + kurulumunu, kancaları, HTTP rotalarını, CLI komutlarını ve hizmetleri açığa çıkarmak için kayıt sistemini okur. -Özellikle Plugin CLI için, kök komut keşfi iki aşamaya bölünür: +Özellikle Plugin CLI için, kök komut keşfi iki aşamaya ayrılır: - ayrıştırma zamanı meta verileri `registerCli(..., { descriptors: [...] })` içinden gelir - gerçek Plugin CLI modülü tembel kalabilir ve ilk çağrıda kaydolabilir -Bu, Plugin’e ait CLI kodunu Plugin içinde tutarken OpenClaw’ın -ayrıştırmadan önce kök komut adlarını ayırmasına olanak tanır. +Bu, Plugin'e ait CLI kodunu Plugin içinde tutarken OpenClaw'ın +ayrıştırmadan önce kök komut adlarını ayırmasını sağlar. Önemli tasarım sınırı: -- keşif + yapılandırma doğrulaması, Plugin kodunu çalıştırmadan - **manifest/şema meta verilerinden** çalışabilmelidir +- keşif + yapılandırma doğrulaması, Plugin kodu çalıştırılmadan + **manifest/schema metadata** üzerinden çalışabilmelidir - yerel çalışma zamanı davranışı, Plugin modülünün `register(api)` yolundan gelir -Bu ayrım, OpenClaw’ın yapılandırmayı doğrulamasına, eksik/devre dışı Pluginleri açıklamasına ve -tam çalışma zamanı etkin olmadan önce UI/şema ipuçları oluşturmasına olanak tanır. +Bu ayrım, OpenClaw'ın yapılandırmayı doğrulamasını, eksik/devre dışı Plugin'leri açıklamasını ve +tam çalışma zamanı etkinleşmeden önce kullanıcı arayüzü/schema ipuçları +oluşturmasını sağlar. -### Kanal Pluginleri ve paylaşılan mesaj aracı +### Kanal Plugin'leri ve paylaşılan mesaj aracı -Kanal Pluginlerinin, normal sohbet eylemleri için ayrı bir gönder/düzenle/tepki aracı -kaydetmesi gerekmez. OpenClaw çekirdekte tek bir paylaşılan `message` aracını korur ve -kanala özgü keşif ile yürütme bunun arkasında kanal Pluginlerine aittir. +Kanal Plugin'lerinin normal sohbet eylemleri için ayrı bir gönder/düzenle/tepki aracı kaydetmesi gerekmez. OpenClaw, çekirdekte tek bir paylaşılan `message` aracını tutar ve +kanala özgü keşif ile yürütmenin sahipliği bunun arkasında kanal Plugin'lerindedir. -Geçerli sınır şudur: +Güncel sınır şudur: -- çekirdek, paylaşılan `message` araç hostunun, istem bağlamasının, oturum/iş parçacığı +- çekirdek, paylaşılan `message` araç ana makinesinin, istem kablolamasının, oturum/konu kayıtlarının ve yürütme sevkinin sahibidir -- kanal Pluginleri kapsamlı eylem keşfinin, yetenek keşfinin ve - kanala özgü şema parçalarının sahibidir -- kanal Pluginleri, konuşma kimliklerinin iş parçacığı kimliklerini nasıl kodladığı veya - üst konuşmalardan nasıl miras aldığı gibi, sağlayıcıya özgü oturum konuşma dil bilgisinin sahibidir -- kanal Pluginleri son eylemi kendi eylem bağdaştırıcıları üzerinden yürütür +- kanal Plugin'leri kapsamlı eylem keşfinin, yetenek keşfinin ve + kanala özgü tüm şema parçalarının sahibidir +- kanal Plugin'leri, konu kimliklerinin ileti dizisi kimliklerini nasıl kodladığı veya + üst konuşmalardan nasıl miras aldığı gibi sağlayıcıya özgü oturum konuşma dil bilgisinin sahibidir +- kanal Plugin'leri son eylemi kendi eylem bağdaştırıcıları üzerinden yürütür -Kanal Pluginleri için SDK yüzeyi +Kanal Plugin'leri için SDK yüzeyi `ChannelMessageActionAdapter.describeMessageTool(...)` şeklindedir. Bu birleşik keşif -çağrısı, Plugin’in görünür eylemlerini, yeteneklerini ve şema +çağrısı, bir Plugin'in görünür eylemleri, yetenekleri ve şema katkılarını birlikte döndürmesine olanak tanır; böylece bu parçalar birbirinden kopmaz. -Çekirdek, çalışma zamanı kapsamını bu keşif adımına geçirir. Önemli alanlar şunlardır: +Kanala özgü bir mesaj-aracı parametresi yerel yol veya uzak medya URL'si gibi +bir medya kaynağı taşıdığında, Plugin ayrıca +`describeMessageTool(...)` içinden `mediaSourceParams` da döndürmelidir. Çekirdek, korumalı alan yol normalizasyonu ve giden medya erişim ipuçlarını +Plugin'e ait parametre adlarını sabit kodlamadan uygulamak için bu açık +listeyi kullanır. +Burada kanal geneline ait tek bir düz liste yerine eylem kapsamlı eşlemeleri +tercih edin; böylece yalnızca profile özgü bir medya parametresi +`send` gibi ilgisiz eylemlerde normalize edilmez. + +Çekirdek, çalışma zamanı kapsamını bu keşif adımına geçirir. Önemli alanlar şunları içerir: - `accountId` - `currentChannelId` @@ -190,126 +197,126 @@ katkılarını birlikte döndürmesine olanak tanır; böylece bu parçalar birb - `agentId` - güvenilir gelen `requesterSenderId` -Bu, bağlama duyarlı Pluginler için önemlidir. Bir kanal, -çekirdek `message` aracı içinde kanala özgü dalları sabit kodlamadan, etkin hesaba, -mevcut odaya/iş parçacığına/mesaja veya güvenilir istek sahibinin kimliğine bağlı olarak -mesaj eylemlerini gizleyebilir ya da gösterebilir. +Bu, bağlama duyarlı Plugin'ler için önemlidir. Bir kanal, etkin hesap, +geçerli oda/ileti dizisi/mesaj veya güvenilir istek sahibi kimliğine göre +mesaj eylemlerini, çekirdekte `message` aracında kanala özgü dallar sabit kodlamadan gizleyebilir veya açığa çıkarabilir. Bu nedenle gömülü çalıştırıcı yönlendirme değişiklikleri hâlâ Plugin işidir: çalıştırıcı, -paylaşılan `message` aracının mevcut tur için doğru, kanala ait -yüzeyi göstermesi amacıyla geçerli sohbet/oturum kimliğini Plugin +paylaşılan `message` aracının +geçerli dönüş için doğru kanala ait yüzeyi açığa çıkarması amacıyla geçerli sohbet/oturum kimliğini Plugin keşif sınırına iletmekten sorumludur. -Kanala ait yürütme yardımcıları için, paketlenmiş Pluginler yürütme -çalışma zamanını kendi uzantı modülleri içinde tutmalıdır. Çekirdek artık +Kanala ait yürütme yardımcıları için, paketlenmiş Plugin'ler yürütme +çalışma zamanını kendi uzantı modüllerinin içinde tutmalıdır. Çekirdek artık `src/agents/tools` altında Discord, -Slack, Telegram veya WhatsApp mesaj-eylem çalışma zamanlarının sahibi değildir. +Slack, Telegram veya WhatsApp mesaj-eylemi çalışma zamanlarının sahibi değildir. Ayrı `plugin-sdk/*-action-runtime` alt yolları yayımlamıyoruz ve paketlenmiş -Pluginler kendi yerel çalışma zamanı kodlarını doğrudan -kendi uzantılarına ait modüllerden içe aktarmalıdır. +Plugin'ler kendi yerel çalışma zamanı kodlarını doğrudan +uzantıya ait modüllerinden içe aktarmalıdır. -Aynı sınır genel olarak sağlayıcı adlı SDK hatları için de geçerlidir: çekirdek, -Slack, Discord, Signal, WhatsApp veya benzeri uzantılar için kanala özgü -kolaylık varillerini içe aktarmamalıdır. Çekirdek bir davranışa ihtiyaç duyuyorsa, -ya paketlenmiş Plugin’in kendi `api.ts` / `runtime-api.ts` varilini tüketmeli -ya da ihtiyacı paylaşılan SDK içinde dar ve genel bir yetenek haline getirmelidir. +Aynı sınır genel olarak sağlayıcı adlı SDK sınırları için de geçerlidir: çekirdek, +Slack, Discord, Signal, +WhatsApp veya benzeri uzantılar için kanala özgü kolaylık varillerini içe aktarmamalıdır. Çekirdek bir davranışa ihtiyaç duyarsa ya +paketlenmiş Plugin'in kendi `api.ts` / `runtime-api.ts` varilini kullanmalı +ya da ihtiyacı paylaşılan SDK içinde dar bir genel yeteneğe yükseltmelidir. Özellikle anketler için iki yürütme yolu vardır: - `outbound.sendPoll`, ortak anket modeline uyan kanallar için paylaşılan temel yoldur -- `actions.handleAction("poll")`, kanala özgü anket anlamları veya - ek anket parametreleri için tercih edilen yoldur +- `actions.handleAction("poll")`, kanala özgü anket anlambilimi veya ek anket parametreleri için tercih edilen yoldur -Çekirdek artık paylaşılan anket ayrıştırmasını, Plugin anket sevki eylemi -reddettikten sonrasına erteler; böylece Plugin’e ait anket işleyicileri, +Çekirdek artık paylaşılan anket ayrıştırmasını, Plugin anket sevki +eylemi reddettikten sonraya erteler; böylece Plugin'e ait anket işleyicileri, önce genel anket ayrıştırıcısı tarafından engellenmeden kanala özgü anket alanlarını kabul edebilir. -Tam başlatma sırası için [Yükleme hattı](#load-pipeline) bölümüne bakın. +Tam başlatma sırası için [Yükleme ardışık düzeni](#load-pipeline) bölümüne bakın. ## Yetenek sahipliği modeli -OpenClaw, yerel bir Plugin’i ilgisiz entegrasyonların bir torbası olarak değil, -bir **şirketin** veya bir **özelliğin** sahiplik sınırı olarak ele alır. +OpenClaw, yerel bir Plugin'i ilgisiz +entegrasyonlardan oluşan bir torba olarak değil, bir **şirketin** veya bir +**özelliğin** sahiplik sınırı olarak ele alır. Bu şu anlama gelir: -- bir şirket Plugin’i genellikle o şirketin OpenClaw’a dönük +- bir şirket Plugin'i genellikle o şirketin OpenClaw'a dönük tüm yüzeylerinin sahibi olmalıdır -- bir özellik Plugin’i genellikle sunduğu tam özellik yüzeyinin sahibi olmalıdır -- kanallar, sağlayıcı davranışını geçici ve özel olarak yeniden uygulamak yerine - paylaşılan çekirdek yetenekleri tüketmelidir +- bir özellik Plugin'i genellikle sunduğu özelliğin tüm yüzeyinin + sahibi olmalıdır +- kanallar, sağlayıcı davranışını gelişigüzel yeniden uygulamak yerine paylaşılan çekirdek yetenekleri tüketmelidir Örnekler: -- paketlenmiş `openai` Plugin’i, OpenAI model-sağlayıcı davranışının ve OpenAI - konuşma + gerçek zamanlı ses + medya anlama + görüntü oluşturma davranışının sahibidir -- paketlenmiş `elevenlabs` Plugin’i, ElevenLabs konuşma davranışının sahibidir -- paketlenmiş `microsoft` Plugin’i, Microsoft konuşma davranışının sahibidir -- paketlenmiş `google` Plugin’i, Google model-sağlayıcı davranışının yanı sıra Google - medya anlama + görüntü oluşturma + web arama davranışının sahibidir -- paketlenmiş `firecrawl` Plugin’i, Firecrawl web getirme davranışının sahibidir -- paketlenmiş `minimax`, `mistral`, `moonshot` ve `zai` Pluginleri, - medya anlama arka uçlarının sahibidir -- paketlenmiş `qwen` Plugin’i, Qwen metin sağlayıcı davranışının yanı sıra - medya anlama ve video oluşturma davranışının sahibidir -- `voice-call` Plugin’i bir özellik Plugin’idir: çağrı aktarımının, araçların, - CLI’nin, yolların ve Twilio medya akışı köprülemesinin sahibidir, ancak satıcı Pluginlerini doğrudan - içe aktarmak yerine paylaşılan konuşma ile gerçek zamanlı yazıya döküm ve gerçek zamanlı ses +- paketlenmiş `openai` Plugin'i, OpenAI model-sağlayıcı davranışının ve OpenAI + konuşma + gerçek zamanlı ses + medya-anlama + görüntü-oluşturma davranışının sahibidir +- paketlenmiş `elevenlabs` Plugin'i, ElevenLabs konuşma davranışının sahibidir +- paketlenmiş `microsoft` Plugin'i, Microsoft konuşma davranışının sahibidir +- paketlenmiş `google` Plugin'i, Google model-sağlayıcı davranışının yanı sıra Google + medya-anlama + görüntü-oluşturma + web-arama davranışının sahibidir +- paketlenmiş `firecrawl` Plugin'i, Firecrawl web-getirme davranışının sahibidir +- paketlenmiş `minimax`, `mistral`, `moonshot` ve `zai` Plugin'leri, + medya-anlama arka uçlarının sahibidir +- paketlenmiş `qwen` Plugin'i, Qwen metin-sağlayıcı davranışının yanı sıra + medya-anlama ve video-oluşturma davranışının sahibidir +- `voice-call` Plugin'i bir özellik Plugin'idir: çağrı taşımasını, araçları, + CLI'yi, rotaları ve Twilio medya-akışı köprülemesini sahiplenir, ancak satıcı Plugin'lerini + doğrudan içe aktarmak yerine paylaşılan konuşma ile gerçek zamanlı deşifre ve gerçek zamanlı ses yeteneklerini tüketir -Amaçlanan son durum şudur: +Hedeflenen son durum şudur: -- OpenAI, metin modelleri, konuşma, görüntüler ve - gelecekte video alanlarını kapsasa bile tek bir Plugin içinde yer alır +- OpenAI, metin modellerini, konuşmayı, görüntüleri ve + gelecekte videoyu kapsasa bile tek bir Plugin içinde yaşar - başka bir satıcı da kendi yüzey alanı için aynısını yapabilir -- kanallar, sağlayıcının hangi satıcı Plugin’ine ait olduğunu umursamaz; çekirdek tarafından sunulan +- kanallar, hangi satıcı Plugin'inin sağlayıcının sahibi olduğunu önemsemez; çekirdek tarafından açığa çıkarılan paylaşılan yetenek sözleşmesini tüketir -Temel ayrım şudur: +Ana ayrım şudur: -- **Plugin** = sahiplik sınırı -- **yetenek** = birden çok Plugin’in uygulayabileceği veya tüketebileceği çekirdek sözleşme +- **plugin** = sahiplik sınırı +- **capability** = birden çok Plugin'in uygulayabileceği veya tüketebileceği çekirdek sözleşme Dolayısıyla OpenClaw video gibi yeni bir alan eklerse, ilk soru -“hangi sağlayıcı video işlemeyi sabit kodlamalı?” değildir. İlk soru “çekirdek video -yetenek sözleşmesi nedir?” olmalıdır. Bu sözleşme var olduğunda, satıcı Pluginleri -ona karşı kayıt olabilir ve kanal/özellik Pluginleri onu tüketebilir. +"hangi sağlayıcı video işlemeyi sabit kodlamalı?" değildir. İlk soru "çekirdek +video yetenek sözleşmesi nedir?" olmalıdır. Bu sözleşme bir kez var olduğunda, satıcı Plugin'leri +ona karşı kayıt olabilir ve kanal/özellik Plugin'leri onu tüketebilir. -Yetenek henüz yoksa, genellikle doğru hareket şudur: +Yetenek henüz yoksa, doğru hareket genellikle şudur: -1. eksik yeteneği çekirdekte tanımlayın -2. bunu Plugin API’si/çalışma zamanı üzerinden tipli bir şekilde açığa çıkarın -3. kanalları/özellikleri bu yeteneğe bağlayın -4. satıcı Pluginlerinin uygulamaları kaydetmesine izin verin +1. çekirdekte eksik yeteneği tanımlayın +2. bunu türlendirilmiş bir şekilde Plugin API'si/çalışma zamanı üzerinden açığa çıkarın +3. kanalları/özellikleri bu yeteneğe göre bağlayın +4. satıcı Plugin'lerinin uygulamaları kaydetmesine izin verin -Bu, sahipliği açık tutarken tek bir satıcıya veya -bir defalık Plugin’e özgü bir kod yoluna bağlı çekirdek davranıştan kaçınır. +Bu, çekirdek davranışın tek bir satıcıya veya tek seferlik Plugin'e özgü +bir kod yoluna bağlı olmasını önlerken sahipliği açık tutar. ### Yetenek katmanlaması Kodun nereye ait olduğuna karar verirken şu zihinsel modeli kullanın: - **çekirdek yetenek katmanı**: paylaşılan orkestrasyon, ilke, geri dönüş, yapılandırma - birleştirme kuralları, teslim semantiği ve tipli sözleşmeler -- **satıcı Plugin katmanı**: satıcıya özgü API’ler, kimlik doğrulama, model katalogları, konuşma + birleştirme kuralları, teslim anlambilimi ve türlendirilmiş sözleşmeler +- **satıcı Plugin katmanı**: satıcıya özgü API'ler, kimlik doğrulama, model katalogları, konuşma sentezi, görüntü oluşturma, gelecekteki video arka uçları, kullanım uç noktaları -- **kanal/özellik Plugin katmanı**: Slack/Discord/voice-call/vb. entegrasyonu, - çekirdek yetenekleri tüketir ve bunları bir yüzeyde sunar +- **kanal/özellik Plugin katmanı**: çekirdek yetenekleri tüketen ve + bunları bir yüzeyde sunan Slack/Discord/voice-call/vb. entegrasyonu -Örneğin TTS şu yapıyı izler: +Örneğin TTS şu biçimi izler: -- çekirdek, yanıt zamanı TTS ilkesinin, geri dönüş sırasının, tercihlerin ve kanal tesliminin sahibidir +- çekirdek, yanıt zamanındaki TTS ilkesinin, geri dönüş sırasının, tercihlerin ve kanal tesliminin sahibidir - `openai`, `elevenlabs` ve `microsoft`, sentez uygulamalarının sahibidir - `voice-call`, telefon TTS çalışma zamanı yardımcısını tüketir -Aynı kalıp gelecekteki yetenekler için de tercih edilmelidir. +Aynı desen gelecekteki yetenekler için de tercih edilmelidir. -### Çok yetenekli şirket Plugin’i örneği +### Çok yetenekli şirket Plugin örneği -Bir şirket Plugin’i dışarıdan bakıldığında tutarlı hissettirmelidir. OpenClaw’ın modeller, konuşma, gerçek zamanlı yazıya döküm, gerçek zamanlı ses, medya +Bir şirket Plugin'i dışarıdan bakıldığında tutarlı hissettirmelidir. OpenClaw'ta +modeller, konuşma, gerçek zamanlı deşifre, gerçek zamanlı ses, medya anlama, görüntü oluşturma, video oluşturma, web getirme ve web arama için paylaşılan -sözleşmeleri varsa, bir satıcı tüm yüzeylerinin sahibi tek bir yerde olabilir: +sözleşmeler varsa, bir satıcı tüm yüzeylerinin sahibi tek bir yerde olabilir: ```ts import type { OpenClawPluginDefinition } from "openclaw/plugin-sdk/plugin-entry"; @@ -363,70 +370,70 @@ const plugin: OpenClawPluginDefinition = { export default plugin; ``` -Önemli olan tam yardımcı adları değildir. Yapı önemlidir: +Önemli olan tam yardımcı adları değildir. Biçim önemlidir: - tek bir Plugin satıcı yüzeyinin sahibidir -- çekirdek yine de yetenek sözleşmelerinin sahibidir -- kanallar ve özellik Pluginleri satıcı kodunu değil, `api.runtime.*` yardımcılarını tüketir -- sözleşme testleri, Plugin’in sahibi olduğunu iddia ettiği yetenekleri kaydettiğini - doğrulayabilir +- çekirdek hâlâ yetenek sözleşmelerinin sahibidir +- kanallar ve özellik Plugin'leri satıcı kodunu değil, `api.runtime.*` yardımcılarını tüketir +- sözleşme testleri, Plugin'in + sahip olduğunu iddia ettiği yetenekleri kaydettiğini doğrulayabilir ### Yetenek örneği: video anlama -OpenClaw zaten görüntü/ses/video anlamayı tek bir paylaşılan +OpenClaw, görüntü/ses/video anlamayı zaten tek bir paylaşılan yetenek olarak ele alır. Aynı sahiplik modeli burada da geçerlidir: -1. çekirdek medya anlama sözleşmesini tanımlar -2. satıcı Pluginleri, uygun olduğunda `describeImage`, `transcribeAudio` ve +1. çekirdek medya-anlama sözleşmesini tanımlar +2. satıcı Plugin'leri, uygun olduğu şekilde `describeImage`, `transcribeAudio` ve `describeVideo` kaydeder -3. kanallar ve özellik Pluginleri, doğrudan satıcı koduna bağlanmak yerine - paylaşılan çekirdek davranışı tüketir +3. kanal ve özellik Plugin'leri, doğrudan satıcı koduna + bağlanmak yerine paylaşılan çekirdek davranışı tüketir -Bu, tek bir sağlayıcının video varsayımlarının çekirdeğe işlenmesini önler. Plugin, -satıcı yüzeyinin sahibidir; çekirdek ise yetenek sözleşmesinin ve geri dönüş davranışının sahibidir. +Bu, bir sağlayıcının video varsayımlarının çekirdeğe gömülmesini önler. Satıcı yüzeyinin sahibi +Plugin'dir; yetenek sözleşmesinin ve geri dönüş davranışının sahibi çekirdektir. -Video oluşturma zaten aynı sıralamayı kullanır: çekirdek tipli -yetenek sözleşmesinin ve çalışma zamanı yardımcısının sahibidir ve satıcı Pluginleri -buna karşı `api.registerVideoGenerationProvider(...)` uygulamalarını kaydeder. +Video oluşturma zaten aynı diziyi kullanır: çekirdek, türlendirilmiş +yetenek sözleşmesinin ve çalışma zamanı yardımcısının sahibidir; satıcı Plugin'leri de +`api.registerVideoGenerationProvider(...)` uygulamalarını buna karşı kaydeder. -Somut bir devreye alma kontrol listesine mi ihtiyacınız var? Bkz. +Somut bir dağıtım denetim listesine mi ihtiyacınız var? Bkz. [Capability Cookbook](/tr/plugins/architecture). -## Sözleşmeler ve yaptırım +## Sözleşmeler ve zorunlu kılma -Plugin API yüzeyi bilinçli olarak `OpenClawPluginApi` içinde tipli ve merkezileştirilmiştir. -Bu sözleşme, desteklenen kayıt noktalarını ve -bir Plugin’in güvenebileceği çalışma zamanı yardımcılarını tanımlar. +Plugin API yüzeyi kasıtlı olarak türlendirilmiştir ve +`OpenClawPluginApi` içinde merkezileştirilmiştir. Bu sözleşme, desteklenen kayıt noktalarını ve +bir Plugin'in güvenebileceği çalışma zamanı yardımcılarını tanımlar. Bunun önemi: - Plugin yazarları tek bir kararlı iç standart elde eder -- çekirdek, iki Plugin’in aynı sağlayıcı kimliğini kaydetmesi gibi - mükerrer sahipliği reddedebilir -- başlatma, hatalı biçimlendirilmiş kayıtlar için eyleme dönük tanılar sunabilir -- sözleşme testleri, paketlenmiş Plugin sahipliğini zorlayabilir ve sessiz kaymayı önleyebilir +- çekirdek, iki Plugin'in aynı + sağlayıcı kimliğini kaydetmesi gibi yinelenen sahipliği reddedebilir +- başlatma, hatalı biçimlendirilmiş kayıtlar için eyleme geçirilebilir tanılar gösterebilir +- sözleşme testleri, paketlenmiş Plugin sahipliğini zorunlu kılabilir ve sessiz kaymayı önleyebilir -İki katmanlı yaptırım vardır: +İki zorunlu kılma katmanı vardır: -1. **çalışma zamanı kayıt yaptırımı** - Plugin kayıt sistemi, Pluginler yüklenirken kayıtları doğrular. Örnekler: - mükerrer sağlayıcı kimlikleri, mükerrer konuşma sağlayıcısı kimlikleri ve hatalı +1. **çalışma zamanı kayıt zorunlu kılma** + Plugin kayıt sistemi, Plugin'ler yüklenirken kayıtları doğrular. Örnekler: + yinelenen sağlayıcı kimlikleri, yinelenen konuşma sağlayıcı kimlikleri ve hatalı biçimlendirilmiş kayıtlar tanımsız davranış yerine Plugin tanıları üretir. 2. **sözleşme testleri** - Paketlenmiş Pluginler test çalıştırmaları sırasında sözleşme kayıt sistemlerinde yakalanır; böylece - OpenClaw sahipliği açıkça doğrulayabilir. Bugün bu, model + Paketlenmiş Plugin'ler test çalışmaları sırasında sözleşme kayıtlarına alınır; böylece + OpenClaw sahipliği açıkça doğrulayabilir. Bugün bu; model sağlayıcıları, konuşma sağlayıcıları, web arama sağlayıcıları ve paketlenmiş kayıt - sahipliği için kullanılır. + sahipliği için kullanılmaktadır. -Pratik etkisi şudur: OpenClaw, hangi Plugin’in hangi -yüzeyin sahibi olduğunu baştan bilir. Bu, çekirdek ve kanalların sorunsuz şekilde birleşmesini sağlar çünkü -sahiplik örtük değil, beyan edilmiş, tipli ve test edilebilirdir. +Pratik etki şudur: OpenClaw, hangi yüzeyin hangi Plugin'e ait olduğunu +önceden bilir. Bu, çekirdeğin ve kanalların sorunsuzca bileşmesine olanak tanır; +çünkü sahiplik örtük değil, bildirilmiş, türlendirilmiş ve test edilebilirdir. -### Sözleşmede ne yer almalı +### Bir sözleşmede ne bulunmalıdır İyi Plugin sözleşmeleri şunlardır: -- tipli +- türlendirilmiş - küçük - yeteneğe özgü - çekirdeğe ait @@ -436,43 +443,46 @@ sahiplik örtük değil, beyan edilmiş, tipli ve test edilebilirdir. Kötü Plugin sözleşmeleri şunlardır: - çekirdekte gizlenmiş satıcıya özgü ilke -- kayıt sistemini atlayan bir defalık Plugin kaçış delikleri -- doğrudan satıcı uygulamasına uzanan kanal kodu +- kayıt sistemini baypas eden tek seferlik Plugin kaçış yolları +- kanal kodunun doğrudan bir satıcı uygulamasına erişmesi - `OpenClawPluginApi` veya - `api.runtime` parçası olmayan geçici çalışma zamanı nesneleri + `api.runtime` parçası olmayan gelişigüzel çalışma zamanı nesneleri -Kararsız kaldığınızda soyutlama düzeyini yükseltin: önce yeteneği tanımlayın, sonra -Pluginlerin ona bağlanmasına izin verin. +Şüphede kalırsanız, soyutlama düzeyini yükseltin: önce yeteneği tanımlayın, sonra +Plugin'lerin buna takılmasına izin verin. ## Yürütme modeli -Yerel OpenClaw Pluginleri Gateway ile **aynı süreç içinde** çalışır. İzole -değildirler. Yüklenmiş yerel bir Plugin, çekirdek kodla aynı süreç düzeyi güven sınırına sahiptir. +Yerel OpenClaw Plugin'leri, Gateway ile **aynı süreç içinde** çalışır. Korumalı +değildirler. Yüklenmiş bir yerel Plugin, çekirdek kod ile aynı süreç düzeyinde +güven sınırına sahiptir. Sonuçlar: - yerel bir Plugin araçlar, ağ işleyicileri, kancalar ve hizmetler kaydedebilir -- yerel bir Plugin hatası gateway’i çökertip kararsızlaştırabilir -- kötü amaçlı bir yerel Plugin, OpenClaw süreci içinde rastgele kod yürütmeye eşdeğerdir +- yerel bir Plugin hatası gateway'i çökertebilir veya kararsızlaştırabilir +- kötü niyetli bir yerel Plugin, OpenClaw süreci içinde keyfi kod yürütmeye denktir -Uyumlu paketler varsayılan olarak daha güvenlidir çünkü OpenClaw şu anda onları +Uyumlu paketler varsayılan olarak daha güvenlidir; çünkü OpenClaw şu anda onları meta veri/içerik paketleri olarak ele alır. Güncel sürümlerde bu çoğunlukla paketlenmiş Skills anlamına gelir. -Paketlenmemiş Pluginler için allowlist’ler ve açık kurulum/yükleme yolları kullanın. Çalışma alanı Pluginlerini -üretim varsayılanları değil, geliştirme zamanı kodu olarak değerlendirin. +Paketlenmemiş Plugin'ler için izin listeleri ve açık kurulum/yükleme yolları kullanın. +Çalışma alanı Plugin'lerini üretim varsayılanları değil, geliştirme zamanı kodu olarak değerlendirin. Paketlenmiş çalışma alanı paket adları için, Plugin kimliğini npm -adında sabit tutun: varsayılan olarak `@openclaw/`, ya da -paket kasıtlı olarak daha dar bir Plugin rolü açığa çıkarıyorsa -`-provider`, `-plugin`, `-speech`, `-sandbox` veya `-media-understanding` gibi onaylı tipli bir ek. +adına sabitleyin: varsayılan olarak `@openclaw/` veya +paketin kasıtlı olarak daha dar bir Plugin rolünü açığa çıkardığı durumlarda +`-provider`, `-plugin`, `-speech`, `-sandbox` veya `-media-understanding` gibi +onaylı türlendirilmiş bir son ek kullanın. Önemli güven notu: -- `plugins.allow`, **Plugin kimliklerine** güvenir; kaynak kökenine değil. -- Paketlenmiş bir Plugin ile aynı kimliğe sahip bir çalışma alanı Plugin’i, - bu çalışma alanı Plugin’i etkinleştirildiğinde/allowlist’e alındığında paketlenmiş kopyayı kasıtlı olarak gölgeler. -- Bu normaldir ve yerel geliştirme, yama testi ve hotfix’ler için kullanışlıdır. +- `plugins.allow`, **plugin ids**'ye güvenir; kaynak kökenine değil. +- Paketlenmiş bir Plugin ile aynı kimliğe sahip bir çalışma alanı Plugin'i, + bu çalışma alanı Plugin'i etkinleştirildiğinde/izin listesine alındığında + paketlenmiş kopyayı kasıtlı olarak gölgeler. +- Bu normaldir ve yerel geliştirme, yama testi ve düzeltmeler için faydalıdır. ## Dışa aktarma sınırı @@ -480,123 +490,124 @@ OpenClaw, uygulama kolaylıklarını değil, yetenekleri dışa aktarır. Yetenek kaydını genel tutun. Sözleşme dışı yardımcı dışa aktarımları azaltın: -- paketlenmiş Plugin’e özgü yardımcı alt yollar -- genel API olarak amaçlanmayan çalışma zamanı tesisat alt yolları +- paketlenmiş Plugin'e özgü yardımcı alt yollar +- genel API olması amaçlanmayan çalışma zamanı tesisatı alt yolları - satıcıya özgü kolaylık yardımcıları -- uygulama ayrıntısı olan kurulum/onboarding yardımcıları +- uygulama ayrıntısı olan kurulum/ilk katılım yardımcıları Bazı paketlenmiş Plugin yardımcı alt yolları, uyumluluk ve paketlenmiş Plugin bakımı için -oluşturulan SDK dışa aktarma haritasında hâlâ kalmaktadır. Güncel örnekler arasında +oluşturulmuş SDK dışa aktarma eşlemesinde hâlâ durmaktadır. Güncel örnekler arasında `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, `plugin-sdk/zalo`, -`plugin-sdk/zalo-setup` ve çeşitli `plugin-sdk/matrix*` hatları bulunur. Bunları -uygulama ayrıntısına ait, ayrılmış dışa aktarımlar olarak değerlendirin; yeni üçüncü taraf Pluginler için -önerilen SDK kalıbı olarak değil. +`plugin-sdk/zalo-setup` ve çeşitli `plugin-sdk/matrix*` sınırları bulunur. Bunları, +yeni üçüncü taraf Plugin'ler için önerilen SDK deseni olarak değil, +uygulama ayrıntısına ait ayrılmış dışa aktarımlar olarak değerlendirin. -## Yükleme hattı +## Yükleme ardışık düzeni -Başlatma sırasında OpenClaw kabaca şunları yapar: +Başlangıçta OpenClaw kabaca şunları yapar: 1. aday Plugin köklerini keşfeder 2. yerel veya uyumlu paket manifestlerini ve paket meta verilerini okur 3. güvenli olmayan adayları reddeder -4. Plugin yapılandırmasını normalize eder (`plugins.enabled`, `allow`, `deny`, `entries`, +4. Plugin yapılandırmasını normalleştirir (`plugins.enabled`, `allow`, `deny`, `entries`, `slots`, `load.paths`) 5. her aday için etkinleştirmeye karar verir -6. etkin yerel modülleri jiti aracılığıyla yükler -7. yerel `register(api)` (veya eski takma ad olan `activate(api)`) kancalarını çağırır ve kayıtları Plugin kayıt sistemine toplar +6. etkin yerel modülleri `jiti` aracılığıyla yükler +7. yerel `register(api)` (veya `activate(api)` — eski bir takma ad) kancalarını çağırır ve kayıtları Plugin kayıt sisteminde toplar 8. kayıt sistemini komutlara/çalışma zamanı yüzeylerine açar -`activate`, `register` için eski bir takma addır — yükleyici mevcut olanı çözer (`def.register ?? def.activate`) ve aynı noktada çağırır. Tüm paketlenmiş Pluginler `register` kullanır; yeni Pluginler için `register` tercih edin. +`activate`, `register` için eski bir takma addır — yükleyici mevcut olanı çözer (`def.register ?? def.activate`) ve aynı noktada çağırır. Tüm paketlenmiş Plugin'ler `register` kullanır; yeni Plugin'ler için `register` tercih edin. -Güvenlik kapıları çalışma zamanı yürütmesinden **önce** gerçekleşir. Adaylar, -girdi Plugin kökünden taşıyorsa, yol dünya tarafından yazılabiliyorsa veya -paketlenmemiş Pluginler için yol sahipliği şüpheli görünüyorsa engellenir. +Güvenlik geçitleri **çalışma zamanı yürütmesinden önce** gerçekleşir. Giriş Plugin kökünden +kaçtığında, yol herkes tarafından yazılabilir olduğunda veya paketlenmemiş Plugin'ler için +yol sahipliği şüpheli göründüğünde adaylar engellenir. -### Manifest öncelikli davranış +### Önce manifest davranışı -Manifest, kontrol düzlemi için doğruluk kaynağıdır. OpenClaw bunu şunlar için kullanır: +Manifest, denetim düzleminin doğruluk kaynağıdır. OpenClaw bunu şunlar için kullanır: -- Plugin’i tanımlamak -- beyan edilen kanalları/Skills/yapılandırma şemasını veya paket yeteneklerini keşfetmek -- `plugins.entries..config` değerini doğrulamak +- Plugin'i tanımlamak +- bildirilen kanalları/Skills/yapılandırma şemasını veya paket yeteneklerini keşfetmek +- `plugins.entries..config` doğrulamak - Control UI etiketlerini/yer tutucularını zenginleştirmek - kurulum/katalog meta verilerini göstermek -- Plugin çalışma zamanını yüklemeden düşük maliyetli etkinleştirme ve kurulum tanımlayıcılarını korumak +- Plugin çalışma zamanını yüklemeden ucuz etkinleştirme ve kurulum tanımlayıcılarını korumak -Yerel Pluginler için çalışma zamanı modülü veri düzlemi parçasıdır. Kancalar, araçlar, komutlar veya sağlayıcı akışları gibi +Yerel Plugin'ler için çalışma zamanı modülü veri düzlemi kısmıdır. Kancalar, araçlar, komutlar veya sağlayıcı akışları gibi gerçek davranışları kaydeder. -İsteğe bağlı manifest `activation` ve `setup` blokları kontrol düzleminde kalır. -Bunlar etkinleştirme planlaması ve kurulum keşfi için yalnızca meta veri tanımlayıcılarıdır; -çalışma zamanı kaydının, `register(...)` işlevinin veya `setupEntry`’nin yerine geçmez. -İlk canlı etkinleştirme tüketicileri artık, daha geniş kayıt sistemi somutlaştırmasından önce +İsteğe bağlı manifest `activation` ve `setup` blokları denetim düzleminde kalır. +Bunlar, etkinleştirme planlaması ve kurulum keşfi için yalnızca meta veri tanımlayıcılarıdır; +çalışma zamanı kaydının, `register(...)`'ın veya `setupEntry`'nin yerine geçmezler. +İlk canlı etkinleştirme tüketicileri artık daha geniş kayıt sistemi somutlaştırmasından önce Plugin yüklemeyi daraltmak için manifest komut, kanal ve sağlayıcı ipuçlarını kullanır: -- CLI yükleme, istenen birincil komutun sahibi olan Pluginlerle daraltılır -- kanal kurulumu/Plugin çözümü, istenen - kanal kimliğinin sahibi olan Pluginlerle daraltılır -- açık sağlayıcı kurulumu/çalışma zamanı çözümü, istenen - sağlayıcı kimliğinin sahibi olan Pluginlerle daraltılır +- CLI yüklemesi, istenen birincil komutun sahibi olan Plugin'lere daraltılır +- kanal kurulumu/Plugin çözümlemesi, istenen + kanal kimliğinin sahibi olan Plugin'lere daraltılır +- açık sağlayıcı kurulumu/çalışma zamanı çözümlemesi, istenen + sağlayıcı kimliğinin sahibi olan Plugin'lere daraltılır -Kurulum keşfi artık, kurulum zamanında çalışma zamanı kancalarına hâlâ ihtiyaç duyan Pluginler için -`setup-api`’ye geri dönmeden önce, aday Pluginleri daraltmak amacıyla `setup.providers` ve -`setup.cliBackends` gibi tanımlayıcıya ait kimlikleri tercih eder. Keşfedilen birden fazla Plugin aynı normalize edilmiş kurulum sağlayıcısı veya CLI arka uç -kimliğini talep ederse, kurulum araması keşif sırasına güvenmek yerine -belirsiz sahipliği reddeder. +Kurulum keşfi artık `setup.providers` ve +`setup.cliBackends` gibi tanımlayıcıya ait kimlikleri tercih ederek +aday Plugin'leri, hâlâ kurulum zamanı çalışma zamanı kancalarına ihtiyaç duyan Plugin'ler için +`setup-api`'ye geri dönmeden önce daraltır. Keşfedilen birden fazla Plugin aynı +normalize edilmiş kurulum sağlayıcısı veya CLI arka uç kimliğini talep ederse, +kurulum araması keşif sırasına güvenmek yerine belirsiz sahibini reddeder. ### Yükleyicinin önbelleğe aldığı şeyler -OpenClaw şu bileşenler için kısa süreli süreç içi önbellekler tutar: +OpenClaw süreç içinde kısa ömürlü önbellekler tutar: - keşif sonuçları - manifest kayıt sistemi verileri - yüklenmiş Plugin kayıt sistemleri -Bu önbellekler ani başlatma yükünü ve tekrarlanan komut ek yükünü azaltır. Bunları, -kalıcılık değil kısa ömürlü performans önbellekleri olarak düşünmek güvenlidir. +Bu önbellekler ani başlangıç yükünü ve tekrarlanan komut maliyetini azaltır. Bunları +kalıcılık değil, kısa ömürlü performans önbellekleri olarak düşünmek güvenlidir. Performans notu: - Bu önbellekleri devre dışı bırakmak için `OPENCLAW_DISABLE_PLUGIN_DISCOVERY_CACHE=1` veya `OPENCLAW_DISABLE_PLUGIN_MANIFEST_CACHE=1` ayarlayın. -- Önbellek aralıklarını `OPENCLAW_PLUGIN_DISCOVERY_CACHE_MS` ve +- Önbellek pencerelerini `OPENCLAW_PLUGIN_DISCOVERY_CACHE_MS` ve `OPENCLAW_PLUGIN_MANIFEST_CACHE_MS` ile ayarlayın. ## Kayıt sistemi modeli -Yüklenen Pluginler rastgele çekirdek küresellerini doğrudan değiştirmez. Merkezi bir +Yüklenen Plugin'ler rastgele çekirdek küresellerini doğrudan değiştirmez. Merkezi bir Plugin kayıt sistemine kaydolurlar. Kayıt sistemi şunları izler: - Plugin kayıtları (kimlik, kaynak, köken, durum, tanılar) - araçlar -- eski kancalar ve tipli kancalar +- eski kancalar ve türlendirilmiş kancalar - kanallar - sağlayıcılar - Gateway RPC işleyicileri -- HTTP yolları +- HTTP rotaları - CLI kaydedicileri - arka plan hizmetleri -- Plugin’e ait komutlar +- Plugin'e ait komutlar -Çekirdek özellikler daha sonra Plugin modülleriyle doğrudan konuşmak yerine bu -kayıt sisteminden okur. Bu, yüklemeyi tek yönlü tutar: +Daha sonra çekirdek özellikler doğrudan Plugin modülleriyle konuşmak yerine bu kayıt +sisteminden okur. Bu, yüklemeyi tek yönlü tutar: - Plugin modülü -> kayıt sistemine kayıt -- çekirdek çalışma zamanı -> kayıt sisteminden tüketim +- çekirdek çalışma zamanı -> kayıt sistemi tüketimi -Bu ayrım sürdürülebilirlik açısından önemlidir. Çekirdekteki yüzeylerin çoğunun -tek bir entegrasyon noktasına ihtiyaç duyması anlamına gelir: “kayıt sistemini oku”, -“her Plugin modülü için özel durum yaz” değil. +Bu ayrım bakım kolaylığı açısından önemlidir. Çoğu çekirdek yüzeyin yalnızca +tek bir entegrasyon noktasına ihtiyaç duyması anlamına gelir: "kayıt sistemini oku", +"her Plugin modülü için özel durum yaz" değil. ## Konuşma bağlama geri çağrıları -Bir konuşmayı bağlayan Pluginler, bir onay çözüldüğünde tepki verebilir. +Bir konuşmayı bağlayan Plugin'ler, onay çözüldüğünde tepki verebilir. -Bağlama isteği onaylandıktan veya reddedildikten sonra geri çağrı almak için +Bir bağlama isteği onaylandıktan veya reddedildikten sonra geri çağrı almak için `api.onConversationBindingResolved(...)` kullanın: ```ts @@ -621,23 +632,23 @@ Geri çağrı yükü alanları: - `status`: `"approved"` veya `"denied"` - `decision`: `"allow-once"`, `"allow-always"` veya `"deny"` -- `binding`: onaylanan istekler için çözümlenen bağlama -- `request`: özgün istek özeti, ayırma ipucu, gönderici kimliği ve +- `binding`: onaylanan istekler için çözülmüş bağlama +- `request`: özgün istek özeti, ayırma ipucu, gönderen kimliği ve konuşma meta verileri -Bu geri çağrı yalnızca bildirim amaçlıdır. Bir konuşmayı kimin bağlayabileceğini -değiştirmez ve çekirdeğin onay işleme süreci bittikten sonra çalışır. +Bu geri çağrı yalnızca bildirim amaçlıdır. Bir konuşmayı kimin bağlayabileceğini değiştirmez +ve çekirdek onay işleme tamamlandıktan sonra çalışır. ## Sağlayıcı çalışma zamanı kancaları -Sağlayıcı Pluginleri artık iki katmana sahiptir: +Sağlayıcı Plugin'lerinin artık iki katmanı vardır: -- manifest meta verileri: çalışma zamanı yüklenmeden önce düşük maliyetli sağlayıcı ortam kimlik doğrulama araması için `providerAuthEnvVars`, +- manifest meta verileri: çalışma zamanı yüklemesinden önce ucuz sağlayıcı ortam kimlik doğrulama araması için `providerAuthEnvVars`, kimlik doğrulamayı paylaşan sağlayıcı varyantları için `providerAuthAliases`, - çalışma zamanı yüklenmeden önce düşük maliyetli kanal ortamı/kurulum araması için `channelEnvVars`, - ayrıca çalışma zamanı yüklenmeden önce düşük maliyetli onboarding/kimlik doğrulama seçimi etiketleri ve - CLI bayrak meta verileri için `providerAuthChoices` -- yapılandırma zamanı kancaları: `catalog` / eski `discovery` artı `applyConfigDefaults` + çalışma zamanı yüklemesinden önce ucuz kanal ortam/kurulum araması için `channelEnvVars`, + ayrıca çalışma zamanı yüklemesinden önce ucuz ilk katılım/kimlik doğrulama seçimi etiketleri ve + CLI bayrağı meta verileri için `providerAuthChoices` +- yapılandırma zamanı kancaları: `catalog` / eski `discovery` ile `applyConfigDefaults` - çalışma zamanı kancaları: `normalizeModelId`, `normalizeTransport`, `normalizeConfig`, `applyNativeStreamingUsageCompat`, `resolveConfigApiKey`, @@ -658,84 +669,89 @@ Sağlayıcı Pluginleri artık iki katmana sahiptir: `buildReplayPolicy`, `sanitizeReplayHistory`, `validateReplayTurns`, `onModelSelected` -OpenClaw hâlâ genel aracı döngüsünün, failover’ın, döküm işleme sürecinin ve -araç ilkesinin sahibidir. Bu kancalar, bütünüyle özel bir çıkarım aktarımına ihtiyaç duymadan +OpenClaw yine de genel aracı döngüsünün, yük devretmenin, döküm işleme sürecinin ve +araç ilkesinin sahibidir. Bu kancalar, tamamen özel bir çıkarım taşımasına gerek kalmadan sağlayıcıya özgü davranış için uzantı yüzeyidir. -Sağlayıcının, genel kimlik doğrulama/durum/model seçici yollarının -Plugin çalışma zamanını yüklemeden görmesi gereken ortam tabanlı kimlik bilgileri varsa manifest `providerAuthEnvVars` kullanın. Bir sağlayıcı kimliği, başka bir sağlayıcı kimliğinin ortam değişkenlerini, kimlik doğrulama profillerini, yapılandırma destekli kimlik doğrulamayı ve API anahtarı onboarding seçimini yeniden kullanacaksa manifest `providerAuthAliases` kullanın. Onboarding/kimlik doğrulama seçimi -CLI yüzeyleri, sağlayıcının seçim kimliğini, grup etiketlerini ve basit -tek bayraklı kimlik doğrulama kablolamasını sağlayıcı çalışma zamanını yüklemeden bilmeliyse manifest `providerAuthChoices` kullanın. Sağlayıcı çalışma zamanı -`envVars` alanını, onboarding etiketleri veya OAuth -istemci kimliği/istemci gizli anahtarı kurulum değişkenleri gibi operatöre dönük ipuçları için saklayın. +Sağlayıcının, genel kimlik doğrulama/durum/model seçici yollarının Plugin +çalışma zamanını yüklemeden görmesi gereken ortam tabanlı kimlik bilgileri varsa manifest `providerAuthEnvVars` kullanın. +Bir sağlayıcı kimliği, başka bir sağlayıcı kimliğinin ortam değişkenlerini, kimlik doğrulama profillerini, +yapılandırma destekli kimlik doğrulamayı ve API anahtarı ilk katılım seçimini yeniden kullanacaksa +manifest `providerAuthAliases` kullanın. İlk katılım/kimlik doğrulama seçimi +CLI yüzeylerinin, sağlayıcının seçim kimliğini, grup etiketlerini ve basit +tek bayraklı kimlik doğrulama kablolamasını sağlayıcı çalışma zamanını yüklemeden bilmesi gerektiğinde +manifest `providerAuthChoices` kullanın. Sağlayıcı çalışma zamanı +`envVars` değerlerini, ilk katılım etiketleri veya OAuth +client-id/client-secret kurulum değişkenleri gibi operatöre dönük ipuçları için koruyun. -Bir kanalın, genel kabuk ortamı geri dönüşünün, config/durum kontrollerinin veya kurulum istemlerinin -çalışma zamanı kanalını yüklemeden görmesi gereken ortam güdümlü kimlik doğrulaması ya da kurulumu varsa manifest `channelEnvVars` kullanın. +Bir kanalın genel kabuk-ortam geri dönüşü, yapılandırma/durum denetimleri +veya kurulum istemlerinin kanal çalışma zamanını yüklemeden görmesi gereken ortam odaklı kimlik doğrulaması veya kurulumu varsa +manifest `channelEnvVars` kullanın. ### Kanca sırası ve kullanım -Model/sağlayıcı Pluginleri için OpenClaw kancaları kabaca şu sırayla çağırır. -“Ne zaman kullanılır” sütunu hızlı karar rehberidir. +Model/sağlayıcı Plugin'leri için OpenClaw kancaları kabaca şu sırayla çağırır. +"Kullanım zamanı" sütunu hızlı karar kılavuzudur. -| # | Kanca | Ne yapar | Ne zaman kullanılır | -| --- | --------------------------------- | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -| 1 | `catalog` | `models.json` üretimi sırasında sağlayıcı yapılandırmasını `models.providers` içine yayımlar | Sağlayıcının bir kataloğu veya temel URL varsayılanları vardır | -| 2 | `applyConfigDefaults` | Yapılandırma somutlaştırması sırasında sağlayıcıya ait genel yapılandırma varsayılanlarını uygular | Varsayılanlar kimlik doğrulama moduna, ortama veya sağlayıcının model ailesi semantiğine bağlıdır | -| -- | _(yerleşik model araması)_ | OpenClaw önce normal kayıt sistemi/katalog yolunu dener | _(bir Plugin kancası değildir)_ | -| 3 | `normalizeModelId` | Aramadan önce eski veya önizleme model kimliği takma adlarını normalize eder | Sağlayıcı, kanonik model çözümlemesinden önce takma ad temizliğinin sahibidir | -| 4 | `normalizeTransport` | Genel model derlemesinden önce sağlayıcı ailesine ait `api` / `baseUrl` değerlerini normalize eder | Sağlayıcı, aynı aktarım ailesindeki özel sağlayıcı kimlikleri için aktarım temizliğinin sahibidir | -| 5 | `normalizeConfig` | Çalışma zamanı/sağlayıcı çözümlemesinden önce `models.providers.` değerini normalize eder | Sağlayıcı, Plugin ile birlikte yaşaması gereken yapılandırma temizliğine ihtiyaç duyar; paketlenmiş Google ailesi yardımcıları da desteklenen Google config girdilerine geri destek sağlar | -| 6 | `applyNativeStreamingUsageCompat` | Yapılandırma sağlayıcılarına yerel akış kullanımı uyumluluk yeniden yazımlarını uygular | Sağlayıcının, uç nokta güdümlü yerel akış kullanımı meta verisi düzeltmelerine ihtiyacı vardır | -| 7 | `resolveConfigApiKey` | Çalışma zamanı kimlik doğrulaması yüklenmeden önce yapılandırma sağlayıcıları için ortam işaretleyici kimlik doğrulamayı çözümler | Sağlayıcının, sağlayıcıya ait ortam işaretleyici API anahtarı çözümlemesi vardır; `amazon-bedrock` için burada ayrıca yerleşik bir AWS ortam işaretleyici çözümleyici bulunur | -| 8 | `resolveSyntheticAuth` | Düz metni kalıcılaştırmadan yerel/self-hosted veya yapılandırma destekli kimlik doğrulamayı yüzeye çıkarır | Sağlayıcı, sentetik/yerel bir kimlik bilgisi işaretleyicisi ile çalışabilir | -| 9 | `resolveExternalAuthProfiles` | Sağlayıcıya ait harici kimlik doğrulama profillerini bindirir; varsayılan `persistence` değeri CLI/uygulamaya ait kimlik bilgileri için `runtime-only` olur | Sağlayıcı, kopyalanmış yenileme belirteçlerini kalıcılaştırmadan harici kimlik doğrulama kimlik bilgilerini yeniden kullanır | -| 10 | `shouldDeferSyntheticProfileAuth` | Saklanan sentetik profil yer tutucularını ortam/yapılandırma destekli kimlik doğrulamanın arkasına iter | Sağlayıcı, öncelik kazanmaması gereken sentetik yer tutucu profiller saklar | -| 11 | `resolveDynamicModel` | Yerel kayıt sisteminde henüz bulunmayan sağlayıcıya ait model kimlikleri için eşzamanlı geri dönüş sağlar | Sağlayıcı, yukarı akıştan gelen rastgele model kimliklerini kabul eder | -| 12 | `prepareDynamicModel` | Asenkron ısınma yapar, ardından `resolveDynamicModel` yeniden çalışır | Sağlayıcının bilinmeyen kimlikleri çözümlemeden önce ağ meta verisine ihtiyacı vardır | -| 13 | `normalizeResolvedModel` | Gömülü çalıştırıcı çözümlemiş modeli kullanmadan önce son yeniden yazımı yapar | Sağlayıcının aktarım yeniden yazımlarına ihtiyacı vardır ama yine de çekirdek bir aktarım kullanır | -| 14 | `contributeResolvedModelCompat` | Başka bir uyumlu aktarımın arkasındaki satıcı modelleri için uyumluluk bayrakları ekler | Sağlayıcı, sağlayıcıyı devralmadan kendi modellerini vekil aktarımlarda tanır | -| 15 | `capabilities` | Paylaşılan çekirdek mantık tarafından kullanılan, sağlayıcıya ait döküm/araç meta verileri | Sağlayıcının döküm/sağlayıcı ailesine özgü davranış farklarına ihtiyacı vardır | -| 16 | `normalizeToolSchemas` | Gömülü çalıştırıcı görmeden önce araç şemalarını normalize eder | Sağlayıcının aktarım ailesi şema temizliğine ihtiyacı vardır | -| 17 | `inspectToolSchemas` | Normalize etmeden sonra sağlayıcıya ait şema tanılarını yüzeye çıkarır | Sağlayıcı, çekirdeğe sağlayıcıya özgü kurallar öğretmeden anahtar sözcük uyarıları vermek ister | -| 18 | `resolveReasoningOutputMode` | Yerel veya etiketli akıl yürütme çıktısı sözleşmesini seçer | Sağlayıcı, yerel alanlar yerine etiketli akıl yürütme/nihai çıktı ister | -| 19 | `prepareExtraParams` | Genel akış seçeneği sarmalayıcılarından önce istek parametresi normalizasyonu yapar | Sağlayıcının varsayılan istek parametrelerine veya sağlayıcı başına parametre temizliğine ihtiyacı vardır | -| 20 | `createStreamFn` | Normal akış yolunu özel bir aktarımla tamamen değiştirir | Sağlayıcının yalnızca bir sarmalayıcıya değil, özel bir tel protokolüne ihtiyacı vardır | -| 21 | `wrapStreamFn` | Genel sarmalayıcılar uygulandıktan sonra akışı sarar | Sağlayıcının özel bir aktarım olmadan istek üstbilgileri/gövdesi/model uyumluluğu sarmalayıcılarına ihtiyacı vardır | -| 22 | `resolveTransportTurnState` | Tur başına yerel aktarım üstbilgileri veya meta verileri ekler | Sağlayıcı, genel aktarımların sağlayıcıya özgü yerel tur kimliğini göndermesini ister | -| 23 | `resolveWebSocketSessionPolicy` | Yerel WebSocket üstbilgileri veya oturum soğuma ilkesi ekler | Sağlayıcı, genel WS aktarımlarının oturum üstbilgilerini veya geri dönüş ilkesini ayarlamasını ister | -| 24 | `formatApiKey` | Kimlik doğrulama profili biçimlendiricisi: saklanan profil çalışma zamanı `apiKey` dizesine dönüşür | Sağlayıcı, ek kimlik doğrulama meta verisi saklar ve özel bir çalışma zamanı belirteci biçimine ihtiyaç duyar | -| 25 | `refreshOAuth` | Özel yenileme uç noktaları veya yenileme başarısızlığı ilkesi için OAuth yenilemesini geçersiz kılar | Sağlayıcı, paylaşılan `pi-ai` yenileyicilerine uymaz | -| 26 | `buildAuthDoctorHint` | OAuth yenilemesi başarısız olduğunda eklenecek onarım ipucunu oluşturur | Sağlayıcı, yenileme hatasından sonra sağlayıcıya ait kimlik doğrulama onarım rehberliğine ihtiyaç duyar | -| 27 | `matchesContextOverflowError` | Sağlayıcıya ait bağlam penceresi taşması eşleyicisi | Sağlayıcının, genel sezgisel yöntemlerin kaçıracağı ham taşma hataları vardır | -| 28 | `classifyFailoverReason` | Sağlayıcıya ait failover neden sınıflandırması | Sağlayıcı, ham API/aktarım hatalarını hız sınırı/aşırı yük/vb. olarak eşleyebilir | -| 29 | `isCacheTtlEligible` | Vekil/arka taşıma sağlayıcıları için istem önbelleği ilkesi | Sağlayıcının vekile özgü önbellek TTL geçitlemesine ihtiyacı vardır | -| 30 | `buildMissingAuthMessage` | Genel eksik kimlik doğrulama kurtarma mesajının yerine geçer | Sağlayıcının sağlayıcıya özgü eksik kimlik doğrulama kurtarma ipucuna ihtiyacı vardır | -| 31 | `suppressBuiltInModel` | Eski yukarı akış modellerini bastırma ve isteğe bağlı kullanıcıya dönük hata ipucu | Sağlayıcının eski yukarı akış satırlarını gizlemesi veya bunları bir satıcı ipucuyla değiştirmesi gerekir | -| 32 | `augmentModelCatalog` | Keşiften sonra sentetik/nihai katalog satırları ekler | Sağlayıcının `models list` ve seçicilerde sentetik ileri uyumluluk satırlarına ihtiyacı vardır | -| 33 | `isBinaryThinking` | İkili düşünme sağlayıcıları için açık/kapalı akıl yürütme anahtarı | Sağlayıcı yalnızca ikili düşünme açık/kapalı seçeneği sunar | -| 34 | `supportsXHighThinking` | Seçili modeller için `xhigh` akıl yürütme desteği | Sağlayıcı, `xhigh` seçeneğini yalnızca modellerin bir alt kümesinde ister | -| 35 | `resolveDefaultThinkingLevel` | Belirli bir model ailesi için varsayılan `/think` düzeyi | Sağlayıcı, bir model ailesi için varsayılan `/think` ilkesinin sahibidir | -| 36 | `isModernModelRef` | Canlı profil filtreleri ve smoke seçimi için modern model eşleyicisi | Sağlayıcı, canlı/smoke tercih edilen model eşlemesinin sahibidir | -| 37 | `prepareRuntimeAuth` | Yapılandırılmış bir kimlik bilgisini, çıkarımdan hemen önce gerçek çalışma zamanı belirtecine/anahtarına dönüştürür | Sağlayıcının bir belirteç değişimine veya kısa ömürlü istek kimlik bilgisine ihtiyacı vardır | +| # | Kanca | Ne yapar | Ne zaman kullanılır | +| --- | --------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | `catalog` | `models.json` oluşturma sırasında sağlayıcı yapılandırmasını `models.providers` içine yayımlar | Sağlayıcının bir kataloğu veya temel URL varsayılanları vardır | +| 2 | `applyConfigDefaults` | Yapılandırma somutlaştırması sırasında sağlayıcıya ait genel yapılandırma varsayılanlarını uygular | Varsayılanlar kimlik doğrulama kipine, ortama veya sağlayıcı model ailesi anlambilimine bağlıdır | +| -- | _(yerleşik model araması)_ | OpenClaw önce normal kayıt sistemi/katalog yolunu dener | _(bir Plugin kancası değildir)_ | +| 3 | `normalizeModelId` | Aramadan önce eski veya önizleme model kimliği takma adlarını normalize eder | Sağlayıcı, standart model çözümlemesinden önce takma ad temizliğinin sahibidir | +| 4 | `normalizeTransport` | Genel model birleştirmesinden önce sağlayıcı ailesine ait `api` / `baseUrl` değerlerini normalize eder | Sağlayıcı, aynı taşıma ailesindeki özel sağlayıcı kimlikleri için taşıma temizliğinin sahibidir | +| 5 | `normalizeConfig` | Çalışma zamanı/sağlayıcı çözümlemesinden önce `models.providers.` değerini normalize eder | Sağlayıcının Plugin ile birlikte yaşaması gereken yapılandırma temizliğine ihtiyacı vardır; paketlenmiş Google ailesi yardımcıları da desteklenen Google yapılandırma girdilerini arka planda destekler | +| 6 | `applyNativeStreamingUsageCompat` | Yapılandırma sağlayıcılarına yerel akış kullanımı uyumluluk yeniden yazımlarını uygular | Sağlayıcının uç nokta odaklı yerel akış kullanımı meta verisi düzeltmelerine ihtiyacı vardır | +| 7 | `resolveConfigApiKey` | Çalışma zamanı kimlik doğrulaması yüklenmeden önce yapılandırma sağlayıcıları için ortam işaretleyicili kimlik doğrulamayı çözümler | Sağlayıcının sağlayıcıya ait ortam işaretleyicili API anahtarı çözümlemesine ihtiyacı vardır; `amazon-bedrock` da burada yerleşik bir AWS ortam işaretleyicisi çözümleyicisine sahiptir | +| 8 | `resolveSyntheticAuth` | Düz metni kalıcı hâle getirmeden yerel/kendi kendine barındırılan veya yapılandırma destekli kimlik doğrulamayı ortaya çıkarır | Sağlayıcı sentetik/yerel bir kimlik bilgisi işaretleyicisi ile çalışabilir | +| 9 | `resolveExternalAuthProfiles` | Sağlayıcıya ait harici kimlik doğrulama profillerini üst üste bindirir; CLI/uygulamaya ait kimlik bilgileri için varsayılan `persistence` değeri `runtime-only` olur | Sağlayıcı, kopyalanmış yenileme belirteçlerini kalıcı hâle getirmeden harici kimlik doğrulama kimlik bilgilerini yeniden kullanır | +| 10 | `shouldDeferSyntheticProfileAuth` | Depolanmış sentetik profil yer tutucularını ortam/yapılandırma destekli kimlik doğrulamanın arkasına düşürür | Sağlayıcı, öncelik kazanmaması gereken sentetik yer tutucu profilleri depolar | +| 11 | `resolveDynamicModel` | Henüz yerel kayıt sisteminde olmayan sağlayıcıya ait model kimlikleri için eşzamanlı geri dönüş sağlar | Sağlayıcı keyfi yukarı akış model kimliklerini kabul eder | +| 12 | `prepareDynamicModel` | Eşzamansız ısınma yapar, sonra `resolveDynamicModel` yeniden çalışır | Sağlayıcının bilinmeyen kimlikleri çözümlemeden önce ağ meta verisine ihtiyacı vardır | +| 13 | `normalizeResolvedModel` | Gömülü çalıştırıcı çözülmüş modeli kullanmadan önce son yeniden yazımı yapar | Sağlayıcının taşıma yeniden yazımlarına ihtiyacı vardır ancak yine de çekirdek taşıma kullanır | +| 14 | `contributeResolvedModelCompat` | Başka bir uyumlu taşımanın arkasındaki satıcı modelleri için uyumluluk bayrakları katkısında bulunur | Sağlayıcı, sağlayıcıyı devralmadan vekil taşımalarda kendi modellerini tanır | +| 15 | `capabilities` | Paylaşılan çekirdek mantığı tarafından kullanılan sağlayıcıya ait döküm/araç meta verileri | Sağlayıcının döküm/sağlayıcı ailesi tuhaflıklarına ihtiyacı vardır | +| 16 | `normalizeToolSchemas` | Gömülü çalıştırıcı görmeden önce araç şemalarını normalize eder | Sağlayıcının taşıma ailesi şema temizliğine ihtiyacı vardır | +| 17 | `inspectToolSchemas` | Normalizasyondan sonra sağlayıcıya ait şema tanılarını ortaya çıkarır | Sağlayıcı, çekirdeğe sağlayıcıya özgü kurallar öğretmeden anahtar sözcük uyarıları istemektedir | +| 18 | `resolveReasoningOutputMode` | Yerel ile etiketli akıl yürütme çıktısı sözleşmesi arasında seçim yapar | Sağlayıcının yerel alanlar yerine etiketli akıl yürütme/nihai çıktıya ihtiyacı vardır | +| 19 | `prepareExtraParams` | Genel akış seçeneği sarmalayıcılarından önce istek parametresi normalizasyonu yapar | Sağlayıcının varsayılan istek parametrelerine veya sağlayıcı başına parametre temizliğine ihtiyacı vardır | +| 20 | `createStreamFn` | Normal akış yolunu tamamen özel bir taşıma ile değiştirir | Sağlayıcının yalnızca bir sarmalayıcıya değil, özel bir tel protokolüne ihtiyacı vardır | +| 21 | `wrapStreamFn` | Genel sarmalayıcılar uygulandıktan sonra akış sarmalayıcısı uygular | Sağlayıcının özel bir taşıma olmadan istek üst bilgisi/gövdesi/model uyumluluk sarmalayıcılarına ihtiyacı vardır | +| 22 | `resolveTransportTurnState` | Yerel tur başına taşıma üst bilgilerini veya meta verileri ekler | Sağlayıcı, genel taşımaların sağlayıcıya özgü tur kimliğini göndermesini ister | +| 23 | `resolveWebSocketSessionPolicy` | Yerel WebSocket üst bilgilerini veya oturum soğuma ilkesini ekler | Sağlayıcı, genel WS taşımalarının oturum üst bilgilerini veya geri dönüş ilkesini ayarlamasını ister | +| 24 | `formatApiKey` | Kimlik doğrulama profili biçimlendiricisi: depolanan profil çalışma zamanı `apiKey` dizesine dönüşür | Sağlayıcı ek kimlik doğrulama meta verileri depolar ve özel bir çalışma zamanı belirteci biçimine ihtiyaç duyar | +| 25 | `refreshOAuth` | Özel yenileme uç noktaları veya yenileme başarısızlığı ilkesi için OAuth yenileme geçersiz kılması | Sağlayıcı paylaşılan `pi-ai` yenileyicilerine uymaz | +| 26 | `buildAuthDoctorHint` | OAuth yenilemesi başarısız olduğunda eklenen onarım ipucu | Sağlayıcının yenileme başarısızlığından sonra sağlayıcıya ait kimlik doğrulama onarım yönlendirmesine ihtiyacı vardır | +| 27 | `matchesContextOverflowError` | Sağlayıcıya ait bağlam penceresi taşması eşleyicisi | Sağlayıcının genel sezgisel yöntemlerin kaçıracağı ham taşma hataları vardır | +| 28 | `classifyFailoverReason` | Sağlayıcıya ait yük devretme nedeni sınıflandırması | Sağlayıcı ham API/taşıma hatalarını hız sınırı/aşırı yük/vb. nedenlere eşleyebilir | +| 29 | `isCacheTtlEligible` | Vekil/geri taşıma sağlayıcıları için istem önbelleği ilkesi | Sağlayıcının vekile özgü önbellek TTL geçitlemesine ihtiyacı vardır | +| 30 | `buildMissingAuthMessage` | Genel eksik kimlik doğrulama kurtarma iletisinin yerine geçer | Sağlayıcının sağlayıcıya özgü bir eksik kimlik doğrulama kurtarma ipucuna ihtiyacı vardır | +| 31 | `suppressBuiltInModel` | Eski yukarı akış modelini bastırma ve isteğe bağlı kullanıcıya dönük hata ipucu | Sağlayıcının eski yukarı akış satırlarını gizlemesi veya bunları bir satıcı ipucuyla değiştirmesi gerekir | +| 32 | `augmentModelCatalog` | Keşiften sonra sentetik/nihai katalog satırları eklenir | Sağlayıcının `models list` ve seçicilerde sentetik ileriye dönük uyumluluk satırlarına ihtiyacı vardır | +| 33 | `isBinaryThinking` | İkili düşünme sağlayıcıları için aç/kapat akıl yürütme geçişi | Sağlayıcı yalnızca ikili düşünmeyi aç/kapat olarak sunar | +| 34 | `supportsXHighThinking` | Seçili modeller için `xhigh` akıl yürütme desteği | Sağlayıcı yalnızca belirli bir model alt kümesinde `xhigh` ister | +| 35 | `resolveDefaultThinkingLevel` | Belirli bir model ailesi için varsayılan `/think` düzeyi | Sağlayıcı, bir model ailesi için varsayılan `/think` ilkesinin sahibidir | +| 36 | `isModernModelRef` | Canlı profil filtreleri ve smoke seçimi için modern model eşleyicisi | Sağlayıcı, canlı/smoke tercih edilen model eşleştirmesinin sahibidir | +| 37 | `prepareRuntimeAuth` | Yapılandırılmış bir kimlik bilgisini çıkarımdan hemen önce gerçek çalışma zamanı belirtecine/anahtarına dönüştürür | Sağlayıcının bir belirteç değişimine veya kısa ömürlü istek kimlik bilgisine ihtiyacı vardır | | 38 | `resolveUsageAuth` | `/usage` ve ilgili durum yüzeyleri için kullanım/faturalama kimlik bilgilerini çözümler | Sağlayıcının özel kullanım/kota belirteci ayrıştırmasına veya farklı bir kullanım kimlik bilgisine ihtiyacı vardır | -| 39 | `fetchUsageSnapshot` | Kimlik doğrulama çözüldükten sonra sağlayıcıya özgü kullanım/kota anlık görüntülerini getirip normalize eder | Sağlayıcının sağlayıcıya özgü bir kullanım uç noktasına veya yük ayrıştırıcısına ihtiyacı vardır | -| 40 | `createEmbeddingProvider` | Bellek/arama için sağlayıcıya ait bir embedding bağdaştırıcısı oluşturur | Bellek embedding davranışı sağlayıcı Plugin’ine ait olmalıdır | -| 41 | `buildReplayPolicy` | Sağlayıcı için döküm işleme sürecini kontrol eden bir replay ilkesi döndürür | Sağlayıcının özel döküm ilkesi gereksinimi vardır (örneğin, düşünme bloğu ayıklama) | -| 42 | `sanitizeReplayHistory` | Genel döküm temizliğinden sonra replay geçmişini yeniden yazar | Sağlayıcının, paylaşılan Compaction yardımcılarının ötesinde sağlayıcıya özgü replay yeniden yazımlarına ihtiyacı vardır | -| 43 | `validateReplayTurns` | Gömülü çalıştırıcıdan önce replay turları için son doğrulamayı veya yeniden şekillendirmeyi yapar | Sağlayıcı aktarımının, genel temizlemeden sonra daha sıkı tur doğrulamasına ihtiyacı vardır | -| 44 | `onModelSelected` | Sağlayıcıya ait seçim sonrası yan etkileri çalıştırır | Bir model etkin olduğunda sağlayıcının telemetriye veya sağlayıcıya ait duruma ihtiyacı vardır | +| 39 | `fetchUsageSnapshot` | Kimlik doğrulama çözüldükten sonra sağlayıcıya özgü kullanım/kota anlık görüntülerini alır ve normalize eder | Sağlayıcının sağlayıcıya özgü bir kullanım uç noktasına veya yük ayrıştırıcısına ihtiyacı vardır | +| 40 | `createEmbeddingProvider` | Bellek/arama için sağlayıcıya ait bir gömme bağdaştırıcısı oluşturur | Bellek gömme davranışı sağlayıcı Plugin'i ile birlikte bulunmalıdır | +| 41 | `buildReplayPolicy` | Sağlayıcı için döküm işlemesini denetleyen bir yeniden oynatma ilkesi döndürür | Sağlayıcının özel döküm ilkesine ihtiyacı vardır (örneğin, düşünme bloklarını çıkarma) | +| 42 | `sanitizeReplayHistory` | Genel döküm temizliğinden sonra yeniden oynatma geçmişini yeniden yazar | Sağlayıcının paylaşılan Compaction yardımcılarının ötesinde sağlayıcıya özgü yeniden oynatma yeniden yazımlarına ihtiyacı vardır | +| 43 | `validateReplayTurns` | Gömülü çalıştırıcıdan önce son yeniden oynatma turu doğrulaması veya yeniden şekillendirmesi yapar | Sağlayıcı taşımasının genel temizlemeden sonra daha sıkı tur doğrulamasına ihtiyacı vardır | +| 44 | `onModelSelected` | Sağlayıcıya ait seçim sonrası yan etkileri çalıştırır | Sağlayıcının, bir model etkin olduğunda telemetriye veya sağlayıcıya ait duruma ihtiyacı vardır | `normalizeModelId`, `normalizeTransport` ve `normalizeConfig` önce eşleşen -sağlayıcı Plugin’ini kontrol eder, ardından model kimliğini veya aktarımı/config’i gerçekten değiştiren bir Plugin bulana kadar -kanca destekli diğer sağlayıcı Pluginlerine düşer. Bu, çağıranın hangi -paketlenmiş Plugin’in yeniden yazımın sahibi olduğunu bilmesini gerektirmeden -takma ad/uyumluluk sağlayıcı şimlerinin çalışmasını sağlar. Hiçbir sağlayıcı kancası desteklenen bir -Google ailesi config girdisini yeniden yazmazsa, paketlenmiş Google config -normalleştiricisi yine de bu uyumluluk temizliğini uygular. +sağlayıcı Plugin'ini denetler, ardından model kimliğini veya taşıma/yapılandırmayı gerçekten değiştiren biri bulunana kadar +kanca yeteneğine sahip diğer sağlayıcı Plugin'lerine düşer. Bu, çağıranın +hangi paketlenmiş Plugin'in yeniden yazımın sahibi olduğunu bilmesini gerektirmeden takma ad/uyumluluk +sağlayıcı şimlerinin çalışmasını sürdürür. Hiçbir sağlayıcı kancası desteklenen bir +Google ailesi yapılandırma girdisini yeniden yazmazsa, paketlenmiş Google yapılandırma normalleştiricisi yine de +bu uyumluluk temizliğini uygular. -Sağlayıcının bütünüyle özel bir tel protokolüne veya özel bir istek yürütücüsüne ihtiyacı varsa, -bu farklı bir uzantı sınıfıdır. Bu kancalar, hâlâ OpenClaw’ın normal -çıkarım döngüsü üzerinde çalışan sağlayıcı davranışları içindir. +Sağlayıcının tamamen özel bir tel protokolüne veya özel bir istek yürütücüsüne ihtiyacı varsa, +bu farklı bir uzantı sınıfıdır. Bu kancalar, hâlâ +OpenClaw'ın normal çıkarım döngüsünde çalışan sağlayıcı davranışı içindir. ### Sağlayıcı örneği @@ -793,118 +809,121 @@ api.registerProvider({ ### Yerleşik örnekler -- Anthropic, `resolveDynamicModel`, `capabilities`, `buildAuthDoctorHint`, +- Anthropic; Claude 4.6 ileriye dönük uyumluluğun, sağlayıcı ailesi ipuçlarının, + kimlik doğrulama onarım yönlendirmesinin, kullanım uç noktası entegrasyonunun, + istem önbelleği uygunluğunun, kimlik doğrulama farkında yapılandırma varsayılanlarının, Claude + varsayılan/uyarlanabilir düşünme ilkesinin ve beta üst bilgileri, + `/fast` / `serviceTier` ve `context1m` için Anthropic'e özgü akış şekillendirmenin + sahibi olduğu için `resolveDynamicModel`, `capabilities`, `buildAuthDoctorHint`, `resolveUsageAuth`, `fetchUsageSnapshot`, `isCacheTtlEligible`, `resolveDefaultThinkingLevel`, `applyConfigDefaults`, `isModernModelRef` - ve `wrapStreamFn` kullanır; çünkü Claude 4.6 ileri uyumluluğunun, - sağlayıcı ailesi ipuçlarının, kimlik doğrulama onarım rehberliğinin, kullanım uç noktası entegrasyonunun, - istem önbelleği uygunluğunun, kimlik doğrulamaya duyarlı config varsayılanlarının, Claude - varsayılan/uyarlamalı düşünme ilkesinin ve beta üstbilgileri, - `/fast` / `serviceTier` ve `context1m` için Anthropic’e özgü akış şekillendirmenin sahibidir. -- Anthropic’in Claude’a özgü akış yardımcıları şimdilik paketlenmiş Plugin’in kendi - genel `api.ts` / `contract-api.ts` hattında kalır. Bu paket yüzeyi, - genel SDK’yı tek bir sağlayıcının beta üstbilgisi kuralları etrafında genişletmek yerine + ve `wrapStreamFn` kullanır. +- Anthropic'in Claude'a özgü akış yardımcıları şimdilik paketlenmiş Plugin'in kendi + genel `api.ts` / `contract-api.ts` sınırında kalır. Bu paket yüzeyi, + genel SDK'yı tek bir sağlayıcının beta üst bilgisi kuralları etrafında genişletmek yerine `wrapAnthropicProviderStream`, `resolveAnthropicBetas`, - `resolveAnthropicFastMode`, `resolveAnthropicServiceTier` ve daha düşük seviyeli + `resolveAnthropicFastMode`, `resolveAnthropicServiceTier` ve daha alt düzey Anthropic sarmalayıcı oluşturucularını dışa aktarır. -- OpenAI, `resolveDynamicModel`, `normalizeResolvedModel` ve +- OpenAI; GPT-5.4 ileriye dönük uyumluluğunun, doğrudan OpenAI + `openai-completions` -> `openai-responses` normalizasyonunun, Codex farkında kimlik doğrulama + ipuçlarının, Spark bastırmasının, sentetik OpenAI liste satırlarının ve GPT-5 düşünme / + canlı model ilkesinin sahibi olduğu için `resolveDynamicModel`, `normalizeResolvedModel` ve `capabilities` ile birlikte `buildMissingAuthMessage`, `suppressBuiltInModel`, `augmentModelCatalog`, `supportsXHighThinking` ve `isModernModelRef` - kullanır; çünkü GPT-5.4 ileri uyumluluğunun, doğrudan OpenAI - `openai-completions` -> `openai-responses` normalizasyonunun, Codex farkındalığı olan kimlik doğrulama - ipuçlarının, Spark bastırmanın, sentetik OpenAI liste satırlarının ve GPT-5 düşünme / - canlı model ilkesinin sahibidir; `openai-responses-defaults` akış ailesi ise atıf üstbilgileri, - `/fast`/`serviceTier`, metin ayrıntı düzeyi, yerel Codex web araması, + kullanır; `openai-responses-defaults` akış ailesi ise atıf üst bilgileri, + `/fast`/`serviceTier`, metin ayrıntı düzeyi, yerel Codex web arama, akıl yürütme uyumluluğu yük şekillendirmesi ve Responses bağlam yönetimi için paylaşılan yerel OpenAI Responses sarmalayıcılarının sahibidir. -- OpenRouter, sağlayıcı geçişli olduğu ve OpenClaw’ın statik kataloğu güncellenmeden önce yeni - model kimlikleri açığa çıkarabileceği için `catalog` ile birlikte `resolveDynamicModel` ve - `prepareDynamicModel` kullanır; ayrıca sağlayıcıya özgü istek üstbilgilerini, yönlendirme meta verilerini, akıl yürütme yamalarını ve - istem önbelleği ilkesini çekirdeğin dışında tutmak için - `capabilities`, `wrapStreamFn` ve `isCacheTtlEligible` de kullanır. Replay ilkesi +- OpenRouter; sağlayıcı geçişli olduğu ve OpenClaw'ın statik kataloğu güncellenmeden önce + yeni model kimlikleri açığa çıkarabileceği için `catalog` ile birlikte + `resolveDynamicModel` ve `prepareDynamicModel` kullanır; ayrıca sağlayıcıya özgü + istek üst bilgilerini, yönlendirme meta verilerini, akıl yürütme yamalarını ve + istem önbelleği ilkesini çekirdek dışında tutmak için `capabilities`, `wrapStreamFn` ve + `isCacheTtlEligible` de kullanır. Yeniden oynatma ilkesi `passthrough-gemini` ailesinden gelirken, `openrouter-thinking` akış ailesi - vekil akıl yürütme enjeksiyonunun ve desteklenmeyen model / `auto` atlamalarının sahibidir. -- GitHub Copilot, sağlayıcıya ait cihaz oturumu açma, model geri dönüş davranışı, Claude döküm farkları, - GitHub belirteci -> Copilot belirteci değişimi ve sağlayıcıya ait kullanım uç noktası gerektiği için - `catalog`, `auth`, `resolveDynamicModel` ve `capabilities` ile birlikte - `prepareRuntimeAuth` ve `fetchUsageSnapshot` kullanır. -- OpenAI Codex, hâlâ çekirdek OpenAI aktarımları üzerinde çalışmasına rağmen kendi aktarım/temel URL - normalizasyonunun, OAuth yenileme geri dönüş ilkesinin, varsayılan aktarım seçiminin, + vekil akıl yürütme eklemesinin ve desteklenmeyen model / `auto` atlamalarının sahibidir. +- GitHub Copilot; sağlayıcıya ait cihaz oturumu açma, model geri dönüş davranışı, Claude döküm + tuhaflıkları, GitHub belirteci -> Copilot belirteci değişimi ve sağlayıcıya ait bir kullanım + uç noktasına ihtiyaç duyduğu için `catalog`, `auth`, `resolveDynamicModel` ve + `capabilities` ile birlikte `prepareRuntimeAuth` ve `fetchUsageSnapshot` kullanır. +- OpenAI Codex; hâlâ çekirdek OpenAI taşımalarında çalışmasına rağmen kendi taşıma/temel URL + normalizasyonunun, OAuth yenileme geri dönüş ilkesinin, varsayılan taşıma seçiminin, sentetik Codex katalog satırlarının ve ChatGPT kullanım uç noktası entegrasyonunun sahibi olduğu için `catalog`, `resolveDynamicModel`, `normalizeResolvedModel`, `refreshOAuth` ve `augmentModelCatalog` ile birlikte `prepareExtraParams`, `resolveUsageAuth` ve `fetchUsageSnapshot` kullanır; doğrudan OpenAI ile aynı `openai-responses-defaults` akış ailesini paylaşır. -- Google AI Studio ve Gemini CLI OAuth, `google-gemini` replay ailesi Gemini 3.1 ileri uyumluluk geri dönüşünün, - yerel Gemini replay doğrulamasının, önyükleme replay temizliğinin, - etiketli akıl yürütme çıktısı modunun ve modern model eşlemesinin sahibi olduğu için +- Google AI Studio ve Gemini CLI OAuth; `google-gemini` + yeniden oynatma ailesi Gemini 3.1 ileriye dönük uyumluluk geri dönüşünün, + yerel Gemini yeniden oynatma doğrulamasının, önyükleme yeniden oynatma temizliğinin, etiketli + akıl yürütme çıktısı kipinin ve modern model eşleştirmenin sahibi olduğu; `google-thinking` + akış ailesi ise Gemini düşünme yükü normalizasyonunun sahibi olduğu için `resolveDynamicModel`, `buildReplayPolicy`, `sanitizeReplayHistory`, `resolveReasoningOutputMode`, `wrapStreamFn` ve `isModernModelRef` kullanır; - `google-thinking` akış ailesi ise Gemini düşünme yükü normalizasyonunun sahibidir; Gemini CLI OAuth ayrıca belirteç biçimlendirme, belirteç ayrıştırma ve kota uç noktası - kablolaması için `formatApiKey`, `resolveUsageAuth` ve + bağlama için `formatApiKey`, `resolveUsageAuth` ve `fetchUsageSnapshot` kullanır. -- Anthropic Vertex, Claude’a özgü replay temizliği her `anthropic-messages` aktarımı yerine - Claude kimlikleriyle sınırlı kalsın diye - `anthropic-by-model` replay ailesi aracılığıyla `buildReplayPolicy` kullanır. -- Amazon Bedrock, Anthropic-on-Bedrock trafiği için Bedrock’a özgü - boğma/hazır değil/bağlam taşması hata sınıflandırmasının sahibi olduğu için +- Anthropic Vertex; Claude'a özgü yeniden oynatma temizliğinin her `anthropic-messages` + taşıması yerine Claude kimlikleriyle sınırlı kalması için + `anthropic-by-model` yeniden oynatma ailesi üzerinden `buildReplayPolicy` kullanır. +- Amazon Bedrock; Anthropic-on-Bedrock trafiği için + Bedrock'a özgü daraltma/hazır değil/bağlam taşması hata sınıflandırmasının sahibi olduğu için `buildReplayPolicy`, `matchesContextOverflowError`, `classifyFailoverReason` ve `resolveDefaultThinkingLevel` kullanır; - replay ilkesi yine aynı yalnızca Claude’a özgü `anthropic-by-model` korumasını paylaşır. -- OpenRouter, Kilocode, Opencode ve Opencode Go, - Gemini modellerini OpenAI uyumlu aktarımlar üzerinden vekilleyip yerel Gemini replay doğrulaması veya - önyükleme yeniden yazımları olmadan Gemini düşünce imzası temizliğine ihtiyaç duydukları için - `passthrough-gemini` replay ailesi aracılığıyla `buildReplayPolicy` - kullanır. -- MiniMax, tek bir sağlayıcı hem Anthropic-message hem de OpenAI uyumlu anlamların sahibi olduğu için - `hybrid-anthropic-openai` replay ailesi aracılığıyla `buildReplayPolicy` - kullanır; Anthropic tarafında yalnızca Claude’a özgü düşünme bloğu düşürmeyi sürdürürken akıl yürütme - çıktısı modunu tekrar yerel olana geçersiz kılar ve `minimax-fast-mode` akış ailesi - paylaşılan akış yolunda hızlı mod model yeniden yazımlarının sahibidir. -- Moonshot, hâlâ paylaşılan OpenAI aktarımını kullanmasına rağmen sağlayıcıya ait düşünme yükü normalizasyonuna ihtiyaç duyduğu için - `catalog` ile birlikte `wrapStreamFn` kullanır; `moonshot-thinking` akış ailesi - config artı `/think` durumunu kendi yerel ikili düşünme yüküne eşler. -- Kilocode, sağlayıcıya ait istek üstbilgilerine, + yeniden oynatma ilkesi hâlâ aynı yalnızca Claude `anthropic-by-model` korumasını paylaşır. +- OpenRouter, Kilocode, Opencode ve Opencode Go; + Gemini modellerini OpenAI uyumlu taşımalar üzerinden vekil ettikleri ve + yerel Gemini yeniden oynatma doğrulaması veya önyükleme yeniden yazımları olmadan + Gemini düşünce imzası temizliğine ihtiyaç duydukları için + `passthrough-gemini` yeniden oynatma ailesi üzerinden `buildReplayPolicy` kullanır. +- MiniMax; bir sağlayıcı hem Anthropic iletileri hem de OpenAI uyumlu anlambilimin + sahibi olduğu için `hybrid-anthropic-openai` yeniden oynatma ailesi üzerinden + `buildReplayPolicy` kullanır; Anthropic tarafında yalnızca Claude düşünme bloğu + düşürmesini korurken akıl yürütme çıktı kipini yeniden yerel hâle getirir ve + `minimax-fast-mode` akış ailesi paylaşılan akış yolunda hızlı kip model yeniden yazımlarının + sahibidir. +- Moonshot; hâlâ paylaşılan OpenAI taşımasını kullanmasına rağmen sağlayıcıya ait düşünme yükü + normalizasyonuna ihtiyaç duyduğu için `catalog` ile birlikte `wrapStreamFn` kullanır; + `moonshot-thinking` akış ailesi yapılandırma ile `/think` durumunu + kendi yerel ikili düşünme yüküne eşler. +- Kilocode; sağlayıcıya ait istek üst bilgilerine, akıl yürütme yükü normalizasyonuna, Gemini döküm ipuçlarına ve Anthropic önbellek TTL geçitlemesine ihtiyaç duyduğu için `catalog`, `capabilities`, `wrapStreamFn` ve - `isCacheTtlEligible` kullanır; `kilocode-thinking` akış ailesi Kilo düşünme - enjeksiyonunu paylaşılan vekil akış yolunda tutarken `kilo/auto` ve - açık akıl yürütme yüklerini desteklemeyen diğer vekil model kimliklerini atlar. -- Z.AI, GLM-5 geri dönüşünün, - `tool_stream` varsayılanlarının, ikili düşünme UX’inin, modern model eşlemesinin ve hem - kullanım kimlik doğrulamasının hem de kota getirmesinin sahibi olduğu için - `resolveDynamicModel`, `prepareExtraParams`, `wrapStreamFn`, + `isCacheTtlEligible` kullanır; `kilocode-thinking` akış ailesi ise + açık akıl yürütme yüklerini desteklemeyen `kilo/auto` ve diğer vekil model kimliklerini atlayarak + paylaşılan vekil akış yolunda Kilo düşünme eklemesini tutar. +- Z.AI; GLM-5 geri dönüşünün, + `tool_stream` varsayılanlarının, ikili düşünme kullanıcı deneyiminin, modern model eşleştirmenin ve hem + kullanım kimlik doğrulaması + kota getirme işlemlerinin sahibi olduğu için `resolveDynamicModel`, `prepareExtraParams`, `wrapStreamFn`, `isCacheTtlEligible`, `isBinaryThinking`, `isModernModelRef`, - `resolveUsageAuth` ve `fetchUsageSnapshot` kullanır; `tool-stream-default-on` akış ailesi - varsayılan açık `tool_stream` sarmalayıcısını sağlayıcı başına elle yazılmış yapıştırma kodunun dışında tutar. -- xAI, yerel xAI Responses aktarım normalizasyonunun, Grok hızlı mod - takma ad yeniden yazımlarının, varsayılan `tool_stream` değerinin, strict-tool / akıl yürütme yükü - temizliğinin, Plugin’e ait araçlar için geri dönüş kimlik doğrulama yeniden kullanımının, ileri uyumluluklu Grok - model çözümlemesinin ve xAI araç şeması - profili, desteklenmeyen şema anahtar sözcükleri, yerel `web_search` ve HTML varlık - araç çağrısı argüman kod çözümü gibi sağlayıcıya ait uyumluluk yamalarının sahibi olduğu için + `resolveUsageAuth` ve `fetchUsageSnapshot` kullanır; `tool-stream-default-on` akış ailesi ise + varsayılan açık `tool_stream` sarmalayıcısını sağlayıcı başına el yazımı yapıştırıcıdan uzak tutar. +- xAI; yerel xAI Responses taşıma normalizasyonunun, Grok hızlı kip + takma ad yeniden yazımlarının, varsayılan `tool_stream` değerinin, katı araç / akıl yürütme yükü + temizliğinin, Plugin'e ait araçlar için geri dönüş kimlik doğrulama yeniden kullanımının, ileriye dönük uyumlu Grok + model çözümlemesinin ve xAI araç şema profili, + desteklenmeyen şema anahtar sözcükleri, yerel `web_search` ve HTML varlık + araç çağrısı argüman çözümleme gibi sağlayıcıya ait uyumluluk yamalarının sahibi olduğu için `normalizeResolvedModel`, `normalizeTransport`, `contributeResolvedModelCompat`, `prepareExtraParams`, `wrapStreamFn`, `resolveSyntheticAuth`, `resolveDynamicModel` ve `isModernModelRef` kullanır. -- Mistral, OpenCode Zen ve OpenCode Go, döküm/araç farklarını çekirdeğin dışında tutmak için yalnızca - `capabilities` kullanır. +- Mistral, OpenCode Zen ve OpenCode Go; döküm/araç tuhaflıklarını çekirdekten uzak tutmak için + yalnızca `capabilities` kullanır. - `byteplus`, `cloudflare-ai-gateway`, `huggingface`, `kimi-coding`, `nvidia`, `qianfan`, `synthetic`, `together`, `venice`, `vercel-ai-gateway` ve `volcengine` gibi - yalnızca katalog kullanan paketlenmiş sağlayıcılar - yalnızca `catalog` kullanır. -- Qwen, metin sağlayıcısı için `catalog`, çok modlu yüzeyleri için ise paylaşılan medya anlama ve - video oluşturma kayıtlarını kullanır. -- MiniMax ve Xiaomi, `/usage` - davranışları Plugin’e ait olsa da çıkarım hâlâ paylaşılan aktarımlar üzerinden çalıştığı için - `catalog` ile birlikte kullanım kancalarını kullanır. + yalnızca katalog içeren paketlenmiş sağlayıcılar sadece `catalog` kullanır. +- Qwen; metin sağlayıcısı için `catalog` ile birlikte, çok kipli yüzeyleri için + paylaşılan medya-anlama ve video-oluşturma kayıtlarını kullanır. +- MiniMax ve Xiaomi, çıkarım hâlâ paylaşılan + taşımalar üzerinden çalışsa bile `/usage` davranışları Plugin'e ait olduğu için + `catalog` ile birlikte kullanım kancaları kullanır. ## Çalışma zamanı yardımcıları -Pluginler `api.runtime` aracılığıyla seçili çekirdek yardımcılarına erişebilir. TTS için: +Plugin'ler seçili çekirdek yardımcılarına `api.runtime` üzerinden erişebilir. TTS için: ```ts const clip = await api.runtime.tts.textToSpeech({ @@ -927,12 +946,12 @@ Notlar: - `textToSpeech`, dosya/sesli not yüzeyleri için normal çekirdek TTS çıktı yükünü döndürür. - Çekirdek `messages.tts` yapılandırmasını ve sağlayıcı seçimini kullanır. -- PCM ses arabelleği + örnekleme oranı döndürür. Pluginler sağlayıcılar için yeniden örnekleme/kodlama yapmalıdır. -- `listVoices`, sağlayıcı başına isteğe bağlıdır. Bunu satıcıya ait ses seçiciler veya kurulum akışları için kullanın. -- Ses listeleri, sağlayıcı farkındalığı olan seçiciler için yerel ayar, cinsiyet ve kişilik etiketleri gibi daha zengin meta veriler içerebilir. -- OpenAI ve ElevenLabs bugün telefon desteğine sahiptir. Microsoft sahip değildir. +- PCM ses arabelleği + örnekleme hızı döndürür. Plugin'ler sağlayıcılar için yeniden örnekleme/kodlama yapmalıdır. +- `listVoices`, sağlayıcı başına isteğe bağlıdır. Satıcıya ait ses seçiciler veya kurulum akışları için kullanın. +- Ses listeleri, sağlayıcı farkında seçiciler için yerel ayar, cinsiyet ve kişilik etiketleri gibi daha zengin meta veriler içerebilir. +- OpenAI ve ElevenLabs bugün telefonu destekler. Microsoft desteklemez. -Pluginler ayrıca `api.registerSpeechProvider(...)` aracılığıyla konuşma sağlayıcıları kaydedebilir. +Plugin'ler ayrıca `api.registerSpeechProvider(...)` aracılığıyla konuşma sağlayıcıları da kaydedebilir. ```ts api.registerSpeechProvider({ @@ -953,13 +972,14 @@ api.registerSpeechProvider({ Notlar: - TTS ilkesini, geri dönüşü ve yanıt teslimini çekirdekte tutun. -- Satıcıya ait sentez davranışı için konuşma sağlayıcıları kullanın. +- Satıcıya ait sentez davranışı için konuşma sağlayıcılarını kullanın. - Eski Microsoft `edge` girdisi `microsoft` sağlayıcı kimliğine normalize edilir. -- Tercih edilen sahiplik modeli şirket odaklıdır: tek bir satıcı Plugin’i, - OpenClaw bu yetenek sözleşmelerini ekledikçe metin, konuşma, görüntü ve gelecekte medya sağlayıcılarının sahibi olabilir. +- Tercih edilen sahiplik modeli şirket odaklıdır: OpenClaw bu + yetenek sözleşmelerini ekledikçe tek bir satıcı Plugin'i metin, konuşma, görüntü ve gelecekteki medya sağlayıcılarının + sahibi olabilir. -Görüntü/ses/video anlama için, Pluginler genel bir anahtar/değer torbası yerine -tek bir tipli medya anlama sağlayıcısı kaydeder: +Görüntü/ses/video anlama için, Plugin'ler genel bir anahtar/değer torbası yerine +türlendirilmiş tek bir medya-anlama sağlayıcısı kaydeder: ```ts api.registerMediaUnderstandingProvider({ @@ -973,16 +993,16 @@ api.registerMediaUnderstandingProvider({ Notlar: -- Orkestrasyonu, geri dönüşü, yapılandırmayı ve kanal bağlamasını çekirdekte tutun. -- Satıcı davranışını sağlayıcı Plugin’inde tutun. -- Eklemeli genişleme tipli kalmalıdır: yeni isteğe bağlı yöntemler, yeni isteğe bağlı +- Orkestrasyonu, geri dönüşü, yapılandırmayı ve kanal kablolamasını çekirdekte tutun. +- Satıcı davranışını sağlayıcı Plugin'inde tutun. +- Toplamalı genişleme türlendirilmiş kalmalıdır: yeni isteğe bağlı yöntemler, yeni isteğe bağlı sonuç alanları, yeni isteğe bağlı yetenekler. -- Video oluşturma zaten aynı kalıbı izler: +- Video oluşturma zaten aynı deseni izler: - çekirdek yetenek sözleşmesinin ve çalışma zamanı yardımcısının sahibidir - - satıcı Pluginleri `api.registerVideoGenerationProvider(...)` kaydeder - - özellik/kanal Pluginleri `api.runtime.videoGeneration.*` kullanır + - satıcı Plugin'leri `api.registerVideoGenerationProvider(...)` kaydeder + - özellik/kanal Plugin'leri `api.runtime.videoGeneration.*` tüketir -Medya anlama çalışma zamanı yardımcıları için Pluginler şunları çağırabilir: +Medya-anlama çalışma zamanı yardımcıları için Plugin'ler şunları çağırabilir: ```ts const image = await api.runtime.mediaUnderstanding.describeImageFile({ @@ -997,8 +1017,8 @@ const video = await api.runtime.mediaUnderstanding.describeVideoFile({ }); ``` -Ses yazıya dökümü için Pluginler medya anlama çalışma zamanını -veya eski STT takma adını kullanabilir: +Ses deşifresi için Plugin'ler ya medya-anlama çalışma zamanını +ya da eski STT takma adını kullanabilir: ```ts const { text } = await api.runtime.mediaUnderstanding.transcribeAudioFile({ @@ -1011,13 +1031,13 @@ const { text } = await api.runtime.mediaUnderstanding.transcribeAudioFile({ Notlar: -- `api.runtime.mediaUnderstanding.*`, - görüntü/ses/video anlama için tercih edilen paylaşılan yüzeydir. -- Çekirdek medya anlama ses yapılandırmasını (`tools.media.audio`) ve sağlayıcı geri dönüş sırasını kullanır. -- Yazıya döküm çıktısı üretilmediğinde `{ text: undefined }` döndürür (örneğin giriş atlandığında/desteklenmediğinde). -- `api.runtime.stt.transcribeAudioFile(...)` bir uyumluluk takma adı olarak kalır. +- `api.runtime.mediaUnderstanding.*`, görüntü/ses/video anlama için + tercih edilen paylaşılan yüzeydir. +- Çekirdek medya-anlama ses yapılandırmasını (`tools.media.audio`) ve sağlayıcı geri dönüş sırasını kullanır. +- Deşifre çıktısı üretilmediğinde `{ text: undefined }` döndürür (örneğin atlanan/desteklenmeyen girdi). +- `api.runtime.stt.transcribeAudioFile(...)`, uyumluluk takma adı olarak kalır. -Pluginler ayrıca `api.runtime.subagent` aracılığıyla arka planda alt aracı çalıştırmaları başlatabilir: +Plugin'ler ayrıca `api.runtime.subagent` aracılığıyla arka plan alt aracı çalıştırmaları başlatabilir: ```ts const result = await api.runtime.subagent.run({ @@ -1031,14 +1051,14 @@ const result = await api.runtime.subagent.run({ Notlar: -- `provider` ve `model`, kalıcı oturum değişiklikleri değil, çalıştırma başına isteğe bağlı geçersiz kılmalardır. +- `provider` ve `model`, kalıcı oturum değişiklikleri değil, çalışma başına geçersiz kılmalardır. - OpenClaw bu geçersiz kılma alanlarını yalnızca güvenilir çağıranlar için dikkate alır. -- Plugin’e ait geri dönüş çalıştırmaları için operatörlerin `plugins.entries..subagent.allowModelOverride: true` ile açıkça izin vermesi gerekir. -- Güvenilir Pluginleri belirli kanonik `provider/model` hedefleriyle sınırlamak için `plugins.entries..subagent.allowedModels` kullanın veya herhangi bir hedefe açıkça izin vermek için `"*"` kullanın. -- Güvenilmeyen Plugin alt aracı çalıştırmaları yine çalışır, ancak geçersiz kılma istekleri sessizce geri düşmek yerine reddedilir. +- Plugin'e ait geri dönüş çalıştırmaları için operatörlerin `plugins.entries..subagent.allowModelOverride: true` ile açıkça izin vermesi gerekir. +- Güvenilir Plugin'leri belirli standart `provider/model` hedefleriyle sınırlandırmak için `plugins.entries..subagent.allowedModels` kullanın veya herhangi bir hedefe açıkça izin vermek için `"*"` kullanın. +- Güvenilmeyen Plugin alt aracı çalıştırmaları yine de çalışır, ancak geçersiz kılma istekleri sessizce geri dönmek yerine reddedilir. -Web araması için Pluginler, aracı araç bağlamasına -uzanmak yerine paylaşılan çalışma zamanı yardımcısını kullanabilir: +Web arama için Plugin'ler, aracı araç kablolamasına erişmek yerine +paylaşılan çalışma zamanı yardımcısını tüketebilir: ```ts const providers = api.runtime.webSearch.listProviders({ @@ -1054,14 +1074,14 @@ const result = await api.runtime.webSearch.search({ }); ``` -Pluginler ayrıca şu yolla web arama sağlayıcıları kaydedebilir: -`api.registerWebSearchProvider(...)`. +Plugin'ler ayrıca +`api.registerWebSearchProvider(...)` aracılığıyla web arama sağlayıcıları da kaydedebilir. Notlar: -- Sağlayıcı seçimini, kimlik bilgisi çözümlemesini ve paylaşılan istek semantiğini çekirdekte tutun. -- Satıcıya özgü arama aktarımları için web arama sağlayıcılarını kullanın. -- `api.runtime.webSearch.*`, arama davranışına aracı araç sarmalayıcısına bağlı olmadan ihtiyaç duyan özellik/kanal Pluginleri için tercih edilen paylaşılan yüzeydir. +- Sağlayıcı seçimini, kimlik bilgisi çözümlemesini ve paylaşılan istek anlambilimini çekirdekte tutun. +- Satıcıya özgü arama taşımaları için web arama sağlayıcılarını kullanın. +- `api.runtime.webSearch.*`, arama davranışına aracı araç sarmalayıcısına bağımlı olmadan ihtiyaç duyan özellik/kanal Plugin'leri için tercih edilen paylaşılan yüzeydir. ### `api.runtime.imageGeneration` @@ -1079,9 +1099,9 @@ const providers = api.runtime.imageGeneration.listProviders({ - `generate(...)`: yapılandırılmış görüntü oluşturma sağlayıcı zincirini kullanarak bir görüntü oluşturur. - `listProviders(...)`: kullanılabilir görüntü oluşturma sağlayıcılarını ve yeteneklerini listeler. -## Gateway HTTP yolları +## Gateway HTTP rotaları -Pluginler `api.registerHttpRoute(...)` ile HTTP uç noktaları açığa çıkarabilir. +Plugin'ler `api.registerHttpRoute(...)` ile HTTP uç noktaları açığa çıkarabilir. ```ts api.registerHttpRoute({ @@ -1096,26 +1116,26 @@ api.registerHttpRoute({ }); ``` -Yol alanları: +Rota alanları: -- `path`: Gateway HTTP sunucusu altındaki yol. -- `auth`: zorunlu. Normal Gateway kimlik doğrulamasını istemek için `"gateway"` veya Plugin tarafından yönetilen kimlik doğrulama/Webhook doğrulaması için `"plugin"` kullanın. +- `path`: gateway HTTP sunucusu altındaki rota yolu. +- `auth`: zorunlu. Normal gateway kimlik doğrulaması gerektirmek için `"gateway"` veya Plugin tarafından yönetilen kimlik doğrulama/Webhook doğrulaması için `"plugin"` kullanın. - `match`: isteğe bağlı. `"exact"` (varsayılan) veya `"prefix"`. -- `replaceExisting`: isteğe bağlı. Aynı Plugin’in kendi mevcut yol kaydını değiştirmesine izin verir. -- `handler`: yol isteği işlediyse `true` döndürmelidir. +- `replaceExisting`: isteğe bağlı. Aynı Plugin'in mevcut kendi rota kaydını değiştirmesine izin verir. +- `handler`: rota isteği işlediğinde `true` döndürmelidir. Notlar: -- `api.registerHttpHandler(...)` kaldırılmıştır ve Plugin yükleme hatasına neden olur. Bunun yerine `api.registerHttpRoute(...)` kullanın. -- Plugin yolları `auth` değerini açıkça belirtmelidir. -- Aynı `path + match` çakışmaları, `replaceExisting: true` olmadıkça reddedilir ve bir Plugin başka bir Plugin’in yolunu değiştiremez. -- Farklı `auth` düzeylerine sahip çakışan yollar reddedilir. `exact`/`prefix` ardışık geçiş zincirlerini yalnızca aynı auth düzeyinde tutun. -- `auth: "plugin"` yolları otomatik olarak operatör çalışma zamanı kapsamları almaz. Bunlar ayrıcalıklı Gateway yardımcı çağrıları için değil, Plugin tarafından yönetilen Webhook’lar/imza doğrulaması içindir. -- `auth: "gateway"` yolları bir Gateway istek çalışma zamanı kapsamı içinde çalışır, ancak bu kapsam bilerek tutucudur: - - paylaşılan gizli taşıyıcı kimlik doğrulaması (`gateway.auth.mode = "token"` / `"password"`), çağıran `x-openclaw-scopes` gönderse bile Plugin-yolu çalışma zamanı kapsamlarını `operator.write` değerine sabitler - - güvenilir kimlik taşıyan HTTP modları (örneğin `trusted-proxy` veya özel bir girişte `gateway.auth.mode = "none"`), `x-openclaw-scopes` üstbilgisini yalnızca üstbilgi açıkça mevcutsa dikkate alır - - bu kimlik taşıyan Plugin-yolu isteklerinde `x-openclaw-scopes` yoksa çalışma zamanı kapsamı `operator.write` değerine geri döner -- Pratik kural: Gateway kimlik doğrulamalı bir Plugin yolunun örtük bir yönetici yüzeyi olduğunu varsaymayın. Yolunuz yalnızca yöneticiye ait davranış gerektiriyorsa, kimlik taşıyan bir kimlik doğrulama modu isteyin ve açık `x-openclaw-scopes` üstbilgisi sözleşmesini belgeleyin. +- `api.registerHttpHandler(...)` kaldırıldı ve Plugin yükleme hatasına neden olur. Bunun yerine `api.registerHttpRoute(...)` kullanın. +- Plugin rotaları `auth` değerini açıkça bildirmelidir. +- `replaceExisting: true` olmadığı sürece tam `path + match` çakışmaları reddedilir ve bir Plugin başka bir Plugin'in rotasını değiştiremez. +- Farklı `auth` düzeylerine sahip örtüşen rotalar reddedilir. `exact`/`prefix` düşüş zincirlerini yalnızca aynı kimlik doğrulama düzeyinde tutun. +- `auth: "plugin"` rotaları operatör çalışma zamanı kapsamlarını otomatik olarak **almaz**. Bunlar ayrıcalıklı Gateway yardımcı çağrıları için değil, Plugin tarafından yönetilen Webhook/imza doğrulaması içindir. +- `auth: "gateway"` rotaları bir Gateway istek çalışma zamanı kapsamı içinde çalışır, ancak bu kapsam kasıtlı olarak tutucudur: + - paylaşılan gizli taşıyıcı kimlik doğrulaması (`gateway.auth.mode = "token"` / `"password"`) Plugin rota çalışma zamanı kapsamlarını, çağıran `x-openclaw-scopes` gönderse bile `operator.write` üzerine sabitler + - güvenilir kimlik taşıyan HTTP kipleri (örneğin `trusted-proxy` veya özel girişte `gateway.auth.mode = "none"`) `x-openclaw-scopes` değerini yalnızca üst bilgi açıkça mevcutsa dikkate alır + - bu kimlik taşıyan Plugin rota isteklerinde `x-openclaw-scopes` yoksa çalışma zamanı kapsamı `operator.write` değerine geri döner +- Pratik kural: Gateway kimlik doğrulamalı bir Plugin rotasının örtük bir yönetici yüzeyi olduğunu varsaymayın. Rotanız yöneticiye özel davranış gerektiriyorsa, kimlik taşıyan bir kimlik doğrulama kipi zorunlu kılın ve açık `x-openclaw-scopes` üst bilgisi sözleşmesini belgeleyin. ## Plugin SDK içe aktarma yolları @@ -1123,7 +1143,7 @@ Plugin yazarken tek parça `openclaw/plugin-sdk` içe aktarımı yerine SDK alt yollarını kullanın: - Plugin kayıt ilkel öğeleri için `openclaw/plugin-sdk/plugin-entry`. -- Genel paylaşılan Plugin’e dönük sözleşme için `openclaw/plugin-sdk/core`. +- Genel paylaşılan Plugin'e dönük sözleşme için `openclaw/plugin-sdk/core`. - Kök `openclaw.json` Zod şeması dışa aktarımı (`OpenClawSchema`) için `openclaw/plugin-sdk/config-schema`. - `openclaw/plugin-sdk/channel-setup`, @@ -1139,14 +1159,14 @@ SDK alt yollarını kullanın: `openclaw/plugin-sdk/command-auth`, `openclaw/plugin-sdk/secret-input` ve `openclaw/plugin-sdk/webhook-ingress` gibi kararlı kanal ilkel öğeleri, paylaşılan kurulum/kimlik doğrulama/yanıt/Webhook - bağlaması içindir. `channel-inbound`, debounce, bahsetme eşleme, - gelen mention-policy yardımcıları, zarf biçimlendirme ve gelen zarf + kablolaması içindir. `channel-inbound`, debounce, mention eşleştirme, + gelen mention ilkesi yardımcıları, zarf biçimlendirme ve gelen zarf bağlam yardımcıları için paylaşılan yuvadır. - `channel-setup`, dar isteğe bağlı kurulum hattıdır. + `channel-setup`, dar isteğe bağlı kurulum sınırıdır. `setup-runtime`, `setupEntry` / - ertelenmiş başlatma tarafından kullanılan ve güvenli içe aktarmalı kurulum yama bağdaştırıcılarını da içeren çalışma zamanı güvenli kurulum yüzeyidir. - `setup-adapter-runtime`, ortama duyarlı hesap kurulumu bağdaştırıcı hattıdır. - `setup-tools`, küçük CLI/arşiv/belgeler yardımcı hattıdır (`formatCliCommand`, + ertelenmiş başlangıç tarafından kullanılan, içe aktarma açısından güvenli kurulum yama bağdaştırıcıları dahil çalışma zamanı açısından güvenli kurulum yüzeyidir. + `setup-adapter-runtime`, ortam farkında hesap kurulum bağdaştırıcı sınırıdır. + `setup-tools`, küçük CLI/arşiv/belgeler yardımcısı sınırıdır (`formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR`). - `openclaw/plugin-sdk/channel-config-helpers`, @@ -1167,194 +1187,196 @@ SDK alt yollarını kullanın: `openclaw/plugin-sdk/status-helpers`, `openclaw/plugin-sdk/text-runtime`, `openclaw/plugin-sdk/runtime-store` ve - `openclaw/plugin-sdk/directory-runtime` gibi alan alt yolları paylaşılan çalışma zamanı/config yardımcıları içindir. + `openclaw/plugin-sdk/directory-runtime` gibi alan alt yolları, paylaşılan çalışma zamanı/yapılandırma yardımcıları içindir. `telegram-command-config`, Telegram özel - komut normalizasyonu/doğrulaması için dar genel hattır ve paketlenmiş - Telegram sözleşme yüzeyi geçici olarak kullanılamadığında bile erişilebilir kalır. - `text-runtime`, asistan tarafından görülebilen metin ayıklama, + komut normalizasyonu/doğrulaması için dar genel sınırdır ve paketlenmiş + Telegram sözleşme yüzeyi geçici olarak kullanılamaz olsa bile kullanılabilir kalır. + `text-runtime`, yardımcı tarafından görülebilen metin temizleme, markdown işleme/parçalama yardımcıları, redaksiyon - yardımcıları, yönerge etiketi yardımcıları ve güvenli metin yardımcıları dahil olmak üzere - paylaşılan metin/markdown/loglama hattıdır. -- Onaya özgü kanal hatları, Plugin üzerindeki tek bir `approvalCapability` - sözleşmesini tercih etmelidir. Çekirdek daha sonra onay kimlik doğrulamasını, teslimi, işlemeyi, - yerel yönlendirmeyi ve tembel yerel işleyici davranışını, onay davranışını - ilgisiz Plugin alanlarına karıştırmak yerine bu tek yetenek üzerinden okur. -- `openclaw/plugin-sdk/channel-runtime` kullanımdan kaldırılmıştır ve yalnızca - eski Pluginler için bir uyumluluk şimi olarak kalır. Yeni kod bunun yerine daha dar + yardımcıları, directive etiketi yardımcıları ve güvenli metin yardımcıları dahil + paylaşılan metin/markdown/günlükleme sınırıdır. +- Onaya özgü kanal sınırları, Plugin üzerinde tek bir `approvalCapability` + sözleşmesini tercih etmelidir. Çekirdek daha sonra onay kimlik doğrulamasını, teslimini, işlemeyi, + yerel yönlendirmeyi ve tembel yerel işleyici davranışını, onay davranışını ilgisiz Plugin alanlarına karıştırmak yerine + bu tek yetenek üzerinden okur. +- `openclaw/plugin-sdk/channel-runtime` kullanımdan kaldırılmıştır ve yalnızca eski + Plugin'ler için uyumluluk şimi olarak kalır. Yeni kod bunun yerine daha dar genel ilkel öğeleri içe aktarmalıdır ve depo kodu şim için yeni içe aktarımlar eklememelidir. -- Paketlenmiş uzantı iç yapıları gizli kalır. Harici Pluginler yalnızca +- Paketlenmiş uzantı iç bileşenleri özel kalır. Harici Plugin'ler yalnızca `openclaw/plugin-sdk/*` alt yollarını kullanmalıdır. OpenClaw çekirdek/test kodu, `index.js`, `api.js`, `runtime-api.js`, `setup-entry.js` ve - `login-qr-api.js` gibi dar kapsamlı dosyalar gibi bir Plugin paket kökü altındaki depo genel giriş noktalarını kullanabilir. - Çekirdekten veya başka bir uzantıdan asla bir Plugin paketinin `src/*` yolunu içe aktarmayın. + `login-qr-api.js` gibi dar kapsamlı dosyalar gibi bir Plugin paket kökü altındaki depo + genel giriş noktalarını kullanabilir. Çekirdekten veya başka bir uzantıdan + asla bir Plugin paketinin `src/*` yolunu içe aktarmayın. - Depo giriş noktası ayrımı: - `/api.js` yardımcı/tipler varilidir, + `/api.js` yardımcı/tür varilidir, `/runtime-api.js` yalnızca çalışma zamanı varilidir, - `/index.js` paketlenmiş Plugin girişidir + `/index.js` paketlenmiş Plugin girişidir, ve `/setup-entry.js` kurulum Plugin girişidir. - Güncel paketlenmiş sağlayıcı örnekleri: - - Anthropic, `wrapAnthropicProviderStream`, beta üstbilgi yardımcıları ve `service_tier` + - Anthropic, `wrapAnthropicProviderStream`, beta üst bilgisi yardımcıları ve `service_tier` ayrıştırması gibi Claude akış yardımcıları için `api.js` / `contract-api.js` kullanır. - OpenAI, sağlayıcı oluşturucular, varsayılan model yardımcıları ve gerçek zamanlı sağlayıcı oluşturucular için `api.js` kullanır. - - OpenRouter, sağlayıcı oluşturucusu ile onboarding/config - yardımcıları için `api.js` kullanır; `register.runtime.js` ise depo içi kullanım için genel + - OpenRouter, kendi sağlayıcı oluşturucusu ile ilk katılım/yapılandırma + yardımcıları için `api.js` kullanırken `register.runtime.js` depo içi kullanım için hâlâ genel `plugin-sdk/provider-stream` yardımcılarını yeniden dışa aktarabilir. -- Cephe üzerinden yüklenen genel giriş noktaları, varsa etkin çalışma zamanı config anlık görüntüsünü tercih eder; - OpenClaw henüz bir çalışma zamanı anlık görüntüsü sunmuyorsa diskte çözülmüş config dosyasına geri döner. -- Genel paylaşılan ilkel öğeler tercih edilen genel SDK sözleşmesi olmaya devam eder. Paketlenmiş kanal markalı yardımcı hatlarının - küçük ve ayrılmış bir uyumluluk kümesi hâlâ mevcuttur. Bunları yeni - üçüncü taraf içe aktarma hedefleri olarak değil, paketlenmiş bakım/uyumluluk hatları olarak değerlendirin; yeni kanallar arası sözleşmeler yine de - genel `plugin-sdk/*` alt yollarında veya Plugin’e yerel `api.js` / - `runtime-api.js` varillerinde yer almalıdır. +- Yüzey yüklü genel giriş noktaları, mevcutsa etkin çalışma zamanı yapılandırma anlık görüntüsünü + tercih eder; ardından OpenClaw henüz bir çalışma zamanı anlık görüntüsü sunmuyorsa + diskteki çözülmüş yapılandırma dosyasına geri döner. +- Genel paylaşılan ilkel öğeler tercih edilen genel SDK sözleşmesi olmaya devam eder. Paketlenmiş kanal markalı yardımcı sınırlarının küçük + bir ayrılmış uyumluluk kümesi hâlâ vardır. Bunları yeni + üçüncü taraf içe aktarma hedefleri olarak değil, paketlenmiş bakım/uyumluluk sınırları olarak değerlendirin; yeni kanal arası sözleşmeler yine de + genel `plugin-sdk/*` alt yollarına veya Plugin'e yerel `api.js` / + `runtime-api.js` varillerine gelmelidir. Uyumluluk notu: - Yeni kod için kök `openclaw/plugin-sdk` varilinden kaçının. -- Önce dar ve kararlı ilkel öğeleri tercih edin. Daha yeni setup/pairing/reply/ - feedback/contract/inbound/threading/command/secret-input/webhook/infra/ - allowlist/status/message-tool alt yolları, yeni +- Önce dar ve kararlı ilkel öğeleri tercih edin. Daha yeni kurulum/eşleştirme/yanıt/ + geri bildirim/sözleşme/gelen/iş parçacığı/komut/secret-input/Webhook/altyapı/ + izin listesi/durum/message-tool alt yolları, yeni paketlenmiş ve harici Plugin çalışmaları için amaçlanan sözleşmedir. - Hedef ayrıştırma/eşleme `openclaw/plugin-sdk/channel-targets` üzerinde yer almalıdır. - Mesaj eylemi geçitleri ve tepki message-id yardımcıları + Hedef ayrıştırma/eşleştirme `openclaw/plugin-sdk/channel-targets` üzerinde yer almalıdır. + Mesaj eylemi geçitleri ve tepki mesaj-kimliği yardımcıları ise `openclaw/plugin-sdk/channel-actions` üzerinde yer almalıdır. - Paketlenmiş uzantıya özgü yardımcı variller varsayılan olarak kararlı değildir. Bir - yardımcı yalnızca paketlenmiş bir uzantı için gerekiyorsa, onu + yardımcı yalnızca paketlenmiş bir uzantı tarafından gerekiyorsa, onu `openclaw/plugin-sdk/` içine yükseltmek yerine uzantının yerel - `api.js` veya `runtime-api.js` hattının arkasında tutun. -- Yeni paylaşılan yardımcı hatları kanal markalı değil, genel olmalıdır. Paylaşılan hedef + `api.js` veya `runtime-api.js` sınırının arkasında tutun. +- Yeni paylaşılan yardımcı sınırları kanal markalı değil, genel olmalıdır. Paylaşılan hedef ayrıştırma `openclaw/plugin-sdk/channel-targets` üzerinde yer almalıdır; kanala özgü - iç yapılar ise sahibi olan Plugin’in yerel `api.js` veya `runtime-api.js` - hattının arkasında kalmalıdır. + iç bileşenler ise sahip olan Plugin'in yerel `api.js` veya `runtime-api.js` + sınırının arkasında kalmalıdır. - `image-generation`, - `media-understanding` ve `speech` gibi yeteneğe özgü alt yollar, paketlenmiş/yerel Pluginler bugün - bunları kullandığı için vardır. Bunların varlığı, dışa aktarılan her yardımcının - uzun vadede donmuş bir harici sözleşme olduğu anlamına tek başına gelmez. + `media-understanding` ve `speech` gibi yeteneğe özgü alt yollar bugün paketlenmiş/yerel Plugin'ler + tarafından kullanıldığı için vardır. Bunların varlığı tek başına dışa aktarılan her yardımcının + uzun vadeli olarak dondurulmuş bir harici sözleşme olduğu anlamına gelmez. ## Mesaj aracı şemaları -Pluginler kanala özgü `describeMessageTool(...)` şema -katkılarının sahibi olmalıdır. Sağlayıcıya özgü alanları paylaşılan çekirdekte değil, Plugin içinde tutun. +Plugin'ler kanala özgü `describeMessageTool(...)` şema +katkılarının sahibi olmalıdır. Sağlayıcıya özgü alanları paylaşılan çekirdekte değil, Plugin'de tutun. -Paylaşılan taşınabilir şema parçaları için +Paylaşılan taşınabilir şema parçaları için, `openclaw/plugin-sdk/channel-actions` üzerinden dışa aktarılan genel yardımcıları yeniden kullanın: - düğme ızgarası tarzı yükler için `createMessageToolButtonsSchema()` - yapılandırılmış kart yükleri için `createMessageToolCardSchema()` -Bir şema şekli yalnızca tek bir sağlayıcı için anlamlıysa, bunu paylaşılan SDK’ya yükseltmek yerine -o Plugin’in kendi kaynağında tanımlayın. +Bir şema biçimi yalnızca tek bir sağlayıcı için anlamlıysa, onu paylaşılan SDK'ya +yükseltmek yerine o Plugin'in kendi kaynağında tanımlayın. ## Kanal hedef çözümleme -Kanal Pluginleri kanala özgü hedef semantiğinin sahibi olmalıdır. Paylaşılan -giden hostu genel tutun ve sağlayıcı kuralları için mesajlaşma bağdaştırıcı yüzeyini kullanın: +Kanal Plugin'leri kanala özgü hedef anlambiliminin sahibi olmalıdır. Paylaşılan +giden ana makineyi genel tutun ve sağlayıcı kuralları için mesajlaşma bağdaştırıcı yüzeyini kullanın: - `messaging.inferTargetChatType({ to })`, normalize edilmiş bir hedefin - dizin aramasından önce `direct`, `group` veya `channel` olarak ele alınıp alınmayacağına karar verir. + dizin aramasından önce `direct`, `group` veya `channel` olarak değerlendirilip değerlendirilmeyeceğine karar verir. - `messaging.targetResolver.looksLikeId(raw, normalized)`, bir girdinin - dizin araması yerine doğrudan kimlik benzeri çözümlemeye atlayıp atlamaması gerektiğini çekirdeğe söyler. + dizin araması yerine doğrudan kimlik benzeri çözümlemeye geçip geçmemesi gerektiğini çekirdeğe bildirir. - `messaging.targetResolver.resolveTarget(...)`, çekirdeğin - normalizasyondan sonra veya bir dizin ıskasından sonra son bir sağlayıcıya ait çözümlemeye ihtiyaç duyduğunda kullandığı Plugin geri dönüşüdür. -- `messaging.resolveOutboundSessionRoute(...)`, bir hedef çözümlendikten sonra sağlayıcıya özgü oturum - yol oluşturmanın sahibidir. + normalizasyondan sonra veya dizin başarısızlığından sonra sağlayıcıya ait son bir çözümlemeye ihtiyaç duyduğunda kullandığı Plugin geri dönüş yoludur. +- `messaging.resolveOutboundSessionRoute(...)`, bir hedef çözüldüğünde sağlayıcıya özgü oturum + rota oluşturmanın sahibidir. Önerilen ayrım: -- Eşleri/grupları aramadan önce gerçekleşmesi gereken kategori kararları için `inferTargetChatType` kullanın. -- “Bunu açık/yerel bir hedef kimliği olarak ele al” kontrolleri için `looksLikeId` kullanın. -- Geniş dizin araması için değil, sağlayıcıya özgü normalizasyon geri dönüşü için `resolveTarget` kullanın. -- Sohbet kimlikleri, iş parçacığı kimlikleri, JID’ler, handle’lar ve oda - kimlikleri gibi sağlayıcıya özgü yerel kimlikleri, genel SDK alanlarında değil `target` değerleri veya sağlayıcıya özgü parametreler içinde tutun. +- eşler/gruplar aranmasından önce gerçekleşmesi gereken kategori kararları için `inferTargetChatType` kullanın. +- "buna açık/yerel hedef kimliği gibi davran" denetimleri için `looksLikeId` kullanın. +- geniş dizin araması için değil, sağlayıcıya özgü normalizasyon geri dönüşü için `resolveTarget` kullanın. +- sohbet kimlikleri, ileti dizisi kimlikleri, JID'ler, tutamaçlar ve oda + kimlikleri gibi sağlayıcıya özgü yerel kimlikleri genel SDK alanlarında değil, + `target` değerlerinin veya sağlayıcıya özgü parametrelerin içinde tutun. -## Config destekli dizinler +## Yapılandırma destekli dizinler -Config’ten dizin girdileri türeten Pluginler bu mantığı Plugin içinde tutmalı ve -`openclaw/plugin-sdk/directory-runtime` -içindeki paylaşılan yardımcıları yeniden kullanmalıdır. +Dizin girdilerini yapılandırmadan türeten Plugin'ler bu mantığı +Plugin içinde tutmalı ve +`openclaw/plugin-sdk/directory-runtime` içindeki paylaşılan yardımcıları yeniden kullanmalıdır. -Bir kanal aşağıdakiler gibi config destekli eşlere/gruplara ihtiyaç duyduğunda bunu kullanın: +Bunu, bir kanalın aşağıdakiler gibi yapılandırma destekli eşlere/gruplara ihtiyaç duyduğu durumlarda kullanın: -- allowlist güdümlü DM eşleri +- izin listesi odaklı DM eşleri - yapılandırılmış kanal/grup eşlemeleri - hesap kapsamlı statik dizin geri dönüşleri -`directory-runtime` içindeki paylaşılan yardımcılar yalnızca genel işlemleri işler: +`directory-runtime` içindeki paylaşılan yardımcılar yalnızca genel işlemleri ele alır: - sorgu filtreleme - sınır uygulama -- tekilleştirme/normalizasyon yardımcıları +- tekrarları kaldırma/normalizasyon yardımcıları - `ChannelDirectoryEntry[]` oluşturma -Kanala özgü hesap incelemesi ve kimlik normalizasyonu -Plugin uygulamasında kalmalıdır. +Kanala özgü hesap incelemesi ve kimlik normalizasyonu Plugin uygulamasında kalmalıdır. ## Sağlayıcı katalogları -Sağlayıcı Pluginleri, çıkarım için -`registerProvider({ catalog: { run(...) { ... } } })` ile model katalogları tanımlayabilir. +Sağlayıcı Plugin'leri, +`registerProvider({ catalog: { run(...) { ... } } })` ile çıkarım için model katalogları tanımlayabilir. -`catalog.run(...)`, OpenClaw’ın -`models.providers` içine yazdığıyla aynı şekli döndürür: +`catalog.run(...)`, OpenClaw'ın +`models.providers` içine yazdığı aynı biçimi döndürür: - tek bir sağlayıcı girdisi için `{ provider }` -- birden çok sağlayıcı girdisi için `{ providers }` +- birden fazla sağlayıcı girdisi için `{ providers }` -Plugin sağlayıcıya özgü model kimliklerinin, temel URL varsayılanlarının veya kimlik doğrulama korumalı model meta verilerinin sahibi olduğunda -`catalog` kullanın. +Plugin sağlayıcıya özgü model kimliklerinin, temel URL +varsayılanlarının veya kimlik doğrulama geçitli model meta verilerinin sahibi olduğunda `catalog` kullanın. -`catalog.order`, bir Plugin’in kataloğunun OpenClaw’ın -yerleşik örtük sağlayıcılarına göre ne zaman birleştirileceğini kontrol eder: +`catalog.order`, bir Plugin'in kataloğunun OpenClaw'ın +yerleşik örtük sağlayıcılarına göre ne zaman birleştirileceğini denetler: -- `simple`: düz API anahtarı veya ortam güdümlü sağlayıcılar -- `profile`: kimlik doğrulama profilleri olduğunda görünen sağlayıcılar -- `paired`: birden fazla ilişkili sağlayıcı girdisi sentezleyen sağlayıcılar +- `simple`: düz API anahtarı veya ortam odaklı sağlayıcılar +- `profile`: kimlik doğrulama profilleri var olduğunda görünen sağlayıcılar +- `paired`: birden çok ilişkili sağlayıcı girdisi sentezleyen sağlayıcılar - `late`: diğer örtük sağlayıcılardan sonra son geçiş -Daha sonraki sağlayıcılar anahtar çakışmasında kazanır; böylece Pluginler aynı sağlayıcı kimliğiyle bir -yerleşik sağlayıcı girdisini kasıtlı olarak geçersiz kılabilir. +Daha sonraki sağlayıcılar anahtar çakışmalarında kazanır; böylece Plugin'ler aynı sağlayıcı kimliğine sahip +yerleşik bir sağlayıcı girdisini bilinçli olarak geçersiz kılabilir. Uyumluluk: -- `discovery` eski bir takma ad olarak hâlâ çalışır -- hem `catalog` hem `discovery` kayıtlıysa, OpenClaw `catalog` kullanır +- `discovery`, eski bir takma ad olarak hâlâ çalışır +- hem `catalog` hem de `discovery` kaydedilmişse, OpenClaw `catalog` kullanır ## Salt okunur kanal incelemesi -Plugin’iniz bir kanal kaydediyorsa, `resolveAccount(...)` ile birlikte +Plugin'iniz bir kanal kaydediyorsa, `resolveAccount(...)` yanında `plugin.config.inspectAccount(cfg, accountId)` uygulamayı tercih edin. Neden: - `resolveAccount(...)` çalışma zamanı yoludur. Kimlik bilgilerinin - tamamen somutlaştırıldığını varsayabilir ve gerekli gizli bilgiler eksikse hızlıca başarısız olabilir. + tamamen somutlaştırıldığını varsayabilir ve gerekli sırlar eksik olduğunda hızlıca başarısız olabilir. - `openclaw status`, `openclaw status --all`, `openclaw channels status`, `openclaw channels resolve` ve doctor/config - onarım akışları gibi salt okunur komut yollarının, yalnızca yapılandırmayı - açıklamak için çalışma zamanı kimlik bilgilerini somutlaştırması gerekmemelidir. + onarım akışları gibi salt okunur komut yolları, yapılandırmayı açıklamak için yalnızca + çalışma zamanı kimlik bilgilerini somutlaştırmak zorunda kalmamalıdır. Önerilen `inspectAccount(...)` davranışı: - Yalnızca açıklayıcı hesap durumunu döndürün. - `enabled` ve `configured` değerlerini koruyun. -- İlgili olduğunda kimlik bilgisi kaynağı/durum alanlarını ekleyin, örneğin: +- İlgili olduğunda aşağıdakiler gibi kimlik bilgisi kaynağı/durumu alanlarını ekleyin: - `tokenSource`, `tokenStatus` - `botTokenSource`, `botTokenStatus` - `appTokenSource`, `appTokenStatus` - `signingSecretSource`, `signingSecretStatus` -- Salt okunur kullanılabilirliği bildirmek için ham token değerlerini döndürmeniz gerekmez. - Durum tarzı komutlar için `tokenStatus: "available"` döndürmek (ve eşleşen kaynak - alanını vermek) yeterlidir. -- Bir kimlik bilgisi SecretRef ile yapılandırılmış ancak - mevcut komut yolunda kullanılamıyorsa `configured_unavailable` kullanın. +- Salt okunur kullanılabilirliği raporlamak için ham belirteç değerlerini döndürmeniz gerekmez. + `tokenStatus: "available"` (ve eşleşen kaynak + alanı) döndürmek, durum tarzı komutlar için yeterlidir. +- Bir kimlik bilgisi SecretRef aracılığıyla yapılandırılmış ancak + geçerli komut yolunda kullanılamıyorsa `configured_unavailable` kullanın. -Bu, salt okunur komutların çökmek veya hesabı yapılandırılmamış olarak yanlış bildirmek yerine -“yapılandırılmış ama bu komut yolunda kullanılamıyor” raporlamasını sağlar. +Bu, salt okunur komutların çökmeden veya hesabı yanlış biçimde yapılandırılmamış olarak raporlamadan +"bu komut yolunda yapılandırılmış ama kullanılamıyor" bilgisini vermesini sağlar. ## Paket paketleri -Bir Plugin dizini, `openclaw.extensions` içeren bir `package.json` dosyası içerebilir: +Bir Plugin dizini, `openclaw.extensions` içeren bir `package.json` barındırabilir: ```json { @@ -1369,61 +1391,61 @@ Bir Plugin dizini, `openclaw.extensions` içeren bir `package.json` dosyası iç Her girdi bir Plugin olur. Paket birden fazla uzantı listeliyorsa, Plugin kimliği `name/` olur. -Plugin’iniz npm bağımlılıkları içe aktarıyorsa, `node_modules` -mevcut olsun diye bunları o dizine kurun (`npm install` / `pnpm install`). +Plugin'iniz npm bağımlılıkları içe aktarıyorsa, `node_modules` +mevcut olsun diye bunları o dizinde kurun (`npm install` / `pnpm install`). -Güvenlik koruması: her `openclaw.extensions` girdisi, symlink çözümlemesinden sonra -Plugin dizini içinde kalmalıdır. Paket dizininden taşan girdiler +Güvenlik korkuluğu: her `openclaw.extensions` girdisi, sembolik bağ çözümlemesinden sonra Plugin +dizininin içinde kalmalıdır. Paket dizininden kaçan girdiler reddedilir. Güvenlik notu: `openclaw plugins install`, Plugin bağımlılıklarını -`npm install --omit=dev --ignore-scripts` ile kurar (yaşam döngüsü betikleri yok, çalışma zamanında geliştirme bağımlılıkları yok). Plugin bağımlılık -ağaçlarını “salt JS/TS” tutun ve `postinstall` derlemeleri gerektiren paketlerden kaçının. +`npm install --omit=dev --ignore-scripts` ile kurar (yaşam döngüsü betikleri yok, çalışma zamanında geliştirme bağımlılığı yok). Plugin bağımlılık +ağaçlarını "saf JS/TS" olarak tutun ve `postinstall` derlemeleri gerektiren paketlerden kaçının. -İsteğe bağlı: `openclaw.setupEntry` hafif, yalnızca kurulum amaçlı bir modüle işaret edebilir. -OpenClaw, devre dışı bir kanal Plugin’i için kurulum yüzeylerine ihtiyaç duyduğunda veya -bir kanal Plugin’i etkin olup hâlâ yapılandırılmamış olduğunda, tam Plugin girdisi yerine -`setupEntry` yüklenir. Bu, ana Plugin girdiniz araçlar, kancalar veya çalışma zamanına özgü başka -kodlar da bağlıyorsa başlatma ve kurulumu daha hafif tutar. +İsteğe bağlı: `openclaw.setupEntry`, hafif bir yalnızca kurulum modülünü işaret edebilir. +OpenClaw, devre dışı bir kanal Plugin'i için kurulum yüzeylerine ihtiyaç duyduğunda veya +bir kanal Plugin'i etkin ama hâlâ yapılandırılmamış olduğunda, tam Plugin girdisi yerine +`setupEntry` yükler. Bu, ana Plugin girdiniz araçlar, kancalar veya diğer yalnızca çalışma zamanı +kodlarını da bağlıyorsa başlangıcı ve kurulumu daha hafif tutar. İsteğe bağlı: `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen`, -kanal zaten yapılandırılmış olsa bile, bir kanal Plugin’ini gateway’in -listen öncesi başlatma aşamasında aynı `setupEntry` yoluna alabilir. +bir kanal Plugin'ini gateway'in +dinleme öncesi başlangıç aşamasında, kanal zaten yapılandırılmış olsa bile, aynı `setupEntry` yoluna dahil edebilir. -Bunu yalnızca `setupEntry`, gateway dinlemeye başlamadan önce -var olması gereken başlatma yüzeyini tamamen kapsıyorsa kullanın. Pratikte bu, kurulum girdisinin başlatmanın bağlı olduğu -kanala ait her yeteneği kaydetmesi gerektiği anlamına gelir; örneğin: +Bunu yalnızca `setupEntry`, gateway dinlemeye başlamadan +önce var olması gereken başlangıç yüzeyini tamamen kapsıyorsa kullanın. Pratikte bu, kurulum girdisinin +başlangıcın bağlı olduğu kanala ait her yeteneği kaydetmesi gerektiği anlamına gelir; örneğin: - kanal kaydının kendisi -- gateway dinlemeye başlamadan önce kullanılabilir olması gereken tüm HTTP yolları -- aynı pencere sırasında var olması gereken tüm Gateway yöntemleri, araçlar veya hizmetleri +- gateway dinlemeye başlamadan önce kullanılabilir olması gereken tüm HTTP rotaları +- aynı pencere sırasında var olması gereken tüm gateway yöntemleri, araçlar veya hizmetler -Tam girdiniz hâlâ gerekli herhangi bir başlatma yeteneğinin sahibiyse, bu bayrağı -etkinleştirmeyin. Plugin’i varsayılan davranışta bırakın ve OpenClaw’ın -başlatma sırasında tam girdiyi yüklemesine izin verin. +Tam girdiniz hâlâ gerekli bir başlangıç yeteneğinin sahibiyse bu bayrağı etkinleştirmeyin. +Plugin'i varsayılan davranışta bırakın ve OpenClaw'ın başlangıç sırasında +tam girdiyi yüklemesine izin verin. -Paketlenmiş kanallar ayrıca, tam kanal çalışma zamanı yüklenmeden önce çekirdeğin -danışabileceği yalnızca kurulum amaçlı sözleşme yüzeyi yardımcıları yayımlayabilir. Güncel kurulum -terfi yüzeyi şudur: +Paketlenmiş kanallar ayrıca, çekirdeğin tam kanal çalışma zamanı yüklenmeden önce +danışabileceği yalnızca kurulum sözleşme yüzeyi yardımcıları da yayımlayabilir. Güncel kurulum +yükseltme yüzeyi şudur: - `singleAccountKeysToMove` - `namedAccountPromotionKeys` - `resolveSingleAccountPromotionTarget(...)` -Çekirdek bu yüzeyi, eski tek hesaplı kanal -config’ini tam Plugin girdisini yüklemeden `channels..accounts.*` içine taşımak gerektiğinde kullanır. -Matrix, mevcut paketlenmiş örnektir: adlandırılmış hesaplar zaten varsa yalnızca auth/bootstrap anahtarlarını -adlandırılmış bir terfi edilmiş hesaba taşır ve her zaman -`accounts.default` oluşturmaktansa yapılandırılmış, kanonik olmayan bir varsayılan hesap anahtarını koruyabilir. +Çekirdek bu yüzeyi, tam Plugin girdisini yüklemeden eski bir tek hesaplı kanal +yapılandırmasını `channels..accounts.*` içine yükseltmesi gerektiğinde kullanır. +Matrix güncel paketlenmiş örnektir: adlandırılmış hesaplar zaten varsa yalnızca auth/bootstrap anahtarlarını +adlandırılmış bir yükseltilmiş hesaba taşır ve her zaman +`accounts.default` oluşturmaktansa yapılandırılmış standart dışı bir varsayılan hesap anahtarını koruyabilir. -Bu kurulum yama bağdaştırıcıları, paketlenmiş sözleşme yüzeyi keşfini tembel tutar. -İçe aktarma zamanı hafif kalır; terfi yüzeyi modül içe aktarımında paketlenmiş kanal başlatmasına yeniden girmek yerine +Bu kurulum yama bağdaştırıcıları, paketlenmiş sözleşme yüzeyi keşfini tembel tutar. İçe aktarma +zamanı hafif kalır; yükseltme yüzeyi modül içe aktarmada yeniden paketlenmiş kanal başlangıcına girmek yerine yalnızca ilk kullanımda yüklenir. -Bu başlatma yüzeyleri Gateway RPC yöntemleri içerdiğinde, bunları -Plugin’e özgü bir önek üzerinde 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ümlenir. +Bu başlangıç yüzeyleri gateway RPC yöntemleri içerdiğinde, bunları +Plugin'e özgü bir önek üzerinde tutun. Çekirdek yönetici ad alanları (`config.*`, +`exec.approvals.*`, `wizard.*`, `update.*`) ayrılmış kalır ve her zaman +Plugin daha dar bir kapsam istese bile `operator.admin` değerine çözülür. Örnek: @@ -1442,8 +1464,8 @@ her zaman `operator.admin` olarak çözümlenir. ### Kanal katalog meta verileri -Kanal Pluginleri `openclaw.channel` üzerinden kurulum/keşif meta verileri ve -`openclaw.install` üzerinden kurulum ipuçları duyurabilir. Bu, çekirdek kataloğu verisiz tutar. +Kanal Plugin'leri `openclaw.channel` aracılığıyla kurulum/keşif meta verileri ve +`openclaw.install` aracılığıyla kurulum ipuçları sunabilir. Bu, çekirdek katalog verilerini veri içermeyen durumda tutar. Örnek: @@ -1471,40 +1493,41 @@ Kanal Pluginleri `openclaw.channel` üzerinden kurulum/keşif meta verileri ve } ``` -Asgari örneğin ötesinde yararlı `openclaw.channel` alanları: +Asgari örneğin ötesindeki kullanışlı `openclaw.channel` alanları: - `detailLabel`: daha zengin katalog/durum yüzeyleri için ikincil etiket - `docsLabel`: belgeler bağlantısı için bağlantı metnini geçersiz kılar -- `preferOver`: bu katalog girdisinin önüne geçmesi gereken daha düşük öncelikli Plugin/kanal kimlikleri -- `selectionDocsPrefix`, `selectionDocsOmitLabel`, `selectionExtras`: seçim yüzeyi metni denetimleri -- `markdownCapable`: giden biçimlendirme kararları için kanalı markdown destekli olarak işaretler -- `exposure.configured`: `false` olduğunda kanalı yapılandırılmış kanal listeleme yüzeylerinden gizler -- `exposure.setup`: `false` olduğunda kanalı etkileşimli kurulum/yapılandırma seçicilerinden gizler -- `exposure.docs`: kanalı belgeler gezinme yüzeyleri için dahili/özel olarak işaretler -- `showConfigured` / `showInSetup`: uyumluluk için eski takma adlar hâlâ kabul edilir; `exposure` tercih edilir +- `preferOver`: bu katalog girdisinin geride bırakması gereken daha düşük öncelikli Plugin/kanal kimlikleri +- `selectionDocsPrefix`, `selectionDocsOmitLabel`, `selectionExtras`: seçim yüzeyi kopya denetimleri +- `markdownCapable`: giden biçimlendirme kararları için kanalı markdown yetenekli olarak işaretler +- `exposure.configured`: `false` olarak ayarlandığında kanalı yapılandırılmış kanal listeleme yüzeylerinden gizler +- `exposure.setup`: `false` olarak ayarlandığında kanalı etkileşimli kurulum/yapılandırma seçicilerinden gizler +- `exposure.docs`: belge gezinme yüzeyleri için kanalı dahili/özel olarak işaretler +- `showConfigured` / `showInSetup`: eski takma adlar uyumluluk için hâlâ kabul edilir; `exposure` tercih edilir - `quickstartAllowFrom`: kanalı standart hızlı başlangıç `allowFrom` akışına dahil eder - `forceAccountBinding`: yalnızca bir hesap olsa bile açık hesap bağlaması gerektirir -- `preferSessionLookupForAnnounceTarget`: duyuru hedeflerini çözümlerken oturum aramasını tercih eder +- `preferSessionLookupForAnnounceTarget`: duyuru hedefleri çözülürken oturum aramasını tercih eder -OpenClaw ayrıca **harici kanal kataloglarını** da birleştirebilir (örneğin bir MPM -kayıt sistemi dışa aktarımı). Şu konumlardan birine bir JSON dosyası bırakın: +OpenClaw ayrıca **harici kanal kataloglarını** da (örneğin bir MPM +kayıt dışa aktarımı) birleştirebilir. Şu konumlardan birine bir JSON dosyası bırakın: - `~/.openclaw/mpm/plugins.json` - `~/.openclaw/mpm/catalog.json` - `~/.openclaw/plugins/catalog.json` -Veya `OPENCLAW_PLUGIN_CATALOG_PATHS` (ya da `OPENCLAW_MPM_CATALOG_PATHS`) değerini -bir veya daha fazla JSON dosyasına yönlendirin (virgül/noktalı virgül/`PATH` ayrımlı). Her dosya `{ "entries": [ { "name": "@scope/pkg", "openclaw": { "channel": {...}, "install": {...} } } ] }` içermelidir. Ayrıştırıcı, `"entries"` anahtarı için eski takma adlar olarak `"packages"` veya `"plugins"` anahtarlarını da kabul eder. +Veya `OPENCLAW_PLUGIN_CATALOG_PATHS` (ya da `OPENCLAW_MPM_CATALOG_PATHS`) değişkenini +bir veya daha fazla JSON dosyasına yönlendirin (virgül/noktalı virgül/`PATH` ile ayrılmış). +Her dosya şu biçimi içermelidir: `{ "entries": [ { "name": "@scope/pkg", "openclaw": { "channel": {...}, "install": {...} } } ] }`. Ayrıştırıcı, `"entries"` anahtarı için eski takma adlar olarak `"packages"` veya `"plugins"` anahtarlarını da kabul eder. -## Bağlam motoru Pluginleri +## Bağlam motoru Plugin'leri -Bağlam motoru Pluginleri, alma, derleme -ve Compaction için oturum bağlamı orkestrasyonunun sahibidir. Bunları Plugin’inizden +Bağlam motoru Plugin'leri, alma, birleştirme +ve Compaction için oturum bağlamı orkestrasyonunun sahibidir. Bunları Plugin'inizden `api.registerContextEngine(id, factory)` ile kaydedin, ardından etkin motoru `plugins.slots.contextEngine` ile seçin. -Bunu, Plugin’inizin yalnızca bellek araması veya kancalar eklemek yerine varsayılan bağlam -hattını değiştirmesi ya da genişletmesi gerektiğinde kullanın. +Bunu, Plugin'inizin yalnızca bellek araması veya kancalar eklemek yerine varsayılan bağlam +ardışık düzenini değiştirmesi ya da genişletmesi gerektiğinde kullanın. ```ts import { buildMemorySystemPromptAddition } from "openclaw/plugin-sdk/core"; @@ -1533,7 +1556,7 @@ export default function (api) { ``` Motorunuz Compaction algoritmasının sahibi **değilse**, `compact()` -uygulamasını koruyun ve bunu açıkça devredin: +uygulamasını koruyun ve açıkça ona devredin: ```ts import { @@ -1570,41 +1593,40 @@ export default function (api) { ## Yeni bir yetenek ekleme -Bir Plugin mevcut API’ye uymayan bir davranışa ihtiyaç duyduğunda, -Plugin sistemini özel bir içe sızmayla aşmayın. Eksik yeteneği ekleyin. +Bir Plugin mevcut API'ye uymayan bir davranışa ihtiyaç duyduğunda, +özel bir iç erişimle Plugin sistemini baypas etmeyin. Eksik yeteneği ekleyin. Önerilen sıra: 1. çekirdek sözleşmeyi tanımlayın - Çekirdeğin hangi paylaşılan davranışın sahibi olması gerektiğine karar verin: ilke, geri dönüş, config birleştirme, - yaşam döngüsü, kanala dönük semantik ve çalışma zamanı yardımcı şekli. -2. tipli Plugin kayıt/çalışma zamanı yüzeyleri ekleyin - `OpenClawPluginApi` ve/veya `api.runtime` yapısını, en küçük kullanışlı - tipli yetenek yüzeyiyle genişletin. + Çekirdeğin hangi paylaşılan davranışın sahibi olması gerektiğine karar verin: ilke, geri dönüş, yapılandırma birleştirme, + yaşam döngüsü, kanala dönük anlambilim ve çalışma zamanı yardımcısı biçimi. +2. türlendirilmiş Plugin kayıt/çalışma zamanı yüzeyleri ekleyin + `OpenClawPluginApi` ve/veya `api.runtime` yüzeyini kullanılabilir en küçük + türlendirilmiş yetenek yüzeyiyle genişletin. 3. çekirdek + kanal/özellik tüketicilerini bağlayın - Kanallar ve özellik Pluginleri yeni yeteneği doğrudan bir satıcı uygulamasını içe aktararak değil, + Kanallar ve özellik Plugin'leri yeni yeteneği, doğrudan bir satıcı uygulamasını içe aktararak değil, çekirdek üzerinden tüketmelidir. 4. satıcı uygulamalarını kaydedin - Satıcı Pluginleri daha sonra arka uçlarını yeteneğe karşı kaydeder. + Satıcı Plugin'leri daha sonra arka uçlarını bu yeteneğe karşı kaydeder. 5. sözleşme kapsamı ekleyin - Sahipliğin ve kayıt şeklinin zaman içinde açık kalması için testler ekleyin. + Sahiplik ve kayıt biçiminin zaman içinde açık kalması için testler ekleyin. -OpenClaw bu şekilde tek bir -sağlayıcının dünya görüşüne sabit kodlanmadan görüş sahibi kalır. Somut bir dosya kontrol listesi ve uygulanmış örnek için -[Capability Cookbook](/tr/plugins/architecture) -sayfasına bakın. +OpenClaw bu şekilde belirgin bir görüşe sahip olurken tek bir +sağlayıcının dünya görüşüne sabit kodlanmış hâle gelmez. Somut bir dosya denetim listesi ve uygulanmış örnek için [Capability Cookbook](/tr/plugins/architecture) +bölümüne bakın. -### Yetenek kontrol listesi +### Yetenek denetim listesi Yeni bir yetenek eklediğinizde, uygulama genellikle şu yüzeylere birlikte dokunmalıdır: -- `src//types.ts` içindeki çekirdek sözleşme tipleri +- `src//types.ts` içindeki çekirdek sözleşme türleri - `src//runtime.ts` içindeki çekirdek çalıştırıcı/çalışma zamanı yardımcısı - `src/plugins/types.ts` içindeki Plugin API kayıt yüzeyi -- `src/plugins/registry.ts` içindeki Plugin kayıt sistemi bağlaması -- özellik/kanal Pluginlerinin tüketmesi gerektiğinde `src/plugins/runtime/*` içindeki - Plugin çalışma zamanı açığa çıkarımı +- `src/plugins/registry.ts` içindeki Plugin kayıt sistemi bağlantısı +- özellik/kanal + Plugin'lerinin bunu tüketmesi gerektiğinde `src/plugins/runtime/*` içindeki Plugin çalışma zamanı açığa çıkarımı - `src/test-utils/plugin-registration.ts` içindeki yakalama/test yardımcıları - `src/plugins/contracts/registry.ts` içindeki sahiplik/sözleşme doğrulamaları - `docs/` içindeki operatör/Plugin belgeleri @@ -1614,7 +1636,7 @@ henüz tam olarak entegre edilmediğinin işaretidir. ### Yetenek şablonu -En küçük kalıp: +Asgari desen: ```ts // core contract @@ -1640,7 +1662,7 @@ const clip = await api.runtime.videoGeneration.generate({ }); ``` -Sözleşme testi kalıbı: +Sözleşme testi deseni: ```ts expect(findVideoGenerationProviderIdsForPlugin("openai")).toEqual(["openai"]); @@ -1648,7 +1670,7 @@ expect(findVideoGenerationProviderIdsForPlugin("openai")).toEqual(["openai"]); Bu, kuralı basit tutar: -- çekirdek yetenek sözleşmesinin + orkestrasyonun sahibidir -- satıcı Pluginleri satıcı uygulamalarının sahibidir -- özellik/kanal Pluginleri çalışma zamanı yardımcılarını tüketir +- çekirdek, yetenek sözleşmesinin + orkestrasyonun sahibidir +- satıcı Plugin'leri satıcı uygulamalarının sahibidir +- özellik/kanal Plugin'leri çalışma zamanı yardımcılarını tüketir - sözleşme testleri sahipliği açık tutar diff --git a/docs/tr/plugins/manifest.md b/docs/tr/plugins/manifest.md index b0fc02403..3e107690d 100644 --- a/docs/tr/plugins/manifest.md +++ b/docs/tr/plugins/manifest.md @@ -1,23 +1,23 @@ --- read_when: - - 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 manifest’i + 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-12T23:28:36Z" + generated_at: "2026-04-15T08:53:13Z" model: gpt-5.4 provider: openai - source_hash: 93b57c7373e4ccd521b10945346db67991543bd2bed4cc8b6641e1f215b48579 + source_hash: ba2183bfa8802871e4ef33a0ebea290606e8351e9e83e25ee72456addb768730 source_path: plugins/manifest.md workflow: 15 --- # Plugin manifesti (`openclaw.plugin.json`) -Bu sayfa yalnızca **yerel OpenClaw Plugin manifesti** içindir. +Bu sayfa yalnızca **yerel OpenClaw plugin manifesti** içindir. -Uyumlu paket düzenleri için bkz. [Plugin paketleri](/tr/plugins/bundles). +Uyumlu paket düzenleri için bkz. [Plugin bundles](/tr/plugins/bundles). Uyumlu paket biçimleri farklı manifest dosyaları kullanır: @@ -26,47 +26,49 @@ Uyumlu paket biçimleri farklı manifest dosyaları kullanır: düzeni - Cursor paketi: `.cursor-plugin/plugin.json` -OpenClaw bu paket düzenlerini de otomatik olarak algılar, ancak bunlar burada açıklanan -`openclaw.plugin.json` şemasına göre doğrulanmaz. +OpenClaw bu paket düzenlerini de otomatik olarak algılar, ancak bunlar burada +açıklanan `openclaw.plugin.json` şemasına göre doğrulanmaz. -Uyumlu paketler için OpenClaw şu anda, düzen OpenClaw çalışma zamanı beklentileriyle eşleştiğinde -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 desteklenen hook paketlerini okur. +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. -Her yerel OpenClaw Plugin’i, **Plugin kökünde** bir `openclaw.plugin.json` dosyası -**bulundurmalı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. +Her yerel OpenClaw plugin'i **plugin kökünde** bir `openclaw.plugin.json` +dosyası sağlamalıdı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. -Tam Plugin sistemi kılavuzu için bkz.: [Plugins](/tr/tools/plugin). -Yerel yetenek modeli ve güncel dış uyumluluk rehberi için: -[Yetenek modeli](/tr/plugins/architecture#public-capability-model). +Tam plugin sistemi kılavuzu için bkz.: [Plugins](/tr/tools/plugin). +Yerel yetenek modeli ve mevcut dış uyumluluk rehberi için: +[Capability model](/tr/plugins/architecture#public-capability-model). ## Bu dosya ne yapar -`openclaw.plugin.json`, OpenClaw’ın Plugin kodunuzu yüklemeden önce okuduğu -meta veridir. +`openclaw.plugin.json`, OpenClaw'un plugin kodunuzu yüklemeden önce okuduğu +meta verilerdir. Bunu şunlar için kullanın: -- Plugin kimliği -- yapılandırma doğrulaması -- Plugin çalışma zamanını başlatmadan kullanılabilir olması gereken kimlik doğrulama ve onboarding meta verileri +- plugin kimliği +- yapılandırma doğrulama +- plugin çalışma zamanını başlatmadan kullanılabilir olması gereken kimlik doğrulama ve onboarding meta verileri - çalışma zamanı yüklenmeden önce kontrol düzlemi yüzeylerinin inceleyebileceği düşük maliyetli etkinleştirme ipuçları - çalışma zamanı yüklenmeden önce kurulum/onboarding yüzeylerinin inceleyebileceği düşük maliyetli kurulum tanımlayıcıları -- Plugin çalışma zamanı yüklenmeden önce çözülmesi gereken takma ad ve otomatik etkinleştirme meta verileri -- çalışma zamanı yüklenmeden önce Plugin’i otomatik etkinleştirmesi gereken kısa model ailesi sahiplik meta verileri -- paketli uyumluluk bağlama ve sözleşme kapsamı için kullanılan statik yetenek sahipliği anlık görüntüleri -- çalışma zamanı yüklenmeden katalog ve doğrulama yüzeyleriyle birleştirilmesi gereken kanala özgü yapılandırma meta verileri +- plugin çalışma zamanı yüklenmeden önce çözümlenmesi gereken takma ad ve otomatik etkinleştirme meta verileri +- plugin çalışma zamanı yüklenmeden önce plugin'i otomatik etkinleştirmesi gereken kısa model ailesi sahipliği meta verileri +- paketlenmiş uyumluluk bağlantıları ve sözleşme kapsamı için kullanılan statik yetenek sahipliği anlık görüntüleri +- paylaşılan `openclaw qa` ana bilgisayarının 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üzeyleriyle birleşmesi gereken kanala özgü yapılandırma meta verileri - yapılandırma UI ipuçları Bunu şunlar için kullanmayın: -- çalışma zamanı davranışını kaydetmek -- kod giriş noktalarını bildirmek +- çalışma zamanı davranışı kaydetme +- kod giriş noktalarını bildirme - npm kurulum meta verileri -Bunlar Plugin kodunuzda ve `package.json` dosyasında yer almalıdır. +Bunlar plugin kodunuza ve `package.json` dosyanıza aittir. ## En küçük örnek @@ -87,7 +89,7 @@ Bunlar Plugin kodunuzda ve `package.json` dosyasında yer almalıdır. { "id": "openrouter", "name": "OpenRouter", - "description": "OpenRouter provider Plugin’i", + "description": "OpenRouter sağlayıcı plugin'i", "version": "1.0.0", "providers": ["openrouter"], "modelSupport": { @@ -141,61 +143,62 @@ Bunlar Plugin kodunuzda ve `package.json` dosyasında yer almalıdır. | Alan | Gerekli | Tür | Anlamı | | ----------------------------------- | ------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `id` | Evet | `string` | Kanonik Plugin kimliği. Bu, `plugins.entries.` içinde kullanılan kimliktir. | -| `configSchema` | Evet | `object` | Bu Plugin’in yapılandırması için satır içi JSON şeması. | -| `enabledByDefault` | Hayır | `true` | Paketli bir Plugin’i varsayılan olarak etkin işaretler. Plugin’i 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 normalize edilen eski kimlikler. | -| `autoEnableWhenConfiguredProviders` | Hayır | `string[]` | Kimlik doğrulama, yapılandırma veya model başvuruları bunlardan bahsettiğinde bu Plugin’i otomatik etkinleştirmesi gereken provider kimlikleri. | -| `kind` | Hayır | `"memory"` \| `"context-engine"` | `plugins.slots.*` tarafından kullanılan, münhasır bir Plugin türünü bildirir. | -| `channels` | Hayır | `string[]` | Bu Plugin’in sahip olduğu kanal kimlikleri. Keşif ve yapılandırma doğrulaması için kullanılır. | -| `providers` | Hayır | `string[]` | Bu Plugin’in sahip olduğu provider kimlikleri. | -| `modelSupport` | Hayır | `object` | Çalışma zamanından önce Plugin’i otomatik yüklemek için kullanılan, manifest sahipli kısa model ailesi meta verileri. | -| `cliBackends` | Hayır | `string[]` | Bu Plugin’in sahip olduğu CLI çıkarım backend kimlikleri. Açık yapılandırma başvurularından başlangıçta otomatik etkinleştirme için kullanılır. | -| `commandAliases` | Hayır | `object[]` | Çalışma zamanı yüklenmeden önce Plugin farkındalıklı yapılandırma ve CLI tanıları üretmesi gereken, bu Plugin’in sahip olduğu komut adları. | -| `providerAuthEnvVars` | Hayır | `Record` | OpenClaw’ın Plugin kodunu yüklemeden inceleyebileceği, düşük maliyetli provider kimlik doğrulama env meta verileri. | -| `providerAuthAliases` | Hayır | `Record` | 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` | OpenClaw’ın 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 güdümlü 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 flag 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 veridir; 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ı. | -| `contracts` | Hayır | `object` | Konuşma, gerçek zamanlı transkripsiyon, gerçek zamanlı ses, media-understanding, görsel üretimi, müzik üretimi, video üretimi, web-fetch, web araması ve araç sahipliği için statik paketli yetenek anlık görüntüsü. | -| `channelConfigs` | Hayır | `Record` | Çalışma zamanı yüklenmeden önce keşif ve doğrulama yüzeyleriyle birleştirilen, manifest sahipli kanal yapılandırma meta verileri. | -| `skills` | Hayır | `string[]` | Plugin köküne göreli olarak yüklenecek Skills dizinleri. | -| `name` | Hayır | `string` | İnsan tarafından okunabilir Plugin adı. | +| `id` | Evet | `string` | Kanonik plugin kimliği. `plugins.entries.` içinde kullanılan kimlik budur. | +| `configSchema` | Evet | `object` | Bu plugin'in yapılandırması için satır içi JSON şeması. | +| `enabledByDefault` | Hayır | `true` | Paketlenmiş bir plugin'i varsayılan olarak etkin işaretler. Plugin'i varsayılan olarak devre dışı bırakmak için bu alanı atlayın 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 sağlayıcı kimlikleri. | +| `kind` | Hayır | `"memory"` \| `"context-engine"` | `plugins.slots.*` tarafından kullanılan özel bir plugin türü 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 sağlayıcı 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. | +| `cliBackends` | Hayır | `string[]` | Bu plugin'e ait CLI çıkarım arka uç kimlikleri. Açık yapılandırma başvurularından başlangıçta otomatik etkinleştirme için kullanılır. | +| `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` | OpenClaw'un plugin kodunu yüklemeden inceleyebileceği, düşük maliyetli sağlayıcı kimlik doğrulama ortam değişkeni meta verileri. | +| `providerAuthAliases` | Hayır | `Record` | 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ını ve kimlik doğrulama profillerini paylaşan bir kodlama sağlayıcısı. | +| `channelEnvVars` | Hayır | `Record` | OpenClaw'un 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 tabanlı 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 bayrağı bağlantıları 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 veridir; gerçek davranış yine 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` ana bilgisayarı tarafından plugin çalışma zamanı yüklenmeden önce kullanılan 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, media-understanding, image-generation, music-generation, video-generation, web-fetch, web search ve araç sahipliği için statik paketlenmiş yetenek anlık görüntüsü. | +| `channelConfigs` | Hayır | `Record` | Çalışma zamanı yüklenmeden önce 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 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ü. | +| `version` | Hayır | `string` | Bilgilendirici plugin sürümü. | | `uiHints` | Hayır | `Record` | 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 provider çalışma zamanı yüklenmeden önce okur. +OpenClaw bunu sağlayıcı çalışma zamanı yüklenmeden önce okur. -| Alan | Gerekli | Tür | Anlamı | -| --------------------- | ------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -| `provider` | Evet | `string` | Bu seçeneğin ait olduğu provider kimliği. | -| `method` | Evet | `string` | Yönlendirilecek kimlik doğrulama yöntemi kimliği. | +| 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ı tarafından 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` | Daha düşük değerler, assistant güdümlü etkileşimli seçicilerde daha önce sıralanır. | -| `assistantVisibility` | Hayır | `"visible"` \| `"manual-only"` | Manuel CLI seçimine yine izin verirken seçeneği assistant seçicilerinden gizler. | -| `deprecatedChoiceIds` | Hayır | `string[]` | Kullanıcıları bu yedek seçenek yerine yönlendirmesi gereken eski seçenek kimlikleri. | +| `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 daha ö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 değiştirilmiş 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 flag’li kimlik doğrulama akışları için dahili seçenek anahtarı. | -| `cliFlag` | Hayır | `string` | `--openrouter-api-key` gibi CLI flag adı. | -| `cliOption` | Hayır | `string` | `--openrouter-api-key ` gibi tam CLI seçenek biçimi. | -| `cliDescription` | Hayır | `string` | CLI yardımında kullanılan açıklama. | +| `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 ` 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 bir 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ılama için kullanır. ```json { @@ -209,22 +212,47 @@ tanılar için kullanır. } ``` -| 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 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 bir CLI komutundan ziyade 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 Plugin daha sonra hangi kontrol düzlemi olaylarının onu etkinleştirmesi gerektiğini düşük maliyetle bildirebiliyorsa `activation` kullanın. -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 yerine geçmez. -Mevcut tüketiciler bunu daha geniş Plugin yüklemesinden önce daraltıcı bir ipucu olarak kullanır; bu nedenle -eksik etkinleştirme meta verileri genellikle yalnızca performans maliyeti doğurur; -eski manifest sahipliği geri dönüşleri hâlâ mevcutken doğruluğu değiştirmemelidir. +## qaRunners başvurusu + +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 verileri düşük maliyetli +ve statik tutun; gerçek CLI kaydı yine +`qaRunnerCliRegistrations` dışa aktaran hafif bir `runtime-api.ts` +yüzeyi üzerinden plugin çalışma zamanına aittir. + +```json +{ + "qaRunners": [ + { + "commandName": "matrix", + "description": "Docker destekli Matrix canlı QA hattını tek kullanımlık bir homeserver'a karşı ç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 ana bilgisayarın bir taslak komuta ihtiyaç duyması halinde kullanılan yedek yardım metni. | + +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 +verileri genellikle yalnızca performans maliyeti yaratır; eski manifest +sahipliği geri dönüşleri hâlâ mevcutken doğruluğu değiştirmemelidir. ```json { @@ -238,29 +266,29 @@ eski manifest sahipliği geri dönüşleri hâlâ mevcutken doğruluğu değişt } ``` -| 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. | +| Alan | Gerekli | Tür | Anlamı | +| ---------------- | ------- | ---------------------------------------------------- | ----------------------------------------------------------------- | +| `onProviders` | Hayır | `string[]` | İstendiğinde bu plugin'i etkinleştirmesi gereken sağlayıcı 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">` | Kontrol düzlemi etkinleştirme planlamasında kullanılan geniş yetenek ipuçları. | -Güncel canlı tüketiciler: +Mevcut canlı tüketiciler: - 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 verileri eksik olduğunda - eski `channels[]` + `commandAliases[].cliCommand` veya `commandAliases[].name` değerlerine geri döner +- kanal tetiklemeli kurulum/kanal planlaması, açık kanal etkinleştirme meta + verileri eksik olduğunda eski `channels[]` sahipliğine geri döner -- provider tetiklemeli kurulum/çalışma zamanı planlaması, açık provider +- sağlayıcı tetiklemeli kurulum/çalışma zamanı planlaması, açık sağlayıcı etkinleştirme meta verileri 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üzeylerinin çalışma zamanı yüklenmeden önce Plugin’e ait düşük maliyetli meta verilere -ihtiyacı varsa `setup` kullanın. +Çalışma zamanı yüklenmeden önce kurulum ve onboarding yüzeylerinin düşük maliyetli, +plugin'e ait meta verilere ihtiyaç duyması durumunda `setup` kullanın. ```json { @@ -279,41 +307,43 @@ ihtiyacı varsa `setup` kullanın. } ``` -Üst düzey `cliBackends` geçerliliğini korur ve CLI çıkarım -backend’lerini tanımlamaya devam eder. `setup.cliBackends`, yalnızca meta veri olarak kalması gereken -kontrol 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 arka uçlarını +tanımlamaya devam eder. `setup.cliBackends`, yalnızca meta veri olarak kalması +gereken kontrol düzlemi/kurulum akışları için kurulum odaklı tanımlayıcı +yüzeyidir. -Mevcut olduğunda, `setup.providers` ve `setup.cliBackends`, -kurulum keşfi için tercih edilen önce tanımlayıcı yaklaşımına sahip arama yüzeyidir. Tanımlayıcı yalnızca -aday Plugin’i daraltıyorsa ve kurulum yine de 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`’yi yerinde tutun. +Mevcut olduğunda `setup.providers` ve `setup.cliBackends`, kurulum keşfi için +tercih edilen, önce tanımlayıcı yaklaşımına dayalı 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`yi yerinde tutun. -Kurulum araması Plugin’e ait `setup-api` kodunu çalıştırabildiği için, -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 şekilde başarısız olur. +Kurulum araması plugin'e ait `setup-api` kodunu çalıştırabildiği için, +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 kapalı şekilde 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 açığa çıkan provider kimliği. Normalize edilmiş kimlikleri genel olarak benzersiz tutun. | -| `authMethods` | Hayır | `string[]` | Bu provider’ın tam çalışma zamanı yüklenmeden 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 kontrol edebileceği env değişkenleri. | +| `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öntem kimlikleri. | +| `envVars` | Hayır | `string[]` | Genel kurulum/durum yüzeylerinin plugin çalışma zamanı yüklenmeden önce kontrol edebileceği ortam değişkenleri. | -### `setup` alanları +### setup alanları -| Alan | Gerekli | Tür | Anlamı | -| ------------------ | ------- | ---------- | -------------------------------------------------------------------------------------------------- | -| `providers` | Hayır | `object[]` | Kurulum ve onboarding sırasında açığa çıkan provider kurulum tanımlayıcıları. | -| `cliBackends` | Hayır | `string[]` | Önce tanımlayıcı yaklaşımına sahip kurulum araması için kullanılan kurulum zamanı backend kimlikleri. Normalize edilmiş kimlikleri genel olarak benzersiz tutun. | -| `configMigrations` | Hayır | `string[]` | Bu Plugin’in kurulum yüzeyine ait yapılandırma geçiş kimlikleri. | +| 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[]` | Önce tanımlayıcı yaklaşımına dayalı kurulum araması için kullanılan kurulum zamanı arka uç kimlikleri. Normalize edilmiş kimlikleri genel olarak benzersiz tutun. | +| `configMigrations` | Hayır | `string[]` | Bu plugin'in 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ığı. | -## `uiHints` başvurusu +## uiHints başvurusu -`uiHints`, yapılandırma alan adlarından küçük işleme ipuçlarına giden bir eşlemedir. +`uiHints`, yapılandırma alan adlarından küçük görselleştirme ipuçlarına giden +bir eşlemedir. ```json { @@ -330,19 +360,19 @@ bir kazanan seçmek yerine güvenli şekilde başarısız olur. 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 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. | | `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 -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. +`contracts` öğesini yalnızca OpenClaw'un plugin çalışma zamanını içe aktarmadan +okuyabileceği statik yetenek sahipliği meta verileri için kullanın. ```json { @@ -362,22 +392,22 @@ meta verileri için yalnızca `contracts` kullanın. Her liste isteğe bağlıdır: -| Alan | Tür | Anlamı | -| -------------------------------- | ---------- | ----------------------------------------------------------- | -| `speechProviders` | `string[]` | Bu Plugin’in sahip olduğu speech 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 media-understanding provider kimlikleri. | -| `imageGenerationProviders` | `string[]` | Bu Plugin’in sahip olduğu görsel üretimi provider kimlikleri. | -| `videoGenerationProviders` | `string[]` | Bu Plugin’in sahip olduğu video üretimi provider kimlikleri. | -| `webFetchProviders` | `string[]` | Bu Plugin’in sahip olduğu web-fetch provider kimlikleri. | -| `webSearchProviders` | `string[]` | Bu Plugin’in sahip olduğu web araması provider kimlikleri. | -| `tools` | `string[]` | Paketli sözleşme kontrolleri için bu Plugin’in sahip olduğu ajan araç adları. | +| Alan | Tür | Anlamı | +| -------------------------------- | ---------- | ---------------------------------------------------------------- | +| `speechProviders` | `string[]` | Bu plugin'in sahip olduğu konuşma sağlayıcısı kimlikleri. | +| `realtimeTranscriptionProviders` | `string[]` | Bu plugin'in sahip olduğu gerçek zamanlı transkripsiyon sağlayıcısı kimlikleri. | +| `realtimeVoiceProviders` | `string[]` | Bu plugin'in sahip olduğu gerçek zamanlı ses sağlayıcısı kimlikleri. | +| `mediaUnderstandingProviders` | `string[]` | Bu plugin'in sahip olduğu media-understanding sağlayıcısı kimlikleri. | +| `imageGenerationProviders` | `string[]` | Bu plugin'in sahip olduğu görsel oluşturma sağlayıcısı kimlikleri. | +| `videoGenerationProviders` | `string[]` | Bu plugin'in sahip olduğu video oluşturma sağlayıcısı kimlikleri. | +| `webFetchProviders` | `string[]` | Bu plugin'in sahip olduğu web-fetch sağlayıcısı kimlikleri. | +| `webSearchProviders` | `string[]` | Bu plugin'in sahip olduğu web search sağlayıcısı kimlikleri. | +| `tools` | `string[]` | Paketlenmiş sözleşme kontrolleri için bu plugin'in sahip olduğu ajan araç adları. | -## `channelConfigs` başvurusu +## channelConfigs başvurusu -Bir kanal Plugin’i, çalışma zamanı yüklenmeden önce düşük maliyetli yapılandırma meta verilerine ihtiyaç duyuyorsa -`channelConfigs` kullanın. +Bir kanal plugin'i çalışma zamanı yüklenmeden önce düşük maliyetli yapılandırma +meta verilerine ihtiyaç duyuyorsa `channelConfigs` kullanın. ```json { @@ -406,19 +436,19 @@ Bir kanal Plugin’i, çalışma zamanı yüklenmeden önce düşük maliyetli y Her kanal girdisi şunları içerebilir: -| Alan | Tür | Anlamı | -| ------------- | ------------------------ | --------------------------------------------------------------------------------------- | -| `schema` | `object` | `channels.` için JSON şeması. Bildirilen her kanal yapılandırma girdisi için gereklidir. | -| `uiHints` | `Record` | 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 verileri hazır olmadığında seçici ve inceleme yüzeyleriyle 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 önüne geçmesi gereken eski veya daha düşük öncelikli Plugin kimlikleri. | +| Alan | Tür | Anlamı | +| ------------- | ------------------------ | ------------------------------------------------------------------------------------------- | +| `schema` | `object` | `channels.` için JSON şeması. Bildirilen her kanal yapılandırma girdisi için zorunludur. | +| `uiHints` | `Record` | 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ç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 bu kanalın önüne geçmesi gereken eski veya daha düşük öncelikli plugin kimlikleri. | -## `modelSupport` başvurusu +## modelSupport başvurusu -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 çıkarması gerekiyorsa -`modelSupport` kullanın. +OpenClaw, plugin çalışma zamanı yüklenmeden önce `gpt-5.4` veya +`claude-sonnet-4.6` gibi kısa model kimliklerinden sağlayıcı plugin'inizi +çıkarımlamalıysa `modelSupport` kullanın. ```json { @@ -432,72 +462,74 @@ kısa model kimliklerinden provider Plugin’inizi çıkarması gerekiyorsa OpenClaw şu öncelik sırasını uygular: - açık `provider/model` başvuruları, sahip olan `providers` manifest meta verilerini kullanır -- `modelPatterns`, `modelPrefixes`’in önüne geçer -- paketlenmemiş bir Plugin ile paketli bir Plugin aynı anda eşleşirse, paketlenmemiş - Plugin kazanır -- kullanıcı veya yapılandırma bir provider belirtinceye kadar kalan belirsizlik yok sayılır +- `modelPatterns`, `modelPrefixes` değerlerini geçersiz kılar +- paketlenmemiş bir plugin ve paketlenmiş bir plugin aynı anda eşleşirse paketlenmemiş + plugin kazanır +- kalan belirsizlik, kullanıcı veya yapılandırma bir sağlayıcı belirtinceye kadar yok sayılır Alanlar: | Alan | Tür | Anlamı | -| --------------- | ---------- | ---------------------------------------------------------------------------- | -| `modelPrefixes` | `string[]` | Kısa model kimliklerine karşı `startsWith` ile eşleştirilen önekler. | +| --------------- | ---------- | ----------------------------------------------------------------------------- | +| `modelPrefixes` | `string[]` | Kısa model kimliklerine karşı `startsWith` ile eşleştirilen önekler. | | `modelPatterns` | `string[]` | Profil son eki kaldırıldıktan sonra kısa model kimliklerine karşı eşleştirilen 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 değerlendirmez. +Eski üst düzey yetenek anahtarları kullanım dışıdı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 ve `package.json` +## Manifest ve package.json karşılaştırması -Bu iki dosya farklı amaçlara hizmet eder: +Bu iki dosya farklı görevler üstlenir: -| Dosya | Kullanım amacı | -| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -| `openclaw.plugin.json` | Keşif, yapılandırma doğrulaması, kimlik doğrulama seçeneği meta verileri ve Plugin kodu çalışmadan önce bulunması gereken UI ipuçları | -| `package.json` | npm meta verileri, bağımlılık kurulumu ve giriş noktaları, kurulum engelleme, setup veya katalog meta verileri için kullanılan `openclaw` bloğu | +| Dosya | Kullanım amacı | +| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | +| `openclaw.plugin.json` | Keşif, yapılandırma doğrulama, kimlik doğrulama seçeneği meta verileri ve plugin kodu çalışmadan önce var olması gereken UI ipuçları | +| `package.json` | npm meta verileri, bağımlılık kurulumu ve giriş noktaları, kurulum geçitlemesi, kurulum 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: -- OpenClaw bunu Plugin kodunu yüklemeden önce bilmek zorundaysa, `openclaw.plugin.json` içine koyun -- paketleme, giriş dosyaları veya npm kurulum davranışı ile ilgiliyse, `package.json` içine koyun +- OpenClaw bunu plugin kodunu yüklemeden önce bilmek zorundaysa `openclaw.plugin.json` içine koyun +- paketleme, giriş dosyaları veya npm kurulum davranışı ile 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 -özellikle `package.json` içindeki `openclaw` bloğunda bulunur. +Bazı çalışma zamanı öncesi plugin meta verileri kasıtlı 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. | -| `openclaw.setupEntry` | Onboarding ve ertelenmiş kanal başlatma sırasında kullanılan hafif, yalnızca kurulum amaçlı giriş noktası. | -| `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 tabanlı 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ış herhangi bir şey var mı?” sorusunu yanıtlayabilen hafif kalıcı kimlik doğrulama durumu denetleyicisi meta verileri. | -| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Paketli 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 tabanı kullanan, desteklenen en düşük OpenClaw host sürümü. | -| `openclaw.install.allowInvalidConfigRecovery` | Yapılandırma geçersiz olduğunda dar kapsamlı bir paketli Plugin yeniden kurulum kurtarma yoluna izin verir. | -| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Başlangıç sırasında tam kanal Plugin’inden önce yalnızca kurulum amaçlı kanal yüzeylerinin yüklenmesine izin verir. | +| `openclaw.extensions` | Yerel plugin giriş noktalarını bildirir. | +| `openclaw.setupEntry` | Onboarding ve ertelenmiş kanal başlangıcı sırasında kullanılan, yalnızca kurulum amaçlı hafif giriş noktası. | +| `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 ortam değişkeni temelli kurulum zaten var mı?" sorusunu yanıtlayabilen hafif configured-state denetleyici meta verileri. | +| `openclaw.channel.persistedAuthState` | Tam kanal çalışma zamanını yüklemeden "zaten oturum açılmış herhangi bir şey var mı?" sorusunu yanıtlayabilen hafif persisted-auth denetleyici meta verileri. | +| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Paketlenmiş ve harici olarak 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 minimum OpenClaw ana bilgisayar 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 plugin'inden önce yalnızca kurulum amaçlı kanal yüzeylerinin yüklenmesini sağlar. | -`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 -eski host’larda Plugin’i atlar. +`openclaw.install.minHostVersion`, kurulum ve manifest kayıt defteri yükleme +sırasında zorunlu kılınır. Geçersiz değerler reddedilir; daha yeni ama geçerli +değerler ise daha eski ana bilgisayarlarda plugin'i atlar. -`openclaw.install.allowInvalidConfigRecovery` özellikle dar kapsamlıdır. Bu, -rastgele bozuk yapılandırmaları kurulabilir hâle getirmez. Bugün yalnızca kurulum -akışlarının, belirli eski paketli Plugin yükseltme hatalarından kurtulmasına izin verir; örneğin eksik -bir paketli Plugin yolu veya aynı paketli Plugin için eski bir `channels.` girdisi. -İlgisiz yapılandırma hataları yine de kurulumu engeller ve operatörleri +`openclaw.install.allowInvalidConfigRecovery` kasıtlı olarak dar kapsamlıdır. +Bu, keyfi bozuk yapılandırmaları kurulabilir hale getirmez. Bugün yalnızca +eksik paketlenmiş plugin yolu veya aynı paketlenmiş plugin için eski bir +`channels.` girdisi gibi belirli eski paketlenmiş plugin yükseltme +başarısızlıklarından kurulum akışlarının kurtulmasına izin verir. İlgisiz +yapılandırma hataları yine kurulumu engeller ve operatörleri `openclaw doctor --fix` komutuna yönlendirir. -`openclaw.channel.persistedAuthState`, küçük bir denetleyici -modülü için paket meta verisidir: +`openclaw.channel.persistedAuthState`, küçük bir denetleyici modül için paket +meta verisidir: ```json { @@ -513,13 +545,14 @@ modülü için paket meta verisidir: } ``` -Kurulum, doctor veya yapılandırılmış durum akışları, tam kanal Plugin’i yüklenmeden önce -düşük maliyetli bir evet/hayır kimlik doğrulama yoklamasına ihtiyaç duyduğunda bunu kullanın. Hedef dışa aktarım, -yalnızca kalıcı durumu okuyan küçük bir fonksiyon olmalıdır; bunu tam -kanal çalışma zamanı barrel’i üzerinden yönlendirmeyin. +Kurulum, doctor veya configured-state 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 tabanlı -yapılandırılmış durum kontrolleri için aynı biçimi izler: +`openclaw.channel.configuredState`, düşük maliyetli yalnızca ortam değişkeni +temelli configured denetimleri için aynı biçimi izler: ```json { @@ -535,65 +568,70 @@ yapılandırılmış durum kontrolleri için aynı biçimi izler: } ``` -Bir kanal, yapılandırılmış durumu env’den 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ı gerektiriyorsa, bunun yerine bu mantığı Plugin `config.hasConfiguredState` -hook’unda tutun. +Bir kanal configured-state durumunu ortam değişkenlerinden veya başka 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ı gerektiriyorsa bu +mantığı bunun yerine plugin `config.hasConfiguredState` hook'unda tutun. -## JSON şeması gereksinimleri +## JSON şema gereksinimleri -- **Her Plugin bir JSON şeması bulundurmalıdır**, hiçbir yapılandırma kabul etmese bile. +- **Her plugin bir JSON şeması sağlamalı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 zamanında doğrulanır. +- Ş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 bildirilmedikçe, bilinmeyen `channels.*` anahtarları **hatadır**. +- Bilinmeyen `channels.*` anahtarları, kanal kimliği bir plugin manifesti + tarafından bildirilmedikçe **hatadır**. - `plugins.entries.`, `plugins.allow`, `plugins.deny` ve `plugins.slots.*` - **keşfedilebilir** Plugin kimliklerine başvurmalıdır. Bilinmeyen kimlikler **hatadır**. -- Bir Plugin kurulmuşsa ancak manifesti veya şeması bozuk ya da eksikse, - 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. + **keşfedilebilir** plugin kimliklerine başvurmalıdır. Bilinmeyen kimlikler + **hatadır**. +- Bir plugin kuruluysa ancak manifesti veya şeması bozuk ya da eksikse + 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. [Yapılandırma başvurusu](/tr/gateway/configuration). +Tam `plugins.*` şeması için bkz. [Configuration reference](/tr/gateway/configuration). ## Notlar -- 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 +- Manifest, yerel dosya sistemi yüklemeleri dahil **yerel OpenClaw plugin'leri için zorunludur**. +- Çalışma zamanı plugin modülünü yine 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 destekli kimlik doğrulamayı ve API anahtarı onboarding seçeneğini - bu ilişkiyi core içinde sabit kodlamadan yeniden kullanmasına izin verir. -- `channelEnvVars`, kabuk env geri dönüşü, kurulum - istemleri ve env adlarını incelemek için Plugin çalışma zamanını başlatmaması gereken - benzer kanal yüzeyleri için düşük maliyetli meta veri yoludur. -- `providerAuthChoices`, kimlik doğrulama seçeneği seçicileri, - `--auth-choice` çözümlemesi, tercih edilen provider eşlemesi ve basit onboarding - CLI flag kaydı için provider çalışma zamanı yüklenmeden önce kullanılan 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). -- Münhasır Plugin türleri `plugins.slots.*` üzerinden seçilir. - - `kind: "memory"` değeri `plugins.slots.memory` tarafından seçilir. +- 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ükleyici 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 ortam değişkeni 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 ortam değişkenlerini, kimlik doğrulama profillerini, yapılandırma + destekli kimlik doğrulamayı ve API anahtarı onboarding seçeneğini bu ilişkiyi + core içinde sabit kodlamadan yeniden kullanmasına olanak tanır. +- `channelEnvVars`, kabuk ortam değişkeni geri dönüşü, kurulum istemleri ve + ortam değişkeni adlarını incelemek için plugin çalışma zamanını başlatmaması + gereken benzer kanal yüzeyleri için düşük maliyetli meta veri yoludur. +- `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). +- Özel plugin türleri `plugins.slots.*` üzerinden seçilir. + - `kind: "memory"` değeri `plugins.slots.memory` ile 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. -- Plugin’iniz yerel modüllere bağlıysa, derleme adımlarını ve - tüm paket yöneticisi izin listesi gereksinimlerini belgelendirin (örneğin pnpm `allow-build-scripts` + ile seçilir (varsayılan: yerleşik `legacy`). +- Bir plugin bunlara ihtiyaç duymuyorsa `channels`, `providers`, `cliBackends` + ve `skills` alanları atlanabilir. +- Plugin'iniz yerel modüllere bağlıysa derleme adımlarını ve varsa paket + yöneticisi izin listesi gereksinimlerini belgelendirin (örneğin, pnpm + `allow-build-scripts` - `pnpm rebuild `). ## İlgili -- [Plugin Oluşturma](/tr/plugins/building-plugins) — Plugin’lere başlarken -- [Plugin Mimarisi](/tr/plugins/architecture) — iç mimari -- [SDK Genel Bakış](/tr/plugins/sdk-overview) — Plugin SDK başvurusu +- [Building Plugins](/tr/plugins/building-plugins) — plugin'lerle çalışmaya başlama +- [Plugin Architecture](/tr/plugins/architecture) — iç mimari +- [SDK Overview](/tr/plugins/sdk-overview) — Plugin SDK başvurusu diff --git a/docs/tr/plugins/sdk-channel-plugins.md b/docs/tr/plugins/sdk-channel-plugins.md index db198eca4..728a4e670 100644 --- a/docs/tr/plugins/sdk-channel-plugins.md +++ b/docs/tr/plugins/sdk-channel-plugins.md @@ -1,84 +1,110 @@ --- read_when: - - Yeni bir mesajlaşma kanal plugin'i oluşturuyorsunuz + - 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 sidebarTitle: Channel Plugins -summary: OpenClaw için bir mesajlaşma kanal plugin'i oluşturma adım adım kılavuzu +summary: OpenClaw için bir mesajlaşma kanal Plugin'i oluşturma adım adım kılavuzu title: Kanal Plugin'leri Oluşturma x-i18n: - generated_at: "2026-04-11T02:46:22Z" + generated_at: "2026-04-15T08:53:15Z" model: gpt-5.4 provider: openai - source_hash: 8a026e924f9ae8a3ddd46287674443bcfccb0247be504261522b078e1f440aef + source_hash: a7f4c746fe3163a8880e14c433f4db4a1475535d91716a53fb879551d8d62f65 source_path: plugins/sdk-channel-plugins.md workflow: 15 --- # Kanal Plugin'leri Oluşturma -Bu kılavuz, OpenClaw'ı bir mesajlaşma platformuna bağlayan bir kanal plugin'i oluşturma sürecini adım adım açıklar. Sonunda DM güvenliği, eşleme, yanıt dizilimi ve giden mesajlaşma özelliklerine sahip çalışan bir kanalınız olacak. +Bu kılavuz, OpenClaw'ı bir mesajlaşma platformuna bağlayan bir kanal plugin'i oluşturma sürecini adım adım açıklar. Sonunda DM güvenliği, eşleme, yanıt iş parçacığı oluşturma ve giden mesajlaşma özelliklerine sahip çalışan bir kanalınız olacak. Daha önce hiç OpenClaw plugin'i oluşturmadıysanız, temel paket - yapısı ve manifest kurulumu için önce - [Başlangıç](/tr/plugins/building-plugins) bölümünü okuyun. + yapısı ve manifest kurulumu için önce [Başlangıç](/tr/plugins/building-plugins) + bölümünü okuyun. ## Kanal plugin'leri nasıl çalışır -Kanal plugin'lerinin kendi send/edit/react araçlarına ihtiyacı yoktur. OpenClaw, çekirdekte tek bir paylaşılan `message` aracı tutar. Plugin'iniz şunlardan sorumludur: +Kanal plugin'lerinin kendi send/edit/react araçlarına ihtiyacı yoktur. OpenClaw, çekirdekte tek bir paylaşılan `message` aracını tutar. Plugin'iniz şunlardan sorumludur: -- **Yapılandırma** — hesap çözümleme ve kurulum sihirbazı -- **Güvenlik** — DM politikası ve allowlist'ler -- **Eşleme** — DM onay akışı -- **Oturum dil bilgisi** — sağlayıcıya özgü konuşma kimliklerinin temel sohbetlere, iş parçacığı kimliklerine ve üst geri dönüşlere nasıl eşlendiği -- **Giden** — platforma metin, medya ve anket gönderme -- **İş parçacığı oluşturma** — yanıtların nasıl dizildiği +- **Config** — hesap çözümleme ve kurulum sihirbazı +- **Security** — DM ilkesi ve izin listeleri +- **Pairing** — DM onay akışı +- **Session grammar** — sağlayıcıya özgü konuşma kimliklerinin temel sohbetlere, iş parçacığı kimliklerine ve üst öğe geri dönüşlerine nasıl eşlendiği +- **Outbound** — platforma metin, medya ve anket gönderme +- **Threading** — yanıtların nasıl iş parçacığına alındığı -Çekirdek, paylaşılan mesaj aracından, istem bağlantılarından, dış oturum anahtarı biçiminden, genel `:thread:` kayıt takibinden ve sevkten sorumludur. +Çekirdek; paylaşılan message aracından, istem bağlamasından, dış oturum-anahtarı biçiminden, genel `:thread:` kayıtlarından ve dağıtımdan sorumludur. -Platformunuz konuşma kimliklerinin içinde ek kapsam saklıyorsa, bu ayrıştırmayı plugin içinde `messaging.resolveSessionConversation(...)` ile tutun. Bu, `rawId` değerini temel konuşma kimliğine, isteğe bağlı iş parçacığı kimliğine, açık `baseConversationId` değerine ve herhangi bir `parentConversationCandidates` listesine 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. +Kanalınız medya kaynakları taşıyan message-tool parametreleri ekliyorsa, bu +parametre adlarını `describeMessageTool(...).mediaSourceParams` üzerinden açığa çıkarın. +Çekirdek bu açık listeyi sandbox yol normalleştirmesi ve giden medya erişim +ilkesi için kullanır; böylece plugin'lerin sağlayıcıya özgü avatar, +ek veya kapak görseli parametreleri için paylaşılan çekirdekte özel durumlara +ihtiyacı olmaz. +Tercihen +`{ "set-profile": ["avatarUrl", "avatarPath"] }` gibi eylem anahtarlı bir eşleme döndürün; böylece ilgisiz eylemler başka bir eylemin medya argümanlarını devralmaz. +Düz bir dizi de, açığa çıkarılan tüm eylemler arasında bilerek paylaşılan +parametreler için çalışmaya devam eder. -Kanal kayıt defteri başlatılmadan önce aynı ayrıştırmaya ihtiyaç duyan paketlenmiş plugin'ler, eşleşen bir `resolveSessionConversation(...)` dışa aktarımına sahip üst düzey bir `session-key-api.ts` dosyası da sunabilir. Çekirdek bu önyükleme için güvenli yüzeyi yalnızca çalışma zamanı plugin kayıt defteri henüz kullanılamadığında kullanır. +Platformunuz konuşma kimlikleri içinde ek kapsam depoluyorsa, bu ayrıştırmayı +plugin içinde `messaging.resolveSessionConversation(...)` ile tutun. Bu, +`rawId` değerini temel konuşma kimliğine, isteğe bağlı iş parçacığı +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 en geniş/temel konuşmaya doğru sıralı tutun. -`messaging.resolveParentConversationCandidates(...)`, bir plugin'in yalnızca genel/ham kimliğin üzerine üst geri dönüşlere ihtiyaç duyması durumunda eski uyumluluk geri dönüşü olarak kullanılmaya devam eder. Her iki kanca da varsa, çekirdek önce `resolveSessionConversation(...).parentConversationCandidates` kullanır ve kanonik kanca bunları atladığında yalnızca `resolveParentConversationCandidates(...)` kancasına geri döner. +Kanal kayıt defteri başlatılmadan önce aynı ayrıştırmaya ihtiyaç duyan paketli +plugin'ler ayrıca eşleşen bir +`resolveSessionConversation(...)` dışa aktarımı içeren üst düzey bir `session-key-api.ts` +dosyası da sunabilir. Çekirdek bu önyükleme açısından güvenli yüzeyi +yalnızca çalışma zamanı plugin kayıt defteri henüz kullanılabilir olmadığında kullanır. + +`messaging.resolveParentConversationCandidates(...)`, bir plugin yalnızca +genel/raw kimliğin üzerine üst öğe 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` kullanır ve yalnızca kanonik kanca bunları +atlanırsa `resolveParentConversationCandidates(...)` kancasına geri döner. ## Onaylar ve kanal yetenekleri Çoğu kanal plugin'inin onaya özgü koda ihtiyacı yoktur. -- Çekirdek aynı sohbette `/approve`, paylaşılan onay düğmesi yükleri ve genel geri dönüş teslimatından sorumludur. -- Kanal onaya özgü davranış gerektiriyorsa, kanal plugin'inde tek bir `approvalCapability` nesnesi tercih edin. -- `ChannelPlugin.approvals` kaldırılmıştır. Onay teslimatı/yerel işleme/oluşturma/kimlik doğrulama bilgilerini `approvalCapability` içine koyun. -- `plugin.auth` yalnızca login/logout içindir; çekirdek artık bu nesneden onay kimlik doğrulama kancalarını okumaz. -- `approvalCapability.authorizeActorAction` ve `approvalCapability.getActionAvailabilityState`, onay kimlik doğrulaması için kanonik bağlantı yüzeyidir. -- Aynı sohbette onay kimlik doğrulama kullanılabilirliği için `approvalCapability.getActionAvailabilityState` kullanın. -- Kanalınız yerel exec onayları sunuyorsa, başlatan yüzey/yerel istemci durumu aynı sohbet onay kimlik doğrulamasından farklı olduğunda `approvalCapability.getExecInitiatingSurfaceState` kullanın. Çekirdek 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 durumda bunu doldurur. -- Yinelenen yerel onay istemlerini gizleme veya teslimattan önce yazıyor göstergeleri gönderme gibi kanala özgü yük yaşam döngüsü davranışları için `outbound.shouldSuppressLocalPayloadPrompt` veya `outbound.beforeDeliverPayload` kullanın. -- `approvalCapability.delivery` öğesini yalnızca yerel onay yönlendirmesi veya geri dönüş bastırma için kullanın. -- Kanala ait yerel onay bilgileri için `approvalCapability.nativeRuntime` kullanın. Çalışma anında modülünüzü isteğe göre içe aktarabilen ve yine de çekirdeğin onay yaşam döngüsünü kurmasına izin veren `createLazyChannelApprovalNativeRuntimeAdapter(...)` ile bunu sıcak kanal giriş noktalarında lazy tutun. -- Kanal gerçekten paylaşılan oluşturucu yerine özel onay yüklerine 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 ayarlarını 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..accounts..execApprovals.*` gibi hesap kapsamlı yollar oluşturmalıdır. -- Bir kanal mevcut yapılandırmadan kararlı sahip benzeri DM kimliklerini çıkarabiliyorsa, onaya özgü çekirdek mantığı eklemeden aynı sohbette `/approve` kısıtlamak için `openclaw/plugin-sdk/approval-runtime` içindeki `createResolvedApproverActionAuthAdapter` kullanın. -- Kanalınız yerel onay teslimatına ihtiyaç duyuyorsa, kanal kodunu hedef normalleştirme ile taşıma/sunum bilgilerine odaklı tutun. `openclaw/plugin-sdk/approval-runtime` içinden `createChannelExecApprovalProfile`, `createChannelNativeOriginTargetResolver`, `createChannelApproverDmTargetResolver` ve `createApproverRestrictedNativeApprovalCapability` kullanın. Kanala özgü bilgileri, ideal olarak `createChannelApprovalNativeRuntimeAdapter(...)` veya `createLazyChannelApprovalNativeRuntimeAdapter(...)` aracılığıyla, `approvalCapability.nativeRuntime` arkasına koyun; böylece çekirdek işleyiciyi kurabilir ve istek filtreleme, yönlendirme, tekilleştirme, süre dolumu, gateway aboneliği ve başka yere yönlendirildi bildirimlerinin sahipliğini alabilir. `nativeRuntime` birkaç küçük bağlantıya ayrılmıştır: +- Çekirdek aynı sohbet içi `/approve`, paylaşılan onay düğmesi payload'ları ve genel geri dönüş teslimatından sorumludur. +- Kanal onaya özgü davranış gerektiriyorsa, kanal plugin'inde tek bir `approvalCapability` nesnesini tercih edin. +- `ChannelPlugin.approvals` kaldırıldı. Onay teslimatı/yerel işleme/görselleştirme/yetkilendirme bilgilerini `approvalCapability` içine koyun. +- `plugin.auth` yalnızca giriş/çıkış içindir; çekirdek artık bu nesneden onay yetkilendirme kancalarını okumaz. +- `approvalCapability.authorizeActorAction` ve `approvalCapability.getActionAvailabilityState`, onay yetkilendirmesi için kanonik kancadır. +- Aynı sohbet içi onay yetkilendirme kullanılabilirliği için `approvalCapability.getActionAvailabilityState` kullanın. +- Kanalınız yerel exec onaylarını açığa çıkarıyorsa, başlatıcı yüzey/yerel istemci durumu aynı sohbet içi onay yetkilendirmesinden farklı olduğunda `approvalCapability.getExecInitiatingSurfaceState` kullanın. Çekirdek bu exec'e özgü kancayı `enabled` ile `disabled` durumlarını ayırt etmek, başlatıcı 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(...)` bunu yaygın durum için doldurur. +- Yinelenen yerel onay istemlerini gizleme veya teslimattan ö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` yalnızca yerel onay yönlendirmesi veya geri dönüş bastırma için kullanın. +- Kanala ait yerel onay bilgileri için `approvalCapability.nativeRuntime` kullanın. Bunu sıcak kanal giriş noktalarında `createLazyChannelApprovalNativeRuntimeAdapter(...)` ile tembel tutun; bu, çekirdeğin onay yaşam döngüsünü oluşturmaya devam etmesine izin verirken çalışma zamanı modülünüzü gerektiğinde içe aktarabilir. +- Kanalın paylaşılan oluşturucu yerine gerçekten özel onay payload'larına ihtiyacı olduğunda yalnızca `approvalCapability.render` kullanın. +- Kanal, devre dışı yol yanıtının yerel exec onaylarını etkinleştirmek için gereken tam config ayarlarını açıklamasını istiyorsa `approvalCapability.describeExecApprovalSetup` kullanın. Bu kanca `{ channel, channelLabel, accountId }` alır; adlandırılmış hesap kanalları, üst düzey varsayılanlar yerine `channels..accounts..execApprovals.*` gibi hesap kapsamlı yolları oluşturmalıdır. +- Bir kanal mevcut config'den kararlı sahip benzeri DM kimliklerini çıkarabiliyorsa, onaya özgü çekirdek mantığı eklemeden aynı sohbet içi `/approve` erişimini kısıtlamak için `openclaw/plugin-sdk/approval-runtime` içinden `createResolvedApproverActionAuthAdapter` kullanın. +- Kanalın yerel onay teslimatına 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. Kanala özgü bilgileri `approvalCapability.nativeRuntime` arkasına koyun; tercihen `createChannelApprovalNativeRuntimeAdapter(...)` veya `createLazyChannelApprovalNativeRuntimeAdapter(...)` üzerinden. Böylece çekirdek işleyiciyi oluşturabilir ve istek filtreleme, yönlendirme, tekilleştirme, süre sonu, Gateway aboneliği ve başka yere yönlendirildi bildirimlerini yönetebilir. `nativeRuntime` birkaç küçük parçaya 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 bekleyen/çözülen/süresi dolan yerel yüklere veya nihai eylemlere eşleme +- `presentation` — paylaşılan onay görünüm modelini beklemede/çözümlendi/süresi doldu yerel payload'larına veya son eylemlere eşleme - `transport` — hedefleri hazırlama ve yerel onay mesajlarını gönderme/güncelleme/silme -- `interactions` — yerel düğmeler veya tepkiler için isteğe bağlı bağlama/çözme/eylem temizleme kancaları +- `interactions` — yerel düğmeler veya tepkiler için isteğe bağlı bind/unbind/clear-action kancaları - `observe` — isteğe bağlı teslimat tanılama kancaları -- Kanal çalışma anına ait istemci, belirteç, Bolt uygulaması veya webhook alıcısı gibi nesnelere ihtiyaç duyuyorsa, bunları `openclaw/plugin-sdk/channel-runtime-context` üzerinden kaydedin. Genel runtime-context kayıt defteri, çekirdeğin kanal başlangıç durumundan yetenek odaklı işleyicileri başlatmasına onaya özgü sarmalayıcı bağlayıcı eklemeden izin verir. -- Yeteneğe dayalı bağlantı yüzeyi henüz yeterince ifade gücüne sahip değilse yalnızca daha alt düzey `createChannelApprovalHandler` veya `createChannelNativeApprovalRuntime` çözümlerine başvurun. -- Yerel onay kanalları hem `accountId` hem de `approvalKind` değerlerini bu yardımcılar üzerinden yönlendirmelidir. `accountId`, çok hesaplı onay politikasını doğru bot hesabı kapsamına oturtur; `approvalKind` ise çekirdekte sabit kodlu dallar olmadan exec ve plugin onay davranışını kanala açık tutar. -- Çekirdek 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 kaynak + onaylayıcı-DM yönlendirmesini sunmalı ve çekirdeğin, başlatan sohbete herhangi bir bildirim göndermeden önce gerçek teslimatları toplamasına izin vermelidir. -- Teslim edilen onay kimliği türünü uçtan uca koruyun. Yerel istemciler, exec ve plugin onay yönlendirmesini kanala özgü durumdan tahmin etmemeli veya yeniden yazmamalıdır. -- Farklı onay türleri bilinçli olarak farklı yerel yüzeyler sunabilir. - Mevcut paketlenmiş örnekler: +- 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, çekirdeğin onaya özgü sarmalayıcı yapıştırıcısı eklemeden kanal başlangıç durumundan yetenek odaklı işleyicileri önyüklemesine olanak tanır. +- Yalnızca yetenek odaklı kanca henüz yeterince ifade gücüne sahip değilse daha alt düzey `createChannelApprovalHandler` veya `createChannelNativeApprovalRuntime` çözümlerine başvurun. +- Yerel onay kanalları, bu yardımcılar üzerinden hem `accountId` hem de `approvalKind` yönlendirmelidir. `accountId`, çok hesaplı onay ilkesini doğru bot hesabı kapsamına taşır; `approvalKind` ise exec ile plugin onayı davranışını çekirdekte sabit kodlu dallanmalar olmadan kanal için kullanılabilir tutar. +- Çekirdek artık onay yeniden yönlendirme bildirimlerinden de sorumludur. 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 çekirdek, başlatıcı sohbete herhangi bir bildirim göndermeden önce gerçek teslimatları toplasın. +- 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. +- Farklı onay türleri bilerek farklı yerel yüzeyler açığa çıkarabilir. + Güncel paketli ö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önlendirmesini ve reaction UX'i korurken, kimlik doğrulamanın onay türüne göre farklılaşmasına da izin verir. -- `createApproverRestrictedNativeApprovalAdapter` hâlâ uyumluluk sarmalayıcısı olarak vardır, ancak yeni kod `capability` oluşturucusunu tercih etmeli ve plugin üzerinde `approvalCapability` sunmalıdır. + - Matrix, yetkilendirmenin onay türüne göre farklılaşmasına izin verirken exec ve plugin onayları için aynı yerel DM/kanal yönlendirmesi ve tepki kullanıcı deneyimini korur. +- `createApproverRestrictedNativeApprovalAdapter` uyumluluk sarmalayıcısı olarak hâlâ vardır, ancak yeni kod `capability` oluşturucusunu tercih etmeli ve plugin üzerinde `approvalCapability` açığa çıkarmalıdır. -Sıcak kanal giriş noktalarında, bu ailenin yalnızca bir parçasına ihtiyaç duyuyorsanız daha dar çalışma zamanı alt yollarını tercih edin: +Sıcak kanal giriş noktaları için, bu ailenin yalnızca bir parçasına +ihtiyacınız olduğunda daha dar runtime alt yollarını tercih edin: - `openclaw/plugin-sdk/approval-auth-runtime` - `openclaw/plugin-sdk/approval-client-runtime` @@ -90,88 +116,101 @@ Sıcak kanal giriş noktalarında, bu ailenin yalnızca bir parçasına ihtiyaç - `openclaw/plugin-sdk/approval-reply-runtime` - `openclaw/plugin-sdk/channel-runtime-context` -Benzer şekilde, daha geniş şemsiye yüzeye ihtiyaç duymadığınızda `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`, `openclaw/plugin-sdk/reply-reference` ve `openclaw/plugin-sdk/reply-chunking` yollarını tercih edin. -Özellikle kurulum için: +Kurulum için özel olarak: -- `openclaw/plugin-sdk/setup-runtime`, çalışma zamanı için güvenli kurulum yardımcılarını kapsar: - içe aktarma için 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 açısından güvenli kurulum yama bağdaştırıcıları (`createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, - `createSetupInputPresenceValidator`), arama notu çıktısı, + `createSetupInputPresenceValidator`), lookup-note çıktısı, `promptResolvedAllowFrom`, `splitSetupEntries` ve devredilmiş - kurulum proxy oluşturucuları -- `openclaw/plugin-sdk/setup-adapter-runtime`, `createEnvPatchedAccountSetupAdapter` için dar, ortam farkındalıklı bağdaştırıcı yüzeyidir -- `openclaw/plugin-sdk/channel-setup`, isteğe bağlı kurulum oluşturucularını ve birkaç kurulum açısından güvenli ilkel yapıyı kapsar: + setup-proxy oluşturucuları +- `openclaw/plugin-sdk/setup-adapter-runtime`, `createEnvPatchedAccountSetupAdapter` + için dar, ortam farkındalıklı bağdaştırıcı + kancasıdır +- `openclaw/plugin-sdk/channel-setup`, isteğe bağlı kurulum oluşturucularını ve birkaç kurulum açısından güvenli ilkel öğeyi kapsar: `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, -Kanalınız ortam değişkeni odaklı kurulum veya kimlik doğrulamayı destekliyorsa ve genel başlangıç/yapılandırma akışlarının çalışma zamanı yüklenmeden önce bu ortam adlarını bilmesi gerekiyorsa, bunları plugin manifest'inde `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 ortam güdümlü kurulum veya yetkilendirme destekliyorsa ve genel başlangıç/config +akışlarının çalışma zamanı yüklenmeden önce bu ortam adlarını bilmesi gerekiyorsa, +bunları plugin manifest içinde `channelEnvVars` ile bildirin. Kanal çalışma zamanı `envVars` +veya yerel sabitlerini yalnızca operatöre dönük metinler için kullanı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 ihtiyaç duyuyorsanız daha geniş `openclaw/plugin-sdk/setup` yüzeyini kullanın; örneğin +- yalnızca daha ağır paylaşılan kurulum/config yardımcılarına da ihtiyaç duyduğunuzda + daha geniş `openclaw/plugin-sdk/setup` kancasını kullanın; örneğin `moveSingleAccountChannelSectionToDefaultAccount(...)` -Kanalınız yalnızca kurulum yüzeylerinde "önce bu plugin'i yükleyin" bilgisini göstermek istiyorsa, `createOptionalChannelSetupSurface(...)` tercih edin. Oluşturulan bağdaştırıcı/kurulum sihirbazı yapılandırma yazımlarında ve sonlandırmada kapalı başarısız olur; ayrıca doğrulama, sonlandırma ve doküman bağlantısı metinlerinde aynı kurulum gerekli mesajını yeniden kullanır. +Kanalınız yalnızca kurulum yüzeylerinde "önce bu plugin'i yükleyin" bilgisini +duyurmak istiyorsa, `createOptionalChannelSetupSurface(...)` çözümünü tercih edin. Üretilen +bağdaştırıcı/sihirbaz config yazımlarında ve sonlandırmada güvenli biçimde başarısız olur +ve doğrulama, sonlandırma ve docs-link +metinlerinde aynı yükleme gerekli mesajını yeniden kullanır. -Diğer sıcak kanal yollarında da daha geniş eski yüzeyler yerine dar yardımcıları tercih edin: +Diğer sıcak kanal yolları için, daha geniş eski yüzeyler yerine daha 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`, +- çok hesaplı config ve + 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 yön/zarf ve kaydet-ve-sevk bağlantısı için - `openclaw/plugin-sdk/inbound-envelope` ve +- gelen rota/zarf 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şleme için `openclaw/plugin-sdk/messaging-targets` -- Medya yükleme ve giden kimlik/gönderim delegeleri için - `openclaw/plugin-sdk/outbound-media` ve +- hedef ayrıştırma/eşleştirme için `openclaw/plugin-sdk/messaging-targets` +- medya yükleme ile giden + kimlik/gönderim delegeleri için `openclaw/plugin-sdk/outbound-media` ve `openclaw/plugin-sdk/outbound-runtime` -- İş parçacığı bağlama yaşam döngüsü ve bağdaştırıcı kaydı için - `openclaw/plugin-sdk/thread-bindings-runtime` -- Yalnızca eski bir ajan/medya yük alan düzeni hâlâ gerekiyorsa - `openclaw/plugin-sdk/agent-media-payload` -- Telegram özel komut normalleştirme, yinelenen/çakışma doğrulaması ve geri dönüş açısından kararlı komut yapılandırma sözleşmesi için - `openclaw/plugin-sdk/telegram-command-config` +- iş parçacığı bağlama yaşam döngüsü + ve bağdaştırıcı kaydı için `openclaw/plugin-sdk/thread-bindings-runtime` +- yalnızca eski agent/media + payload alan düzeni hâlâ gerekiyorsa `openclaw/plugin-sdk/agent-media-payload` +- Telegram özel komut + normalizasyonu, yinelenen/çakışan doğrulama ve geri dönüş açısından kararlı komut + config sözleşmesi için `openclaw/plugin-sdk/telegram-command-config` -Yalnızca kimlik doğrulama kullanan kanallar genellikle varsayılan yolda kalabilir: çekirdek onayları yönetir ve plugin yalnızca giden/kimlik doğrulama yeteneklerini sunar. Matrix, Slack, Telegram ve özel sohbet taşıyıcıları gibi yerel onay kanalları, kendi onay yaşam döngülerini yazmak yerine paylaşılan yerel yardımcıları kullanmalıdır. +Yalnızca yetkilendirme kullanan kanallar genellikle varsayılan yolda kalabilir: çekirdek onayları yönetir ve plugin yalnızca outbound/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 yazmak yerine paylaşılan yerel yardımcıları kullanmalıdır. -## Gelen mention politikası +## Gelen mention ilkesi -Gelen mention işlemeyi iki katmana ayrılmış halde tutun: +Gelen mention işlemeyi iki katmana bölünmüş tutun: - plugin'e ait kanıt toplama -- paylaşılan politika değerlendirmesi +- paylaşılan ilke değerlendirmesi Paylaşılan katman için `openclaw/plugin-sdk/channel-inbound` kullanın. Plugin'e yerel mantık için uygun örnekler: -- bottan yanıt algılama -- bottan alıntı algılama -- iş parçacığı katılım kontrolleri -- hizmet/sistem mesajı hariç tutmaları +- bot'a yanıt algılama +- bot alıntısı algılama +- iş parçacığı katılımı kontrolleri +- servis/sistem mesajı hariç tutmaları - bot katılımını kanıtlamak için gereken platforma özgü önbellekler -Paylaşılan yardımcı için uygun olanlar: +Paylaşılan yardımcı için uygun örnekler: - `requireMention` - açık mention sonucu -- örtük mention allowlist -- komut bypass +- örtük mention izin listesi +- komut baypası - son atlama kararı Tercih edilen akış: 1. Yerel mention bilgilerini hesaplayın. 2. Bu bilgileri `resolveInboundMentionDecision({ facts, policy })` içine geçirin. -3. Gelen kapınızda `decision.effectiveWasMentioned`, `decision.shouldBypassMention` ve `decision.shouldSkip` kullanın. +3. Gelen kapınızda `decision.effectiveWasMentioned`, `decision.shouldBypassMention` ve `decision.shouldSkip` değerlerini kullanın. ```typescript import { @@ -210,7 +249,7 @@ const decision = resolveInboundMentionDecision({ if (decision.shouldSkip) return; ``` -`api.runtime.channel.mentions`, çalışma zamanı eklemesine zaten bağımlı olan +`api.runtime.channel.mentions`, çalışma zamanı enjeksiyonuna zaten bağımlı olan paketlenmiş kanal plugin'leri için aynı paylaşılan mention yardımcılarını sunar: - `buildMentionRegexes` @@ -219,18 +258,19 @@ paketlenmiş kanal plugin'leri için aynı paylaşılan mention yardımcıların - `implicitMentionKindWhen` - `resolveInboundMentionDecision` -Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarımları olarak -`openclaw/plugin-sdk/channel-inbound` üzerinde kalır. Yeni kod, +Eski `resolveMentionGating*` yardımcıları, +yalnızca uyumluluk dışa aktarımları olarak +`openclaw/plugin-sdk/channel-inbound` üzerinde kalmaya devam eder. Yeni kod `resolveInboundMentionDecision({ facts, policy })` kullanmalıdır. -## İzlenecek yol +## Adım adım örnek - Standart plugin dosyalarını oluşturun. `package.json` içindeki `channel` alanı, + Standart plugin dosyalarını oluşturun. `package.json` içindeki `channel` alanı bunun bir kanal plugin'i olmasını sağlar. Tam paket meta verisi yüzeyi için - [Plugin Kurulumu ve Yapılandırması](/tr/plugins/sdk-setup#openclaw-channel) bölümüne bakın: + bkz. [Plugin Kurulumu ve Config](/tr/plugins/sdk-setup#openclaw-channel): ```json package.json @@ -244,7 +284,7 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım "channel": { "id": "acme-chat", "label": "Acme Chat", - "blurb": "Connect OpenClaw to Acme Chat." + "blurb": "OpenClaw'ı Acme Chat'e bağlayın." } } } @@ -256,7 +296,7 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım "kind": "channel", "channels": ["acme-chat"], "name": "Acme Chat", - "description": "Acme Chat channel plugin", + "description": "Acme Chat kanal plugin'i", "configSchema": { "type": "object", "additionalProperties": false, @@ -280,10 +320,10 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım - `ChannelPlugin` arayüzünde birçok isteğe bağlı bağdaştırıcı yüzeyi vardır. En - az olanla başlayın — `id` ve `setup` — ve ihtiyaç duydukça bağdaştırıcılar ekleyin. + `ChannelPlugin` arayüzü birçok isteğe bağlı bağdaştırıcı yüzeyine sahiptir. En az + gereksinimle başlayın — `id` ve `setup` — ve ihtiyaç duydukça bağdaştırıcılar ekleyin. - `src/channel.ts` oluşturun: + `src/channel.ts` dosyasını oluşturun: ```typescript src/channel.ts import { @@ -348,15 +388,15 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım idLabel: "Acme Chat kullanıcı adı", message: "Kimliğinizi doğrulamak için bu kodu gönderin:", notify: async ({ target, code }) => { - await acmeChatApi.sendDm(target, `Pairing code: ${code}`); + await acmeChatApi.sendDm(target, `Eşleme kodu: ${code}`); }, }, }, - // İş parçacığı oluşturma: yanıtlar nasıl iletilir + // İş parçacığı oluşturma: yanıtlar nasıl teslim edilir threading: { topLevelReplyToMode: "reply" }, - // Giden: platforma mesaj gönderme + // Giden: platforma mesaj gönder outbound: { attachedResults: { sendText: async (params) => { @@ -377,23 +417,24 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım ``` - Düşük düzeyli bağdaştırıcı arayüzlerini elle uygulamak yerine, - bildirimsel seçenekler geçirirsiniz ve oluşturucu bunları birleştirir: + Düşük seviyeli bağdaştırıcı arayüzlerini elle uygulamak yerine, + bildirime dayalı seçenekler verirsiniz ve oluşturucu bunları birleştirir: | Seçenek | Bağladığı şey | | --- | --- | - | `security.dm` | Yapılandırma alanlarından kapsamlı DM güvenlik çözücüsü | - | `pairing.text` | Kod alışverişli metin tabanlı DM eşleme akışı | - | `threading` | Reply-to modu çözücüsü (sabit, hesap kapsamlı veya özel) | - | `outbound.attachedResults` | Sonuç meta verisi döndüren gönderim işlevleri (mesaj kimlikleri) | + | `security.dm` | Config alanlarından kapsamlı DM güvenlik çözümleyicisi | + | `pairing.text` | Kod alışverişiyle metin tabanlı DM eşleme akışı | + | `threading` | Reply-to modu çözümleyicisi (sabit, hesap kapsamlı veya özel) | + | `outbound.attachedResults` | Sonuç meta verisi döndüren gönderim fonksiyonları (mesaj kimlikleri) | - Tam denetime ihtiyaç duyuyorsanız bildirimsel seçenekler yerine ham bağdaştırıcı nesneleri de geçebilirsiniz. + Tam denetime ihtiyaç duyarsanız bildirime dayalı seçenekler yerine ham + bağdaştırıcı nesneleri de geçebilirsiniz. - `index.ts` oluşturun: + `index.ts` dosyasını oluşturun: ```typescript index.ts import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core"; @@ -402,20 +443,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 channel plugin", + description: "Acme Chat kanal plugin'i", plugin: acmeChatPlugin, registerCliMetadata(api) { api.registerCli( ({ program }) => { program .command("acme-chat") - .description("Acme Chat management"); + .description("Acme Chat yönetimi"); }, { descriptors: [ { name: "acme-chat", - description: "Acme Chat management", + description: "Acme Chat yönetimi", hasSubcommands: false, }, ], @@ -428,16 +469,17 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım }); ``` - Kanala ait 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 çıktısında bunları gösterebilir, - normal tam yüklemeler ise gerçek komut kaydı için aynı tanımlayıcıları almaya devam eder. - `registerFull(...)` yalnızca çalışma zamanına özgü işler için kullanılmalıdır. - `registerFull(...)` gateway RPC yöntemleri kaydediyorsa, + 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 bunları kök yardımda gösterebilir, + normal tam yüklemeler de gerçek komut kaydı için aynı tanımlayıcıları alır. + `registerFull(...)` yöntemini çalışma zamanına özgü işler için kullanın. + `registerFull(...)` Gateway RPC yöntemleri kaydediyorsa, plugin'e özgü bir önek kullanın. Çekirdek yönetici ad alanları (`config.*`, `exec.approvals.*`, `wizard.*`, `update.*`) ayrılmıştır ve her zaman - `operator.admin` olarak çözülür. + `operator.admin` çözümüne gider. `defineChannelPluginEntry`, kayıt modu ayrımını otomatik olarak yönetir. Tüm - seçenekler için [Giriş Noktaları](/tr/plugins/sdk-entrypoints#definechannelpluginentry) bölümüne bakın. + seçenekler için bkz. + [Giriş Noktaları](/tr/plugins/sdk-entrypoints#definechannelpluginentry). @@ -451,27 +493,28 @@ 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, kurulum akışları sırasında ağır çalışma zamanı kodunun çekilmesini önler. - Ayrıntılar için [Kurulum ve Yapılandırma](/tr/plugins/sdk-setup#setup-entry) bölümüne bakın. + OpenClaw, kanal devre dışıysa + veya yapılandırılmamışsa tam giriş yerine bunu yükler. + Bu, kurulum akışları sırasında ağır çalışma zamanı kodunun yüklenmesini önler. + Ayrıntılar için bkz. [Kurulum ve Config](/tr/plugins/sdk-setup#setup-entry). 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 sevk eden bir webhook'tur: + OpenClaw'a iletmesi gerekir. Tipik desen, isteği doğrulayan + ve kanalınızın gelen işleyicisi üzerinden dağıtan bir Webhook'tur: ```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", // plugin tarafından yönetilen auth (imzaları kendiniz doğrulayın) handler: async (req, res) => { const event = parseWebhookPayload(req); - // Gelen işleyiciniz mesajı OpenClaw'a sevk eder. - // Tam bağlantı, platform SDK'nıza bağlıdır — + // Gelen işleyiciniz mesajı OpenClaw'a dağıtır. + // Tam 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. await handleAcmeChatInbound(api, event); @@ -484,17 +527,17 @@ Eski `resolveMentionGating*` yardımcıları yalnızca uyumluluk dışa aktarım ``` - 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 ö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. -Aynı konumda `src/channel.test.ts` içinde testler yazın: +`src/channel.test.ts` içinde aynı yerde testler yazın: ```typescript src/channel.test.ts import { describe, it, expect } from "vitest"; @@ -511,7 +554,7 @@ Aynı konumda `src/channel.test.ts` içinde testler yazın: expect(account.token).toBe("test-token"); }); - it("gizli bilgileri somutlaştırmadan hesabı inceler", () => { + it("gizli verileri somutlaştırmadan hesabı inceler", () => { const cfg = { channels: { "acme-chat": { token: "test-token" } }, } as any; @@ -520,7 +563,7 @@ Aynı konumda `src/channel.test.ts` içinde testler yazın: expect(result.tokenStatus).toBe("available"); }); - it("eksik yapılandırmayı bildirir", () => { + it("eksik config'i bildirir", () => { const cfg = { channels: {} } as any; const result = acmeChatPlugin.setup!.inspectAccount!(cfg, undefined); expect(result.configured).toBe(false); @@ -532,7 +575,7 @@ Aynı konumda `src/channel.test.ts` içinde testler yazın: pnpm test -- /acme-chat/ ``` - Paylaşılan test yardımcıları için [Test](/tr/plugins/sdk-testing) bölümüne bakın. + Paylaşılan test yardımcıları için bkz. [Test](/tr/plugins/sdk-testing). @@ -542,45 +585,45 @@ Aynı konumda `src/channel.test.ts` içinde testler yazın: ``` /acme-chat/ ├── package.json # openclaw.channel meta verileri -├── openclaw.plugin.json # Yapılandırma şemasını içeren manifest +├── openclaw.plugin.json # Config şemalı manifest ├── index.ts # defineChannelPluginEntry ├── setup-entry.ts # defineSetupPluginEntry ├── 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) ``` -## İleri konular +## Gelişmiş konular Sabit, hesap kapsamlı veya özel yanıt modları - + describeMessageTool ve eylem keşfi inferTargetChatType, looksLikeId, resolveTarget - api.runtime aracılığıyla TTS, STT, medya, alt ajan + api.runtime üzerinden TTS, STT, medya, alt ajan -Bazı paketlenmiş yardımcı bağlantı yüzeyleri, paketlenmiş plugin bakımı ve +Bazı paketlenmiş yardımcı kancalar, paketlenmiş plugin bakımı ve uyumluluk için hâlâ mevcuttur. Bunlar yeni kanal plugin'leri için önerilen desen değildir; -o paketlenmiş plugin ailesini doğrudan bakımını yapmıyorsanız, ortak SDK -yüzeyindeki genel channel/setup/reply/runtime alt yollarını tercih edin. +o paketlenmiş plugin ailesini doğrudan siz bakımını yapmıyorsanız, +ortak SDK yüzeyindeki genel channel/setup/reply/runtime alt yollarını tercih edin. ## Sonraki adımlar -- [Sağlayıcı Plugin'leri](/tr/plugins/sdk-provider-plugins) — plugin'iniz aynı zamanda model de sağlıyorsa +- [Provider Plugin'leri](/tr/plugins/sdk-provider-plugins) — plugin'iniz aynı zamanda modeller de sağlıyorsa - [SDK Genel Bakış](/tr/plugins/sdk-overview) — tam alt yol içe aktarma başvurusu - [SDK Test](/tr/plugins/sdk-testing) — test yardımcıları ve sözleşme testleri - [Plugin Manifesti](/tr/plugins/manifest) — tam manifest şeması diff --git a/docs/tr/reference/RELEASING.md b/docs/tr/reference/RELEASING.md index 43050da25..1c3e41bd7 100644 --- a/docs/tr/reference/RELEASING.md +++ b/docs/tr/reference/RELEASING.md @@ -1,25 +1,25 @@ --- read_when: - - Herkese açık sürüm kanalı tanımlarını arıyorum + - Herkese açık yayın kanalı tanımlarını arıyorum - Sürüm adlandırması ve yayın sıklığını arıyorum -summary: Herkese açık sürüm kanalları, sürüm adlandırması ve yayın sıklığı -title: Sürüm Politikası +summary: Herkese açık yayın kanalları, sürüm adlandırması ve yayın sıklığı +title: Yayın Politikası x-i18n: - generated_at: "2026-04-14T08:52:08Z" + generated_at: "2026-04-15T08:53:13Z" model: gpt-5.4 provider: openai - source_hash: 3eaf9f1786b8c9fd4f5a9c657b623cb69d1a485958e1a9b8f108511839b63587 + source_hash: 88724307269ab783a9fbf8a0540fea198d8a3add68457f4e64d5707114fa518c source_path: reference/RELEASING.md workflow: 15 --- -# Sürüm Politikası +# Yayın Politikası -OpenClaw’ın herkese açık üç sürüm hattı vardır: +OpenClaw'ın herkese açık üç yayın kanalı vardır: -- stable: varsayılan olarak npm `beta`’ya yayımlanan etiketli sürümler veya açıkça istendiğinde npm `latest`’e -- beta: npm `beta`’ya yayımlanan ön sürüm etiketleri -- dev: `main` dalının hareketli başı +- stable: varsayılan olarak npm `beta`'ya yayımlanan etiketli sürümler veya açıkça istendiğinde npm `latest`'e yayımlanan sürümler +- beta: npm `beta`'ya yayımlanan ön sürüm etiketleri +- dev: `main` dalının hareketli ucu ## Sürüm adlandırması @@ -29,158 +29,165 @@ OpenClaw’ın herkese açık üç sürüm hattı vardır: - Git etiketi: `vYYYY.M.D-N` - Beta ön sürüm versiyonu: `YYYY.M.D-beta.N` - Git etiketi: `vYYYY.M.D-beta.N` -- Ay veya günü sıfırla doldurmayın +- Ayı veya günü başına sıfır koymayın - `latest`, şu anda öne çıkarılmış stable npm sürümü anlamına gelir -- `beta`, şu anda beta kurulum hedefi anlamına gelir -- Stable ve stable düzeltme sürümleri varsayılan olarak npm `beta`’ya yayımlanır; sürüm operatörleri açıkça `latest`’i hedefleyebilir veya daha sonra doğrulanmış bir beta derlemesini öne çıkarabilir +- `beta`, şu andaki beta kurulum hedefi anlamına gelir +- Stable ve stable düzeltme sürümleri varsayılan olarak npm `beta`'ya yayımlanır; yayın operatörleri açıkça `latest`'i hedefleyebilir veya doğrulanmış bir beta derlemesini daha sonra öne çıkarabilir - Her OpenClaw sürümü, npm paketini ve macOS uygulamasını birlikte yayımlar -## Sürüm sıklığı +## Yayın sıklığı - Sürümler önce beta olarak ilerler - Stable, yalnızca en son beta doğrulandıktan sonra gelir -- Ayrıntılı sürüm prosedürü, onaylar, kimlik bilgileri ve kurtarma notları +- Ayrıntılı yayın prosedürü, onaylar, kimlik bilgileri ve kurtarma notları yalnızca maintainers içindir -## Sürüm ön kontrolü +## Yayın öncesi kontroller -- Paket doğrulama adımı için beklenen `dist/*` sürüm artifaktları ve Control UI paketi mevcut olsun diye `pnpm release:check` öncesinde `pnpm build && pnpm ui:build` çalıştırın +- Paket doğrulama adımı için beklenen + `dist/*` yayın artifaktları ve Control UI paketi mevcut olsun diye + `pnpm release:check` öncesinde `pnpm build && pnpm ui:build` çalıştırın - Her etiketli sürümden önce `pnpm release:check` çalıştırın -- Sürüm kontrolleri artık ayrı bir manuel iş akışında çalışır: +- Yayın kontrolleri artık ayrı bir manuel workflow içinde çalışır: `OpenClaw Release Checks` -- Bu ayrım bilinçlidir: gerçek npm sürüm yolunu kısa, - deterministik ve artifakt odaklı tutarken, daha yavaş canlı kontrolleri kendi - hattında tutar; böylece yayımlamayı geciktirmez veya engellemez -- Sürüm kontrolleri `main` iş akışı referansından tetiklenmelidir; böylece - iş akışı mantığı ve gizli bilgiler kanonik kalır -- Bu iş akışı, mevcut bir sürüm etiketini veya geçerli tam - 40 karakterlik `main` commit SHA’sını kabul eder +- Platformlar arası kurulum ve yükseltme çalışma zamanı doğrulaması, + özel çağırıcı workflow + `openclaw/releases-private/.github/workflows/openclaw-cross-os-release-checks.yml` + içinden başlatılır; bu workflow, yeniden kullanılabilir herkese açık workflow + `.github/workflows/openclaw-cross-os-release-checks-reusable.yml` + dosyasını çağırır +- Bu ayrım bilerek yapılmıştır: gerçek npm yayın yolunu kısa, + deterministik ve artifakt odaklı tutarken daha yavaş canlı kontrolleri kendi + kanalında tutmak; böylece yayımlamayı geciktirmez veya engellemezler +- Yayın kontrolleri `main` workflow ref'inden başlatılmalıdır; böylece + workflow mantığı ve secrets kanonik kalır +- Bu workflow, mevcut bir yayın etiketini veya geçerli tam + 40 karakterlik `main` commit SHA'sını kabul eder - Commit-SHA modunda yalnızca geçerli `origin/main` HEAD kabul edilir; daha eski - sürüm commit’leri için bir sürüm etiketi kullanın -- `OpenClaw NPM Release` yalnızca doğrulama amaçlı ön kontrolü de, - itilmiş bir etiket gerektirmeden, geçerli tam 40 karakterlik `main` commit SHA’sını kabul eder -- Bu SHA yolu yalnızca doğrulama içindir ve gerçek bir yayıma yükseltilemez -- SHA modunda iş akışı, paket meta verisi kontrolü için yalnızca - `v` üretir; gerçek yayımlama yine de gerçek bir sürüm etiketi gerektirir -- Her iki iş akışı da gerçek yayımlama ve öne çıkarma yolunu GitHub-hosted - runner’larda tutarken, değişiklik yapmayan doğrulama yolu daha büyük - Blacksmith Linux runner’larını kullanabilir -- Bu iş akışı + yayın commit'leri için bir yayın etiketi kullanın +- `OpenClaw NPM Release` yalnızca doğrulama amaçlı ön kontrolü de, itilmiş bir etiket gerektirmeden, + geçerli tam 40 karakterlik `main` commit SHA'sını kabul eder +- Bu SHA yolu yalnızca doğrulama içindir ve gerçek bir yayıma dönüştürülemez +- SHA modunda workflow, paket meta verisi kontrolü için yalnızca + `v` üretir; gerçek yayımlama yine de gerçek bir yayın etiketi gerektirir +- Her iki workflow da gerçek yayımlama ve öne çıkarma yolunu GitHub barındırmalı + runner'larda tutarken, durum değiştirmeyen doğrulama yolu daha büyük + Blacksmith Linux runner'larını kullanabilir +- Bu workflow, `OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cache` - komutunu hem `OPENAI_API_KEY` hem de `ANTHROPIC_API_KEY` iş akışı gizli bilgilerini kullanarak çalıştırır -- npm sürüm ön kontrolü artık ayrı sürüm kontrolleri hattını beklemez + komutunu hem `OPENAI_API_KEY` hem de `ANTHROPIC_API_KEY` workflow secrets'ını kullanarak çalıştırır +- npm yayın ön kontrolü artık ayrı yayın kontrolleri kanalını beklemiyor - Onaydan önce `RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts` komutunu (veya eşleşen beta/düzeltme etiketini) çalıştırın -- npm yayımlamasından sonra, yayımlanan kayıt defteri kurulum yolunu yeni bir geçici önekte doğrulamak için +- npm yayımlandıktan sonra, yayımlanan kayıt defteri + kurulum yolunu yeni bir geçici prefix içinde doğrulamak için `node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D` - komutunu (veya eşleşen beta/düzeltme sürümünü) çalıştırın -- Maintainer sürüm otomasyonu artık ön kontrol-sonra-öne çıkarma modelini kullanır: - - gerçek npm yayımlaması başarılı bir npm `preflight_run_id` geçmelidir - - stable npm sürümleri varsayılan olarak `beta`’ya gider - - stable npm yayımlaması iş akışı girdisiyle açıkça `latest`’i hedefleyebilir - - `beta`’dan `latest`’e stable npm öne çıkarma, güvenilen `OpenClaw NPM Release` iş akışında hâlâ açık bir manuel mod olarak kullanılabilir - - doğrudan stable yayımlar ayrıca, `latest` ve `beta` etiketlerinin ikisini de zaten yayımlanmış stable sürüme işaret eden açık bir dist-tag eşitleme modunu çalıştırabilir - - bu dist-tag modları, npm `dist-tag` yönetimi güvenilen yayımlamadan ayrı olduğu için `npm-release` ortamında yine de geçerli bir `NPM_TOKEN` gerektirir + komutunu (veya eşleşen beta/düzeltme versiyonunu) çalıştırın +- Maintainer yayın otomasyonu artık önce ön kontrol sonra öne çıkarma modelini kullanıyor: + - gerçek npm yayımlama, başarılı bir npm `preflight_run_id` geçmelidir + - stable npm sürümleri varsayılan olarak `beta`'yı kullanır + - stable npm yayımlama, workflow girdisiyle açıkça `latest`'i hedefleyebilir + - token tabanlı npm dist-tag değişikliği artık güvenlik nedeniyle + `openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.yml` + içinde yer alır; çünkü `npm dist-tag add` hâlâ `NPM_TOKEN` gerektirirken + herkese açık repo yalnızca OIDC ile yayımlamayı korur - herkese açık `macOS Release` yalnızca doğrulama içindir - - gerçek özel mac yayımlaması başarılı özel mac + - gerçek özel mac yayımlama, başarılı özel mac `preflight_run_id` ve `validate_run_id` geçmelidir - gerçek yayımlama yolları, artifaktları yeniden derlemek yerine hazırlanmış artifaktları öne çıkarır - `YYYY.M.D-N` gibi stable düzeltme sürümleri için, yayımlama sonrası doğrulayıcı - ayrıca `YYYY.M.D`’den `YYYY.M.D-N`’ye aynı geçici önek yükseltme yolunu da kontrol eder; - böylece sürüm düzeltmeleri, eski global kurulumları sessizce temel stable yükte bırakmaz -- npm sürüm ön kontrolü, tarball hem - `dist/control-ui/index.html` hem de boş olmayan bir `dist/control-ui/assets/` yükü içermediği sürece kapalı başarısız olur; - böylece tekrar boş bir tarayıcı panosu göndermeyiz -- `pnpm test:install:smoke`, aday güncelleme tarball’ında npm pack `unpackedSize` bütçesini de uygular; - böylece kurucu e2e, sürüm yayımlama yolundan önce kazara paket şişmesini yakalar -- Sürüm çalışması CI planlamasına, eklenti zamanlama manifestolarına veya - eklenti test matrislerine dokunduysa, onaydan önce `.github/workflows/ci.yml` - içindeki planlayıcıya ait `checks-node-extensions` iş akışı matris çıktılarını yeniden üretin ve gözden geçirin; - böylece sürüm notları eski bir CI düzenini açıklamaz -- Stable macOS sürüm hazırlığı, güncelleyici yüzeylerini de içerir: - - GitHub sürümü sonunda paketlenmiş `.zip`, `.dmg` ve `.dSYM.zip` dosyalarını içermelidir - - `main` üzerindeki `appcast.xml`, yayımdan sonra yeni stable zip’i işaret etmelidir - - paketlenmiş uygulama, hata ayıklama dışı bir bundle id, boş olmayan bir Sparkle feed URL’si ve o sürüm versiyonu için kanonik Sparkle derleme tabanına eşit veya daha yüksek bir `CFBundleVersion` korumalıdır + ayrıca `YYYY.M.D` sürümünden `YYYY.M.D-N` sürümüne aynı geçici prefix yükseltme yolunu da + kontrol eder; böylece sürüm düzeltmeleri, daha eski global kurulumları temel + stable yük üzerinde sessizce bırakmaz +- npm yayın ön kontrolü, tarball hem + `dist/control-ui/index.html` hem de boş olmayan bir `dist/control-ui/assets/` yükü içermiyorsa + kapalı şekilde başarısız olur; böylece yine boş bir tarayıcı kontrol paneli yayımlamayız +- `pnpm test:install:smoke` ayrıca aday güncelleme tarball'ında npm pack + `unpackedSize` bütçesini de zorunlu kılar; böylece yükleyici e2e, yanlışlıkla oluşan paket şişmesini + yayın yayımlama yolundan önce yakalar +- Yayın çalışması CI planlamasına, eklenti zamanlama manifest'lerine veya + eklenti test matrislerine dokunduysa, onaydan önce + `.github/workflows/ci.yml` içindeki planner'a ait + `checks-node-extensions` workflow matris çıktılarını yeniden üretin ve inceleyin; + böylece yayın notları eski bir CI düzenini açıklamaz +- Stable macOS sürümü için hazır olma durumu ayrıca güncelleyici yüzeylerini de içerir: + - GitHub sürümünde paketlenmiş `.zip`, `.dmg` ve `.dSYM.zip` bulunmalıdır + - `main` üzerindeki `appcast.xml`, yayımlamadan sonra yeni stable zip'i işaret etmelidir + - paketlenmiş uygulama, debug olmayan bir bundle id, boş olmayan bir Sparkle feed + URL'si ve o sürüm versiyonu için kanonik Sparkle derleme tabanına eşit veya daha yüksek + bir `CFBundleVersion` korumalıdır -## NPM iş akışı girdileri +## NPM workflow girdileri -`OpenClaw NPM Release` şu operatör kontrollü girdileri kabul eder: +`OpenClaw NPM Release`, operatör tarafından kontrol edilen şu girdileri kabul eder: - `tag`: `v2026.4.2`, `v2026.4.2-1` veya - `v2026.4.2-beta.1` gibi gerekli sürüm etiketi; `preflight_only=true` olduğunda, - yalnızca doğrulama amaçlı ön kontrol için geçerli tam 40 karakterlik - `main` commit SHA’sı da olabilir -- `preflight_only`: yalnızca doğrulama/derleme/paketleme için `true`, gerçek yayımlama yolu için `false` -- `preflight_run_id`: gerçek yayımlama yolunda gereklidir; böylece iş akışı, - başarılı ön kontrol çalışmasından hazırlanmış tarball’ı yeniden kullanır -- `npm_dist_tag`: yayımlama yolu için npm hedef etiketi; varsayılan `beta` -- `promote_beta_to_latest`: yayımlamayı atlayıp daha önce yayımlanmış bir - stable `beta` derlemesini `latest`’e taşımak için `true` -- `sync_stable_dist_tags`: yayımlamayı atlayıp hem `latest` hem de - `beta` etiketlerini daha önce yayımlanmış bir stable sürüme yönlendirmek için `true` + `v2026.4.2-beta.1` gibi gerekli yayın etiketi; `preflight_only=true` olduğunda ayrıca yalnızca doğrulama amaçlı ön kontrol için + geçerli tam 40 karakterlik `main` commit SHA'sı da olabilir +- `preflight_only`: yalnızca doğrulama/derleme/paket için `true`, gerçek + yayımlama yolu için `false` +- `preflight_run_id`: gerçek yayımlama yolunda gereklidir; böylece workflow, + başarılı ön kontrol çalışmasından hazırlanmış tarball'ı yeniden kullanır +- `npm_dist_tag`: yayımlama yolu için npm hedef etiketi; varsayılanı `beta`'dır -`OpenClaw Release Checks` şu operatör kontrollü girdileri kabul eder: +`OpenClaw Release Checks`, operatör tarafından kontrol edilen şu girdileri kabul eder: -- `ref`: doğrulanacak mevcut sürüm etiketi veya geçerli tam 40 karakterlik `main` commit - SHA’sı +- `ref`: doğrulanacak mevcut yayın etiketi veya geçerli tam 40 karakterlik `main` commit + SHA'sı Kurallar: -- Stable ve düzeltme etiketleri `beta` veya `latest`’e yayımlanabilir -- Beta ön sürüm etiketleri yalnızca `beta`’ya yayımlanabilir +- Stable ve düzeltme etiketleri `beta` veya `latest`'e yayımlanabilir +- Beta ön sürüm etiketleri yalnızca `beta`'ya yayımlanabilir - Tam commit SHA girdisine yalnızca `preflight_only=true` olduğunda izin verilir -- Sürüm kontrolleri commit-SHA modu ayrıca geçerli `origin/main` HEAD gerektirir -- Gerçek yayımlama yolu, ön kontrolde kullanılan aynı `npm_dist_tag`’i kullanmalıdır; - iş akışı, yayımlama devam etmeden önce bu meta veriyi doğrular -- Öne çıkarma modu stable veya düzeltme etiketi, `preflight_only=false`, - boş bir `preflight_run_id` ve `npm_dist_tag=beta` kullanmalıdır -- Dist-tag eşitleme modu stable veya düzeltme etiketi, - `preflight_only=false`, boş bir `preflight_run_id`, `npm_dist_tag=latest` - ve `promote_beta_to_latest=false` kullanmalıdır -- Öne çıkarma ve dist-tag eşitleme modları ayrıca geçerli bir `NPM_TOKEN` gerektirir; - çünkü `npm dist-tag add` yine normal npm kimlik doğrulaması ister; güvenilen yayımlama - yalnızca paket yayımlama yolunu kapsar +- Yayın kontrolleri commit-SHA modu ayrıca geçerli `origin/main` HEAD'i gerektirir +- Gerçek yayımlama yolu, ön kontrol sırasında kullanılan aynı `npm_dist_tag` değerini kullanmalıdır; + workflow, yayımlama devam etmeden önce bu meta veriyi doğrular ## Stable npm sürüm sırası -Bir stable npm sürümü keserken: +Bir stable npm sürümü çıkarırken: 1. `preflight_only=true` ile `OpenClaw NPM Release` çalıştırın - - Etiket henüz yokken, ön kontrol iş akışının yalnızca doğrulama amaçlı deneme çalıştırması için geçerli tam `main` commit SHA’sını kullanabilirsiniz -2. Normal beta-önce akışı için `npm_dist_tag=beta` seçin veya yalnızca - doğrudan stable yayımlama yapmak istediğinizde `latest` seçin + - Henüz bir etiket yoksa, ön kontrol workflow'unun + yalnızca doğrulama amaçlı kuru çalıştırması için geçerli tam `main` commit SHA'sını kullanabilirsiniz +2. Normal beta-first akışı için `npm_dist_tag=beta` seçin veya yalnızca + doğrudan stable yayımlamayı özellikle istiyorsanız `latest` seçin 3. Canlı prompt cache kapsamı istediğinizde, - aynı etiket veya geçerli tam `main` commit SHA’sı ile `OpenClaw Release Checks` iş akışını ayrıca çalıştırın - - Bu ayrım bilinçlidir; böylece canlı kapsam kullanılabilir kalır ve - uzun süren veya kararsız kontroller yayımlama iş akışına yeniden bağlanmaz + aynı etiketle veya geçerli tam `main` commit SHA'sıyla ayrı olarak + `OpenClaw Release Checks` çalıştırın + - Bu ayrım bilerek yapılmıştır; böylece canlı kapsam kullanılabilir kalırken + uzun süren veya kararsız kontroller yeniden yayımlama workflow'una bağlanmaz 4. Başarılı `preflight_run_id` değerini kaydedin 5. `preflight_only=false`, aynı - `tag`, aynı `npm_dist_tag` ve kaydedilmiş `preflight_run_id` ile `OpenClaw NPM Release`’i yeniden çalıştırın -6. Sürüm `beta`’ya gittiyse, daha sonra aynı - stable `tag`, `promote_beta_to_latest=true`, `preflight_only=false`, - boş `preflight_run_id` ve `npm_dist_tag=beta` ile `OpenClaw NPM Release` çalıştırarak bu yayımlanmış - derlemeyi `latest`’e taşıyabilirsiniz -7. Sürüm bilerek doğrudan `latest`’e yayımlandıysa ve `beta` - aynı stable derlemeyi takip etmeliyse, aynı - stable `tag`, `sync_stable_dist_tags=true`, `promote_beta_to_latest=false`, - `preflight_only=false`, boş `preflight_run_id` ve `npm_dist_tag=latest` ile `OpenClaw NPM Release` çalıştırın + `tag`, aynı `npm_dist_tag` ve kaydedilmiş `preflight_run_id` ile + `OpenClaw NPM Release`'i yeniden çalıştırın +6. Sürüm `beta` üzerinde yayımlandıysa, bu stable sürümü `beta`'dan `latest`'e + öne çıkarmak için özel + `openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.yml` + workflow'unu kullanın +7. Sürüm kasıtlı olarak doğrudan `latest`'e yayımlandıysa ve `beta` + aynı stable derlemeyi hemen takip edecekse, her iki dist-tag'i de stable versiyona işaret ettirmek için + aynı özel workflow'u kullanın veya planlanmış + self-healing sync'in `beta`yı daha sonra taşımasına izin verin -Öne çıkarma ve dist-tag eşitleme modları yine de `npm-release` -ortam onayı ve bu iş akışı çalışmasına erişebilen geçerli bir `NPM_TOKEN` gerektirir. +Dist-tag değişikliği güvenlik nedeniyle özel repo içinde tutulur; çünkü hâlâ +`NPM_TOKEN` gerektirirken herkese açık repo yalnızca OIDC ile yayımlamayı korur. -Bu, doğrudan yayımlama yolunu ve beta-önce öne çıkarma yolunu hem -belgelenmiş hem de operatör açısından görünür tutar. +Bu, doğrudan yayımlama yolunu ve beta-first öne çıkarma yolunu hem +belgelenmiş hem de operatör tarafından görünür halde tutar. ## Herkese açık başvurular - [`.github/workflows/openclaw-npm-release.yml`](https://github.com/openclaw/openclaw/blob/main/.github/workflows/openclaw-npm-release.yml) - [`.github/workflows/openclaw-release-checks.yml`](https://github.com/openclaw/openclaw/blob/main/.github/workflows/openclaw-release-checks.yml) +- [`.github/workflows/openclaw-cross-os-release-checks-reusable.yml`](https://github.com/openclaw/openclaw/blob/main/.github/workflows/openclaw-cross-os-release-checks-reusable.yml) - [`scripts/openclaw-npm-release-check.ts`](https://github.com/openclaw/openclaw/blob/main/scripts/openclaw-npm-release-check.ts) - [`scripts/package-mac-dist.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/package-mac-dist.sh) - [`scripts/make_appcast.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/make_appcast.sh) -Maintainers, gerçek çalışma kılavuzu için özel sürüm belgelerini +Maintainers, gerçek runbook için [`openclaw/maintainers/release/README.md`](https://github.com/openclaw/maintainers/blob/main/release/README.md) -içinde kullanır. +içindeki özel yayın belgelerini kullanır. diff --git a/docs/tr/reference/secretref-credential-surface.md b/docs/tr/reference/secretref-credential-surface.md index 6644957b0..374fa2ca3 100644 --- a/docs/tr/reference/secretref-credential-surface.md +++ b/docs/tr/reference/secretref-credential-surface.md @@ -3,13 +3,13 @@ read_when: - SecretRef kimlik bilgisi kapsamını doğrulama - Bir kimlik bilgisinin `secrets configure` veya `secrets apply` için uygun olup olmadığını denetleme - Bir kimlik bilgisinin neden desteklenen yüzeyin dışında olduğunu doğrulama -summary: Kanonik desteklenen ve desteklenmeyen SecretRef kimlik bilgisi yüzeyi +summary: Kanonik olarak desteklenen ve desteklenmeyen SecretRef kimlik bilgisi yüzeyi title: SecretRef Kimlik Bilgisi Yüzeyi x-i18n: - generated_at: "2026-04-07T08:49:15Z" + generated_at: "2026-04-15T08:53:57Z" model: gpt-5.4 provider: openai - source_hash: 211f4b504c5808f7790683066fc2c8b700c705c598f220a264daf971b81cc593 + source_hash: dd0b9c379236b17a72f552d6360b8b5a2269009e019c138c6bb50f4f7328ddaf source_path: reference/secretref-credential-surface.md workflow: 15 --- @@ -20,8 +20,8 @@ Bu sayfa, kanonik SecretRef kimlik bilgisi yüzeyini tanımlar. Kapsam amacı: -- Kapsam dahilinde: OpenClaw'ın üretmediği veya döndürmediği, kesin olarak kullanıcı tarafından sağlanan kimlik bilgileri. -- Kapsam dışında: çalışma zamanında üretilen veya dönen kimlik bilgileri, OAuth yenileme materyali ve oturum benzeri yapıtlar. +- Kapsam dahilinde: OpenClaw’un üretmediği veya döndürmediği, kesin olarak kullanıcı tarafından sağlanan kimlik bilgileri. +- Kapsam dışında: çalışma zamanında üretilen veya döndürülen kimlik bilgileri, OAuth yenileme materyali ve oturum benzeri yapıtlar. ## Desteklenen kimlik bilgileri @@ -49,6 +49,7 @@ Kapsam amacı: - `messages.tts.providers.*.apiKey` - `tools.web.fetch.firecrawl.apiKey` - `plugins.entries.brave.config.webSearch.apiKey` +- `plugins.entries.exa.config.webSearch.apiKey` - `plugins.entries.google.config.webSearch.apiKey` - `plugins.entries.xai.config.webSearch.apiKey` - `plugins.entries.moonshot.config.webSearch.apiKey` @@ -107,8 +108,8 @@ Kapsam amacı: - `channels.zalo.webhookSecret` - `channels.zalo.accounts.*.botToken` - `channels.zalo.accounts.*.webhookSecret` -- `channels.googlechat.serviceAccount` sibling `serviceAccountRef` üzerinden (uyumluluk istisnası) -- `channels.googlechat.accounts.*.serviceAccount` sibling `serviceAccountRef` üzerinden (uyumluluk istisnası) +- `channels.googlechat.serviceAccount` sibling `serviceAccountRef` aracılığıyla (uyumluluk istisnası) +- `channels.googlechat.accounts.*.serviceAccount` sibling `serviceAccountRef` aracılığıyla (uyumluluk istisnası) ### `auth-profiles.json` hedefleri (`secrets configure` + `secrets apply` + `secrets audit`) @@ -120,20 +121,20 @@ Kapsam amacı: Notlar: - Auth-profile plan hedefleri `agentId` gerektirir. -- Plan girdileri `profiles.*.key` / `profiles.*.token` alanlarını hedefler ve sibling ref'leri (`keyRef` / `tokenRef`) yazar. -- Auth-profile ref'leri çalışma zamanı çözümlemesine ve denetim kapsamına dahildir. -- OAuth politika koruması: `auth.profiles..mode = "oauth"`, o profil için SecretRef girdileriyle birlikte kullanılamaz. Bu politika ihlal edildiğinde başlangıç/yeniden yükleme ve auth-profile çözümlemesi hızlı başarısız olur. -- SecretRef tarafından yönetilen model provider'lar için, oluşturulan `agents/*/agent/models.json` girdileri `apiKey`/header yüzeyleri için gizli olmayan işaretleyicileri saklar (çözümlenmiş gizli değerleri değil). -- İşaretleyici kalıcılığı kaynak açısından yetkilidir: OpenClaw işaretleyicileri çözümlenmiş çalışma zamanı gizli değerlerinden değil, etkin kaynak yapılandırma anlık görüntüsünden (çözümleme öncesi) yazar. -- Web search için: - - Açık provider modunda (`tools.web.search.provider` ayarlı), yalnızca seçilen provider anahtarı etkindir. - - Otomatik modda (`tools.web.search.provider` ayarsız), yalnızca öncelik sırasına göre çözümlenen ilk provider anahtarı etkindir. - - Otomatik modda, seçilmeyen provider ref'leri seçilene kadar etkisiz kabul edilir. - - Eski `tools.web.search.*` provider yolları uyumluluk penceresi boyunca çözümlenmeye devam eder, ancak kanonik SecretRef yüzeyi `plugins.entries..config.webSearch.*` yoludur. +- Plan girdileri `profiles.*.key` / `profiles.*.token` hedefini kullanır ve sibling ref’ler (`keyRef` / `tokenRef`) yazar. +- Auth-profile ref’leri çalışma zamanı çözümlemesine ve denetim kapsamına dahildir. +- OAuth ilke koruması: `auth.profiles..mode = "oauth"`, o profil için SecretRef girdileriyle birlikte kullanılamaz. Bu ilke ihlal edildiğinde başlatma/yeniden yükleme ve auth-profile çözümlemesi hızlıca başarısız olur. +- SecretRef tarafından yönetilen model sağlayıcıları için üretilen `agents/*/agent/models.json` girdileri, `apiKey`/header yüzeyleri için gizli olmayan işaretçileri saklar (çözülmüş gizli değerleri değil). +- İşaretçi kalıcılığı kaynak açısından yetkilidir: OpenClaw işaretçileri, çözülmüş çalışma zamanı gizli değerlerinden değil, etkin kaynak yapılandırma anlık görüntüsünden (çözümleme öncesi) yazar. +- Web araması için: + - Açık sağlayıcı modunda (`tools.web.search.provider` ayarlıysa), yalnızca seçili sağlayıcı anahtarı etkindir. + - Otomatik modda (`tools.web.search.provider` ayarlı değilse), öncelik sırasına göre çözümlenen ilk sağlayıcı anahtarı etkindir. + - Otomatik modda, seçilmeyen sağlayıcı ref’leri seçilene kadar etkin değil olarak değerlendirilir. + - Eski `tools.web.search.*` sağlayıcı yolları uyumluluk penceresi boyunca hâlâ çözülür, ancak kanonik SecretRef yüzeyi `plugins.entries..config.webSearch.*` biçimindedir. ## Desteklenmeyen kimlik bilgileri -Kapsam dışı kimlik bilgileri şunları içerir: +Kapsam dışındaki kimlik bilgileri şunları içerir: [//]: # "secretref-unsupported-list-start" @@ -151,4 +152,4 @@ Kapsam dışı kimlik bilgileri şunları içerir: Gerekçe: -- Bu kimlik bilgileri üretilen, dönen, oturum taşıyan veya salt okunur harici SecretRef çözümlemesine uymayan OAuth-kalıcı sınıflardır. +- Bu kimlik bilgileri üretilen, döndürülen, oturum taşıyan veya salt okunur harici SecretRef çözümlemesine uymayan OAuth-kalıcı sınıflardır. diff --git a/docs/tr/start/showcase.md b/docs/tr/start/showcase.md index aade6ac33..49abdcade 100644 --- a/docs/tr/start/showcase.md +++ b/docs/tr/start/showcase.md @@ -1,104 +1,131 @@ --- +description: Real-world OpenClaw projects from the community read_when: - - Gerçek OpenClaw kullanım örnekleri arıyorsunuz - - Topluluk proje öne çıkanlarını güncelliyorsunuz -summary: OpenClaw tarafından desteklenen, topluluk tarafından oluşturulmuş projeler ve entegrasyonlar + - Gerçek OpenClaw kullanım örneklerini arıyorum + - Topluluk projesi öne çıkanlarını güncelliyorum +summary: OpenClaw ile desteklenen topluluk tarafından geliştirilen projeler ve entegrasyonlar title: Vitrin x-i18n: - generated_at: "2026-04-05T14:10:14Z" + generated_at: "2026-04-15T08:53:56Z" model: gpt-5.4 provider: openai - source_hash: 2917e9a476ef527ddb3e51c610bbafbd145e705c9cc29f191639fb63d238ef70 + source_hash: 797d0b85c9eca920240c79d870eb9636216714f3eba871c5ebd0f7f40cf7bbf1 source_path: start/showcase.md workflow: 15 --- + + # Vitrin -Topluluktan gerçek projeler. İnsanların OpenClaw ile neler yaptığını görün. +
+

Sohbetlerde, terminallerde, tarayıcılarda ve oturma odalarında geliştirildi

+

+ OpenClaw projeleri oyuncak demolar değildir. İnsanlar zaten kullandıkları kanallar üzerinden PR inceleme döngüleri, mobil uygulamalar, ev otomasyonu, + ses sistemleri, geliştirici araçları ve bellek ağırlıklı iş akışlarını kullanıma sunuyor. +

+ +
+
+ Sohbet odaklı geliştirmeler + Telegram, WhatsApp, Discord, Beeper, web sohbeti ve terminal öncelikli iş akışları. +
+
+ Gerçek otomasyon + API beklemeden rezervasyon, alışveriş, destek, raporlama ve tarayıcı kontrolü. +
+
+ Yerel + fiziksel dünya + Yazıcılar, robot süpürgeler, kameralar, sağlık verileri, ev sistemleri ve kişisel bilgi tabanları. +
+
+
-**Öne çıkarılmak mı istiyorsunuz?** Projenizi [Discord'daki #self-promotion kanalında](https://discord.gg/clawd) paylaşın veya [X'te @openclaw etiketini kullanın](https://x.com/openclaw). +**Öne çıkarılmak mı istiyorsunuz?** Projenizi [Discord'daki #self-promotion kanalında](https://discord.gg/clawd) paylaşın veya [X'te @openclaw etiketleyin](https://x.com/openclaw). -## 🎥 OpenClaw İş Başında - -VelvetShark tarafından hazırlanan tam kurulum rehberi (28 dk). - -
-