From 6ab5f5a9ae6327a830df63bf1f00214580366d34 Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Thu, 23 Apr 2026 15:00:54 +0000 Subject: [PATCH] chore(i18n): refresh tr translations --- docs/tr/channels/matrix-push-rules.md | 157 +++++ docs/tr/channels/matrix.md | 730 +++++++------------- docs/tr/ci.md | 109 +-- docs/tr/gateway/authentication.md | 145 ++-- docs/tr/gateway/cli-backends.md | 245 +++---- docs/tr/help/testing.md | 958 +++++++++++++------------- 6 files changed, 1098 insertions(+), 1246 deletions(-) create mode 100644 docs/tr/channels/matrix-push-rules.md diff --git a/docs/tr/channels/matrix-push-rules.md b/docs/tr/channels/matrix-push-rules.md new file mode 100644 index 000000000..12f921700 --- /dev/null +++ b/docs/tr/channels/matrix-push-rules.md @@ -0,0 +1,157 @@ +--- +read_when: + - Kendi barındırdığınız Synapse veya Tuwunel için Matrix sessiz akışını ayarlama + - Kullanıcılar her önizleme düzenlemesinde değil, yalnızca tamamlanmış bloklarda bildirim almak istiyor +summary: Sessiz sonlandırılmış önizleme düzenlemeleri için alıcı bazında Matrix push kuralları +title: Sessiz önizlemeler için Matrix push kuralları +x-i18n: + generated_at: "2026-04-23T14:56:38Z" + model: gpt-5.4 + provider: openai + source_hash: dbfdf2552ca352858d4e8d03a2a0f5f3b420d33b01063c111c0335c0229f0534 + source_path: channels/matrix-push-rules.md + workflow: 15 +--- + +# Sessiz önizlemeler için Matrix push kuralları + +`channels.matrix.streaming` değeri `"quiet"` olduğunda, OpenClaw tek bir önizleme olayını yerinde düzenler ve sonlandırılmış düzenlemeyi özel bir içerik bayrağıyla işaretler. Matrix istemcileri yalnızca kullanıcı başına bir push kuralı bu bayrakla eşleşirse son düzenlemede bildirim gönderir. Bu sayfa, Matrix'i kendi barındıran ve bu kuralı her alıcı hesabı için kurmak isteyen operatörler içindir. + +Yalnızca standart Matrix bildirim davranışını istiyorsanız `streaming: "partial"` kullanın veya akışı kapalı bırakın. Bkz. [Matrix kanal kurulumu](/tr/channels/matrix#streaming-previews). + +## Önkoşullar + +- 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 anahtarını kullanın +- push kuralındaki `sender` değerini bot kullanıcısının tam MXID'siyle eşleştirin +- alıcı hesabında çalışan pusher'lar zaten olmalıdır — sessiz önizleme kuralları yalnızca normal Matrix push teslimi sağlıklı olduğunda çalışır + +## Adımlar + + + + +```json5 +{ + channels: { + matrix: { + streaming: "quiet", + }, + }, +} +``` + + + + + Mümkünse mevcut bir istemci oturumu anahtarını yeniden kullanın. Yenisini oluşturmak için: + +```bash +curl -sS -X POST \ + "https://matrix.example.org/_matrix/client/v3/login" \ + -H "Content-Type: application/json" \ + --data '{ + "type": "m.login.password", + "identifier": { "type": "m.id.user", "user": "@alice:example.org" }, + "password": "REDACTED" + }' +``` + + + + + +```bash +curl -sS \ + -H "Authorization: Bearer $USER_ACCESS_TOKEN" \ + "https://matrix.example.org/_matrix/client/v3/pushers" +``` + +Hiç pusher dönmezse, devam etmeden önce bu hesap için normal Matrix push teslimini düzeltin. + + + + + OpenClaw, sonlandırılmış yalnızca metin içeren önizleme düzenlemelerini `content["com.openclaw.finalized_preview"] = true` ile işaretler. Bu işaretçiyle ve gönderici olarak bot MXID'siyle eşleşen bir kural kurun: + +```bash +curl -sS -X PUT \ + "https://matrix.example.org/_matrix/client/v3/pushrules/global/override/openclaw-finalized-preview-botname" \ + -H "Authorization: Bearer $USER_ACCESS_TOKEN" \ + -H "Content-Type: application/json" \ + --data '{ + "conditions": [ + { "kind": "event_match", "key": "type", "pattern": "m.room.message" }, + { + "kind": "event_property_is", + "key": "content.m\\.relates_to.rel_type", + "value": "m.replace" + }, + { + "kind": "event_property_is", + "key": "content.com\\.openclaw\\.finalized_preview", + "value": true + }, + { "kind": "event_match", "key": "sender", "pattern": "@bot:example.org" } + ], + "actions": [ + "notify", + { "set_tweak": "sound", "value": "default" }, + { "set_tweak": "highlight", "value": false } + ] + }' +``` + + Çalıştırmadan önce şunları değiştirin: + + - `https://matrix.example.org`: homeserver temel URL'niz + - `$USER_ACCESS_TOKEN`: alıcı kullanıcının erişim anahtarı + - `openclaw-finalized-preview-botname`: alıcı başına bot başına benzersiz bir kural kimliği (`openclaw-finalized-preview-` deseni) + - `@bot:example.org`: alıcının değil, OpenClaw bot MXID'niz + + + + + +```bash +curl -sS \ + -H "Authorization: Bearer $USER_ACCESS_TOKEN" \ + "https://matrix.example.org/_matrix/client/v3/pushrules/global/override/openclaw-finalized-preview-botname" +``` + +Ardından akışlı bir yanıtı test edin. Sessiz modda oda sessiz bir taslak önizleme gösterir ve blok veya tur tamamlandığında bir kez bildirim gönderir. + + + + +Kuralı daha sonra kaldırmak için aynı kural URL'sine alıcının anahtarıyla `DELETE` gönderin. + +## Çoklu bot notları + +Push kuralları `ruleId` ile anahtarlanır: aynı kimliğe yeniden `PUT` çalıştırmak tek bir kuralı günceller. Aynı alıcıya bildirim gönderen birden fazla OpenClaw botu için, farklı bir gönderici eşleşmesiyle bot başına bir kural 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 parametresine gerek yoktur. Kural yalnızca yerinde sonlandırılabilen yalnızca metin içeren önizleme düzenlemelerini etkiler; medya geri dönüşleri ve bayat önizleme geri dönüşleri normal Matrix teslimini kullanır. + +## Homeserver notları + + + + Özel bir `homeserver.yaml` değişikliği gerekmez. Normal Matrix bildirimleri bu kullanıcıya zaten ulaşıyorsa, alıcı anahtarı + 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. Push teslimi ana süreç veya `synapse.app.pusher` / yapılandırılmış pusher worker'ları tarafından işlenir — bunların sağlıklı olduğundan emin olun. + + + + + Synapse ile aynı akış; sonlandırılmış önizleme işaretçisi için Tuwunel'e özgü bir yapılandırma gerekmez. + + Kullanıcı başka bir cihazda etkinken bildirimler kayboluyorsa `suppress_push_when_active` etkin mi kontrol edin. Tuwunel bu seçeneği 1.4.2 sürümünde (Eylül 2025) ekledi ve bir cihaz etkinken diğer cihazlara gönderilen push'ları bilerek bastırabilir. + + + + +## İlgili + +- [Matrix kanal kurulumu](/tr/channels/matrix) +- [Akış kavramları](/tr/concepts/streaming) diff --git a/docs/tr/channels/matrix.md b/docs/tr/channels/matrix.md index 71e620ff2..62b75d4ec 100644 --- a/docs/tr/channels/matrix.md +++ b/docs/tr/channels/matrix.md @@ -1,32 +1,30 @@ --- read_when: - OpenClaw içinde Matrix kurulumu - - Matrix E2EE ve doğrulamasını yapılandırma + - Matrix E2EE ve doğrulama yapılandırması summary: Matrix destek durumu, kurulum ve yapılandırma örnekleri title: Matrix x-i18n: - generated_at: "2026-04-23T08:57:20Z" + generated_at: "2026-04-23T14:56:53Z" model: gpt-5.4 provider: openai - source_hash: 14873e9d65994138d26ad0bc1bf9bc6e00bea17f9306d592c757503d363de71a + source_hash: 2e9d4d656b47aca2dacb00e591378cb26631afc5b634074bc26e21741b418b47 source_path: channels/matrix.md workflow: 15 --- # Matrix -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. +Matrix, OpenClaw için paketle birlikte gelen bir kanal plugin'idir. +Resmi `matrix-js-sdk` kullanır ve DM'leri, odaları, başlıkları, medyayı, tepkileri, anketleri, konumu ve E2EE'yi destekler. -## Paketlenmiş plugin +## Paketle birlikte gelen plugin -Matrix, mevcut OpenClaw sürümlerinde paketlenmiş bir plugin olarak sunulur; bu yüzden normal -paketlenmiş derlemelerde ayrı bir kurulum gerekmez. +Matrix, mevcut OpenClaw sürümlerinde paketle birlikte gelen bir plugin olarak sunulur; bu nedenle normal paketlenmiş derlemelerde ayrı bir kurulum gerekmez. -Daha eski bir derlemeyi veya Matrix'i dışlayan özel bir kurulumu kullanıyorsanız, onu -elle kurun: +Daha eski bir derlemeyi veya Matrix'i içermeyen özel bir kurulumu kullanıyorsanız, manuel olarak kurun: -npm'den kurun: +npm üzerinden kurun: ```bash openclaw plugins install @openclaw/matrix @@ -43,9 +41,9 @@ Plugin davranışı ve kurulum kuralları için [Plugins](/tr/tools/plugin) böl ## Kurulum 1. Matrix plugin'inin kullanılabilir olduğundan emin olun. - - Mevcut 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. + - Mevcut paketlenmiş OpenClaw sürümleri bunu zaten birlikte sunar. + - Eski/özel kurulumlar bunu yukarıdaki komutlarla manuel olarak ekleyebilir. +2. homeserver'ınızda bir Matrix hesabı oluşturun. 3. `channels.matrix` yapılandırmasını şu seçeneklerden biriyle yapın: - `homeserver` + `accessToken`, veya - `homeserver` + `userId` + `password`. @@ -63,27 +61,27 @@ openclaw configure --section channels Matrix sihirbazı şunları sorar: - homeserver URL'si -- kimlik doğrulama yöntemi: access token veya parola +- kimlik doğrulama yöntemi: erişim belirteci veya parola - kullanıcı kimliği (yalnızca parola ile kimlik doğrulama) - isteğe bağlı cihaz adı - E2EE'nin etkinleştirilip etkinleştirilmeyeceği -- oda erişimi ve davetle otomatik katılımın yapılandırılıp yapılandırılmayacağı +- oda erişimi ve davetlerle otomatik katılımın yapılandırılıp yapılandırılmayacağı Sihirbazın temel davranışları: -- Matrix kimlik doğrulama ortam değişkenleri zaten varsa ve o hesap için yapılandırmada kimlik doğrulama zaten kaydedilmemişse, sihirbaz kimlik doğrulamayı ortam değişkenlerinde tutmak için bir ortam kısayolu sunar. +- Matrix kimlik doğrulama ortam değişkenleri zaten varsa ve bu hesabın kimlik doğrulaması henüz yapılandırmada 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 oda kimliklerini ve takma adları doğrudan 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. +- DM izin listesi girdileri doğrudan `@user:server` kabul eder; görünen adlar yalnızca canlı dizin araması tam olarak bir eşleşme bulduğunda çalışır. +- Oda izin listesi girdileri oda kimliklerini ve takma adları doğrudan kabul eder. `!room:server` veya `#alias:server` tercih edin; çözümlenemeyen adlar çalışma zamanında izin listesi çözümlemesi sırasında yok sayılır. - Davetle otomatik katılımın 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. +- Kaydetmeden önce oda adlarını çözümlemek için `openclaw channels resolve --channel matrix "Project Room"` kullanın. `channels.matrix.autoJoin` için varsayılan değer `off`'tur. -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 siz önce manuel olarak katılmadıkça yeni gruplarda veya davet edilen DM'lerde görünmez. -Hangi davetleri kabul edeceğini sınırlamak için `autoJoin: "allowlist"` ile birlikte `autoJoinAllowlist` ayarlayın veya her davete katılmasını istiyorsanız `autoJoin: "always"` ayarlayın. +Kabul edeceği davetleri kısıtlamak için `autoJoin: "allowlist"` ile birlikte `autoJoinAllowlist` ayarlayın ya da her davete katılmasını istiyorsanız `autoJoin: "always"` ayarlayın. `allowlist` modunda `autoJoinAllowlist` yalnızca `!roomId:server`, `#alias:server` veya `*` kabul eder. @@ -118,7 +116,7 @@ Her davete katıl: } ``` -Token tabanlı en basit kurulum: +Belirteç tabanlı minimal kurulum: ```json5 { @@ -133,7 +131,7 @@ Token tabanlı en basit kurulum: } ``` -Parola tabanlı kurulum (girişten sonra token önbelleğe alınır): +Parola tabanlı kurulum (oturum açıldıktan sonra belirteç önbelleğe alınır): ```json5 { @@ -149,11 +147,11 @@ Parola tabanlı kurulum (girişten sonra token önbelleğe alınır): } ``` -Matrix önbelleğe alınmış kimlik bilgilerini `~/.openclaw/credentials/matrix/` içinde depolar. +Matrix, önbelleğe alınmış kimlik bilgilerini `~/.openclaw/credentials/matrix/` içinde depolar. Varsayılan hesap `credentials.json` kullanır; adlandırılmış hesaplar `credentials-.json` kullanır. -Önbelleğe alınmış kimlik bilgileri burada mevcut olduğunda, geçerli kimlik doğrulama doğrudan yapılandırmada ayarlı olmasa bile OpenClaw, Matrix'i kurulum, doctor ve kanal durumu keşfi için yapılandırılmış olarak değerlendirir. +Bu konumda önbelleğe alınmış kimlik bilgileri varsa, mevcut 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ış olarak değerlendirir. -Ortam değişkeni eşdeğerleri (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,21 +174,21 @@ Varsayılan olmayan hesaplar için hesap kapsamlı ortam değişkenlerini kullan - `MATRIX_OPS_HOMESERVER` - `MATRIX_OPS_ACCESS_TOKEN` -Normalize edilmiş hesap kimliği `ops-bot` için şunları 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 noktalama işaretlerini hesap kapsamlı ortam değişkenlerinde çakışma olmaması için escape eder. -Örneğin, `-`, `_X2D_` olur; bu yüzden `ops-prod`, `MATRIX_OPS_X2D_PROD_*` ile eşlenir. +Matrix, hesap kimliklerindeki noktalama işaretlerini, hesap kapsamlı ortam değişkenlerinde çakışmaları önlemek için kaçışlar. +Örneğin, `-`, `_X2D_` olur; dolayısıyla `ops-prod`, `MATRIX_OPS_X2D_PROD_*` ile eşlenir. -Etkileşimli sihirbaz yalnızca bu kimlik doğrulama ortam değişkenleri zaten mevcutsa ve seçili hesap için yapılandırmada Matrix kimlik doğrulaması zaten 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 hesabın Matrix kimlik doğrulaması yapılandırmada henüz kaydedilmemişse sunar. -`MATRIX_HOMESERVER` bir çalışma alanı `.env` dosyasından ayarlanamaz; bkz. [Çalışma alanı `.env` dosyaları](/tr/gateway/security). +`MATRIX_HOMESERVER`, bir çalışma alanı `.env` dosyasından ayarlanamaz; bkz. [Workspace `.env` files](/tr/gateway/security). ## Yapılandırma örneği -Bu, DM eşleştirmesi, oda izin listesi ve E2EE etkin olacak şekilde pratik bir temel yapılandırmadır: +Bu, DM eşleştirme, oda izin listesi ve etkin E2EE içeren pratik bir temel yapılandırmadır: ```json5 { @@ -225,18 +223,13 @@ Bu, DM eşleştirmesi, oda izin listesi ve E2EE etkin olacak şekilde pratik bir } ``` -`autoJoin`, DM tarzı davetler dahil tüm Matrix davetleri için geçerlidir. OpenClaw davet anında -davet edilen bir odayı güvenilir şekilde 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. +`autoJoin`, DM tarzı davetler dahil tüm Matrix davetleri için geçerlidir. OpenClaw, davet anında davet edilen bir odanın DM mi yoksa grup mu olduğunu güvenilir şekilde sınıflandıramaz; bu nedenle tüm davetler önce `autoJoin` üzerinden geçer. `dm.policy`, bot katıldıktan ve oda bir DM olarak sınıflandırıldıktan sonra uygulanır. ## Akış önizlemeleri Matrix yanıt akışı isteğe bağlıdır. -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: +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: ```json5 { @@ -248,186 +241,32 @@ düzenlemesini ve ardından yanıt tamamlandığında bunu sonlandırmasını is } ``` -- `streaming: "off"` varsayılandır. OpenClaw son yanıtı bekler ve bir kez gönderir. -- `streaming: "partial"`, geçerli 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 tamamlanmış blok yerine ilk akış önizleme metni için bildirim gösterebilir. -- `streaming: "quiet"`, geçerli asistan bloğu için düzenlenebilir sessiz bir önizleme bildirimi oluşturur. Bunu yalnızca tamamlanmış önizleme düzenlemeleri için alıcı push kuralları da yapılandırıyorsanız kullanın. -- `blockStreaming: true`, ayrı Matrix ilerleme mesajlarını etkinleştirir. Önizleme akışı etkin olduğunda Matrix, geçerli blok için canlı taslağı tutar ve tamamlanan blokları ayrı mesajlar olarak korur. -- Önizleme akışı açıkken `blockStreaming` kapalıysa Matrix canlı taslağı yerinde düzenler ve blok veya dönüş tamamlandığında aynı olayı sonlandırır. +- `streaming: "off"` varsayılandır. OpenClaw son yanıtı bekler ve tek seferde gönderir. +- `streaming: "partial"`, mevcut assistant bloğu için düzenlenebilir bir önizleme mesajı oluşturur ve normal Matrix metin mesajlarını kullanır. Bu, Matrix'in eski önizleme-önce bildirim davranışını korur; dolayısıyla standart istemciler tamamlanmış blok yerine ilk akış önizleme metni için bildirim gönderebilir. +- `streaming: "quiet"`, mevcut assistant 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ını 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çık ve `blockStreaming` kapalı olduğunda Matrix canlı taslağı yerinde düzenler ve blok veya dönüş tamamlandığında 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üvenli şekilde yeniden kullanılamıyorsa OpenClaw son medya yanıtını göndermeden önce onu redakte eder. -- Önizleme düzenlemeleri ek Matrix API çağrılarına mal olur. En muhafazakâr hız sınırı davranışını istiyorsanız akışı kapalı bırakın. +- Önizleme düzenlemeleri ek Matrix API çağrı maliyeti oluşturur. En korumacı 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. +`blockStreaming`, taslak önizlemelerini tek başına etkinleştirmez. +Önizleme düzenlemeleri için `streaming: "partial"` veya `streaming: "quiet"` kullanın; ardından yalnızca tamamlanmış assistant 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` değerini kapalı bırakın. `streaming: "off"` ile: -- `blockStreaming: true`, tamamlanan 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 gönderir. +- `blockStreaming: false`, yalnızca son tamamlanmış yanıtı normal, bildirim gönderen bir Matrix mesajı olarak gönderir. -### Sessiz tamamlanmış önizlemeler için self-hosted push kuralları +### 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 vermesini istiyorsanız `streaming: "quiet"` ayarlayın ve tamamlanmış önizleme düzenlemeleri için kullanıcı başına bir push kuralı ekleyin. +Sessiz akış (`streaming: "quiet"`), alıcılara yalnızca bir blok veya dönüş sonlandırıldığında bildirim gönderir — kullanıcı başına bir push kuralının sonlandırılmış önizleme işaretçisiyle eşleşmesi gerekir. Tam kurulum için [Matrix push rules for quiet previews](/tr/channels/matrix-push-rules) bölümüne bakın (alıcı belirteci, pusher denetimi, kural kurulumu, homeserver başına notlar). -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şleştirme: - -- 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 access token'ını kullanın -- push kuralındaki `sender` alanını bot kullanıcısının tam MXID'si ile eşleştirin - -1. OpenClaw'ı sessiz önizlemeler kullanacak şekilde yapılandırın: - -```json5 -{ - channels: { - matrix: { - streaming: "quiet", - }, - }, -} -``` - -2. Alıcı hesabının zaten normal Matrix push bildirimleri aldığından emin olun. Sessiz önizleme - kuralları yalnızca o kullanıcının çalışan pushers/cihazları zaten varsa çalışır. - -3. Alıcı kullanıcının access token'ını alın. - - Botun token'ını değil, alan kullanıcının token'ını kullanın. - - Mevcut bir istemci oturum token'ını yeniden kullanmak genellikle en kolay yoldur. - - Yeni bir token üretmeniz gerekirse standart Matrix Client-Server API üzerinden giriş yapabilirsiniz: - -```bash -curl -sS -X POST \ - "https://matrix.example.org/_matrix/client/v3/login" \ - -H "Content-Type: application/json" \ - --data '{ - "type": "m.login.password", - "identifier": { - "type": "m.id.user", - "user": "@alice:example.org" - }, - "password": "REDACTED" - }' -``` - -4. Alıcı hesabının zaten pusher'lara sahip olduğunu doğrulayın: - -```bash -curl -sS \ - -H "Authorization: Bearer $USER_ACCESS_TOKEN" \ - "https://matrix.example.org/_matrix/client/v3/pushers" -``` - -Bu çağrı etkin pusher/cihaz döndürmüyorsa, aşağıdaki OpenClaw kuralını eklemeden önce -normal Matrix bildirimlerini düzeltin. - -OpenClaw, sonlandırılmış yalnızca metin içeren önizleme düzenlemelerini şu işaretle belirtir: - -```json -{ - "com.openclaw.finalized_preview": true -} -``` - -5. Bu bildirimleri alması gereken her alıcı hesap için bir override push kuralı oluşturun: - -```bash -curl -sS -X PUT \ - "https://matrix.example.org/_matrix/client/v3/pushrules/global/override/openclaw-finalized-preview-botname" \ - -H "Authorization: Bearer $USER_ACCESS_TOKEN" \ - -H "Content-Type: application/json" \ - --data '{ - "conditions": [ - { "kind": "event_match", "key": "type", "pattern": "m.room.message" }, - { - "kind": "event_property_is", - "key": "content.m\\.relates_to.rel_type", - "value": "m.replace" - }, - { - "kind": "event_property_is", - "key": "content.com\\.openclaw\\.finalized_preview", - "value": true - }, - { "kind": "event_match", "key": "sender", "pattern": "@bot:example.org" } - ], - "actions": [ - "notify", - { "set_tweak": "sound", "value": "default" }, - { "set_tweak": "highlight", "value": false } - ] - }' -``` - -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 access token'ı -- `openclaw-finalized-preview-botname`: bu alıcı kullanıcı için bu bota özgü bir kural kimliği -- `@bot:example.org`: alıcı kullanıcının MXID'si değil, OpenClaw Matrix botunuzun MXID'si - -Çok botlu 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. -- Bir alan kullanıcının birden fazla OpenClaw Matrix bot hesabı için bildirim alması gerekiyorsa, 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-` şeklindedir; örneğin `openclaw-finalized-preview-ops` veya `openclaw-finalized-preview-support`. - -Kural, olay göndericisine göre değerlendirilir: - -- alan kullanıcının token'ı ile kimlik doğrulayın -- `sender` alanını OpenClaw bot MXID'si ile eşleştirin - -6. Kuralın var olduğunu doğrulayın: - -```bash -curl -sS \ - -H "Authorization: Bearer $USER_ACCESS_TOKEN" \ - "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 dönüş tamamlandığında bir kez bildirim vermelidir. - -Daha sonra kuralı kaldırmanız gerekirse, aynı kural kimliğini alan kullanıcının token'ı ile silin: - -```bash -curl -sS -X DELETE \ - -H "Authorization: Bearer $USER_ACCESS_TOKEN" \ - "https://matrix.example.org/_matrix/client/v3/pushrules/global/override/openclaw-finalized-preview-botname" -``` - -Notlar: - -- Kuralı botun token'ı ile değil, alan 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üvenle yerinde sonlandırabildiği yalnızca metin içeren önizleme düzenlemelerini etkiler. Medya yedekleri ve eski önizleme yedekleri yine normal Matrix teslimini 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 teslimi yoktur. - -#### Synapse - -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ı token'ı + yukarıdaki `pushrules` çağrısı temel 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ı çalıştırıyorsanız, pusher'ların sağlıklı olduğundan emin olun. Push teslimi ana süreç veya `synapse.app.pusher` / yapılandırılmış pusher worker'ları tarafından gerçekleştirilir. - -#### Tuwunel - -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ü yapılandırma gerekmez. -- Normal Matrix bildirimleri o kullanıcı için zaten çalışıyorsa, kullanıcı token'ı + 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'te Tuwunel 1.4.2'de ekledi ve bir cihaz etkinken diğer cihazlara yapılan push'ları bilerek bastırabilir. - -## Botlar arası odalar +## Bottan bota odalar Varsayılan olarak, yapılandırılmış diğer OpenClaw Matrix hesaplarından gelen Matrix mesajları yok sayılır. -Aracılar arası Matrix trafiğini bilerek istiyorsanız `allowBots` kullanın: +Kasıtlı olarak ajanlar arası Matrix trafiği istiyorsanız `allowBots` kullanın: ```json5 { @@ -445,16 +284,16 @@ Aracılar arası Matrix trafiğini bilerek istiyorsanız `allowBots` kullanın: ``` - `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. +- `allowBots: "mentions"`, bu mesajları yalnızca odalarda görünür şekilde bu bottan bahsediyorlarsa 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 üzerinde yapılandırılmış başka bir Matrix hesabı tarafından gönderilmiş" şeklinde değerlendirir. +- OpenClaw, kendi kendine yanıt döngülerini önlemek için aynı Matrix kullanıcı kimliğinden gelen mesajları yine de yok sayar. +- Matrix burada yerel bir bot bayrağı sunmaz; OpenClaw, "bot tarafından gönderilmiş" ifadesini "bu OpenClaw gateway'inde yapılandırılmış başka bir Matrix hesabı tarafından gönderilmiş" olarak değerlendirir. -Paylaşılan odalarda botlar arası trafiği etkinleştirirken sıkı oda izin listeleri ve bahsetme gereksinimleri kullanın. +Paylaşılan odalarda botlar arası trafiği etkinleştirirken katı oda izin listeleri ve bahsetme gereksinimleri kullanın. ## Şifreleme ve doğrulama -Şifrelenmiş (E2EE) odalarda, giden resim olayları `thumbnail_file` kullanır; böylece resim önizlemeleri tam ekle birlikte şifrelenir. Şifrelenmemiş odalar yine düz `thumbnail_url` kullanır. Yapılandırma gerekmez — plugin 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. Hiçbir yapılandırma gerekmez — plugin E2EE durumunu otomatik olarak algılar. Şifrelemeyi etkinleştirin: @@ -472,91 +311,21 @@ Paylaşılan odalarda botlar arası trafiği etkinleştirirken sıkı oda izin l } ``` -Doğrulama durumunu kontrol edin: +Doğrulama komutları (hepsi tanılama için `--verbose` ve makine tarafından okunabilir çıktı için `--json` alır): -```bash -openclaw matrix verify status -``` +| Komut | Amaç | +| -------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `openclaw matrix verify status` | Çapraz imzalama ve cihaz doğrulama durumunu denetle | +| `openclaw matrix verify status --include-recovery-key --json` | Saklanan kurtarma anahtarını dahil et | +| `openclaw matrix verify bootstrap` | Çapraz imzalama ve doğrulamayı bootstrap et (aşağıya bakın) | +| `openclaw matrix verify bootstrap --force-reset-cross-signing` | Mevcut çapraz imzalama kimliğini at ve yenisini oluştur | +| `openclaw matrix verify device ""` | Bu cihazı bir kurtarma anahtarıyla doğrula | +| `openclaw matrix verify backup status` | Oda anahtarı yedekleme durumunu denetle | +| `openclaw matrix verify backup restore` | Oda anahtarlarını sunucu yedeğinden geri yükle | +| `openclaw matrix verify backup reset --yes` | Mevcut yedeği sil ve yeni bir temel oluştur (gizli depolamayı yeniden oluşturabilir) | -Ayrıntılı durum (tam tanılama): - -```bash -openclaw matrix verify status --verbose -``` - -Makine tarafından okunabilir çıktıya saklanan kurtarma anahtarını ekleyin: - -```bash -openclaw matrix verify status --include-recovery-key --json -``` - -Cross-signing ve doğrulama durumunu bootstrap edin: - -```bash -openclaw matrix verify bootstrap -``` - -Ayrıntılı bootstrap tanılaması: - -```bash -openclaw matrix verify bootstrap --verbose -``` - -Bootstrap etmeden önce 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ı ile doğrulayın: - -```bash -openclaw matrix verify device "" -``` - -Ayrıntılı cihaz doğrulama bilgileri: - -```bash -openclaw matrix verify device "" --verbose -``` - -Oda anahtarı yedekleme sağlığını kontrol edin: - -```bash -openclaw matrix verify backup status -``` - -Ayrıntılı yedekleme sağlığı tanılaması: - -```bash -openclaw matrix verify backup status --verbose -``` - -Sunucu yedeğinden oda anahtarlarını geri yükleyin: - -```bash -openclaw matrix verify backup restore -``` - -Ayrıntılı geri yükleme tanılaması: - -```bash -openclaw matrix verify backup restore --verbose -``` - -Geçerli sunucu yedeğini silin ve yeni bir yedekleme temel çizgisi oluşturun. Saklanan -yedek anahtarı temiz biçimde yüklenemiyorsa, bu sıfırlama gizli depolamayı da yeniden oluşturabilir; böylece -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ısa çıktılıdır (sessiz dahili SDK günlüğü dahil) ve ayrıntılı tanılamayı 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 ` geçmediğiniz sürece ö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. +Çok hesaplı kurulumlarda Matrix CLI komutları, `--account ` geçmediğ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 takdirde 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 @@ -565,42 +334,34 @@ openclaw matrix verify backup restore --account assistant openclaw matrix devices list --account assistant ``` -Şifreleme devre dışıysa veya adlandırılmış bir hesap için 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`. +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ı gösterir; örneğin `channels.matrix.accounts.assistant.encryption`. -### "Doğrulanmış" ne demektir + + + OpenClaw, bir cihazı yalnızca sizin kendi çapraz imzalama kimliğiniz onu imzaladığında doğrulanmış kabul eder. `verify status --verbose` üç güven sinyali gösterir: -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 gösterir: + - `Locally trusted`: yalnızca bu istemci tarafından güvenilir + - `Cross-signing verified`: SDK, doğrulamayı çapraz imzalama üzerinden bildirir + - `Signed by owner`: sizin kendi self-signing anahtarınız tarafından imzalanmış -- `Locally trusted`: bu cihaz yalnızca geçerli istemci tarafından güvenilir kabul edilir -- `Cross-signing verified`: SDK cihazı cross-signing aracılığıyla doğrulanmış olarak bildirir -- `Signed by owner`: cihaz kendi self-signing anahtarınız tarafından imzalanmıştır + `Verified by owner`, yalnızca çapraz imzalama veya sahip imzası mevcut olduğunda `yes` olur. Yalnızca yerel güven yeterli değildir. -`Verified by owner`, yalnızca cross-signing doğrulaması veya sahip imzası mevcut olduğunda `yes` olur. -Yerel güven tek başına OpenClaw'ın cihazı tam doğrulanmış olarak değerlendirmesi için yeterli değildir. + -### Bootstrap ne yapar + + `verify bootstrap`, şifrelenmiş hesaplar için onarım ve kurulum komutudur. Sırasıyla şunları yapar: -`openclaw matrix verify bootstrap`, şifrelenmiş Matrix hesapları için onarım ve kurulum komutudur. -Sırasıyla şunların tümünü yapar: + - mümkün olduğunda mevcut bir kurtarma anahtarını yeniden kullanarak gizli depolamayı bootstrap eder + - çapraz imzalamayı bootstrap eder ve eksik genel çapraz imzalama anahtarlarını yükler + - mevcut cihazı işaretler ve çapraz imzalar + - henüz yoksa sunucu tarafında bir oda anahtarı yedeği oluşturur -- mümkün olduğunda mevcut bir kurtarma anahtarını yeniden kullanarak gizli depolamayı bootstrap eder -- cross-signing'i bootstrap eder ve eksik genel cross-signing anahtarlarını yükler -- geçerli cihazı işaretlemeyi ve cross-signing ile imzalamayı dener -- zaten mevcut değilse yeni bir sunucu tarafı oda anahtarı yedeği oluşturur + homeserver, çapraz imzalama anahtarlarını yüklemek için UIA gerektiriyorsa OpenClaw önce kimlik doğrulamasız dener, sonra `m.login.dummy`, ardından `m.login.password` dener (`channels.matrix.password` gerektirir). `--force-reset-cross-signing` seçeneğini yalnızca mevcut kimliği kasıtlı olarak atarken kullanın. -Homeserver, cross-signing anahtarlarını yüklemek için etkileşimli kimlik doğrulama gerektiriyorsa OpenClaw önce yüklemeyi kimlik doğrulama olmadan, sonra `m.login.dummy` ile, ardından `channels.matrix.password` yapılandırılmışsa `m.login.password` ile dener. + -Geçerli cross-signing kimliğini atmak ve yeni bir tane oluşturmak istiyorsanız `--force-reset-cross-signing` seçeneğini yalnızca bilinçli olarak kullanın. - -Geçerli oda anahtarı yedeğini bilinçli olarak atmak ve gelecekteki mesajlar için yeni -bir yedekleme 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 geçerli yedek -gizlisi güvenle yüklenemiyorsa gizli depolamayı yeniden oluşturabileceğini kabul ediyorsanız yapın. - -### Yeni yedekleme temel çizgisi - -Gelecekteki şifreli mesajların çalışmasını sürdürmek ve kurtarılamayan eski geçmişi kaybetmeyi kabul etmek istiyorsanız, şu komutları sırayla çalıştırın: + + Gelecekteki şifreli mesajların çalışmaya devam etmesini istiyor ve kurtarılamayan eski geçmişi kaybetmeyi kabul ediyorsanız: ```bash openclaw matrix verify backup reset --yes @@ -608,75 +369,49 @@ openclaw matrix verify backup status --verbose openclaw matrix verify status ``` -Açıkça adlandırılmış bir Matrix hesabını hedeflemek istiyorsanız her komuta `--account ` ekleyin. + Adlandırılmış bir hesabı hedeflemek için `--account ` ekleyin. Mevcut yedekleme gizlisi güvenli şekilde yüklenemiyorsa bu işlem gizli depolamayı da yeniden oluşturabilir. -### Başlangıç davranışı + -`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 kendi kendini doğrulama isteğinde bulunur, -zaten bekleyen bir istek varken yinelenen istekleri atlar ve yeniden başlatmalardan sonra tekrar denemeden önce yerel bir bekleme süresi uygular. -Başarısız istek denemeleri varsayılan olarak başarılı istek oluşturmalardan 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. + + `encryption: true` ile `startupVerification` varsayılan olarak `"if-unverified"` olur. Başlangıçta doğrulanmamış bir cihaz başka bir Matrix istemcisinde self-verification ister, yinelenenleri atlar ve bir bekleme süresi uygular. `startupVerificationCooldownHours` ile ayarlayın veya `startupVerification: "off"` ile devre dışı bırakın. -Başlangıç ayrıca otomatik olarak ihtiyatlı bir kripto bootstrap geçişi de gerçekleştirir. -Bu geçiş önce mevcut gizli depolamayı 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 mevcut gizli depolamayı ve çapraz imzalama kimliğini yeniden kullanan korumacı bir kripto bootstrap geçişi yürütür. Bootstrap durumu bozuksa OpenClaw, `channels.matrix.password` olmasa bile korumalı bir onarım dener; homeserver parola UIA gerektiriyorsa başlangıç bir uyarı günlüğe yazar ve ölümcül olmayan şekilde devam eder. Zaten sahip tarafından imzalanmış cihazlar korunur. -Başlangıç hâlâ bozuk bootstrap durumu bulursa, OpenClaw `channels.matrix.password` yapılandırılmamış olsa bile korumalı bir onarım yolu deneyebilir. -Homeserver bu onarım için parola tabanlı UIA gerektiriyorsa OpenClaw bir uyarı kaydeder ve botu durdurmak yerine başlangıcı ölümcül olmayan durumda tutar. -Geçerli cihaz zaten sahip tarafından imzalanmışsa, OpenClaw bu kimliği otomatik olarak sıfırlamak yerine korur. + Tam yükseltme akışı 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ş iletileri için [Matrix geçişi](/tr/install/migrating-matrix) bölümüne bakın. + -### Doğrulama bildirimleri + + Matrix, katı DM doğrulama odasına doğrulama yaşam döngüsü bildirimlerini `m.notice` mesajları olarak gönderir: istek, hazır (\"Emoji ile doğrula\" yönergesiyle), başlangıç/tamamlama ve mevcut olduğunda SAS (emoji/onluk) ayrıntıları. -Matrix, doğrulama yaşam döngüsü bildirimlerini doğrudan sıkı DM doğrulama odasına `m.notice` mesajları olarak gönderir. -Buna şunlar dahildir: + Başka bir Matrix istemcisinden gelen istekler izlenir ve otomatik kabul edilir. Self-verification için OpenClaw SAS akışını otomatik olarak başlatır ve emoji doğrulaması kullanılabilir olduğunda kendi tarafını onaylar — yine de Matrix istemcinizde karşılaştırmanız ve \"Eşleşiyor\" onayını vermeniz gerekir. -- doğrulama isteği bildirimleri -- doğrulama hazır bildirimleri ("Emoji ile doğrulayın" yönlendirmesi açıkça dahil) -- doğrulama başlangıcı ve tamamlanma bildirimleri -- mevcut olduğunda SAS ayrıntıları (emoji ve ondalık) + Doğrulama sistem bildirimleri ajan sohbet hattına iletilmez. -Başka bir Matrix istemcisinden gelen doğrulama istekleri OpenClaw tarafından izlenir ve otomatik kabul edilir. -Kendi kendini doğrulama 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'ı karşılaştırmanız ve orada "Eşleşiyorlar" onayı vermeniz gerekir. + -OpenClaw kendi başlattığı yinelenen akışları körü körüne otomatik kabul etmez. Başlangıç, kendi kendini doğrulama isteği zaten bekliyorsa yeni bir istek oluşturmayı atlar. - -Doğrulama protokolü/sistem bildirimleri aracı sohbet hattına iletilmez, bu yüzden `NO_REPLY` üretmezler. - -### Cihaz hijyeni - -Eski OpenClaw yönetimli Matrix cihazları hesapta birikebilir ve şifreli oda güvenini anlamayı zorlaştırabilir. -Bunları şu komutla listeleyin: + + OpenClaw tarafından yönetilen eski cihazlar birikebilir. Listelemek ve temizlemek için: ```bash openclaw matrix devices list -``` - -Eski OpenClaw yönetimli cihazları şu komutla kaldırın: - -```bash openclaw matrix devices prune-stale ``` -### Kripto deposu + -Matrix E2EE, Node içinde resmi `matrix-js-sdk` Rust kripto yolunu kullanır; IndexedDB shim'i olarak da `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. + + Matrix E2EE, IndexedDB shim'i olarak `fake-indexeddb` ile birlikte resmi `matrix-js-sdk` Rust kripto yolunu kullanır. Kripto durumu `crypto-idb-snapshot.json` içine kalıcı olarak yazılır (kısıtlayıcı dosya izinleriyle). -Şifrelenmiş çalışma zamanı durumu, hesap başına, kullanıcı başına token-hash kökleri altında -`~/.openclaw/matrix/accounts//__//` içinde yaşar. -Bu dizin eşzamanlama deposunu (`bot-storage.json`), kripto deposunu (`crypto/`), -kurtarma anahtarı dosyasını (`recovery-key.json`), IndexedDB anlık görüntüsünü (`crypto-idb-snapshot.json`), -iş parçacığı bağlamaları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 en iyi mevcut -kökü yeniden kullanır; böylece önceki eşzamanlama durumu, kripto durumu, iş parçacığı bağlamaları -ve başlangıç doğrulama durumu görünür kalır. + Şifreli çalışma zamanı durumu `~/.openclaw/matrix/accounts//__//` altında yaşar ve sync store, kripto deposu, kurtarma anahtarı, IDB anlık görüntüsü, başlık bağları ve başlangıç doğrulama durumunu içerir. Belirteç değiştiğinde ancak hesap kimliği aynı kaldığında OpenClaw en iyi mevcut kökü yeniden kullanır; böylece önceki durum görünür kalır. + + + ## Profil yönetimi -Seçilen hesap için Matrix öz profilini şu komutla güncelleyin: +Seçili hesap için Matrix self-profile değerini şununla güncelleyin: ```bash openclaw matrix profile set --name "OpenClaw Assistant" @@ -685,47 +420,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. Bir `http://` veya `https://` avatar URL'si verdiğinizde OpenClaw bunu önce Matrix'e yükler ve çözümlenen `mxc://` URL'sini `channels.matrix.avatarUrl` içine (veya seçilen hesap geçersiz kılmasına) geri yazar. -## İş parçacıkları +## Başlıklar -Matrix, hem otomatik yanıtlar hem de mesaj aracı gönderimleri için yerel Matrix iş parçacıklarını destekler. +Matrix, hem otomatik yanıtlar hem de ileti-aracı gönderimleri için yerel Matrix başlıklarını destekler. -- `dm.sessionScope: "per-user"` (varsayılan), Matrix DM yönlendirmesini gönderici kapsamlı tutar; böylece birden fazla DM odası aynı eş düzeyine çözülüyorsa tek bir oturumu paylaşabilir. -- `dm.sessionScope: "per-room"`, normal DM kimlik doğrulama ve izin listesi denetimlerini kullanmaya devam ederken her Matrix DM odasını kendi oturum anahtarına yalıtır. -- Açık Matrix konuşma bağlamaları yine de `dm.sessionScope` üzerinde önceliklidir; bu nedenle bağlı 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 bırakır. -- `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ı tetikleyen mesaja köklenen bir iş parçacığında tutar ve o konuşmayı ilk tetikleyen mesajdan itibaren eşleşen iş parçacığı kapsamlı oturum üzerinden yönlendirir. -- `dm.threadReplies`, üst düzey ayarı yalnızca DM'ler için geçersiz kılar. Örneğin, DM'leri düz tutarken oda iş parçacıklarını yalıtılmış tutabilirsiniz. -- Gelen iş parçacıklı mesajlar, iş parçacığı kök mesajını ek aracı bağlamı olarak içerir. -- Mesaj aracı gönderimleri, açık bir `threadId` verilmedikçe, hedef aynı oda veya aynı DM kullanıcı hedefi olduğunda geçerli Matrix iş parçacığını otomatik olarak devralır. -- Aynı oturumlu DM kullanıcı hedefi yeniden kullanımı yalnızca geçerli oturum meta verileri aynı Matrix hesabındaki aynı DM eş düzeyini kanıtladığında 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, iş parçacığı bağlamaları etkinken ve `dm.sessionScope` ipucuyla birlikte o odada `/focus` kaçış kapısını içeren bir defalık `m.notice` gönderir. -- Matrix için çalışma zamanı iş parçacığı bağlamaları 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 geçerli iş parçacığını bağlar. +- `dm.sessionScope: "per-user"` (varsayılan), Matrix DM yönlendirmesini gönderen kapsamlı tutar; böylece birden çok DM odası aynı eşe çözümlendiğinde tek bir oturumu paylaşabilir. +- `dm.sessionScope: "per-room"`, her Matrix DM odasını kendi oturum anahtarına ayırırken yine de normal DM kimlik doğrulama ve izin listesi denetimlerini kullanır. +- Açık Matrix konuşma bağları yine de `dm.sessionScope` üzerinde önceliklidir; bu nedenle bağlanmış odalar ve başlıklar seçtikleri hedef oturumu korur. +- `threadReplies: "off"`, yanıtları üst düzeyde tutar ve gelen başlıklı mesajları üst oturumda bırakır. +- `threadReplies: "inbound"`, yalnızca gelen mesaj zaten o başlıktaysa başlık içinde yanıt verir. +- `threadReplies: "always"`, oda yanıtlarını tetikleyici iletiye köklenen bir başlıkta tutar ve o konuşmayı ilk tetikleyici iletiden itibaren eşleşen başlık kapsamlı oturum üzerinden yönlendirir. +- `dm.threadReplies`, üst düzey ayarı yalnızca DM'ler için geçersiz kılar. Örneğin, odalardaki başlıkları yalıtılmış tutarken DM'leri düz tutabilirsiniz. +- Gelen başlıklı mesajlar, ek ajan bağlamı olarak başlık kök iletisini içerir. +- Hedef aynı oda veya aynı DM kullanıcı hedefi olduğunda, açık bir `threadId` verilmedikçe ileti-aracı gönderimleri mevcut Matrix başlığını otomatik 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, başlık bağları etkinse ve `dm.sessionScope` ipucu mevcutsa o odaya `/focus` kaçış kapağıyla birlikte bir defalık `m.notice` gönderir. +- Çalışma zamanı başlık bağları Matrix için desteklenir. `/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` ve başlığa 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 başlığı oluşturur ve bunu hedef oturuma bağlar. +- Mevcut bir Matrix başlığı içinde `/focus` veya `/acp spawn --thread here` çalıştırmak bunun yerine o mevcut başlığı bağlar. -## ACP konuşma bağlamaları +## ACP konuşma bağları -Matrix odaları, DM'ler ve mevcut Matrix iş parçacıkları, sohbet yüzeyini değiştirmeden kalıcı ACP çalışma alanlarına dönüştürülebilir. +Matrix odaları, DM'ler ve mevcut Matrix başlıkları, sohbet yüzeyini değiştirmeden 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 iş parçacığı içinde `/acp spawn codex --bind here` çalıştırın. -- Üst düzey bir Matrix DM veya odasında geçerli 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`, bu geçerli iş parçacığını yerinde bağlar. +- Kullanmaya devam etmek istediğiniz Matrix DM, oda veya mevcut başlık 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 başlığı içinde `--bind here`, o mevcut başlığı yerinde bağlar. - `/new` ve `/reset`, aynı bağlı ACP oturumunu yerinde sıfırlar. -- `/acp close`, ACP oturumunu kapatır ve bağlamayı kaldırır. +- `/acp close`, ACP oturumunu kapatır ve bağı kaldırır. Notlar: -- `--bind here`, alt Matrix iş parçacığı oluşturmaz. -- `threadBindings.spawnAcpSessions`, yalnızca OpenClaw'ın alt Matrix iş parçacığı oluşturması veya bağlaması gereken `/acp spawn --thread auto|here` için gereklidir. +- `--bind here`, alt Matrix başlığı oluşturmaz. +- `threadBindings.spawnAcpSessions`, yalnızca OpenClaw'un alt Matrix başlığı oluşturması veya bağlaması gereken `/acp spawn --thread auto|here` için gereklidir. -### İş parçacığı bağlama yapılandırması +### Başlık bağlama yapılandırması -Matrix, genel varsayılanları `session.threadBindings` içinden devralır ve ayrıca kanal başına geçersiz kılmaları destekler: +Matrix, genel varsayılanları `session.threadBindings` içinden devralır ve kanal başına geçersiz kılmaları da destekler: - `threadBindings.enabled` - `threadBindings.idleHours` @@ -733,18 +468,18 @@ Matrix, genel varsayılanları `session.threadBindings` içinden devralır ve ay - `threadBindings.spawnSubagentSessions` - `threadBindings.spawnAcpSessions` -Matrix iş parçacığına bağlı spawn bayrakları isteğe bağlıdır: +Matrix başlığa bağlı oluşturma bayrakları isteğe bağlıdır: -- Ü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. +- Üst düzey `/focus` komutunun yeni Matrix başlı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 başlı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` ile denetlenir. +- Giden tepki araçları `channels["matrix"].actions.reactions` tarafından korunur. - `react`, belirli bir Matrix olayına tepki ekler. -- `reactions`, belirli bir Matrix olayı için geçerli tepki özetini listeler. +- `reactions`, belirli bir Matrix olayı için mevcut tepki özetini listeler. - `emoji=""`, bot hesabının o olay üzerindeki kendi tepkilerini kaldırır. - `remove: true`, yalnızca belirtilen emoji tepkisini bot hesabından kaldırır. @@ -753,15 +488,15 @@ Ack tepkileri standart OpenClaw çözümleme sırasını kullanır: - `channels["matrix"].accounts..ackReaction` - `channels["matrix"].ackReaction` - `messages.ackReaction` -- aracı kimliği emoji yedeği +- ajan kimliği emoji geri dönüşü -Ack tepki kapsamı şu sırayla çözülür: +Ack tepki kapsamı şu sırada çözülür: - `channels["matrix"].accounts..ackReactionScope` - `channels["matrix"].ackReactionScope` - `messages.ackReactionScope` -Tepki bildirim modu şu sırayla çözülür: +Tepki bildirim modu şu sırada çözülür: - `channels["matrix"].accounts..reactionNotifications` - `channels["matrix"].reactionNotifications` @@ -771,26 +506,26 @@ 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. -- Tepki kaldırmaları, Matrix bunları bağımsız `m.reaction` kaldırmaları olarak değil redaksiyonlar olarak sunduğu için sistem olaylarına sentezlenmez. +- Tepki kaldırmaları, Matrix bunları bağımsız `m.reaction` kaldırmaları olarak değil redaksiyonlar olarak gösterdiği için sistem olaylarına sentezlenmez. ## Geçmiş bağlamı -- `channels.matrix.historyLimit`, bir Matrix oda mesajı aracıyı tetiklediğinde `InboundHistory` olarak dahil edilen son oda mesajlarının sayısını kontrol eder. `messages.groupChat.historyLimit` değerine geri döner; 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ı ajanı tetiklediğinde `InboundHistory` içine kaç son oda mesajının dahil edileceğini kontrol eder. `messages.groupChat.historyLimit` değerine geri düşer; ikisi de ayarlanmamışsa 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 beklemede olanları içerir: OpenClaw henüz yanıtı tetiklememiş oda mesajlarını tamponlar, ardından bir bahsetme veya başka bir tetikleyici geldiğinde o pencerenin anlık görüntüsünü alır. +- Matrix oda geçmişi yalnızca bekleyen öğeler içindir: OpenClaw henüz yanıt tetiklememiş oda mesajlarını arabelleğe alır, ardından bir bahsetme 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 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. +- 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. ## Bağlam görünürlüğü -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. +Matrix, getirilen yanıt metni, başlık 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 tutulur. -- `contextVisibility: "allowlist"`, ek bağlamı etkin oda/kullanıcı izin listesi denetimleri tarafından izin verilen göndericilere filtreler. -- `contextVisibility: "allowlist_quote"`, `allowlist` gibi davranır, ancak yine de tek bir açık alıntı yanıtı tutar. +- `contextVisibility: "all"` varsayılandır. Ek bağlam alındığı gibi korunur. +- `contextVisibility: "allowlist"`, ek bağlamı etkin oda/kullanıcı izin listesi denetimlerinin izin verdiği gönderenlere göre filtreler. +- `contextVisibility: "allowlist_quote"`, `allowlist` gibi davranır ancak yine de açıkça alıntılanmış bir yanıtı korur. -Bu ayar, ek bağlam görünürlüğünü etkiler; gelen iletinin kendisinin yanıtı tetikleyip tetikleyemeyeceğini değil. -Tetikleme yetkilendirmesi hâlâ `groupPolicy`, `groups`, `groupAllowFrom` ve DM ilke ayarlarından gelir. +Bu ayar, ek bağlam görünürlüğünü etkiler; gelen mesajın kendisinin yanıt tetikleyip tetikleyemeyeceğini etkilemez. +Tetikleyici yetkilendirmesi hâlâ `groupPolicy`, `groups`, `groupAllowFrom` ve DM ilke ayarlarından gelir. ## DM ve oda ilkesi @@ -815,7 +550,7 @@ Tetikleme yetkilendirmesi hâlâ `groupPolicy`, `groups`, `groupAllowFrom` ve DM } ``` -Bahsetme geçidi ve izin listesi davranışı için [Groups](/tr/channels/groups) bölümüne bakın. +Bahsetme geçitlemesi ve izin listesi davranışı için [Groups](/tr/channels/groups) bölümüne bakın. Matrix DM'leri için eşleştirme örneği: @@ -824,19 +559,19 @@ openclaw pairing list matrix openclaw pairing approve matrix ``` -Onaylanmamış bir Matrix kullanıcısı onaydan önce size mesaj göndermeye devam ederse, OpenClaw aynı bekleyen eşleştirme kodunu yeniden kullanır ve yeni bir kod üretmek yerine kısa bir bekleme süresinden sonra tekrar bir hatırlatma yanıtı gönderebilir. +Onaylanmamış bir Matrix kullanıcısı onaydan önce size mesaj göndermeye devam ederse, OpenClaw aynı bekleyen eşleştirme 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şleştirme akışı ve depolama düzeni için [Pairing](/tr/channels/pairing) bölümüne bakın. ## Doğrudan oda onarımı -Doğrudan mesaj durumu eşzaman dışı kalırsa, OpenClaw canlı DM yerine eski tekli odaları işaret eden bayat `m.direct` eşlemeleriyle karşılaşabilir. Bir eş düzeyi için geçerli eşlemeyi şu komutla inceleyin: +Doğrudan mesaj durumu eşzamanını kaybederse, OpenClaw canlı DM yerine eski tekil odaları işaret eden bayat `m.direct` eşlemeleriyle kalabilir. Bir eş için mevcut eşlemeyi şununla inceleyin: ```bash openclaw matrix direct inspect --user-id @alice:example.org ``` -Şu komutla onarın: +Şununla onarın: ```bash openclaw matrix direct repair --user-id @alice:example.org @@ -844,59 +579,59 @@ openclaw matrix direct repair --user-id @alice:example.org Onarım akışı: -- `m.direct` içinde zaten eşlenmiş katı 1:1 bir DM'yi tercih eder -- aynı kullanıcıyla şu anda katılınmış 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`'i yeniden yazar +- `m.direct` içinde zaten eşlenmiş katı bir 1:1 DM'yi tercih eder +- bu kullanıcıyla şu anda katılmış olunan herhangi bir katı 1:1 DM'ye geri düşer +- sağlıklı bir DM yoksa yeni bir doğrudan oda oluşturur ve `m.direct` değerini 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 olarak davranabilir. Yerel -DM/kanal yönlendirme düğmeleri yine exec onay yapılandırması altında bulunur: +Matrix, bir Matrix hesabı için yerel bir onay istemcisi olarak çalışabilir. Yerel +DM/kanal yönlendirme düğmeleri hâlâ 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ıdır; `channels.matrix.dm.allowFrom` değerine geri düşer) - `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` ayarlı değilse veya `"auto"` ise ve en az bir onaylayıcı çözümlenebiliyorsa yerel onayları otomatik olarak etkinleştirir. Exec onayları önce `execApprovals.approvers` kullanır ve `channels.matrix.dm.allowFrom` değerine geri dönebilir. 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 yedek ilkesine geri döner. +Onay verenler `@owner:example.org` gibi Matrix kullanıcı kimlikleri olmalıdır. Matrix, `enabled` ayarlanmamış veya `"auto"` olduğunda ve en az bir onay vereni çözümleyebildiğinde yerel onayları otomatik etkinleştirir. Exec onayları önce `execApprovals.approvers` kullanır ve `channels.matrix.dm.allowFrom` değerine geri düşebilir. 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 takdirde onay istekleri diğer yapılandırılmış onay yollarına veya onay geri dönüş ilkesine döner. 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 kontrol eder. -- Exec onayları, `execApprovals.approvers` veya `channels.matrix.dm.allowFrom` içinden gelen exec onaylayıcı kümesini kullanır. -- Plugin 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 plugin onaylarına uygulanır. +- Exec onayları `execApprovals.approvers` veya `channels.matrix.dm.allowFrom` içindeki exec onaylayıcı kümesini kullanır. +- Plugin onayları `channels.matrix.dm.allowFrom` içindeki Matrix DM izin listesini kullanır. +- Matrix tepki kısayolları ve ileti güncellemeleri hem exec hem de plugin onayları için geçerlidir. Teslim kuralları: -- `target: "dm"`, onay istemlerini onaylayıcı DM'lerine gönderir +- `target: "dm"`, onay istemlerini onay verenlerin 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: "both"`, onay verenlerin DM'lerine ve kaynak Matrix odasına veya DM'ye gönderir -Matrix onay istemleri, birincil onay mesajı üzerine tepki kısayolları yerleştirir: +Matrix onay istemleri, birincil onay mesajında tepki kısayollarını başlatır: - `✅` = bir kez izin ver - `❌` = reddet -- `♾️` = bu karar etkin exec ilkesi tarafından izin verildiğinde her zaman izin ver +- `♾️` = etkin exec ilkesi o karara izin veriyorsa her zaman izin ver -Onaylayıcılar o mesaja tepki verebilir veya yedek slash komutlarını kullanabilir: `/approve allow-once`, `/approve allow-always` veya `/approve deny`. +Onay verenler bu mesaja tepki verebilir veya geri dönüş slash komutlarını kullanabilir: `/approve allow-once`, `/approve allow-always` veya `/approve deny`. -Yalnızca çözümlenmiş onaylayıcılar onaylayabilir veya reddedebilir. Exec onayları için kanal teslimi komut metnini içerir; bu nedenle `channel` veya `both` seçeneklerini yalnızca güvenilen odalarda etkinleştirin. +Yalnızca çözülmüş onay verenler onay verebilir veya reddedebilir. Exec onayları için kanal teslimi komut metnini içerir; bu nedenle `channel` veya `both` seçeneklerini yalnızca güvenilir odalarda etkinleştirin. Hesap başına geçersiz kılma: - `channels.matrix.accounts..execApprovals` -İlgili belgeler: [Exec onayları](/tr/tools/exec-approvals) +İlgili belgeler: [Exec approvals](/tr/tools/exec-approvals) ## Slash komutları -Matrix slash komutları (örneğin `/new`, `/reset`, `/model`) DM'lerde doğrudan çalışır. Odalarda OpenClaw, botun kendi Matrix mention'ı ile öneklenen slash komutlarını da tanır; bu nedenle `@bot:server /new`, özel bir mention regex'i gerektirmeden komut yolunu tetikler. Bu, bir kullanıcı komutu yazmadan önce sekme tamamlama ile botu eklediğinde Element ve benzeri istemcilerin gönderdiği oda tarzı `@mention /command` iletilerine botun yanıt vermeye devam etmesini sağlar. +Matrix slash komutları (örneğin `/new`, `/reset`, `/model`) doğrudan DM'lerde çalışır. Odalarda OpenClaw ayrıca botun kendi Matrix bahsetmesiyle öneklenen slash komutlarını da tanır; bu nedenle `@bot:server /new`, özel bir bahsetme regex'i gerektirmeden komut yolunu tetikler. Bu, kullanıcı botu komutu yazmadan önce sekmeyle tamamladığında Element ve benzeri istemcilerin ürettiği oda tarzı `@mention /command` gönderilerine botun yanıt vermeye devam etmesini sağlar. -Yetkilendirme kuralları yine geçerlidir: komut gönderenler, düz mesajlarda olduğu gibi DM veya oda izin listesi/sahip ilkelerini karşılamalıdır. +Yetkilendirme kuralları yine geçerlidir: komut gönderenlerin, düz mesajlarda olduğu gibi DM veya oda izin listesi/sahip ilkelerini karşılaması gerekir. ## Çok hesaplı @@ -928,24 +663,25 @@ Yetkilendirme kuralları yine geçerlidir: komut gönderenler, düz mesajlarda o } ``` -Üst düzey `channels.matrix` değerleri, bir hesap bunları geçersiz kılmadığı sürece adlandırılmış hesaplar için varsayılan olarak davranır. +Üst düzey `channels.matrix` değerleri, bir hesap tarafından geçersiz kılınmadıkça adlandırılmış hesaplar için varsayılan olarak davranır. Devralınan oda girdilerini tek bir Matrix hesabına `groups..account` ile kapsamlayabilirsiniz. -`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şına ayrı bir örtük varsayılan hesap oluşturmaz. OpenClaw yalnızca üst düzey `default` hesabını, bu varsayılan yeni kimlik doğrulamaya sahip olduğunda (`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ı karşıladığında `homeserver` artı `userId` üzerinden yine keşfedilebilir kalabilir. -Matrix'in zaten tam olarak bir adlandırılmış hesabı 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 bu hesabı korur. Yalnızca Matrix kimlik doğrulama/bootstrap anahtarları bu yükseltilmiş hesaba taşınır; paylaşımlı teslim ilkesi anahtarları üst düzeyde kalır. -OpenClaw'ın örtük yönlendirme, yoklama ve CLI işlemleri için 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` ayarlı olmasa 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. +`account` olmayan girdiler tüm Matrix hesapları arasında paylaşımlı kalır ve `account: "default"` olan girdiler varsayılan hesap doğrudan üst düzey `channels.matrix.*` altında yapılandırıldığında da çalışmaya devam eder. +Kısmi paylaşımlı kimlik doğrulama varsayılanları kendi başına ayrı bir örtük varsayılan hesap oluşturmaz. OpenClaw, üst düzey `default` hesabını yalnızca bu varsayılanın güncel kimlik doğrulaması olduğunda sentezler (`homeserver` artı `accessToken` veya `homeserver` artı `userId` ve `password`); adlandırılmış hesaplar ise kimlik doğrulama daha sonra önbelleğe alınmış kimlik bilgileriyle karşılandığında `homeserver` artı `userId` üzerinden keşfedilebilir kalabilir. +Matrix zaten tam olarak bir adlandırılmış hesaba sahipse veya `defaultAccount` mevcut bir adlandırılmış hesap anahtarını işaret ediyorsa, tek hesaplıdan çok hesaplıya 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şımlı teslim ilkesi anahtarları üst düzeyde kalır. +OpenClaw'un örtük yönlendirme, yoklama ve CLI işlemleri için adlandırılmış Matrix hesaplarından birini tercih etmesini istediğinizde `defaultAccount` ayarlayın. +Birden çok 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 çok 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 [Yapılandırma başvurusu](/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) bölümüne bakın. -## Özel/LAN homeserver'lar +## Ö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ını engeller. +Varsayılan olarak OpenClaw, siz +hesap başına açıkça izin vermedikçe SSRF koruması için özel/dahili Matrix homeserver'larını engeller. -Homeserver'ınız localhost, bir LAN/Tailscale IP'si veya dahili bir ana makine adı üzerinde çalışıyorsa, -o Matrix hesabı için `network.dangerouslyAllowPrivateNetwork` seçeneğini etkinleştirin: +homeserver'ınız localhost, bir LAN/Tailscale IP'si veya dahili bir ana bilgisayar adı üzerinde çalışıyorsa, +o Matrix hesabı için `network.dangerouslyAllowPrivateNetwork` ayarını etkinleştirin: ```json5 { @@ -971,12 +707,12 @@ openclaw matrix account add \ --access-token syt_ops_xxx ``` -Bu isteğe bağlı izin yalnızca güvenilen özel/dahili hedeflere izin verir. Şu tür herkese açık düz metin homeserver'lar -`http://matrix.example.org:8008` engellenmiş kalır. Mümkün olduğunda `https://` tercih edin. +Bu isteğe bağlı izin yalnızca güvenilir özel/dahili hedeflere izin verir. `http://matrix.example.org:8008` gibi +genel düz metin homeserver'ları engellenmeye devam eder. Mümkün olduğunda `https://` tercih edin. ## Matrix trafiğini proxy üzerinden geçirmek -Matrix dağıtımınız açık bir giden HTTP(S) proxy'si gerektiriyorsa `channels.matrix.proxy` ayarlayın: +Matrix kurulumunuz açık bir giden HTTP(S) proxy gerektiriyorsa, `channels.matrix.proxy` ayarlayın: ```json5 { @@ -991,85 +727,85 @@ Matrix dağıtımınız açık bir giden HTTP(S) proxy'si gerektiriyorsa `channe ``` 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 durumu yoklamaları için kullanır. +OpenClaw aynı proxy ayarını çalışma zamanı Matrix trafiği ve hesap durum yoklamaları için kullanır. ## Hedef çözümleme -OpenClaw sizden bir oda veya kullanıcı hedefi istediği her yerde Matrix şu hedef biçimlerini kabul eder: +OpenClaw sizden bir oda veya kullanıcı hedefi istediğinde Matrix aşağıdaki hedef biçimlerini her yerde 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çılmış Matrix hesabını kullanır: +Canlı dizin çözümlemesi oturum açmış Matrix hesabını kullanı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ında aramaya geri döner. -- Katılınmış oda adı araması en iyi çaba esaslıdır. Bir oda adı bir kimliğe veya takma ada çözümlenemiyorsa, çalışma zamanı izin listesi çözümlemesi tarafından 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ılmış oda adlarında aramaya geri düşer. +- Katılmış oda adı araması en iyi çabayladır. Bir oda adı bir kimliğe veya takma ada çözümlenemiyorsa, çalışma zamanı izin listesi çözümlemesinde yok sayılır. ## Yapılandırma başvurusu - `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. +- `defaultAccount`: birden çok 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 verir. Homeserver `localhost`, bir LAN/Tailscale IP'si veya `matrix-synapse` gibi dahili bir ana makineye çözülüyorsa bunu etkinleştirin. +- `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 bilgisayar adına çö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` değerleriyle geçersiz kılabilir. - `userId`: tam Matrix kullanıcı kimliği, örneğin `@bot:example.org`. -- `accessToken`: token tabanlı kimlik doğrulama için access token. `channels.matrix.accessToken` ve `channels.matrix.accounts..accessToken` için env/file/exec sağlayıcıları genelinde düz metin değerleri ve SecretRef değerleri desteklenir. Bkz. [Gizli Yönetimi](/tr/gateway/secrets). +- `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ı oturum açma için parola. Düz metin değerleri ve SecretRef değerleri desteklenir. - `deviceId`: açık Matrix cihaz kimliği. - `deviceName`: parola ile oturum açma için cihaz görünen adı. -- `avatarUrl`: profil eşzamanlama ve `profile set` güncellemeleri için saklanan öz avatar URL'si. -- `initialSyncLimit`: başlangıç eşzamanlaması sırasında getirilen en fazla olay sayısı. +- `avatarUrl`: profil eşitlemesi ve `profile set` güncellemeleri için saklanan kendi avatar URL'si. +- `initialSyncLimit`: başlangıç eşitlemesi sırasında getirilen en yüksek olay sayısı. - `encryption`: E2EE'yi etkinleştirir. -- `allowlistOnly`: `true` olduğunda `open` oda ilkesini `allowlist` seviyesine yükseltir ve `disabled` dışındaki tüm etkin DM ilkelerini (`pairing` ve `open` dahil) `allowlist` seviyesine zorlar. `disabled` ilkelerini etkilemez. +- `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ı kimlikleri izin listesi. Tam Matrix kullanıcı kimlikleri en güvenlisidir; tam dizin eşleşmeleri başlangıçta ve izleyici çalışırken izin listesi değiştiğinde çözülür. Çözümlenmeyen adlar yok sayılır. -- `historyLimit`: grup geçmişi bağlamı olarak dahil edilecek en fazla oda mesajı sayısı. `messages.groupChat.historyLimit` değerine geri döner; 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 izin listesi. Tam Matrix kullanıcı kimlikleri en güvenli seçenektir; tam dizin eşleşmeleri başlangıçta ve izleyici çalışırken izin listesi değiştiğinde çözülür. Çözümlenmeyen adlar yok sayılır. +- `historyLimit`: grup geçmiş bağlamı olarak dahil edilecek en fazla oda mesajı. `messages.groupChat.historyLimit` değerine geri düşer; ikisi de ayarlanmamışsa 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ı ile ö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. -- `blockStreaming`: `true`, taslak önizleme akışı etkinken tamamlanmış asistan blokları için ayrı ilerleme mesajlarını etkinleştirir. +- `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 üretmeyen önizleme bildirimleri kullanır. `false`, `"off"` ile eşdeğerdir. +- `blockStreaming`: `true`, taslak önizleme akışı etkinken tamamlanan assistant blokları için ayrı ilerleme mesajlarını etkinleştirir. - `threadReplies`: `off`, `inbound` veya `always`. -- `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 kendi kendini doğrulama isteği modu (`if-unverified`, `off`). -- `startupVerificationCooldownHours`: otomatik başlangıç doğrulama isteklerini yeniden denemeden önceki bekleme süresi. -- `textChunkLimit`: giden mesaj parça boyutu, karakter cinsinden (`chunkMode` değeri `length` olduğunda uygulanır). +- `threadBindings`: başlığa 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 beklenecek süre. +- `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ıtlara başına eklenecek isteğe bağlı dize. -- `ackReaction`: bu kanal/hesap için isteğe bağlı ack tepki geçersiz kılması. +- `responsePrefix`: bu kanal için tüm giden yanıtların başına eklenecek isteğe bağlı dize. +- `ackReaction`: bu kanal/hesap için isteğe bağlı ack tepkisi 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`: davetle 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` 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 bildirdiği takma ad durumuna güvenmez. +- `autoJoin`: davetle otomatik katılım ilkesi (`always`, `allowlist`, `off`). Varsayılan: `off`. DM tarzı davetler dahil tüm Matrix davetlerine uygulanır. +- `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 odanın iddia ettiği takma ad durumuna güvenmez. - `dm`: DM ilke bloğu (`enabled`, `policy`, `allowFrom`, `sessionScope`, `threadReplies`). -- `dm.policy`: OpenClaw odaya katılıp odayı DM olarak sınıflandırdıktan sonra DM erişimini kontrol eder. Bir davetin otomatik olarak katılınıp katılınmayacağını değiştirmez. -- `dm.allowFrom`: DM trafiği için kullanıcı kimlikleri izin listesi. Tam Matrix kullanıcı kimlikleri en güvenlisidir; tam dizin eşleşmeleri başlangıçta ve izleyici çalışırken izin listesi değiştiğinde çözülür. Çözümlenmeyen adlar yok sayılır. -- `dm.sessionScope`: `per-user` (varsayılan) veya `per-room`. Aynı eş düzeyi 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 iş parçacığı ilkesi geçersiz kılması (`off`, `inbound`, `always`). Hem yanıt yerleşimi hem de DM'lerde oturum yalıtımı için üst düzey `threadReplies` ayarını geçersiz kılar. -- `execApprovals`: Matrix'e özgü yerel exec onay teslimi (`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. +- `dm.policy`: OpenClaw odaya katılıp onu DM olarak sınıflandırdıktan sonra DM erişimini kontrol eder. Bir davetin otomatik olarak katılıp katılınmayacağını değiştirmez. +- `dm.allowFrom`: DM trafiği için kullanıcı kimliği izin listesi. Tam Matrix kullanıcı kimlikleri en güvenli seçenektir; tam dizin eşleşmeleri başlangıçta ve izleyici çalışırken izin listesi değiştiğinde çözülür. Çözümlenmeyen adlar yok sayılı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'lere yönelik başlık ilkesi geçersiz kılması (`off`, `inbound`, `always`). DM'lerde hem yanıt yerleşimi hem de oturum yalıtımı için üst düzey `threadReplies` ayarını geçersiz kılar. +- `execApprovals`: Matrix yerel exec onay teslimi (`enabled`, `approvers`, `target`, `agentFilter`, `sessionFilter`). +- `execApprovals.approvers`: exec isteklerini onaylamasına izin verilen Matrix kullanıcı kimlikleri. `dm.allowFrom` zaten onay verenleri 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 olarak davranır. -- `groups`: oda başına ilke haritası. Oda kimliklerini veya takma adları tercih edin; çözümlenmeyen 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 devralınan tek bir oda girdisini belirli bir Matrix hesabıyla sınırlandırır. +- `accounts`: hesap başına adlandırılmış geçersiz kılmalar. Üst düzey `channels.matrix` değerleri bu girdiler için varsayılan olarak davranır. +- `groups`: oda başına ilke eşlemesi. Oda kimliklerini veya takma adları tercih edin; çözümlenmeyen 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 devralınan bir 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 izin listesi. -- `groups..tools`: oda başına araç izin/verme veya engelleme geçersiz kılmaları. -- `groups..autoReply`: oda düzeyinde bahsetme geçidi geçersiz kılması. `true`, o oda için bahsetme gereksinimlerini devre dışı bırakır; `false`, bunları yeniden zorlar. -- `groups..skills`: isteğe bağlı oda düzeyinde Skills filtresi. -- `groups..systemPrompt`: isteğe bağlı oda düzeyinde sistem istemi parçacığı. +- `groups..tools`: oda başına araç izin/verme-engelleme geçersiz kılmaları. +- `groups..autoReply`: oda düzeyinde bahsetme geçitlemesi geçersiz kılması. `true`, o oda için bahsetme gereksinimlerini devre dışı bırakır; `false`, bunları yeniden zorunlu kılar. +- `groups..skills`: oda düzeyinde isteğe bağlı Skills filtresi. +- `groups..systemPrompt`: oda düzeyinde isteğe bağlı system prompt parçası. - `rooms`: `groups` için eski takma ad. -- `actions`: eylem başına araç geçidi (`messages`, `reactions`, `pins`, `profile`, `memberInfo`, `channelInfo`, `verification`). +- `actions`: eylem başına araç geçitlemesi (`messages`, `reactions`, `pins`, `profile`, `memberInfo`, `channelInfo`, `verification`). ## İlgili -- [Kanallara Genel Bakış](/tr/channels) — desteklenen tüm kanallar -- [Eşleştirme](/tr/channels/pairing) — DM kimlik doğrulaması ve eşleştirme akışı -- [Gruplar](/tr/channels/groups) — grup sohbeti davranışı ve bahsetme geçidi -- [Kanal Yönlendirme](/tr/channels/channel-routing) — mesajlar için oturum yönlendirmesi -- [Güvenlik](/tr/gateway/security) — erişim modeli ve sağlamlaştırma +- [Channels Overview](/tr/channels) — desteklenen tüm kanallar +- [Pairing](/tr/channels/pairing) — DM kimlik doğrulaması ve eşleştirme akışı +- [Groups](/tr/channels/groups) — grup sohbeti davranışı ve bahsetme geçitlemesi +- [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/ci.md b/docs/tr/ci.md index 7aff41a5e..2b989e6cc 100644 --- a/docs/tr/ci.md +++ b/docs/tr/ci.md @@ -1,100 +1,101 @@ --- read_when: - - Bir CI işinin neden çalıştığını veya neden çalışmadığını anlamanız gerekir. - - Başarısız GitHub Actions kontrollerinde hata ayıklıyorsunuz. + - Bir CI işinin neden çalıştığını veya neden çalışmadığını anlamanız gerekir + - Başarısız GitHub Actions kontrollerinde hata ayıklıyorsunuz summary: CI iş grafiği, kapsam geçitleri ve yerel komut eşdeğerleri -title: CI işlem hattı +title: CI İşlem Hattı x-i18n: - generated_at: "2026-04-23T13:58:02Z" + generated_at: "2026-04-23T14:56:39Z" model: gpt-5.4 provider: openai - source_hash: c5a8ea0d8e428826169b0e6aced1caeb993106fe79904002125ace86b48cae1f + source_hash: e9a03440ae28a15167fc08d9c66bb1fd719ddfa1517aaecb119c80f2ad826c0d source_path: ci.md workflow: 15 --- # CI İşlem Hattı -CI, `main` dalına yapılan her push işleminde ve her pull request'te çalışır. Yalnızca ilgisiz alanlar değiştiğinde pahalı işleri atlamak için akıllı kapsamlandırma kullanır. +CI, `main` dalına yapılan her push ve her pull request için çalışır. Yalnızca ilgisiz alanlar değiştiğinde pahalı işleri atlamak için akıllı kapsamlandırma kullanır. -QA Lab, ana akıllı kapsamlı iş akışının dışında özel CI hatlarına sahiptir. `Parity gate` iş akışı, eşleşen PR değişikliklerinde ve manuel tetikleme ile çalışır; özel QA çalışma zamanını derler ve sahte GPT-5.4 ile Opus 4.6 etmen paketlerini karşılaştırır. `QA-Lab - All Lanes` iş akışı, `main` üzerinde gecelik olarak ve manuel tetikleme ile çalışır; sahte parity gate, canlı Matrix hattı ve canlı Telegram hattını paralel işler olarak dağıtır. Canlı işler `qa-live-shared` environment'ını kullanır ve Telegram hattı Convex kiralamalarını kullanır. `OpenClaw Release Checks` de sürüm onayından önce aynı QA Lab hatlarını çalıştırır. +QA Lab, ana akıllı kapsamlı iş akışının dışında ayrılmış CI şeritlerine sahiptir. `Parity gate` iş akışı, eşleşen PR değişikliklerinde ve manuel tetiklemede çalışır; özel QA çalışma zamanını derler ve sahte GPT-5.4 ile Opus 4.6 agentic paketlerini karşılaştırır. `QA-Lab - All Lanes` iş akışı, `main` üzerinde geceleri ve manuel tetiklemede çalışır; sahte parity gate, canlı Matrix şeridi ve canlı Telegram şeridini paralel işler olarak dağıtır. Canlı işler `qa-live-shared` ortamını kullanır ve Telegram şeridi Convex lease’lerini kullanır. `OpenClaw Release Checks` de sürüm onayından önce aynı QA Lab şeritlerini çalıştırır. -## İş Genel Görünümü +## İş Genel Bakışı | İş | Amaç | Ne zaman çalışır | | -------------------------------- | -------------------------------------------------------------------------------------------- | ----------------------------------- | -| `preflight` | Yalnızca dokümantasyon değişikliklerini, değişen kapsamları, değişen eklentileri algılar ve CI manifestini oluşturur | Taslak olmayan push ve PR'lerde her zaman | -| `security-scm-fast` | `zizmor` aracılığıyla özel anahtar algılama ve iş akışı denetimi | Taslak olmayan push ve PR'lerde her zaman | -| `security-dependency-audit` | npm advisory'lerine karşı bağımlılıksız üretim lockfile denetimi | Taslak olmayan push ve PR'lerde her zaman | -| `security-fast` | Hızlı güvenlik işleri için zorunlu toplu iş | Taslak olmayan push ve PR'lerde her zaman | -| `build-artifacts` | `dist/`, Control UI, derlenmiş artifact kontrolleri ve yeniden kullanılabilir aşağı akış artifact'lerini derler | Node ile ilgili değişiklikler | -| `checks-fast-core` | bundled/plugin-contract/protocol kontrolleri gibi hızlı Linux doğruluk hatları | Node ile ilgili değişiklikler | -| `checks-fast-contracts-channels` | Kararlı bir toplu kontrol sonucu ile shard'lanmış kanal sözleşme kontrolleri | Node ile ilgili değişiklikler | -| `checks-node-extensions` | eklenti paketi genelinde tam bundled-plugin test shard'ları | Node ile ilgili değişiklikler | -| `checks-node-core-test` | kanal, bundled, contract ve eklenti hatları hariç çekirdek Node test shard'ları | Node ile ilgili değişiklikler | -| `extension-fast` | Yalnızca değişen bundled plugin'ler için odaklı testler | eklenti değişiklikleri olan pull request'ler | -| `check` | shard'lanmış ana yerel geçit eşdeğeri: prod türleri, lint, guard'lar, test türleri ve katı smoke | Node ile ilgili değişiklikler | -| `check-additional` | Mimari, sınır, eklenti yüzeyi guard'ları, package-boundary ve gateway-watch shard'ları | Node ile ilgili değişiklikler | +| `preflight` | Yalnızca dokümantasyon değişikliklerini, değişen kapsamları, değişen eklentileri algılar ve CI manifestini oluşturur | Taslak olmayan push ve PR’lerde her zaman | +| `security-scm-fast` | `zizmor` aracılığıyla özel anahtar tespiti ve iş akışı denetimi | Taslak olmayan push ve PR’lerde her zaman | +| `security-dependency-audit` | npm advisories’e karşı bağımlılıksız üretim lockfile denetimi | Taslak olmayan push ve PR’lerde her zaman | +| `security-fast` | Hızlı güvenlik işleri için zorunlu toplu iş | Taslak olmayan push ve PR’lerde her zaman | +| `build-artifacts` | `dist/`, Control UI, derlenmiş artifact kontrolleri ve yeniden kullanılabilir alt akış artifact’lerini derler | Node ile ilgili değişiklikler | +| `checks-fast-core` | bundled/plugin-contract/protocol kontrolleri gibi hızlı Linux doğruluk şeritleri | Node ile ilgili değişiklikler | +| `checks-fast-contracts-channels` | Kararlı bir toplu kontrol sonucu ile shard’lanmış kanal sözleşmesi kontrolleri | Node ile ilgili değişiklikler | +| `checks-node-extensions` | eklenti paketi genelinde tam bundled-plugin test shard’ları | Node ile ilgili değişiklikler | +| `checks-node-core-test` | Kanal, bundled, contract ve extension şeritleri hariç çekirdek Node test shard’ları | Node ile ilgili değişiklikler | +| `extension-fast` | Yalnızca değişen bundled plugin’ler için odaklanmış testler | Eklenti değişiklikleri içeren pull request’ler | +| `check` | Shard’lanmış ana yerel geçit eşdeğeri: prod türleri, lint, guard’lar, test türleri ve katı smoke | Node ile ilgili değişiklikler | +| `check-additional` | Mimari, sınır, extension-surface guard’ları, package-boundary ve gateway-watch shard’ları | Node ile ilgili değişiklikler | | `build-smoke` | Derlenmiş CLI smoke testleri ve başlangıç belleği smoke testi | Node ile ilgili değişiklikler | -| `checks` | Derlenmiş artifact kanal testleri artı yalnızca push için Node 22 uyumluluğu doğrulayıcısı | Node ile ilgili değişiklikler | +| `checks` | Derlenmiş artifact kanal testleri ile yalnızca push için Node 22 uyumluluğu doğrulayıcısı | Node ile ilgili değişiklikler | | `check-docs` | Dokümantasyon biçimlendirme, lint ve bozuk bağlantı kontrolleri | Dokümantasyon değiştiğinde | -| `skills-python` | Python destekli Skills için Ruff + pytest | Python skill ile ilgili değişiklikler | -| `checks-windows` | Windows'a özgü test hatları | Windows ile ilgili değişiklikler | -| `macos-node` | Paylaşılan derlenmiş artifact'leri kullanan macOS TypeScript test hattı | macOS ile ilgili değişiklikler | -| `macos-swift` | macOS uygulaması için Swift lint, build ve testler | macOS ile ilgili değişiklikler | -| `android` | Her iki flavor için Android birim testleri artı bir debug APK build'i | Android ile ilgili değişiklikler | +| `skills-python` | Python tabanlı Skills için Ruff + pytest | Python-skill ile ilgili değişiklikler | +| `checks-windows` | Windows’a özgü test şeritleri | Windows ile ilgili değişiklikler | +| `macos-node` | Paylaşılan derlenmiş artifact’leri kullanan macOS TypeScript test şeridi | macOS ile ilgili değişiklikler | +| `macos-swift` | macOS uygulaması için Swift lint, derleme ve testler | macOS ile ilgili değişiklikler | +| `android` | Her iki flavor için Android birim testleri ve bir debug APK derlemesi | Android ile ilgili değişiklikler | -## Önce Hızlı Başarısız Olma Sırası +## Hızlı Başarısız Olma Sırası İşler, pahalı işler çalışmadan önce ucuz kontroller başarısız olacak şekilde sıralanır: -1. `preflight`, hangi hatların var olacağına karar verir. `docs-scope` ve `changed-scope` mantığı bağımsız işler değil, bu işin içindeki adımlardır. +1. `preflight`, hangi şeritlerin var olacağına karar verir. `docs-scope` ve `changed-scope` mantığı bağımsız işler değil, bu işin içindeki adımlardır. 2. `security-scm-fast`, `security-dependency-audit`, `security-fast`, `check`, `check-additional`, `check-docs` ve `skills-python`, daha ağır artifact ve platform matris işlerini beklemeden hızlıca başarısız olur. -3. `build-artifacts`, hızlı Linux hatlarıyla çakışacak şekilde çalışır, böylece aşağı akış tüketicileri paylaşılan build hazır olur olmaz başlayabilir. -4. Daha ağır platform ve çalışma zamanı hatları bundan sonra dağıtılır: `checks-fast-core`, `checks-fast-contracts-channels`, `checks-node-extensions`, `checks-node-core-test`, yalnızca PR için `extension-fast`, `checks`, `checks-windows`, `macos-node`, `macos-swift` ve `android`. +3. `build-artifacts`, paylaşılan derleme hazır olur olmaz alt tüketiciler başlayabilsin diye hızlı Linux şeritleriyle örtüşür. +4. Daha ağır platform ve çalışma zamanı şeritleri bundan sonra dağıtılır: `checks-fast-core`, `checks-fast-contracts-channels`, `checks-node-extensions`, `checks-node-core-test`, yalnızca PR için `extension-fast`, `checks`, `checks-windows`, `macos-node`, `macos-swift` ve `android`. -Kapsam mantığı `scripts/ci-changed-scope.mjs` içinde bulunur ve `src/scripts/ci-changed-scope.test.ts` içindeki birim testleriyle kapsanır. -CI iş akışı düzenlemeleri Node CI grafiğini ve iş akışı lint denetimini doğrular, ancak tek başına Windows, Android veya macOS yerel build'lerini zorlamaz; bu platform hatları platform kaynak değişikliklerine göre kapsamlı kalır. -Windows Node kontrolleri, Windows'a özgü işlem/yol sarmalayıcılarına, npm/pnpm/UI çalıştırıcı yardımcılarına, paket yöneticisi yapılandırmasına ve bu hattı çalıştıran CI iş akışı yüzeylerine göre kapsamlandırılır; ilgisiz kaynak, eklenti, install-smoke ve yalnızca test değişiklikleri Linux Node hatlarında kalır, böylece normal test shard'ları tarafından zaten kullanılan kapsam için 16-vCPU'lu bir Windows worker ayrılmaz. -Ayrı `install-smoke` iş akışı aynı kapsam betiğini kendi `preflight` işi üzerinden yeniden kullanır. `run_install_smoke` değerini daha dar changed-smoke sinyalinden hesaplar; böylece Docker/install smoke, kurulum, paketleme, container ile ilgili değişiklikler, bundled extension üretim değişiklikleri ve Docker smoke işlerinin kullandığı çekirdek plugin/channel/gateway/Plugin SDK yüzeyleri için çalışır. Yalnızca test ve yalnızca dokümantasyon düzenlemeleri Docker worker'ları ayırmaz. QR paket smoke testi, Docker `pnpm install` katmanını yeniden çalışmaya zorlar ve BuildKit pnpm store önbelleğini korur; böylece her çalıştırmada bağımlılıkları yeniden indirmeden kurulumu yine de test eder. gateway-network e2e, işin başında oluşturulan çalışma zamanı imajını yeniden kullanır; böylece başka bir Docker build eklemeden gerçek container-to-container WebSocket kapsamı ekler. Yerel `test:docker:all`, paylaşılan bir canlı test imajını ve paylaşılan bir `scripts/e2e/Dockerfile` built-app imajını önceden derler, ardından canlı/E2E smoke hatlarını `OPENCLAW_SKIP_DOCKER_BUILD=1` ile paralel çalıştırır; varsayılan 4 eşzamanlılığını `OPENCLAW_DOCKER_ALL_PARALLELISM` ile ayarlayın. Yerel toplu çalıştırma, varsayılan olarak ilk başarısızlıktan sonra yeni havuzlanmış hatları zamanlamayı durdurur ve her hattın `OPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MS` ile geçersiz kılınabilen 120 dakikalık bir zaman aşımı vardır. Başlangıca veya sağlayıcıya duyarlı hatlar paralel havuzdan sonra özel olarak çalışır. Yeniden kullanılabilir canlı/E2E iş akışı, Docker matrisinden önce SHA etiketli tek bir GHCR Docker E2E imajı oluşturup göndererek paylaşılan imaj modelini yansıtır, ardından matrisi `OPENCLAW_SKIP_DOCKER_BUILD=1` ile çalıştırır. Zamanlanmış canlı/E2E iş akışı, tam sürüm yolundaki Docker paketini her gün çalıştırır. QR ve yükleyici Docker testleri kendi kurulum odaklı Dockerfile'larını korur. Ayrı bir `docker-e2e-fast` işi, 120 saniyelik komut zaman aşımı altında sınırlı bundled-plugin Docker profilini çalıştırır: setup-entry bağımlılık onarımı artı sentetik bundled-loader başarısızlık izolasyonu. Tam bundled update/channel matrisi manuel/tam paket olarak kalır çünkü tekrar eden gerçek npm update ve doctor repair geçişleri yapar. +Kapsam mantığı `scripts/ci-changed-scope.mjs` içinde yer alır ve `src/scripts/ci-changed-scope.test.ts` içindeki birim testleriyle kapsanır. +CI iş akışı düzenlemeleri Node CI grafiğini ve iş akışı linting’ini doğrular, ancak tek başına Windows, Android veya macOS yerel derlemelerini zorunlu kılmaz; bu platform şeritleri platform kaynak kodu değişiklikleriyle kapsamlı kalır. +Windows Node kontrolleri, Windows’a özgü process/path wrapper’ları, npm/pnpm/UI runner yardımcıları, paket yöneticisi yapılandırması ve bu şeridi çalıştıran CI iş akışı yüzeyleriyle kapsamlandırılır; ilgisiz kaynak kodu, eklenti, install-smoke ve yalnızca test değişiklikleri Linux Node şeritlerinde kalır, böylece zaten normal test shard’larında kapsanan kapsam için 16-vCPU’lu bir Windows worker ayrılmaz. +Ayrı `install-smoke` iş akışı, kendi `preflight` işi aracılığıyla aynı kapsam betiğini yeniden kullanır. Daha dar changed-smoke sinyalinden `run_install_smoke` hesaplar; böylece Docker/install smoke, install, paketleme, container ile ilgili değişiklikler, bundled extension üretim değişiklikleri ve Docker smoke işlerinin çalıştırdığı çekirdek plugin/channel/gateway/Plugin SDK yüzeyleri için çalışır. Yalnızca test ve yalnızca dokümantasyon düzenlemeleri Docker worker’larını ayırmaz. QR paket smoke, BuildKit pnpm store önbelleğini korurken Docker `pnpm install` katmanını yeniden çalıştırmaya zorlar, böylece her çalıştırmada bağımlılıkları yeniden indirmeden kurulumu yine de sınar. gateway-network e2e, işin daha önce oluşturduğu çalışma zamanı imajını yeniden kullanır; böylece başka bir Docker derlemesi eklemeden gerçek container-to-container WebSocket kapsamı ekler. Yerel `test:docker:all`, paylaşılan bir canlı test imajı ve paylaşılan bir `scripts/e2e/Dockerfile` derlenmiş uygulama imajını önceden oluşturur, ardından canlı/E2E smoke şeritlerini `OPENCLAW_SKIP_DOCKER_BUILD=1` ile paralel çalıştırır; varsayılan 4 eşzamanlılığı `OPENCLAW_DOCKER_ALL_PARALLELISM` ile ayarlayın. Yerel toplu akış varsayılan olarak ilk başarısızlıktan sonra yeni havuzlanmış şeritler planlamayı durdurur ve her şeridin `OPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MS` ile geçersiz kılınabilen 120 dakikalık zaman aşımı vardır. Başlangıca veya sağlayıcıya duyarlı şeritler paralel havuzdan sonra münhasıran çalışır. Yeniden kullanılabilir canlı/E2E iş akışı, Docker matrisinden önce SHA etiketli tek bir GHCR Docker E2E imajı derleyip göndererek paylaşılan imaj modelini yansıtır, ardından matrisi `OPENCLAW_SKIP_DOCKER_BUILD=1` ile çalıştırır. Zamanlanmış canlı/E2E iş akışı, tam sürüm yolu Docker paketini günlük çalıştırır. QR ve yükleyici Docker testleri kendi kurulum odaklı Dockerfile’larını korur. Ayrı bir `docker-e2e-fast` işi, sınırlandırılmış bundled-plugin Docker profilini 120 saniyelik komut zaman aşımı altında çalıştırır: setup-entry bağımlılık onarımı ve sentetik bundled-loader failure isolation. Tam bundled update/channel matrisi manuel/tam paket olarak kalır çünkü tekrarlanan gerçek npm update ve doctor onarım geçişleri yapar. -Yerel changed-lane mantığı `scripts/changed-lanes.mjs` içinde bulunur ve `scripts/check-changed.mjs` tarafından çalıştırılır. Bu yerel geçit, geniş CI platform kapsamına kıyasla mimari sınırlar konusunda daha katıdır: çekirdek üretim değişiklikleri çekirdek prod typecheck artı çekirdek testlerini çalıştırır, çekirdek yalnızca test değişiklikleri yalnızca çekirdek test typecheck/testlerini çalıştırır, eklenti üretim değişiklikleri eklenti prod typecheck artı eklenti testlerini çalıştırır ve eklenti yalnızca test değişiklikleri yalnızca eklenti test typecheck/testlerini çalıştırır. Herkese açık Plugin SDK veya plugin-contract değişiklikleri, eklenti doğrulamasını genişletir çünkü eklentiler bu çekirdek sözleşmelere bağımlıdır. Yalnızca sürüm metaverisi içeren version bump'ları hedefli sürüm/yapılandırma/kök bağımlılık kontrollerini çalıştırır. Bilinmeyen root/config değişiklikleri güvenli olacak şekilde tüm hatlara başarısız olur. +Yerel changed-lane mantığı `scripts/changed-lanes.mjs` içinde yer alır ve `scripts/check-changed.mjs` tarafından yürütülür. Bu yerel geçit, geniş CI platform kapsamına göre mimari sınırlarda daha katıdır: çekirdek üretim değişiklikleri çekirdek prod typecheck artı çekirdek testleri çalıştırır, yalnızca çekirdek test değişiklikleri yalnızca çekirdek test typecheck/test’lerini çalıştırır, extension üretim değişiklikleri extension prod typecheck artı extension testlerini çalıştırır ve yalnızca extension test değişiklikleri yalnızca extension test typecheck/test’lerini çalıştırır. Genel Plugin SDK veya plugin-contract değişiklikleri extension doğrulamasına genişler çünkü extension’lar bu çekirdek sözleşmelere bağımlıdır. Yalnızca sürüm metaverisi içeren version bump’ları hedeflenmiş version/config/root-dependency kontrolleri çalıştırır. Bilinmeyen root/config değişiklikleri güvenli tarafta kalıp tüm şeritlere yayılır. -Push işlemlerinde `checks` matrisi yalnızca push için olan `compat-node22` hattını ekler. Pull request'lerde bu hat atlanır ve matris normal test/kanal hatlarına odaklı kalır. +Push’larda `checks` matrisi yalnızca push için olan `compat-node22` şeridini ekler. Pull request’lerde bu şerit atlanır ve matris normal test/kanal şeritlerine odaklı kalır. -En yavaş Node test aileleri, her iş küçük kalsın diye bölünür veya dengelenir: kanal sözleşmeleri, registry ve çekirdek kapsamı toplam altı ağırlıklı shard'a böler, bundled plugin testleri altı eklenti worker'ı arasında dengelenir, auto-reply altı küçük worker yerine üç dengeli worker olarak çalışır ve agentic gateway/plugin yapılandırmaları derlenmiş artifact'leri beklemek yerine mevcut yalnızca kaynak agentic Node işlerine dağıtılır. Geniş browser, QA, medya ve çeşitli eklenti testleri, paylaşılan eklenti genel amaçlı yapılandırma yerine özel Vitest yapılandırmalarını kullanır. Geniş agents hattı, tek bir yavaş test dosyasına ait olmak yerine import/zamanlama ağırlıklı olduğu için paylaşılan Vitest dosya-paralel zamanlayıcısını kullanır. `runtime-config`, paylaşılan çalışma zamanı shard'ının kuyruğun sonunu sahiplenmesini önlemek için infra core-runtime shard'ı ile çalışır. `check-additional`, package-boundary derleme/canary işlerini birlikte tutar ve çalışma zamanı topolojisi mimarisini gateway watch kapsamından ayırır; boundary guard shard'ı küçük bağımsız guard'larını tek bir iş içinde eşzamanlı çalıştırır. Gateway watch, kanal testleri ve çekirdek support-boundary shard'ı, `dist/` ve `dist-runtime/` zaten derlendikten sonra `build-artifacts` içinde eşzamanlı çalışır; böylece iki ek Blacksmith worker'ı ve ikinci bir artifact-consumer kuyruğu oluşturmadan eski kontrol adlarını hafif doğrulayıcı işler olarak korur. -Android CI, hem `testPlayDebugUnitTest` hem de `testThirdPartyDebugUnitTest` çalıştırır, ardından Play debug APK'sını derler. third-party flavor için ayrı bir kaynak kümesi veya manifest yoktur; birim test hattı yine de bu flavor'ı SMS/call-log BuildConfig bayraklarıyla derler, aynı zamanda Android ile ilgili her push'ta yinelenen bir debug APK paketleme işinden kaçınır. -`extension-fast` yalnızca PR içindir çünkü push çalıştırmaları zaten tam bundled plugin shard'larını yürütür. Bu, `checks-node-extensions` içinde zaten bulunan kapsam için `main` üzerinde ek bir Blacksmith worker ayırmadan incelemeler için değişen eklenti geri bildirimi sağlar. +En yavaş Node test aileleri bölünür veya dengelenir, böylece her iş runner’ları gereğinden fazla ayırmadan küçük kalır: kanal sözleşmeleri üç ağırlıklı shard olarak çalışır, bundled plugin testleri altı extension worker arasında dengelenir, küçük çekirdek birim şeritleri eşleştirilir, auto-reply altı küçük worker yerine üç dengeli worker olarak çalışır ve agentic gateway/plugin yapılandırmaları derlenmiş artifact’leri beklemek yerine mevcut yalnızca kaynak agentic Node işlerine dağıtılır. Geniş browser, QA, medya ve çeşitli plugin testleri, paylaşılan plugin catch-all yerine kendilerine ayrılmış Vitest yapılandırmalarını kullanır. Geniş agents şeridi, tek bir yavaş test dosyasına ait olmaktan çok import/zamanlama ağırlıklı olduğu için paylaşılan Vitest dosya paralel zamanlayıcısını kullanır. `runtime-config`, paylaşılan runtime shard’ının kuyruğun sonuna kalmasını önlemek için infra core-runtime shard’ı ile çalışır. `check-additional`, package-boundary derleme/canary işlerini bir arada tutar ve runtime topology architecture’ı gateway watch kapsamından ayırır; boundary guard shard’ı küçük bağımsız guard’larını tek iş içinde eşzamanlı çalıştırır. Gateway watch, kanal testleri ve çekirdek support-boundary shard’ı, `dist/` ve `dist-runtime/` zaten derlendikten sonra `build-artifacts` içinde eşzamanlı çalışır; eski kontrol adlarını hafif doğrulayıcı işler olarak korurken iki ek Blacksmith worker’ı ve ikinci bir artifact consumer kuyruğunu önler. +Android CI hem `testPlayDebugUnitTest` hem de `testThirdPartyDebugUnitTest` çalıştırır, ardından Play debug APK’sını derler. third-party flavor’ın ayrı bir kaynak kümesi veya manifest’i yoktur; birim test şeridi yine de bu flavor’ı SMS/call-log BuildConfig işaretleriyle derlerken, Android ile ilgili her push’ta yinelenen bir debug APK paketleme işinden kaçınır. +`extension-fast` yalnızca PR içindir çünkü push çalıştırmaları zaten tam bundled plugin shard’larını yürütür. Bu, incelemeler için değişen plugin geri bildirimini korurken `main` üzerinde zaten `checks-node-extensions` içinde bulunan kapsam için ek bir Blacksmith worker ayrılmasını önler. -GitHub, aynı PR veya `main` referansına daha yeni bir push geldiğinde yerini alan işleri `cancelled` olarak işaretleyebilir. Aynı referans için en yeni çalıştırma da başarısız olmuyorsa bunu CI gürültüsü olarak değerlendirin. Toplu shard kontrolleri `!cancelled() && always()` kullanır, böylece normal shard hatalarını yine bildirirler ancak tüm iş akışı zaten yerini almışsa kuyruğa girmezler. +GitHub, aynı PR veya `main` ref’i üzerine daha yeni bir push geldiğinde yerini alan işleri `cancelled` olarak işaretleyebilir. Aynı ref için en yeni çalıştırma da başarısız olmadıkça bunu CI gürültüsü olarak değerlendirin. Toplu shard kontrolleri `!cancelled() && always()` kullanır; böylece normal shard başarısızlıklarını yine raporlarlar ancak tüm iş akışı zaten yerini yenisine bıraktığında kuyruğa girmezler. CI eşzamanlılık anahtarı sürümlüdür (`CI-v7-*`); böylece eski bir kuyruk grubundaki GitHub taraflı bir zombi, daha yeni main çalıştırmalarını süresiz olarak engelleyemez. ## Çalıştırıcılar -| Çalıştırıcı | İşler | -| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `ubuntu-24.04` | `preflight`, hızlı güvenlik işleri ve toplu işler (`security-scm-fast`, `security-dependency-audit`, `security-fast`), hızlı protocol/contract/bundled kontrolleri, shard'lanmış kanal sözleşme kontrolleri, lint dışındaki `check` shard'ları, `check-additional` shard'ları ve toplu işleri, Node test toplu doğrulayıcıları, dokümantasyon kontrolleri, Python Skills, workflow-sanity, labeler, auto-response; install-smoke preflight da GitHub barındırmalı Ubuntu kullanır, böylece Blacksmith matrisi daha erken kuyruğa girebilir | -| `blacksmith-8vcpu-ubuntu-2404` | `build-artifacts`, build-smoke, Linux Node test shard'ları, bundled plugin test shard'ları, `android` | -| `blacksmith-16vcpu-ubuntu-2404` | `check-lint`; bu iş hâlâ CPU'ya yeterince duyarlıdır ve 8 vCPU tasarruf ettirdiğinden daha fazla maliyet yaratmıştır; install-smoke Docker build'leri, burada 32-vCPU kuyruk süresi tasarruf ettirdiğinden daha fazla maliyet yaratmıştır | -| `blacksmith-16vcpu-windows-2025` | `checks-windows` | -| `blacksmith-6vcpu-macos-latest` | `openclaw/openclaw` üzerinde `macos-node`; fork'lar `macos-latest` değerine geri döner | -| `blacksmith-12vcpu-macos-latest` | `openclaw/openclaw` üzerinde `macos-swift`; fork'lar `macos-latest` değerine geri döner | +| Çalıştırıcı | İşler | +| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `ubuntu-24.04` | `preflight`, hızlı güvenlik işleri ve toplu işler (`security-scm-fast`, `security-dependency-audit`, `security-fast`), hızlı protocol/contract/bundled kontrolleri, shard’lanmış kanal sözleşmesi kontrolleri, lint dışındaki `check` shard’ları, `check-additional` shard’ları ve toplu işleri, Node test toplu doğrulayıcıları, dokümantasyon kontrolleri, Python Skills, workflow-sanity, labeler, auto-response; install-smoke preflight da Blacksmith matrisi daha erken kuyruğa girebilsin diye GitHub-hosted Ubuntu kullanır | +| `blacksmith-8vcpu-ubuntu-2404` | `build-artifacts`, build-smoke, Linux Node test shard’ları, bundled plugin test shard’ları, `android` | +| `blacksmith-16vcpu-ubuntu-2404` | `check-lint`; bu iş CPU’ya yeterince duyarlı kaldığı için 8 vCPU tasarruf ettiğinden daha pahalıya mal oldu; install-smoke Docker derlemeleri; burada 32-vCPU kuyruk süresi sağladığı tasarruftan daha pahalıya mal oldu | +| `blacksmith-16vcpu-windows-2025` | `checks-windows` | +| `blacksmith-6vcpu-macos-latest` | `openclaw/openclaw` üzerinde `macos-node`; fork’lar `macos-latest` değerine geri döner | +| `blacksmith-12vcpu-macos-latest` | `openclaw/openclaw` üzerinde `macos-swift`; fork’lar `macos-latest` değerine geri döner | ## Yerel Eşdeğerler ```bash pnpm changed:lanes # origin/main...HEAD için yerel changed-lane sınıflandırıcısını inceleyin -pnpm check:changed # akıllı yerel geçit: sınır hattına göre değişen typecheck/lint/testler -pnpm check # hızlı yerel geçit: production tsgo + shard'lanmış lint + paralel hızlı guard'lar +pnpm check:changed # akıllı yerel geçit: sınır şeridine göre değişen typecheck/lint/testler +pnpm check # hızlı yerel geçit: üretim tsgo + shard’lanmış lint + paralel hızlı guard’lar pnpm check:test-types -pnpm check:timed # aşama başına zamanlamalarla aynı geçit +pnpm check:timed # aynı geçit, aşama başına sürelerle birlikte pnpm build:strict-smoke pnpm check:architecture pnpm test:gateway:watch-regression -pnpm test # Vitest testleri +pnpm test # vitest testleri pnpm test:channels pnpm test:contracts:channels pnpm check:docs # dokümantasyon biçimlendirme + lint + bozuk bağlantılar -pnpm build # CI artifact/build-smoke hatları önemliyse dist build'i -node scripts/ci-run-timings.mjs # toplam süreyi, kuyruk süresini ve en yavaş işleri özetleyin +pnpm build # CI artifact/build-smoke şeritleri önemli olduğunda dist derleyin +node scripts/ci-run-timings.mjs # duvar saati süresi, kuyruk süresi ve en yavaş işleri özetleyin +node scripts/ci-run-timings.mjs --recent 10 # son başarılı main CI çalıştırmalarını karşılaştırın ``` diff --git a/docs/tr/gateway/authentication.md b/docs/tr/gateway/authentication.md index e2c02af57..f61a4e193 100644 --- a/docs/tr/gateway/authentication.md +++ b/docs/tr/gateway/authentication.md @@ -1,14 +1,14 @@ --- read_when: - - Model kimlik doğrulamasını veya OAuth süresinin dolmasını hata ayıklarken - - Kimlik doğrulamayı veya kimlik bilgisi depolamayı belgelendirirken -summary: 'Model kimlik doğrulaması: OAuth, API anahtarları, Claude CLI yeniden kullanımı ve Anthropic setup-token' -title: Kimlik Doğrulama + - Model kimlik doğrulamasında veya OAuth süresinin dolmasında hata ayıklama + - Kimlik doğrulamasını veya kimlik bilgisi depolamayı belgeleme +summary: 'Model kimlik doğrulaması: OAuth, API anahtarları, Claude CLI yeniden kullanımı ve Anthropic kurulum jetonu' +title: Kimlik doğrulama x-i18n: - generated_at: "2026-04-07T08:44:29Z" + generated_at: "2026-04-23T14:56:42Z" model: gpt-5.4 provider: openai - source_hash: 9db0ad9eccd7e3e3ca328adaad260bc4288a8ccdbe2dc0c24d9fd049b7ab9231 + source_hash: 37a7c20872b915d1d079f0578c933e43cbdb97eca1c60d8c4e6e5137ca83f8b2 source_path: gateway/authentication.md workflow: 15 --- @@ -16,37 +16,30 @@ x-i18n: # Kimlik Doğrulama (Model Sağlayıcıları) -Bu sayfa **model sağlayıcısı** kimlik doğrulamasını kapsar (API anahtarları, OAuth, Claude CLI yeniden kullanımı ve Anthropic setup-token). **Gateway bağlantısı** kimlik doğrulaması için (token, parola, trusted-proxy), bkz. [Configuration](/tr/gateway/configuration) ve [Trusted Proxy Auth](/tr/gateway/trusted-proxy-auth). +Bu sayfa **model sağlayıcısı** kimlik doğrulamasını kapsar (API anahtarları, OAuth, Claude CLI yeniden kullanımı ve Anthropic kurulum jetonu). **Gateway bağlantısı** kimlik doğrulaması için (jeton, parola, trusted-proxy), [Configuration](/tr/gateway/configuration) ve [Trusted Proxy Auth](/tr/gateway/trusted-proxy-auth) sayfalarına bakın. -OpenClaw, model sağlayıcıları için OAuth ve API anahtarlarını destekler. Sürekli -çalışan gateway host'ları için API anahtarları genellikle en öngörülebilir -seçenektir. Abonelik/OAuth akışları da sağlayıcı hesap modelinizle eşleştiğinde -desteklenir. +OpenClaw, model sağlayıcıları için OAuth ve API anahtarlarını destekler. Her zaman açık Gateway ana bilgisayarları için API anahtarları genellikle en öngörülebilir seçenektir. Sağlayıcı hesap modelinizle eşleştiğinde abonelik/OAuth akışları da desteklenir. -Tam OAuth akışı ve depolama düzeni için bkz. [/concepts/oauth](/tr/concepts/oauth). -SecretRef tabanlı kimlik doğrulama için (`env`/`file`/`exec` sağlayıcıları), bkz. [Secrets Management](/tr/gateway/secrets). -`models status --probe` tarafından kullanılan kimlik bilgisi uygunluğu/neden-kodu kuralları için -bkz. [Auth Credential Semantics](/tr/auth-credential-semantics). +Tam OAuth akışı ve depolama düzeni için [/concepts/oauth](/tr/concepts/oauth) sayfasına bakın. +SecretRef tabanlı kimlik doğrulama için (`env`/`file`/`exec` sağlayıcıları), [Secrets Management](/tr/gateway/secrets) sayfasına bakın. +`models status --probe` tarafından kullanılan kimlik bilgisi uygunluğu/neden kodu kuralları için bkz. +[Auth Credential Semantics](/tr/auth-credential-semantics). ## Önerilen kurulum (API anahtarı, herhangi bir sağlayıcı) -Uzun ömürlü bir gateway çalıştırıyorsanız, seçtiğiniz sağlayıcı için bir API -anahtarıyla başlayın. -Özellikle Anthropic için, API anahtarı kimlik doğrulaması hâlâ en öngörülebilir -sunucu kurulumudur, ancak OpenClaw yerel bir Claude CLI oturumunu yeniden -kullanmayı da destekler. +Uzun ömürlü bir Gateway çalıştırıyorsanız, seçtiğiniz sağlayıcı için bir API anahtarıyla başlayın. +Özellikle Anthropic için, API anahtarı kimlik doğrulaması hâlâ en öngörülebilir sunucu kurulumudur, ancak OpenClaw yerel bir Claude CLI oturumunun yeniden kullanılmasını da destekler. 1. Sağlayıcı konsolunuzda bir API anahtarı oluşturun. -2. Bunu **gateway host** üzerine koyun (`openclaw gateway` çalıştıran makine). +2. Bunu **Gateway ana bilgisayarına** koyun (`openclaw gateway` çalıştıran makine). ```bash export _API_KEY="..." openclaw models status ``` -3. Gateway systemd/launchd altında çalışıyorsa, anahtarı daemon'ın okuyabilmesi için - `~/.openclaw/.env` içine koymayı tercih edin: +3. Gateway systemd/launchd altında çalışıyorsa, daemon'ın okuyabilmesi için anahtarı `~/.openclaw/.env` içine koymayı tercih edin: ```bash cat >> ~/.openclaw/.env <<'EOF' @@ -61,44 +54,51 @@ openclaw models status openclaw doctor ``` -Ortam değişkenlerini kendiniz yönetmek istemiyorsanız, onboarding API -anahtarlarını daemon kullanımı için saklayabilir: `openclaw onboard`. +Ortam değişkenlerini kendiniz yönetmek istemiyorsanız, onboarding API anahtarlarını daemon kullanımı için depolayabilir: `openclaw onboard`. -Ortam devralma ayrıntıları için bkz. [Help](/tr/help) (`env.shellEnv`, -`~/.openclaw/.env`, systemd/launchd). +`env.shellEnv`, `~/.openclaw/.env`, systemd/launchd içindeki ortam devralma ayrıntıları için [Help](/tr/help) sayfasına bakın. -## Anthropic: Claude CLI ve token uyumluluğu +## Anthropic: Claude CLI ve jeton uyumluluğu -Anthropic setup-token kimlik doğrulaması, OpenClaw'da desteklenen bir token -yolu olarak hâlâ kullanılabilir. Anthropic çalışanları daha sonra bize -OpenClaw tarzı Claude CLI kullanımına yeniden izin verildiğini söyledi; bu nedenle -Anthropic yeni bir politika yayımlamadıkça OpenClaw bu entegrasyon için Claude CLI -yeniden kullanımını ve `claude -p` kullanımını onaylanmış kabul eder. Host üzerinde -Claude CLI yeniden kullanımı mevcutsa, artık tercih edilen yol budur. +Anthropic kurulum-jetonu kimlik doğrulaması, OpenClaw içinde desteklenen bir jeton yolu olarak hâlâ kullanılabilir. Anthropic çalışanları o zamandan beri bize OpenClaw tarzı Claude CLI kullanımına yeniden izin verildiğini söyledi, bu nedenle OpenClaw, Anthropic yeni bir politika yayımlamadığı sürece Claude CLI yeniden kullanımını ve `claude -p` kullanımını bu entegrasyon için onaylanmış kabul eder. Claude CLI yeniden kullanımı ana bilgisayarda mevcutsa, artık tercih edilen yol budur. -Uzun ömürlü gateway host'ları için Anthropic API anahtarı hâlâ en öngörülebilir -kurulumdur. Aynı host üzerindeki mevcut bir Claude oturumunu yeniden kullanmak -istiyorsanız, onboarding/configure içindeki Anthropic Claude CLI yolunu kullanın. +Uzun ömürlü Gateway ana bilgisayarları için Anthropic API anahtarı hâlâ en öngörülebilir kurulumdur. Aynı ana bilgisayarda mevcut bir Claude oturumunu yeniden kullanmak istiyorsanız, onboarding/configure içinde Anthropic Claude CLI yolunu kullanın. -Elle token girişi (herhangi bir sağlayıcı; `auth-profiles.json` yazar + config'i günceller): +Claude CLI yeniden kullanımı için önerilen ana bilgisayar kurulumu: + +```bash +# Gateway ana bilgisayarında çalıştırın +claude auth login +claude auth status --text +openclaw models auth login --provider anthropic --method cli --set-default +``` + +Bu iki adımlı bir kurulumdur: + +1. Claude Code'u Gateway ana bilgisayarında Anthropic'e giriş yapmış duruma getirin. +2. OpenClaw'a Anthropic model seçimini yerel `claude-cli` arka ucuna geçirmesini ve eşleşen OpenClaw kimlik doğrulama profilini depolamasını söyleyin. + +`claude`, `PATH` üzerinde değilse önce Claude Code'u yükleyin veya `agents.defaults.cliBackends.claude-cli.command` değerini gerçek ikili dosya yoluna ayarlayın. + +El ile jeton girişi (herhangi bir sağlayıcı; `auth-profiles.json` dosyasını yazar + yapılandırmayı günceller): ```bash openclaw models auth paste-token --provider openrouter ``` -Kimlik doğrulama profili referansları, statik kimlik bilgileri için de desteklenir: +Kimlik doğrulama profil başvuruları statik kimlik bilgileri için de desteklenir: - `api_key` kimlik bilgileri `keyRef: { source, provider, id }` kullanabilir - `token` kimlik bilgileri `tokenRef: { source, provider, id }` kullanabilir -- OAuth modundaki profiller SecretRef kimlik bilgilerini desteklemez; `auth.profiles..mode` `"oauth"` olarak ayarlanırsa, o profil için SecretRef destekli `keyRef`/`tokenRef` girişi reddedilir. +- OAuth modundaki profiller SecretRef kimlik bilgilerini desteklemez; `auth.profiles..mode` `"oauth"` olarak ayarlanmışsa, bu profil için SecretRef destekli `keyRef`/`tokenRef` girişi reddedilir. -Otomasyon dostu kontrol (süresi dolmuş/eksikse çıkış `1`, süresi dolmak üzereyse `2`): +Otomasyon dostu kontrol (eksik/süresi dolmuşsa çıkış `1`, süresi dolmak üzereyse `2`): ```bash openclaw models status --check ``` -Canlı kimlik doğrulama probları: +Canlı kimlik doğrulama yoklamaları: ```bash openclaw models status --probe @@ -106,27 +106,21 @@ openclaw models status --probe Notlar: -- Prob satırları kimlik doğrulama profillerinden, ortam kimlik bilgilerinden veya `models.json` dosyasından gelebilir. -- Açık `auth.order.` saklanan bir profili dışarıda bırakırsa, prob - onu denemek yerine o profil için `excluded_by_auth_order` bildirir. -- Kimlik doğrulama varsa ancak OpenClaw bu sağlayıcı için prob yapılabilir bir model adayı çözemiyorsa, - prob `status: no_model` bildirir. -- Hız sınırı cooldown'ları model kapsamlı olabilir. Bir model için cooldown durumundaki bir profil, - aynı sağlayıcıdaki kardeş bir model için yine de kullanılabilir olabilir. +- Yoklama satırları kimlik doğrulama profillerinden, ortam kimlik bilgilerinden veya `models.json` dosyasından gelebilir. +- Açık `auth.order.`, depolanmış bir profili içermezse, yoklama o profili denemek yerine bu profil için `excluded_by_auth_order` bildirir. +- Kimlik doğrulama mevcutsa ancak OpenClaw bu sağlayıcı için yoklanabilir bir model adayı çözemiyorsa, yoklama `status: no_model` bildirir. +- Hız sınırı bekleme süreleri model kapsamlı olabilir. Bir model için bekleme süresinde olan bir profil, aynı sağlayıcıdaki kardeş bir model için yine de kullanılabilir olabilir. -İsteğe bağlı operasyon betikleri (systemd/Termux) burada belgelenmiştir: +İsteğe bağlı işlem betikleri (systemd/Termux) burada belgelenmiştir: [Kimlik doğrulama izleme betikleri](/tr/help/scripts#auth-monitoring-scripts) ## Anthropic notu -Anthropic `claude-cli` backend yeniden desteklenmektedir. +Anthropic `claude-cli` arka ucu yeniden desteklenmektedir. - Anthropic çalışanları bize bu OpenClaw entegrasyon yoluna yeniden izin verildiğini söyledi. -- Bu nedenle OpenClaw, Anthropic yeni bir politika yayımlamadıkça - Anthropic destekli çalıştırmalar için Claude CLI yeniden kullanımını ve `claude -p` kullanımını - onaylanmış kabul eder. -- Anthropic API anahtarları, uzun ömürlü gateway host'ları ve açık sunucu tarafı - faturalama kontrolü için en öngörülebilir seçenek olmaya devam eder. +- Bu nedenle OpenClaw, Anthropic yeni bir politika yayımlamadığı sürece Claude CLI yeniden kullanımını ve `claude -p` kullanımını Anthropic destekli çalıştırmalar için onaylanmış kabul eder. +- Anthropic API anahtarları, uzun ömürlü Gateway ana bilgisayarları ve açık sunucu tarafı faturalandırma kontrolü için en öngörülebilir seçenek olmaya devam eder. ## Model kimlik doğrulama durumunu kontrol etme @@ -135,23 +129,19 @@ openclaw models status openclaw doctor ``` -## API anahtarı döndürme davranışı (gateway) +## API anahtarı döndürme davranışı (Gateway) -Bazı sağlayıcılar, bir API çağrısı sağlayıcı hız sınırına takıldığında -isteği alternatif anahtarlarla yeniden denemeyi destekler. +Bazı sağlayıcılar, bir API çağrısı sağlayıcı hız sınırına takıldığında isteği alternatif anahtarlarla yeniden denemeyi destekler. - Öncelik sırası: - `OPENCLAW_LIVE__KEY` (tek geçersiz kılma) - `_API_KEYS` - `_API_KEY` - `_API_KEY_*` -- Google sağlayıcıları ek yedek olarak `GOOGLE_API_KEY` değerini de içerir. -- Aynı anahtar listesi kullanılmadan önce tekrarları kaldırılarak tekilleştirilir. -- OpenClaw yalnızca hız sınırı hatalarında bir sonraki anahtarla yeniden dener (örneğin - `429`, `rate_limit`, `quota`, `resource exhausted`, `Too many concurrent -requests`, `ThrottlingException`, `concurrency limit reached` veya - `workers_ai ... quota limit exceeded`). -- Hız sınırı dışındaki hatalar alternatif anahtarlarla yeniden denenmez. +- Google sağlayıcıları ek bir geri dönüş olarak `GOOGLE_API_KEY` değerini de içerir. +- Aynı anahtar listesi kullanılmadan önce tekilleştirilir. +- OpenClaw yalnızca hız sınırı hataları için bir sonraki anahtarla yeniden dener (örneğin `429`, `rate_limit`, `quota`, `resource exhausted`, `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached` veya `workers_ai ... quota limit exceeded`). +- Hız sınırı dışındaki hatalarda alternatif anahtarlarla yeniden deneme yapılmaz. - Tüm anahtarlar başarısız olursa, son denemeden gelen son hata döndürülür. ## Hangi kimlik bilgisinin kullanılacağını kontrol etme @@ -160,11 +150,11 @@ requests`, `ThrottlingException`, `concurrency limit reached` veya Geçerli oturum için belirli bir sağlayıcı kimlik bilgisini sabitlemek üzere `/model @` kullanın (örnek profil kimlikleri: `anthropic:default`, `anthropic:work`). -Kompakt bir seçici için `/model` (veya `/model list`) kullanın; tam görünüm için `/model status` kullanın (adaylar + sonraki kimlik doğrulama profili, ayrıca yapılandırılmışsa sağlayıcı uç nokta ayrıntıları). +Kompakt bir seçici için `/model` (veya `/model list`) kullanın; tam görünüm için `/model status` kullanın (adaylar + sonraki kimlik doğrulama profili ve yapılandırıldığında sağlayıcı uç nokta ayrıntıları). ### Aracı başına (CLI geçersiz kılma) -Bir aracı için açık kimlik doğrulama profili sırası geçersiz kılmasını ayarlayın (o aracının `auth-state.json` dosyasında saklanır): +Bir aracı için açık bir kimlik doğrulama profili sırası geçersiz kılması ayarlayın (o aracının `auth-state.json` dosyasında depolanır): ```bash openclaw models auth order get --provider anthropic @@ -172,25 +162,20 @@ openclaw models auth order set --provider anthropic anthropic:default openclaw models auth order clear --provider anthropic ``` -Belirli bir aracıyı hedeflemek için `--agent ` kullanın; yapılandırılmış varsayılan aracıyı kullanmak için bunu atlayın. -Sıra sorunlarını hata ayıklarken, `openclaw models status --probe` dışarıda bırakılan -saklanan profilleri sessizce atlamak yerine `excluded_by_auth_order` olarak gösterir. -Cooldown sorunlarını hata ayıklarken, hız sınırı cooldown'larının tüm sağlayıcı profiline değil, -tek bir model kimliğine bağlı olabileceğini unutmayın. +Belirli bir aracı hedeflemek için `--agent ` kullanın; yapılandırılmış varsayılan aracı kullanmak için bunu atlayın. +Sıra sorunlarında hata ayıklarken, `openclaw models status --probe` atlanan depolanmış profilleri sessizce geçmek yerine `excluded_by_auth_order` olarak gösterir. +Bekleme süresi sorunlarında hata ayıklarken, hız sınırı bekleme sürelerinin tüm sağlayıcı profili yerine tek bir model kimliğine bağlı olabileceğini unutmayın. ## Sorun giderme -### "No credentials found" +### "Kimlik bilgisi bulunamadı" -Anthropic profili eksikse, **gateway host** üzerinde bir Anthropic API anahtarı yapılandırın -veya Anthropic setup-token yolunu kurun, ardından yeniden kontrol edin: +Anthropic profili eksikse, **Gateway ana bilgisayarında** bir Anthropic API anahtarı yapılandırın veya Anthropic kurulum-jetonu yolunu kurun, ardından tekrar kontrol edin: ```bash openclaw models status ``` -### Token süresi dolmak üzere/dolmuş +### Jetonun süresi doluyor/dolmuş -Hangi profilin süresinin dolmak üzere olduğunu doğrulamak için `openclaw models status` çalıştırın. Bir -Anthropic token profili eksikse veya süresi dolmuşsa, bu kurulumu -setup-token ile yenileyin veya bir Anthropic API anahtarına geçin. +Hangi profilin süresinin dolmak üzere olduğunu doğrulamak için `openclaw models status` çalıştırın. Bir Anthropic jeton profili eksikse veya süresi dolmuşsa, bu kurulumu kurulum-jetonu ile yenileyin veya bir Anthropic API anahtarına geçin. diff --git a/docs/tr/gateway/cli-backends.md b/docs/tr/gateway/cli-backends.md index 3d8719d87..e0375926f 100644 --- a/docs/tr/gateway/cli-backends.md +++ b/docs/tr/gateway/cli-backends.md @@ -1,48 +1,41 @@ --- read_when: - - API provider'ları başarısız olduğunda güvenilir bir geri dönüş istiyorsunuz. - - Codex CLI veya diğer yerel AI CLI'ları çalıştırıyorsunuz ve bunları yeniden kullanmak istiyorsunuz. - - CLI arka ucu araç erişimi için MCP loopback köprüsünü anlamak istiyorsunuz. -summary: 'CLI arka uçları: isteğe bağlı MCP araç köprüsüne sahip yerel AI CLI geri dönüşü' + - API sağlayıcıları başarısız olduğunda güvenilir bir yedek istersiniz + - Codex CLI veya diğer yerel AI CLI'leri çalıştırıyorsunuz ve bunları yeniden kullanmak istiyorsunuz + - CLI arka ucu araç erişimi için MCP local loopback köprüsünü anlamak istiyorsunuz +summary: 'CLI arka uçları: isteğe bağlı MCP araç köprüsü ile yerel AI CLI yedeği' title: CLI Arka Uçları x-i18n: - generated_at: "2026-04-23T09:02:24Z" + generated_at: "2026-04-23T14:56:41Z" model: gpt-5.4 provider: openai - source_hash: 475923b36e4580d3e4e57014ff2e6b89e9eb52c11b0a0ab1fc8241655b07836e + source_hash: ff7458d18b8a5b716930579241177917fd3edffcf7f6e211c7d570cf76519316 source_path: gateway/cli-backends.md workflow: 15 --- -# CLI arka uçları (geri dönüş çalışma zamanı) +# CLI arka uçları (yedek çalışma zamanı) -OpenClaw, API provider'lar kapalıyken, -hız sınırına takıldığında veya geçici olarak hatalı davrandığında **metin odaklı geri dönüş** olarak **yerel AI CLI'larını** çalıştırabilir. Bu özellikle temkinli şekilde tasarlanmıştır: +OpenClaw, API sağlayıcıları kapalıyken, hız sınırına takıldığında veya geçici olarak hatalı davrandığında **metinle sınırlı bir yedek** olarak **yerel AI CLI'leri** çalıştırabilir. Bu kasıtlı olarak temkinli tasarlanmıştır: -- **OpenClaw araçları doğrudan enjekte edilmez**, ancak `bundleMcp: true` olan arka uçlar - Gateway araçlarını bir loopback MCP köprüsü üzerinden alabilir. -- Bunu destekleyen CLI'lar için **JSONL akışı**. -- **Oturumlar desteklenir** (böylece takip eden dönüşler tutarlı kalır). -- CLI görüntü yollarını kabul ediyorsa **görüntüler iletilebilir**. +- **OpenClaw araçları doğrudan eklenmez**, ancak `bundleMcp: true` olan arka uçlar döngüsel bir MCP köprüsü üzerinden gateway araçlarını alabilir. +- Bunu destekleyen CLI'ler için **JSONL akışı**. +- **Oturumlar desteklenir** (böylece takip eden turlar tutarlı kalır). +- CLI görüntü yollarını kabul ediyorsa **görüntüler aktarılabilir**. -Bu, birincil yol olmaktan çok bir **güvenlik ağı** olarak tasarlanmıştır. Harici API'lere güvenmeden -“her zaman çalışan” metin yanıtları istediğinizde kullanın. +Bu, birincil yol olmaktan çok bir **güvenlik ağı** olarak tasarlanmıştır. Harici API'lere bağlı kalmadan “her zaman çalışır” metin yanıtları istediğinizde kullanın. -Tam bir harness çalışma zamanı; ACP oturum denetimleri, arka plan görevleri, -thread/konuşma bağlama ve kalıcı harici coding oturumları istiyorsanız -bunun yerine [ACP Agents](/tr/tools/acp-agents) kullanın. CLI arka uçları ACP değildir. +ACP oturum denetimleri, arka plan görevleri, iş parçacığı/konuşma bağlama ve kalıcı harici kodlama oturumları içeren tam bir harness çalışma zamanı istiyorsanız, bunun yerine [ACP Ajanları](/tr/tools/acp-agents) kullanın. CLI arka uçları ACP değildir. -## Yeni başlayanlar için hızlı başlangıç +## Başlangıç için hızlı kurulum -Codex CLI'ı **hiç yapılandırma olmadan** kullanabilirsiniz (paketli OpenAI Plugin'i -varsayılan bir arka uç kaydeder): +Codex CLI'yi **hiç yapılandırma olmadan** kullanabilirsiniz (paketlenmiş OpenAI plugin'i varsayılan bir arka uç kaydeder): ```bash openclaw agent --message "hi" --model codex-cli/gpt-5.4 ``` -Gateway'iniz launchd/systemd altında çalışıyorsa ve PATH sınırlıysa, yalnızca -komut yolunu ekleyin: +Gateway'niz launchd/systemd altında çalışıyorsa ve PATH sınırlıysa, yalnızca komut yolunu ekleyin: ```json5 { @@ -58,15 +51,13 @@ komut yolunu ekleyin: } ``` -Hepsi bu. CLI'ın kendisinin gerektirdiği şeylerin ötesinde anahtar, ek kimlik doğrulama yapılandırması gerekmez. +Hepsi bu kadar. CLI'nin kendisinin ötesinde anahtar gerekmez, ek kimlik doğrulama yapılandırması gerekmez. -Paketli bir CLI arka ucunu Gateway host'unda **birincil mesaj provider'ı** olarak kullanırsanız, -yapılandırmanız bu arka uca açıkça bir model ref içinde veya -`agents.defaults.cliBackends` altında başvuruyorsa OpenClaw artık ilgili paketli Plugin'i otomatik yükler. +Paketlenmiş bir CLI arka ucunu bir gateway ana makinesinde **birincil mesaj sağlayıcısı** olarak kullanıyorsanız, OpenClaw artık yapılandırmanız bu arka uca bir model başvurusunda veya `agents.defaults.cliBackends` altında açıkça başvuruyorsa ilgili paketlenmiş plugin'i otomatik olarak yükler. -## Geri dönüş olarak kullanma +## Yedek olarak kullanma -Bir CLI arka ucunu geri dönüş listenize ekleyin; böylece yalnızca birincil modeller başarısız olduğunda çalışır: +Bir CLI arka ucunu yedek listenize ekleyin; böylece yalnızca birincil modeller başarısız olduğunda çalışır: ```json5 { @@ -87,26 +78,25 @@ Bir CLI arka ucunu geri dönüş listenize ekleyin; böylece yalnızca birincil Notlar: -- `agents.defaults.models` (allowlist) kullanıyorsanız CLI arka ucu modellerinizi de oraya eklemelisiniz. -- Birincil provider başarısız olursa (kimlik doğrulama, hız sınırları, zaman aşımları), OpenClaw - sırada CLI arka ucunu dener. +- `agents.defaults.models` (izin verilenler listesi) kullanıyorsanız, CLI arka ucu modellerinizi de oraya eklemeniz gerekir. +- Birincil sağlayıcı başarısız olursa (kimlik doğrulama, hız sınırları, zaman aşımları), OpenClaw sırada CLI arka ucunu dener. ## Yapılandırmaya genel bakış -Tüm CLI arka uçları şunun altında bulunur: +Tüm CLI arka uçları şurada bulunur: ``` agents.defaults.cliBackends ``` -Her giriş bir **provider id** ile anahtarlanır (ör. `codex-cli`, `my-cli`). -Provider id, model ref'inizin sol tarafı olur: +Her giriş bir **sağlayıcı kimliği** ile anahtarlanır (ör. `codex-cli`, `my-cli`). +Sağlayıcı kimliği model başvurunuzun sol tarafı olur: ``` / ``` -### Örnek yapılandırma +### Yapılandırma örneği ```json5 { @@ -130,7 +120,7 @@ Provider id, model ref'inizin sol tarafı olur: sessionMode: "existing", sessionIdFields: ["session_id", "conversation_id"], systemPromptArg: "--system", - // Codex tarzı CLI'lar bunun yerine bir istem dosyasına işaret edebilir: + // Codex tarzı CLI'ler bunun yerine bir prompt dosyasına işaret edebilir: // systemPromptFileConfigArg: "-c", // systemPromptFileConfigKey: "model_instructions_file", systemPromptWhen: "first", @@ -146,65 +136,55 @@ Provider id, model ref'inizin sol tarafı olur: ## Nasıl çalışır -1. Provider önekine göre (`codex-cli/...`) **bir arka uç seçer**. -2. Aynı OpenClaw istemi + çalışma alanı bağlamını kullanarak **bir sistem istemi oluşturur**. -3. Geçmiş tutarlı kalsın diye CLI'ı bir oturum kimliğiyle çalıştırır (destekleniyorsa). - Paketli `claude-cli` arka ucu, her - OpenClaw oturumu için bir Claude stdio sürecini canlı tutar ve takip eden dönüşleri stream-json stdin üzerinden gönderir. +1. Sağlayıcı önekine göre (`codex-cli/...`) **bir arka uç seçer**. +2. Aynı OpenClaw prompt + çalışma alanı bağlamını kullanarak **bir sistem prompt'u oluşturur**. +3. Geçmiş tutarlı kalsın diye, destekleniyorsa, bir oturum kimliği ile **CLI'yi çalıştırır**. + Paketlenmiş `claude-cli` arka ucu OpenClaw oturumu başına bir Claude stdio sürecini canlı tutar ve takip eden turları stream-json stdin üzerinden gönderir. 4. **Çıktıyı ayrıştırır** (JSON veya düz metin) ve son metni döndürür. -5. **Oturum kimliklerini** arka uç başına kalıcılaştırır; böylece takip eden dönüşler aynı CLI oturumunu yeniden kullanır. +5. Takip eden istekler aynı CLI oturumunu yeniden kullansın diye arka uç başına **oturum kimliklerini kalıcılaştırır**. -Paketli Anthropic `claude-cli` arka ucu yeniden desteklenmektedir. Anthropic çalışanları -bize OpenClaw tarzı Claude CLI kullanımına yeniden izin verildiğini -söyledi; bu nedenle Anthropic yeni bir ilke yayımlamadığı sürece OpenClaw, -`claude -p` kullanımını bu entegrasyon için onaylanmış kabul eder. +Paketlenmiş Anthropic `claude-cli` arka ucu yeniden desteklenmektedir. Anthropic çalışanları bize OpenClaw tarzı Claude CLI kullanımına yeniden izin verildiğini söyledi; bu nedenle Anthropic yeni bir politika yayımlamadıkça OpenClaw bu entegrasyon için `claude -p` kullanımını onaylı kabul eder. -Paketli OpenAI `codex-cli` arka ucu, OpenClaw'un sistem istemini -Codex'in `model_instructions_file` yapılandırma geçersiz kılması (`-c -model_instructions_file="..."`) üzerinden geçirir. Codex, Claude tarzı -bir `--append-system-prompt` bayrağı sunmadığından OpenClaw, her yeni Codex CLI oturumu için birleştirilmiş istemi geçici bir dosyaya yazar. +Paketlenmiş OpenAI `codex-cli` arka ucu OpenClaw'ın sistem prompt'unu Codex'in `model_instructions_file` yapılandırma geçersiz kılması üzerinden geçirir (`-c +model_instructions_file="..."`). Codex, Claude tarzı bir +`--append-system-prompt` bayrağı sunmadığından, OpenClaw her yeni Codex CLI oturumu için derlenen prompt'u geçici bir dosyaya yazar. -Paketli Anthropic `claude-cli` arka ucu, OpenClaw Skills anlık görüntüsünü -iki yolla alır: eklenmiş sistem istemindeki kompakt OpenClaw Skills kataloğu ve -`--plugin-dir` ile geçirilen geçici bir Claude Code Plugin'i. Plugin yalnızca o agent/oturum için uygun Skills öğelerini içerir; böylece Claude Code'un yerel skill çözücüsü, OpenClaw'un istemde başka türlü duyuracağı aynı filtrelenmiş kümeyi görür. Skill env/API anahtarı geçersiz kılmaları yine de çalışma için alt süreç ortamına OpenClaw tarafından uygulanır. +Paketlenmiş Anthropic `claude-cli` arka ucu OpenClaw Skills anlık görüntüsünü iki şekilde alır: eklenen sistem prompt'undaki derli toplu OpenClaw Skills kataloğu ve `--plugin-dir` ile geçirilen geçici bir Claude Code plugin'i. Plugin yalnızca o ajan/oturum için uygun Skills öğelerini içerir; böylece Claude Code'un yerel beceri çözücüsü, OpenClaw'ın aksi halde prompt'ta duyuracağı aynı filtrelenmiş kümeyi görür. Skill env/API anahtarı geçersiz kılmaları çalıştırma için alt süreç ortamına yine OpenClaw tarafından uygulanır. + +OpenClaw paketlenmiş `claude-cli` arka ucunu kullanmadan önce, Claude Code'un kendisi aynı ana makinede zaten oturum açmış olmalıdır: + +```bash +claude auth login +claude auth status --text +openclaw models auth login --provider anthropic --method cli --set-default +``` + +`claude` ikili dosyası zaten `PATH` üzerinde değilse yalnızca `agents.defaults.cliBackends.claude-cli.command` kullanın. ## Oturumlar -- CLI oturumları destekliyorsa, oturum kimliğini birden çok bayrağa - yerleştirmek gerektiğinde `sessionArg` (ör. `--session-id`) veya - `sessionArgs` (`{sessionId}` yer tutucusu) ayarlayın. -- CLI, farklı bayraklarla **resume alt komutu** kullanıyorsa, - `resumeArgs` (`resume` sırasında `args` yerine geçer) ve isteğe bağlı olarak - `resumeOutput` (JSON olmayan resume durumları için) ayarlayın. +- CLI oturumları destekliyorsa, `sessionArg` (ör. `--session-id`) veya kimliğin birden fazla bayrağa eklenmesi gerektiğinde `sessionArgs` (`{sessionId}` yer tutucusu) ayarlayın. +- CLI farklı bayraklarla bir **resume alt komutu** kullanıyorsa, `resumeArgs` ayarlayın (`args` yerine geçer) ve isteğe bağlı olarak `resumeOutput` ayarlayın (JSON olmayan resume işlemleri için). - `sessionMode`: - - `always`: her zaman bir oturum kimliği gönderir (saklanmış yoksa yeni UUID). - - `existing`: yalnızca daha önce bir oturum kimliği saklandıysa gönderir. + - `always`: her zaman bir oturum kimliği gönderir (depolanmış yoksa yeni UUID). + - `existing`: yalnızca daha önce depolanmışsa bir oturum kimliği gönderir. - `none`: asla oturum kimliği göndermez. -- `claude-cli` varsayılan olarak `liveSession: "claude-stdio"`, `output: "jsonl"` - ve `input: "stdin"` kullanır; böylece takip eden dönüşler etkin olduğu sürece - canlı Claude sürecini yeniden kullanır. Sıcak stdio artık varsayılandır; taşıma alanlarını atlayan özel yapılandırmalarda da böyledir. Gateway yeniden başlarsa veya boşta duran süreç - çıkarsa OpenClaw saklanan Claude oturum kimliğinden resume yapar. Saklanan oturum kimlikleri, - resume öncesinde mevcut okunabilir bir proje transcript'ine karşı doğrulanır; böylece hayalet bağlar - `--resume` altında sessizce yeni bir Claude CLI oturumu başlatmak yerine `reason=transcript-missing` - ile temizlenir. -- Saklanan CLI oturumları provider'a ait sürekliliktir. Örtük günlük oturum - sıfırlaması bunları kesmez; `/reset` ve açık `session.reset` ilkeleri yine keser. +- `claude-cli` varsayılan olarak `liveSession: "claude-stdio"`, `output: "jsonl"` ve `input: "stdin"` kullanır; böylece takip eden turlar etkin olduğu sürece canlı Claude sürecini yeniden kullanır. + Özel yapılandırmalar aktarım alanlarını atladığında da sıcak stdio artık varsayılandır. Gateway yeniden başlarsa veya boşta bekleyen süreç çıkarsa, OpenClaw depolanan Claude oturum kimliğinden devam eder. Depolanan oturum kimlikleri, devam etmeden önce mevcut ve okunabilir bir proje dökümüne karşı doğrulanır; böylece hayali bağlamalar `--resume` altında sessizce yeni bir Claude CLI oturumu başlatmak yerine `reason=transcript-missing` ile temizlenir. +- Depolanan CLI oturumları sağlayıcıya ait sürekliliktir. Örtük günlük oturum sıfırlaması bunları kesmez; `/reset` ve açık `session.reset` ilkeleri keser. Serileştirme notları: -- `serialize: true`, aynı şeritli çalıştırmaları sıralı tutar. -- Çoğu CLI tek bir provider şeridinde serileştirilir. -- Seçilen kimlik doğrulama kimliği değiştiğinde OpenClaw saklanan CLI oturumu yeniden kullanımını bırakır; - buna değişen auth profile id, statik API anahtarı, statik token veya CLI bunu sunuyorsa OAuth - hesap kimliği dahildir. OAuth erişim ve yenileme token'ı - dönüşümü saklanan CLI oturumunu kesmez. Bir CLI kararlı bir OAuth hesap kimliği sunmuyorsa, - OpenClaw resume izinlerini o CLI'ın uygulamasına bırakır. +- `serialize: true`, aynı lane'deki çalıştırmaların sıralı kalmasını sağlar. +- Çoğu CLI tek bir sağlayıcı lane'i üzerinde serileştirilir. +- OpenClaw, seçilen kimlik doğrulama kimliği değiştiğinde depolanan CLI oturumu yeniden kullanımını bırakır; buna değişmiş auth profil kimliği, statik API anahtarı, statik token veya CLI bunlardan birini açığa çıkarıyorsa OAuth hesap kimliği dahildir. + OAuth erişim ve yenileme token'ı rotasyonu depolanan CLI oturumunu kesmez. Bir CLI kararlı bir OAuth hesap kimliği açığa çıkarmıyorsa, OpenClaw o CLI'nin resume izinlerini uygulamasına izin verir. -## Görüntüler (iletim) +## Görüntüler (aktarım) -CLI'ınız görüntü yollarını kabul ediyorsa `imageArg` ayarlayın: +CLI'niz görüntü yollarını kabul ediyorsa, `imageArg` ayarlayın: ```json5 imageArg: "--image", @@ -212,28 +192,26 @@ imageMode: "repeat" ``` OpenClaw base64 görüntüleri geçici dosyalara yazar. `imageArg` ayarlanmışsa bu -yollar CLI bağımsız değişkenleri olarak geçirilir. `imageArg` eksikse OpenClaw -dosya yollarını isteme ekler (yol enjeksiyonu); bu, düz yollardan yerel dosyaları otomatik -yükleyen CLI'lar için yeterlidir. +yollar CLI argümanları olarak geçirilir. `imageArg` eksikse, OpenClaw dosya +yollarını prompt'a ekler (yol enjeksiyonu); bu, düz yollardan yerel dosyaları +otomatik yükleyen CLI'ler için yeterlidir. ## Girdiler / çıktılar -- `output: "json"` (varsayılan), JSON ayrıştırmayı ve metin + oturum kimliği çıkarmayı dener. -- Gemini CLI JSON çıktısı için OpenClaw, `usage` eksik veya boş olduğunda - yanıt metnini `response` içinden ve kullanımı `stats` içinden okur. -- `output: "jsonl"`, JSONL akışlarını ayrıştırır (örneğin Codex CLI `--json`) ve son agent mesajını, varsa oturum - tanımlayıcılarıyla birlikte çıkarır. -- `output: "text"`, stdout'u son yanıt olarak kabul eder. +- `output: "json"` (varsayılan) JSON ayrıştırmayı dener ve metin + oturum kimliğini çıkarır. +- Gemini CLI JSON çıktısı için OpenClaw, `usage` eksik veya boş olduğunda yanıt metnini `response` içinden ve kullanımı `stats` içinden okur. +- `output: "jsonl"` JSONL akışlarını ayrıştırır (örneğin Codex CLI `--json`) ve mevcut olduğunda son ajan mesajını ve oturum tanımlayıcılarını çıkarır. +- `output: "text"` stdout'u son yanıt olarak ele alır. Girdi modları: -- `input: "arg"` (varsayılan), istemi son CLI bağımsız değişkeni olarak geçirir. -- `input: "stdin"`, istemi stdin üzerinden gönderir. -- İstem çok uzunsa ve `maxPromptArgChars` ayarlanmışsa stdin kullanılır. +- `input: "arg"` (varsayılan) prompt'u son CLI argümanı olarak geçirir. +- `input: "stdin"` prompt'u stdin üzerinden gönderir. +- Prompt çok uzunsa ve `maxPromptArgChars` ayarlanmışsa stdin kullanılır. -## Varsayılanlar (Plugin'e ait) +## Varsayılanlar (plugin'e ait) -Paketli OpenAI Plugin'i ayrıca `codex-cli` için bir varsayılan kaydeder: +Paketlenmiş OpenAI plugin'i ayrıca `codex-cli` için bir varsayılan kaydeder: - `command: "codex"` - `args: ["exec","--json","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]` @@ -244,7 +222,7 @@ Paketli OpenAI Plugin'i ayrıca `codex-cli` için bir varsayılan kaydeder: - `imageArg: "--image"` - `sessionMode: "existing"` -Paketli Google Plugin'i ayrıca `google-gemini-cli` için bir varsayılan kaydeder: +Paketlenmiş Google plugin'i ayrıca `google-gemini-cli` için bir varsayılan kaydeder: - `command: "gemini"` - `args: ["--output-format", "json", "--prompt", "{prompt}"]` @@ -255,32 +233,27 @@ Paketli Google Plugin'i ayrıca `google-gemini-cli` için bir varsayılan kayded - `sessionMode: "existing"` - `sessionIdFields: ["session_id", "sessionId"]` -Ön koşul: yerel Gemini CLI kurulu olmalı ve `PATH` üzerinde -`gemini` olarak erişilebilir olmalıdır (`brew install gemini-cli` veya -`npm install -g @google/gemini-cli`). +Önkoşul: yerel Gemini CLI kurulmuş olmalı ve `PATH` üzerinde `gemini` olarak kullanılabilir olmalıdır (`brew install gemini-cli` veya `npm install -g @google/gemini-cli`). Gemini CLI JSON notları: - Yanıt metni JSON `response` alanından okunur. -- `usage` yoksa veya boşsa kullanım için `stats` geri dönüş olarak kullanılır. -- `stats.cached`, OpenClaw `cacheRead` içine normalize edilir. -- `stats.input` eksikse OpenClaw giriş token'larını - `stats.input_tokens - stats.cached` üzerinden türetir. +- `usage` yoksa veya boşsa, kullanım için `stats` yedek olarak kullanılır. +- `stats.cached`, OpenClaw `cacheRead` biçimine normalize edilir. +- `stats.input` eksikse, OpenClaw girdi token'larını `stats.input_tokens - stats.cached` üzerinden türetir. -Yalnızca gerektiğinde geçersiz kılın (yaygın durum: mutlak `command` yolu). +Yalnızca gerekirse geçersiz kılın (yaygın durum: mutlak `command` yolu). ## Plugin'e ait varsayılanlar -CLI arka ucu varsayılanları artık Plugin yüzeyinin parçasıdır: +CLI arka ucu varsayılanları artık plugin yüzeyinin bir parçasıdır: - Plugin'ler bunları `api.registerCliBackend(...)` ile kaydeder. -- Arka uç `id` değeri, model ref'lerde provider öneki olur. -- `agents.defaults.cliBackends.` içindeki kullanıcı yapılandırması yine de Plugin varsayılanını geçersiz kılar. -- Arka uca özgü yapılandırma temizliği, isteğe bağlı - `normalizeConfig` kancası üzerinden Plugin'e ait kalır. +- Arka uç `id` değeri model başvurularında sağlayıcı öneki olur. +- `agents.defaults.cliBackends.` altındaki kullanıcı yapılandırması plugin varsayılanını yine geçersiz kılar. +- Arka uca özgü yapılandırma temizliği, isteğe bağlı `normalizeConfig` hook'u üzerinden plugin'e ait kalır. -Küçük istem/mesaj uyumluluk uyarlamalarına ihtiyaç duyan Plugin'ler, -bir provider veya CLI arka ucunu değiştirmeden çift yönlü metin dönüşümleri bildirebilir: +Küçük prompt/mesaj uyumluluk uyarlamalarına ihtiyaç duyan plugin'ler, bir sağlayıcıyı veya CLI arka ucunu değiştirmeden çift yönlü metin dönüşümleri tanımlayabilir: ```typescript api.registerTextTransforms({ @@ -297,51 +270,41 @@ api.registerTextTransforms({ }); ``` -`input`, CLI'a geçirilen sistem istemini ve kullanıcı istemini yeniden yazar. `output`, -OpenClaw kendi denetim işaretleyicilerini ve kanal teslimatını ele almadan önce -akışlı assistant deltalarını ve ayrıştırılmış son metni yeniden yazar. +`input`, CLI'ye geçirilen sistem prompt'unu ve kullanıcı prompt'unu yeniden yazar. `output`, OpenClaw kendi kontrol işaretçilerini ve kanal teslimini işlemeden önce akış halindeki asistan deltalarını ve ayrıştırılmış son metni yeniden yazar. -Claude Code stream-json uyumlu JSONL üreten CLI'lar için, -o arka ucun yapılandırmasında `jsonlDialect: "claude-stream-json"` ayarlayın. +Claude Code stream-json ile uyumlu JSONL üreten CLI'ler için, o arka ucun yapılandırmasında `jsonlDialect: "claude-stream-json"` ayarlayın. -## MCP paket bindirmeleri +## Bundle MCP katmanları -CLI arka uçları OpenClaw araç çağrılarını **doğrudan** almaz, ancak bir arka uç -`bundleMcp: true` ile üretilmiş bir MCP yapılandırma bindirmesine katılabilir. +CLI arka uçları OpenClaw araç çağrılarını **doğrudan** almaz, ancak bir arka uç `bundleMcp: true` ile oluşturulmuş bir MCP yapılandırma katmanını kullanmayı seçebilir. -Geçerli paketli davranış: +Mevcut paketlenmiş davranış: -- `claude-cli`: üretilmiş katı MCP yapılandırma dosyası +- `claude-cli`: oluşturulmuş katı MCP yapılandırma dosyası - `codex-cli`: `mcp_servers` için satır içi yapılandırma geçersiz kılmaları -- `google-gemini-cli`: üretilmiş Gemini sistem ayarları dosyası +- `google-gemini-cli`: oluşturulmuş Gemini sistem ayarları dosyası -MCP paketi etkinleştirildiğinde OpenClaw: +Bundle MCP etkinleştirildiğinde OpenClaw: -- CLI sürecine Gateway araçlarını sunan bir loopback HTTP MCP sunucusu başlatır -- köprüyü oturum başına token ile kimlik doğrular (`OPENCLAW_MCP_TOKEN`) +- CLI sürecine gateway araçlarını sunan döngüsel bir HTTP MCP sunucusu başlatır +- köprüyü oturum başına bir token ile doğrular (`OPENCLAW_MCP_TOKEN`) - araç erişimini geçerli oturum, hesap ve kanal bağlamıyla sınırlar - geçerli çalışma alanı için etkin bundle-MCP sunucularını yükler -- bunları mevcut arka uç MCP yapılandırması/ayar biçimiyle birleştirir -- başlatma yapılandırmasını, ilgili extension'dan gelen arka uca ait entegrasyon modunu kullanarak yeniden yazar +- bunları mevcut arka uç MCP yapılandırması/ayar şekli ile birleştirir +- başlatma yapılandırmasını sahibi olan eklentinin sahip olduğu entegrasyon modunu kullanarak yeniden yazar -Hiçbir MCP sunucusu etkin değilse bile, bir arka uç -bundle MCP'ye katıldığında OpenClaw yine de katı bir yapılandırma enjekte eder; böylece arka plan çalıştırmaları yalıtılmış kalır. +Hiçbir MCP sunucusu etkin değilse, OpenClaw bir arka uç bundle MCP'yi seçtiğinde arka plan çalıştırmaları yalıtılmış kalsın diye yine de katı bir yapılandırma ekler. ## Sınırlamalar -- **Doğrudan OpenClaw araç çağrıları yoktur.** OpenClaw, CLI arka ucu protokolüne - araç çağrıları enjekte etmez. Arka uçlar Gateway araçlarını yalnızca - `bundleMcp: true` seçeneğine katıldıklarında görür. -- **Akış arka uca özeldir.** Bazı arka uçlar JSONL akışı yapar; diğerleri - çıkışa kadar tamponlar. -- **Yapılandırılmış çıktılar**, CLI'ın JSON biçimine bağlıdır. -- **Codex CLI oturumları**, metin çıktısı üzerinden resume eder (JSONL yoktur); bu, - ilk `--json` çalıştırmasına göre daha az yapılandırılmıştır. OpenClaw oturumları yine de normal çalışır. +- **Doğrudan OpenClaw araç çağrıları yoktur.** OpenClaw, CLI arka ucu protokolüne araç çağrıları eklemez. Arka uçlar gateway araçlarını yalnızca `bundleMcp: true` seçtiklerinde görür. +- **Akış arka uca özeldir.** Bazı arka uçlar JSONL akışı yapar; diğerleri çıkışa kadar tamponlar. +- **Yapılandırılmış çıktılar** CLI'nin JSON biçimine bağlıdır. +- **Codex CLI oturumları** metin çıktısı üzerinden sürdürülür (JSONL yoktur); bu, ilk `--json` çalıştırmasına göre daha az yapılandırılmıştır. OpenClaw oturumları yine de normal çalışır. ## Sorun giderme - **CLI bulunamadı**: `command` değerini tam yol olarak ayarlayın. -- **Yanlış model adı**: `provider/model` → CLI model eşlemesi yapmak için `modelAliases` kullanın. -- **Oturum sürekliliği yok**: `sessionArg` ayarlandığından ve `sessionMode` değerinin - `none` olmadığından emin olun (Codex CLI şu anda JSON çıktısıyla resume edemez). -- **Görüntüler yok sayılıyor**: `imageArg` ayarlayın (ve CLI'ın dosya yollarını desteklediğini doğrulayın). +- **Yanlış model adı**: `provider/model` → CLI modeli eşlemesi için `modelAliases` kullanın. +- **Oturum sürekliliği yok**: `sessionArg` ayarlandığından ve `sessionMode` değerinin `none` olmadığından emin olun (Codex CLI şu anda JSON çıktısı ile sürdüremez). +- **Görüntüler yok sayılıyor**: `imageArg` ayarlayın (ve CLI'nin dosya yollarını desteklediğini doğrulayın). diff --git a/docs/tr/help/testing.md b/docs/tr/help/testing.md index 0cd09e93c..be377cab3 100644 --- a/docs/tr/help/testing.md +++ b/docs/tr/help/testing.md @@ -2,25 +2,25 @@ read_when: - Testleri yerel olarak veya CI'da çalıştırma - Model/sağlayıcı hataları için regresyonlar ekleme - - Gateway + agent davranışında hata ayıklama -summary: 'Test kiti: unit/e2e/live paketleri, Docker çalıştırıcıları ve her testin kapsadıkları' + - Gateway + ajan davranışında hata ayıklama +summary: 'Test kiti: unit/e2e/live paketleri, Docker çalıştırıcıları ve her testin kapsadığı alanlar' title: Test etme x-i18n: - generated_at: "2026-04-23T13:58:04Z" + generated_at: "2026-04-23T14:56:42Z" model: gpt-5.4 provider: openai - source_hash: fe0e9bdea78cba7e512358d2e4d428da04a2071188e74af2d5419d2c85eafe15 + source_hash: fbec4996699577321116c94f60c01d205d7594ed41aca27c821f1c3d65a7dca3 source_path: help/testing.md workflow: 15 --- -# Test Etme +# Test etme -OpenClaw üç Vitest paketine (unit/integration, e2e, live) ve küçük bir Docker çalıştırıcıları kümesine sahiptir. +OpenClaw’ın üç Vitest paketi (unit/integration, e2e, live) ve küçük bir Docker çalıştırıcı kümesi vardır. -Bu doküman, “nasıl test ediyoruz” rehberidir: +Bu doküman bir “nasıl test ediyoruz” rehberidir: -- Her paketin neyi kapsadığı (ve özellikle neyi kapsamadığı) +- Her paketin neyi kapsadığı (ve özellikle neyi _kapsamadığı_) - Yaygın iş akışları için hangi komutların çalıştırılacağı (yerel, push öncesi, hata ayıklama) - Live testlerin kimlik bilgilerini nasıl bulduğu 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 @@ -29,130 +29,139 @@ Bu doküman, “nasıl test ediyoruz” rehberidir: Çoğu gün: -- Tam geçit (push öncesi beklenir): `pnpm build && pnpm check && pnpm check:test-types && pnpm test` -- Geniş kaynaklı bir makinede daha hızlı yerel tam paket çalıştırması: `pnpm test:max` +- Tam kapı (push öncesinde beklenen): `pnpm build && pnpm check && pnpm check:test-types && pnpm test` +- Güçlü 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önlendirir: `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 extension/channel yollarını da yönlendiriyor: `pnpm test extensions/discord/src/monitor/message-handler.preflight.test.ts` +- Tek bir hata üzerinde yineleme yaparken ö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 ek güven istediğinizde: +Testlere dokunduğunuzda veya ekstra güven istediğinizde: -- Kapsama geçidi: `pnpm test:coverage` +- Kapsama kapısı: `pnpm test:coverage` - E2E paketi: `pnpm test:e2e` -Gerçek sağlayıcılar/modeller üzerinde hata ayıklarken (gerçek kimlik bilgileri gerekir): +Gerçek sağlayıcıları/modelleri ayıklarken (gerçek kimlik bilgileri gerekir): -- Live paketi (modeller + Gateway araç/görüntü yoklamaları): `pnpm test:live` +- Live paketi (modeller + Gateway araç/görüntü probları): `pnpm test:live` - Tek bir live dosyasını sessizce hedefleyin: `pnpm test:live -- src/agents/models.profiles.live.test.ts` - Docker live model taraması: `pnpm test:docker:live-models` + - Artık seçilen her model bir metin dönüşü ve küçük bir dosya-okuma tarzı prob çalıştırır. + Meta verileri `image` girdisini duyuran modeller ayrıca küçük bir görüntü dönüşü de çalıştırır. + Sağlayıcı hatalarını izole ederken ek probları `OPENCLAW_LIVE_MODEL_FILE_PROBE=0` veya + `OPENCLAW_LIVE_MODEL_IMAGE_PROBE=0` ile devre dışı bırakın. - CI kapsamı: günlük `OpenClaw Scheduled Live And E2E Checks` ve manuel `OpenClaw Release Checks`, her ikisi de yeniden kullanılabilir live/E2E iş akışını - `include_live_suites: true` ile çağırır; buna sağlayıcıya göre parçalara ayrılmış - ayrı Docker live model matris işleri dahildir. + `include_live_suites: true` ile çağırır; bu, sağlayıcıya göre shard edilmiş + ayrı Docker live model matris işlerini içerir. - Odaklı CI yeniden çalıştırmaları için `OpenClaw Live And E2E Checks (Reusable)` iş akışını `include_live_suites: true` ve `live_models_only: true` ile tetikleyin. - - Yeni yüksek sinyalli sağlayıcı sırlarını `scripts/ci-hydrate-live-auth.sh` - dosyasına ve ayrıca `.github/workflows/openclaw-live-and-e2e-checks-reusable.yml` - ile onun zamanlanmış/sürüm çağıranlarına ekleyin. -- Moonshot/Kimi maliyet smoke testi: `MOONSHOT_API_KEY` ayarlıysa, - `openclaw models list --provider moonshot --json` komutunu çalıştırın, ardından - `moonshot/kimi-k2.6` üzerinde yalıtılmış bir + - Yeni yüksek sinyalli sağlayıcı sırlarını `scripts/ci-hydrate-live-auth.sh` dosyasına, + ayrıca `.github/workflows/openclaw-live-and-e2e-checks-reusable.yml` ve onun + zamanlanmış/sürüm çağırıcılarına ekleyin. +- Moonshot/Kimi maliyet smoke testi: `MOONSHOT_API_KEY` ayarlıyken, + `openclaw models list --provider moonshot --json` çalıştırın, ardından + `moonshot/kimi-k2.6` karşısında izole bir `openclaw agent --local --session-id live-kimi-cost --message 'Reply exactly: KIMI_LIVE_OK' --thinking off --json` - çalıştırın. JSON çıktısının Moonshot/K2.6 bildirdiğini ve assistant dökümünün normalize edilmiş `usage.cost` sakladığını doğrulayın. + çalıştırın. JSON’un Moonshot/K2.6 raporladığını ve + yardımcı transkriptinin normalize edilmiş `usage.cost` sakladığını doğrulayın. -İ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 live testleri daraltmayı tercih edin. +İpucu: yalnızca tek bir başarısız duruma ihtiyacınız olduğunda, aşağıda açıklanan allowlist env değişkenleriyle live testleri daraltmayı tercih edin. -## QA'ya özgü çalıştırıcılar +## QA’ya özel çalıştırıcılar -QA-lab gerçekçiliğine ihtiyaç duyduğunuzda bu komutlar ana test paketlerinin yanında yer alır: +Bu komutlar, QA-lab gerçekçiliğine ihtiyaç duyduğunuzda ana test paketlerinin yanında yer alır: -CI, QA Lab'ı özel iş akışlarında çalıştırır. `Parity gate`, eşleşen PR'lerde ve -manuel tetikleme ile sahte sağlayıcılarla çalışır. `QA-Lab - All Lanes`, `main` -üzerinde gecelik olarak ve manuel tetikleme ile sahte parity gate, live Matrix hattı -ve Convex tarafından yönetilen live Telegram hattını paralel işler olarak çalıştırır. -`OpenClaw Release Checks`, sürüm onayından önce aynı hatları çalıştırır. +CI, QA Lab’ı ayrılmış iş akışlarında çalıştırır. `Parity gate`, eşleşen PR’lerde ve +manuel tetiklemede sahte sağlayıcılarla çalışır. `QA-Lab - All Lanes`, her gece +`main` üzerinde ve manuel tetiklemede sahte parity gate, live Matrix hattı ve +Convex tarafından yönetilen live Telegram hattını paralel işler olarak çalıştırır. `OpenClaw Release Checks` +yayın onayı öncesinde aynı hatları çalıştırır. - `pnpm openclaw qa suite` - - Repo destekli QA senaryolarını doğrudan ana makinede çalıştırır. - - Birden çok seçili senaryoyu varsayılan olarak yalıtılmış Gateway çalışanlarıyla paralel çalıştırır. `qa-channel` varsayılan olarak eşzamanlılık 4 kullanır (seçilen senaryo sayısıyla sınırlıdır). Çalışan sayısını ayarlamak için `--concurrency `, eski seri hat için ise `--concurrency 1` kullanın. - - Herhangi bir senaryo başarısız olduğunda sıfır olmayan çıkış kodu verir. Başarısız çıkış kodu olmadan artifact istediğinizde `--allow-failures` kullanın. + - Depo destekli QA senaryolarını doğrudan host üzerinde çalıştırır. + - Varsayılan olarak izole Gateway worker’ları ile birden fazla seçili senaryoyu paralel çalıştırır. + `qa-channel` varsayılan olarak eşzamanlılık 4 kullanır (seçilen senaryo sayısıyla sınırlıdır). + Worker sayısını ayarlamak için `--concurrency `, eski seri hat içinse `--concurrency 1` kullanın. + - Herhangi bir senaryo başarısız olursa sıfır olmayan çıkış koduyla biter. Başarısız çıkış kodu olmadan artifact istiyorsanız `--allow-failures` kullanın. - `live-frontier`, `mock-openai` ve `aimock` sağlayıcı modlarını destekler. - `aimock`, deneysel fixture ve protokol-mock kapsamı için yerel AIMock destekli - bir sağlayıcı sunucusu başlatır; ancak senaryo farkındalıklı `mock-openai` - hattının yerini almaz. + `aimock`, deneysel fixture ve protokol-sahteleme kapsamı için yerel bir AIMock destekli sağlayıcı sunucusu başlatır; ancak senaryo farkındalıklı `mock-openai` hattının yerini almaz. - `pnpm openclaw qa suite --runner multipass` - - Aynı QA paketini tek kullanımlık bir Multipass Linux VM içinde çalıştırır. - - Ana makinedeki `qa suite` ile aynı senaryo seçimi davranışını korur. + - Aynı QA paketini geçici bir Multipass Linux VM içinde çalıştırır. + - Host üzerindeki `qa suite` ile aynı senaryo seçimi davranışını korur. - `qa suite` ile aynı sağlayıcı/model seçim bayraklarını yeniden kullanır. - - Live çalıştırmalar, konuk için pratik olan desteklenen QA kimlik doğrulama girdilerini iletir: - ortam tabanlı sağlayıcı anahtarları, QA live sağlayıcı yapılandırma yolu ve - varsa `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 + özeti ile birlikte Multipass günlüklerini - `.artifacts/qa-e2e/...` altına yazar. + - Live çalıştırmalar, misafir için pratik olan desteklenen QA auth girdilerini iletir: + env tabanlı sağlayıcı anahtarları, QA live 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ğlanmış çalışma alanı üzerinden geri yazabilir. + - Normal QA raporu + özeti ve 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. + - Operatör tarzı QA çalışması için Docker destekli QA sitesini başlatır. - `pnpm test:docker:npm-onboard-channel-agent` - - Geçerli checkout'tan bir npm tarball oluşturur, bunu Docker içinde global olarak kurar, etkileşimsiz OpenAI API anahtarı onboarding çalıştırır, varsayılan olarak Telegram yapılandırır, plugin etkinleştirmenin çalışma zamanı bağımlılıklarını gerektiğinde kurduğunu doğrular, doctor çalıştırır ve sahte bir OpenAI endpoint'ine karşı bir yerel agent dönüşü çalıştırır. - - Aynı paketlenmiş kurulum hattını Discord ile çalıştırmak için `OPENCLAW_NPM_ONBOARD_CHANNEL=discord` kullanın. + - Geçerli checkout’tan bir npm tarball oluşturur, bunu Docker içinde global olarak kurar, + etkileşimsiz OpenAI API anahtarı onboarding’i çalıştırır, varsayılan olarak Telegram’ı yapılandırır, + Plugin etkinleştirmenin çalışma zamanı bağımlılıklarını ihtiyaç üzerine kurduğunu doğrular, + doctor çalıştırır ve sahte bir OpenAI uç noktasına karşı bir yerel ajan dönüşü çalıştırır. + - Aynı paketlenmiş-kurulum hattını Discord ile çalıştırmak için `OPENCLAW_NPM_ONBOARD_CHANNEL=discord` kullanın. - `pnpm test:docker:bundled-channel-deps` - - Geçerli OpenClaw yapısını Docker içinde paketler ve kurar, OpenAI yapılandırılmış şekilde Gateway'i başlatır, ardından config düzenlemeleriyle paketlenmiş channel/plugin'leri etkinleştirir. - - Kurulum keşfinin yapılandırılmamış plugin çalışma zamanı bağımlılıklarını eksik bıraktığını, ilk yapılandırılmış Gateway veya doctor çalıştırmasının her paketlenmiş plugin'in çalışma zamanı bağımlılıklarını gerektiğinde kurduğunu ve ikinci yeniden başlatmanın zaten etkinleştirilmiş bağımlılıkları yeniden kurmadığını doğrular. - - Ayrıca bilinen daha eski bir npm taban sürümünü kurar, Telegram'ı etkinleştirir, sonra - `openclaw update --tag ` çalıştırır ve aday sürümün - güncelleme sonrası doctor çalıştırmasının paketlenmiş channel çalışma zamanı - bağımlılıklarını harness tarafı bir postinstall onarımı olmadan düzelttiğini doğrular. + - Geçerli OpenClaw derlemesini Docker içinde paketler ve kurar, OpenAI yapılandırılmış şekilde Gateway’i başlatır, + ardından paketlenmiş channel/plugin’leri yapılandırma düzenlemeleriyle etkinleştirir. + - Kurulum keşfinin yapılandırılmamış plugin çalışma zamanı bağımlılıklarını yok durumda bıraktığını, + ilk yapılandırılmış Gateway veya doctor çalıştırmasının her paketlenmiş Plugin’in çalışma zamanı bağımlılıklarını ihtiyaç üzerine kurduğunu + ve ikinci bir yeniden başlatmanın zaten etkinleştirilmiş bağımlılıkları yeniden kurmadığını doğrular. + - Ayrıca bilinen eski bir npm temel sürümünü kurar, `openclaw update --tag ` çalıştırmadan önce Telegram’ı etkinleştirir + ve aday sürümün güncelleme sonrası doctor adımının, harness tarafı bir postinstall onarımı olmadan paketlenmiş channel çalışma zamanı bağımlılıklarını onardığını doğrular. - `pnpm openclaw qa aimock` - Doğrudan protokol smoke testi için yalnızca yerel AIMock sağlayıcı sunucusunu başlatır. - `pnpm openclaw qa matrix` - - Matrix live QA hattını, tek kullanımlık Docker destekli bir Tuwunel homeserver'a karşı çalıştırır. - - Bu QA ana makinesi bugün yalnızca repo/geliştirme içindir. Paketlenmiş OpenClaw kurulumları `qa-lab` göndermez, dolayısıyla `openclaw qa` sunmaz. - - Repo checkout'ları paketlenmiş ç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'ini SUT taşıması olarak kullanan 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, hat tek kullanımlık kullanıcıları yerelde oluşturduğu için paylaşılan kimlik bilgisi kaynağı bayraklarını açığa çıkarmaz. - - Bir Matrix QA raporu, özeti, gözlemlenen olaylar artifact'i ve birleşik stdout/stderr çıktı günlüğünü `.artifacts/qa-e2e/...` altına yazar. + - Geçici Docker destekli bir Tuwunel homeserver’a karşı Matrix live QA hattını çalıştırır. + - Bu QA host’u bugün yalnızca repo/geliştirme içindir. Paketlenmiş OpenClaw kurulumları `qa-lab` göndermez, + dolayısıyla `openclaw qa` sunmaz. + - Repo checkout’ları paketlenmiş ç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`) ve bir özel oda sağlar, ardından gerçek Matrix Plugin’i SUT taşıması olarak kullanan bir QA Gateway alt süreci başlatır. + - Varsayılan olarak sabitlenmiş kararlı Tuwunel görüntüsü `ghcr.io/matrix-construct/tuwunel:v1.5.1` kullanılır. Farklı bir görüntüyü test etmeniz gerektiğinde `OPENCLAW_QA_MATRIX_TUWUNEL_IMAGE` ile geçersiz kılın. + - Matrix, hattın yerel olarak geçici kullanıcılar sağlaması nedeniyle paylaşılan kimlik bilgisi kaynağı bayraklarını açığa çıkarmaz. + - `.artifacts/qa-e2e/...` altında bir Matrix QA raporu, özet, gözlemlenen olaylar artifact’i ve birleşik stdout/stderr çıktı günlüğü yazar. - `pnpm openclaw qa telegram` - - Telegram live QA hattını, ortamdan alınan driver ve SUT bot token'larıyla gerçek bir özel gruba karşı çalıştırır. + - Ortamdaki driver ve SUT bot token’larını kullanarak gerçek bir özel gruba karşı Telegram live QA hattını ç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` desteklenir. Varsayılan olarak env modunu kullanın veya havuzlanmış kiralamalara geçmek için `OPENCLAW_QA_CREDENTIAL_SOURCE=convex` ayarlayın. - - Herhangi bir senaryo başarısız olduğunda sıfır olmayan çıkış kodu verir. Başarısız çıkış kodu olmadan artifact istediğinizde `--allow-failures` kullanın. - - Aynı özel grupta iki farklı bot gerektirir; SUT botu bir Telegram kullanıcı adı sunmalıdır. - - Kararlı bottan-bota gözlem için, `@BotFather` içinde her iki bot için de Bot-to-Bot Communication Mode'u etkinleştirin ve driver botunun grup bot trafiğini gözlemleyebildiğinden emin olun. - - `.artifacts/qa-e2e/...` altında bir Telegram QA raporu, özeti ve gözlemlenen mesajlar artifact'i yazar. Yanıt senaryoları, driver gönderme isteğinden gözlemlenen SUT yanıtına kadar RTT'yi içerir. + - Paylaşılan havuzlanmış 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. + - Herhangi bir senaryo başarısız olursa sıfır olmayan çıkış koduyla biter. Başarısız çıkış kodu olmadan artifact istiyorsanız `--allow-failures` kullanın. + - Aynı özel grupta iki farklı bot gerekir; SUT botunun bir Telegram kullanıcı adını açığa çıkarması gerekir. + - Kararlı bottan-bota gözlem için `@BotFather` içinde her iki bot için de Bot-to-Bot Communication Mode’u etkinleştirin ve driver botunun grup bot trafiğini gözlemleyebildiğinden emin olun. + - `.artifacts/qa-e2e/...` altında bir Telegram QA raporu, özet ve gözlemlenen mesajlar artifact’i yazar. Yanıtlanan senaryolar, driver gönderim isteğinden gözlemlenen SUT yanıtına kadar RTT içerir. -Live taşıma hatları tek bir standart sözleşmeyi paylaşır; böylece yeni taşımalar sapmaz: +Live taşıma hatları, yeni taşımaların sapmaması için tek bir standart sözleşme paylaşır: -`qa-channel`, geniş sentetik QA paketi olarak kalır ve live taşıma kapsamı matrisinin parçası değildir. +`qa-channel`, geniş sentetik QA paketi olarak kalır ve live +taşıma kapsama matrisinin parçası değildir. -| Hat | Canary | Mention gating | Allowlist block | Üst düzey yanıt | Yeniden başlatma sonrası devam | Thread takip yanıtı | Thread yalıtımı | Tepki gözlemi | Yardım komutu | -| -------- | ------ | -------------- | --------------- | --------------- | ------------------------------ | ------------------- | --------------- | ------------- | ------------- | -| Matrix | x | x | x | x | x | x | x | x | | -| Telegram | x | | | | | | | | x | +| Hat | Canary | Mention gating | Allowlist block | Top-level reply | Restart resume | Thread follow-up | Thread isolation | Reaction observation | Help command | +| -------- | ------ | -------------- | --------------- | --------------- | -------------- | ---------------- | ---------------- | -------------------- | ------------ | +| Matrix | x | x | x | x | x | x | x | x | | +| Telegram | x | | | | | | | | x | ### Convex üzerinden paylaşılan Telegram kimlik bilgileri (v1) `openclaw qa telegram` için `--credential-source convex` (veya `OPENCLAW_QA_CREDENTIAL_SOURCE=convex`) etkinleştirildiğinde, -QA lab Convex destekli bir havuzdan özel bir kiralama alır, hat çalışırken bu kiralamaya Heartbeat gönderir -ve kapatma sırasında kiralamayı serbest bırakır. +QA lab, Convex destekli bir havuzdan özel bir kira alır, hat çalışırken +bu kiraya Heartbeat gönderir ve kapanışta kirayı serbest bırakır. Referans Convex proje iskeleti: - `qa/convex-credential-broker/` -Gerekli ortam değişkenleri: +Gerekli env değişkenleri: - `OPENCLAW_QA_CONVEX_SITE_URL` (örneğin `https://your-deployment.convex.site`) -- Seçilen rol için bir gizli anahtar: - - `OPENCLAW_QA_CONVEX_SECRET_MAINTAINER` `maintainer` için - - `OPENCLAW_QA_CONVEX_SECRET_CI` `ci` için +- Seçili rol için bir sır: + - `maintainer` için `OPENCLAW_QA_CONVEX_SECRET_MAINTAINER` + - `ci` için `OPENCLAW_QA_CONVEX_SECRET_CI` - Kimlik bilgisi rolü seçimi: - CLI: `--credential-role maintainer|ci` - - Varsayılan env: `OPENCLAW_QA_CREDENTIAL_ROLE` (CI'da varsayılan `ci`, diğer durumlarda `maintainer`) + - Varsayılan env: `OPENCLAW_QA_CREDENTIAL_ROLE` (CI’da varsayılan `ci`, diğer durumlarda `maintainer`) -İsteğe bağlı ortam değişkenleri: +İsteğe bağlı env değişkenleri: - `OPENCLAW_QA_CREDENTIAL_LEASE_TTL_MS` (varsayılan `1200000`) - `OPENCLAW_QA_CREDENTIAL_HEARTBEAT_INTERVAL_MS` (varsayılan `30000`) @@ -160,14 +169,14 @@ 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. +`OPENCLAW_QA_CONVEX_SITE_URL`, normal kullanımda `https://` kullanmalıdır. -Bakımcı yönetici komutları (havuz ekle/kaldır/listele) özellikle +Maintainer yönetici komutları (havuz ekleme/kaldırma/listeleme) özellikle `OPENCLAW_QA_CONVEX_SECRET_MAINTAINER` gerektirir. -Bakımcı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 @@ -175,9 +184,9 @@ 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ılarında makine tarafından okunabilir çıktı için `--json` kullanın. -Varsayılan endpoint sözleşmesi (`OPENCLAW_QA_CONVEX_SITE_URL` + `/qa-credentials/v1`): +Varsayılan uç nokta sözleşmesi (`OPENCLAW_QA_CONVEX_SITE_URL` + `/qa-credentials/v1`): - `POST /acquire` - İstek: `{ kind, ownerId, actorRole, leaseTtlMs, heartbeatIntervalMs }` @@ -189,70 +198,70 @@ Varsayılan endpoint sözleşmesi (`OPENCLAW_QA_CONVEX_SITE_URL` + `/qa-credenti - `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 sırrı) - İ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 sırrı) - İ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ı) + - Etkin kira koruması: `{ status: "error", code: "LEASE_ACTIVE", ... }` +- `POST /admin/list` (yalnızca maintainer sırrı) - İ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 payload şekli: - `{ groupId: string, driverToken: string, sutToken: string }` -- `groupId`, sayısal bir Telegram sohbet kimliği dizgesi olmalıdır. -- `admin/add`, `kind: "telegram"` için bu biçimi doğrular ve hatalı yükleri reddeder. +- `groupId`, sayısal bir Telegram sohbet kimliği dizesi olmalıdır. +- `admin/add`, `kind: "telegram"` için bu şekli doğrular ve hatalı biçimlendirilmiş payload’ları reddeder. -### QA'ya bir channel ekleme +### QA’ya bir channel ekleme -Markdown QA sistemine bir channel eklemek tam olarak iki şey gerektirir: +Bir channel’ı markdown QA sistemine eklemek tam olarak iki şey gerektirir: 1. Channel için bir taşıma bağdaştırıcısı. 2. Channel sözleşmesini çalıştıran bir senaryo paketi. -Paylaşılan `qa-lab` ana makinesi akışın sahibi olabiliyorken yeni bir üst düzey QA komut kökü eklemeyin. +Paylaşılan `qa-lab` host’u akışı sahiplenebiliyorken yeni bir üst düzey QA komut kökü eklemeyin. -`qa-lab`, paylaşılan ana makine mekaniklerinin sahibidir: +`qa-lab`, paylaşılan host mekaniklerinin sahibidir: - `openclaw qa` komut kökü - paket başlatma ve kapatma -- çalışan eşzamanlılığı +- worker eşzamanlılığı - artifact yazımı -- rapor oluşturma +- rapor üretimi - senaryo yürütme - eski `qa-channel` senaryoları için uyumluluk takma adları -Çalıştırıcı plugin'leri taşıma sözleşmesinin sahibidir: +Runner Plugin’leri taşıma sözleşmesinin sahibidir: - `openclaw qa ` öğesinin paylaşılan `qa` kökü altına nasıl bağlandığı -- Gateway'in o taşıma için nasıl yapılandırıldığı -- hazır olma durumunun nasıl denetlendiği +- Gateway’in bu taşıma için nasıl yapılandırıldığı +- hazır oluşun nasıl denetlendiği - gelen olayların nasıl enjekte edildiği - giden mesajların nasıl gözlemlendiği -- dökümlerin ve normalize edilmiş taşıma durumunun nasıl açığa çıkarıldığı +- transkriptlerin ve normalize edilmiş taşıma durumunun nasıl açığa çıkarıldığı - taşıma destekli eylemlerin nasıl yürütüldüğü -- taşımaya özgü sıfırlama veya temizliğin nasıl işlendiği +- taşımaya özgü sıfırlama veya temizliğin nasıl ele alındığı -Yeni bir channel için en düşük benimseme çıtası şudur: +Yeni bir channel için minimum benimseme çıtası şudur: -1. Paylaşılan `qa` kökünün sahibi olarak `qa-lab`'ı koruyun. -2. Taşıma çalıştırıcısını paylaşılan `qa-lab` ana makine sınırında uygulayın. -3. Taşımaya özgü mekanikleri çalıştırıcı plugin'i veya channel 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` bildirmeli ve `runtime-api.ts` içinden eşleşen bir `qaRunnerCliRegistrations` dizisi dışa aktarmalıdır. - `runtime-api.ts` dosyasını hafif tutun; tembel CLI ve çalıştırıcı yürütmesi ayrı giriş noktalarının arkasında kalmalıdır. +1. Paylaşılan `qa` kökünün sahibi olarak `qa-lab`’ı koruyun. +2. Taşıma runner’ını paylaşılan `qa-lab` host seam’i üzerinde uygulayın. +3. Taşımaya özgü mekanikleri runner Plugin’i veya channel harness’i içinde tutun. +4. Runner’ı rakip bir kök komut kaydetmek yerine `openclaw qa ` olarak bağlayın. + Runner Plugin’leri `openclaw.plugin.json` içinde `qaRunners` bildirmeli ve `runtime-api.ts` dosyasından eşleşen bir `qaRunnerCliRegistrations` dizisi dışa aktarmalıdır. + `runtime-api.ts` dosyasını hafif tutun; tembel CLI ve runner yürütmesi ayrı giriş noktalarının arkasında kalmalıdır. 5. Temalı `qa/scenarios/` dizinleri 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. +7. Depo bilinçli bir geçiş yapmıyorsa mevcut uyumluluk takma adlarını çalışır durumda tutun. Karar kuralı katıdır: - Davranış `qa-lab` içinde bir kez ifade edilebiliyorsa, onu `qa-lab` içine koyun. -- Davranış bir channel taşımasına bağlıysa, onu o çalıştırıcı plugin'inde veya plugin harness'inde tutun. -- Bir senaryo birden fazla channel'ın kullanabileceği yeni bir yetenek gerektiriyorsa, `suite.ts` içinde channel'a özgü bir dal yerine genel bir yardımcı ekleyin. +- Davranış tek bir channel taşımasına bağlıysa, onu o runner Plugin’i veya Plugin harness’i içinde tutun. +- Bir senaryo birden fazla channel’ın kullanabileceği yeni bir yetenek gerektiriyorsa, `suite.ts` içinde channel’a özgü bir dal yerine genel bir yardımcı ekleyin. - Bir davranış yalnızca tek bir taşıma için anlamlıysa, senaryoyu taşımaya özgü tutun ve bunu senaryo sözleşmesinde açıkça belirtin. Yeni senaryolar için tercih edilen genel yardımcı adları şunlardır: @@ -270,7 +279,7 @@ Yeni senaryolar için tercih edilen genel yardımcı adları şunlardır: - `formatTransportTranscript` - `resetTransport` -Aşağıdakiler dahil, mevcut senaryolar için uyumluluk takma adları kullanılabilir olmaya devam eder: +Mevcut senaryolar için uyumluluk takma adları kullanılabilir olmaya devam eder; bunlara şunlar dahildir: - `waitForQaChannelReady` - `waitForOutboundMessage` @@ -279,7 +288,8 @@ Aşağıdakiler dahil, mevcut senaryolar için uyumluluk takma adları kullanıl - `resetBus` Yeni channel çalışmaları genel yardımcı adlarını kullanmalıdır. -Uyumluluk takma adları bir bayrak günü geçişinden kaçınmak için vardır; yeni senaryo yazımı için model olarak değil. +Uyumluluk takma adları, modelin +yeni senaryo yazımı için örnek olması amacıyla değil, bayrak günü tarzı bir geçişi önlemek için vardır. ## Test paketleri (ne nerede çalışır) @@ -288,153 +298,154 @@ Paketleri “artan gerçekçilik” (ve artan kararsızlık/maliyet) olarak dü ### Unit / integration (varsayılan) - Komut: `pnpm test` -- Yapılandırma: hedeflenmemiş çalıştırmalar `vitest.full-*.config.ts` parça kümesini kullanır ve paralel zamanlama için çok projeli parçaları proje başına yapılandırmalara genişletebilir -- Dosyalar: `src/**/*.test.ts`, `packages/**/*.test.ts`, `test/**/*.test.ts` altındaki core/unit envanterleri ve `vitest.unit.config.ts` kapsamındaki izinli `ui` node testleri +- Yapılandırma: hedefsiz çalıştırmalar `vitest.full-*.config.ts` shard kümesini kullanır ve paralel planlama için çok projeli shard’ları proje başına yapılandırmalara genişletebilir +- Dosyalar: `src/**/*.test.ts`, `packages/**/*.test.ts`, `test/**/*.test.ts` altındaki core/unit envanterleri ve `vitest.unit.config.ts` tarafından kapsanan allowlist’e alınmış `ui` node testleri - Kapsam: - Saf unit testleri - - Süreç içi entegrasyon testleri (Gateway kimlik doğrulama, yönlendirme, araç kullanımı, ayrıştırma, yapılandırma) + - Süreç içi integration testleri (Gateway auth, yönlendirme, araç kullanımı, ayrıştırma, yapılandırma) - Bilinen hatalar için deterministik regresyonlar - Beklentiler: - - CI'da çalışır - - Gerçek anahtarlar gerekmez + - CI’da çalışır + - Gerçek anahtar gerekmez - Hızlı ve kararlı olmalıdır - Projeler notu: - - Hedeflenmemiş `pnpm test` artık tek devasa yerel root-project süreci yerine on iki küçük parça yapılandırması (`core-unit-fast`, `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 kök `vitest.config.ts` proje grafiğini kullanır; çünkü çok parçalı 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 kök proje başlatma maliyetini ödemez. - - `pnpm test:changed`, diff yalnızca yönlendirilebilir kaynak/test dosyalarına dokunuyorsa değişen git yollarını aynı kapsamlı hatlara genişletir; config/setup düzenlemeleri ise yine geniş kök proje yeniden çalıştırmasına geri döner. - - `pnpm check:changed`, dar çalışmalar için normal akıllı yerel geçittir. Diff'i core, core testleri, extensions, extension testleri, apps, docs, sürüm meta verisi ve araçlama olarak sınıflandırır, ardından eşleşen typecheck/lint/test hatlarını çalıştırır. Genel Plugin SDK ve plugin-contract değişiklikleri, extensions bu core sözleşmelere bağlı olduğu için extension doğrulamasını da içerir. Yalnızca sürüm meta verisi içeren version bump'ları tam paket yerine hedefli sürüm/config/root-dependency denetimleri çalıştırır ve üst düzey sürüm alanı dışındaki package değişikliklerini reddeden bir koruma içerir. - - Agent'lar, komutlar, plugins, auto-reply yardımcıları, `plugin-sdk` ve benzeri saf yardımcı alanlardaki import hafif unit testleri, `test/setup-openclaw-runtime.ts` dosyasını atlayan `unit-fast` hattına yönlendirilir; durum bilgili/çalışma zamanı ağır dosyalar mevcut hatlarda kalır. - - Seçili `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 tüm ağır paketi yeniden çalıştırmaz. - - `auto-reply` artık üç özel kovaya 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 reply 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 kapsam düzeyini de koruyun. + - Hedefsiz `pnpm test` artık tek bir devasa yerel kök-proje süreci yerine on iki daha küçük shard yapılandırması (`core-unit-fast`, `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 düşürür ve auto-reply/extension işlerinin ilgisiz paketleri aç bırakmasını önler. + - `pnpm test --watch`, çok shard’lı bir izleme döngüsü pratik olmadığından hâlâ yerel kök `vitest.config.ts` proje grafiğini kullanır. + - `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 kök proje başlatma vergisini ödemez. + - `pnpm test:changed`, diff yalnızca yönlendirilebilir kaynak/test dosyalarına dokunuyorsa değişen git yollarını aynı kapsamlı hatlara genişletir; yapılandırma/kurulum düzenlemeleri ise yine de geniş kök-proje yeniden çalıştırmasına geri döner. + - `pnpm check:changed`, dar kapsamlı işler için normal akıllı yerel kapıdır. Diff’i core, core testleri, extensions, extension testleri, uygulamalar, dokümanlar, sürüm meta verisi ve araçlama olarak sınıflandırır, ardından eşleşen typecheck/lint/test hatlarını çalıştırır. Public Plugin SDK ve plugin-contract değişiklikleri, extension’lar bu core sözleşmelerine bağlı olduğu için extension doğrulamasını içerir. Yalnızca sürüm meta verisi içeren version bump’lar, tam paket yerine hedefli version/config/root-dependency denetimleri çalıştırır; üst düzey version alanı dışında paket değişikliklerini reddeden bir koruma ile. + - Ajanlar, komutlar, Plugin’ler, 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ğır dosyalar mevcut hatlarda kalır. + - Seçili `plugin-sdk` ve `commands` yardımcı kaynak dosyaları da changed-mode çalıştırmalarını bu hafif hatlardaki açık sibling testlere eşler; böylece yardımcı düzenlemeleri bu dizin için tam ağır paketin yeniden çalışmasını gerektirmez. + - `auto-reply` artık üç ayrılmış kovaya sahiptir: üst düzey core yardımcıları, üst düzey `reply.*` integration testleri ve `src/auto-reply/reply/**` alt ağacı. Bu, en ağır reply harness işini ucuz status/chunk/token testlerinden uzak tutar. +- Gömülü runner 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. - 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 sağlıklı tutun: + - Ayrıca gömülü runner integration 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 hâlâ gerçek - `run.ts` / `compact.ts` yolları üzerinden aktığını doğrular; yalnızca yardımcı - testleri bu entegrasyon yolları için yeterli bir yerine geçme değildir. + - Bu paketler, kapsamlı kimliklerin ve Compaction davranışının hâlâ + gerçek `run.ts` / `compact.ts` yolları üzerinden aktığını doğrular; yalnızca yardımcı testleri + bu integration 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` değerini sabitler ve kök projeler, e2e ve live yapılandırmalarında yalıtımsız çalıştırıcıyı kullanır. - - Kök UI hattı `jsdom` kurulumunu ve optimize edicisini korur, ancak artık o da paylaşılan yalıtımsız çalıştırıcı üzerinde çalışır. - - Her `pnpm test` parçası, 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 dalgalanmasını azaltmak için varsayılan olarak Vitest alt Node süreçlerine `--no-maglev` de ekler. Varsayılan V8 davranışıyla karşılaştırma yapmanız gerekirse `OPENCLAW_VITEST_ENABLE_MAGLEV=1` ayarlayın. + - Paylaşılan Vitest yapılandırması ayrıca `isolate: false` değerini sabitler ve kök projeler, e2e ve live yapılandırmaları arasında izole olmayan runner’ı kullanır. + - Kök UI hattı kendi `jsdom` kurulumu ve optimizer’ını korur, ancak artık paylaşılan izole olmayan runner üzerinde de ç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 Vitest alt Node süreçlerine varsayılan olarak `--no-maglev` de ekler. Varsayılan V8 davranışıyla karşılaştırma yapmanız gerekiyorsa `OPENCLAW_VITEST_ENABLE_MAGLEV=1` ayarlayın. - Hızlı yerel yineleme notu: - - `pnpm changed:lanes`, bir diff'in hangi mimari hatları tetiklediğini gösterir. - - Pre-commit hook, aşamalı format/lint işleminden sonra `pnpm check:changed --staged` çalıştırır; böylece yalnızca core commit'leri, herkese açık extension taraflı sözleşmelere dokunmadıkça extension test maliyetini ödemez. Yalnızca sürüm meta verisi commit'leri hedefli sürüm/config/root-dependency hattında kalır. - - Aynı aşamalı değişiklik kümesi eşit veya daha güçlü geçitlerle zaten doğrulandıysa, yalnızca changed-scope hook yeniden çalıştırmasını atlamak için `scripts/committer --fast "" ` kullanın. Aşamalı format/lint yine de çalışır. El tesliminizde tamamlanan geçitlerden bahsedin. Bu, ayrıca yalıtılmış kararsız bir hook hatası yeniden çalıştırılıp kapsamlı kanıtla geçtiyse de kabul edilebilir. - - `pnpm test:changed`, değişen yollar daha küçük bir pakete temiz biçimde eşleniyorsa 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 çalışan sınırıyla. - - Yerel çalışan otomatik ölçeklendirmesi artık kasıtlı olarak daha muhafazakârdır ve ana makine yük ortalaması zaten yüksek olduğunda da geri çekilir; böylece birden çok eşzamanlı Vitest çalıştırması varsayılan olarak daha az zarar verir. - - Temel Vitest yapılandırması, test kablolaması değiştiğinde changed-mode yeniden çalıştırmalar doğru kalsın diye 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 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ında değişen dosyalarla sınırlar. -- `pnpm test:perf:changed:bench -- --ref `, yönlendirilmiş `test:changed` çalıştırmasını o commit edilmiş diff için yerel kök proje yoluyla karşılaştırır ve duvar süresi ile macOS azami RSS'yi yazdırır. -- `pnpm test:perf:changed:bench -- --worktree`, değişen dosya listesini `scripts/test-projects.mjs` ve kök Vitest yapılandırması üzerinden yönlendirerek geçerli kirli çalışma ağacını kıyaslar. - - `pnpm test:perf:profile:main`, Vitest/Vite başlatma ve dönüşüm yükü için ana iş parçacığı CPU profili yazar. - - `pnpm test:perf:profile:runner`, dosya paralelliği devre dışıyken unit paketi için çalıştırıcı CPU+heap profilleri yazar. + - `pnpm changed:lanes`, bir diff’in hangi mimari hatları tetiklediğini gösterir. + - Pre-commit hook’u, aşamalı biçimlendirme/lint işleminden sonra `pnpm check:changed --staged` çalıştırır; bu nedenle yalnızca core commit’leri, public extension’a dönük sözleşmelere dokunmadıkça extension test maliyetini ödemez. Yalnızca sürüm meta verisi commit’leri hedefli version/config/root-dependency hattında kalır. + - Değişikliğin tam aşamalı kümesi eşit veya daha güçlü kapılarla zaten doğrulandıysa, yalnızca changed-scope hook yeniden çalıştırmasını atlamak için `scripts/committer --fast "" ` kullanın. Aşamalı format/lint yine çalışır. Tamamlanan kapıları handoff’unuzda belirtin. Bu ayrıca izole edilmiş kararsız bir hook hatası yeniden çalıştırılıp kapsamlı kanıtla geçtiğinde de kabul edilebilir. + - `pnpm test:changed`, değişen yollar temiz biçimde daha küçük bir pakete eşlenebildiğinde kapsamlı hatlar üzerinden yönlendirilir. + - `pnpm test:max` ve `pnpm test:changed:max`, yalnızca daha yüksek worker sınırıyla aynı yönlendirme davranışını korur. + - Yerel worker otomatik ölçekleme artık bilerek daha muhafazakârdır ve host 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 bağlama değiştiğinde doğru kalması için proje/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 çıkarma için tek bir açık ö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 çıkarma görünümünü `origin/main` sonrasındaki değişen dosyalarla sınırlar. +- `pnpm test:perf:changed:bench -- --ref `, yönlendirilmiş `test:changed` çalıştırmasını bu commit edilmiş diff için yerel kök-proje yoluyla karşılaştırır ve duvar saati süresini artı macOS azami RSS’yi yazdırır. +- `pnpm test:perf:changed:bench -- --worktree`, değişen dosya listesini `scripts/test-projects.mjs` ve kök Vitest yapılandırması üzerinden yönlendirerek geçerli kirli çalışma ağacını benchmark eder. + - `pnpm test:perf:profile:main`, Vitest/Vite başlatma ve dönüştürme yükü için bir ana iş parçacığı CPU profili yazar. + - `pnpm test:perf:profile:runner`, dosya paralelliği devre dışıyken unit paketi için runner CPU+heap profilleri yazar. -### Kararlılık (Gateway) +### Stabilite (Gateway) - Komut: `pnpm test:stability:gateway` -- Yapılandırma: `vitest.gateway.config.ts`, tek çalışana zorlanmış +- Yapılandırma: `vitest.gateway.config.ts`, tek worker’a zorlanmış - Kapsam: - - Tanılama varsayılan olarak etkinleştirilmiş gerçek bir loopback Gateway başlatır - - Tanılama olay yolu üzerinden sentetik Gateway mesajı, bellek ve büyük yük dalgalanması üretir + - Varsayılan olarak tanılama etkin gerçek bir loopback Gateway başlatır + - Tanılama olay yolu üzerinden sentetik Gateway mesajı, bellek ve büyük payload churn’ü sürer - Gateway WS RPC üzerinden `diagnostics.stability` sorgular - - Tanılama kararlılık paketi kalıcılık yardımcılarını kapsar + - Tanılama stabilite paketi kalıcılık yardımcılarını kapsar - Kaydedicinin sınırlı kaldığını, sentetik RSS örneklerinin baskı bütçesinin altında kaldığını ve oturum başına kuyruk derinliklerinin yeniden sıfıra indiğini doğrular - Beklentiler: - - CI için güvenli ve anahtarsızdır - - Kararlılık regresyonu takibi için dar bir hattır; tam Gateway paketinin yerine geçmez + - CI için güvenli ve anahtarsız + - Stabilite regresyonu takibi için dar bir hat; tam Gateway paketinin yerine geçmez ### E2E (Gateway smoke) - Komut: `pnpm test:e2e` - Yapılandırma: `vitest.e2e.config.ts` -- Dosyalar: `src/**/*.e2e.test.ts`, `test/**/*.e2e.test.ts` ve `extensions/` altındaki paketlenmiş plugin E2E testleri +- Dosyalar: `src/**/*.e2e.test.ts`, `test/**/*.e2e.test.ts` ve `extensions/` altındaki paketlenmiş Plugin E2E testleri - Çalışma zamanı varsayılanları: - - Deponun geri kalanıyla eşleşecek şekilde Vitest `threads` ve `isolate: false` kullanır. - - Uyarlanabilir çalışanlar kullanır (CI: en fazla 2, yerel: varsayılan 1). + - Deponun geri kalanıyla eşleşecek şekilde Vitest `threads` ile `isolate: false` kullanır. + - Uyarlamalı worker’lar kullanır (CI: en fazla 2, yerel: varsayılan olarak 1). - Konsol G/Ç yükünü azaltmak için varsayılan olarak sessiz modda çalışır. - Yararlı geçersiz kılmalar: - - Çalışan sayısını zorlamak için `OPENCLAW_E2E_WORKERS=` (üst sınır 16). + - Worker 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şleme ve daha ağır ağ iletişimi + - WebSocket/HTTP yüzeyleri, Node eşleştirmesi ve daha ağır ağ iletişimi - Beklentiler: - - CI'da çalışır (pipeline'da etkinleştirildiğinde) - - Gerçek anahtarlar gerekmez - - Unit testlerinden daha fazla hareketli parça vardır (daha yavaş olabilir) + - CI’da çalışır (iş hattında etkinleştirildiğinde) + - Gerçek anahtar gerekmez + - Unit testlerinden daha fazla hareketli parça içerir (daha yavaş olabilir) ### E2E: OpenShell backend smoke - Komut: `pnpm test:e2e:openshell` - Dosya: `extensions/openshell/src/backend.e2e.test.ts` - Kapsam: - - Docker aracılığıyla ana makinede yalıtılmış bir OpenShell Gateway başlatır - - Geçici bir yerel Dockerfile'dan bir sandbox oluşturur - - OpenClaw'un OpenShell backend'ini gerçek `sandbox ssh-config` + SSH exec üzerinden çalıştırır - - Sandbox fs köprüsü üzerinden uzaktan-kanonik dosya sistemi davranışını doğrular + - Host üzerinde Docker aracılığıyla izole bir OpenShell Gateway başlatır + - Geçici bir yerel Dockerfile’dan bir sandbox oluşturur + - Gerçek `sandbox ssh-config` + SSH exec üzerinden OpenClaw’ın OpenShell backend’ini çalıştırır + - Sandbox fs bridge üzerinden uzak-kanonik dosya sistemi davranışını 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 + - İzole `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 ikilisi 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 ikilisine veya wrapper betiğine işaret etmek için `OPENCLAW_E2E_OPENSHELL_COMMAND=/path/to/openshell` ### Live (gerçek sağlayıcılar + gerçek modeller) - Komut: `pnpm test:live` - Yapılandırma: `vitest.live.config.ts` -- Dosyalar: `src/**/*.live.test.ts`, `test/**/*.live.test.ts` ve `extensions/` altındaki paketlenmiş plugin live testleri +- Dosyalar: `src/**/*.live.test.ts`, `test/**/*.live.test.ts` ve `extensions/` altındaki paketlenmiş Plugin live testleri - 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ı, kimlik doğrulama sorunlarını ve hız sınırı davranışını yakalar + - “Bu sağlayıcı/model bugün gerçekten _çalışıyor mu_?” + - Sağlayıcı biçim değişikliklerini, araç çağırma tuhaflıklarını, auth sorunlarını ve hız sınırı davranışını yakalar - Beklentiler: - - Tasarım gereği CI-kararlı değildir (gerçek ağlar, gerçek sağlayıcı politikaları, kotalar, kesintiler) - - Para harcar / hız sınırlarını kullanır - - “Her şeyi” çalıştırmak yerine daraltılmış alt kümeleri çalıştırmak tercih edilir -- Live çalıştırmaları eksik API anahtarlarını almak için `~/.profile` dosyasını kaynak olarak yükler. -- Varsayılan olarak live çalıştırmaları yine de `HOME` dizinini yalıtır ve config/auth materyallerini geçici bir test ana dizinine kopyalar; böylece unit fixture'ları gerçek `~/.openclaw` dizininizi değiştiremez. -- Live testlerin gerçek ana dizininizi kullanması bilerek isteniyorsa 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 konuşmalarını susturur. Tam başlatma günlüklerini geri istiyorsanız `OPENCLAW_LIVE_TEST_QUIET=0` ayarlayın. -- API anahtarı döndürme (sağlayıcıya özgü): virgül/noktalı virgül biçiminde `*_API_KEYS` veya `*_API_KEY_1`, `*_API_KEY_2` ayarlayın (`OPENAI_API_KEYS`, `ANTHROPIC_API_KEYS`, `GEMINI_API_KEYS` gibi) ya da live başına geçersiz kılma için `OPENCLAW_LIVE_*_KEY` kullanın; testler hız sınırı yanıtlarında yeniden dener. + - Tasarım gereği CI’da kararlı değildir (gerçek ağlar, gerçek sağlayıcı politikaları, kotalar, kesintiler) + - Paraya mal olur / hız sınırlarını kullanır + - “Her şeyi” çalıştırmak yerine daraltılmış alt kümeler çalıştırmayı tercih edin +- Live çalıştırmalar, eksik API anahtarlarını almak için `~/.profile` dosyasını kaynak alır. +- Varsayılan olarak live çalıştırmalar yine de `HOME` dizinini izole eder ve yapılandırma/auth materyalini geçici bir test home dizinine kopyalar; böylece unit fixture’ları gerçek `~/.openclaw` dizininizi değiştiremez. +- Live 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 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ş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 live başına geçersiz kılma için `OPENCLAW_LIVE_*_KEY`; testler hız sınırı yanıtlarında yeniden dener. - İlerleme/Heartbeat çıktısı: - - Live paketleri artık ilerleme satırlarını stderr'e yazar; 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`, sağlayıcı/Gateway ilerleme satırlarının live çalıştırmalar sırasında anında akmasını sağlamak için Vitest konsol yakalamasını 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. + - Live paketleri artık ilerleme satırlarını stderr’e yazar; böylece Vitest konsol yakalaması sessizken bile uzun sağlayıcı çağrılarının etkin olduğu görünür. + - `vitest.live.config.ts`, sağlayıcı/Gateway ilerleme satırlarının live çalıştırmalar sırasında hemen akması için Vitest konsol yakalamasını devre dışı bırakır. + - Doğrudan model Heartbeat’lerini `OPENCLAW_LIVE_HEARTBEAT_MS` ile ayarlayın. + - Gateway/prob 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şimi / WS protokolü / eşlemeye dokunuyorsanız: `pnpm test:e2e` ekleyin -- “Botum çalışmıyor” / sağlayıcıya özgü hatalar / araç çağırma üzerinde hata ayıklıyorsanız: daraltılmış bir `pnpm test:live` çalıştırın +- Mantık/test düzenliyorsanız: `pnpm test` çalıştırın (ve çok şey değiştirdiyseniz `pnpm test:coverage`) +- Gateway ağ iletişimi / WS protokolü / eşleştirmeye dokunuyorsanız: `pnpm test:e2e` ekleyin +- “Botum çalışmıyor” / sağlayıcıya özgü başarısızlıklar / araç çağırma hatalarını ayıklıyorsanız: daraltılmış bir `pnpm test:live` çalıştırın ## Live: 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 ilan edilen 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/elle kurulum (paket uygulamayı kurmaz/çalıştırmaz/eşlemez). - - Seçilen Android Node için komut bazında Gateway `node.invoke` doğrulaması. + - Ön koşullu/elle kurulum (paket uygulamayı kurmaz/çalıştırmaz/eşleştirmez). + - Seçili Android Node için komut komut Gateway `node.invoke` doğrulaması. - Gerekli ön kurulum: - - Android uygulaması zaten Gateway'e bağlı ve eşlenmiş olmalı. + - Android uygulaması zaten bağlı + Gateway ile eşleştirilmiş olmalı. - Uygulama ön planda tutulmalı. - - Geçmesini beklediğiniz yetenekler için izinler/yakalama onayı verilmiş olmalı. + - 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`. @@ -442,10 +453,10 @@ Bu karar tablosunu kullanın: ## Live: model smoke (profil anahtarları) -Live testler, hataları yalıtabilmek için iki katmana ayrılmıştır: +Live testler, hataları izole edebilmemiz için iki katmana ayrılır: -- “Doğrudan model”, sağlayıcı/modelin verilen anahtarla en azından yanıt verebildiğini söyler. -- “Gateway smoke”, tam gateway+agent hattının o model için çalıştığını söyler (oturumlar, geçmiş, araçlar, sandbox ilkesi vb.). +- “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 politikası vb.). ### Katman 1: Doğrudan model tamamlama (Gateway yok) @@ -455,84 +466,84 @@ Live testler, hataları yalıtabilmek için iki katmana ayrılmıştır: - Kimlik bilgileriniz olan 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 modern için takma ad olan `all`) ayarlayın; aksi halde `pnpm test:live` odağını gateway smoke üzerinde tutmak için atlar -- Model seçimi nasıl yapılır: - - 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üllü allowlist) + - `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 modern için takma ad olan `all`) ayarlayın; aksi halde `pnpm test:live` komutunu Gateway smoke’a odaklı 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) + - `OPENCLAW_LIVE_MODELS=all`, modern allowlist’in takma adıdır + - veya `OPENCLAW_LIVE_MODELS="openai/gpt-5.4,anthropic/claude-opus-4-6,..."` (virgülle allowlist) - Modern/all taramaları varsayılan olarak 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 üst sınır için pozitif bir sayı ayarlayın. -- Sağlayıcı seçimi nasıl yapılır: - - `OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"` (virgüllü allowlist) +- Sağlayıcılar nasıl seçilir: + - `OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"` (virgülle allowlist) - Anahtarlar nereden gelir: - - Varsayılan olarak: profil deposu ve env yedekleri - - Yalnızca **profil deposu** zorlaması için `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1` ayarlayın + - Varsayılan olarak: profil deposu ve env geri dönüş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 agent hattı bozuk” durumlarını ayırır - - Küçük, yalıtılmış regresyonlar içerir (örnek: OpenAI Responses/Codex Responses muhakeme tekrar yürütme + araç çağrısı akışları) + - “Sağlayıcı API’si bozuk / anahtar geçersiz” ile “Gateway ajan hattı bozuk” durumlarını ayırır + - Küçük, izole regresyonlar içerir (örnek: OpenAI Responses/Codex Responses akıl yürütme tekrar oynatma + araç çağrısı akışları) -### Katman 2: Gateway + dev agent smoke (`"@openclaw"` gerçekte ne yapıyor) +### Katman 2: Gateway + dev ajan smoke (`@openclaw` gerçekte ne yapar) - Test: `src/gateway/gateway-models.profiles.live.test.ts` - Amaç: - - Süreç içi bir Gateway başlatmak + - Süreç içi bir Gateway ayağa kaldırmak - Bir `agent:dev:*` oturumu oluşturmak/yamalamak (çalıştırma başına model geçersiz kılma) - - Anahtarlı modeller üzerinde yineleme yapmak ve şunları doğrulamak: + - Anahtarlı modelleri yinelemek ve şunları doğrulamak: - “anlamlı” yanıt (araç yok) - - gerçek bir araç çağrısı çalışıyor (read probe) - - isteğe bağlı ek araç probeları (exec+read probe) + - gerçek bir araç çağrısı çalışıyor (`read` probu) + - isteğe bağlı ek araç probları (`exec+read` probu) - OpenAI regresyon yolları (yalnızca araç çağrısı → takip) çalışmaya devam ediyor -- Probe ayrıntıları (başarısızlıkları hızlı açıklayabilmeniz için): - - `read` probe: test çalışma alanına nonce dosyası yazar ve agent'tan bunu `read` ile okuyup nonce'u geri yankılamasını ister. - - `exec+read` probe: test agent'tan temp dosyaya nonce yazmasını `exec` ile ister, ardından bunu `read` ile geri okur. - - image probe: test oluşturulmuş bir PNG (kedi + rastgele kod) ekler ve modelin `cat ` döndürmesini bekler. +- Prob ayrıntıları (böylece başarısızlıkları hızlıca açıklayabilirsiniz): + - `read` probu: test çalışma alanına bir nonce dosyası yazar ve ajandan bunu `read` ile okuyup nonce’u geri yansıtmasını ister. + - `exec+read` probu: test ajandan `exec` ile geçici bir dosyaya nonce yazmasını, ardından bunu `read` ile geri okumasını ister. + - görüntü probu: test oluşturulmuş bir PNG’yi (kedi + rastgele kod) ekler ve modelden `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`) -- Model seçimi nasıl yapılır: + - `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 + - `OPENCLAW_LIVE_GATEWAY_MODELS=all`, modern allowlist’in takma adıdır - Veya daraltmak için `OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"` (veya virgüllü liste) ayarlayın - Modern/all Gateway taramaları varsayılan olarak 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 üst sınır için pozitif bir sayı ayarlayın. -- Sağlayıcı seçimi nasıl yapılır (“OpenRouter her şey” yaklaşımından kaçının): - - `OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"` (virgüllü allowlist) -- Araç + image probeları bu live testte her zaman açıktır: - - `read` probe + `exec+read` probe (araç stresi) - - image probe, model image girdi desteği ilan ettiğinde çalışır +- Sağlayıcılar nasıl seçilir (“her şey OpenRouter” olmasın diye): + - `OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"` (virgülle allowlist) +- Araç + görüntü probları bu live testte her zaman açıktır: + - `read` probu + `exec+read` probu (araç stresi) + - görüntü probu, model görüntü girdi desteği 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`) + - 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ü agent, modele çok modlu bir kullanıcı mesajı iletir + - Gateway ekleri `images[]` içine ayrıştırır (`src/gateway/server-methods/agent.ts` + `src/gateway/chat-attachments.ts`) + - Gömülü ajan 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 (ve tam `provider/model` kimliklerini) görmek 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 ``` -## Live: CLI backend smoke (Claude, Codex, Gemini veya diğer yerel CLI'ler) +## Live: CLI backend smoke (Claude, Codex, Gemini veya diğer yerel CLI’lar) - Test: `src/gateway/gateway-cli-backend.live.test.ts` -- Amaç: varsayılan config'inize dokunmadan, Gateway + agent hattını yerel bir CLI backend kullanarak doğrulamak. -- Backend'e özgü smoke varsayılanları, sahibi olan extension'ın `cli-backend.ts` tanımı içinde bulunur. +- Amaç: varsayılan yapılandırmanıza dokunmadan, yerel bir CLI backend kullanarak Gateway + ajan hattını doğrulamak. +- Backend’e özgü smoke varsayılanları, sahibi olan extension’ın `cli-backend.ts` tanımında bulunur. - 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/image davranışı, sahibi olan CLI backend plugin meta verisinden gelir. + - Komut/argüman/görüntü 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 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` ayarlı olduğunda image argümanlarının nasıl geçirileceğini kontrol etmek için `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"` (veya `"list"`). - - İkinci bir dönüş göndermek ve devam 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 geçiş hedefini desteklediğinde zorla açmak için `1` ayarlayın). + - Gerçek bir görüntü eki göndermek için `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=1` (yollar prompt içine enjekte edilir). + - Görüntü dosyası yollarını prompt enjeksiyonu yerine CLI argümanları olarak geçirmek için `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"`. + - `IMAGE_ARG` ayarlı olduğunda görüntü argümanlarının nasıl geçirileceğini kontrol etmek için `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"` (veya `"list"`). + - İkinci bir dönüş 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üreklilik probunu devre dışı bırakmak için `OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=0` (seçili model bir geçiş hedefini desteklediğinde bunu zorla açmak için `1` ayarlayın). Örnek: @@ -560,26 +571,26 @@ pnpm test:docker:live-cli-backend:gemini Notlar: - Docker çalıştırıcısı `scripts/test-live-cli-backend-docker.sh` konumundadır. -- Live CLI-backend smoke testini depo Docker imajı içinde root olmayan `node` kullanıcısı olarak çalıştırır. -- CLI smoke meta verisini sahibi olan extension'dan çözümler, ardından eşleşen Linux CLI paketini (`@anthropic-ai/claude-code`, `@openai/codex` veya `@google/gemini-cli`) `OPENCLAW_DOCKER_CLI_TOOLS_DIR` altında önbellekli 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; bunun için ya `claudeAiOauth.subscriptionType` içeren `~/.claude/.credentials.json` ya da `claude setup-token` üzerinden `CLAUDE_CODE_OAUTH_TOKEN` gerekir. Önce Docker içinde doğrudan `claude -p` çalıştığını kanıtlar, ardından Anthropic API anahtarı env değişkenlerini korumadan iki Gateway CLI-backend dönüşü ç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 faturalaması üzerinden yönlendirdiği için varsayılan olarak Claude MCP/tool ve image probelarını devre dışı bırakır. -- Live CLI-backend smoke artık Claude, Codex ve Gemini için aynı uçtan uca akışı çalıştırır: metin dönüşü, image sınıflandırma dönüşü, 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 devam eden oturumun hâlâ önceki bir notu hatırladığını doğrular. +- Canlı CLI-backend smoke testini depo Docker görüntüsü içinde root olmayan `node` kullanıcısı olarak çalıştırır. +- Sahibi olan extension’dan CLI smoke meta verisini çözümler, ardından eşleşen Linux CLI paketini (`@anthropic-ai/claude-code`, `@openai/codex` veya `@google/gemini-cli`) `OPENCLAW_DOCKER_CLI_TOOLS_DIR` altında önbelleklenmiş yazılabilir bir öneke kurar (varsayılan: `~/.cache/openclaw/docker-cli-tools`). +- `pnpm test:docker:live-cli-backend:claude-subscription`, ya `~/.claude/.credentials.json` içindeki `claudeAiOauth.subscriptionType` aracılığıyla 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` çalıştığını kanıtlar, ardından Anthropic API anahtarı env değişkenlerini korumadan iki Gateway CLI-backend dönüşü ç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ına yönlendirdiği için Claude MCP/tool ve görüntü problarını varsayılan olarak devre dışı bırakır. +- Live CLI-backend smoke artık Claude, Codex ve Gemini için aynı uçtan uca akışı çalıştırır: metin dönüşü, görüntü sınıflandırma dönüşü, 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 devam ettirilen oturumun daha önceki bir notu hâlâ hatırladığını doğrular. -## Live: ACP bind smoke (`/acp spawn ... --bind here`) +## Live: ACP bağlama smoke testi (`/acp spawn ... --bind here`) - Test: `src/gateway/gateway-acp-bind.live.test.ts` -- Amaç: live bir ACP agent ile gerçek ACP konuşma-bind akışını doğrulamak: +- Amaç: live bir ACP ajanıyla gerçek ACP konuşma-bağlama 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 - - takip mesajının bağlı ACP oturum dökümüne düştüğünü doğrula + - aynı konuşma üzerinde normal bir takip mesajı gönder + - takibin bağlı ACP oturum transkriptine düştüğünü doğrula - Etkinleştirme: - `pnpm test:live src/gateway/gateway-acp-bind.live.test.ts` - `OPENCLAW_LIVE_ACP_BIND=1` - Varsayılanlar: - - Docker içindeki ACP agent'ları: `claude,codex,gemini` - - Doğrudan `pnpm test:live ...` için ACP agent'ı: `claude` + - Docker içindeki ACP ajanları: `claude,codex,gemini` + - Doğrudan `pnpm test:live ...` için ACP ajanı: `claude` - Sentetik channel: Slack DM tarzı konuşma bağlamı - ACP backend: `acpx` - Geçersiz kılmalar: @@ -590,8 +601,8 @@ Notlar: - `OPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND='npx -y @agentclientprotocol/claude-agent-acp@'` - `OPENCLAW_LIVE_ACP_BIND_CODEX_MODEL=gpt-5.4` - Notlar: - - Bu hat, testlerin message-channel bağlamını haricen teslim ediyormuş gibi yapmadan ekleyebilmesi için yöneticiye özel sentetik originating-route alanlarıyla Gateway `chat.send` yüzeyini kullanır. - - `OPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND` ayarlı değilse, test seçilen ACP harness agent için gömülü `acpx` plugin'inin yerleşik agent kaydını kullanır. + - Bu hat, testlerin message-channel bağlamını dışarıya teslim ediyormuş gibi yapmadan ekleyebilmesi için yalnızca yöneticiye açık sentetik originating-route alanlarıyla Gateway `chat.send` yüzeyini kullanır. + - `OPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND` ayarlı olmadığında test, seçilen ACP harness ajanı için gömülü `acpx` Plugin’inin yerleşik ajan kaydını kullanır. Örnek: @@ -607,7 +618,7 @@ Docker tarifi: pnpm test:docker:live-acp-bind ``` -Tek-agent Docker tarifleri: +Tek ajanlı Docker tarifleri: ```bash pnpm test:docker:live-acp-bind:claude @@ -618,34 +629,35 @@ 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 testini tüm desteklenen live CLI agent'larına karşı sırayla çalıştırır: `claude`, `codex`, sonra `gemini`. +- Varsayılan olarak ACP bağlama smoke testini desteklenen tüm live CLI ajanları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 öneğine kurar, ardından istenen live CLI'yi (`@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 alır, eşleşen CLI auth materyalini container içine hazırlar, yazılabilir bir npm önekine `acpx` kurar, ardından eksikse istenen live CLI’ı (`@anthropic-ai/claude-code`, `@openai/codex` veya `@google/gemini-cli`) kurar. +- Docker içinde çalıştırıcı `OPENCLAW_LIVE_ACP_BIND_ACPX_COMMAND=$HOME/.npm-global/bin/acpx` ayarlar; böylece acpx, kaynak alınan profildeki sağlayıcı env değişkenlerini alt harness CLI için kullanılabilir tutar. ## Live: Codex app-server harness smoke -- Amaç: plugin sahibi Codex harness'ini normal Gateway +- Amaç: Plugin’in sahibi olduğu Codex harness’i normal Gateway `agent` yöntemi üzerinden doğrulamak: - - paketlenmiş `codex` plugin'ini yükle + - paketlenmiş `codex` Plugin’ini yükle - `OPENCLAW_AGENT_RUNTIME=codex` seç - - `codex/gpt-5.4` için ilk Gateway agent dönüşünü gönder - - aynı OpenClaw oturumuna ikinci bir dönüş gönder ve app-server - thread'inin devam edebildiğini doğrula - - aynı Gateway komut yolu üzerinden `/codex status` ve `/codex models` - komutlarını çalıştır - - isteğe bağlı olarak Guardian tarafından incelenen iki yükseltilmiş shell probe'u çalıştır: onaylanması gereken zararsız bir - komut ve agent'ın geri sorması için reddedilmesi gereken sahte bir gizli veri yükleme işlemi + - `codex/gpt-5.4` için ilk Gateway ajan dönüşünü gönder + - aynı OpenClaw oturumuna ikinci dönüşü gönder ve app-server + thread’inin devam edebildiğini doğrula + - aynı Gateway komut + yolu üzerinden `/codex status` ve `/codex models` çalıştır + - isteğe bağlı olarak Guardian tarafından incelenen iki yükseltilmiş shell probu çalıştır: + onaylanması gereken bir zararsız komut ve ajanın geri sorması için + reddedilmesi gereken sahte bir sır yükleme denemesi - 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ı image probe: `OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1` -- İsteğe bağlı MCP/tool probe: `OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1` -- İsteğe bağlı Guardian probe: `OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1` +- İsteğe bağlı görüntü probu: `OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1` +- İsteğe bağlı MCP/araç probu: `OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1` +- İsteğe bağlı Guardian probu: `OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1` - Smoke testi `OPENCLAW_AGENT_HARNESS_FALLBACK=none` ayarlar; böylece bozuk bir Codex - harness'i sessizce PI'ye düşerek başarılı görünemez. -- Auth: shell/profile üzerinden `OPENAI_API_KEY` ve isteğe bağlı olarak kopyalanmış - `~/.codex/auth.json` ile `~/.codex/config.toml` + harness’i sessizce PI’ye geri düşerek başarılı olamaz. +- Auth: shell/profilden `OPENAI_API_KEY`, ayrıca isteğe bağlı kopyalanmış + `~/.codex/auth.json` ve `~/.codex/config.toml` Yerel tarif: @@ -669,20 +681,20 @@ pnpm test:docker:live-codex-harness Docker notları: - Docker çalıştırıcısı `scripts/test-live-codex-harness-docker.sh` konumundadır. -- Bağlı `~/.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ğlı bir npm - önekine kurar, kaynak ağacı hazırlar ve ardından yalnızca Codex-harness live testini çalıştırır. -- Docker varsayılan olarak image, MCP/tool ve Guardian probelarını etkinleştirir. Daha dar bir hata ayıklama - çalıştırması gerektiğinde `OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0` veya - `OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0` ya da +- Bağlanmış `~/.profile` dosyasını kaynak alır, `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ını hazırlar, ardından yalnızca Codex-harness live testini çalıştırır. +- Docker, görüntü, MCP/araç ve Guardian probları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` veya `OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0` ayarlayın. -- Docker ayrıca `OPENCLAW_AGENT_HARNESS_FALLBACK=none` dışa aktarır; bu da live - test yapılandırmasıyla eşleşir, böylece `openai-codex/*` veya PI fallback bir Codex harness +- Docker ayrıca `OPENCLAW_AGENT_HARNESS_FALLBACK=none` dışa aktarır; bu, live + test yapılandırmasıyla eşleşir, böylece `openai-codex/*` veya PI geri dönüşü bir Codex harness regresyonunu gizleyemez. ### Önerilen live tarifleri -Dar, açık allowlist'ler en hızlı ve en az kararsız 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` @@ -690,7 +702,7 @@ Dar, açık allowlist'ler en hızlı ve en az kararsız 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 fazla 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): @@ -699,20 +711,20 @@ Dar, açık allowlist'ler en hızlı ve en az kararsız olanlardır: Notlar: -- `google/...` Gemini API'sini kullanır (API anahtarı). -- `google-antigravity/...` Antigravity OAuth köprüsünü kullanır (Cloud Code Assist tarzı agent endpoint'i). -- `google-gemini-cli/...` makinenizdeki yerel Gemini CLI'yi kullanır (ayrı auth + araçlama tuhaflıkları). -- Gemini API ve Gemini CLI: - - 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` ikilisine shell çıkışı yapar; kendi auth yapısına sahiptir ve farklı davranabilir (streaming/tool desteği/sürüm kayması). +- `google/...`, Gemini API’sini 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çlama tuhaflıkları). +- Gemini API ile Gemini CLI 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’u vardır ve farklı davranabilir (akış, araç desteği, sürüm kayması). -## Live: model matrisi (neyi kapsıyoruz) +## Live: model matrisi (neleri kapsıyoruz) -Sabit bir “CI model listesi” yoktur (live isteğe bağlıdır), ancak anahtarları olan bir geliştirme makinesinde düzenli olarak kapsanması **önerilen** modeller bunlardır. +Sabit bir “CI model listesi” yoktur (live isteğe bağlıdır), ancak bunlar anahtarları olan bir geliştirme makinesinde düzenli olarak kapsanması **önerilen** modellerdir. -### Modern smoke kümesi (araç çağırma + image) +### Modern smoke kümesi (araç çağırma + görüntü) -Bu, çalışır durumda tutmayı beklediğimiz “yaygın modeller” çalıştırmasıdır: +Çalışır durumda kalmasını 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` @@ -722,12 +734,12 @@ Bu, çalışır durumda tutmayı beklediğimiz “yaygın modeller” çalışt - Z.AI (GLM): `zai/glm-4.7` - MiniMax: `minimax/MiniMax-M2.7` -Araçlar + image ile Gateway smoke çalıştırması: +Araçlar + görüntü ile Gateway smoke testi çalıştırın: `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 çizgi: araç çağırma (Read + isteğe bağlı Exec) +### Temel seviye: araç çağırma (Read + isteğe bağlı Exec) -Her sağlayıcı ailesinden en az birini 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`) @@ -737,79 +749,79 @@ Her sağlayıcı ailesinden en az birini seçin: İsteğe bağlı ek kapsam (olsa iyi olur): -- xAI: `xai/grok-4` (veya mevcut en yeni sürüm) +- xAI: `xai/grok-4` (veya mevcut en güncel sürüm) - 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: image gönderme (ek → çok modlu mesaj) +### Vision: görüntü gönderimi (ek → çok kipli mesaj) -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.). +Görüntü probunu çalıştırmak için `OPENCLAW_LIVE_GATEWAY_MODELS` içine en az bir görüntü yetenekli model ekleyin (Claude/Gemini/OpenAI’nin görüntü destekli varyantları vb.). -### Toplayıcılar / alternatif Gateway'ler +### Toplayıcılar / alternatif Gateway’ler Anahtarlarınız etkinse, şunlar üzerinden test etmeyi de destekliyoruz: -- OpenRouter: `openrouter/...` (yüzlerce model; tool+image yetenekli adayları bulmak için `openclaw models scan` kullanın) -- OpenCode: Zen için `opencode/...` ve Go için `opencode-go/...` (auth: `OPENCODE_API_KEY` / `OPENCODE_ZEN_API_KEY`) +- OpenRouter: `openrouter/...` (yüzlerce model; araç+görüntü yetenekli adayları bulmak için `openclaw models scan` kullanın) +- OpenCode: Zen için `opencode/...`, Go için `opencode-go/...` (`OPENCODE_API_KEY` / `OPENCODE_ZEN_API_KEY` ile auth) -Live matrisine ekleyebileceğiniz daha fazla sağlayıcı (kimlik bilgileriniz/config'iniz varsa): +Live matrisine dahil edebileceğiniz daha fazla sağlayıcı (kimlik bilgileriniz/yapılandırmanız 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 endpoint'ler): `minimax` (bulut/API) ve ayrıca OpenAI/Anthropic uyumlu herhangi bir proxy (LM Studio, vLLM, LiteLLM vb.) +- `models.providers` üzerinden (özel uç noktalar): `minimax` (bulut/API), ayrıca herhangi bir OpenAI/Anthropic uyumlu proxy (LM Studio, vLLM, LiteLLM vb.) -İpucu: Dokümanlarda “tüm modelleri” sabit kodlamaya çalışmayın. Otoriter liste, makinenizde `discoverModels(...)` ne döndürüyorsa ve hangi anahtarlar mevcutsa odur. +İpucu: dokümanlarda “tüm modelleri” sabit kodlamaya çalışmayın. Otoritatif liste, makinenizde `discoverModels(...)` ne döndürüyorsa ve hangi anahtarlar mevcutsa odur. ## Kimlik bilgileri (asla commit etmeyin) -Live testler kimlik bilgilerini CLI ile aynı şekilde keşfeder. Pratik sonuçlar: +Live testler kimlik bilgilerini CLI ile aynı şekilde keşfeder. Pratik sonuçları: - CLI çalışıyorsa, live testler de aynı anahtarları bulmalıdır. -- Bir live test “kimlik bilgisi yok” diyorsa, bunu `openclaw models list` / model seçimi hata ayıklamasıyla aynı şekilde ayıklayın. +- Bir live test “kimlik bilgisi yok” diyorsa, bunu `openclaw models list` / model seçimini nasıl hata ayıklıyorsanız aynı şekilde ayıklayın. -- Agent başına auth profilleri: `~/.openclaw/agents//agent/auth-profiles.json` (live testlerde “profil anahtarları” denince kastedilen budur) -- Config: `~/.openclaw/openclaw.json` (veya `OPENCLAW_CONFIG_PATH`) -- Eski durum dizini: `~/.openclaw/credentials/` (varsa hazırlanan live ana dizinine kopyalanır, ancak ana profil-anahtarı deposu değildir) -- Live yerel çalıştırmalar varsayılan olarak etkin config'i, agent başına `auth-profiles.json` dosyalarını, eski `credentials/` dizinini ve desteklenen harici CLI auth dizinlerini geçici bir test ana dizinine kopyalar; hazırlanan live ana dizinleri `workspace/` ve `sandboxes/` dizinlerini atlar ve `agents.*.workspace` / `agentDir` yol geçersiz kılmaları kaldırılır; böylece probelar gerçek ana makine çalışma alanınızdan uzak durur. +- Ajan başına auth profilleri: `~/.openclaw/agents//agent/auth-profiles.json` (live testlerde “profil anahtarları” denirken kastedilen budur) +- Yapılandırma: `~/.openclaw/openclaw.json` (veya `OPENCLAW_CONFIG_PATH`) +- Eski durum dizini: `~/.openclaw/credentials/` (varsa hazırlanmış live home dizinine kopyalanır, ancak ana profil-anahtarı deposu değildir) +- Live 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 dizinine kopyalar; hazırlanmış live home dizinleri `workspace/` ve `sandboxes/` öğelerini atlar, ayrıca probların gerçek host çalışma alanınızdan uzak kalması için `agents.*.workspace` / `agentDir` yol geçersiz kılmaları temizlenir. -Env anahtarlarına güvenmek istiyorsanız (`~/.profile` içinde dışa aktarılmış olanlar gibi), yerel testleri `source ~/.profile` sonrasında çalıştırın veya aşağıdaki Docker çalıştırıcılarını kullanın (bunlar `~/.profile` dosyasını container içine bağlayabilir). +Env anahtarlarına güvenmek istiyorsanız (örneğin `~/.profile` içinde dışa aktarılmışsa), `source ~/.profile` sonrasında yerel testleri çalıştırın veya aşağıdaki Docker çalıştırıcılarını kullanın (bunlar `~/.profile` dosyasını container içine bağlayabilir). ## Deepgram live (ses transkripsiyonu) - Test: `extensions/deepgram/audio.live.test.ts` - Etkinleştirme: `DEEPGRAM_API_KEY=... DEEPGRAM_LIVE_TEST=1 pnpm test:live extensions/deepgram/audio.live.test.ts` -## BytePlus coding plan live +## BytePlus kodlama planı live - Test: `extensions/byteplus/live.test.ts` - Etkinleştirme: `BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live extensions/byteplus/live.test.ts` - İsteğe bağlı model geçersiz kılma: `BYTEPLUS_CODING_MODEL=ark-code-latest` -## ComfyUI workflow media live +## ComfyUI iş akışı medya live - 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 image, 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ını değiştirdikten sonra kullanışlıdır + - Paketlenmiş comfy görüntü, video ve `music_generate` yollarını çalıştırır + - `models.providers.comfy.` yapılandırılmadıkça her yeteneği atlar + - Comfy iş akışı gönderimi, yoklama, indirmeler veya Plugin kaydı değiştirildikten sonra kullanışlıdır -## Image generation live +## Görüntü üretimi live - Test: `test/image-generation.runtime.live.test.ts` - Komut: `pnpm test:live test/image-generation.runtime.live.test.ts` - Harness: `pnpm test:live:media image` - Kapsam: - - Kayıtlı her image-generation sağlayıcı plugin'ini listeler - - Probe çalıştırmadan önce eksik sağlayıcı env değişkenlerini giriş shell'inizden (`~/.profile`) yükler + - Kayıtlı tüm görüntü üretimi sağlayıcı Plugin’lerini listeler + - Problamadan önce eksik sağlayıcı env değişkenlerini giriş shell’inizden (`~/.profile`) yükler - Varsayılan olarak saklanan auth profillerinden önce live/env API anahtarlarını kullanır; böylece `auth-profiles.json` içindeki eski test anahtarları gerçek shell kimlik bilgilerini maskelemez - - Kullanılabilir auth/profil/model olmayan sağlayıcıları atlar - - Standart image-generation varyantlarını paylaşılan runtime yeteneği üzerinden çalıştırır: + - Kullanılabilir auth/profil/modeli olmayan sağlayıcıları atlar + - Paylaşılan çalışma zamanı yeteneği üzerinden stok görüntü üretimi varyantlarını çalıştırır: - `google:flash-generate` - `google:pro-generate` - `google:pro-edit` - `openai:default-generate` -- Kapsanan mevcut paketlenmiş sağlayıcılar: +- Şu anda kapsanan paketlenmiş sağlayıcılar: - `fal` - `google` - `minimax` @@ -821,22 +833,22 @@ Env anahtarlarına güvenmek istiyorsanız (`~/.profile` içinde dışa aktarıl - `OPENCLAW_LIVE_IMAGE_GENERATION_MODELS="openai/gpt-image-2,google/gemini-3.1-flash-image-preview,xai/grok-imagine-image"` - `OPENCLAW_LIVE_IMAGE_GENERATION_CASES="google:flash-generate,google:pro-edit,xai:default-generate,xai:default-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` + - Profil deposu auth’unu zorlamak ve yalnızca env geçersiz kılmalarını yok saymak için `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1` -## Music generation live +## Müzik üretimi live - 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ş music-generation sağlayıcı yolunu çalıştırır - - Şu anda Google ve MiniMax'ı kapsar - - Probe çalıştırmadan önce sağlayıcı env değişkenlerini giriş shell'inizden (`~/.profile`) yükler + - Paylaşılan paketlenmiş müzik üretimi sağlayıcı yolunu çalıştırır + - Şu anda Google ve MiniMax’ı kapsar + - Problamadan önce sağlayıcı env değişkenlerini giriş shell’inizden (`~/.profile`) yükler - Varsayılan olarak saklanan auth profillerinden önce live/env API anahtarlarını kullanır; böylece `auth-profiles.json` içindeki eski test anahtarları gerçek shell kimlik bilgilerini maskelemez - - Kullanılabilir auth/profil/model olmayan sağlayıcıları atlar - - Mevcut olduğunda bildirilen iki runtime modunu da çalıştırır: - - Yalnızca prompt girdisiyle `generate` - - Sağlayıcı `capabilities.edit.enabled` bildiriyorsa `edit` + - Kullanılabilir auth/profil/modeli olmayan sağlayıcıları atlar + - Mevcut olduğunda bildirilen her iki çalışma zamanı modunu da çalıştırır: + - yalnızca prompt girdili `generate` + - sağlayıcı `capabilities.edit.enabled` bildirdiğinde `edit` - Mevcut paylaşılan hat kapsamı: - `google`: `generate`, `edit` - `minimax`: `generate` @@ -845,50 +857,50 @@ Env anahtarlarına güvenmek istiyorsanız (`~/.profile` içinde dışa aktarıl - `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` + - Profil deposu auth’unu zorlamak ve yalnızca env geçersiz kılmalarını yok saymak için `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1` -## Video generation live +## Video üretimi live - 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-generation sağlayıcı yolunu çalıştırır - - Varsayılan olarak sürüm için güvenli smoke yolunu kullanır: FAL dışı sağlayıcılar, sağlayıcı başına bir text-to-video isteği, bir saniyelik ıstakoz prompt'u ve `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS` üzerinden sağlayıcı başına işlem sınırı (varsayılan `180000`) - - Sağlayıcı tarafı kuyruk gecikmesi sürüm süresine baskın gelebileceği için FAL varsayılan olarak atlanır; açıkça çalıştırmak için `--video-providers fal` veya `OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"` verin - - Probe çalıştırmadan önce sağlayıcı env değişkenlerini giriş shell'inizden (`~/.profile`) yükler + - Paylaşılan paketlenmiş video üretimi sağlayıcı yolunu çalıştırır + - Varsayılan olarak sürüm için güvenli smoke yolunu kullanır: FAL dışı sağlayıcılar, sağlayıcı başına bir text-to-video isteği, bir saniyelik ıstakoz prompt’u ve `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS` üzerinden sağlayıcı başına işlem sınırı (varsayılan `180000`) + - Sağlayıcı tarafı kuyruk gecikmesi sürüm süresine baskın çıkabildiği için FAL’i varsayılan olarak atlar; bunu açıkça çalıştırmak için `--video-providers fal` veya `OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"` geçin + - Problamadan önce sağlayıcı env değişkenlerini giriş shell’inizden (`~/.profile`) yükler - Varsayılan olarak saklanan auth profillerinden önce live/env API anahtarlarını kullanır; böylece `auth-profiles.json` içindeki eski test anahtarları gerçek shell kimlik bilgilerini maskelemez - - Kullanılabilir auth/profil/model olmayan sağlayıcıları atlar + - Kullanılabilir auth/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üştürme 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 buffer destekli yerel image girdisini kabul ediyorsa `imageToVideo` - - Sağlayıcı `capabilities.videoToVideo.enabled` bildiriyorsa ve seçilen sağlayıcı/model paylaşılan taramada buffer destekli yerel video girdisini kabul ediyorsa `videoToVideo` - - Paylaşılan taramadaki mevcut bildirilen ama atlanan `imageToVideo` sağlayıcıları: - - `vydra`, çünkü paketlenmiş `veo3` yalnızca metin destekler ve paketlenmiş `kling` uzak image URL'si gerektirir + - Mevcut 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` bildirdiğinde ve seçilen sağlayıcı/model, paylaşılan taramada buffer destekli yerel görüntü girdisini kabul ettiğinde `imageToVideo` + - Sağlayıcı `capabilities.videoToVideo.enabled` bildirdiğinde ve seçilen sağlayıcı/model, paylaşılan taramada buffer destekli yerel video girdisini kabul ettiğinde `videoToVideo` + - Paylaşılan taramada şu anda bildirilmiş ama atlanan `imageToVideo` sağlayıcıları: + - `vydra`, çünkü paketlenmiş `veo3` yalnızca metindir ve paketlenmiş `kling` uzak bir görüntü 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 `veo3` text-to-video ile uzak image URL fixture kullanan bir `kling` hattı çalıştırır + - bu dosya varsayılan olarak bir `veo3` text-to-video hattı ve uzak görüntü URL fixture’ı kullanan bir `kling` hattı çalıştırır - Mevcut `videoToVideo` live kapsamı: - yalnızca seçilen model `runway/gen4_aleph` olduğunda `runway` - - Paylaşılan taramadaki mevcut 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 buffer destekli girdi kullanıyor ve bu yol paylaşılan taramada kabul edilmiyor - - `openai`, çünkü mevcut paylaşılan hat org'a özgü video inpaint/remix erişim garantilerine sahip değil + - Paylaşılan taramada şu anda bildirilmiş ama atlanan `videoToVideo` sağlayıcıları: + - `alibaba`, `qwen`, `xai`, çünkü bu yollar şu anda uzak `http(s)` / MP4 referans URL’leri gerektirir + - `google`, çünkü mevcut paylaşılan Gemini/Veo hattı yerel buffer destekli girdi kullanır ve bu yol paylaşılan taramada kabul edilmez + - `openai`, çünkü mevcut paylaşılan hat org’a özgü video inpaint/remix erişim garantilerinden yoksundur - İ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"` - - Varsayılan taramadaki her sağlayıcıyı, FAL dahil, dahil etmek 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` + - 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ı düşürmek üzere `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000` - İ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` + - Profil deposu auth’unu zorlamak ve yalnızca env geçersiz kılmalarını yok saymak için `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1` -## Media live harness +## Medya live harness - Komut: `pnpm test:live:media` - Amaç: - - Paylaşılan image, music ve video live paketlerini tek bir depoya özgü giriş noktası üzerinden çalıştırır + - Paylaşılan görüntü, müzik ve video live paketlerini depo-yerel tek bir 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 şu anda kullanılabilir auth'a sahip sağlayıcılara otomatik olarak daraltır + - Varsayılan olarak her paketi şu anda kullanılabilir auth’a sahip sağlayıcılara otomatik 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` @@ -896,157 +908,155 @@ Env anahtarlarına güvenmek istiyorsanız (`~/.profile` içinde dışa aktarıl - `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” denetimleri) +## Docker çalıştırıcıları (isteğe bağlı “Linux’ta çalışıyor” denetimleri) Bu Docker çalıştırıcıları iki kovaya ayrılır: -- Live-model çalıştırıcıları: `test:docker:live-models` ve `test:docker:live-gateway`, yalnızca eşleşen profil-anahtarı live 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 config dizininizi ve çalışma alanınızı bağlar (ve bağlıysa `~/.profile` dosyasını kaynak olarak yükler). Eşleşen yerel giriş noktaları `test:live:models-profiles` ve `test:live:gateway-profiles` öğeleridir. -- Docker live ç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: +- Live-model çalıştırıcıları: `test:docker:live-models` ve `test:docker:live-gateway`, depo Docker görüntüsü içinde yalnızca eşleşen profil-anahtarı live dosyasını ç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ğlanmışsa `~/.profile` dosyasını kaynak alır). Eşleşen yerel giriş noktaları `test:live:models-profiles` ve `test:live:gateway-profiles` şeklindedir. +- Docker live çalıştırıcıları varsayılan olarak daha küçük bir smoke üst 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` kullanır 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` kullanır. Daha büyük kapsamlı taramayı - özellikle istediğinizde bu env değişkenlerini geçersiz kılın. -- `test:docker:all`, live Docker imajını bir kez `test:docker:live-build` ile oluşturur, sonra bunu iki live Docker hattı için yeniden kullanır. Ayrıca built app'i çalıştıran E2E container smoke çalıştırıcıları için bir paylaşılan `scripts/e2e/Dockerfile` imajını `test:docker:e2e-build` ile bir kez oluşturur ve yeniden kullanır. -- Container smoke çalıştırıcıları: `test:docker:openwebui`, `test:docker:onboard`, `test:docker:npm-onboard-channel-agent`, `test:docker:gateway-network`, `test:docker:mcp-channels`, `test:docker:pi-bundle-mcp-tools`, `test:docker:cron-mcp-cleanup`, `test:docker:plugins`, `test:docker:plugin-update` ve `test:docker:config-reload`, 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` kullanır. Daha büyük kapsamlı taramayı açıkça istediğinizde bu env değişkenlerini geçersiz kılın. +- `test:docker:all`, `test:docker:live-build` ile live Docker görüntüsünü bir kez derler, sonra bunu iki live Docker hattı için yeniden kullanır. Ayrıca `test:docker:e2e-build` üzerinden bir paylaşılan `scripts/e2e/Dockerfile` görüntüsü derler ve bunu derlenmiş uygulamayı çalıştıran E2E container smoke çalıştırıcıları için yeniden kullanır. +- Container smoke çalıştırıcıları: `test:docker:openwebui`, `test:docker:onboard`, `test:docker:npm-onboard-channel-agent`, `test:docker:gateway-network`, `test:docker:mcp-channels`, `test:docker:pi-bundle-mcp-tools`, `test:docker:cron-mcp-cleanup`, `test:docker:plugins`, `test:docker:plugin-update` ve `test:docker:config-reload`, bir veya daha fazla gerçek container başlatır ve daha üst düzey integration yollarını doğrular. -Live-model Docker çalıştırıcıları ayrıca yalnızca gereken CLI auth ana dizinlerini bağlayarak mount eder (veya çalıştırma daraltılmamışsa desteklenenlerin tümünü), ardından çalıştırma öncesinde bunları container ana dizinine kopyalar; böylece harici CLI OAuth, ana makine auth deposunu değiştirmeden token'ları yenileyebilir: +Live-model Docker çalıştırıcıları ayrıca yalnızca gereken CLI auth home dizinlerini bağlayıp bağlar (veya çalıştırma daraltılmamışsa desteklenenlerin tümünü), sonra harici CLI OAuth’un host auth deposunu değiştirmeden token yenileyebilmesi için bunları çalıştırma öncesinde container 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 + dev agent: `pnpm test:docker:live-gateway` (betik: `scripts/test-live-gateway-models-docker.sh`) -- Open WebUI live smoke: `pnpm test:docker:openwebui` (betik: `scripts/e2e/openwebui-docker.sh`) -- Onboarding sihirbazı (TTY, tam iskelet kurulum): `pnpm test:docker:onboard` (betik: `scripts/e2e/onboard-docker.sh`) -- Npm tarball onboarding/channel/agent smoke: `pnpm test:docker:npm-onboard-channel-agent`, paketlenmiş OpenClaw tarball'ını Docker içinde global olarak kurar, varsayılan olarak env-ref onboarding artı Telegram ile OpenAI'ı yapılandırır, plugin etkinleştirmenin çalışma zamanı bağımlılıklarını gerektiğinde kurduğunu doğrular, doctor çalıştırır ve sahte bir OpenAI agent dönüşü çalıştırır. Önceden oluşturulmuş bir tarball'ı `OPENCLAW_NPM_ONBOARD_PACKAGE_TGZ=/path/to/openclaw-*.tgz` ile yeniden kullanın, ana makine yeniden yapısını `OPENCLAW_NPM_ONBOARD_HOST_BUILD=0` ile atlayın veya channel'ı `OPENCLAW_NPM_ONBOARD_CHANNEL=discord` ile değiştirin. +- ACP bağlama smoke testi: `pnpm test:docker:live-acp-bind` (betik: `scripts/test-live-acp-bind-docker.sh`) +- CLI backend smoke testi: `pnpm test:docker:live-cli-backend` (betik: `scripts/test-live-cli-backend-docker.sh`) +- Codex app-server harness smoke testi: `pnpm test:docker:live-codex-harness` (betik: `scripts/test-live-codex-harness-docker.sh`) +- Gateway + dev ajan: `pnpm test:docker:live-gateway` (betik: `scripts/test-live-gateway-models-docker.sh`) +- Open WebUI live smoke testi: `pnpm test:docker:openwebui` (betik: `scripts/e2e/openwebui-docker.sh`) +- Onboarding sihirbazı (TTY, tam iskelet oluşturma): `pnpm test:docker:onboard` (betik: `scripts/e2e/onboard-docker.sh`) +- Npm tarball onboarding/channel/agent smoke testi: `pnpm test:docker:npm-onboard-channel-agent`, paketlenmiş OpenClaw tarball’unu Docker içinde global olarak kurar, varsayılan olarak env-ref onboarding artı Telegram üzerinden OpenAI yapılandırır, Plugin’i etkinleştirmenin çalışma zamanı bağımlılıklarını ihtiyaç üzerine kurduğunu doğrular, doctor çalıştırır ve sahte bir OpenAI ajan dönüşü çalıştırır. Önceden derlenmiş bir tarball’u `OPENCLAW_NPM_ONBOARD_PACKAGE_TGZ=/path/to/openclaw-*.tgz` ile yeniden kullanın, host yeniden derlemesini `OPENCLAW_NPM_ONBOARD_HOST_BUILD=0` ile atlayın veya channel’ı `OPENCLAW_NPM_ONBOARD_CHANNEL=discord` ile değiştirin. - Gateway ağ iletişimi (iki container, WS auth + sağlık): `pnpm test:docker:gateway-network` (betik: `scripts/e2e/gateway-network-docker.sh`) -- OpenAI Responses `web_search` minimal reasoning regresyonu: `pnpm test:docker:openai-web-search-minimal` (betik: `scripts/e2e/openai-web-search-minimal-docker.sh`) sahte bir OpenAI sunucusunu Gateway üzerinden çalıştırır, `web_search` öğesinin `reasoning.effort` değerini `minimal`'dan `low`'a yükselttiğini doğrular, ardından sağlayıcı şema reddini zorlar ve ham ayrıntının Gateway günlüklerinde göründüğünü denetler. -- MCP channel bridge (tohumlanmış Gateway + stdio bridge + ham Claude bildirim-frame smoke): `pnpm test:docker:mcp-channels` (betik: `scripts/e2e/mcp-channels-docker.sh`) -- Pi bundle MCP araçları (gerçek stdio MCP sunucusu + gömülü Pi profil allow/deny smoke): `pnpm test:docker:pi-bundle-mcp-tools` (betik: `scripts/e2e/pi-bundle-mcp-tools-docker.sh`) -- Cron/subagent MCP temizliği (yalıtılmış Cron ve tek seferlik subagent çalıştırmalarından sonra gerçek Gateway + stdio MCP alt süreç kapatma): `pnpm test:docker:cron-mcp-cleanup` (betik: `scripts/e2e/cron-mcp-cleanup-docker.sh`) -- Plugin'ler (kurulum smoke + `/plugin` takma adı + Claude-bundle yeniden başlatma semantiği): `pnpm test:docker:plugins` (betik: `scripts/e2e/plugins-docker.sh`) -- Plugin update unchanged smoke: `pnpm test:docker:plugin-update` (betik: `scripts/e2e/plugin-update-unchanged-docker.sh`) -- Config reload meta veri smoke: `pnpm test:docker:config-reload` (betik: `scripts/e2e/config-reload-source-docker.sh`) -- Paketlenmiş plugin çalışma zamanı bağımlılıkları: `pnpm test:docker:bundled-channel-deps`, varsayılan olarak küçük bir Docker çalıştırıcı imajı oluşturur, OpenClaw'u ana makinede bir kez oluşturup paketler, ardından bu tarball'ı her Linux kurulum senaryosuna mount eder. İmajı `OPENCLAW_SKIP_DOCKER_BUILD=1` ile yeniden kullanın, yeni bir yerel yapıdan sonra ana makine yeniden yapısını `OPENCLAW_BUNDLED_CHANNEL_HOST_BUILD=0` ile atlayın veya mevcut bir tarball'a `OPENCLAW_BUNDLED_CHANNEL_PACKAGE_TGZ=/path/to/openclaw-*.tgz` ile işaret edin. -- Yineleme sırasında ilgisiz senaryoları devre dışı bırakarak paketlenmiş plugin çalışma zamanı bağımlılıklarını daraltın, örneğin: +- OpenAI Responses `web_search` minimal reasoning regresyonu: `pnpm test:docker:openai-web-search-minimal` (betik: `scripts/e2e/openai-web-search-minimal-docker.sh`), Gateway üzerinden sahte bir OpenAI sunucusu çalıştırır, `web_search` işleminin `reasoning.effort` değerini `minimal`den `low`a yükselttiğini doğrular, ardından sağlayıcı şemasını reddetmeye zorlar ve ham ayrıntının Gateway günlüklerinde göründüğünü denetler. +- MCP channel köprüsü (tohumlanmış Gateway + stdio köprüsü + ham Claude bildirim-frame smoke testi): `pnpm test:docker:mcp-channels` (betik: `scripts/e2e/mcp-channels-docker.sh`) +- Pi bundle MCP araçları (gerçek stdio MCP sunucusu + gömülü Pi profili izin/verme-engelleme smoke testi): `pnpm test:docker:pi-bundle-mcp-tools` (betik: `scripts/e2e/pi-bundle-mcp-tools-docker.sh`) +- Cron/subagent MCP temizliği (gerçek Gateway + izole Cron ve tek seferlik subagent çalıştırmaları sonrasında stdio MCP alt süreci kapatma): `pnpm test:docker:cron-mcp-cleanup` (betik: `scripts/e2e/cron-mcp-cleanup-docker.sh`) +- Plugin’ler (kurulum smoke testi + `/plugin` takma adı + Claude-bundle yeniden başlatma semantiği): `pnpm test:docker:plugins` (betik: `scripts/e2e/plugins-docker.sh`) +- Plugin güncelleme değişmedi smoke testi: `pnpm test:docker:plugin-update` (betik: `scripts/e2e/plugin-update-unchanged-docker.sh`) +- Config yeniden yükleme meta veri smoke testi: `pnpm test:docker:config-reload` (betik: `scripts/e2e/config-reload-source-docker.sh`) +- Paketlenmiş Plugin çalışma zamanı bağımlılıkları: `pnpm test:docker:bundled-channel-deps`, varsayılan olarak küçük bir Docker çalıştırıcı görüntüsü derler, OpenClaw’ı host üzerinde bir kez derleyip paketler, ardından bu tarball’u her Linux kurulum senaryosuna bağlar. Görüntüyü `OPENCLAW_SKIP_DOCKER_BUILD=1` ile yeniden kullanın, yeni bir yerel derlemeden sonra host yeniden derlemesini `OPENCLAW_BUNDLED_CHANNEL_HOST_BUILD=0` ile atlayın veya mevcut bir tarball’u `OPENCLAW_BUNDLED_CHANNEL_PACKAGE_TGZ=/path/to/openclaw-*.tgz` ile gösterin. +- Yineleme sırasında ilgisiz senaryoları devre dışı bırakarak paketlenmiş Plugin çalışma zamanı bağımlılıklarını daraltın, örneğin: `OPENCLAW_BUNDLED_CHANNEL_SCENARIOS=0 OPENCLAW_BUNDLED_CHANNEL_UPDATE_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_ROOT_OWNED_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_SETUP_ENTRY_SCENARIO=0 pnpm test:docker:bundled-channel-deps`. -Paylaşılan built-app imajını elle önceden oluşturup yeniden kullanmak için: +Paylaşılan derlenmiş-uygulama görüntüsünü elle önceden derlemek ve yeniden kullanmak için: ```bash OPENCLAW_DOCKER_E2E_IMAGE=openclaw-docker-e2e:local pnpm test:docker:e2e-build OPENCLAW_DOCKER_E2E_IMAGE=openclaw-docker-e2e:local OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:mcp-channels ``` -`OPENCLAW_GATEWAY_NETWORK_E2E_IMAGE` gibi pakete özgü image geçersiz kılmaları ayarlandığında hâlâ önceliklidir. `OPENCLAW_SKIP_DOCKER_BUILD=1` uzak bir paylaşılan image'a işaret ettiğinde, betikler image yerelde yoksa onu çeker. QR ve installer Docker testleri kendi Dockerfile'larını korur; çünkü bunlar paylaşılan built-app runtime'ı yerine package/install davranışını doğrular. +`OPENCLAW_GATEWAY_NETWORK_E2E_IMAGE` gibi pakete özgü görüntü geçersiz kılmaları ayarlandığında yine önceliklidir. `OPENCLAW_SKIP_DOCKER_BUILD=1`, uzak paylaşılan bir görüntüye işaret ettiğinde betikler görüntü yerelde zaten yoksa onu çeker. QR ve yükleyici Docker testleri kendi Dockerfile’larını korur; çünkü bunlar paylaşılan derlenmiş-uygulama çalışma zamanı yerine paket/kurulum davranışını doğrular. -Live-model Docker çalıştırıcıları ayrıca geçerli checkout'u salt okunur olarak bind-mount eder ve -container içinde geçici bir workdir'a hazırlar. Bu, runtime -image'ını ince tutarken yine de Vitest'i tam olarak yerel kaynak/config'inize karşı çalıştırır. +Live-model Docker çalıştırıcıları ayrıca mevcut checkout’u salt okunur olarak bağlar ve +bunu container içinde geçici bir çalışma dizinine hazırlar. Bu, çalışma zamanı +görüntüsünü ince tutarken yine de Vitest’i tam olarak yerel kaynak/yapılandırmanıza karşı çalıştırır. Hazırlama adımı, Docker live çalıştırmalarının -makineye özgü artifact'leri kopyalamak için dakikalar harcamaması adına `.pnpm-store`, `.worktrees`, `__openclaw_vitest__` ve app'e özgü `.build` veya -Gradle çıktı dizinleri gibi büyük yalnızca-yerel önbellekleri ve uygulama build çıktılarını atlar. -Ayrıca `OPENCLAW_SKIP_CHANNELS=1` ayarlarlar; böylece gateway live probeları -container içinde gerçek Telegram/Discord vb. channel çalışanlarını başlatmaz. -`test:docker:live-models` yine de `pnpm test:live` çalıştırır; bu nedenle -o Docker hattından gateway -live kapsamını daraltmanız veya hariç tutmanız gerektiğinde `OPENCLAW_LIVE_GATEWAY_*` değişkenlerini de geçirin. -`test:docker:openwebui`, daha üst düzey bir uyumluluk smoke testidir: OpenAI uyumlu HTTP endpoint'leri etkin bir -OpenClaw gateway container'ı başlatır, -bu gateway'e karşı sabitlenmiş bir Open WebUI container'ı başlatır, Open WebUI -üzerinden oturum açar, `/api/models` endpoint'inin `openclaw/default` sunduğunu doğrular, sonra -Open WebUI'nin `/api/chat/completions` proxy'si üzerinden gerçek bir -sohbet isteği gönderir. -İlk çalıştırma belirgin biçimde daha yavaş olabilir; çünkü Docker'ın -Open WebUI image'ını çekmesi gerekebilir ve Open WebUI'nin kendi soğuk başlangıç kurulumunu tamamlaması gerekebilir. -Bu hat kullanılabilir bir live model anahtarı bekler ve Dockerize çalıştırmalarda bunu sağlamak için birincil yol -`OPENCLAW_PROFILE_FILE`'dır -(varsayılan `~/.profile`). +makineye özgü artifact’ları kopyalamak için dakikalar harcamaması adına `.pnpm-store`, `.worktrees`, `__openclaw_vitest__` ve uygulamaya özgü `.build` veya +Gradle çıktı dizinleri gibi büyük yalnızca yerel önbellekleri ve uygulama derleme çıktılarını atlar. +Ayrıca `OPENCLAW_SKIP_CHANNELS=1` ayarlarlar; böylece Gateway live probları +container içinde gerçek Telegram/Discord/vb. channel worker’larını başlatmaz. +`test:docker:live-models` yine de `pnpm test:live` çalıştırır; dolayısıyla +o Docker hattında Gateway +live 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 +bir OpenClaw Gateway container’ı başlatır, +bu Gateway’e karşı sabitlenmiş bir Open WebUI container’ı başlatır, Open WebUI üzerinden +oturum açar, `/api/models` içinde `openclaw/default` değerinin açığa çıktığını 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 gözle görülür biçimde daha yavaş olabilir; çünkü Docker’ın +Open WebUI görüntüsünü çekmesi gerekebilir ve Open WebUI’nin kendi soğuk başlangıç kurulumunu tamamlaması gerekebilir. +Bu hat kullanılabilir bir live model anahtarı bekler ve Docker’lı çalıştırmalarda +bunu sağlamak için birincil yol `OPENCLAW_PROFILE_FILE` +(varsayılan olarak `~/.profile`) değişkenidir. Başarılı çalıştırmalar `{ "ok": true, "model": -"openclaw/default", ... }` gibi küçük bir JSON payload yazar. -`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` çalıştıran ikinci bir container başlatır, ardından -yönlendirilmiş konuşma keşfini, transcript okumalarını, attachment meta verisini, +"openclaw/default", ... }` gibi küçük bir JSON payload yazdırır. +`test:docker:mcp-channels`, kasıtlı olarak deterministiktir ve +gerçek bir Telegram, Discord veya iMessage hesabına ihtiyaç duymaz. Tohumlanmış bir Gateway +container’ı başlatır, `openclaw mcp serve` oluşturan ikinci bir container başlatır, ardından +yönlendirilmiş konuşma keşfini, transkript okumalarını, ek meta verilerini, live olay kuyruğu davranışını, giden gönderim yönlendirmesini ve Claude tarzı channel + -izin bildirimlerini gerçek stdio MCP bridge üzerinden doğrular. Bildirim denetimi -ham stdio MCP frame'lerini doğrudan inceler; böylece smoke testi yalnızca belirli bir istemci SDK'sının -yüzeye çıkardıklarını değil, bridge'in gerçekten ne yaydığını doğrular. +izin bildirimlerini gerçek stdio MCP köprüsü üzerinden doğrular. Bildirim denetimi +ham stdio MCP frame’lerini doğrudan inceler; böylece smoke testi yalnızca belirli bir istemci SDK’sının +yansıttığını değil, köprünün gerçekte ne yaydığını doğrular. `test:docker:pi-bundle-mcp-tools` deterministiktir ve live -model anahtarı gerektirmez. Depo Docker image'ını oluşturur, container içinde gerçek bir stdio MCP probe sunucusu başlatır, -bu sunucuyu gömülü Pi bundle -MCP runtime üzerinden somutlaştırır, aracı çalıştırır, sonra `coding` ve `messaging` öğelerinin +model anahtarı gerektirmez. Depo Docker görüntüsünü derler, container içinde gerçek bir stdio MCP probe sunucusu başlatır, +bu sunucuyu gömülü Pi bundle MCP çalışma zamanı üzerinden somutlaştırır, +aracı çalıştırır, ardından `coding` ve `messaging` profillerinin `bundle-mcp` araçlarını koruduğunu, `minimal` ve `tools.deny: ["bundle-mcp"]` ayarlarının ise bunları filtrelediğini doğrular. `test:docker:cron-mcp-cleanup` deterministiktir ve live model -anahtarı gerektirmez. Gerçek bir stdio MCP probe sunucusuyla tohumlanmış bir Gateway başlatır, -yalıtılmış bir Cron dönüşü ve `/subagents spawn` tek seferlik bir alt süreç dönüşü çalıştırır, ardından -her çalıştırmadan sonra MCP alt sürecinin çıktığını doğrular. +anahtarı gerektirmez. Gerçek bir stdio MCP probe sunucusuna sahip tohumlanmış bir Gateway başlatır, +izole bir Cron dönüşü ve `/subagents spawn` tek seferlik alt süreç dönüşü çalıştırır, ardından +MCP alt sürecinin her çalıştırmadan sonra kapandığını doğrular. Elle ACP düz 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 koruyun. ACP thread yönlendirme doğrulaması için tekrar gerekebilir, bu yüzden silmeyin. +- Bu betiği regresyon/hata ayıklama iş akışları için koruyun. ACP thread yönlendirme doğrulaması için yeniden gerekebilir, bu yüzden silmeyin. Yararlı env değişkenleri: -- `OPENCLAW_CONFIG_DIR=...` (varsayılan: `~/.openclaw`) `/home/node/.openclaw` içine mount edilir -- `OPENCLAW_WORKSPACE_DIR=...` (varsayılan: `~/.openclaw/workspace`) `/home/node/.openclaw/workspace` içine mount edilir -- `OPENCLAW_PROFILE_FILE=...` (varsayılan: `~/.profile`) `/home/node/.profile` içine mount edilir ve testler çalıştırılmadan önce kaynak olarak yüklenir -- `OPENCLAW_DOCKER_PROFILE_ENV_ONLY=1`, `OPENCLAW_PROFILE_FILE` içinden kaynak olarak yüklenen yalnızca env değişkenlerini doğrulamak için kullanılır; geçici config/workspace dizinleri ve harici CLI auth mount'ları olmadan -- `OPENCLAW_DOCKER_CLI_TOOLS_DIR=...` (varsayılan: `~/.cache/openclaw/docker-cli-tools`) Docker içindeki önbellekli CLI kurulumları için `/home/node/.npm-global` içine mount edilir -- `$HOME` altındaki harici CLI auth dizinleri/dosyaları `/host-auth...` altına salt okunur olarak mount edilir, ardından testler başlamadan önce `/home/node/...` içine kopyalanır +- `OPENCLAW_CONFIG_DIR=...` (varsayılan: `~/.openclaw`) `/home/node/.openclaw` konumuna bağlanır +- `OPENCLAW_WORKSPACE_DIR=...` (varsayılan: `~/.openclaw/workspace`) `/home/node/.openclaw/workspace` konumuna bağlanır +- `OPENCLAW_PROFILE_FILE=...` (varsayılan: `~/.profile`) `/home/node/.profile` konumuna bağlanır ve testler çalıştırılmadan önce kaynak alınır +- `OPENCLAW_DOCKER_PROFILE_ENV_ONLY=1`, geçici config/workspace dizinleri ve harici CLI auth bağları olmadan yalnızca `OPENCLAW_PROFILE_FILE` içinden kaynak alınan env değişkenlerini doğrulamak için +- `OPENCLAW_DOCKER_CLI_TOOLS_DIR=...` (varsayılan: `~/.cache/openclaw/docker-cli-tools`) Docker içindeki önbellekli CLI kurulumları için `/home/node/.npm-global` konumuna bağlanır +- `$HOME` altındaki harici CLI auth dizinleri/dosyaları `/host-auth...` altında salt okunur 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ı, `OPENCLAW_LIVE_PROVIDERS` / `OPENCLAW_LIVE_GATEWAY_PROVIDERS` üzerinden çıkarılan yalnızca gerekli dizinleri/dosyaları mount eder - - 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 + - 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ü liste kullanın - Çalıştırmayı daraltmak için `OPENCLAW_LIVE_GATEWAY_MODELS=...` / `OPENCLAW_LIVE_MODELS=...` - Container içinde sağlayıcıları filtrelemek için `OPENCLAW_LIVE_GATEWAY_PROVIDERS=...` / `OPENCLAW_LIVE_PROVIDERS=...` -- Yeniden build gerektirmeyen tekrar çalıştırmalar için mevcut `openclaw:local-live` image'ı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 testi için gateway tarafından sunulan modeli seçmek üzere `OPENCLAW_OPENWEBUI_MODEL=...` -- Open WebUI smoke testinin kullandığı nonce kontrol prompt'unu geçersiz kılmak için `OPENCLAW_OPENWEBUI_PROMPT=...` -- Sabitlenmiş Open WebUI image etiketini geçersiz kılmak için `OPENWEBUI_IMAGE=...` +- Yeniden derleme gerektirmeyen tekrar çalıştırmalarda mevcut `openclaw:local-live` görüntüsünü yeniden kullanmak için `OPENCLAW_SKIP_DOCKER_BUILD=1` +- Kimlik bilgilerinin env’den değil profil deposundan gelmesini sağlamak için `OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1` +- Open WebUI smoke testi için Gateway tarafından açığa çıkarılan modeli seçmek üzere `OPENCLAW_OPENWEBUI_MODEL=...` +- Open WebUI smoke testinde kullanılan nonce-kontrol prompt’unu geçersiz kılmak için `OPENCLAW_OPENWEBUI_PROMPT=...` +- Sabitlenmiş Open WebUI görüntü etiketini geçersiz kılmak için `OPENWEBUI_IMAGE=...` -## Doküman doğruluğu +## Doküman sağlama Doküman düzenlemelerinden sonra doküman 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 için güvenli) -Bunlar gerçek sağlayıcılar olmadan “gerçek pipeline” 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 + 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 enforced yazar): `src/gateway/gateway.test.ts` (durum: "runs wizard over ws and writes auth token config") +- 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 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") -## Agent güvenilirlik eval'ları (Skills) +## Ajan güvenilirliği değerlendirmeleri (Skills) -CI için güvenli, “agent güvenilirlik eval'ları” gibi davranan birkaç testimiz zaten var: +CI için güvenli “ajan güvenilirliği değerlendirmeleri” gibi davranan birkaç testimiz zaten var: -- 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`). +- Gerçek Gateway + ajan döngüsü üzerinden sahte araç çağırma (`src/gateway/gateway.test.ts`). +- Oturum bağlamasını ve config etkilerini doğrulayan uçtan uca sihirbaz akışları (`src/gateway/gateway.test.ts`). Skills için hâlâ eksik olanlar (bkz. [Skills](/tr/tools/skills)): -- **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 devrini ve sandbox sınırlarını doğrulayan çok dönüşlü senaryolar. +- **Karar verme:** prompt içinde Skills listelendiğinde ajan doğru Skill’i seçiyor mu (veya ilgisiz olanlardan kaçınıyor mu)? +- **Uyumluluk:** ajan kullanımdan önce `SKILL.md` okuyor mu 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 dönüşlü senaryolar. -Gelecekteki eval'lar önce deterministik kalmalıdır: +Gelecekteki değerlendirmeler öncelikle deterministik kalmalıdır: -- 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). -- CI için güvenli paket yerleşmeden önce değil, yalnızca sonrasında isteğe bağlı live eval'lar (opt-in, env geçitli). +- Araç çağrılarını + sırasını, Skill dosyası okumalarını ve oturum bağlaması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ı live değerlendirmeler (isteğe bağlı, env ile kapılı) yalnızca CI için güvenli paket yerleştirildikten sonra. -## Sözleşme testleri (plugin ve channel şekli) +## Sözleşme testleri (Plugin ve channel şekli) -Sözleşme testleri, kayıtlı her plugin ve channel'ı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ı paketi çalıştırır. Varsayılan `pnpm test` unit hattı -kasıtlı olarak bu paylaşılan sınır ve smoke dosyalarını atlar; paylaşılan channel 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 channel’ın kendi +arayüz sözleşmesine uyduğunu doğrular. Keşfedilen tüm Plugin’leri yineleyip +şekil ve davranış doğrulamalarından oluşan bir paket çalıştırırlar. Varsayılan `pnpm test` unit hattı +bu paylaşılan seam ve smoke dosyalarını bilerek atlar; paylaşılan channel veya sağlayıcı yüzeylerine dokunduğunuzda +sözleşme komutlarını açıkça çalıştırın. ### Komutlar @@ -1058,7 +1068,7 @@ kasıtlı olarak bu paylaşılan sınır ve smoke dosyalarını atlar; paylaşı `src/channels/plugins/contracts/*.contract.test.ts` içinde bulunur: -- **plugin** - Temel plugin şekli (id, ad, yetenekler) +- **plugin** - Temel Plugin şekli (id, name, capabilities) - **setup** - Kurulum sihirbazı sözleşmesi - **session-binding** - Oturum bağlama davranışı - **outbound-payload** - Mesaj payload yapısı @@ -1066,45 +1076,45 @@ kasıtlı olarak bu paylaşılan sınır ve smoke dosyalarını atlar; paylaşı - **actions** - Channel eylem işleyicileri - **threading** - Thread ID işleme - **directory** - Dizin/roster API -- **group-policy** - Grup politikası uygulama +- **group-policy** - Grup politikası zorlama ### Sağlayıcı durum sözleşmeleri `src/plugins/contracts/*.contract.test.ts` içinde bulunur. -- **status** - Channel durum probeları +- **status** - Channel durum probları - **registry** - Plugin kayıt şekli ### Sağlayıcı sözleşmeleri `src/plugins/contracts/*.contract.test.ts` içinde bulunur: -- **auth** - Auth akışı sözleşmesi -- **auth-choice** - Auth seçimi/tercihi -- **catalog** - Model katalog API +- **auth** - Auth akış sözleşmesi +- **auth-choice** - Auth seçimi/seçimleme +- **catalog** - Model katalog API’si - **discovery** - Plugin keşfi - **loader** - Plugin yükleme -- **runtime** - Sağlayıcı runtime +- **runtime** - Sağlayıcı çalışma zamanı - **shape** - Plugin şekli/arayüzü - **wizard** - Kurulum sihirbazı ### Ne zaman çalıştırılmalı -- Plugin SDK dışa aktarımlarını veya alt yollarını değiştirdikten sonra -- Bir channel 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 channel 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'da ç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) -Live ortamda keşfedilen bir sağlayıcı/model sorununu düzelttiğinizde: +Live’da keşfedilen bir sağlayıcı/model sorununu düzelttiğinizde: - Mümkünse CI için 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 live ise (hız sınırları, auth politikaları), live testi dar ve env değişkenleri üzerinden opt-in tutun -- Hatayı yakalayan en küçük katmanı hedeflemeyi tercih edin: +- Doğası gereği yalnızca live ise (hız sınırları, auth politikaları), live testi dar ve env değişkenleriyle isteğe bağlı tutun +- Hatanın yakalandığı en küçük katmanı hedeflemeyi tercih edin: - sağlayıcı istek dönüştürme/yeniden oynatma hatası → doğrudan modeller testi - - Gateway oturum/geçmiş/araç hattı hatası → Gateway live smoke veya CI için güvenli Gateway mock testi + - Gateway oturum/geçmiş/araç hattı hatası → Gateway live smoke testi veya CI için güvenli Gateway sahte testi - SecretRef traversal guardrail: - - `src/secrets/exec-secret-ref-id-parity.test.ts`, kayıt meta verisinden (`listSecretTargetRegistryEntries()`) SecretRef sınıfı başına örneklenmiş bir hedef türetir, ardından traversal-segment exec id'lerinin reddedildiğini doğrular. - - `src/secrets/target-registry-data.ts` içine yeni bir `includeInPlan` SecretRef hedef ailesi ekliyorsanız, o testteki `classifyTargetClass` öğesini güncelleyin. Test, yeni sınıfların sessizce atlanamaması için kasıtlı olarak sınıflandırılmamış hedef kimliklerinde başarısız olur. + - `src/secrets/exec-secret-ref-id-parity.test.ts`, kayıt 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çinde yeni bir `includeInPlan` SecretRef hedef ailesi eklerseniz, o testte `classifyTargetClass` işlevini güncelleyin. Test, yeni sınıfların sessizce atlanamaması için sınıflandırılmamış hedef kimliklerinde bilerek başarısız olur.