chore(i18n): refresh tr translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-05-04 02:24:28 +00:00
parent 3b68c1d824
commit efe82d6c88
17 changed files with 1692 additions and 1641 deletions

View File

@ -1,48 +1,48 @@
---
read_when:
- BlueBubbles kanalını ayarlama
- Webhook eşleştirmesinde sorun giderme
- macOS'ta iMessage'ı yapılandırma
- Webhook eşleştirme sorunlarını giderme
- macOSte iMessageı Yapılandırma
sidebarTitle: BlueBubbles
summary: BlueBubbles macOS sunucusu üzerinden iMessage (REST gönderme/alma, yazıyor göstergesi, tepkiler, eşleştirme, gelişmiş eylemler).
summary: BlueBubbles macOS sunucusu üzerinden iMessage (REST gönderme/alma, yazıyor durumu, tepkiler, eşleştirme, gelişmiş eylemler).
title: BlueBubbles
x-i18n:
generated_at: "2026-05-01T08:58:40Z"
generated_at: "2026-05-04T02:21:32Z"
model: gpt-5.5
provider: openai
source_hash: 499cc2a46db6e0eddfb897e96ec4b3e4a39ba9f2f6da8e7485c1c46562de4145
source_hash: 78a054da0c7c32b161997acd05914896259dd1a050e736a4c9e438a452ab6a51
source_path: channels/bluebubbles.md
workflow: 16
---
Durum: HTTP üzerinden BlueBubbles macOS sunucusuyla konuşan paketli plugin. Eski imsg kanalına kıyasla daha zengin API'si ve daha kolay kurulumu nedeniyle **iMessage entegrasyonu için önerilir**.
Durum: BlueBubbles macOS sunucusuyla HTTP üzerinden konuşan paketlenmiş Plugin. Eski imsg kanalına kıyasla daha zengin API'si ve daha kolay kurulumu nedeniyle **iMessage entegrasyonu için önerilir**.
<Note>
Geçerli OpenClaw sürümleri BlueBubbles'ı paketle birlikte sunar, bu yüzden normal paketlenmiş derlemeler ayrı bir `openclaw plugins install` adımına ihtiyaç duymaz.
Mevcut OpenClaw sürümleri BlueBubbles'ı paketler, bu nedenle normal paketlenmiş derlemelerde ayrı bir `openclaw plugins install` adımı gerekmez.
</Note>
## Genel Bakış
## Genel bakış
- macOS üzerinde BlueBubbles yardımcı uygulamasıyla çalışır ([bluebubbles.app](https://bluebubbles.app)).
- macOS üzerinde BlueBubbles yardımcı uygulaması aracılığıyla çalışır ([bluebubbles.app](https://bluebubbles.app)).
- Önerilen/test edilen: macOS Sequoia (15). macOS Tahoe (26) çalışır; düzenleme şu anda Tahoe'da bozuktur ve grup simgesi güncellemeleri başarılı bildirilebilir ancak eşitlenmeyebilir.
- OpenClaw onunla REST API'si üzerinden konuşur (`GET /api/v1/ping`, `POST /message/text`, `POST /chat/:id/*`).
- Gelen mesajlar webhooks aracılığıyla gelir; giden yanıtlar, yazıyor göstergeleri, okundu bilgileri ve tapback'ler REST çağrılarıdır.
- Ekler ve çıkartmalar gelen medya olarak alınır (ve mümkün olduğunda aracıya gösterilir).
- OpenClaw, onunla REST API'si üzerinden konuşur (`GET /api/v1/ping`, `POST /message/text`, `POST /chat/:id/*`).
- Gelen mesajlar Webhook'lar aracılığıyla gelir; giden yanıtlar, yazıyor göstergeleri, okundu bilgileri ve tapback'ler REST çağrılarıdır.
- Ekler ve çıkartmalar gelen medya olarak alınır (ve mümkün olduğunda ajana sunulur).
- MP3 veya CAF ses sentezleyen otomatik TTS yanıtları, düz dosya ekleri yerine iMessage sesli not balonları olarak teslim edilir.
- Eşleştirme/izin listesi diğer kanallarla aynı şekilde çalışır (`/channels/pairing` vb.) ve `channels.bluebubbles.allowFrom` + eşleştirme kodlarını kullanır.
- Tepkiler, tıpkı Slack/Telegram'da olduğu gibi sistem olayları olarak gösterilir, böylece aracılar yanıtlamadan önce bunlardan "bahsedebilir".
- Gelişmiş özellikler: düzenleme, göndermeyi geri alma, yanıt zincirleme, mesaj efektleri, grup yönetimi.
- Tepkiler, ajanların yanıtlamadan önce bunlardan "bahsedebilmesi" için Slack/Telegram'daki gibi sistem olayları olarak sunulur.
- Gelişmiş özellikler: düzenleme, göndermeyi geri alma, yanıt iş parçacıkları, mesaj efektleri, grup yönetimi.
## Hızlı başlangıç
<Steps>
<Step title="Install BlueBubbles">
<Step title="BlueBubbles'ı kurun">
BlueBubbles sunucusunu Mac'inize kurun ([bluebubbles.app/install](https://bluebubbles.app/install) adresindeki yönergeleri izleyin).
</Step>
<Step title="Enable the web API">
BlueBubbles yapılandırmasında web API'sini etkinleştirin ve bir parola ayarlayın.
<Step title="Web API'yi etkinleştirin">
BlueBubbles yapılandırmasında web API'yi etkinleştirin ve bir parola ayarlayın.
</Step>
<Step title="Configure OpenClaw">
<Step title="OpenClaw'ı yapılandırın">
`openclaw onboard` komutunu çalıştırıp BlueBubbles'ı seçin veya elle yapılandırın:
```json5
@ -59,29 +59,29 @@ Geçerli OpenClaw sürümleri BlueBubbles'ı paketle birlikte sunar, bu yüzden
```
</Step>
<Step title="Point webhooks at the gateway">
BlueBubbles webhooks hedefini Gateway'inize yönlendirin (örnek: `https://your-gateway-host:3000/bluebubbles-webhook?password=<password>`).
<Step title="Webhook'ları Gateway'e yönlendirin">
BlueBubbles Webhook'larını gateway'inize yönlendirin (örnek: `https://your-gateway-host:3000/bluebubbles-webhook?password=<password>`).
</Step>
<Step title="Start the gateway">
Gateway'i başlatın; webhook işleyicisini kaydeder ve eşleştirmeyi başlatır.
<Step title="Gateway'i başlatın">
Gateway'i başlatın; Webhook işleyicisini kaydeder ve eşleştirmeyi başlatır.
</Step>
</Steps>
<Warning>
**Güvenlik**
- Her zaman bir webhook parolası ayarlayın.
- Webhook kimlik doğrulaması her zaman gereklidir. OpenClaw, local loopback/proxy topolojisinden bağımsız olarak `channels.bluebubbles.password` ile eşleşen bir parola/guid içermedikçe BlueBubbles webhook isteklerini reddeder (örneğin `?password=<password>` veya `x-password`).
- Parola kimlik doğrulaması, tam webhook gövdeleri okunmadan/ayrıştırılmadan önce denetlenir.
- Her zaman bir Webhook parolası ayarlayın.
- Webhook kimlik doğrulaması her zaman gereklidir. OpenClaw, loopback/proxy topolojisinden bağımsız olarak `channels.bluebubbles.password` ile eşleşen bir parola/guid içermeyen BlueBubbles Webhook isteklerini reddeder (örneğin `?password=<password>` veya `x-password`).
- Parola kimlik doğrulaması, tam Webhook gövdeleri okunmadan/ayrıştırılmadan önce kontrol edilir.
</Warning>
## Messages.app'i canlı tutma (VM / başsız kurulumlar)
Bazı macOS VM / her zaman açık kurulumlarda Messages.app "boşta" kalabilir (uygulama açılana/ön plana getirilene kadar gelen olaylar durur). Basit bir geçici çözüm, AppleScript + LaunchAgent kullanarak **Messages'ı her 5 dakikada bir dürtmektir**.
Bazı macOS VM / her zaman açık kurulumlarda Messages.app "boşta" kalabilir (uygulama açılana/öne getirilene kadar gelen olaylar durur). Basit bir geçici çözüm, AppleScript + LaunchAgent kullanarak **Messages'ı her 5 dakikada bir dürtmektir**.
<Steps>
<Step title="Save the AppleScript">
<Step title="AppleScript'i kaydedin">
Bunu `~/Scripts/poke-messages.scpt` olarak kaydedin:
```applescript
@ -100,7 +100,7 @@ Bazı macOS VM / her zaman açık kurulumlarda Messages.app "boşta" kalabilir (
```
</Step>
<Step title="Install a LaunchAgent">
<Step title="Bir LaunchAgent kurun">
Bunu `~/Library/LaunchAgents/com.user.poke-messages.plist` olarak kaydedin:
```xml
@ -132,10 +132,10 @@ Bazı macOS VM / her zaman açık kurulumlarda Messages.app "boşta" kalabilir (
</plist>
```
Bu **her 300 saniyede bir** ve **oturum açıldığında** çalışır. İlk çalıştırma macOS **Automation** istemlerini tetikleyebilir (`osascript` → Messages). Bunları LaunchAgent'ı çalıştıran aynı kullanıcı oturumunda onaylayın.
Bu **her 300 saniyede bir** ve **oturum açıldığında** çalışır. İlk çalışma macOS **Automation** istemlerini tetikleyebilir (`osascript` → Messages). Bunları LaunchAgent'ı çalıştıran aynı kullanıcı oturumunda onaylayın.
</Step>
<Step title="Load it">
<Step title="Yükleyin">
```bash
launchctl unload ~/Library/LaunchAgents/com.user.poke-messages.plist 2>/dev/null || true
launchctl load ~/Library/LaunchAgents/com.user.poke-messages.plist
@ -154,13 +154,13 @@ openclaw onboard
Sihirbaz şunları ister:
<ParamField path="Server URL" type="string" required>
BlueBubbles sunucu adresi (ör. `http://192.168.1.100:1234`).
BlueBubbles sunucu adresi (örn. `http://192.168.1.100:1234`).
</ParamField>
<ParamField path="Password" type="string" required>
BlueBubbles Server ayarlarından API parolası.
</ParamField>
<ParamField path="Webhook path" type="string" default="/bluebubbles-webhook">
Webhook uç nokta yolu.
Webhook uç noktası yolu.
</ParamField>
<ParamField path="DM policy" type="string">
`pairing`, `allowlist`, `open` veya `disabled`.
@ -178,30 +178,30 @@ openclaw channels add bluebubbles --http-url http://192.168.1.100:1234 --passwor
## Erişim denetimi (DM'ler + gruplar)
<Tabs>
<Tab title="DMs">
<Tab title="DM'ler">
- Varsayılan: `channels.bluebubbles.dmPolicy = "pairing"`.
- Bilinmeyen gönderenler bir eşleştirme kodu alır; onaylanana kadar mesajlar yok sayılır (kodlar 1 saat sonra sona erer).
- Bilinmeyen göndericiler bir eşleştirme kodu alır; onaylanana kadar mesajlar yok sayılır (kodlar 1 saat sonra sona erer).
- Şununla onaylayın:
- `openclaw pairing list bluebubbles`
- `openclaw pairing approve bluebubbles <CODE>`
- Eşleştirme varsayılan token alışverişidir. Ayrıntılar: [Eşleştirme](/tr/channels/pairing)
- Eşleştirme varsayılan token değişimidir. Ayrıntılar: [Eşleştirme](/tr/channels/pairing)
</Tab>
<Tab title="Groups">
<Tab title="Gruplar">
- `channels.bluebubbles.groupPolicy = open | allowlist | disabled` (varsayılan: `allowlist`).
- `channels.bluebubbles.groupAllowFrom`, `allowlist` ayarlandığında gruplarda kimin tetikleyebileceğini denetler.
- `channels.bluebubbles.groupAllowFrom`, `allowlist` ayarlandığında gruplarda kimlerin tetikleyebileceğini kontrol eder.
</Tab>
</Tabs>
### Kişi adı zenginleştirme (macOS, isteğe bağlı)
BlueBubbles grup webhooks çoğu zaman yalnızca ham katılımcı adreslerini içerir. `GroupMembers` bağlamının bunun yerine yerel kişi adlarını göstermesini istiyorsanız macOS'ta yerel Kişiler zenginleştirmesine katılabilirsiniz:
BlueBubbles grup Webhook'ları çoğu zaman yalnızca ham katılımcı adreslerini içerir. `GroupMembers` bağlamının bunun yerine yerel kişi adlarını göstermesini istiyorsanız, macOS'ta yerel Contacts zenginleştirmesine katılabilirsiniz:
- `channels.bluebubbles.enrichGroupParticipantsFromContacts = true` aramayı etkinleştirir. Varsayılan: `false`.
- Aramalar yalnızca grup erişimi, komut yetkilendirmesi ve bahsetme kapısı mesajın geçmesine izin verdikten sonra çalışır.
- Yalnızca adı olmayan telefon katılımcıları zenginleştirilir.
- Yerel eşleşme bulunmadığında ham telefon numaraları geri dönüş olarak kalır.
- Yerel eşleşme bulunamadığında ham telefon numaraları yedek değer olarak kalır.
```json5
{
@ -218,8 +218,8 @@ BlueBubbles grup webhooks çoğu zaman yalnızca ham katılımcı adreslerini i
BlueBubbles, iMessage/WhatsApp davranışıyla eşleşen grup sohbetleri için bahsetme kapısını destekler:
- Bahsetmeleri algılamak için `agents.list[].groupChat.mentionPatterns` (veya `messages.groupChat.mentionPatterns`) kullanır.
- Bir grup için `requireMention` etkinleştirildiğinde aracı yalnızca kendisinden bahsedildiğinde yanıt verir.
- Yetkili gönderenlerden gelen kontrol komutları bahsetme kapısını atlar.
- Bir grup için `requireMention` etkinleştirildiğinde, ajan yalnızca kendisinden bahsedildiğinde yanıt verir.
- Yetkili göndericilerden gelen denetim komutları bahsetme kapısını atlar.
Grup başına yapılandırma:
@ -240,13 +240,13 @@ Grup başına yapılandırma:
### Komut kapısı
- Kontrol komutları (ör. `/config`, `/model`) yetkilendirme gerektirir.
- Denetim komutları (örn. `/config`, `/model`) yetkilendirme gerektirir.
- Komut yetkilendirmesini belirlemek için `allowFrom` ve `groupAllowFrom` kullanır.
- Yetkili gönderenler gruplarda bahsetmeden bile kontrol komutlarını çalıştırabilir.
- Yetkili göndericiler, gruplarda bahsetmeden bile denetim komutlarını çalıştırabilir.
### Grup başına sistem istemi
`channels.bluebubbles.groups.*` altındaki her giriş isteğe bağlı bir `systemPrompt` dizesi kabul eder. Değer, o gruptaki bir mesajı işleyen her turda aracının sistem istemine eklenir, böylece aracı istemlerini düzenlemeden grup başına persona veya davranış kuralları ayarlayabilirsiniz:
`channels.bluebubbles.groups.*` altındaki her giriş isteğe bağlı bir `systemPrompt` dizesi kabul eder. Değer, o gruptaki bir mesajı işleyen her turda ajanın sistem istemine enjekte edilir; böylece ajan istemlerini düzenlemeden grup başına persona veya davranış kuralları ayarlayabilirsiniz:
```json5
{
@ -262,11 +262,11 @@ Grup başına yapılandırma:
}
```
Anahtar, BlueBubbles'ın grup için bildirdiği `chatGuid` / `chatIdentifier` / sayısal `chatId` değerlerinden hangisiyse onunla eşleşir ve `"*"` joker girişi, tam eşleşmesi olmayan her grup için varsayılan sağlar (`requireMention` ve grup başına araç ilkeleri tarafından kullanılan aynı desen). Tam eşleşmeler her zaman jokerden üstün gelir. DM'ler bu alanı yok sayar; bunun yerine aracı düzeyinde veya hesap düzeyinde istem özelleştirmesi kullanın.
Anahtar, BlueBubbles'ın grup için `chatGuid` / `chatIdentifier` / sayısal `chatId` olarak bildirdiği değerle eşleşir ve `"*"` joker karakter girişi, tam eşleşmesi olmayan her grup için varsayılan sağlar (`requireMention` ve grup başına araç politikaları tarafından kullanılan aynı kalıp). Tam eşleşmeler her zaman joker karakterin önüne geçer. DM'ler bu alanı yok sayar; bunun yerine ajan düzeyi veya hesap düzeyi istem özelleştirmesini kullanın.
#### Çalışılmış örnek: zincirlenmiş yanıtlar ve tapback tepkileri (Private API)
#### Çalışılmış örnek: iş parçacıklı yanıtlar ve tapback tepkileri (Private API)
BlueBubbles Private API etkinleştirildiğinde gelen mesajlar kısa mesaj kimlikleriyle gelir (örneğin `[[reply_to:5]]`) ve aracı belirli bir mesaja zincirleme yanıt vermek için `action=reply` veya tapback bırakmak için `action=react` çağırabilir. Grup başına bir `systemPrompt`, aracının doğru aracı seçmesini sağlamanın güvenilir bir yoludur:
BlueBubbles Private API etkinleştirildiğinde, gelen mesajlar kısa mesaj kimlikleriyle gelir (örneğin `[[reply_to:5]]`) ve ajan belirli bir mesaja iş parçacığı içinde yanıt vermek için `action=reply` veya tapback bırakmak için `action=react` çağırabilir. Grup başına `systemPrompt`, ajanın doğru aracı seçmesini sağlamanın güvenilir bir yoludur:
```json5
{
@ -274,15 +274,7 @@ BlueBubbles Private API etkinleştirildiğinde gelen mesajlar kısa mesaj kimlik
bluebubbles: {
groups: {
"iMessage;+;chat-family": {
systemPrompt: [
"When replying in this group, always call action=reply with the",
"[[reply_to:N]] messageId from context so your response threads",
"under the triggering message. Never send a new unlinked message.",
"",
"For short acknowledgements ('ok', 'got it', 'on it'), use",
"action=react with an appropriate tapback emoji (❤️, 👍, 😂, ‼️, ❓)",
"instead of sending a text reply.",
].join(" "),
systemPrompt: "When replying in this group, always call action=reply with the [[reply_to:N]] messageId from context so your response threads under the triggering message. Never send a new unlinked message. For short acknowledgements ('ok', 'got it', 'on it'), use action=react with an appropriate tapback emoji (❤️, 👍, 😂, ‼️, ❓) instead of sending a text reply.",
},
},
},
@ -290,20 +282,20 @@ BlueBubbles Private API etkinleştirildiğinde gelen mesajlar kısa mesaj kimlik
}
```
Tapback tepkileri ve zincirlenmiş yanıtların ikisi de BlueBubbles Private API gerektirir; temel mekanikler için [Gelişmiş eylemler](#advanced-actions) ve [Mesaj kimlikleri](#message-ids-short-vs-full) bölümlerine bakın.
Tapback tepkileri ve iş parçacıklı yanıtların ikisi de BlueBubbles Private API gerektirir; alttaki mekanikler için [Gelişmiş eylemler](#advanced-actions) ve [Mesaj kimlikleri](#message-ids-short-vs-full) bölümlerine bakın.
## ACP konuşma bağlamaları
BlueBubbles sohbetleri, aktarım katmanını değiştirmeden dayanıklı ACP çalışma alanlarına dönüştürülebilir.
BlueBubbles sohbetleri, taşıma katmanını değiştirmeden kalıcı ACP çalışma alanlarına dönüştürülebilir.
Hızlı operatör akışı:
- DM veya izin verilen grup sohbeti içinde `/acp spawn codex --bind here` çalıştırın.
- DM veya izin verilen grup sohbetinin içinde `/acp spawn codex --bind here` çalıştırın.
- Aynı BlueBubbles konuşmasındaki gelecekteki mesajlar oluşturulan ACP oturumuna yönlendirilir.
- `/new` ve `/reset` aynı bağlı ACP oturumunu yerinde sıfırlar.
- `/acp close` ACP oturumunu kapatır ve bağlamayı kaldırır.
- `/new` ve `/reset`, aynı bağlı ACP oturumunu yerinde sıfırlar.
- `/acp close`, ACP oturumunu kapatır ve bağlamayı kaldırır.
Yapılandırılmış kalıcı bağlamalar, `type: "acp"` ve `match.channel: "bluebubbles"` içeren üst düzey `bindings[]` girişleri üzerinden de desteklenir.
Yapılandırılmış kalıcı bağlamalar, `type: "acp"` ve `match.channel: "bluebubbles"` içeren üst düzey `bindings[]` girişleriyle de desteklenir.
`match.peer.id` desteklenen herhangi bir BlueBubbles hedef biçimini kullanabilir:
@ -344,13 +336,13 @@ Kararlı grup bağlamaları için `chat_id:*` veya `chat_identifier:*` tercih ed
}
```
Paylaşılan ACP bağlama davranışı için [ACP Agents](/tr/tools/acp-agents) bölümüne bakın.
Paylaşılan ACP bağlama davranışı için [ACP Ajanları](/tr/tools/acp-agents) bölümüne bakın.
## Yazıyor göstergeleri + okundu bilgileri
## Yazıyor + okundu bilgileri
- **Yazma göstergeleri**: Yanıt oluşturulmadan önce ve yanıt oluşturma sırasında otomatik olarak gönderilir.
- **Yazıyor göstergeleri**: Yanıt üretiminden önce ve üretim sırasında otomatik olarak gönderilir.
- **Okundu bilgileri**: `channels.bluebubbles.sendReadReceipts` tarafından kontrol edilir (varsayılan: `true`).
- **Yazma göstergeleri**: OpenClaw yazma başlangıç olayları gönderir; BlueBubbles gönderimde veya zaman aşımında yazmayı otomatik olarak temizler (DELETE ile elle durdurma güvenilir değildir).
- **Yazıyor göstergeleri**: OpenClaw yazma başlangıç olayları gönderir; BlueBubbles gönderimde veya zaman aşımında yazma durumunu otomatik olarak temizler (DELETE ile elle durdurma güvenilir değildir).
```json5
{
@ -364,7 +356,7 @@ Paylaşılan ACP bağlama davranışı için [ACP Agents](/tr/tools/acp-agents)
## Gelişmiş eylemler
BlueBubbles, yapılandırmada etkinleştirildiğinde gelişmiş ileti eylemlerini destekler:
BlueBubbles, yapılandırmada etkinleştirildiğinde gelişmiş mesaj eylemlerini destekler:
```json5
{
@ -389,32 +381,32 @@ BlueBubbles, yapılandırmada etkinleştirildiğinde gelişmiş ileti eylemlerin
```
<AccordionGroup>
<Accordion title="Kullanılabilir eylemler">
- **react**: Tapback tepkileri ekler/kaldırır (`messageId`, `emoji`, `remove`). iMessage'ın yerel tapback kümesi `love`, `like`, `dislike`, `laugh`, `emphasize` ve `question` değerlerinden oluşur. Bir aracı bu kümenin dışında bir emoji seçtiğinde (örneğin `👀`), tepki aracı tüm isteği başarısız kılmak yerine tapback'in yine de işlenmesi için `love` değerine geri döner. Yapılandırılmış ack tepkileri yine de katı biçimde doğrulanır ve bilinmeyen değerlerde hata verir.
- **edit**: Gönderilmiş bir iletiyi düzenler (`messageId`, `text`).
- **unsend**: Bir iletiyi göndermeyi geri alır (`messageId`).
- **reply**: Belirli bir iletiyi yanıtlar (`messageId`, `text`, `to`).
- **sendWithEffect**: iMessage efektiyle gönderir (`text`, `to`, `effectId`).
- **renameGroup**: Bir grup sohbetini yeniden adlandırır (`chatGuid`, `displayName`).
- **setGroupIcon**: Bir grup sohbetinin simgesini/fotoğrafını ayarlar (`chatGuid`, `media`) — macOS 26 Tahoe'da kararsızdır (API başarı döndürebilir ama simge eşitlenmez).
- **addParticipant**: Bir gruba birini ekler (`chatGuid`, `address`).
- **removeParticipant**: Bir gruptan birini kaldırır (`chatGuid`, `address`).
- **leaveGroup**: Bir grup sohbetinden ayrılır (`chatGuid`).
- **upload-file**: Medya/dosya gönderir (`to`, `buffer`, `filename`, `asVoice`).
- Sesli notlar: iMessage sesli iletisi olarak göndermek için **MP3** veya **CAF** sesle `asVoice: true` ayarlayın. BlueBubbles, sesli not gönderirken MP3 → CAF dönüştürür.
- Eski takma ad: `sendAttachment` hâlâ çalışır, ancak kanonik eylem adı `upload-file` değeridir.
<Accordion title="Available actions">
- **react**: Tapback tepkileri ekleyin/kaldırın (`messageId`, `emoji`, `remove`). iMessage'ın yerel tapback kümesi `love`, `like`, `dislike`, `laugh`, `emphasize` ve `question` değerlerinden oluşur. Bir ajan bu kümenin dışında bir emoji seçtiğinde (örneğin `👀`), tepki aracı `love` değerine geri döner; böylece tapback, tüm isteğin başarısız olması yerine yine de görüntülenir. Yapılandırılmış onay tepkileri yine katı şekilde doğrulanır ve bilinmeyen değerlerde hata verir.
- **edit**: Gönderilmiş bir mesajı düzenleyin (`messageId`, `text`).
- **unsend**: Bir mesajı göndermeyi geri alın (`messageId`).
- **reply**: Belirli bir mesaja yanıt verin (`messageId`, `text`, `to`).
- **sendWithEffect**: iMessage efektiyle gönderin (`text`, `to`, `effectId`).
- **renameGroup**: Bir grup sohbetini yeniden adlandırın (`chatGuid`, `displayName`).
- **setGroupIcon**: Bir grup sohbetinin simgesini/fotoğrafını ayarlayın (`chatGuid`, `media`) — macOS 26 Tahoe'da kararsızdır (API başarılı dönebilir ancak simge senkronize olmayabilir).
- **addParticipant**: Bir gruba birini ekleyin (`chatGuid`, `address`).
- **removeParticipant**: Birini bir gruptan kaldırın (`chatGuid`, `address`).
- **leaveGroup**: Bir grup sohbetinden ayrılın (`chatGuid`).
- **upload-file**: Medya/dosya gönderin (`to`, `buffer`, `filename`, `asVoice`).
- Sesli notlar: iMessage sesli mesajı olarak göndermek için **MP3** veya **CAF** sesle `asVoice: true` ayarlayın. BlueBubbles, sesli not gönderirken MP3 → CAF dönüşümü yapar.
- Eski takma ad: `sendAttachment` çalışmaya devam eder, ancak kurallı eylem adı `upload-file` değeridir.
</Accordion>
</AccordionGroup>
### İleti kimlikleri (kısa ve tam)
### Mesaj kimlikleri (kısa ve tam)
OpenClaw, token tasarrufu için _kısa_ ileti kimliklerini (örn. `1`, `2`) gösterebilir.
OpenClaw, token tasarrufu için _kısa_ mesaj kimlikleri (örn. `1`, `2`) gösterebilir.
- `MessageSid` / `ReplyToId` kısa kimlikler olabilir.
- `MessageSidFull` / `ReplyToIdFull` sağlayıcının tam kimliklerini içerir.
- Kısa kimlikler bellekte tutulur; yeniden başlatmada veya önbellek temizliğinde süresi dolabilir.
- Eylemler kısa veya tam `messageId` kabul eder, ancak kısa kimlikler artık kullanılabilir değilse hata verir.
- Kısa kimlikler bellek içindedir; yeniden başlatmada veya önbellekten çıkarıldığında süresi dolabilir.
- Eylemler kısa veya tam `messageId` kabul eder, ancak kısa kimlikler artık mevcut değilse hata verir.
Kalıcı otomasyonlar ve depolama için tam kimlikleri kullanın:
@ -425,32 +417,32 @@ Kalıcı otomasyonlar ve depolama için tam kimlikleri kullanın:
<a id="coalescing-split-send-dms-command--url-in-one-composition"></a>
## Bölünmüş gönderimli DM'leri birleştirme (tek kompozisyonda komut + URL)
## Bölünmüş gönderilen DM'leri birleştirme (tek kompozisyonda komut + URL)
Bir kullanıcı iMessage'da bir komutu ve bir URL'yi birlikte yazdığında — örn. `Dump https://example.com/article` — Apple gönderimi **iki ayrı webhook teslimatına** böler:
Bir kullanıcı iMessage'da bir komutu ve URL'yi birlikte yazdığında — örn. `Dump https://example.com/article` — Apple gönderimi **iki ayrı Webhook teslimine** böler:
1. Bir metin iletisi (`"Dump"`).
2. Ek olarak OG önizleme görselleriyle bir URL önizleme balonu (`"https://..."`).
1. Bir metin mesajı (`"Dump"`).
2. Ek olarak OG önizleme görselleri bulunan bir URL önizleme balonu (`"https://..."`).
İki Webhook, çoğu kurulumda OpenClaw'a yaklaşık 0,8-2,0 sn arayla ulaşır. Birleştirme olmadan aracı 1. turda yalnızca komutu alır, yanıtlar (çoğunlukla "URL'yi gönder") ve URL'yi yalnızca 2. turda görür — bu noktada komut bağlamı zaten kaybolmuştur.
Çoğu kurulumda iki Webhook OpenClaw'a yaklaşık 0,8-2,0 sn arayla ulaşır. Birleştirme olmadan ajan 1. turda yalnızca komutu alır, yanıt verir (çoğunlukla "URL'yi bana gönder") ve URL'yi yalnızca 2. turda görür — bu noktada komut bağlamı zaten kaybolmuştur.
`channels.bluebubbles.coalesceSameSenderDms`, bir DM'yi aynı göndericiden gelen ardışık webhook'ları tek bir aracı turunda birleştirmeye dahil eder. Grup sohbetleri, çok kullanıcılı tur yapısının korunması için ileti başına anahtarlanmaya devam eder.
`channels.bluebubbles.coalesceSameSenderDms`, bir DM'i aynı gönderenden gelen ardışık Webhook'ları tek bir ajan turunda birleştirmeye dahil eder. Grup sohbetleri, çok kullanıcılı tur yapısının korunması için mesaj başına anahtarlanmaya devam eder.
<Tabs>
<Tab title="Ne zaman etkinleştirilmeli">
<Tab title="When to enable">
Şu durumlarda etkinleştirin:
- Tek iletide `command + payload` bekleyen Skills gönderiyorsanız (dump, paste, save, queue vb.).
- Kullanıcılarınız komutlarla birlikte URL, görsel veya uzun içerik yapıştırıyorsa.
- Tek bir mesajda `command + payload` bekleyen skills gönderiyorsanız (dump, paste, save, queue vb.).
- Kullanıcılarınız komutların yanına URL'ler, görseller veya uzun içerikler yapıştırıyorsa.
- Eklenen DM tur gecikmesini kabul edebiliyorsanız (aşağıya bakın).
Şu durumlarda devre dışı bırakın:
- Tek sözcüklü DM tetikleyicileri için en düşük komut gecikmesine ihtiyacınız varsa.
- Tüm akışlarınız, yük devamı olmayan tek seferlik komutlarsa.
- Tek kelimelik DM tetikleyicileri için minimum komut gecikmesine ihtiyacınız varsa.
- Tüm akışlarınız, yük devamı olmayan tek seferlik komutlardan oluşuyorsa.
</Tab>
<Tab title="Etkinleştirme">
<Tab title="Enabling">
```json5
{
channels: {
@ -461,7 +453,7 @@ Bir kullanıcı iMessage'da bir komutu ve bir URL'yi birlikte yazdığında —
}
```
Bayrak açıkken ve açık bir `messages.inbound.byChannel.bluebubbles` yokken debounce penceresi **2500 ms** değerine genişler (birleştirme olmayan varsayılan 500 ms'dir). Daha geniş pencere gereklidir — Apple'ın 0,8-2,0 sn'lik bölünmüş gönderim temposu daha dar varsayılana sığmaz.
Bayrak açıkken ve açık bir `messages.inbound.byChannel.bluebubbles` yokken, debounce penceresi **2500 ms** değerine genişler (birleştirme kullanılmadığında varsayılan 500 ms'dir). Daha geniş pencere gereklidir — Apple'ın 0,8-2,0 sn'lik bölünmüş gönderim ritmi daha dar varsayılana sığmaz.
Pencereyi kendiniz ayarlamak için:
@ -480,31 +472,31 @@ Bir kullanıcı iMessage'da bir komutu ve bir URL'yi birlikte yazdığında —
```
</Tab>
<Tab title="Ödünleşimler">
- **DM denetim komutları için ek gecikme.** Bayrak açıkken, DM denetim komutu iletileri (`Dump`, `Save` vb.) artık olası bir yük webhook'u için gönderimden önce debounce penceresine kadar bekler. Grup sohbeti komutları anında gönderimi korur.
- **Birleştirilmiş çıktı sınırlıdır** — birleştirilmiş metin, açık bir `…[truncated]` işaretiyle 4000 karakterde sınırlandırılır; ekler 20 ile sınırlandırılır; kaynak girdileri 10 ile sınırlandırılır (bunun ötesinde ilk-artı-en-son korunur). Her kaynak `messageId` yine de gelen-dedupe katmanına ulaşır; böylece herhangi bir tekil olayın daha sonraki MessagePoller yeniden oynatımı kopya olarak tanınır.
<Tab title="Trade-offs">
- **DM kontrol komutları için ek gecikme.** Bayrak açıkken, DM kontrol komutu mesajları (`Dump`, `Save` vb. gibi), bir yük Webhook'u gelme ihtimaline karşı gönderilmeden önce artık debounce penceresine kadar bekler. Grup sohbeti komutları anında gönderilmeye devam eder.
- **Birleştirilmiş çıktı sınırlıdır** — birleştirilmiş metin, açık bir `…[truncated]` işaretiyle 4000 karakterde sınırlandırılır; ekler 20 ile sınırlandırılır; kaynak girişleri 10 ile sınırlandırılır (bunun ötesinde ilk-artı-en-son korunur). Her kaynak `messageId` yine de gelen tekilleştirmeye ulaşır, böylece daha sonraki bir MessagePoller yeniden oynatması, herhangi bir tekil olayı kopya olarak tanır.
- **İsteğe bağlı, kanal başına.** Diğer kanallar (Telegram, WhatsApp, Slack, …) etkilenmez.
</Tab>
</Tabs>
### Senaryolar ve aracının gördükleri
### Senaryolar ve ajanın gördükleri
| Kullanıcının oluşturduğu | Apple'ın teslim ettiği | Bayrak kapalı (varsayılan) | Bayrak açık + 2500 ms pencere |
| ------------------------------------------------------------------ | -------------------------- | ---------------------------------------- | ----------------------------------------------------------------------- |
| `Dump https://example.com` (tek gönderim) | ~1 sn arayla 2 webhook | İki aracı turu: yalnız "Dump", sonra URL | Tek tur: birleştirilmiş metin `Dump https://example.com` |
| `Save this 📎image.jpg caption` (ek + metin) | 2 webhook | İki tur | Tek tur: metin + görsel |
| `/status` (bağımsız komut) | 1 webhook | Anında gönderim | **Pencereye kadar bekle, sonra gönder** |
| Tek başına yapıştırılan URL | 1 webhook | Anında gönderim | Anında gönderim (kovada yalnızca bir girdi) |
| Dakikalar arayla kasıtlı iki ayrı ileti olarak gönderilen metin + URL | Pencere dışında 2 webhook | İki tur | İki tur (pencere aralarında sona erer) |
| Hızlı tma (pencere içinde >10 küçük DM) | N webhook | N tur | Tek tur, sınırlı çıktı (ilk + son, metin/ek sınırları uygulanır) |
| Kullanıcının oluşturduğu | Apple'ın teslim ettiği | Bayrak kapalı (varsayılan) | Bayrak açık + 2500 ms pencere |
| ------------------------------------------------------------------ | ------------------------- | --------------------------------------- | ----------------------------------------------------------------------- |
| `Dump https://example.com` (tek gönderim) | ~1 sn arayla 2 Webhook | İki ajan turu: yalnızca "Dump", sonra URL | Tek tur: birleştirilmiş metin `Dump https://example.com` |
| `Save this 📎image.jpg caption` (ek + metin) | 2 Webhook | İki tur | Tek tur: metin + görsel |
| `/status` (bağımsız komut) | 1 Webhook | Anında gönderim | **Pencereye kadar bekle, ardından gönder** |
| Tek başına yapıştırılan URL | 1 Webhook | Anında gönderim | Anında gönderim (kovada yalnızca bir giriş) |
| Dakikalar arayla, bilerek iki ayrı mesaj olarak gönderilen metin + URL | pencere dışında 2 Webhook | İki tur | İki tur (aralarında pencere sona erer) |
| Hızlı akış (pencere içinde >10 küçük DM) | N Webhook | N tur | Tek tur, sınırlı çıktı (ilk + en son, metin/ek sınırları uygulanır) |
### Bölünmüş gönderim birleştirme sorun giderme
Bayrak açıksa ve bölünmüş gönderimler hâlâ iki tur olarak geliyorsa, her katmanı kontrol edin:
<AccordionGroup>
<Accordion title="Yapılandırma gerçekten yüklendi">
<Accordion title="Config actually loaded">
```
grep coalesceSameSenderDms ~/.openclaw/openclaw.json
```
@ -512,30 +504,30 @@ Bayrak açıksa ve bölünmüş gönderimler hâlâ iki tur olarak geliyorsa, he
Ardından `openclaw gateway restart` — bayrak, debouncer-registry oluşturulurken okunur.
</Accordion>
<Accordion title="Debounce penceresi kurulumunuz için yeterince geniş">
<Accordion title="Debounce window wide enough for your setup">
BlueBubbles sunucu günlüğüne `~/Library/Logs/bluebubbles-server/main.log` altında bakın:
```
grep -E "Dispatching event to webhook" main.log | tail -20
```
`"Dump"` tarzı metin gönderimi ile onu izleyen `"https://..."; Attachments:` gönderimi arasındaki boşluğu ölçün. `messages.inbound.byChannel.bluebubbles` değerini bu boşluğu rahatça kapsayacak şekilde artırın.
`"Dump"` tarzı metin gönderimi ile ardından gelen `"https://..."; Attachments:` gönderimi arasındaki boşluğu ölçün. `messages.inbound.byChannel.bluebubbles` değerini bu boşluğu rahatça kapsayacak şekilde artırın.
</Accordion>
<Accordion title="Oturum JSONL zaman damgaları ≠ webhook varışı">
Oturum olay zaman damgaları (`~/.openclaw/agents/<id>/sessions/*.jsonl`), webhook'un ne zaman geldiğini değil, Gateway'in bir iletiyi aracıya ne zaman teslim ettiğini yansıtır. `[Queued messages while agent was busy]` etiketli kuyruğa alınmış ikinci ileti, ikinci webhook geldiğinde ilk turun hâlâ çalıştığı anlamına gelir — birleştirme kovası zaten boşaltılmıştı. Pencereyi oturum günlüğüne değil, BB sunucu günlüğüne göre ayarlayın.
<Accordion title="Session JSONL timestamps ≠ webhook arrival">
Oturum olay zaman damgaları (`~/.openclaw/agents/<id>/sessions/*.jsonl`), Webhook'un geldiği zamanı **değil**, Gateway'in bir mesajı ajana verdiği zamanı yansıtır. `[Queued messages while agent was busy]` etiketiyle işaretlenmiş kuyruktaki ikinci mesaj, ikinci Webhook geldiğinde ilk turun hâlâ çalıştığı anlamına gelir — birleştirme kovası zaten boşaltılmıştır. Pencereyi oturum günlüğüne göre değil, BB sunucu günlüğüne göre ayarlayın.
</Accordion>
<Accordion title="Bellek baskısı yanıt gönderimini yavaşlatıyor">
Daha küçük makinelerde (8 GB), aracı turları yeterince uzun sürebilir; bu durumda birleştirme kovası yanıt tamamlanmadan önce boşalır ve URL kuyruğa alınmış ikinci tur olarak düşer. `memory_pressure` ve `ps -o rss -p $(pgrep openclaw-gateway)` değerlerini kontrol edin; Gateway ~500 MB RSS üstündeyse ve sıkıştırıcı etkinse diğer ağır süreçleri kapatın veya daha büyük bir ana makineye geçin.
<Accordion title="Memory pressure slowing reply dispatch">
Daha küçük makinelerde (8 GB), ajan turları yanıt tamamlanmadan önce birleştirme kovasının boşalacağı kadar uzun sürebilir ve URL kuyruktaki ikinci tur olarak gelir. `memory_pressure` ve `ps -o rss -p $(pgrep openclaw-gateway)` değerlerini kontrol edin; Gateway ~500 MB RSS üzerindeyse ve sıkıştırıcı etkinse, diğer ağır süreçleri kapatın veya daha büyük bir ana makineye geçin.
</Accordion>
<Accordion title="Yanıt-alıntı gönderimleri farklı bir yoldur">
Kullanıcı `Dump` öğesine var olan bir URL balonuna **yanıt** olarak dokunduysa (iMessage, Dump balonunda "1 Reply" rozeti gösterir), URL ikinci bir webhook'ta değil `replyToBody` içinde yaşar. Birleştirme uygulanmaz — bu bir debouncer konusu değil, skill/prompt konusudur.
<Accordion title="Reply-quote sends are a different path">
Kullanıcı mevcut bir URL balonuna **yanıt** olarak `Dump` öğesine dokunduysa (iMessage, Dump balonunda "1 Reply" rozeti gösterir), URL ikinci bir Webhook'ta değil `replyToBody` içinde bulunur. Birleştirme uygulanmaz — bu bir debouncer konusu değil, skill/prompt konusudur.
</Accordion>
</AccordionGroup>
## Blok akışı
Yanıtların tek ileti olarak mı yoksa bloklar halinde akışla mı gönderileceğini kontrol edin:
Yanıtların tek bir mesaj olarak mı yoksa bloklar halinde akışla mı gönderileceğini kontrol edin:
```json5
{
@ -550,45 +542,45 @@ Yanıtların tek ileti olarak mı yoksa bloklar halinde akışla mı gönderilec
## Medya + sınırlar
- Gelen ekler indirilir ve medya önbelleğinde saklanır.
- Gelen ve giden medya için medya sınırı `channels.bluebubbles.mediaMaxMb` üzerinden ayarlanır (varsayılan: 8 MB).
- Gelen ve giden medya için `channels.bluebubbles.mediaMaxMb` aracılığıyla medya sınırı (varsayılan: 8 MB).
- Giden metin `channels.bluebubbles.textChunkLimit` değerine göre parçalara ayrılır (varsayılan: 4000 karakter).
## Yapılandırma referansı
## Yapılandırma başvurusu
Tam yapılandırma: [Yapılandırma](/tr/gateway/configuration)
<AccordionGroup>
<Accordion title="Bağlantı ve webhook">
- `channels.bluebubbles.enabled`: Kanalı etkinleştirir/devre dışı bırakır.
<Accordion title="Connection and webhook">
- `channels.bluebubbles.enabled`: Kanalı etkinleştirin/devre dışı bırakın.
- `channels.bluebubbles.serverUrl`: BlueBubbles REST API temel URL'si.
- `channels.bluebubbles.password`: API parolası.
- `channels.bluebubbles.webhookPath`: Webhook uç noktası yolu (varsayılan: `/bluebubbles-webhook`).
</Accordion>
<Accordion title="Erişim ilkesi">
<Accordion title="Access policy">
- `channels.bluebubbles.dmPolicy`: `pairing | allowlist | open | disabled` (varsayılan: `pairing`).
- `channels.bluebubbles.allowFrom`: DM izin listesi (kullanıcı adları, e-postalar, E.164 numaraları, `chat_id:*`, `chat_guid:*`).
- `channels.bluebubbles.allowFrom`: DM izin listesi (tanıtıcılar, e-postalar, E.164 numaraları, `chat_id:*`, `chat_guid:*`).
- `channels.bluebubbles.groupPolicy`: `open | allowlist | disabled` (varsayılan: `allowlist`).
- `channels.bluebubbles.groupAllowFrom`: Grup gönderen izin listesi.
- `channels.bluebubbles.enrichGroupParticipantsFromContacts`: macOS'ta, geçit denetimleri geçtikten sonra adsız grup katılımcılarını yerel Kişiler'den isteğe bağlı olarak zenginleştirir. Varsayılan: `false`.
- `channels.bluebubbles.groupAllowFrom`: Grup gönderici izin listesi.
- `channels.bluebubbles.enrichGroupParticipantsFromContacts`: macOS'te, kapıdan geçtikten sonra adlandırılmamış grup katılımcılarını yerel Contacts'tan isteğe bağlı olarak zenginleştirin. Varsayılan: `false`.
- `channels.bluebubbles.groups`: Grup başına yapılandırma (`requireMention` vb.).
</Accordion>
<Accordion title="Teslim ve parçalara ayırma">
<Accordion title="Teslim ve parçalama">
- `channels.bluebubbles.sendReadReceipts`: Okundu bilgileri gönder (varsayılan: `true`).
- `channels.bluebubbles.blockStreaming`: Blok akışını etkinleştir (varsayılan: `false`; akışlı yanıtlar için gereklidir).
- `channels.bluebubbles.textChunkLimit`: Giden parça boyutu karakter cinsinden (varsayılan: 4000).
- `channels.bluebubbles.sendTimeoutMs`: `/api/v1/message/text` üzerinden yapılan giden metin gönderimleri için istek başına zaman aşımı, ms cinsinden (varsayılan: 30000). Private API iMessage gönderimlerinin iMessage framework içinde 60+ saniye takılabildiği macOS 26 kurulumlarında artırın; örneğin `45000` veya `60000`. Problar, sohbet aramaları, tepkiler, düzenlemeler ve sağlık kontrolleri şu anda daha kısa olan 10 sn varsayılanını korur; kapsamın tepkilere ve düzenlemelere genişletilmesi takip işi olarak planlanmıştır. Hesap başına geçersiz kılma: `channels.bluebubbles.accounts.<accountId>.sendTimeoutMs`.
- `channels.bluebubbles.chunkMode`: `length` (varsayılan) yalnızca `textChunkLimit`ıldığında böler; `newline`, uzunluğa göre parçalara ayırmadan önce boş satırlardan (paragraf sınırları) böler.
- `channels.bluebubbles.textChunkLimit`: Giden parça boyutu, karakter cinsinden (varsayılan: 4000).
- `channels.bluebubbles.sendTimeoutMs`: `/api/v1/message/text` üzerinden giden metin gönderimleri için istek başına zaman aşımı, ms cinsinden (varsayılan: 30000). Private API iMessage gönderimlerinin iMessage çerçevesi içinde 60+ saniye takılabildiği macOS 26 kurulumlarında artırın; örneğin `45000` veya `60000`. Yoklamalar, sohbet aramaları, tepkiler, düzenlemeler ve sağlık kontrolleri şu anda daha kısa olan 10 saniyelik varsayılanı korur; kapsamın tepkilere ve düzenlemelere genişletilmesi devam işi olarak planlanmıştır. Hesap başına geçersiz kılma: `channels.bluebubbles.accounts.<accountId>.sendTimeoutMs`.
- `channels.bluebubbles.chunkMode`: `length` (varsayılan) yalnızca `textChunkLimit`ıldığında böler; `newline` uzunluk bazlı parçalamadan önce boş satırlarda (paragraf sınırlarında) böler.
</Accordion>
<Accordion title="Medya ve geçmiş">
- `channels.bluebubbles.mediaMaxMb`: Gelen/giden medya sınırı, MB cinsinden (varsayılan: 8).
- `channels.bluebubbles.mediaLocalRoots`: Giden yerel medya yolları için izin verilen mutlak yerel dizinlerin açık izin listesi. Bu yapılandırılmadıkça yerel yol gönderimleri varsayılan olarak reddedilir. Hesap başına geçersiz kılma: `channels.bluebubbles.accounts.<accountId>.mediaLocalRoots`.
- `channels.bluebubbles.coalesceSameSenderDms`: Apple'ın metin+URL ayrı gönderimi tek bir mesaj olarak gelsin diye aynı gönderenden gelen ardışık DM Webhook'larını tek bir ajan turunda birleştirir (varsayılan: `false`). Senaryolar, pencere ayarı ve ödünleşimler için [bölünmüş gönderim DM'lerini birleştirme](#coalescing-split-send-dms-command--url-in-one-composition) bölümüne bakın. Açık bir `messages.inbound.byChannel.bluebubbles` olmadan etkinleştirildiğinde varsayılan gelen debounce penceresini 500 ms'den 2500 ms'ye genişletir.
- `channels.bluebubbles.historyLimit`: Bağlam için en fazla grup mesajı (0 devre dışı bırakır).
- `channels.bluebubbles.mediaLocalRoots`: Giden yerel medya yolları için izin verilen mutlak yerel dizinlerin açık izin listesi. Yerel yol gönderimleri, bu yapılandırılmadıkça varsayılan olarak reddedilir. Hesap başına geçersiz kılma: `channels.bluebubbles.accounts.<accountId>.mediaLocalRoots`.
- `channels.bluebubbles.coalesceSameSenderDms`: Apple'ın metin+URL bölünmüş gönderiminin tek bir ileti olarak gelmesi için ardışık aynı göndericili DM Webhook'larını tek bir ajan turunda birleştir (varsayılan: `false`). Senaryolar, pencere ayarı ve ödünleşimler için [Bölünmüş gönderimli DM'leri birleştirme](#coalescing-split-send-dms-command--url-in-one-composition) bölümüne bakın. Açık bir `messages.inbound.byChannel.bluebubbles` olmadan etkinleştirildiğinde varsayılan gelen debounce penceresini 500 ms'den 2500 ms'ye genişletir.
- `channels.bluebubbles.historyLimit`: Bağlam için en fazla grup iletisi (0 devre dışı bırakır).
- `channels.bluebubbles.dmHistoryLimit`: DM geçmiş sınırı.
- `channels.bluebubbles.replyContextApiFallback`: Gelen bir yanıt `replyToBody`/`replyToSender` olmadan geldiğinde ve bellek içi yanıt bağlamı önbelleğinde isabet olmadığında, en iyi çaba yedek yolu olarak özgün mesajı BlueBubbles HTTP API'den alır (varsayılan: `false`). Tek bir BlueBubbles hesabını paylaşan çok örnekli dağıtımlar, süreç yeniden başlatmaları veya uzun ömürlü TTL/LRU önbellek tahliyeleri sonrasında kullanışlıdır. Alma işlemi, diğer tüm BlueBubbles istemci istekleriyle aynı ilke tarafından SSRF'ye karşı korunur, asla hata fırlatmaz ve sonraki yanıtların maliyetini yaymak için önbelleği doldurur. Hesap başına geçersiz kılma: `channels.bluebubbles.accounts.<accountId>.replyContextApiFallback`. Kanal düzeyi ayar, bayrağı atlayan hesaplara yayılır.
- `channels.bluebubbles.replyContextApiFallback`: Gelen bir yanıt `replyToBody`/`replyToSender` olmadan ulaştığında ve bellek içi yanıt bağlamı önbelleği isabet etmediğinde, en iyi çaba yedeği olarak özgün iletiyi BlueBubbles HTTP API'sinden getir (varsayılan: `false`). Tek bir BlueBubbles hesabını paylaşan çok örnekli dağıtımlar, işlem yeniden başlatmaları sonrası veya uzun ömürlü TTL/LRU önbellek tahliyesi sonrası kullanışlıdır. Getirme, diğer tüm BlueBubbles istemci istekleriyle aynı ilke tarafından SSRF'ye karşı korunur, asla hata fırlatmaz ve sonraki yanıtların maliyetini yaymak için önbelleği doldurur. Hesap başına geçersiz kılma: `channels.bluebubbles.accounts.<accountId>.replyContextApiFallback`. Kanal düzeyindeki bir ayar, bayrağı atlayan hesaplara yayılır.
</Accordion>
<Accordion title="Eylemler ve hesaplar">
@ -598,7 +590,7 @@ Tam yapılandırma: [Yapılandırma](/tr/gateway/configuration)
</Accordion>
</AccordionGroup>
İlgili genel seçenekler:
İlgili küresel seçenekler:
- `agents.list[].groupChat.mentionPatterns` (veya `messages.groupChat.mentionPatterns`).
- `messages.responsePrefix`.
@ -611,36 +603,36 @@ Kararlı yönlendirme için `chat_guid` tercih edin:
- `chat_id:123`
- `chat_identifier:...`
- Doğrudan tanıtıcılar: `+15555550123`, `user@example.com`
- Bir doğrudan tanıtıcının mevcut bir DM sohbeti yoksa OpenClaw, `POST /api/v1/chat/new` üzerinden bir tane oluşturur. Bunun için BlueBubbles Private API'nin etkinleştirilmiş olması gerekir.
- Doğrudan bir tanıtıcının mevcut bir DM sohbeti yoksa OpenClaw, `POST /api/v1/chat/new` aracılığıyla bir tane oluşturur. Bunun için BlueBubbles Private API'nin etkinleştirilmesi gerekir.
### iMessage ve SMS yönlendirmesi
Aynı tanıtıcının Mac üzerinde hem iMessage hem de SMS sohbeti olduğunda (örneğin iMessage'a kayıtlı ancak yeşil balon yedekleri de almış bir telefon numarası), OpenClaw iMessage sohbetini tercih eder ve hiçbir zaman sessizce SMS'e düşürmez. SMS sohbetini zorlamak için açık bir `sms:` hedef öneki kullanın (örneğin `sms:+15555550123`). Eşleşen bir iMessage sohbeti olmayan tanıtıcılar, BlueBubbles'ın bildirdiği sohbet üzerinden gönderilmeye devam eder.
Aynı tanıtıcının Mac'te hem iMessage hem de SMS sohbeti olduğunda (örneğin iMessage'a kayıtlı ancak yeşil balon yedekleri de almış bir telefon numarası), OpenClaw iMessage sohbetini tercih eder ve hiçbir zaman sessizce SMS'e düşürmez. SMS sohbetini zorlamak için açık bir `sms:` hedef öneki kullanın (örneğin `sms:+15555550123`). Eşleşen bir iMessage sohbeti olmayan tanıtıcılar, BlueBubbles'ın bildirdiği sohbet üzerinden gönderilmeye devam eder.
## Güvenlik
- Webhook istekleri, `guid`/`password` sorgu parametreleri veya üstbilgileri `channels.bluebubbles.password` ile karşılaştırılarak doğrulanır.
- API parolasını ve Webhook uç noktasını gizli tutun (bunlara kimlik bilgileri gibi davranın).
- BlueBubbles Webhook kimlik doğrulaması için localhost atlaması yoktur. Webhook trafiğine proxy uyguluyorsanız BlueBubbles parolasını isteğin uçtan uca üzerinde tutun. `gateway.trustedProxies` burada `channels.bluebubbles.password` yerine geçmez. Bkz. [Gateway güvenliği](/tr/gateway/security#reverse-proxy-configuration).
- Webhook istekleri, `guid`/`password` sorgu parametreleri veya üstbilgileri `channels.bluebubbles.password` ile karşılaştırılarak kimlik doğrulanır.
- API parolasını ve Webhook uç noktasını gizli tutun (bunları kimlik bilgileri gibi ele alın).
- BlueBubbles Webhook kimlik doğrulaması için localhost atlaması yoktur. Webhook trafiğini proxy'liyorsanız, BlueBubbles parolasını istekte uçtan uca koruyun. `gateway.trustedProxies` burada `channels.bluebubbles.password` yerine geçmez. [Gateway güvenliği](/tr/gateway/security#reverse-proxy-configuration) bölümüne bakın.
- LAN dışına açıyorsanız BlueBubbles sunucusunda HTTPS + güvenlik duvarı kurallarını etkinleştirin.
## Sorun giderme
- Yazma/okundu olayları çalışmayı durdurursa BlueBubbles Webhook günlüklerini kontrol edin ve Gateway yolunun `channels.bluebubbles.webhookPath` ile eşleştiğini doğrulayın.
- Eşleme kodları bir saat sonra sona erer; `openclaw pairing list bluebubbles` ve `openclaw pairing approve bluebubbles <code>` kullanın.
- Yazma/okundu olayları çalışmayı durdurursa BlueBubbles Webhook günlüklerini kontrol edin ve gateway yolunun `channels.bluebubbles.webhookPath` ile eşleştiğini doğrulayın.
- Eşleştirme kodlarının süresi bir saat sonra dolar; `openclaw pairing list bluebubbles` ve `openclaw pairing approve bluebubbles <code>` kullanın.
- Tepkiler BlueBubbles private API'sini gerektirir (`POST /api/v1/message/react`); sunucu sürümünün bunu sunduğundan emin olun.
- Düzenleme/göndermeyi geri alma için macOS 13+ ve uyumlu bir BlueBubbles sunucu sürümü gerekir. macOS 26'da (Tahoe), private API değişiklikleri nedeniyle düzenleme şu anda bozuktur.
- Grup simgesi güncellemeleri macOS 26'da (Tahoe) kararsız olabilir: API başarı döndürebilir ancak yeni simge eşitlenmez.
- Düzenleme/göndermeyi geri alma için macOS 13+ ve uyumlu bir BlueBubbles sunucu sürümü gerekir. macOS 26'da (Tahoe), private API değişiklikleri nedeniyle düzenleme şu anda bozuk.
- Grup simgesi güncellemeleri macOS 26'da (Tahoe) tutarsız olabilir: API başarı döndürebilir ancak yeni simge eşitlenmeyebilir.
- OpenClaw, BlueBubbles sunucusunun macOS sürümüne göre bozuk olduğu bilinen eylemleri otomatik olarak gizler. Düzenleme macOS 26'da (Tahoe) hâlâ görünüyorsa `channels.bluebubbles.actions.edit=false` ile elle devre dışı bırakın.
- `coalesceSameSenderDms` etkin ama bölünmüş gönderimler (örn. `Dump` + URL) hâlâ iki tur olarak geliyorsa: [bölünmüş gönderim birleştirme sorun giderme](#split-send-coalescing-troubleshooting) kontrol listesine bakın — yaygın nedenler çok dar debounce penceresi, oturum günlüğü zaman damgalarının Webhook varış zamanı sanılması veya yanıt alıntısı gönderimidir (bu, ikinci bir Webhook değil `replyToBody` kullanır).
- `coalesceSameSenderDms` etkin ama bölünmüş gönderimler (ör. `Dump` + URL) hâlâ iki tur olarak geliyorsa: [bölünmüş gönderim birleştirme sorun giderme](#split-send-coalescing-troubleshooting) denetim listesine bakın — yaygın nedenler çok dar debounce penceresi, oturum günlüğü zaman damgalarının Webhook varışı olarak yanlış okunması veya yanıt alıntısı gönderimidir (bu, ikinci bir Webhook değil `replyToBody` kullanır).
- Durum/sağlık bilgisi için: `openclaw status --all` veya `openclaw status --deep`.
Genel kanal iş akışı başvurusu için [Kanallar](/tr/channels) ve [Plugins](/tr/tools/plugin) kılavuzuna bakın.
## İlgili
- [Kanal Yönlendirme](/tr/channels/channel-routing) — mesajlar için oturum yönlendirmesi
- [Kanal Yönlendirme](/tr/channels/channel-routing) — iletiler için oturum yönlendirmesi
- [Kanallara Genel Bakış](/tr/channels) — desteklenen tüm kanallar
- [Gruplar](/tr/channels/groups) — grup sohbeti davranışı ve bahsetme kapısı
- [Eşleme](/tr/channels/pairing) — DM kimlik doğrulaması ve eşleme akışı
- [Güvenlik](/tr/gateway/security) — erişim modeli ve sıkılaştırma
- [Gruplar](/tr/channels/groups) — grup sohbeti davranışı ve bahsetme geçidi
- [Eşleştirme](/tr/channels/pairing) — DM kimlik doğrulaması ve eşleştirme akışı
- [Güvenlik](/tr/gateway/security) — erişim modeli ve güçlendirme

View File

@ -4,13 +4,13 @@ read_when:
- WhatsApp'ta çoklu ajan yanıtlarında hata ayıklama
sidebarTitle: Broadcast groups
status: experimental
summary: Bir WhatsApp mesajını birden fazla ajana yayınlayın
summary: Bir WhatsApp mesajını birden fazla ajana yayınla
title: Yayın grupları
x-i18n:
generated_at: "2026-04-30T09:05:39Z"
generated_at: "2026-05-04T02:21:31Z"
model: gpt-5.5
provider: openai
source_hash: b0de4ccc85bf79e2ceb1dddd60db067309b15b7f876c92e7d591ff0b4b4315ec
source_hash: eab43d3c3ffddb360340469433d74a380fbab98e662b2463a54f62eafc375b55
source_path: channels/broadcast-groups.md
workflow: 16
---
@ -19,19 +19,19 @@ x-i18n:
**Durum:** Deneysel. 2026.1.9 sürümünde eklendi.
</Note>
## Genel Bakış
## Genel bakış
Yayın Grupları, birden çok ajanın aynı iletiyi aynı anda işlemesini ve yanıtlamasını sağlar. Bu, tek bir WhatsApp grubunda veya DM'de birlikte çalışan uzmanlaşmış ajan ekipleri oluşturmanıza olanak tanır — hepsi tek bir telefon numarası kullanılarak.
Yayın Grupları, birden fazla aracının aynı iletiyi eşzamanlı olarak işlemesini ve yanıtlamasını sağlar. Bu, tek bir WhatsApp grubunda veya DM'de birlikte çalışan özelleşmiş aracı ekipleri oluşturmanıza olanak tanır — hepsi tek bir telefon numarası kullanarak.
Geçerli kapsam: **Yalnızca WhatsApp** (web kanalı).
Geçerli kapsam: **yalnızca WhatsApp** (web kanalı).
Yayın grupları, kanal izin listelerinden ve grup etkinleştirme kurallarından sonra değerlendirilir. WhatsApp gruplarında bu, yayınların OpenClaw normalde yanıt vereceği durumlarda gerçekleştiği anlamına gelir (örneğin: grup ayarlarınıza bağlı olarak bahsedildiğinde).
Yayın grupları, kanal izin listelerinden ve grup etkinleştirme kurallarından sonra değerlendirilir. WhatsApp gruplarında bu, yayınların OpenClaw'ın normalde yanıt vereceği durumlarda gerçekleştiği anlamına gelir (örneğin: grup ayarlarınıza bağlı olarak bahsedildiğinde).
## Kullanım örnekleri
<AccordionGroup>
<Accordion title="1. Uzmanlaşmış ajan ekipleri">
Atomik, odaklanmış sorumluluklara sahip birden çok ajan dağıtın:
<Accordion title="1. Özelleşmiş aracı ekipleri">
Atomik ve odaklanmış sorumluluklara sahip birden fazla aracı dağıtın:
```
Group: "Development Team"
@ -42,7 +42,7 @@ Yayın grupları, kanal izin listelerinden ve grup etkinleştirme kurallarından
- TestGenerator (suggests test cases)
```
Her ajan aynı iletiyi işler ve kendi uzmanlık perspektifini sunar.
Her aracı aynı iletiyi işler ve kendi uzman bakış açısını sunar.
</Accordion>
<Accordion title="2. Çok dilli destek">
@ -90,15 +90,15 @@ Yayın grupları, kanal izin listelerinden ve grup etkinleştirme kurallarından
}
```
**Sonuç:** OpenClaw bu sohbette yanıt vereceği zaman üç ajanın tamamını çalıştırır.
**Sonuç:** OpenClaw bu sohbette yanıt vereceği zaman üç aracının tamamını çalıştırır.
### İşleme stratejisi
Ajanların iletileri nasıl işleyeceğini denetleyin:
Aracıların iletileri nasıl işlediğini denetleyin:
<Tabs>
<Tab title="parallel (varsayılan)">
Tüm ajanlar aynı anda işler:
Tüm aracılar eşzamanlı olarak işler:
```json
{
@ -111,7 +111,7 @@ Ajanların iletileri nasıl işleyeceğini denetleyin:
</Tab>
<Tab title="sequential">
Ajanlar sırayla işler (biri, öncekinin bitmesini bekler):
Aracılar sırayla işler (biri öncekinin bitmesini bekler):
```json
{
@ -166,15 +166,15 @@ Ajanların iletileri nasıl işleyeceğini denetleyin:
<Steps>
<Step title="Gelen ileti ulaşır">
Bir WhatsApp grup veya DM iletisi ulaşır.
Bir WhatsApp grup veya DM iletisi gelir.
</Step>
<Step title="Yayın denetimi">
Sistem, eş kimliğinin `broadcast` içinde olup olmadığını denetler.
</Step>
<Step title="Yayın listesindeyse">
- Listelenen tüm ajanlar iletiyi işler.
- Her ajanın kendi oturum anahtarı ve yalıtılmış bağlamı vardır.
- Ajanlar paralel (varsayılan) veya sıralı olarak işler.
- Listelenen tüm aracılar iletiyi işler.
- Her aracının kendi oturum anahtarı ve yalıtılmış bağlamı vardır.
- Aracılar paralel (varsayılan) veya sıralı olarak işler.
</Step>
<Step title="Yayın listesinde değilse">
@ -183,21 +183,21 @@ Ajanların iletileri nasıl işleyeceğini denetleyin:
</Steps>
<Note>
Yayın grupları kanal izin listelerini veya grup etkinleştirme kurallarını (bahsetmeler/komutlar/vb.) atlamaz. Yalnızca bir ileti işlenmeye uygun olduğunda _hangi ajanların çalışacağını_ değiştirir.
Yayın grupları kanal izin listelerini veya grup etkinleştirme kurallarını (bahsetmeler/komutlar/vb.) atlamaz. Yalnızca bir ileti işlemeye uygun olduğunda _hangi aracıların çalışacağını_ değiştirir.
</Note>
### Oturum yalıtımı
Bir yayın grubundaki her ajan tamamen ayrı şunları korur:
Bir yayın grubundaki her aracı tamamen ayrı şunları korur:
- **Oturum anahtarları** (`agent:alfred:whatsapp:group:120363...` ve `agent:baerbel:whatsapp:group:120363...`)
- **Konuşma geçmişi** (ajan diğer ajanların iletilerini görmez)
- **Çalışma alanı** (yapılandırılmışsa ayrı sandbox'lar)
- **Araç erişimi** (farklı izin/red listeleri)
- **Konuşma geçmişi** (aracı diğer aracıların iletilerini görmez)
- **Çalışma alanı** (yapılandırıldıysa ayrı korumalı alanlar)
- **Araç erişimi** (farklı izin/verme listeleri)
- **Bellek/bağlam** (ayrı IDENTITY.md, SOUL.md, vb.)
- **Grup bağlam arabelleği** (bağlam için kullanılan son grup iletileri) eş başına paylaşılır, böylece tüm yayın ajanları tetiklendiğinde aynı bağlamı görür
- **Grup bağlam arabelleği** (bağlam için kullanılan son grup iletileri) eş başına paylaşılır, böylece tüm yayın aracıları tetiklendiğinde aynı bağlamı görür
Bu, her ajanın şunlara sahip olmasını sağlar:
Bu, her aracının şunlara sahip olmasını sağlar:
- Farklı kişilikler
- Farklı araç erişimi (örn. salt okunur ve okuma-yazma)
@ -206,7 +206,7 @@ Bu, her ajanın şunlara sahip olmasını sağlar:
### Örnek: yalıtılmış oturumlar
`120363403215116621@g.us` grubunda `["alfred", "baerbel"]` ajanlarıyla:
`["alfred", "baerbel"]` aracılarıyla `120363403215116621@g.us` grubunda:
<Tabs>
<Tab title="Alfred'in bağlamı">
@ -230,8 +230,8 @@ Bu, her ajanın şunlara sahip olmasını sağlar:
## En iyi uygulamalar
<AccordionGroup>
<Accordion title="1. Ajanları odaklı tutun">
Her ajanı tek ve net bir sorumlulukla tasarlayın:
<Accordion title="1. Aracıları odaklı tutun">
Her aracıyı tek ve net bir sorumlulukla tasarlayın:
```json
{
@ -241,11 +241,11 @@ Bu, her ajanın şunlara sahip olmasını sağlar:
}
```
**İyi:** Her ajanın bir işi vardır. ❌ **Kötü:** Tek bir genel "dev-helper" ajanı.
**İyi:** Her aracının bir işi vardır. ❌ **Kötü:** Tek bir genel "dev-helper" aracısı.
</Accordion>
<Accordion title="2. Açıklayıcı adlar kullanın">
Her ajanın ne yaptığını netleştirin:
Her aracının ne yaptığını netleştirin:
```json
{
@ -259,32 +259,34 @@ Bu, her ajanın şunlara sahip olmasını sağlar:
</Accordion>
<Accordion title="3. Farklı araç erişimi yapılandırın">
Ajanlara yalnızca ihtiyaç duydukları araçları verin:
Aracılara yalnızca ihtiyaç duydukları araçları verin:
```json
{
"agents": {
"reviewer": {
"tools": { "allow": ["read", "exec"] } // Read-only
"tools": { "allow": ["read", "exec"] }
},
"fixer": {
"tools": { "allow": ["read", "write", "edit", "exec"] } // Read-write
"tools": { "allow": ["read", "write", "edit", "exec"] }
}
}
}
```
`reviewer` salt okunurdur. `fixer` okuyabilir ve yazabilir.
</Accordion>
<Accordion title="4. Performansı izleyin">
Çok sayıda ajanla şunları göz önünde bulundurun:
Çok sayıda aracıyla şunları göz önünde bulundurun:
- Hız için `"strategy": "parallel"` (varsayılan) kullanmak
- Yayın gruplarını 5-10 ajanla sınırlamak
- Daha basit ajanlar için daha hızlı modeller kullanmak
- Hız için `"strategy": "parallel"` (varsayılan) kullanma
- Yayın gruplarını 5-10 aracıyla sınırlama
- Daha basit aracılar için daha hızlı modeller kullanma
</Accordion>
<Accordion title="5. Hataları zarifçe ele alın">
Ajanlar bağımsız olarak başarısız olur. Bir ajanın hatası diğerlerini engellemez:
<Accordion title="5. Hataları zarifçe yönetin">
Aracılar bağımsız olarak başarısız olur. Bir aracının hatası diğerlerini engellemez:
```
Message → [Agent A ✓, Agent B ✗ error, Agent C ✓]
@ -301,9 +303,9 @@ Bu, her ajanın şunlara sahip olmasını sağlar:
Yayın grupları şu anda şunlarla çalışır:
- ✅ WhatsApp (uygulandı)
- 🚧 Telegram (planlanıyor)
- 🚧 Discord (planlanıyor)
- 🚧 Slack (planlanıyor)
- 🚧 Telegram (planlandı)
- 🚧 Discord (planlandı)
- 🚧 Slack (planlandı)
### Yönlendirme
@ -333,12 +335,12 @@ Yayın grupları mevcut yönlendirmeyle birlikte çalışır:
## Sorun giderme
<AccordionGroup>
<Accordion title="Ajanlar yanıt vermiyor">
<Accordion title="Aracılar yanıt vermiyor">
**Denetleyin:**
1. Ajan kimlikleri `agents.list` içinde mevcut.
1. Aracı kimlikleri `agents.list` içinde mevcut.
2. Eş kimliği biçimi doğru (örn. `120363403215116621@g.us`).
3. Ajanlar red listelerinde değil.
3. Aracılar engelleme listelerinde değil.
**Hata ayıklama:**
@ -347,18 +349,18 @@ Yayın grupları mevcut yönlendirmeyle birlikte çalışır:
```
</Accordion>
<Accordion title="Yalnızca bir ajan yanıt veriyor">
<Accordion title="Yalnızca bir aracı yanıt veriyor">
**Neden:** Eş kimliği `bindings` içinde olabilir ancak `broadcast` içinde olmayabilir.
**Düzeltme:** Yayın yapılandırmasına ekleyin veya bağlamalardan kaldırın.
**Çözüm:** Yayın yapılandırmasına ekleyin veya bağlamalardan kaldırın.
</Accordion>
<Accordion title="Performans sorunları">
Çok sayıda ajanla yavaşsa:
Çok sayıda aracıyla yavaşsa:
- Grup başına ajan sayısını azaltın.
- Grup başına aracı sayısını azaltın.
- Daha hafif modeller kullanın (opus yerine sonnet).
- Sandbox başlatma süresini denetleyin.
- Korumalı alan başlatma süresini denetleyin.
</Accordion>
</AccordionGroup>
@ -405,8 +407,8 @@ Yayın grupları mevcut yönlendirmeyle birlikte çalışır:
**Yanıtlar:**
- code-formatter: "Girintileme düzeltildi ve tür ipuçları eklendi"
- security-scanner: "⚠️ 12. satırda SQL enjeksiyonuığı"
- code-formatter: "Girinti düzeltildi ve type hint'ler eklendi"
- security-scanner: "⚠️ 12. satırda SQL injectionığı"
- test-coverage: "Kapsam %45, hata durumları için testler eksik"
- docs-checker: "`process_data` işlevi için docstring eksik"
@ -446,27 +448,27 @@ interface OpenClawConfig {
### Alanlar
<ParamField path="strategy" type='"parallel" | "sequential"' default='"parallel"'>
Ajanların nasıl işleneceği. `parallel` tüm ajanları aynı anda çalıştırır; `sequential` onları dizi sırasına göre çalıştırır.
Aracıların nasıl işleneceği. `parallel` tüm aracıları eşzamanlı olarak çalıştırır; `sequential` onları dizi sırasına göre çalıştırır.
</ParamField>
<ParamField path="[peerId]" type="string[]">
WhatsApp grup JID'si, E.164 numarası veya başka bir eş kimliği. Değer, iletileri işlemesi gereken ajan kimliklerinin dizisidir.
WhatsApp grup JID'si, E.164 numarası veya başka bir eş kimliği. Değer, iletileri işlemesi gereken aracı kimlikleri dizisidir.
</ParamField>
## Sınırlamalar
1. **Maksimum ajan:** Katı bir sınır yoktur, ancak 10+ ajan yavaş olabilir.
2. **Paylaşılan bağlam:** Ajanlar birbirlerinin yanıtlarını görmez (tasarım gereği).
1. **Maksimum aracı:** Katı bir sınır yok, ancak 10+ aracı yavaş olabilir.
2. **Paylaşılan bağlam:** Aracılar birbirlerinin yanıtlarını görmez (tasarım gereği).
3. **İleti sıralaması:** Paralel yanıtlar herhangi bir sırada gelebilir.
4. **Hız sınırları:** Tüm ajanlar WhatsApp hız sınırlarına dahil edilir.
4. **Hız sınırları:** Tüm aracılar WhatsApp hız sınırlarına dahil edilir.
## Gelecekteki geliştirmeler
Planlanan özellikler:
- [ ] Paylaşılan bağlam modu (ajanlar birbirlerinin yanıtlarını görür)
- [ ] Ajan koordinasyonu (ajanlar birbirlerine sinyal gönderebilir)
- [ ] Dinamik ajan seçimi (ileti içeriğine göre ajan seçme)
- [ ] Ajan öncelikleri (bazı ajanlar diğerlerinden önce yanıt verir)
- [ ] Paylaşılan bağlam modu (aracılar birbirlerinin yanıtlarını görür)
- [ ] Aracı koordinasyonu (aracılar birbirlerine sinyal verebilir)
- [ ] Dinamik aracı seçimi (ileti içeriğine göre aracı seçme)
- [ ] Aracı öncelikleri (bazı aracılar diğerlerinden önce yanıt verir)
## İlgili

File diff suppressed because it is too large Load Diff

View File

@ -4,15 +4,15 @@ read_when:
summary: Google Chat uygulamasının destek durumu, yetenekleri ve yapılandırması
title: Google Chat
x-i18n:
generated_at: "2026-05-02T08:46:50Z"
generated_at: "2026-05-04T02:21:23Z"
model: gpt-5.5
provider: openai
source_hash: fdb8dcf651602e92801d7107646d853871ea6cef188a8733a831695a1243740e
source_hash: afa2ca4d9673396aa24a55ca5855a34ad26a4640c3a1f6928dbf7246e403cb04
source_path: channels/googlechat.md
workflow: 16
---
Durum: Google Chat API Webhook'ları üzerinden DM'ler + alanlar için indirilebilir Plugin (yalnızca HTTP).
Durum: Google Chat API web kancaları üzerinden DM'ler ve alanlar için indirilebilir Plugin (yalnızca HTTP).
## Kurulum
@ -31,72 +31,72 @@ openclaw plugins install ./path/to/local/googlechat-plugin
## Hızlı kurulum (başlangıç)
1. Bir Google Cloud projesi oluşturun ve **Google Chat API**'yi etkinleştirin.
- Şuraya gidin: [Google Chat API Credentials](https://console.cloud.google.com/apis/api/chat.googleapis.com/credentials)
- Şuraya gidin: [Google Chat API kimlik bilgileri](https://console.cloud.google.com/apis/api/chat.googleapis.com/credentials)
- API zaten etkin değilse etkinleştirin.
2. Bir **Service Account** oluşturun:
- **Create Credentials** > **Service Account** düğmesine basın.
- İstediğiniz bir ad verin (örn. `openclaw-chat`).
- İzinleri boş bırakın (**Continue** düğmesine basın).
- Erişimi olan principals alanını boş bırakın (**Done** düğmesine basın).
- **Create Credentials** > **Service Account**'a basın.
- İstediğiniz gibi adlandırın (ör. `openclaw-chat`).
- İzinleri boş bırakın (**Continue**'a basın).
- Erişimi olan sorumluları boş bırakın (**Done**'a basın).
3. **JSON Key** oluşturun ve indirin:
- Service account listesinden az önce oluşturduğunuza tıklayın.
- Service Account listesinden az önce oluşturduğunuza tıklayın.
- **Keys** sekmesine gidin.
- **Add Key** > **Create new key** seçeneğine tıklayın.
- **JSON** seçin ve **Create** düğmesine basın.
4. İndirilen JSON dosyasını gateway host'unuzda saklayın (örn. `~/.openclaw/googlechat-service-account.json`).
5. [Google Cloud Console Chat Configuration](https://console.cloud.google.com/apis/api/chat.googleapis.com/hangouts-chat) içinde bir Google Chat uygulaması oluşturun:
- **Add Key** > **Create new key**'e tıklayın.
- **JSON**'ı seçin ve **Create**'e basın.
4. İndirilen JSON dosyasını Gateway host'unuzda saklayın (ör. `~/.openclaw/googlechat-service-account.json`).
5. [Google Cloud Console Chat yapılandırması](https://console.cloud.google.com/apis/api/chat.googleapis.com/hangouts-chat) içinde bir Google Chat uygulaması oluşturun:
- **Application info** alanını doldurun:
- **App name**: (örn. `OpenClaw`)
- **Avatar URL**: (örn. `https://openclaw.ai/logo.png`)
- **Description**: (örn. `Personal AI Assistant`)
- **Interactive features** özelliğini etkinleştirin.
- **Functionality** altında **Join spaces and group conversations** seçeneğini işaretleyin.
- **Connection settings** altında **HTTP endpoint URL** seçeneğini seçin.
- **Triggers** altında **Use a common HTTP endpoint URL for all triggers** seçeneğini seçin ve bunu gateway'inizin genel URL'sinin sonuna `/googlechat` eklenmiş hali olarak ayarlayın.
- _İpucu: Gateway'inizin genel URL'sini bulmak için `openclaw status` çalıştırın._
- **Visibility** altında **Make this Chat app available to specific people and groups in `<Your Domain>`** seçeneğini işaretleyin.
- Metin kutusuna e-posta adresinizi girin (örn. `user@example.com`).
- Alttaki **Save** düğmesine tıklayın.
- **App name**: (ör. `OpenClaw`)
- **Avatar URL**: (ör. `https://openclaw.ai/logo.png`)
- **Description**: (ör. `Personal AI Assistant`)
- **Interactive features**'ı etkinleştirin.
- **Functionality** altında **Join spaces and group conversations**'ı işaretleyin.
- **Connection settings** altında **HTTP endpoint URL**'yi seçin.
- **Triggers** altında **Use a common HTTP endpoint URL for all triggers**'ı seçin ve bunu Gateway'inizin herkese açık URL'sinin sonuna `/googlechat` eklenmiş hali olarak ayarlayın.
- _İpucu: Gateway'inizin herkese açık URL'sini bulmak için `openclaw status` çalıştırın._
- **Visibility** altında **Make this Chat app available to specific people and groups in `<Your Domain>`**'ı işaretleyin.
- Metin kutusuna e-posta adresinizi girin (ör. `user@example.com`).
- Altta **Save**'e tıklayın.
6. **Uygulama durumunu etkinleştirin**:
- Kaydettikten sonra **sayfayı yenileyin**.
- **App status** bölümünü bulun (kaydetmeden sonra genellikle üst veya alt kısma yakındır).
- **App status** bölümünü arayın (kaydetmeden sonra genellikle üstte veya altta olur).
- Durumu **Live - available to users** olarak değiştirin.
- Yeniden **Save** düğmesine tıklayın.
7. OpenClaw'u service account yolu + Webhook audience ile yapılandırın:
- Tekrar **Save**'e tıklayın.
7. OpenClaw'ı Service Account yolu + Webhook hedef kitlesiyle yapılandırın:
- Env: `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json`
- Veya yapılandırma: `channels.googlechat.serviceAccountFile: "/path/to/service-account.json"`.
8. Webhook audience türünü + değerini ayarlayın (Chat uygulaması yapılandırmanızla eşleşir).
9. Gateway'i başlatın. Google Chat, Webhook yolunuza POST gönderecek.
- Veya config: `channels.googlechat.serviceAccountFile: "/path/to/service-account.json"`.
8. Webhook hedef kitle türünü + değerini ayarlayın (Chat uygulama yapılandırmanızla eşleşir).
9. Gateway'i başlatın. Google Chat, Webhook yolunuza POST gönderir.
## Google Chat'e ekleme
Gateway çalışır durumdayken ve e-postanız visibility listesine eklendikten sonra:
Gateway çalışırken ve e-postanız görünürlük listesine eklenmişken:
1. [Google Chat](https://chat.google.com/) adresine gidin.
2. **Direct Messages** yanındaki **+** (artı) simgesine tıklayın.
3. Arama çubuğuna (normalde kişi eklediğiniz yer) Google Cloud Console'da yapılandırdığınız **App name** değerini yazın.
- **Not**: Bot özel bir uygulama olduğu için "Marketplace" göz atma listesinde _görünmez_. Adıyla aramanız gerekir.
3. Arama çubuğuna (genellikle kişi eklediğiniz yer), Google Cloud Console'da yapılandırdığınız **App name** değerini yazın.
- **Not**: Bot, özel bir uygulama olduğu için "Marketplace" göz atma listesinde _görünmez_. Adıyla aramanız gerekir.
4. Sonuçlardan botunuzu seçin.
5. 1:1 konuşma başlatmak için **Add** veya **Chat** düğmesine tıklayın.
6. Asistanı tetiklemek için "Merhaba" gönderin!
5. 1:1 konuşma başlatmak için **Add** veya **Chat**'e tıklayın.
6. Asistanı tetiklemek için "Hello" gönderin!
## Genel URL (Yalnızca Webhook)
## Herkese açık URL (yalnızca Webhook)
Google Chat Webhook'ları genel bir HTTPS endpoint gerektirir. Güvenlik için internete **yalnızca `/googlechat` yolunu açın**. OpenClaw dashboard'unu ve diğer hassas endpoint'leri özel ağınızda tutun.
Google Chat web kancaları herkese açık bir HTTPS endpoint gerektirir. Güvenlik için internete **yalnızca `/googlechat` yolunu açın**. OpenClaw panosunu ve diğer hassas endpoint'leri özel ağınızda tutun.
### Seçenek A: Tailscale Funnel (Önerilir)
Özel dashboard için Tailscale Serve, genel Webhook yolu için Funnel kullanın. Bu, yalnızca `/googlechat` yolunu açarken `/` yolunu özel tutar.
Özel pano için Tailscale Serve, herkese açık Webhook yolu için Funnel kullanın. Bu, yalnızca `/googlechat` yolunu açarken `/` yolunu özel tutar.
1. **Gateway'inizin hangi adrese bağlı olduğunu kontrol edin:**
1. **Gateway'inizin hangi adrese bağlandığını kontrol edin:**
```bash
ss -tlnp | grep 18789
```
IP adresini not edin (örn. `127.0.0.1`, `0.0.0.0` veya `100.x.x.x` gibi Tailscale IP'niz).
IP adresini not edin (ör. `127.0.0.1`, `0.0.0.0` veya `100.x.x.x` gibi Tailscale IP'niz).
2. **Dashboard'u yalnızca tailnet'e açın (port 8443):**
2. **Panoyu yalnızca tailnet'e açın (8443 portu):**
```bash
# If bound to localhost (127.0.0.1 or 0.0.0.0):
@ -116,8 +116,8 @@ Google Chat Webhook'ları genel bir HTTPS endpoint gerektirir. Güvenlik için i
tailscale funnel --bg --set-path /googlechat http://100.106.161.80:18789/googlechat
```
4. **Node'u Funnel erişimi için yetkilendirin:**
İstenirse, bu Node için tailnet ilkenizde Funnel'ı etkinleştirmek üzere çıktıda gösterilen yetkilendirme URL'sini ziyaret edin.
4. **Düğümü Funnel erişimi için yetkilendirin:**
İstenirse, tailnet politikanızda bu düğüm için Funnel'ı etkinleştirmek üzere çıktıda gösterilen yetkilendirme URL'sini ziyaret edin.
5. **Yapılandırmayı doğrulayın:**
@ -126,19 +126,19 @@ Google Chat Webhook'ları genel bir HTTPS endpoint gerektirir. Güvenlik için i
tailscale funnel status
```
Genel Webhook URL'niz şu olacak:
Herkese açık Webhook URL'niz şu olur:
`https://<node-name>.<tailnet>.ts.net/googlechat`
Özel dashboard'unuz yalnızca tailnet'te kalır:
Özel panonuz yalnızca tailnet'e açık kalır:
`https://<node-name>.<tailnet>.ts.net:8443/`
Google Chat uygulaması yapılandırmasında genel URL'yi (`:8443` olmadan) kullanın.
Google Chat uygulama yapılandırmasında herkese açık URL'yi (`:8443` olmadan) kullanın.
> Not: Bu yapılandırma yeniden başlatmalar boyunca kalıcıdır. Daha sonra kaldırmak için `tailscale funnel reset` ve `tailscale serve reset` çalıştırın.
> Not: Bu yapılandırma yeniden başlatmalar arasında kalıcıdır. Daha sonra kaldırmak için `tailscale funnel reset` ve `tailscale serve reset` çalıştırın.
### Seçenek B: Ters Proxy (Caddy)
### Seçenek B: Reverse Proxy (Caddy)
Caddy gibi bir ters proxy kullanıyorsanız yalnızca belirli yolu proxy'leyin:
Caddy gibi bir reverse proxy kullanıyorsanız yalnızca belirli yolu proxy'leyin:
```caddy
your-domain.com {
@ -150,36 +150,36 @@ Bu yapılandırmayla `your-domain.com/` adresine gelen herhangi bir istek yok sa
### Seçenek C: Cloudflare Tunnel
Tunnel ingress kurallarınızı yalnızca Webhook yolunu yönlendirecek şekilde yapılandırın:
Tünelinizin giriş kurallarını yalnızca Webhook yolunu yönlendirecek şekilde yapılandırın:
- **Path**: `/googlechat` -> `http://localhost:18789/googlechat`
- **Default Rule**: HTTP 404 (Not Found)
## Nasıl çalışır
## Nasıl çalışır?
1. Google Chat, Gateway'e Webhook POST'ları gönderir. Her istek bir `Authorization: Bearer <token>` üstbilgisi içerir.
- OpenClaw, üstbilgi mevcut olduğunda tüm Webhook gövdelerini okumadan/ayrıştırmadan önce bearer auth doğrulaması yapar.
- Gövdede `authorizationEventObject.systemIdToken` taşıyan Google Workspace Add-on istekleri daha sıkı bir ön kimlik doğrulama gövde bütçesiyle desteklenir.
2. OpenClaw, token'ı yapılandırılan `audienceType` + `audience` değerlerine göre doğrular:
- `audienceType: "app-url"`audience, HTTPS Webhook URL'nizdir.
- `audienceType: "project-number"`audience, Cloud proje numarasıdır.
1. Google Chat, Gateway'e Webhook POST'ları gönderir. Her istek bir `Authorization: Bearer <token>` başlığı içerir.
- OpenClaw, başlık mevcut olduğunda tam Webhook gövdelerini okumadan/ayrıştırmadan önce bearer auth doğrulaması yapar.
- Gövdede `authorizationEventObject.systemIdToken` taşıyan Google Workspace Add-on istekleri, daha sıkı bir ön kimlik doğrulama gövde bütçesiyle desteklenir.
2. OpenClaw, token'ı yapılandırılmış `audienceType` + `audience` değerlerine göre doğrular:
- `audienceType: "app-url"`hedef kitle HTTPS Webhook URL'nizdir.
- `audienceType: "project-number"`hedef kitle Cloud proje numarasıdır.
3. Mesajlar alana göre yönlendirilir:
- DM'ler `agent:<agentId>:googlechat:direct:<spaceId>` oturum anahtarını kullanır.
- Alanlar `agent:<agentId>:googlechat:group:<spaceId>` oturum anahtarını kullanır.
4. DM erişimi varsayılan olarak pairing'dir. Bilinmeyen gönderenler bir pairing kodu alır; şu komutla onaylayın:
4. DM erişimi varsayılan olarak eşleştirme gerektirir. Bilinmeyen gönderenler bir eşleştirme kodu alır; şununla onaylayın:
- `openclaw pairing approve googlechat <code>`
5. Grup alanları varsayılan olarak @-mention gerektirir. Mention algılama uygulamanın kullanıcı adına ihtiyaç duyuyorsa `botUser` kullanın.
5. Grup alanları varsayılan olarak @-mention gerektirir. Mention algılamasının uygulamanın kullanıcı adına ihtiyacı varsa `botUser` kullanın.
## Hedefler
Teslimat ve allowlist'ler için şu tanımlayıcıları kullanın:
Teslimat ve allowlist'ler için bu tanımlayıcıları kullanın:
- Doğrudan mesajlar: `users/<userId>` (önerilir).
- Ham e-posta `name@example.com` değişebilirdir ve yalnızca `channels.googlechat.dangerouslyAllowNameMatching: true` olduğunda doğrudan allowlist eşleştirmesi için kullanılır.
- Kullanımdan kaldırıldı: `users/<email>` bir e-posta allowlist'i olarak değil, kullanıcı kimliği olarak ele alınır.
- Alanlar: `spaces/<spaceId>`.
## Yapılandırma öne çıkanları
## Config öne çıkanları
```json5
{
@ -199,7 +199,7 @@ Teslimat ve allowlist'ler için şu tanımlayıcıları kullanın:
groupPolicy: "allowlist",
groups: {
"spaces/AAAA": {
allow: true,
enabled: true,
requireMention: true,
users: ["users/1234567890"],
systemPrompt: "Short answers only.",
@ -215,16 +215,16 @@ Teslimat ve allowlist'ler için şu tanımlayıcıları kullanın:
Notlar:
- Service account kimlik bilgileri `serviceAccount` (JSON string) ile satır içinde de geçirilebilir.
- `channels.googlechat.accounts.<id>.serviceAccountRef` altındaki hesap başına refs dahil olmak üzere `serviceAccountRef` de desteklenir (env/file SecretRef).
- `webhookPath` ayarlanmadıysa varsayılan Webhook yolu `/googlechat` olur.
- `dangerouslyAllowNameMatching`, allowlist'ler için değişebilir e-posta principal eşleştirmesini yeniden etkinleştirir (break-glass uyumluluk modu).
- Reactions, `actions.reactions` etkinleştirildiğinde `reactions` aracı ve `channels action` üzerinden kullanılabilir.
- Mesaj eylemleri metin için `send`, açık ek gönderimleri için `upload-file` sunar. `upload-file`, `media` / `filePath` / `path` ile isteğe bağlı `message`, `filename` ve thread hedeflemesini kabul eder.
- `typingIndicator`, `none`, `message` (varsayılan) ve `reaction` destekler (reaction kullanıcı OAuth'u gerektirir).
- Ekler Chat API üzerinden indirilir ve media pipeline'da saklanır (boyut `mediaMaxMb` ile sınırlıdır).
- Service Account kimlik bilgileri `serviceAccount` (JSON dizesi) ile satır içinde de geçirilebilir.
- `serviceAccountRef` de desteklenir (env/file SecretRef); buna `channels.googlechat.accounts.<id>.serviceAccountRef` altındaki hesap başına ref'ler dahildir.
- `webhookPath` ayarlanmamışsa varsayılan Webhook yolu `/googlechat` olur.
- `dangerouslyAllowNameMatching`, allowlist'ler için değişebilir e-posta sorumlusu eşleştirmesini yeniden etkinleştirir (break-glass uyumluluk modu).
- `actions.reactions` etkinleştirildiğinde tepkiler `reactions` aracı ve `channels action` üzerinden kullanılabilir.
- Mesaj eylemleri metin için `send`, açık ek gönderimleri için `upload-file` sunar. `upload-file`, `media` / `filePath` / `path` ile isteğe bağlı `message`, `filename` ve iş parçacığı hedeflemeyi kabul eder.
- `typingIndicator`, `none`, `message` (varsayılan) ve `reaction` değerlerini destekler (`reaction` kullanıcı OAuth gerektirir).
- Ekler Chat API üzerinden indirilir ve medya işlem hattında saklanır (boyut `mediaMaxMb` ile sınırlandırılır).
Secrets referansı ayrıntıları: [Secrets Management](/tr/gateway/secrets).
Gizli bilgi referansı ayrıntıları: [Gizli Bilgi Yönetimi](/tr/gateway/secrets).
## Sorun giderme
@ -236,15 +236,15 @@ Google Cloud Logs Explorer şu tür hatalar gösteriyorsa:
status code: 405, reason phrase: HTTP error response: HTTP/1.1 405 Method Not Allowed
```
Bu, Webhook handler'ın kayıtlı olmadığı anlamına gelir. Yaygın nedenler:
Bu, Webhook işleyicisinin kayıtlı olmadığı anlamına gelir. Yaygın nedenler:
1. **Kanal yapılandırılmamış**: Yapılandırmanızda `channels.googlechat` bölümü eksik. Şununla doğrulayın:
1. **Kanal yapılandırılmamış**: Config içinde `channels.googlechat` bölümü eksik. Şununla doğrulayın:
```bash
openclaw config get channels.googlechat
```
"Config path not found" dönerse yapılandırmayı ekleyin (bkz. [Yapılandırma öne çıkanları](#config-highlights)).
"Config path not found" döndürürse yapılandırmayı ekleyin (bkz. [Config öne çıkanları](#config-highlights)).
2. **Plugin etkin değil**: Plugin durumunu kontrol edin:
@ -252,9 +252,9 @@ Bu, Webhook handler'ın kayıtlı olmadığı anlamına gelir. Yaygın nedenler:
openclaw plugins list | grep googlechat
```
"disabled" gösteriyorsa yapılandırmanıza `plugins.entries.googlechat.enabled: true` ekleyin.
"disabled" gösteriyorsa config'inize `plugins.entries.googlechat.enabled: true` ekleyin.
3. **Gateway yeniden başlatılmamış**: Yapılandırmayı ekledikten sonra Gateway'i yeniden başlatın:
3. **Gateway yeniden başlatılmamış**: Config ekledikten sonra Gateway'i yeniden başlatın:
```bash
openclaw gateway restart
@ -269,21 +269,21 @@ openclaw channels status
### Diğer sorunlar
- Kimlik doğrulama hataları veya eksik audience yapılandırması için `openclaw channels status --probe` komutunu kontrol edin.
- Hiç mesaj gelmiyorsa Chat uygulamasının Webhook URL'sini + etkinlik aboneliklerini doğrulayın.
- Mention gating yanıtları engelliyorsa `botUser` değerini uygulamanın kullanıcı resource adına ayarlayın ve `requireMention` değerini doğrulayın.
- Kimlik doğrulama hataları veya eksik hedef kitle yapılandırması için `openclaw channels status --probe` komutunu kontrol edin.
- Mesaj gelmiyorsa Chat uygulamasının Webhook URL'sini + etkinlik aboneliklerini doğrulayın.
- Mention gating yanıtları engelliyorsa `botUser` değerini uygulamanın kullanıcı kaynak adına ayarlayın ve `requireMention` değerini doğrulayın.
- İsteklerin Gateway'e ulaşıp ulaşmadığını görmek için test mesajı gönderirken `openclaw logs --follow` kullanın.
İlgili dokümanlar:
İlgili belgeler:
- [Gateway configuration](/tr/gateway/configuration)
- [Security](/tr/gateway/security)
- [Reactions](/tr/tools/reactions)
- [Gateway yapılandırması](/tr/gateway/configuration)
- [Güvenlik](/tr/gateway/security)
- [Tepkiler](/tr/tools/reactions)
## İlgili
- [Channels Overview](/tr/channels) — desteklenen tüm kanallar
- [Pairing](/tr/channels/pairing) — DM kimlik doğrulaması ve pairing akışı
- [Groups](/tr/channels/groups) — grup sohbeti davranışı ve mention gating
- [Channel Routing](/tr/channels/channel-routing) — mesajlar için oturum yönlendirme
- [Security](/tr/gateway/security) — erişim modeli ve sağlamlaştırma
- [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 mention gating
- [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

View File

@ -1,38 +1,38 @@
---
read_when:
- Grup sohbeti davranışını veya etiketleme koşulunu değiştirme
- Grup sohbeti davranışını veya bahsetme kapılamasını değiştirme
sidebarTitle: Groups
summary: Yüzeyler genelinde grup sohbeti davranışı (Discord/iMessage/Matrix/Microsoft Teams/Signal/Slack/Telegram/WhatsApp/Zalo)
title: Gruplar
x-i18n:
generated_at: "2026-05-03T21:27:28Z"
generated_at: "2026-05-04T02:21:24Z"
model: gpt-5.5
provider: openai
source_hash: 6fd4fcaa8335f1dc4b4b1a719d6654ab0c10530f74284269ed6205dd5f87c116
source_hash: dea506c011a5d8f6155b2f56aacb236482cb8c5b7457001cb2171fd45932443d
source_path: channels/groups.md
workflow: 16
---
OpenClaw, grup sohbetlerini yüzeyler arasında tutarlı biçimde ele alır: Discord, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo.
OpenClaw grup sohbetlerini yüzeyler genelinde tutarlı şekilde ele alır: Discord, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo.
## Başlangıç tanıtımı (2 dakika)
OpenClaw kendi mesajlaşma hesaplarınızda "yaşar". Ayrı bir WhatsApp bot kullanıcısı yoktur. **Siz** bir gruptaysanız, OpenClaw o grubu görebilir ve orada yanıt verebilir.
OpenClaw kendi mesajlaşma hesaplarınızda "yaşar". Ayrı bir WhatsApp bot kullanıcısı yoktur. Bir grupta **siz** varsa, OpenClaw o grubu görebilir ve orada yanıt verebilir.
Varsayılan davranış:
- Gruplar kısıtlıdır (`groupPolicy: "allowlist"`).
- Bahsetme geçidini açıkça devre dışı bırakmadığınız sürece yanıtlar bir bahsetme gerektirir.
- Gruplarda/kanallarda normal son yanıtlar varsayılan olarak özeldir. Görünür oda çıktısı `message` aracını kullanır.
- Gruplar kısıtlanır (`groupPolicy: "allowlist"`).
- ıkça bahsetme kapısını devre dışı bırakmadığınız sürece yanıtlar bahsetme gerektirir.
- Gruplarda/kanallarda normal nihai yanıtlar varsayılan olarak özeldir. Görünür oda çıktısı `message` aracını kullanır.
Çeviri: izin listesindeki gönderenler, OpenClawdan bahsederek onu tetikleyebilir.
<Note>
**TL;DR**
**Kısaca**
- **DM erişimi** `*.allowFrom` ile denetlenir.
- **Grup erişimi** `*.groupPolicy` + izin listeleri (`*.groups`, `*.groupAllowFrom`) ile denetlenir.
- **Yanıt tetikleme** bahsetme geçidi (`requireMention`, `/activation`) ile denetlenir.
- **DM erişimi** `*.allowFrom` ile kontrol edilir.
- **Grup erişimi** `*.groupPolicy` + izin listeleri (`*.groups`, `*.groupAllowFrom`) ile kontrol edilir.
- **Yanıt tetikleme** bahsetme kapısı (`requireMention`, `/activation`) ile kontrol edilir.
</Note>
@ -48,19 +48,21 @@ otherwise -> reply
## Görünür yanıtlar
Grup/kanal odaları için OpenClaw varsayılan olarak `messages.groupChat.visibleReplies: "message_tool"` kullanır.
`openclaw doctor --fix`, bunu atlayan yapılandırılmış kanal yapılandırmalarına bu varsayılanı yazar.
Bu, agentın turu yine işlediği ve bellek/oturum durumunu güncelleyebildiği, ancak normal son yanıtının odaya otomatik olarak geri gönderilmediği anlamına gelir. Görünür biçimde konuşmak için agent `message(action=send)` kullanır.
`openclaw doctor --fix`, bunu eksik bırakan yapılandırılmış kanal yapılandırmalarına bu varsayılanı yazar.
Bu, aracının turu hâlâ işlediği ve bellek/oturum durumunu güncelleyebildiği, ancak normal nihai yanıtının odaya otomatik olarak geri gönderilmediği anlamına gelir. Görünür şekilde konuşmak için aracı `message(action=send)` kullanır.
Etkin araç ilkesi altında mesaj aracı kullanılamıyorsa, OpenClaw yanıtı sessizce bastırmak yerine otomatik görünür yanıtlara geri döner.
Bu varsayılan, araçları güvenilir şekilde çağıran bir modele/çalışma zamanına bağlıdır. Günlükler asistan metni gösteriyor ama `didSendViaMessagingTool: false` ise model, mesaj aracını çağırmak yerine özel olarak yanıtlamıştır. Bu bir Discord/Slack/Telegram gönderme hatası değildir. Grup/kanal oturumları için araç çağrısında güvenilir bir model kullanın veya eski görünür nihai yanıtları geri getirmek için `messages.groupChat.visibleReplies: "automatic"` ayarlayın.
Mesaj aracı etkin araç ilkesi altında kullanılamıyorsa OpenClaw, yanıtı sessizce bastırmak yerine otomatik görünür yanıtlara geri döner.
`openclaw doctor` bu uyumsuzluk hakkında uyarır.
Doğrudan sohbetler ve diğer tüm kaynak turları için aynı yalnızca araçla görünür yanıt davranışını genel olarak uygulamak üzere `messages.visibleReplies: "message_tool"` kullanın. Harnesslar bunu ayarlanmamış varsayılanları olarak da seçebilir; Codex harness bunu Codex modu doğrudan sohbetleri için yapar. `messages.groupChat.visibleReplies`, grup/kanal odaları için daha özel geçersiz kılma olarak kalır.
Doğrudan sohbetler ve diğer tüm kaynak turları için aynı yalnızca-araç görünür yanıt davranışını genel olarak uygulamak üzere `messages.visibleReplies: "message_tool"` kullanın. Test düzenekleri bunu ayarlanmamış varsayılanları olarak da seçebilir; Codex düzeneği Codex modu doğrudan sohbetleri için bunu yapar. `messages.groupChat.visibleReplies`, grup/kanal odaları için daha özel geçersiz kılma olarak kalır.
Bu, çoğu izleme modu turunda modeli `NO_REPLY` yanıtı vermeye zorlayan eski kalıbın yerini alır. Yalnızca araç modunda görünür hiçbir şey yapmamak, basitçe mesaj aracını çağırmamak anlamına gelir.
Bu, çoğu bekleme modu turunda modeli `NO_REPLY` yanıtını vermeye zorlayan eski kalıbın yerini alır. Yalnızca araç modunda görünür hiçbir şey yapmamak, basitçe mesaj aracını çağırmamak anlamına gelir.
Agent yalnızca araç modunda çalışırken yazıyor göstergeleri yine gönderilir. Varsayılan grup yazıyor modu bu turlar için "message" yerine "instant" olarak yükseltilir, çünkü agent mesaj aracını çağırıp çağırmayacağına karar vermeden önce normal assistant mesaj metni hiç olmayabilir. Açık yazıyor modu yapılandırması yine önceliklidir.
Aracı yalnızca araç modunda çalışırken yazıyor göstergeleri hâlâ gönderilir. Bu turlar için varsayılan grup yazıyor modu "message" değerinden "instant" değerine yükseltilir, çünkü aracı mesaj aracını çağırıp çağırmayacağına karar vermeden önce normal asistan mesaj metni hiç olmayabilir. Açık yazıyor modu yapılandırması yine önceliklidir.
Grup/kanal odaları için eski otomatik son yanıtları geri yüklemek için:
Grup/kanal odaları için eski otomatik nihai yanıtları geri getirmek için:
```json5
{
@ -72,9 +74,9 @@ Grup/kanal odaları için eski otomatik son yanıtları geri yüklemek için:
}
```
Gateway, dosya kaydedildikten sonra `messages` yapılandırmasını hot-reload eder. Yalnızca dağıtımda dosya izleme veya yapılandırma yeniden yükleme devre dışıysa yeniden başlatın.
Gateway, dosya kaydedildikten sonra `messages` yapılandırmasını sıcak yeniden yükler. Yalnızca dağıtımda dosya izleme veya yapılandırma yeniden yükleme devre dışıysa yeniden başlatın.
Her kaynak sohbet için görünür çıktının mesaj aracı üzerinden gmesini zorunlu kılmak için:
Her kaynak sohbet için görünür çıktının mesaj aracı üzerinden gitmesini zorunlu kılmak için:
```json5
{
@ -84,44 +86,44 @@ Her kaynak sohbet için görünür çıktının mesaj aracı üzerinden geçmesi
}
```
Yerel slash komutları (Discord, Telegram ve yerel komut desteği olan diğer yüzeyler) `visibleReplies: "message_tool"` ayarını atlar ve kanalın yerel komut arayüzünün beklediği yanıtı alması için her zaman görünür biçimde yanıt verir. Bu yalnızca doğrulanmış yerel komut turları için geçerlidir; metin olarak yazılmış `/...` komutları ve sıradan sohbet turları yapılandırılmış grup varsayılanını izlemeye devam eder.
Yerel eğik çizgi komutları (Discord, Telegram ve yerel komut desteği olan diğer yüzeyler) `visibleReplies: "message_tool"` ayarını atlar ve kanalın yerel komut kullanıcı arayüzünün beklediği yanıtı alması için her zaman görünür şekilde yanıt verir. Bu yalnızca doğrulanmış yerel komut turları için geçerlidir; metin olarak yazılan `/...` komutları ve sıradan sohbet turları yapılandırılmış grup varsayılanını izlemeye devam eder.
## Bağlam görünürlüğü ve izin listeleri
Grup güvenliğinde iki farklı denetim yer alır:
Grup güvenliğinde iki farklı kontrol yer alır:
- **Tetikleme yetkilendirmesi**: agentı kim tetikleyebilir (`groupPolicy`, `groups`, `groupAllowFrom`, kanala özel izin listeleri).
- **Bağlam görünürlüğü**: modele hangi ek bağlamın enjekte edildiği (yanıt metni, alıntılar, iş parçacığı geçmişi, iletilmiş metadata).
- **Tetikleme yetkilendirmesi**: aracıyı kimlerin tetikleyebileceği (`groupPolicy`, `groups`, `groupAllowFrom`, kanala özgü izin listeleri).
- **Bağlam görünürlüğü**: modele hangi ek bağlamın enjekte edildiği (yanıt metni, alıntılar, iş parçacığı geçmişi, iletilmiş üst veriler).
Varsayılan olarak OpenClaw normal sohbet davranışına öncelik verir ve bağlamı çoğunlukla alındığı gibi tutar. Bu, izin listelerinin öncelikle kimin eylemleri tetikleyebileceğine karar verdiği, her alıntılanmış veya geçmiş snippet için evrensel bir redaksiyon sınırı olmadığı anlamına gelir.
OpenClaw varsayılan olarak normal sohbet davranışına öncelik verir ve bağlamı çoğunlukla alındığı gibi tutar. Bu, izin listelerinin öncelikle eylemleri kimin tetikleyebileceğine karar verdiği, her alıntılanmış veya geçmiş parçacık için evrensel bir redaksiyon sınırı olmadığı anlamına gelir.
<AccordionGroup>
<Accordion title="Geçerli davranış kanala özeldir">
<Accordion title="Geçerli davranış kanala özgüdür">
- Bazı kanallar belirli yollarda ek bağlam için zaten gönderene dayalı filtreleme uygular (örneğin Slack iş parçacığı tohumlama, Matrix yanıt/iş parçacığı aramaları).
- Diğer kanallar alıntı/yanıt/iletme bağlamını hâlâ alındığı gibi geçirir.
</Accordion>
<Accordion title="Güçlendirme yönü (planlanıyor)">
- `contextVisibility: "all"` (varsayılan) mevcut alındığı gibi davranışı korur.
- `contextVisibility: "allowlist"` ek bağlamı izin listesindeki gönderenlerle filtreler.
- `contextVisibility: "allowlist_quote"`, bir açık alıntı/yanıt istisnası eklenmiş `allowlist`tir.
<Accordion title="Güçlendirme yönü (planlandı)">
- `contextVisibility: "all"` (varsayılan) geçerli alındığı-gibi davranışı korur.
- `contextVisibility: "allowlist"` ek bağlamı izin listesindeki gönderenlere göre filtreler.
- `contextVisibility: "allowlist_quote"`, `allowlist` değerine ek olarak açık bir alıntı/yanıt istisnasıdır.
Bu güçlendirme modeli kanallar arasında tutarlı biçimde uygulanana kadar yüzeye göre farklılıklar bekleyin.
Bu güçlendirme modeli kanallar genelinde tutarlı şekilde uygulanana kadar yüzeylere göre farklılıklar bekleyin.
</Accordion>
</AccordionGroup>
![Grup mesajı akışı](/images/groups-flow.svg)
İstediğiniz...
İstiyorsanız...
| Hedef | Ayarlanacak değer |
| Amaç | Ayarlanacak değer |
| -------------------------------------------- | ---------------------------------------------------------- |
| Tüm gruplara izin ver ama yalnızca @bahsetmelerde yanıtla | `groups: { "*": { requireMention: true } }` |
| Tüm grup yanıtlarını devre dışı bırak | `groupPolicy: "disabled"` |
| Yalnızca belirli gruplar | `groups: { "<group-id>": { ... } }` (`"*"` anahtarı yok) |
| Gruplarda yalnızca siz tetikleyebilirsiniz | `groupPolicy: "allowlist"`, `groupAllowFrom: ["+1555..."]` |
| Kanallar arasında tek bir güvenilir gönderen kümesini yeniden kullan | `groupAllowFrom: ["accessGroup:operators"]` |
| Tüm grup yanıtlarını devre dışı bırak | `groupPolicy: "disabled"` |
| Yalnızca belirli gruplar | `groups: { "<group-id>": { ... } }` (`"*"` anahtarı yok) |
| Gruplarda yalnızca siz tetikleyebilirsiniz | `groupPolicy: "allowlist"`, `groupAllowFrom: ["+1555..."]` |
| Kanallar genelinde tek bir güvenilir gönderen kümesini yeniden kullan | `groupAllowFrom: ["accessGroup:operators"]` |
Yeniden kullanılabilir gönderen izin listeleri için bkz. [Erişim grupları](/tr/channels/access-groups).
@ -130,27 +132,27 @@ Yeniden kullanılabilir gönderen izin listeleri için bkz. [Erişim grupları](
- Grup oturumları `agent:<agentId>:<channel>:group:<id>` oturum anahtarlarını kullanır (odalar/kanallar `agent:<agentId>:<channel>:channel:<id>` kullanır).
- Telegram forum konuları grup kimliğine `:topic:<threadId>` ekler, böylece her konunun kendi oturumu olur.
- Doğrudan sohbetler ana oturumu kullanır (veya yapılandırılmışsa gönderen başına).
- Heartbeatler grup oturumları için atlanır.
- Heartbeat grup oturumları için atlanır.
<a id="pattern-personal-dms-public-groups-single-agent"></a>
## Kalıp: kişisel DMler + herkese açık gruplar (tek agent)
## Kalıp: kişisel DMler + herkese açık gruplar (tek aracı)
Evet — "kişisel" trafiğiniz **DMler**, "herkese açık" trafiğiniz ise **gruplar** ise bu iyi çalışır.
Evet — "kişisel" trafiğiniz **DMler** ve "herkese açık" trafiğiniz **gruplar** ise bu iyi çalışır.
Neden: tek agent modunda DMler genellikle **ana** oturum anahtarına (`agent:main:main`) düşerken, gruplar her zaman **ana olmayan** oturum anahtarlarını (`agent:main:<channel>:group:<id>`) kullanır. `mode: "non-main"` ile sandboxingi etkinleştirirseniz, bu grup oturumları yapılandırılmış sandbox backendinde çalışırken ana DM oturumunuz host üzerinde kalır. Birini seçmezseniz Docker varsayılan backenddir.
Neden: tek aracılı modda DMler genellikle **main** oturum anahtarına (`agent:main:main`) düşerken, gruplar her zaman **main olmayan** oturum anahtarlarını (`agent:main:<channel>:group:<id>`) kullanır. `mode: "non-main"` ile korumalı alanı etkinleştirirseniz bu grup oturumları yapılandırılmış korumalı alan arka ucunda çalışırken ana DM oturumunuz ana makinede kalır. Bir arka uç seçmezseniz varsayılan arka uç Dockerdır.
Bu size tek bir agent "beyni" (paylaşılan çalışma alanı + bellek), ancak iki yürütme duruşu verir:
Bu size tek bir aracı "beyni" (paylaşılan çalışma alanı + bellek) ama iki yürütme duruşu verir:
- **DMler**: tam araçlar (host)
- **Gruplar**: sandbox + kısıtlı araçlar
- **DMler**: tam araçlar (ana makine)
- **Gruplar**: korumalı alan + kısıtlı araçlar
<Note>
Gerçekten ayrı çalışma alanlarına/personalara ihtiyacınız varsa ("kişisel" ve "herkese açık" asla karışmamalıysa), ikinci bir agent + bağlamalar kullanın. Bkz. [Multi-Agent Routing](/tr/concepts/multi-agent).
Gerçekten ayrı çalışma alanlarına/personalarına ihtiyacınız varsa ("kişisel" ve "herkese açık" asla karışmamalıysa), ikinci bir aracı + bağlamalar kullanın. Bkz. [Çok Aracılı Yönlendirme](/tr/concepts/multi-agent).
</Note>
<Tabs>
<Tab title="DMler host üzerinde, gruplar sandbox içinde">
<Tab title="DMler ana makinede, gruplar korumalı alanda">
```json5
{
agents: {
@ -175,7 +177,7 @@ Gerçekten ayrı çalışma alanlarına/personalara ihtiyacınız varsa ("ki
```
</Tab>
<Tab title="Gruplar yalnızca izin listesindeki bir klasörü görür">
"Host erişimi yok" yerine "gruplar yalnızca X klasörünü görebilir" mi istiyorsunuz? `workspaceAccess: "none"` değerini koruyun ve yalnızca izin listesindeki yolları sandbox içine bağlayın:
"Ana makine erişimi yok" yerine "gruplar yalnızca X klasörünü görebilir" mi istiyorsunuz? `workspaceAccess: "none"` değerini koruyun ve yalnızca izin listesindeki yolları korumalı alana bağlayın:
```json5
{
@ -203,17 +205,17 @@ Gerçekten ayrı çalışma alanlarına/personalara ihtiyacınız varsa ("ki
İlgili:
- Yapılandırma anahtarları ve varsayılanlar: [Gateway yapılandırması](/tr/gateway/config-agents#agentsdefaultssandbox)
- Bir aracın neden engellendiğini debug etme: [Sandbox vs Araç İlkesi vs Elevated](/tr/gateway/sandbox-vs-tool-policy-vs-elevated)
- Bind mount ayrıntıları: [Sandboxing](/tr/gateway/sandboxing#custom-bind-mounts)
- Bir aracın neden engellendiğini hata ayıklama: [Korumalı Alan ve Araç İlkesi ve Yükseltilmiş](/tr/gateway/sandbox-vs-tool-policy-vs-elevated)
- Bağlama ayrıntıları: [Korumalı alana alma](/tr/gateway/sandboxing#custom-bind-mounts)
## Görünen etiketler
## Görüntü etiketleri
- UI etiketleri, varsa `displayName` kullanır ve `<channel>:<token>` olarak biçimlendirilir.
- Kullanıcı arayüzü etiketleri mevcut olduğunda `displayName` kullanır ve `<channel>:<token>` olarak biçimlendirilir.
- `#room` odalar/kanallar için ayrılmıştır; grup sohbetleri `g-<slug>` kullanır (küçük harf, boşluklar -> `-`, `#@+._-` koru).
## Grup ilkesi
Grup/oda mesajlarının kanal başına nasıl ele alınacağını denetleyin:
Grup/oda mesajlarının kanal başına nasıl ele alınacağını kontrol edin:
```json5
{
@ -260,48 +262,48 @@ Grup/oda mesajlarının kanal başına nasıl ele alınacağını denetleyin:
}
```
| İlke | Davranış |
| ------------- | ------------------------------------------------------------ |
| `"open"` | Gruplar izin listelerini atlar; bahsetme geçidi yine uygulanır. |
| `"disabled"` | Tüm grup mesajlarını tamamen engeller. |
| İlke | Davranış |
| ------------- | ----------------------------------------------------------- |
| `"open"` | Gruplar izin listelerini atlar; bahsetme kapısı yine uygulanır. |
| `"disabled"` | Tüm grup mesajlarını tamamen engeller. |
| `"allowlist"` | Yalnızca yapılandırılmış izin listesiyle eşleşen gruplara/odalara izin verir. |
<AccordionGroup>
<Accordion title="Kanal başına notlar">
- `groupPolicy`, bahsetme geçidinden ayrıdır (bu @bahsetmeleri gerektirir).
- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams/Zalo: `groupAllowFrom` kullanın (fallback: açık `allowFrom`).
- Signal: `groupAllowFrom`, gelen Signal grup kimliğiyle veya gönderen telefon/UUID ile eşleşebilir.
- DM eşleştirme onayları (`*-allowFrom` store girdileri) yalnızca DM erişimine uygulanır; grup gönderen yetkilendirmesi grup izin listelerine açık kalır.
- `groupPolicy`, mention-gating'den ayrıdır (bu @mentions gerektirir).
- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams/Zalo: `groupAllowFrom` kullanın (geri dönüş: açık `allowFrom`).
- Signal: `groupAllowFrom`, gelen Signal grup kimliğiyle veya gönderenin telefon/UUID değeriyle eşleşebilir.
- DM eşleştirme onayları (`*-allowFrom` depo girdileri) yalnızca DM erişimine uygulanır; grup gönderen yetkilendirmesi grup izin listelerinde açık kalır.
- Discord: izin listesi `channels.discord.guilds.<id>.channels` kullanır.
- Slack: izin listesi `channels.slack.channels` kullanır.
- Matrix: izin listesi `channels.matrix.groups` kullanır. Oda kimliklerini veya aliasları tercih edin; katılınmış oda adı araması best-efforttır ve çözümlenmeyen adlar runtimeda yok sayılır. Gönderenleri kısıtlamak için `channels.matrix.groupAllowFrom` kullanın; oda başına `users` izin listeleri de desteklenir.
- Grup DMleri ayrı denetlenir (`channels.discord.dm.*`, `channels.slack.dm.*`).
- Matrix: izin listesi `channels.matrix.groups` kullanır. Oda kimliklerini veya takma adları tercih edin; katılınmış oda adı araması en iyi çaba esaslıdır ve çözülemeyen adlar çalışma zamanında yok sayılır. Gönderenleri kısıtlamak için `channels.matrix.groupAllowFrom` kullanın; oda başına `users` izin listeleri de desteklenir.
- Grup DM'leri ayrı denetlenir (`channels.discord.dm.*`, `channels.slack.dm.*`).
- Telegram izin listesi kullanıcı kimlikleriyle (`"123456789"`, `"telegram:123456789"`, `"tg:123456789"`) veya kullanıcı adlarıyla (`"@alice"` ya da `"alice"`) eşleşebilir; önekler büyük/küçük harfe duyarsızdır.
- Varsayılan `groupPolicy: "allowlist"`tir; grup izin listeniz boşsa grup mesajları engellenir.
- Runtime güvenliği: bir sağlayıcı bloğu tamamen eksik olduğunda (`channels.<provider>` yoksa), grup ilkesi `channels.defaults.groupPolicy` değerini devralmak yerine fail-closed moduna (genellikle `allowlist`) geri döner.
- Varsayılan değer `groupPolicy: "allowlist"` olur; grup izin listeniz boşsa grup mesajları engellenir.
- Çalışma zamanı güvenliği: bir sağlayıcı bloğu tamamen eksik olduğunda (`channels.<provider>` yoksa), grup ilkesi `channels.defaults.groupPolicy` değerini devralmak yerine kapalı kalacak şekilde hata veren bir moda (genellikle `allowlist`) geri döner.
</Accordion>
</AccordionGroup>
Hızlı zihinsel model (grup iletileri için değerlendirme sırası):
Hızlı zihinsel model (grup mesajları için değerlendirme sırası):
<Steps>
<Step title="groupPolicy">
`groupPolicy` (ık/devre dışı/izin listesi).
`groupPolicy` (open/disabled/allowlist).
</Step>
<Step title="Group allowlists">
<Step title="Grup izin listeleri">
Grup izin listeleri (`*.groups`, `*.groupAllowFrom`, kanala özgü izin listesi).
</Step>
<Step title="Mention gating">
Bahsetme denetimi (`requireMention`, `/activation`).
Mention gating (`requireMention`, `/activation`).
</Step>
</Steps>
## Bahsetme denetimi (varsayılan)
## Mention gating (varsayılan)
Grup iletileri, grup başına geçersiz kılınmadıkça bir bahsetme gerektirir. Varsayılanlar her alt sistem için `*.groups."*"` altında bulunur.
Grup mesajları, grup başına aksi geçersiz kılınmadıkça mention gerektirir. Varsayılanlar her alt sistemde `*.groups."*"` altında bulunur.
Kanal yanıt meta verilerini desteklediğinde, bir bot iletisine yanıt vermek örtük bir bahsetme sayılır. Bir bot iletisini alıntılamak da alıntı meta verilerini sunan kanallarda örtük bir bahsetme sayılabilir. Geçerli yerleşik durumlar Telegram, WhatsApp, Slack, Discord, Microsoft Teams ve ZaloUser içerir.
Kanal yanıt meta verilerini desteklediğinde bir bot mesajını yanıtlamak örtük mention sayılır. Bir bot mesajından alıntı yapmak da alıntı meta verilerini açığa çıkaran kanallarda örtük mention sayılabilir. Geçerli yerleşik durumlar Telegram, WhatsApp, Slack, Discord, Microsoft Teams ve ZaloUser içerir.
```json5
{
@ -340,41 +342,41 @@ Kanal yanıt meta verilerini desteklediğinde, bir bot iletisine yanıt vermek
```
<AccordionGroup>
<Accordion title="Mention gating notes">
- `mentionPatterns` büyük/küçük harfe duyarsız güvenli regex desenleridir; geçersiz desenler ve güvenli olmayan iç içe tekrar biçimleri yok sayılır.
- Açık bahsetmeler sağlayan yüzeyler yine de geçer; desenler bir yedektir.
<Accordion title="Mention gating notları">
- `mentionPatterns`, büyük/küçük harfe duyarsız güvenli regex kalıplarıdır; geçersiz kalıplar ve güvenli olmayan iç içe tekrar biçimleri yok sayılır.
- Açık mention sağlayan yüzeyler yine geçer; kalıplar bir geri dönüş yoludur.
- Ajan başına geçersiz kılma: `agents.list[].groupChat.mentionPatterns` (birden fazla ajan aynı grubu paylaştığında kullanışlıdır).
- Bahsetme denetimi yalnızca bahsetme algılama mümkün olduğunda uygulanır (yerel bahsetmeler veya `mentionPatterns` yapılandırılmıştır).
- Bir grubu veya göndereni izin listesine almak bahsetme denetimini devre dışı bırakmaz; tüm iletiler tetiklemeliyse o grubun `requireMention` değerini `false` olarak ayarlayın.
- Grup sohbeti istem bağlamı her turda çözümlenmiş sessiz yanıt talimatını taşır; çalışma alanı dosyaları `NO_REPLY` mekaniklerini yinelememelidir.
- Sessiz yanıtlara izin verilen gruplar, temiz boş veya yalnızca akıl yürütme içeren model turlarını `NO_REPLY` ile eşdeğer sessiz yanıt olarak ele alır. Doğrudan sohbetler bunu yalnızca doğrudan sessiz yanıtlara açıkça izin verildiğinde aynı şekilde yapar; aksi takdirde boş yanıtlar başarısız ajan turları olarak kalır.
- Discord varsayılanları `channels.discord.guilds."*"` içinde bulunur (sunucu/kanal başına geçersiz kılınabilir).
- Grup geçmişi bağlamı kanallar arasında tek tip sarılır ve **yalnızca beklemede olanları** içerir (bahsetme denetimi nedeniyle atlanan iletiler); genel varsayılan için `messages.groupChat.historyLimit`, geçersiz kılmalar için `channels.<channel>.historyLimit` (veya `channels.<channel>.accounts.*.historyLimit`) kullanın. Devre dışı bırakmak için `0` ayarlayın.
- Mention gating yalnızca mention algılama mümkün olduğunda zorlanır (yerel mention'lar veya `mentionPatterns` yapılandırılmıştır).
- Bir grubu veya göndereni izin listesine almak mention gating'i devre dışı bırakmaz; tüm mesajların tetiklemesi gerektiğinde o grubun `requireMention` değerini `false` yapın.
- Grup sohbeti istem bağlamı çözümlenen sessiz yanıt talimatını her turda taşır; çalışma alanı dosyaları `NO_REPLY` mekaniklerini yinelememelidir.
- Sessiz yanıtlara izin verilen gruplar, temiz boş veya yalnızca akıl yürütme içeren model turlarını `NO_REPLY` ile eşdeğer şekilde sessiz kabul eder. Doğrudan sohbetler bunu yalnızca doğrudan sessiz yanıtlara açıkça izin verildiğinde yapar; aksi halde boş yanıtlar başarısız ajan turları olarak kalır.
- Discord varsayılanları `channels.discord.guilds."*"` içinde bulunur (guild/kanal başına geçersiz kılınabilir).
- Grup geçmişi bağlamı kanallar arasında tek biçimde sarmalanır ve **yalnızca bekleyen** iletilerden oluşur (mention gating nedeniyle atlanan mesajlar); genel varsayılan için `messages.groupChat.historyLimit`, geçersiz kılmalar için `channels.<channel>.historyLimit` (veya `channels.<channel>.accounts.*.historyLimit`) kullanın. Devre dışı bırakmak için `0` ayarlayın.
</Accordion>
</AccordionGroup>
## Grup/kanal araç kısıtlamaları (isteğe bağlı)
Bazı kanal yapılandırmaları, **belirli bir grup/oda/kanal içinde** hangi araçların kullanılabileceğini kısıtlamayı destekler.
Bazı kanal yapılandırmaları, hangi araçların **belirli bir grup/oda/kanal içinde** kullanılabileceğini kısıtlamayı destekler.
- `tools`: tüm grup için araçlara izin ver/reddet.
- `toolsBySender`: grup içindeki gönderen başına geçersiz kılmalar. Açık anahtar önekleri kullanın: `id:<senderId>`, `e164:<phone>`, `username:<handle>`, `name:<displayName>` ve `"*"` joker karakteri. Eski öneksiz anahtarlar hâlâ kabul edilir ve yalnızca `id:` olarak eşleştirilir.
- `tools`: tüm grup için araçlara izin verin/reddedin.
- `toolsBySender`: grup içinde gönderen başına geçersiz kılmalar. Açık anahtar önekleri kullanın: `id:<senderId>`, `e164:<phone>`, `username:<handle>`, `name:<displayName>` ve `"*"` joker karakteri. Eski öneksiz anahtarlar hâlâ kabul edilir ve yalnızca `id:` olarak eşleştirilir.
Çözümleme sırası (en özel olan kazanır):
<Steps>
<Step title="Group toolsBySender">
<Step title="Grup toolsBySender">
Grup/kanal `toolsBySender` eşleşmesi.
</Step>
<Step title="Group tools">
<Step title="Grup tools">
Grup/kanal `tools`.
</Step>
<Step title="Default toolsBySender">
Varsayılan (`"*"`) `toolsBySender` eşleşmesi.
<Step title="Varsayılan toolsBySender">
Varsayılan (`"*"` ) `toolsBySender` eşleşmesi.
</Step>
<Step title="Default tools">
Varsayılan (`"*"`) `tools`.
<Step title="Varsayılan tools">
Varsayılan (`"*"` ) `tools`.
</Step>
</Steps>
@ -399,28 +401,28 @@ Bazı kanal yapılandırmaları, **belirli bir grup/oda/kanal içinde** hangi ar
```
<Note>
Grup/kanal araç kısıtlamaları, genel/ajan araç politikasına ek olarak uygulanır (reddetme yine kazanır). Bazı kanallar odalar/kanallar için farklı iç içe yerleşim kullanır (ör. Discord `guilds.*.channels.*`, Slack `channels.*`, Microsoft Teams `teams.*.channels.*`).
Grup/kanal araç kısıtlamaları global/ajan araç ilkesine ek olarak uygulanır (reddetme yine kazanır). Bazı kanallar odalar/kanallar için farklı iç içe yerleşimler kullanır (ör. Discord `guilds.*.channels.*`, Slack `channels.*`, Microsoft Teams `teams.*.channels.*`).
</Note>
## Grup izin listeleri
`channels.whatsapp.groups`, `channels.telegram.groups` veya `channels.imessage.groups` yapılandırıldığında, anahtarlar bir grup izin listesi gibi davranır. Varsayılan bahsetme davranışını ayarlamaya devam ederken tüm gruplara izin vermek için `"*"` kullanın.
`channels.whatsapp.groups`, `channels.telegram.groups` veya `channels.imessage.groups` yapılandırıldığında, anahtarlar grup izin listesi olarak davranır. Varsayılan mention davranışını ayarlamaya devam ederken tüm gruplara izin vermek için `"*"` kullanın.
<Warning>
Yaygın karışıklık: DM eşleştirme onayı grup yetkilendirmesiyle aynı değildir. DM eşleştirmesini destekleyen kanallarda eşleştirme deposu yalnızca DM'lerin kilidini açar. Grup komutları yine de `groupAllowFrom` veya o kanal için belgelenmiş yapılandırma yedeği gibi yapılandırma izin listelerinden açık grup gönderen yetkilendirmesi gerektirir.
Yaygın karışıklık: DM eşleştirme onayı grup yetkilendirmesiyle aynı değildir. DM eşleştirmeyi destekleyen kanallarda eşleştirme deposu yalnızca DM'lerin kilidini açar. Grup komutları yine de `groupAllowFrom` gibi yapılandırma izin listelerinden veya o kanal için belgelenmiş yapılandırma geri dönüşünden açık grup gönderen yetkilendirmesi gerektirir.
</Warning>
Yaygın amaçlar (kopyala/yapıştır):
<Tabs>
<Tab title="Disable all group replies">
<Tab title="Tüm grup yanıtlarını devre dışı bırak">
```json5
{
channels: { whatsapp: { groupPolicy: "disabled" } },
}
```
</Tab>
<Tab title="Allow only specific groups (WhatsApp)">
<Tab title="Yalnızca belirli gruplara izin ver (WhatsApp)">
```json5
{
channels: {
@ -434,7 +436,7 @@ Yaygın amaçlar (kopyala/yapıştır):
}
```
</Tab>
<Tab title="Allow all groups but require mention">
<Tab title="Tüm gruplara izin ver ancak mention gerektir">
```json5
{
channels: {
@ -445,7 +447,7 @@ Yaygın amaçlar (kopyala/yapıştır):
}
```
</Tab>
<Tab title="Owner-only triggers (WhatsApp)">
<Tab title="Yalnızca sahip tetikleyicileri (WhatsApp)">
```json5
{
channels: {
@ -467,7 +469,7 @@ Grup sahipleri grup başına etkinleştirmeyi açıp kapatabilir:
- `/activation mention`
- `/activation always`
Sahip, `channels.whatsapp.allowFrom` tarafından belirlenir (ayarlanmamışsa botun kendi E.164 numarası kullanılır). Komutu bağımsız bir ileti olarak gönderin. Diğer yüzeyler şu anda `/activation` komutunu yok sayar.
Sahip, `channels.whatsapp.allowFrom` tarafından belirlenir (ayarlanmamışsa botun kendi E.164 değeri). Komutu bağımsız bir mesaj olarak gönderin. Diğer yüzeyler şu anda `/activation` öğesini yok sayar.
## Bağlam alanları
@ -476,32 +478,32 @@ Grup gelen yükleri şunları ayarlar:
- `ChatType=group`
- `GroupSubject` (biliniyorsa)
- `GroupMembers` (biliniyorsa)
- `WasMentioned` (bahsetme denetimi sonucu)
- `WasMentioned` (mention gating sonucu)
- Telegram forum konuları ayrıca `MessageThreadId` ve `IsForum` içerir.
Kanala özgü notlar:
- BlueBubbles, `GroupMembers` doldurulmadan önce adlandırılmamış macOS grup katılımcılarını isteğe bağlı olarak yerel Kişiler veritabanından zenginleştirebilir. Bu varsayılan olarak kapalıdır ve yalnızca normal grup denetimi geçtikten sonra çalışır.
- BlueBubbles, `GroupMembers` doldurulmadan önce adsız macOS grup katılımcılarını yerel Contacts veritabanından isteğe bağlı olarak zenginleştirebilir. Bu varsayılan olarak kapalıdır ve yalnızca normal grup geçitlemesi geçtikten sonra çalışır.
Ajan sistem istemi, yeni bir grup oturumunun ilk turunda bir grup girişi içerir. Modele insan gibi yanıt vermesini, Markdown tablolarından kaçınmasını, boş satırları en aza indirmesini ve normal sohbet aralığını izlemesini, ayrıca literal `\n` dizileri yazmaktan kaçınmasını hatırlatır. Kanaldan gelen grup adları ve katılımcı etiketleri satır içi sistem talimatları olarak değil, çitle çevrilmiş güvenilmeyen meta veriler olarak işlenir.
Ajan sistem istemi, yeni bir grup oturumunun ilk turunda bir grup girişi içerir. Modele insan gibi yanıt vermesini, Markdown tablolarından kaçınmasını, boş satırları en aza indirip normal sohbet aralığını izlemesini ve değişmez `\n` dizilerini yazmaktan kaçınmasını hatırlatır. Kanal kaynaklı grup adları ve katılımcı etiketleri satır içi sistem talimatları olarak değil, çitlenmiş güvenilmeyen meta veri olarak işlenir.
## iMessage ayrıntıları
- Yönlendirme veya izin listesine alma sırasında `chat_id:<id>` tercih edin.
- Sohbetleri listele: `imsg chats --limit 20`.
- Grup yanıtları her zaman aynı `chat_id` değerine geri döner.
- Grup yanıtları her zaman aynı `chat_id` değerine geri gider.
## WhatsApp sistem istemleri
Grup ve doğrudan istem çözümlemesi, joker karakter davranışı ve hesap geçersiz kılma semantiği dahil olmak üzere kanonik WhatsApp sistem istemi kuralları için [WhatsApp](/tr/channels/whatsapp#system-prompts) bölümüne bakın.
Grup ve doğrudan istem çözümlemesi, joker karakter davranışı ve hesap geçersiz kılma semantiklerini içeren kanonik WhatsApp sistem istemi kuralları için [WhatsApp](/tr/channels/whatsapp#system-prompts) bölümüne bakın.
## WhatsApp ayrıntıları
Yalnızca WhatsApp davranışı (geçmiş ekleme, bahsetme işleme ayrıntıları) için [Grup iletileri](/tr/channels/group-messages) bölümüne bakın.
Yalnızca WhatsApp davranışı (geçmiş enjeksiyonu, mention işleme ayrıntıları) için [Grup mesajları](/tr/channels/group-messages) bölümüne bakın.
## İlgili
- [Yayın grupları](/tr/channels/broadcast-groups)
- [Kanal yönlendirme](/tr/channels/channel-routing)
- [Grup iletileri](/tr/channels/group-messages)
- [Grup mesajları](/tr/channels/group-messages)
- [Eşleştirme](/tr/channels/pairing)

View File

@ -1,25 +1,25 @@
---
read_when:
- OpenClaw'ı IRC kanallarına veya DM'lere bağlamak istiyorsunuz
- IRC izin listelerini, grup ilkesini veya bahsetme geçitlemesini yapılandırıyorsunuz
- OpenClawu IRC kanallarına veya DMlere bağlamak istiyorsunuz
- IRC izin listelerini, grup ilkesini veya bahsetme kısıtlamasını yapılandırıyorsunuz
summary: IRC Plugin kurulumu, erişim denetimleri ve sorun giderme
title: IRC
x-i18n:
generated_at: "2026-04-24T08:58:24Z"
model: gpt-5.4
generated_at: "2026-05-04T02:21:27Z"
model: gpt-5.5
provider: openai
source_hash: 76f316c0f026d0387a97dc5dcb6d8967f6e4841d94b95b36e42f6f6284882a69
source_hash: 43c3098fe49a5e7405443df73e1bf752a579460dc0b2070c3d07f43b512bb555
source_path: channels/irc.md
workflow: 15
workflow: 16
---
OpenClaw'ı klasik kanallarda (`#oda`) ve doğrudan mesajlarda kullanmak istediğinizde IRC kullanın.
OpenClaw'ı klasik kanallarda (`#room`) ve doğrudan mesajlarda kullanmak istediğinizde IRC kullanın.
IRC, paketle birlikte gelen bir Plugin olarak sunulur, ancak ana yapılandırmada `channels.irc` altında yapılandırılır.
## Hızlı başlangıç
1. `~/.openclaw/openclaw.json` içinde IRC yapılandırmasını etkinleştirin.
2. En azından şunları ayarlayın:
2. En az şunları ayarlayın:
```json5
{
@ -36,7 +36,7 @@ IRC, paketle birlikte gelen bir Plugin olarak sunulur, ancak ana yapılandırmad
}
```
Bot koordinasyonu için özel bir IRC sunucusu tercih edin. Bilerek herkese açık bir IRC ağı kullanıyorsanız yaygın seçenekler arasında Libera.Chat, OFTC ve Snoonet bulunur. Bot veya swarm arka kanal trafiği için tahmin edilebilir herkese açık kanallardan kaçının.
Bot koordinasyonu için özel bir IRC sunucusu tercih edin. Bilerek herkese açık bir IRC ağı kullanıyorsanız yaygın seçenekler arasında Libera.Chat, OFTC ve Snoonet bulunur. Bot veya sürü arka kanal trafiği için tahmin edilebilir herkese açık kanallardan kaçının.
3. Gateway'i başlatın/yeniden başlatın:
@ -46,38 +46,39 @@ openclaw gateway run
## Güvenlik varsayılanları
- `channels.irc.dmPolicy` varsayılan olarak `"pairing"` değerini kullanır.
- `channels.irc.groupPolicy` varsayılan olarak `"allowlist"` değerini kullanır.
- `groupPolicy="allowlist"` olduğunda izin verilen kanalları tanımlamak için `channels.irc.groups` ayarlayın.
- Bilerek düz metin taşımayı kabul etmiyorsanız TLS kullanın (`channels.irc.tls=true`).
- IRC, OpenClaw operatör yönetimli ileri proxy yönlendirmesi dışında ham TCP/TLS soketleri kullanır. Tüm çıkış trafiğinin bu ileri proxy üzerinden geçmesini gerektiren dağıtımlarda, doğrudan IRC çıkışına açıkça onay verilmedikçe `channels.irc.enabled=false` ayarlayın.
- `channels.irc.dmPolicy` varsayılan olarak `"pairing"` değerindedir.
- `channels.irc.groupPolicy` varsayılan olarak `"allowlist"` değerindedir.
- `groupPolicy="allowlist"` ile izin verilen kanalları tanımlamak için `channels.irc.groups` ayarlayın.
- Bilerek düz metin aktarımı kabul etmiyorsanız TLS (`channels.irc.tls=true`) kullanın.
## Erişim denetimi
IRC kanalları için iki ayrıgeçit” vardır:
IRC kanalları için iki ayrıkapı” vardır:
1. **Kanal erişimi** (`groupPolicy` + `groups`): botun bir kanaldan gelen mesajları hiç kabul edip etmeyeceği.
2. **Gönderen erişimi** (`groupAllowFrom` / kanal başına `groups["#channel"].allowFrom`): o kanal içinde botu kimin tetikleyebileceği.
2. **Gönderen erişimi** (`groupAllowFrom` / kanal başına `groups["#channel"].allowFrom`): o kanalda botu kimin tetikleyebileceği.
Yapılandırma anahtarları:
- DM izin listesi (DM gönderen erişimi): `channels.irc.allowFrom`
- Grup gönderen izin listesi (kanal gönderen erişimi): `channels.irc.groupAllowFrom`
- Kanal başına denetimler (kanal + gönderen + bahsetme kuralları): `channels.irc.groups["#channel"]`
- `channels.irc.groupPolicy="open"` yapılandırılmamış kanallara izin verir (**varsayılan olarak yine de bahsetme geçitlemesine tabidir**)
- `channels.irc.groupPolicy="open"` yapılandırılmamış kanallara izin verir (**yine de varsayılan olarak bahsetme kapısına tabidir**)
İzin listesi girdileri kararlı gönderen kimliklerini kullanmalıdır (`nick!user@host`).
Yalın nick eşleştirmesi değişkendir ve yalnızca `channels.irc.dangerouslyAllowNameMatching: true` olduğunda etkinleştirilir.
İzin listesi girdileri kararlı gönderen kimlikleri (`nick!user@host`) kullanmalıdır.
Yalın nick eşleştirmesi değiştirilebilir niteliktedir ve yalnızca `channels.irc.dangerouslyAllowNameMatching: true` olduğunda etkinleştirilir.
### Yaygın tuzak: `allowFrom` DM'ler içindir, kanallar için değil
### Yaygın hata: `allowFrom` DM'ler içindir, kanallar için değil
Şur günlükler görürseniz:
Şuna benzer günlükler görürseniz:
- `irc: drop group sender alice!ident@host (policy=allowlist)`
...bu, gönderenin **grup/kanal** mesajları için izinli olmadığı anlamına gelir. Bunu şu yollardan biriyle düzeltin:
…bu, gönderenin **grup/kanal** mesajları için izinli olmadığı anlamına gelir. Şunlardan biriyle düzeltin:
- `channels.irc.groupAllowFrom` ayarlayın (tüm kanallar için genel), veya
- kanal başına gönderen izin listeleri ayarlayın: `channels.irc.groups["#channel"].allowFrom`
- `channels.irc.groupAllowFrom` ayarlamak (tüm kanallar için genel), veya
- kanal başına gönderen izin listeleri ayarlamak: `channels.irc.groups["#channel"].allowFrom`
Örnek (`#tuirc-dev` içindeki herkesin botla konuşmasına izin ver):
@ -96,11 +97,11 @@ Yalın nick eşleştirmesi değişkendir ve yalnızca `channels.irc.dangerouslyA
## Yanıt tetikleme (bahsetmeler)
Bir kanala izin verilmiş olsa bile (`groupPolicy` + `groups` ile) ve gönderen izinli olsa bile OpenClaw, grup bağlamlarında varsayılan olarak **bahsetme geçitlemesi** kullanır.
Bir kanala izin verilmiş olsa (`groupPolicy` + `groups` üzerinden) ve gönderen izinli olsa bile OpenClaw, grup bağlamlarında varsayılan olarak **bahsetme kapısı** uygular.
Bu, mesaj botla eşleşen bir bahsetme deseni içermiyorsa `drop channel … (missing-mention)` gibi günlükler görebileceğiniz anlamına gelir.
Bu, mesaj botla eşleşen bir bahsetme deseni içermediği sürece `drop channel … (missing-mention)` gibi günlükler görebileceğiniz anlamına gelir.
Botun bir IRC kanalında **bahsetme gerekmeksizin** yanıt vermesini istiyorsanız, o kanal için bahsetme geçitlemesini devre dışı bırakın:
Botun bir IRC kanalında **bahsetme gerektirmeden** yanıt vermesini sağlamak için o kanal için bahsetme kapısını devre dışı bırakın:
```json5
{
@ -118,7 +119,7 @@ Botun bir IRC kanalında **bahsetme gerekmeksizin** yanıt vermesini istiyorsan
}
```
Ya da **tüm** IRC kanallarına izin vermek (kanal başına izin listesi olmadan) ve yine de bahsetme olmadan yanıt vermek için:
Veya **tüm** IRC kanallarına izin vermek (kanal başına izin listesi olmadan) ve yine de bahsetme olmadan yanıtlamak için:
```json5
{
@ -135,7 +136,7 @@ Ya da **tüm** IRC kanallarına izin vermek (kanal başına izin listesi olmadan
## Güvenlik notu (herkese açık kanallar için önerilir)
Herkese açık bir kanalda `allowFrom: ["*"]` kullanırsanız, herkes botu istemle tetikleyebilir.
Herkese açık bir kanalda `allowFrom: ["*"]` izni verirseniz herkes botu istemleyebilir.
Riski azaltmak için o kanalın araçlarını kısıtlayın.
### Kanaldaki herkes için aynı araçlar
@ -157,9 +158,9 @@ Riski azaltmak için o kanalın araçlarını kısıtlayın.
}
```
### Gönderene göre farklı araçlar (sahip daha fazla yetki alır)
### Gönderen başına farklı araçlar (sahip daha fazla yetki alır)
`"*"` için daha sıkı, kendi nick'iniz için daha gevşek bir ilke uygulamak üzere `toolsBySender` kullanın:
`"*"` için daha sıkı, nick'iniz için daha gevşek bir ilke uygulamak üzere `toolsBySender` kullanın:
```json5
{
@ -185,16 +186,16 @@ Riski azaltmak için o kanalın araçlarını kısıtlayın.
Notlar:
- `toolsBySender` anahtarları IRC gönderen kimlik değerleri için `id:` kullanmalıdır:
daha güçlü eşleştirme için `id:eigen` veya `id:eigen!~eigen@174.127.248.171`.
- `toolsBySender` anahtarları IRC gönderen kimliği değerleri için `id:` kullanmalıdır:
Daha güçlü eşleştirme için `id:eigen` veya `id:eigen!~eigen@174.127.248.171`.
- Eski öneksiz anahtarlar hâlâ kabul edilir ve yalnızca `id:` olarak eşleştirilir.
- İlk eşleşen gönderen ilkesi kazanır; `"*"` joker yedektir.
Grup erişimi ile bahsetme geçitlemesi (ve bunların nasıl etkileştiği) hakkında daha fazla bilgi için bkz.: [/channels/groups](/tr/channels/groups).
Grup erişimi ile bahsetme kapısı hakkında daha fazla bilgi (ve nasıl etkileştikleri) için bkz.: [/channels/groups](/tr/channels/groups).
## NickServ
Bağlantıdan sonra NickServ ile kimlik doğrulamak için:
Bağlandıktan sonra NickServ ile kimlik doğrulamak için:
```json5
{
@ -210,7 +211,7 @@ Bağlantıdan sonra NickServ ile kimlik doğrulamak için:
}
```
Bağlantıda isteğe bağlı tek seferlik kayıt:
Bağlanırken isteğe bağlı tek seferlik kayıt:
```json5
{
@ -225,7 +226,7 @@ Bağlantıda isteğe bağlı tek seferlik kayıt:
}
```
Tekrarlanan REGISTER denemelerini önlemek için nick kaydedildikten sonra `register` değerini devre dışı bırakın.
Yinelenen REGISTER denemelerini önlemek için nick kaydedildikten sonra `register` değerini devre dışı bırakın.
## Ortam değişkenleri
@ -246,14 +247,14 @@ Varsayılan hesap şunları destekler:
## Sorun giderme
- Bot bağlanıyor ancak kanallarda hiç yanıt vermiyorsa `channels.irc.groups` ayarını **ve** bahsetme geçitlemesinin mesajları düşürüp düşürmediğini (`missing-mention`) doğrulayın. Ping olmadan yanıt vermesini istiyorsanız kanal için `requireMention:false` ayarlayın.
- Giriş başarısız oluyorsa nick'in kullanılabilirliğini ve sunucu parolasını doğrulayın.
- Özel bir ağda TLS başarısız oluyorsa ana bilgisayar/port ve sertifika kurulumunu doğrulayın.
- Bot bağlanıyor ama kanallarda hiç yanıt vermiyorsa `channels.irc.groups` ayarını **ve** bahsetme kapısının mesajları düşürüp düşürmediğini (`missing-mention`) doğrulayın. Ping olmadan yanıt vermesini istiyorsanız kanal için `requireMention:false` ayarlayın.
- Oturum açma başarısız olursa nick kullanılabilirliğini ve sunucu parolasını doğrulayın.
- Özel bir ağda TLS başarısız olursa host/port ve sertifika kurulumunu doğrulayın.
## İlgili
- [Kanallara Genel Bakış](/tr/channels) — desteklenen tüm kanallar
- [Pairing](/tr/channels/pairing) — DM kimlik doğrulaması ve eşleştirme akışı
- [Gruplar](/tr/channels/groups) — grup sohbeti davranışı ve bahsetme geçitlemesi
- [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
- [Eşleştirme](/tr/channels/pairing) — DM kimlik doğrulaması ve eşleştirme akışı
- [Gruplar](/tr/channels/groups) — grup sohbeti davranışı ve bahsetme kapısı
- [Kanal Yönlendirme](/tr/channels/channel-routing) — mesajlar için oturum yönlendirme
- [Güvenlik](/tr/gateway/security) — erişim modeli ve sıkılaştırma

View File

@ -1,15 +1,15 @@
---
read_when:
- DM erişim denetimini ayarlama
- Yeni bir iOS/Android Node eşleştirme
- OpenClaw güvenlik duruşunu inceleme
summary: 'Eşleştirme genel bakışı: kimlerin size özel mesaj gönderebileceğini + hangi Node''ların katılabileceğini onaylayın'
- DM erişim kontrolünü ayarlama
- Yeni bir iOS/Android Node'u eşleştirme
- OpenClaw'un güvenlik duruşunu gözden geçirme
summary: 'Eşleştirme genel bakışı: size kimlerin doğrudan mesaj gönderebileceğini + hangi düğümlerin katılabileceğini onaylayın'
title: Eşleştirme
x-i18n:
generated_at: "2026-05-02T08:47:56Z"
generated_at: "2026-05-04T02:21:37Z"
model: gpt-5.5
provider: openai
source_hash: bb68d87c0e1dfe7c9a6a6d9415f4c63625755fb43a2e22a1d1374ff0a63e49c4
source_hash: 4fb27840f7c9ef55e7270cc29f813e6db90b240aa2180f30952eb9485f0f8874
source_path: channels/pairing.md
workflow: 16
---
@ -17,27 +17,27 @@ x-i18n:
“Eşleştirme”, OpenClawın açık erişim onayı adımıdır.
İki yerde kullanılır:
1. **DM eşleştirme** (botla kimlerin konuşmasına izin verildiği)
2. **Node eşleştirme** (hangi cihazların/Nodeların Gateway ağına katılmasına izin verildiği)
1. **DM eşleştirmesi** (botla kimin konuşmasına izin verildiği)
2. **Node eşleştirmesi** (hangi cihazların/Nodeların Gateway ağına katılmasına izin verildiği)
Güvenlik bağlamı: [Güvenlik](/tr/gateway/security)
## 1) DM eşleştirme (gelen sohbet erişimi)
## 1) DM eşleştirmesi (gelen sohbet erişimi)
Bir kanal DM ilkesi `pairing` ile yapılandırıldığında, bilinmeyen gönderenler kısa bir kod alır ve onaylayana kadar mesajları **işlenmez**.
Bir kanal `pairing` DM politikasıyla yapılandırıldığında, bilinmeyen gönderenler kısa bir kod alır ve siz onaylayana kadar mesajları **işlenmez**.
Varsayılan DM ilkeleri şurada belgelenmiştir: [Güvenlik](/tr/gateway/security)
Varsayılan DM politikaları burada belgelenmiştir: [Güvenlik](/tr/gateway/security)
`dmPolicy: "open"` yalnızca etkin DM izin listesinin `"*"` içerdiği durumda herkese açıktır.
`dmPolicy: "open"` yalnızca etkin DM izin listesi `"*"` içerdiğinde herkese açıktır.
Kurulum ve doğrulama, herkese açık `open` yapılandırmaları için bu joker karakteri gerektirir. Mevcut
durum somut `allowFrom` girdileriyle `open` içeriyorsa, çalışma zamanı yine de
durum somut `allowFrom` girdileriyle `open` içeriyorsa, çalışma zamanı yine
yalnızca bu gönderenleri kabul eder ve eşleştirme deposu onayları `open` erişimini genişletmez.
Eşleştirme kodları:
- 8 karakter, büyük harf, belirsiz karakter yok (`0O1I`).
- **1 saat sonra sona erer**. Bot, eşleştirme mesajını yalnızca yeni bir istek oluşturulduğunda gönderir (gönderen başına yaklaşık saatte bir).
- Bekleyen DM eşleştirme istekleri varsayılan olarak **kanal başına 3** ile sınırlıdır; ek istekler biri sona erene veya onaylanana kadar yok sayılır.
- **1 saat sonra süresi dolar**. Bot, eşleştirme mesajını yalnızca yeni bir istek oluşturulduğunda gönderir (gönderen başına yaklaşık saatte bir).
- Bekleyen DM eşleştirme istekleri varsayılan olarak **kanal başına 3** ile sınırlandırılır; ek istekler biri sona erene veya onaylanana kadar yok sayılır.
### Bir göndereni onaylama
@ -46,21 +46,21 @@ openclaw pairing list telegram
openclaw pairing approve telegram <CODE>
```
Henüz bir komut sahibi yapılandırılmadıysa, bir DM eşleştirme kodunu onaylamak
`commands.ownerAllowFrom` değerini de onaylanan gönderene, örneğin `telegram:123456789`,
önyükler. Bu, ilk kurulumlara ayrıcalıklı komutlar ve exec onay istemleri için
ık bir sahip verir. Bir sahip olduktan sonra, sonraki eşleştirme onayları yalnızca DM
Henüz komut sahibi yapılandırılmamışsa, bir DM eşleştirme kodunu onaylamak
`commands.ownerAllowFrom` değerini de `telegram:123456789` gibi onaylanan gönderene başlatır.
Bu, ilk kurulumlara ayrıcalıklı komutlar ve exec onay istemleri içinık bir sahip verir.
Bir sahip mevcut olduktan sonra, sonraki eşleştirme onayları yalnızca DM
erişimi verir; daha fazla sahip eklemez.
Desteklenen kanallar: `bluebubbles`, `discord`, `feishu`, `googlechat`, `imessage`, `irc`, `line`, `matrix`, `mattermost`, `msteams`, `nextcloud-talk`, `nostr`, `openclaw-weixin`, `signal`, `slack`, `synology-chat`, `telegram`, `twitch`, `whatsapp`, `zalo`, `zalouser`.
### Yeniden kullanılabilir gönderen grupları
Aynı güvenilir gönderen kümesi birden fazla mesaj kanalına ya da hem DM hem de grup izin listelerine
uygulanacaksa üst düzey `accessGroups` kullanın.
Aynı güvenilir gönderen kümesinin birden fazla mesaj kanalına veya hem DM hem
grup izin listelerine uygulanması gerektiğinde üst düzey `accessGroups` kullanın.
Statik gruplar `type: "message.senders"` kullanır ve kanal izin listelerinden
`accessGroup:<name>` ile başvurulur:
`accessGroup:<name>` ile referanslanır:
```json5
{
@ -85,61 +85,61 @@ Erişim grupları burada ayrıntılı olarak belgelenmiştir: [Erişim grupları
### Durumun bulunduğu yer
`~/.openclaw/credentials/` altında saklanır:
`~/.openclaw/credentials/` altında depolanır:
- Bekleyen istekler: `<channel>-pairing.json`
- Onaylanmış izin listesi deposu:
- Onaylı izin listesi deposu:
- Varsayılan hesap: `<channel>-allowFrom.json`
- Varsayılan olmayan hesap: `<channel>-<accountId>-allowFrom.json`
Hesap kapsamı davranışı:
- Varsayılan olmayan hesaplar yalnızca kendi kapsamlı izin listesi dosyasını okur/yazar.
- Varsayılan hesap, kanal kapsamlı kapsamsız izin listesi dosyasını kullanır.
- Varsayılan olmayan hesaplar yalnızca kendi kapsamlı izin listesi dosyalarını okur/yazar.
- Varsayılan hesap, kanal kapsamlı kapsamlandırılmamış izin listesi dosyasını kullanır.
Bunları hassas kabul edin (asistanınıza erişimi denetlerler).
<Note>
Eşleştirme izin listesi deposu DM erişimi içindir. Grup yetkilendirmesi ayrıdır.
Bir DM eşleştirme kodunu onaylamak, bu gönderenin grup komutları çalıştırmasına
veya gruplarda botu denetlemesine otomatik olarak izin vermez. İlk sahip önyüklemesi,
`commands.ownerAllowFrom` içinde ayrı yapılandırma durumudur ve grup sohbeti teslimi yine de
kanalın grup izin listelerini izler (örneğin kanala bağlı olarak `groupAllowFrom`, `groups` veya grup başına
ya da konu başına geçersiz kılmalar).
Bir DM eşleştirme kodunu onaylamak, o gönderenin grup komutlarını çalıştırmasına
veya botu gruplarda denetlemesine otomatik olarak izin vermez. İlk sahip başlatması
`commands.ownerAllowFrom` içinde ayrı bir yapılandırma durumudur ve grup sohbeti teslimi yine
kanalın grup izin listelerini izler (örneğin kanala bağlı olarak `groupAllowFrom`, `groups` ya da grup başına
veya konu başına geçersiz kılmalar).
</Note>
## 2) Node cihaz eşleştirme (iOS/Android/macOS/başsız Nodelar)
## 2) Node cihaz eşleştirmesi (iOS/Android/macOS/başsız Nodelar)
Nodelar Gatewaye `role: node` ile **cihazlar** olarak bağlanır. Gateway
Nodelar Gatewaye `role: node` ile **cihaz** olarak bağlanır. Gateway
onaylanması gereken bir cihaz eşleştirme isteği oluşturur.
### Telegram üzerinden eşleştirme (iOS için önerilir)
`device-pair` Pluginini kullanıyorsanız, ilk cihaz eşleştirmesini tamamen Telegramdan yapabilirsiniz:
1. Telegramda botunuza şu mesajı gönderin: `/pair`
2. Bot iki mesajla yanıt verir: bir yönerge mesajı ve ayrı bir **kurulum kodu** mesajı (Telegramda kopyalayıp/yapıştırması kolaydır).
1. Telegramda botunuza mesaj gönderin: `/pair`
2. Bot iki mesajla yanıt verir: bir yönerge mesajı ve ayrı bir **kurulum kodu** mesajı (Telegramda kopyalaması/yapıştırması kolaydır).
3. Telefonunuzda OpenClaw iOS uygulamasınıın → Ayarlar → Gateway.
4. Kurulum kodunu yapıştırın ve bağlanın.
5. Telegrama dönün: `/pair pending` (istek kimliklerini, rolü ve kapsamları gözden geçirin), ardından onaylayın.
5. Telegrama geri dönün: `/pair pending` (istek kimliklerini, rolü ve kapsamları inceleyin), ardından onaylayın.
Kurulum kodu, şunları içeren base64 kodlu bir JSON yüküdür:
- `url`: Gateway WebSocket URLsi (`ws://...` veya `wss://...`)
- `bootstrapToken`: ilk eşleştirme el sıkışması için kullanılan kısa ömürlü, tek cihazlık önyükleme belirteci
- `bootstrapToken`: ilk eşleştirme el sıkışması için kullanılan kısa ömürlü tek cihazlık başlangıç tokenı
Bu önyükleme belirteci yerleşik eşleştirme önyükleme profilini taşır:
Bu başlangıç tokenı yerleşik eşleştirme başlangıç profilini taşır:
- birincil devredilen `node` belirteci `scopes: []` olarak kalır
- devredilen herhangi bir `operator` belirteci önyükleme izin listesiyle sınırlı kalır:
- birincil devredilen `node` tokenı `scopes: []` olarak kalır
- devredilen herhangi bir `operator` tokenı başlangıç izin listesiyle sınırlı kalır:
`operator.approvals`, `operator.read`, `operator.talk.secrets`, `operator.write`
- önyükleme kapsam denetimleri rol öneklidir, tek düz bir kapsam havuzu değildir:
operator kapsam girdileri yalnızca operator isteklerini karşılar ve operator olmayan rollerin
yine de kendi rol önekleri altında kapsam istemesi gerekir
- sonraki belirteç döndürme/iptal işlemleri hem cihazın onaylanmış rol sözleşmesiyle
- başlangıç kapsamı denetimleri rol öneklidir, tek düz bir kapsam havuzu değildir:
operator kapsam girdileri yalnızca operator isteklerini karşılar ve operator olmayan roller
yine kendi rol önekleri altında kapsam istemelidir
- sonraki token döndürme/iptal işlemleri hem cihazın onaylı rol sözleşmesiyle
hem de çağıran oturumun operator kapsamlarıyla sınırlı kalır
Kurulum kodunu geçerli olduğu sürece bir parola gibi ele alın.
Kurulum kodunu geçerli olduğu süre boyunca parola gibi değerlendirin.
### Bir Node cihazını onaylama
@ -149,18 +149,25 @@ openclaw devices approve <requestId>
openclaw devices reject <requestId>
```
ık bir onay, onaylayan eşleştirilmiş cihaz oturumu yalnızca eşleştirme kapsamıyla
ıldığı için reddedildiğinde, CLI aynı isteği
`operator.admin` ile yeniden dener. Bu, mevcut admin yetkinliğine sahip eşleştirilmiş bir cihazın yeni
Denetim UIsi/tarayıcı eşleştirmesini `devices/paired.json` dosyasını elle düzenlemeden kurtarmasını sağlar.
Gateway yeniden denenen bağlantıyı yine doğrular; `operator.admin` ile kimlik doğrulaması
yapamayan tokenlar engelli kalır.
Aynı cihaz farklı kimlik doğrulama ayrıntılarıyla yeniden denerse (örneğin farklı
rol/kapsamlar/genel anahtar), önceki bekleyen isteğin yerini yenisi alır ve yeni bir
rol/kapsamlar/ık anahtar), önceki bekleyen istek geçersiz kılınır ve yeni bir
`requestId` oluşturulur.
<Note>
Zaten eşleştirilmiş bir cihaz sessizce daha geniş erişim almaz. Daha fazla kapsam veya daha geniş bir rol isteyerek yeniden bağlanırsa, OpenClaw mevcut onayı olduğu gibi korur ve yeni bir bekleyen yükseltme isteği oluşturur. Onaylamadan önce şu anda onaylı erişimi yeni istenen erişimle karşılaştırmak için `openclaw devices list` kullanın.
Zaten eşleştirilmiş bir cihaz sessizce daha geniş erişim almaz. Daha fazla kapsam veya daha geniş bir rol isteyerek yeniden bağlanırsa, OpenClaw mevcut onayı olduğu gibi tutar ve yeni bir bekleyen yükseltme isteği oluşturur. Onaylamadan önce şu anda onaylı erişimi yeni istenen erişimle karşılaştırmak için `openclaw devices list` kullanın.
</Note>
### İsteğe bağlı güvenilir CIDR Node otomatik onayı
Cihaz eşleştirme varsayılan olarak manuel kalır. Sıkı denetlenen Node ağları için,
ık CIDRlar veya tam IPlerle ilk kez Node otomatik onayına katılabilirsiniz:
Cihaz eşleştirmesi varsayılan olarak elle yapılır. Sıkı denetimli Node ağları için,
ık CIDRler veya tam IPlerle ilk Node otomatik onayına dahil olabilirsiniz:
```json5
{
@ -175,25 +182,26 @@ açık CIDRlar veya tam IPlerle ilk kez Node otomatik onayına katılabili
```
Bu yalnızca istenen kapsamı olmayan yeni `role: node` eşleştirme istekleri için geçerlidir.
Operator, tarayıcı, Control UI ve WebChat istemcileri yine de manuel onay gerektirir.
Rol, kapsam, meta veri ve genel anahtar değişiklikleri yine de manuel onay gerektirir.
Operator, tarayıcı, Denetim UIsi ve WebChat istemcileri yine elle
onay gerektirir. Rol, kapsam, meta veri ve açık anahtar değişiklikleri yine elle
onay gerektirir.
### Node eşleştirme durum depolaması
### Node eşleştirme durumunun depolanması
`~/.openclaw/devices/` altında saklanır:
`~/.openclaw/devices/` altında depolanır:
- `pending.json` (kısa ömürlü; bekleyen istekler sona erer)
- `paired.json` (eşleştirilmiş cihazlar + belirteçler)
- `pending.json` (kısa ömürlü; bekleyen isteklerin süresi dolar)
- `paired.json` (eşleştirilmiş cihazlar + tokenlar)
### Notlar
- Eski `node.pair.*` APIsi (CLI: `openclaw nodes pending|approve|reject|remove|rename`)
ayrı, gateway tarafından sahip olunan bir eşleştirme deposudur. WS Nodeları yine de cihaz eşleştirmesi gerektirir.
- Eşleştirme kaydı, onaylanmış roller için kalıcı doğruluk kaynağıdır. Etkin
cihaz belirteçleri bu onaylanmış rol kümesiyle sınırlı kalır; onaylanmış rollerin
dışındaki başıboş bir belirteç girdisi yeni erişim oluşturmaz.
ayrı bir Gateway sahipli eşleştirme deposudur. WS Nodeları yine cihaz eşleştirmesi gerektirir.
- Eşleştirme kaydı, onaylı roller için kalıcı doğruluk kaynağıdır. Etkin
cihaz tokenları bu onaylı rol kümesiyle sınırlı kalır; onaylı rollerin
dışındaki başıboş bir token girdisi yeni erişim oluşturmaz.
## İlgili belgeler
## İlgili dokümanlar
- Güvenlik modeli + istem enjeksiyonu: [Güvenlik](/tr/gateway/security)
- Güvenli güncelleme (doctor çalıştırın): [Güncelleme](/tr/install/updating)

View File

@ -1,22 +1,22 @@
---
read_when:
- OpenClaw'u QQ'ya bağlamak istiyorsunuz
- OpenClaw'ı QQ'ya bağlamak istiyorsunuz
- QQ Bot kimlik bilgilerini ayarlamanız gerekiyor
- QQ Bot için grup veya özel sohbet desteği istiyorsunuz
- QQ Bot grup veya özel sohbet desteği istiyorsunuz
summary: QQ Bot kurulumu, yapılandırması ve kullanımı
title: QQ botu
x-i18n:
generated_at: "2026-05-03T21:27:37Z"
generated_at: "2026-05-04T02:21:32Z"
model: gpt-5.5
provider: openai
source_hash: 471c24110bf0ab8896d22f5bb5932ac4e03ff5169560c99ba6b9d1ca4025d9a8
source_hash: e17fa0da2f6939ed28cac5f13b3e37e6c63b87a10250ff213f7a86685a6141d6
source_path: channels/qqbot.md
workflow: 16
---
QQ Bot, resmi QQ Bot API'si (WebSocket ağ geçidi) üzerinden OpenClaw'a bağlanır. Plugin, zengin medyayla (görseller, ses, video, dosyalar) C2C özel sohbeti, grup @mesajlarını ve lonca kanal mesajlarını destekler.
QQ Bot, resmi QQ Bot API'si (WebSocket gateway) üzerinden OpenClaw'a bağlanır. Plugin; C2C özel sohbeti, grup @mesajlarını ve zengin medyayla (görüntüler, ses, video, dosyalar) guild kanal mesajlarını destekler.
Durum: indirilebilir Plugin. Doğrudan mesajlar, grup sohbetleri, lonca kanalları ve medya desteklenir. Tepkiler ve ileti dizileri desteklenmez.
Durum: indirilebilir Plugin. Doğrudan mesajlar, grup sohbetleri, guild kanalları ve medya desteklenir. Tepkiler ve iş parçacıkları desteklenmez.
## Kurulum
@ -28,12 +28,13 @@ openclaw plugins install @openclaw/qqbot
## Ayarlama
1. [QQ Open Platform](https://q.qq.com/) adresine gidin ve kaydolmak / oturum açmak için QR kodunu telefonunuzdaki QQ ile tarayın.
2. Yeni bir QQ bot oluşturmak için **Create Bot** düğmesine tıklayın.
1. [QQ Open Platform](https://q.qq.com/) adresine gidin ve kaydolmak / oturum açmak için QR kodunu
telefonunuzdaki QQ ile tarayın.
2. Yeni bir QQ botu oluşturmak için **Create Bot** düğmesine tıklayın.
3. Botun ayarlar sayfasında **AppID** ve **AppSecret** değerlerini bulun ve kopyalayın.
> AppSecret düz metin olarak saklanmaz; kaydetmeden sayfadan ayrılırsanız
> yeni bir tane oluşturmanız gerekir.
> yeni bir tane yeniden oluşturmanız gerekir.
4. Kanalı ekleyin:
@ -102,15 +103,15 @@ Ortam SecretRef AppSecret:
Notlar:
- Ortam geri dönüşü yalnızca varsayılan QQ Bot hesabına uygulanır.
- `openclaw channels add --channel qqbot --token-file ...`, yalnızca
AppSecret sağlar; AppID'nin yapılandırmada veya `QQBOT_APP_ID` içinde zaten ayarlanmış olması gerekir.
- `clientSecret`, yalnızca düz metin dizesini değil, SecretRef girişini de kabul eder.
- Eski `secretref:/...` işaret dizeleri geçerli `clientSecret` değerleri değildir;
- `openclaw channels add --channel qqbot --token-file ...` yalnızca
AppSecret sağlar; AppID yapılandırmada veya `QQBOT_APP_ID` içinde zaten ayarlanmış olmalıdır.
- `clientSecret`, yalnızca düz metin dizesi değil, SecretRef girdisini de kabul eder.
- Eski `secretref:/...` işaretçi dizeleri geçerli `clientSecret` değerleri değildir;
yukarıdaki örnekteki gibi yapılandırılmış SecretRef nesneleri kullanın.
### Çok hesaplı ayarlama
Tek bir OpenClaw örneği altında birden çok QQ bot çalıştırın:
Tek bir OpenClaw örneği altında birden fazla QQ botu çalıştırın:
```json5
{
@ -131,7 +132,8 @@ Tek bir OpenClaw örneği altında birden çok QQ bot çalıştırın:
}
```
Her hesap kendi WebSocket bağlantısını başlatır ve bağımsız bir belirteç önbelleği (`appId` ile yalıtılmış) tutar.
Her hesap kendi WebSocket bağlantısını başlatır ve bağımsız bir token önbelleği
tutar (`appId` ile yalıtılır).
CLI üzerinden ikinci bir bot ekleyin:
@ -141,7 +143,8 @@ openclaw channels add --channel qqbot --account bot2 --token "222222222:secret-o
### Grup sohbetleri
QQ Bot grup sohbeti desteği, görünen adları değil QQ grubu OpenID'lerini kullanır. Botu bir gruba ekleyin, ardından ondan bahsedin veya grubu bahsetme olmadan çalışacak şekilde yapılandırın.
QQ Bot grup sohbeti desteği, görünen adları değil QQ grup OpenID'lerini kullanır. Botu
bir gruba ekleyin, ardından ondan bahsedin veya grubu bahsetme olmadan çalışacak şekilde yapılandırın.
```json5
{
@ -169,25 +172,29 @@ QQ Bot grup sohbeti desteği, görünen adları değil QQ grubu OpenID'lerini ku
```
`groups["*"]` her grup için varsayılanları ayarlar ve somut bir
`groups.GROUP_OPENID` girdisi bu varsayılanları tek bir grup için geçersiz kılar. Grup ayarları şunları içerir:
`groups.GROUP_OPENID` girdisi bu varsayılanları bir grup için geçersiz kılar. Grup
ayarları şunları içerir:
- `requireMention`: bot yanıt vermeden önce @bahsetme gerektirir. Varsayılan: `true`.
- `ignoreOtherMentions`: botu değil başka birini anan mesajları bırakır.
- `historyLimit`: son bahsedilen sıraya bağlam olarak son bahsetme içermeyen grup mesajlarını saklar. Devre dışı bırakmak için `0` olarak ayarlayın.
- `requireMention`: bot yanıtlamadan önce @bahsetme gerektirir. Varsayılan: `true`.
- `ignoreOtherMentions`: başka birinden bahsedip bottan bahsetmeyen mesajları bırakır.
- `historyLimit`: bir sonraki bahsedilmiş tur için son bahsetmesiz grup mesajlarını bağlam olarak tutar. Devre dışı bırakmak için `0` olarak ayarlayın.
- `toolPolicy`: grup kapsamlı araçlar için `full`, `restricted` veya `none`.
- `name`: günlüklerde ve grup bağlamında kullanılan kolay okunur etiket.
- `prompt`: ajan bağlamına eklenen grup başına davranış istemi.
Etkinleştirme modları `mention` ve `always` değerleridir. `requireMention: true`,
`mention` ile eşleşir; `requireMention: false`, `always` ile eşleşir. Varsa oturum düzeyindeki etkinleştirme geçersiz kılması yapılandırmaya üstün gelir.
Etkinleştirme modları `mention` ve `always` değerleridir. `requireMention: true`
`mention` değerine; `requireMention: false` ise `always` değerine eşlenir. Varsa oturum düzeyindeki etkinleştirme
geçersiz kılması, yapılandırmaya üstün gelir.
Gelen kuyruk eş başınadır. Grup eşleri daha büyük bir kuyruk sınırı alır, dolduğunda insan mesajlarını bot tarafından yazılmış konuşmaların önünde tutar ve normal grup mesajı patlamalarını tek bir atıflı sıraya birleştirir. Eğik çizgi komutları yine tek tek çalışır.
Gelen kuyruk eş başınadır. Grup eşleri daha büyük bir kuyruk sınırı alır, dolduğunda insan
mesajlarını bot tarafından yazılmış konuşmaların önünde tutar ve normal
grup mesajı patlamalarını tek bir atıflı tura birleştirir. Slash komutları yine tek tek çalışır.
### Ses (STT / TTS)
STT ve TTS, öncelikli geri dönüşle iki düzeyli yapılandırmayı destekler:
| Ayar | Plugin'e özgü | Çerçeve geri dönüşü |
| Ayar | Plugin'e özgü | Framework geri dönüşü |
| ------- | -------------------------------------------------------- | ----------------------------- |
| STT | `channels.qqbot.stt` | `tools.media.audio.models[0]` |
| TTS | `channels.qqbot.tts`, `channels.qqbot.accounts.<id>.tts` | `messages.tts` |
@ -206,7 +213,7 @@ STT ve TTS, öncelikli geri dönüşle iki düzeyli yapılandırmayı destekler:
voice: "your-voice",
},
accounts: {
qq-main: {
"qq-main": {
tts: {
providers: {
openai: { voice: "shimmer" },
@ -219,78 +226,82 @@ STT ve TTS, öncelikli geri dönüşle iki düzeyli yapılandırmayı destekler:
}
```
Devre dışı bırakmak için ikisinden birinde `enabled: false` ayarlayın.
Hesap düzeyi TTS geçersiz kılmaları, `messages.tts` ile aynı yapıyı kullanır ve kanal/genel TTS yapılandırmasının üzerine derin birleştirme yapar.
Devre dışı bırakmak için herhangi birinde `enabled: false` ayarlayın.
Hesap düzeyindeki TTS geçersiz kılmaları `messages.tts` ile aynı şekli kullanır ve kanal/genel TTS yapılandırmasının
üzerine derin birleştirme yapar.
Gelen QQ ses ekleri, ham ses dosyaları genel `MediaPaths` dışında tutulurken ajanlara ses medyası meta verisi olarak sunulur. `[[audio_as_voice]]` düz metin yanıtları, TTS yapılandırıldığında TTS sentezler ve yerel bir QQ sesli mesajı gönderir.
Gelen QQ ses ekleri, ham ses dosyaları genel `MediaPaths` dışında tutulurken
ajanlara ses medyası meta verisi olarak sunulur. TTS yapılandırıldığında
`[[audio_as_voice]]` düz metin yanıtları TTS sentezler ve yerel bir QQ ses mesajı gönderir.
Giden ses yükleme/dönüştürme davranışı ayrıca
`channels.qqbot.audioFormatPolicy` ile ayarlanabilir:
Giden ses yükleme/kod dönüştürme davranışı
`channels.qqbot.audioFormatPolicy` ile de ayarlanabilir:
- `sttDirectFormats`
- `uploadDirectFormats`
- `transcodeEnabled`
## Hedef biçimleri
## Hedef biçimler
| Biçim | Açıklama |
| Biçim | Açıklama |
| -------------------------- | ------------------ |
| `qqbot:c2c:OPENID` | Özel sohbet (C2C) |
| `qqbot:c2c:OPENID` | Özel sohbet (C2C) |
| `qqbot:group:GROUP_OPENID` | Grup sohbeti |
| `qqbot:channel:CHANNEL_ID` | Lonca kanalı |
| `qqbot:channel:CHANNEL_ID` | Guild kanalı |
> Her botun kendi kullanıcı OpenID kümesi vardır. Bot A tarafından alınan bir OpenID,
> Bot B üzerinden mesaj göndermek için **kullanılamaz**.
## Eğik çizgi komutları
## Slash komutları
AI kuyruğundan önce yakalanan yerleşik komutlar:
| Komut | Açıklama |
| Komut | Açıklama |
| -------------- | -------------------------------------------------------------------------------------------------------- |
| `/bot-ping` | Gecikme testi |
| `/bot-version` | OpenClaw çerçeve sürümünü gösterir |
| `/bot-help` | Tüm komutları listeler |
| `/bot-me` | `allowFrom`/`groupAllowFrom` ayarlaması için gönderenin QQ kullanıcı kimliğini (openid) gösterir |
| `/bot-upgrade` | QQBot yükseltme kılavuzu bağlantısını gösterir |
| `/bot-logs` | Son gateway günlüklerini dosya olarak dışa aktarır |
| `/bot-approve` | Bekleyen bir QQ Bot eylemini (örneğin C2C veya grup yüklemesini onaylama) yerel akış üzerinden onaylar. |
| `/bot-version` | OpenClaw framework sürümünü göster |
| `/bot-help` | Tüm komutları listele |
| `/bot-me` | `allowFrom`/`groupAllowFrom` ayarlaması için gönderenin QQ kullanıcı kimliğini (openid) göster |
| `/bot-upgrade` | QQBot yükseltme kılavuzu bağlantısını göster |
| `/bot-logs` | Son gateway günlüklerini dosya olarak dışa aktar |
| `/bot-approve` | Bekleyen bir QQ Bot eylemini (örneğin C2C veya grup yüklemesini onaylama) yerel akış üzerinden onayla. |
Kullanım yardımı için herhangi bir komutun sonuna `?` ekleyin (örneğin `/bot-upgrade ?`).
Kullanım yardımı için herhangi bir komuta `?` ekleyin (örneğin `/bot-upgrade ?`).
Yönetici komutları (`/bot-me`, `/bot-upgrade`, `/bot-logs`, `/bot-clear-storage`, `/bot-streaming`, `/bot-approve`) yalnızca doğrudan mesajda kullanılabilir ve gönderenin openid değerinin açık, joker karakter içermeyen bir `allowFrom` listesinde olmasını gerektirir. Joker karakterli `allowFrom: ["*"]` sohbete izin verir ancak yönetici komutu erişimi vermez. Grup mesajları önce `groupAllowFrom` ile eşleştirilir ve ardından `allowFrom` değerine geri döner. Bir grupta yönetici komutu çalıştırmak, sessizce bırakmak yerine bir ipucu döndürür.
Yönetici komutları (`/bot-me`, `/bot-upgrade`, `/bot-logs`, `/bot-clear-storage`, `/bot-streaming`, `/bot-approve`) yalnızca doğrudan mesajda çalışır ve gönderenin openid değerinin açık, joker olmayan bir `allowFrom` listesinde bulunmasını gerektirir. Joker `allowFrom: ["*"]` sohbeti izinli kılar ancak yönetici komutu erişimi vermez. Grup mesajları önce `groupAllowFrom` ile eşleşir ve sonra `allowFrom` değerine geri döner. Bir yönetici komutunu grupta çalıştırmak, sessizce bırakmak yerine bir ipucu döndürür.
## Motor mimarisi
QQ Bot, Plugin içinde kendi kendine yeterli bir motor olarak gelir:
- Her hesap, `appId` ile anahtarlanan yalıtılmış bir kaynak yığınına (WebSocket bağlantısı, API istemcisi, belirteç önbelleği, medya depolama kökü) sahiptir. Hesaplar gelen/giden durumu hiçbir zaman paylaşmaz.
- Çok hesaplı günlükleyici, tek bir gateway altında birkaç bot çalıştırdığınızda tanılamaların ayrılabilir kalması için günlük satırlarını sahip hesapla etiketler.
- Gelen, giden ve gateway köprü yolları `~/.openclaw/media` altında tek bir medya yükü kökü paylaşır; böylece yüklemeler, indirmeler ve dönüştürme önbellekleri alt sistem başına ayrı bir ağaç yerine tek bir korumalı dizine düşer.
- Her hesap, `appId` ile anahtarlanan yalıtılmış bir kaynak yığınına (WebSocket bağlantısı, API istemcisi, token önbelleği, medya depolama kökü) sahiptir. Hesaplar gelen/giden durumu asla paylaşmaz.
- Çok hesaplı günlükleyici, birkaç botu tek bir gateway altında çalıştırdığınızda tanılamaların ayrı kalması için günlük satırlarını sahip hesapla etiketler.
- Gelen, giden ve gateway köprü yolları `~/.openclaw/media` altında tek bir medya yükü kökü paylaşır; böylece yüklemeler, indirmeler ve kod dönüştürme önbellekleri alt sistem başına bir ağaç yerine tek bir korumalı dizin altında yer alır.
- Zengin medya teslimi, C2C ve grup hedefleri için tek bir `sendMedia` yolundan geçer. Büyük dosya eşiğinin üzerindeki yerel dosyalar ve arabellekler QQ'nun parçalı yükleme uç noktalarını kullanırken daha küçük yükler tek seferlik medya API'sini kullanır.
- Kimlik bilgileri standart OpenClaw kimlik bilgisi anlık görüntülerinin parçası olarak yedeklenip geri yüklenebilir; motor, yeni bir QR kodu eşleştirmesi gerektirmeden geri yüklemede her hesabın kaynak yığınını yeniden bağlar.
- Kimlik bilgileri, standart OpenClaw kimlik bilgisi anlık görüntülerinin parçası olarak yedeklenebilir ve geri yüklenebilir; motor, yeni bir QR kodu eşleştirmesi gerektirmeden geri yüklemede her hesabın kaynak yığınını yeniden bağlar.
## QR koduyla katılım
## QR koduyla ilk katılım
`AppID:AppSecret` değerini elle yapıştırmaya alternatif olarak motor, bir QQ Bot'u OpenClaw'a bağlamak için QR koduyla katılım akışını destekler:
`AppID:AppSecret` değerini elle yapıştırmaya alternatif olarak motor, bir QQ Bot'u OpenClaw'a bağlamak için QR kodlu ilk katılım akışını destekler:
1. QQ Bot ayarlama yolunu çalıştırın (örneğin `openclaw channels add --channel qqbot`) ve istendiğinde QR kodu akışını seçin.
1. QQ Bot ayarlama yolunu çalıştırın (örneğin `openclaw channels add --channel qqbot`) ve istendiğinde QR kod akışını seçin.
2. Oluşturulan QR kodunu hedef QQ Bot'a bağlı telefon uygulamasıyla tarayın.
3. Eşleştirmeyi telefonda onaylayın. OpenClaw döndürülen kimlik bilgilerini doğru hesap kapsamı altında `credentials/` içine kalıcı olarak kaydeder.
3. Telefonda eşleştirmeyi onaylayın. OpenClaw döndürülen kimlik bilgilerini doğru hesap kapsamı altında `credentials/` içine kalıcı hale getirir.
Botun kendisi tarafından oluşturulan onay istemleri (örneğin QQ Bot API'si tarafından sunulan "bu eyleme izin verilsin mi?" akışları), ham QQ istemcisi üzerinden yanıtlamak yerine `/bot-approve` ile kabul edebileceğiniz yerel OpenClaw istemleri olarak görünür.
Botun kendisi tarafından oluşturulan onay istemleri (örneğin, QQ Bot API tarafından sunulan "bu eyleme izin verilsin mi?" akışları), ham QQ istemcisi üzerinden yanıtlamak yerine `/bot-approve` ile kabul edebileceğiniz yerel OpenClaw istemleri olarak görünür.
## Sorun giderme
- **Bot "gone to Mars" yanıtı veriyor:** kimlik bilgileri yapılandırılmamış veya Gateway başlatılmamış.
- **Gelen mesaj yok:** `appId` ve `clientSecret` değerlerinin doğru olduğunu ve
botun QQ Open Platform üzerinde etkin olduğunu doğrulayın.
botun QQ Open Platform üzerinde etkinleştirildiğini doğrulayın.
- **Tekrarlanan kendi kendine yanıtlar:** OpenClaw, QQ giden ref dizinlerini
bot tarafından yazılmış olarak kaydeder ve mevcut `msgIdx` değeri aynı bot hesabıyla eşleşen gelen olayları yok sayar. Bu, kullanıcıların önceki bot mesajlarını alıntılamasına veya yanıtlamasına izin verirken platform yankı döngülerini önler.
- **`--token-file` ile ayarlama hâlâ yapılandırılmamış gösteriyor:** `--token-file` yalnızca
AppSecret değerini ayarlar. Yapılandırmada veya `QQBOT_APP_ID` içinde hâlâ `appId` gerekir.
- **Proaktif mesajlar ulaşmıyor:** kullanıcı yakın zamanda etkileşimde bulunmadıysa QQ, bot tarafından başlatılan mesajları engelleyebilir.
- **Ses metne dökülmüyor:** STT'nin yapılandırıldığından ve sağlayıcıya erişilebildiğinden emin olun.
bot tarafından yazılmış olarak kaydeder ve mevcut `msgIdx` değeri aynı bot hesabıyla eşleşen gelen olayları yok sayar.
Bu, kullanıcıların önceki bot mesajlarından alıntı yapmasına veya onlara yanıt vermesine hâlâ izin verirken platform yankı döngülerini önler.
- **`--token-file` ile ayarlama hâlâ yapılandırılmamış görünüyor:** `--token-file` yalnızca
AppSecret değerini ayarlar. Yapılandırmada veya `QQBOT_APP_ID` içinde yine de `appId` gerekir.
- **Proaktif mesajlar ulaşmıyor:** kullanıcı yakın zamanda etkileşimde bulunmadıysa QQ bot tarafından başlatılan mesajları yakalayabilir.
- **Ses yazıya dökülmüyor:** STT'nin yapılandırıldığından ve sağlayıcının erişilebilir olduğundan emin olun.
## İlgili

File diff suppressed because it is too large Load Diff

View File

@ -4,36 +4,36 @@ read_when:
summary: Tlon/Urbit destek durumu, yetenekleri ve yapılandırması
title: Tlon
x-i18n:
generated_at: "2026-05-02T22:16:36Z"
generated_at: "2026-05-04T02:22:05Z"
model: gpt-5.5
provider: openai
source_hash: 30915170786fc1ee8b84fb8be2ea42280262923064cfa9ca7107036096a13add
source_hash: 1718044541b431ff2437508e7e6659c14206f4aa84ab8b207e0d791dea2a48c5
source_path: channels/tlon.md
workflow: 16
---
Tlon, Urbit üzerinde inşa edilmiş merkeziyetsiz bir mesajlaşma uygulamasıdır. OpenClaw, Urbit ship'inize bağlanır ve
DM'lere ve grup sohbeti mesajlarına yanıt verebilir. Grup yanıtları varsayılan olarak @ mention gerektirir ve
allowlist'ler aracılığıyla daha da kısıtlanabilir.
Tlon, Urbit üzerine kurulmuş merkeziyetsiz bir mesajlaşma uygulamasıdır. OpenClaw, Urbit geminize bağlanır ve
DM'lere ve grup sohbeti mesajlarına yanıt verebilir. Grup yanıtları varsayılan olarak @ bahsi gerektirir ve
izin listeleriyle daha da kısıtlanabilir.
Durum: birlikte gelen Plugin. DM'ler, grup mention'ları, thread yanıtları, zengin metin biçimlendirmesi ve
görsel yüklemeleri desteklenir. Reaksiyonlar ve anketler henüz desteklenmiyor.
Durum: paketle birlikte gelen Plugin. DM'ler, grup bahisleri, ileti dizisi yanıtları, zengin metin biçimlendirmesi ve
görsel yüklemeleri desteklenir. Tepkiler ve anketler henüz desteklenmez.
## Birlikte gelen Plugin
## Paketle birlikte gelen Plugin
Tlon, mevcut OpenClaw sürümlerinde birlikte gelen bir Plugin olarak sunulur; bu nedenle normal paketlenmiş
Tlon, güncel OpenClaw sürümlerinde paketle birlikte gelen bir Plugin olarak sunulur; bu nedenle normal paketlenmiş
derlemeler ayrı bir kurulum gerektirmez.
Daha eski bir derlemedeyseniz veya Tlon'u hariç tutan özel bir kurulum kullanıyorsanız,
güncel bir npm paketi kurun:
CLI üzerinden kurulum (npm registry):
CLI ile kurulum (npm kayıt deposu):
```bash
openclaw plugins install @openclaw/tlon
```
Mevcut resmi sürüm etiketini takip etmek için yalın paketi kullanın. Kesin bir
Güncel resmi sürüm etiketini takip etmek için yalın paketi kullanın. Kesin bir
sürümü yalnızca tekrarlanabilir bir kurulum gerektiğinde sabitleyin.
Yerel checkout (bir git deposundan çalıştırırken):
@ -47,14 +47,14 @@ Ayrıntılar: [Plugins](/tr/tools/plugin)
## Kurulum
1. Tlon Plugin'inin kullanılabilir olduğundan emin olun.
- Mevcut paketlenmiş OpenClaw sürümleri bunu zaten içerir.
- Daha eski/özel kurulumlar, yukarıdaki komutlarla bunu elle ekleyebilir.
2. Ship URL'nizi ve oturum açma kodunuzu alın.
3. `channels.tlon` yapılandırmasını yapın.
- Güncel paketlenmiş OpenClaw sürümleri bunu zaten içerir.
- Daha eski/özel kurulumlar yukarıdaki komutlarla bunu elle ekleyebilir.
2. Gemi URL'nizi ve oturum açma kodunuzu alın.
3. `channels.tlon` yapılandırmasını ayarlayın.
4. Gateway'i yeniden başlatın.
5. Bota DM gönderin veya bir grup kanalında ondan mention ile bahsedin.
5. Bota DM gönderin veya bir grup kanalında ondan bahsedin.
Minimal yapılandırma (tek hesap):
En küçük yapılandırma (tek hesap):
```json5
{
@ -70,11 +70,11 @@ Minimal yapılandırma (tek hesap):
}
```
## Özel/LAN ship'leri
## Özel/LAN gemileri
Varsayılan olarak OpenClaw, SSRF koruması için özel/dahili host adlarını ve IP aralıklarını engeller.
Ship'iniz özel bir ağda çalışıyorsa (localhost, LAN IP veya dahili hostname),
ıkça etkinleştirmeniz gerekir:
Varsayılan olarak OpenClaw, SSRF koruması için özel/dahili ana makine adlarını ve IP aralıklarını engeller.
Geminiz özel bir ağda çalışıyorsa (localhost, LAN IP'si veya dahili ana makine adı),
bunu ıkça etkinleştirmeniz gerekir:
```json5
{
@ -87,13 +87,13 @@ açıkça etkinleştirmeniz gerekir:
}
```
Bu, aşağıdaki gibi URL'ler için geçerlidir:
Bu, şu gibi URL'ler için geçerlidir:
- `http://localhost:8080`
- `http://192.168.x.x:8080`
- `http://my-ship.local:8080`
⚠️ Bunu yalnızca yerel ağınıza güveniyorsanız etkinleştirin. Bu ayar, ship URL'nize yapılan
⚠️ Bunu yalnızca yerel ağınıza güveniyorsanız etkinleştirin. Bu ayar, gemi URL'nize yapılan
istekler için SSRF korumalarını devre dışı bırakır.
## Grup kanalları
@ -124,7 +124,7 @@ Otomatik keşfi devre dışı bırakın:
## Erişim denetimi
DM allowlist'i (boş = DM'lere izin verilmez, onay akışı için `ownerShip` kullanın):
DM izin listesi (boş = DM'lere izin verilmez, onay akışı için `ownerShip` kullanın):
```json5
{
@ -161,7 +161,7 @@ Grup yetkilendirmesi (varsayılan olarak kısıtlı):
## Sahip ve onay sistemi
Yetkisiz kullanıcılar etkileşim kurmaya çalıştığında onay istekleri almak için bir sahip ship ayarlayın:
Yetkisiz kullanıcılar etkileşim kurmaya çalıştığında onay isteklerini almak için bir sahip gemi ayarlayın:
```json5
{
@ -173,19 +173,19 @@ Yetkisiz kullanıcılar etkileşim kurmaya çalıştığında onay istekleri alm
}
```
Sahip ship **her yerde otomatik olarak yetkilidir** — DM davetleri otomatik kabul edilir ve
Sahip gemi **her yerde otomatik olarak yetkilendirilir** — DM davetleri otomatik kabul edilir ve
kanal mesajlarına her zaman izin verilir. Sahibi `dmAllowlist` veya
`defaultAuthorizedShips` içine eklemeniz gerekmez.
Ayarlandığında, sahip aşağıdakiler için DM bildirimleri alır:
Ayarlandığında, sahip şu durumlar için DM bildirimleri alır:
- Allowlist'te olmayan ship'lerden gelen DM istekleri
- Yetkilendirmesi olmayan kanallardaki mention'lar
- Grup daveti istekleri
- İzin listesinde olmayan gemilerden gelen DM istekleri
- Yetkilendirme bulunmayan kanallardaki bahisler
- Grup davet istekleri
## Otomatik kabul ayarları
DM davetlerini otomatik kabul edin (`dmAllowlist` içindeki ship'ler için):
DM davetlerini otomatik kabul etme (`dmAllowlist` içindeki gemiler için):
```json5
{
@ -197,55 +197,59 @@ DM davetlerini otomatik kabul edin (`dmAllowlist` içindeki ship'ler için):
}
```
Grup davetlerini otomatik kabul edin:
Güvenilen gemilerden gelen grup davetlerini otomatik kabul etme:
```json5
{
channels: {
tlon: {
autoAcceptGroupInvites: true,
groupInviteAllowlist: ["~zod"],
},
},
}
```
## Teslim hedefleri (CLI/cron)
`autoAcceptGroupInvites`, `groupInviteAllowlist` boş olduğunda kapalı kalarak başarısız olur. İzin listesini,
grup davetleri otomatik olarak kabul edilecek gemilerle ayarlayın.
Bunları `openclaw message send` veya cron teslimiyle kullanın:
## Teslim hedefleri (CLI/Cron)
Bunları `openclaw message send` veya Cron teslimi ile kullanın:
- DM: `~sampel-palnet` veya `dm/~sampel-palnet`
- Grup: `chat/~host-ship/channel` veya `group:~host-ship/channel`
## Birlikte gelen skill
## Paketle birlikte gelen yetenek
Tlon Plugin'i, Tlon işlemlerine CLI erişimi sağlayan birlikte gelen bir skill
Tlon Plugin'i, Tlon işlemlerine CLI erişimi sağlayan paketle birlikte gelen bir yetenek
([`@tloncorp/tlon-skill`](https://github.com/tloncorp/tlon-skill)) içerir:
- **Kişiler**: profilleri alın/güncelleyin, kişileri listeleyin
- **Kanallar**: listeleyin, oluşturun, mesaj gönderin, geçmişi getirin
- **Gruplar**: listeleyin, oluşturun, üyeleri yönetin
- **DM'ler**: mesaj gönderin, mesajlara reaksiyon verin
- **Reaksiyonlar**: gönderilere ve DM'lere emoji reaksiyonları ekleyin/kaldırın
- **Ayarlar**: slash komutları aracılığıyla Plugin izinlerini yönetin
- **Kişiler**: profilleri alma/güncelleme, kişileri listeleme
- **Kanallar**: listeleme, oluşturma, mesaj gönderme, geçmişi getirme
- **Gruplar**: listeleme, oluşturma, üyeleri yönetme
- **DM'ler**: mesaj gönderme, mesajlara tepki verme
- **Tepkiler**: gönderilere ve DM'lere emoji tepkileri ekleme/kaldırma
- **Ayarlar**: eğik çizgi komutlarıyla Plugin izinlerini yönetme
Plugin kurulduğunda skill otomatik olarak kullanılabilir olur.
Bu yetenek, Plugin kurulduğunda otomatik olarak kullanılabilir olur.
## Yetenekler
| Özellik | Durum |
| --------------- | ----------------------------------------------- |
| Doğrudan mesajlar | ✅ Desteklenir |
| Gruplar/kanallar | ✅ Desteklenir (varsayılan olarak mention kapılı) |
| Thread'ler | ✅ Desteklenir (thread içinde otomatik yanıtlar) |
| Zengin metin | ✅ Markdown Tlon biçimine dönüştürülür |
| Görseller | ✅ Tlon depolamasına yüklenir |
| Reaksiyonlar | ✅ [birlikte gelen skill](#bundled-skill) aracılığıyla |
| Anketler | ❌ Henüz desteklenmiyor |
| Yerel komutlar | ✅ Desteklenir (varsayılan olarak yalnızca sahip) |
| Özellik | Durum |
| --------------- | --------------------------------------- |
| Doğrudan mesajlar | ✅ Desteklenir |
| Gruplar/kanallar | ✅ Desteklenir (varsayılan olarak bahis gerektirir) |
| İleti dizileri | ✅ Desteklenir (ileti dizisinde otomatik yanıtlar) |
| Zengin metin | ✅ Markdown, Tlon biçimine dönüştürülür |
| Görseller | ✅ Tlon depolamasına yüklenir |
| Tepkiler | ✅ [Paketle birlikte gelen yetenek](#bundled-skill) aracılığıyla |
| Anketler | ❌ Henüz desteklenmez |
| Yerel komutlar | ✅ Desteklenir (varsayılan olarak yalnızca sahip) |
## Sorun giderme
Önce şu sırayı çalıştırın:
Önce bu merdiveni çalıştırın:
```bash
openclaw status
@ -257,9 +261,9 @@ openclaw doctor
Yaygın hatalar:
- **DM'ler yok sayılıyor**: gönderen `dmAllowlist` içinde değil ve onay akışı için `ownerShip` yapılandırılmamış.
- **Grup mesajları yok sayılıyor**: kanal keşfedilmemiş veya gönderen yetkili değil.
- **Bağlantı hataları**: ship URL'sinin erişilebilir olduğunu kontrol edin; yerel ship'ler için `allowPrivateNetwork` etkinleştirin.
- **Kimlik doğrulama hataları**: oturum açma kodunun güncel olduğunu doğrulayın (kodlar döndürülür).
- **Grup mesajları yok sayılıyor**: kanal keşfedilmemiş veya gönderen yetkilendirilmemiş.
- **Bağlantı hataları**: gemi URL'sinin erişilebilir olduğunu kontrol edin; yerel gemiler için `allowPrivateNetwork` etkinleştirin.
- **Kimlik doğrulama hataları**: oturum açma kodunun güncel olduğunu doğrulayın (kodlar döner).
## Yapılandırma başvurusu
@ -268,31 +272,32 @@ Tam yapılandırma: [Yapılandırma](/tr/gateway/configuration)
Sağlayıcı seçenekleri:
- `channels.tlon.enabled`: kanal başlatmayı etkinleştir/devre dışı bırak.
- `channels.tlon.ship`: botun Urbit ship adı (ör. `~sampel-palnet`).
- `channels.tlon.url`: ship URL'si (ör. `https://sampel-palnet.tlon.network`).
- `channels.tlon.code`: ship oturum açma kodu.
- `channels.tlon.allowPrivateNetwork`: localhost/LAN URL'lerine izin ver (SSRF atlatma).
- `channels.tlon.ownerShip`: onay sistemi için sahip ship (her zaman yetkili).
- `channels.tlon.dmAllowlist`: DM göndermesine izin verilen ship'ler (boş = hiçbiri).
- `channels.tlon.autoAcceptDmInvites`: allowlist'teki ship'lerden gelen DM'leri otomatik kabul et.
- `channels.tlon.autoAcceptGroupInvites`: tüm grup davetlerini otomatik kabul et.
- `channels.tlon.ship`: botun Urbit gemi adı (örn. `~sampel-palnet`).
- `channels.tlon.url`: gemi URL'si (örn. `https://sampel-palnet.tlon.network`).
- `channels.tlon.code`: gemi oturum açma kodu.
- `channels.tlon.allowPrivateNetwork`: localhost/LAN URL'lerine izin ver (SSRF atlaması).
- `channels.tlon.ownerShip`: onay sistemi için sahip gemi (her zaman yetkilidir).
- `channels.tlon.dmAllowlist`: DM göndermesine izin verilen gemiler (boş = hiçbiri).
- `channels.tlon.autoAcceptDmInvites`: izin listesindeki gemilerden gelen DM'leri otomatik kabul et.
- `channels.tlon.autoAcceptGroupInvites`: izin listesindeki gemilerden gelen grup davetlerini otomatik kabul et.
- `channels.tlon.groupInviteAllowlist`: grup davetleri otomatik kabul edilebilecek gemiler.
- `channels.tlon.autoDiscoverChannels`: grup kanallarını otomatik keşfet (varsayılan: true).
- `channels.tlon.groupChannels`: elle sabitlenmiş kanal yuvaları.
- `channels.tlon.defaultAuthorizedShips`: tüm kanallar için yetkili ship'ler.
- `channels.tlon.defaultAuthorizedShips`: tüm kanallar için yetkilendirilmiş gemiler.
- `channels.tlon.authorization.channelRules`: kanal başına kimlik doğrulama kuralları.
- `channels.tlon.showModelSignature`: mesajlara model adını ekle.
## Notlar
- Grup yanıtları, yanıt vermek için bir mention gerektirir (ör. `~your-bot-ship`).
- Thread yanıtları: gelen mesaj bir thread içindeyse, OpenClaw thread içinde yanıtlar.
- Grup yanıtları, yanıt vermek için bir bahis gerektirir (örn. `~your-bot-ship`).
- İleti dizisi yanıtları: gelen mesaj bir ileti dizisindeyse OpenClaw ileti dizisi içinde yanıtlar.
- Zengin metin: Markdown biçimlendirmesi (kalın, italik, kod, başlıklar, listeler) Tlon'un yerel biçimine dönüştürülür.
- Görseller: URL'ler Tlon depolamasına yüklenir ve görsel blokları olarak gömülür.
## İ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 mention kapısı
- [Eşleme](/tr/channels/pairing) — DM kimlik doğrulaması ve eşleme akışı
- [Gruplar](/tr/channels/groups) — grup sohbeti davranışı ve bahis kapısı
- [Kanal Yönlendirme](/tr/channels/channel-routing) — mesajlar için oturum yönlendirmesi
- [Güvenlik](/tr/gateway/security) — erişim modeli ve sertleştirme
- [Güvenlik](/tr/gateway/security) — erişim modeli ve sıkılaştırma

View File

@ -1,21 +1,21 @@
---
read_when:
- Kanal taşıması bağlı olduğunu bildiriyor ancak yanıtlar başarısız oluyor
- Ayrıntılı sağlayıcı belgelerine geçmeden önce kanala özgü denetimler gerekir
summary: Kanal başına hata imzaları ve düzeltmelerle kanal düzeyinde hızlı sorun giderme
title: Kanal sorunlarını giderme
- Kanal aktarımı bağlı görünüyor ancak yanıtlar başarısız oluyor
- Ayrıntılı sağlayıcı belgelerinden önce kanala özgü kontroller gerekir
summary: Kanal bazında hata imzaları ve düzeltmeleriyle hızlı kanal düzeyinde sorun giderme
title: Kanal sorun giderme
x-i18n:
generated_at: "2026-04-30T09:09:32Z"
generated_at: "2026-05-04T02:22:28Z"
model: gpt-5.5
provider: openai
source_hash: 6024f2ae0a058b2296758c237c912a5cd8ea6bbafea33cc201690cc081efcbee
source_hash: a3a0737156ae83897c44d18505e0355a5d8e5700106b984496d94874c270deb2
source_path: channels/troubleshooting.md
workflow: 16
---
Bir kanal bağlandığında ama davranış yanlış olduğunda bu sayfayı kullanın.
Bağlanan ancak davranışı yanlış olan kanallar için bu sayfayı kullanın.
## Komut basamağı
## Komut sırası
Önce bunları sırayla çalıştırın:
@ -32,18 +32,18 @@ Sağlıklı temel durum:
- `Runtime: running`
- `Connectivity probe: ok`
- `Capability: read-only`, `write-capable` veya `admin-capable`
- Kanal yoklaması, aktarımın bağlı olduğunu ve desteklenen yerlerde `works` veya `audit ok` gösterir
- Kanal yoklaması taşımanın bağlı olduğunu ve desteklendiği yerlerde `works` veya `audit ok` gösterir
## WhatsApp
### WhatsApp hata imzaları
| Belirti | En hızlı kontrol | Düzeltme |
| ------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| Bağlı ama DM yanıtı yok | `openclaw pairing list whatsapp` | Göndereni onaylayın veya DM ilkesini/izin listesini değiştirin. |
| Grup mesajları yok sayılıyor | Yapılandırmada `requireMention` + mention kalıplarını kontrol edin | Botu mention edin veya o grup için mention ilkesini gevşetin. |
| QR girişi 408 ile zaman aşımına uğruyor | Gateway `HTTPS_PROXY` / `HTTP_PROXY` env değerlerini kontrol edin | Erişilebilir bir proxy ayarlayın; `NO_PROXY` değerini yalnızca atlamalar için kullanın. |
| Rastgele bağlantı kopma/yeniden giriş döngüleri | `openclaw channels status --probe` + günlükler | Son yeniden bağlantılar, şu anda bağlıyken bile işaretlenir; günlükleri izleyin, Gateway'i yeniden başlatın, sonra dalgalanma sürerse yeniden bağlayın. |
| Belirti | En hızlı kontrol | Düzeltme |
| ------------------------------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Bağlı ancak DM yanıtı yok | `openclaw pairing list whatsapp` | Göndereni onaylayın veya DM politikasını/izin listesini değiştirin. |
| Grup iletileri yok sayılıyor | Yapılandırmada `requireMention` + mention desenlerini kontrol edin | Botu mention yapın veya o grup için mention politikasını gevşetin. |
| QR oturum açma 408 ile zaman aşımına uğruyor | Gateway `HTTPS_PROXY` / `HTTP_PROXY` env değerlerini kontrol edin | Erişilebilir bir proxy ayarlayın; `NO_PROXY` değerini yalnızca atlamalar için kullanın. |
| Rastgele bağlantı kesilme/yeniden oturum açma döngüleri | `openclaw channels status --probe` + günlükler | Şu anda bağlı olunsa bile yakın tarihli yeniden bağlanmalar işaretlenir; günlükleri izleyin, Gateway'i yeniden başlatın, dalgalanma sürerse yeniden bağlayın. |
Tam sorun giderme: [WhatsApp sorun giderme](/tr/channels/whatsapp#troubleshooting)
@ -51,15 +51,15 @@ Tam sorun giderme: [WhatsApp sorun giderme](/tr/channels/whatsapp#troubleshootin
### Telegram hata imzaları
| Belirti | En hızlı kontrol | Düzeltme |
| ------------------------------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `/start` var ama kullanılabilir yanıt akışı yok | `openclaw pairing list telegram` | Eşleştirmeyi onaylayın veya DM ilkesini değiştirin. |
| Bot çevrimiçi ama grup sessiz kalıyor | Mention gereksinimini ve bot gizlilik modunu doğrulayın | Grup görünürlüğü için gizlilik modunu devre dışı bırakın veya botu mention edin. |
| Ağ hatalarıyla gönderim başarısızlıkları | Telegram API çağrı hataları için günlükleri inceleyin | `api.telegram.org` için DNS/IPv6/proxy yönlendirmesini düzeltin. |
| Başlatma `getMe returned 401` bildiriyor | Yapılandırılmış token kaynağını kontrol edin | BotFather token'ını yeniden kopyalayın veya yeniden oluşturun ve `botToken`, `tokenFile` veya varsayılan hesap `TELEGRAM_BOT_TOKEN` değerini güncelleyin. |
| Polling duruyor veya yavaş yeniden bağlanıyor | Polling tanıları için `openclaw logs --follow` | Yükseltin; yeniden başlatmalar yanlış pozitifse `pollingStallThresholdMs` değerini ayarlayın. Kalıcı durmalar hâlâ proxy/DNS/IPv6 sorununa işaret eder. |
| `setMyCommands` başlatmada reddediliyor | Günlüklerde `BOT_COMMANDS_TOO_MUCH` arayın | Plugin/skill/özel Telegram komutlarını azaltın veya yerel menüleri devre dışı bırakın. |
| Yükseltmeden sonra izin listesi sizi engelliyor | `openclaw security audit` ve yapılandırma izin listeleri | `openclaw doctor --fix` çalıştırın veya `@username` yerine sayısal gönderen kimlikleri kullanın. |
| Belirti | En hızlı kontrol | Düzeltme |
| ------------------------------------ | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `/start` var ancak kullanılabilir yanıt akışı yok | `openclaw pairing list telegram` | Eşleştirmeyi onaylayın veya DM politikasını değiştirin. |
| Bot çevrimiçi ancak grup sessiz kalıyor | Mention gereksinimini ve bot gizlilik modunu doğrulayın | Grup görünürlüğü için gizlilik modunu devre dışı bırakın veya botu mention yapın. |
| Ağ hatalarıyla gönderme başarısızlıkları | Telegram API çağrısı hataları için günlükleri inceleyin | `api.telegram.org` için DNS/IPv6/proxy yönlendirmesini düzeltin. |
| Başlangıç `getMe returned 401` bildiriyor | Yapılandırılmış token kaynağını kontrol edin | BotFather token'ını yeniden kopyalayın veya yeniden oluşturun ve `botToken`, `tokenFile` ya da varsayılan hesap `TELEGRAM_BOT_TOKEN` değerini güncelleyin. |
| Polling duruyor veya yavaş yeniden bağlanıyor | Polling tanılamaları için `openclaw logs --follow` | Yükseltin; yeniden başlatmalar yanlış pozitifse `pollingStallThresholdMs` değerini ayarlayın. Kalıcı duraklamalar yine proxy/DNS/IPv6 sorununa işaret eder. |
| Başlangıçta `setMyCommands` reddedildi | Günlüklerde `BOT_COMMANDS_TOO_MUCH` arayın | Plugin/skill/özel Telegram komutlarını azaltın veya yerel menüleri devre dışı bırakın. |
| Yükseltme sonrası izin listesi sizi engelliyor | `openclaw security audit` ve yapılandırma izin listeleri | `openclaw doctor --fix` çalıştırın veya `@username` yerine sayısal gönderen kimlikleri kullanın. |
Tam sorun giderme: [Telegram sorun giderme](/tr/channels/telegram#troubleshooting)
@ -67,11 +67,12 @@ Tam sorun giderme: [Telegram sorun giderme](/tr/channels/telegram#troubleshootin
### Discord hata imzaları
| Belirti | En hızlı kontrol | Düzeltme |
| ------------------------------- | ------------------------------------- | ---------------------------------------------------------- |
| Bot çevrimiçi ama loncada yanıt yok | `openclaw channels status --probe` | Lonca/kanala izin verin ve mesaj içeriği niyetini doğrulayın. |
| Grup mesajları yok sayılıyor | Mention kapısı düşüşleri için günlükleri kontrol edin | Botu mention edin veya lonca/kanal `requireMention: false` ayarlayın. |
| DM yanıtları eksik | `openclaw pairing list discord` | DM eşleştirmesini onaylayın veya DM ilkesini ayarlayın. |
| Belirti | En hızlı kontrol | Düzeltme |
| ----------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Bot çevrimiçi ancak guild yanıtı yok | `openclaw channels status --probe` | Guild/kanala izin verin ve ileti içeriği intent ayarını doğrulayın. |
| Grup iletileri yok sayılıyor | Mention geçidi düşürmeleri için günlükleri kontrol edin | Botu mention yapın veya guild/kanal `requireMention: false` ayarlayın. |
| Yazıyor/token kullanımı var ancak Discord iletisi yok | Oturum günlüğü asistan metnini `didSendViaMessagingTool: false` ile gösteriyor | Model, ileti aracını çağırmak yerine özel olarak yanıtladı. Araç çağrısı güvenilir bir model kullanın veya otomatik gönderim için `messages.groupChat.visibleReplies: "automatic"` ayarlayın. |
| DM yanıtları eksik | `openclaw pairing list discord` | DM eşleştirmesini onaylayın veya DM politikasını ayarlayın. |
Tam sorun giderme: [Discord sorun giderme](/tr/channels/discord#troubleshooting)
@ -79,11 +80,11 @@ Tam sorun giderme: [Discord sorun giderme](/tr/channels/discord#troubleshooting)
### Slack hata imzaları
| Belirti | En hızlı kontrol | Düzeltme |
| -------------------------------------- | ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Socket mode bağlı ama yanıt yok | `openclaw channels status --probe` | App token + bot token ve gerekli kapsamları doğrulayın; SecretRef destekli kurulumlarda `botTokenStatus` / `appTokenStatus = configured_unavailable` için izleyin. |
| DM'ler engellenmiş | `openclaw pairing list slack` | Eşleştirmeyi onaylayın veya DM ilkesini gevşetin. |
| Kanal mesajı yok sayılıyor | `groupPolicy` ve kanal izin listesini kontrol edin | Kanala izin verin veya ilkeyi `open` olarak değiştirin. |
| Belirti | En hızlı kontrol | Düzeltme |
| -------------------------------------- | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Socket mode bağlı ancak yanıt yok | `openclaw channels status --probe` | Uygulama token'ı + bot token'ını ve gerekli kapsamları doğrulayın; SecretRef destekli kurulumlarda `botTokenStatus` / `appTokenStatus = configured_unavailable` için izleyin. |
| DM'ler engellendi | `openclaw pairing list slack` | Eşleştirmeyi onaylayın veya DM politikasını gevşetin. |
| Kanal iletisi yok sayıldı | `groupPolicy` ve kanal izin listesini kontrol edin | Kanala izin verin veya politikayı `open` olarak değiştirin. |
Tam sorun giderme: [Slack sorun giderme](/tr/channels/slack#troubleshooting)
@ -91,11 +92,11 @@ Tam sorun giderme: [Slack sorun giderme](/tr/channels/slack#troubleshooting)
### iMessage ve BlueBubbles hata imzaları
| Belirti | En hızlı kontrol | Düzeltme |
| -------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------- |
| Gelen olay yok | Webhook/sunucu erişilebilirliğini ve uygulama izinlerini doğrulayın | Webhook URL'sini veya BlueBubbles sunucu durumunu düzeltin. |
| macOS'ta gönderebiliyor ama alamıyor | Messages otomasyonu için macOS gizlilik izinlerini kontrol edin | TCC izinlerini yeniden verin ve kanal sürecini yeniden başlatın. |
| DM gönderen engellenmiş | `openclaw pairing list imessage` veya `openclaw pairing list bluebubbles` | Eşleştirmeyi onaylayın veya izin listesini güncelleyin. |
| Belirti | En hızlı kontrol | Düzeltme |
| -------------------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------- |
| Gelen olay yok | Webhook/sunucu erişilebilirliğini ve uygulama izinlerini doğrulayın | Webhook URL'sini veya BlueBubbles sunucu durumunu düzeltin. |
| macOS'ta gönderebiliyor ancak alamıyor | Messages otomasyonu için macOS gizlilik izinlerini kontrol edin | TCC izinlerini yeniden verin ve kanal sürecini yeniden başlatın. |
| DM göndereni engellendi | `openclaw pairing list imessage` veya `openclaw pairing list bluebubbles` | Eşleştirmeyi onaylayın veya izin listesini güncelleyin. |
Tam sorun giderme:
@ -106,11 +107,11 @@ Tam sorun giderme:
### Signal hata imzaları
| Belirti | En hızlı kontrol | Düzeltme |
| ------------------------------- | ------------------------------------------- | --------------------------------------------------------- |
| Daemon erişilebilir ama bot sessiz | `openclaw channels status --probe` | `signal-cli` daemon URL/hesabını ve alma modunu doğrulayın. |
| DM engellenmiş | `openclaw pairing list signal` | Göndereni onaylayın veya DM ilkesini ayarlayın. |
| Grup yanıtları tetiklenmiyor | Grup izin listesini ve mention kalıplarını kontrol edin | Gönderen/grup ekleyin veya kapıyı gevşetin. |
| Belirti | En hızlı kontrol | Düzeltme |
| ------------------------------- | --------------------------------------------- | ------------------------------------------------------------- |
| Daemon erişilebilir ancak bot sessiz | `openclaw channels status --probe` | `signal-cli` daemon URL/hesabını ve alma modunu doğrulayın. |
| DM engellendi | `openclaw pairing list signal` | Göndereni onaylayın veya DM politikasını ayarlayın. |
| Grup yanıtları tetiklenmiyor | Grup izin listesini ve mention desenlerini kontrol edin | Gönderen/grup ekleyin veya geçidi gevşetin. |
Tam sorun giderme: [Signal sorun giderme](/tr/channels/signal#troubleshooting)
@ -118,12 +119,12 @@ Tam sorun giderme: [Signal sorun giderme](/tr/channels/signal#troubleshooting)
### QQ Bot hata imzaları
| Belirti | En hızlı kontrol | Düzeltme |
| ------------------------------- | ------------------------------------------- | -------------------------------------------------------------- |
| Bot "gone to Mars" yanıtı veriyor | Yapılandırmada `appId` ve `clientSecret` değerlerini doğrulayın | Kimlik bilgilerini ayarlayın veya Gateway'i yeniden başlatın. |
| Gelen mesaj yok | `openclaw channels status --probe` | QQ Open Platform üzerinde kimlik bilgilerini doğrulayın. |
| Ses yazıya dökülmüyor | STT sağlayıcı yapılandırmasını kontrol edin | `channels.qqbot.stt` veya `tools.media.audio` yapılandırın. |
| Proaktif mesajlar ulaşmıyor | QQ platform etkileşim gereksinimlerini kontrol edin | QQ, yakın zamanda etkileşim olmadan bot tarafından başlatılan mesajları engelleyebilir. |
| Belirti | En hızlı kontrol | Düzeltme |
| ------------------------------- | ---------------------------------------------- | -------------------------------------------------------------------- |
| Bot "Mars'a gitti" diye yanıtlıyor | Yapılandırmada `appId` ve `clientSecret` değerlerini doğrulayın | Kimlik bilgilerini ayarlayın veya Gateway'i yeniden başlatın. |
| Gelen ileti yok | `openclaw channels status --probe` | QQ Open Platform üzerinde kimlik bilgilerini doğrulayın. |
| Ses metne dökülmedi | STT sağlayıcı yapılandırmasını kontrol edin | `channels.qqbot.stt` veya `tools.media.audio` yapılandırın. |
| Proaktif iletiler ulaşmıyor | QQ platform etkileşim gereksinimlerini kontrol edin | QQ, yakın tarihli etkileşim olmadan bot tarafından başlatılan iletileri engelleyebilir. |
Tam sorun giderme: [QQ Bot sorun giderme](/tr/channels/qqbot#troubleshooting)
@ -131,13 +132,13 @@ Tam sorun giderme: [QQ Bot sorun giderme](/tr/channels/qqbot#troubleshooting)
### Matrix hata imzaları
| Belirti | En hızlı kontrol | Düzeltme |
| ----------------------------------- | --------------------------------------- | -------------------------------------------------------------------------- |
| Giriş yapılmış ama oda mesajlarını yok sayıyor | `openclaw channels status --probe` | `groupPolicy`, oda izin listesi ve mention kapısını kontrol edin. |
| DM'ler işlenmiyor | `openclaw pairing list matrix` | Göndereni onaylayın veya DM ilkesini ayarlayın. |
| Şifreli odalar başarısız oluyor | `openclaw matrix verify status` | Cihazı yeniden doğrulayın, ardından `openclaw matrix verify backup status` kontrol edin. |
| Yedek geri yükleme beklemede/bozuk | `openclaw matrix verify backup status` | `openclaw matrix verify backup restore` çalıştırın veya bir kurtarma anahtarıyla yeniden çalıştırın. |
| Çapraz imzalama/bootstrap yanlış görünüyor | `openclaw matrix verify bootstrap` | Gizli depolamayı, çapraz imzalamayı ve yedek durumunu tek geçişte onarın. |
| Belirti | En hızlı kontrol | Düzeltme |
| ----------------------------------- | ----------------------------------------- | --------------------------------------------------------------------------- |
| Oturum açıldı ancak oda iletilerini yok sayıyor | `openclaw channels status --probe` | `groupPolicy`, oda izin listesi ve mention geçidini kontrol edin. |
| DM'ler işlenmiyor | `openclaw pairing list matrix` | Göndereni onaylayın veya DM politikasını ayarlayın. |
| Şifreli odalar başarısız oluyor | `openclaw matrix verify status` | Cihazı yeniden doğrulayın, ardından `openclaw matrix verify backup status` kontrol edin. |
| Yedek geri yükleme beklemede/bozuk | `openclaw matrix verify backup status` | `openclaw matrix verify backup restore` çalıştırın veya bir kurtarma anahtarıyla yeniden çalıştırın. |
| Cross-signing/bootstrap yanlış görünüyor | `openclaw matrix verify bootstrap` | Gizli depolamayı, cross-signing'i ve yedek durumunu tek geçişte onarın. |
Tam kurulum ve yapılandırma: [Matrix](/tr/channels/matrix)

View File

@ -1,25 +1,25 @@
---
read_when:
- Bağlantı/kimlik doğrulama sorunlarınız var ve yönlendirmeli düzeltmeler istiyorsunuz
- Güncelleme yaptınız ve bir sağlama kontrolü istiyorsunuz
summary: '`openclaw doctor` için CLI referansı (sağlık kontrolleri + rehberli onarımlar)'
- Bağlantı/kimlik doğrulama sorunlarınız var ve rehberli düzeltmeler istiyorsunuz
- Güncelleme yaptınız ve temel bir kontrol istiyorsunuz
summary: 'CLI referansı: `openclaw doctor` (sağlık kontrolleri + rehberli onarımlar)'
title: Doktor
x-i18n:
generated_at: "2026-05-03T21:28:44Z"
generated_at: "2026-05-04T02:22:29Z"
model: gpt-5.5
provider: openai
source_hash: d4baab5b0cd4d046d12ae5bd14ccf05224115856d45e630a57e77a2be15e5db0
source_hash: cd7fb09d373c313e4be45ad9e3b19ceb187a5787ef3e70fcd2b1f1f01b50c905
source_path: cli/doctor.md
workflow: 16
---
# `openclaw doctor`
Gateway ve kanallar için sağlık denetimleri + hızlı düzeltmeler.
Gateway ve kanallar için sağlık kontrolleri + hızlı düzeltmeler.
İlgili:
- Sorun giderme: [Sorun giderme](/tr/gateway/troubleshooting)
- Sorun giderme: [Sorun Giderme](/tr/gateway/troubleshooting)
- Güvenlik denetimi: [Güvenlik](/tr/gateway/security)
## Örnekler
@ -36,43 +36,43 @@ openclaw doctor --generate-gateway-token
- `--no-workspace-suggestions`: çalışma alanı belleği/arama önerilerini devre dışı bırak
- `--yes`: sormadan varsayılanları kabul et
- `--repair`: önerilen servis dışı onarımları sormadan uygula; gateway servisi kurulumları ve yeniden yazmaları yine etkileşimli onay veya açık gateway komutları gerektirir
- `--repair`: sormadan önerilen hizmet dışı onarımları uygula; Gateway hizmeti kurulumları ve yeniden yazmaları hâlâ etkileşimli onay veya açık Gateway komutları gerektirir
- `--fix`: `--repair` için takma ad
- `--force`: gerektiğinde özel servis yapılandırmasının üzerine yazmak dahil, agresif onarımları uygula
- `--non-interactive`: istemler olmadan çalıştır; yalnızca güvenli geçişler ve servis dışı onarımlar
- `--generate-gateway-token`: bir gateway token'ı oluştur ve yapılandır
- `--deep`: ek gateway kurulumları için sistem servislerini tara
- `--force`: gerektiğinde özel hizmet yapılandırmasının üzerine yazma dahil, agresif onarımları uygula
- `--non-interactive`: istemler olmadan çalıştır; yalnızca güvenli geçişler ve hizmet dışı onarımlar
- `--generate-gateway-token`: bir Gateway belirteci oluştur ve yapılandır
- `--deep`: ek Gateway kurulumları için sistem hizmetlerini tara
Notlar:
- Etkileşimli istemler (keychain/OAuth düzeltmeleri gibi) yalnızca stdin bir TTY olduğunda ve `--non-interactive` **ayarlı olmadığında** çalışır. Başsız çalıştırmalar (cron, Telegram, terminal yok) istemleri atlar.
- Performans: etkileşimsiz `doctor` çalıştırmaları, başsız sağlık denetimlerinin hızlı kalması için istekli Plugin yüklemeyi atlar. Etkileşimli oturumlar, bir denetim katkılarına ihtiyaç duyduğunda Plugin'leri hâlâ tamamen yükler.
- `--fix` (`--repair` için takma ad), `~/.openclaw/openclaw.json.bak` konumuna bir yedek yazar ve bilinmeyen yapılandırma anahtarlarını bırakarak her kaldırmayı listeler.
- `doctor --fix --non-interactive`, eksik veya eski gateway servisi tanımlarını raporlar ancak güncelleme onarım modu dışında bunları kurmaz veya yeniden yazmaz. Eksik bir servis için `openclaw gateway install` komutunu ya da başlatıcıyı bilinçli olarak değiştirmek istediğinizde `openclaw gateway install --force` komutunu çalıştırın.
- Durum bütünlüğü denetimleri artık oturumlar dizinindeki sahipsiz transcript dosyalarını algılar. Bunları `.deleted.<timestamp>` olarak arşivlemek etkileşimli onay gerektirir; `--fix`, `--yes` ve başsız çalıştırmalar bunları yerinde bırakır.
- Doctor ayrıca eski cron işi şekilleri için `~/.openclaw/cron/jobs.json` (veya `cron.store`) dosyasını tarar ve zamanlayıcının çalışma zamanında otomatik normalleştirme yapmak zorunda kalmasından önce bunları yerinde yeniden yazabilir.
- Linux'ta doctor, kullanıcının crontab'ı hâlâ eski `~/.openclaw/bin/ensure-whatsapp.sh` komutunu çalıştırıyorsa uyarır; bu betik artık bakımı yapılmıyor ve cron systemd kullanıcı veri yolu ortamından yoksun olduğunda yanlış WhatsApp gateway kesintileri günlüğe kaydedebilir.
- Doctor, eski OpenClaw sürümleri tarafından oluşturulan eski Plugin bağımlılık hazırlama durumunu temizler. Ayrıca kayıt defteri bunları çözebildiğinde eksik yapılandırılmış indirilebilir Plugin'leri onarır ve 2026.5.2 doctor geçişi, yapılandırmayı o sürüm için dokunulmuş olarak işaretlemeden önce eski bir yapılandırmanın zaten kullandığı indirilebilir Plugin'leri otomatik olarak kurar.
- Doctor, Plugin keşfi sağlıklı olduğunda eksik Plugin kimliklerini `plugins.allow`/`plugins.entries` içinden, ayrıca eşleşen sarkan kanal yapılandırmasını, heartbeat hedeflerini ve kanal model geçersiz kılmalarını kaldırarak eski Plugin yapılandırmasını onarır.
- Doctor, etkilenen `plugins.entries.<id>` girdisini devre dışı bırakarak ve geçersiz `config` yükünü kaldırarak geçersiz Plugin yapılandırmasını karantinaya alır. Gateway başlangıcı zaten yalnızca bu bozuk Plugin'i atlar, böylece diğer Plugin'ler ve kanallar çalışmaya devam edebilir.
- Başka bir gözetmen gateway yaşam döngüsüne sahipse `OPENCLAW_SERVICE_REPAIR_POLICY=external` ayarlayın. Doctor yine gateway/servis sağlığını raporlar ve servis dışı onarımları uygular, ancak servis kurma/başlatma/yeniden başlatma/bootstrap ve eski servis temizliğini atlar.
- Linux'ta doctor etkin olmayan ek gateway benzeri systemd birimlerini yok sayar ve onarım sırasında çalışan bir systemd gateway servisi için komut/giriş noktası meta verilerini yeniden yazmaz. Etkin başlatıcıyı bilinçli olarak değiştirmek istediğinizde önce servisi durdurun veya `openclaw gateway install --force` kullanın.
- Doctor, eski düz Talk yapılandırmasını (`talk.voiceId`, `talk.modelId` ve benzerleri) otomatik olarak `talk.provider` + `talk.providers.<provider>` yapısına geçirir.
- Tek fark nesne anahtarı sırası olduğunda, tekrarlanan `doctor --fix` çalıştırmaları artık Talk normalleştirmesini raporlamaz/uygulamaz.
- Doctor, bir bellek arama hazır olma denetimi içerir ve embedding kimlik bilgileri eksik olduğunda `openclaw configure --section model` önerebilir.
- Doctor, hiçbir komut sahibi yapılandırılmadığında uyarır. Komut sahibi, yalnızca sahibin çalıştırabileceği komutları çalıştırmasına ve tehlikeli eylemleri onaylamasına izin verilen insan operatör hesabıdır. DM eşleştirme yalnızca birinin botla konuşmasına izin verir; ilk sahip bootstrap'ı var olmadan önce bir göndericiyi onayladıysanız `commands.ownerAllowFrom` değerini açıkça ayarlayın.
- Doctor, Codex modu ajanlar yapılandırıldığında ve operatörün Codex ana dizininde kişisel Codex CLI varlıkları bulunduğunda uyarır. Yerel Codex uygulama sunucusu başlatmaları, ajan başına yalıtılmış ana dizinler kullanır; bu nedenle bilinçli olarak yükseltilmesi gereken varlıkları envanterlemek için `openclaw migrate codex --dry-run` kullanın.
- Doctor, varsayılan ajan için izin verilen Skills'lerin geçerli çalışma zamanı ortamında bin'ler, env var'lar, yapılandırma veya OS gereksinimleri eksik olduğu için kullanılamadığında uyarır. `doctor --fix`, bu kullanılamayan Skills'leri `skills.entries.<skill>.enabled=false` ile devre dışı bırakabilir; skill'i etkin tutmak istediğinizde bunun yerine eksik gereksinimi kurun/yapılandırın.
- Sandbox modu etkinse ancak Docker kullanılamıyorsa doctor, düzeltme önerisiyle (`install Docker` veya `openclaw config set agents.defaults.sandbox.mode off`) yüksek sinyalli bir uyarı bildirir.
- Eski sandbox kayıt defteri dosyaları (`~/.openclaw/sandbox/containers.json` veya `~/.openclaw/sandbox/browsers.json`) mevcutsa doctor bunları raporlar; `openclaw doctor --fix`, geçerli girdileri parçalanmış kayıt defteri dizinlerine geçirir ve geçersiz eski dosyaları karantinaya alır.
- `gateway.auth.token`/`gateway.auth.password` SecretRef tarafından yönetiliyorsa ve geçerli komut yolunda kullanılamıyorsa doctor salt okunur bir uyarı raporlar ve düz metin yedek kimlik bilgileri yazmaz.
- Bir düzeltme yolunda kanal SecretRef denetimi başarısız olursa doctor erken çıkmak yerine devam eder ve bir uyarı raporlar.
- Durum dizini geçişlerinden sonra doctor, etkin varsayılan Telegram veya Discord hesapları env yedeğine bağlıysa ve `TELEGRAM_BOT_TOKEN` veya `DISCORD_BOT_TOKEN` doctor işlemine açık değilse uyarır.
- Telegram `allowFrom` kullanıcı adı otomatik çözümlemesi (`doctor --fix`), geçerli komut yolunda çözümlenebilir bir Telegram token'ı gerektirir. Token denetimi kullanılamıyorsa doctor bir uyarı raporlar ve o geçiş için otomatik çözümlemeyi atlar.
- Etkileşimli istemler (anahtar zinciri/OAuth düzeltmeleri gibi) yalnızca stdin bir TTY olduğunda ve `--non-interactive` **ayarlanmamışsa** çalışır. Başsız çalıştırmalar (Cron, Telegram, terminal yok) istemleri atlar.
- Performans: etkileşimsiz `doctor` çalıştırmaları, başsız sağlık kontrollerinin hızlı kalması için hevesli Plugin yüklemeyi atlar. Etkileşimli oturumlar, bir kontrol katkılarına ihtiyaç duyduğunda Plugin'leri yine tamamen yükler.
- `--fix` (`--repair` için takma ad), `~/.openclaw/openclaw.json.bak` konumuna bir yedek yazar ve bilinmeyen yapılandırma anahtarlarını kaldırarak her kaldırmayı listeler.
- `doctor --fix --non-interactive`, eksik veya eski Gateway hizmet tanımlarını bildirir ancak güncelleme onarım modu dışında bunları kurmaz veya yeniden yazmaz. Eksik bir hizmet için `openclaw gateway install` çalıştırın veya başlatıcıyı bilinçli olarak değiştirmek istediğinizde `openclaw gateway install --force` kullanın.
- Durum bütünlüğü kontrolleri artık oturumlar dizinindeki sahipsiz transkript dosyalarını algılar. Bunları `.deleted.<timestamp>` olarak arşivlemek etkileşimli onay gerektirir; `--fix`, `--yes` ve başsız çalıştırmalar bunları yerinde bırakır.
- Doctor ayrıca eski Cron işi biçimleri için `~/.openclaw/cron/jobs.json` (veya `cron.store`) dosyasını tarar ve zamanlayıcının çalışma zamanında bunları otomatik normalleştirmesi gerekmeden önce yerinde yeniden yazabilir.
- Linux'ta doctor, kullanıcının crontab'ı hâlâ eski `~/.openclaw/bin/ensure-whatsapp.sh` betiğini çalıştırdığında uyarır; bu betiğin bakımı artık yapılmıyor ve Cron systemd kullanıcı veri yolu ortamından yoksun olduğunda hatalı WhatsApp Gateway kesinti kayıtları oluşturabilir.
- Doctor, eski OpenClaw sürümleri tarafından oluşturulan eski Plugin bağımlılığı hazırlama durumunu temizler. Ayrıca kayıt defteri bunları çözümleyebildiğinde eksik yapılandırılmış indirilebilir Plugin'leri onarır ve 2026.5.2 doctor geçişi, yapılandırmayı bu sürüm için dokunulmuş olarak işaretlemeden önce eski bir yapılandırmanın zaten kullandığı indirilebilir Plugin'leri otomatik olarak kurar. İndirme başarısız olursa doctor kurulum hatasını bildirir ve yapılandırılmış Plugin girdisini bir sonraki onarım denemesi için korur.
- Doctor, Plugin keşfi sağlıklı olduğunda eksik Plugin kimliklerini `plugins.allow`/`plugins.entries` içinden, ayrıca eşleşen sarkan kanal yapılandırmasını, Heartbeat hedeflerini ve kanal modeli geçersiz kılmalarını kaldırarak eski Plugin yapılandırmasını onarır.
- Doctor, etkilenen `plugins.entries.<id>` girdisini devre dışı bırakarak ve geçersiz `config` yükünü kaldırarak geçersiz Plugin yapılandırmasını karantinaya alır. Gateway başlatması zaten yalnızca o bozuk Plugin'i atlar, böylece diğer Plugin'ler ve kanallar çalışmaya devam edebilir.
- Gateway yaşam döngüsüne başka bir gözetmen sahip olduğunda `OPENCLAW_SERVICE_REPAIR_POLICY=external` ayarlayın. Doctor yine Gateway/hizmet sağlığını bildirir ve hizmet dışı onarımları uygular, ancak hizmet kurulumunu/başlatmayı/yeniden başlatmayı/bootstrap'u ve eski hizmet temizliğini atlar.
- Linux'ta doctor, etkin olmayan ek Gateway benzeri systemd birimlerini yok sayar ve onarım sırasında çalışan bir systemd Gateway hizmeti için komut/giriş noktası meta verilerini yeniden yazmaz. Etkin başlatıcıyı bilinçli olarak değiştirmek istediğinizde önce hizmeti durdurun veya `openclaw gateway install --force` kullanın.
- Doctor, eski düz Talk yapılandırmasını (`talk.voiceId`, `talk.modelId` ve benzerleri) otomatik olarak `talk.provider` + `talk.providers.<provider>` içine geçirir.
- Yinelenen `doctor --fix` çalıştırmaları, tek fark nesne anahtarı sırası olduğunda artık Talk normalleştirmesini bildirmez/uygulamaz.
- Doctor bir bellek araması hazırlık kontrolü içerir ve gömme kimlik bilgileri eksik olduğunda `openclaw configure --section model` önerebilir.
- Doctor, hiçbir komut sahibi yapılandırılmadığında uyarır. Komut sahibi, yalnızca sahibin çalıştırabildiği komutları çalıştırmasına ve tehlikeli eylemleri onaylamasına izin verilen insan operatör hesabıdır. DM eşleştirmesi yalnızca birinin botla konuşmasına izin verir; ilk sahip bootstrap'i var olmadan önce bir göndericiyi onayladıysanız `commands.ownerAllowFrom` değerini açıkça ayarlayın.
- Doctor, Codex modu aracıları yapılandırıldığında ve operatörün Codex ana dizininde kişisel Codex CLI varlıkları bulunduğunda uyarır. Yerel Codex uygulama sunucusu başlatmaları izole edilmiş aracı başına ana dizinler kullanır; bu nedenle bilinçli olarak yükseltilmesi gereken varlıkların envanterini çıkarmak için `openclaw migrate codex --dry-run` kullanın.
- Doctor, varsayılan aracı için izin verilen Skills mevcut çalışma zamanı ortamında kullanılamadığında uyarır; bunun nedeni bin'lerin, ortam değişkenlerinin, yapılandırmanın veya işletim sistemi gereksinimlerinin eksik olmasıdır. `doctor --fix`, kullanılamayan bu Skills'i `skills.entries.<skill>.enabled=false` ile devre dışı bırakabilir; beceriyi etkin tutmak istediğinizde bunun yerine eksik gereksinimi kurun/yapılandırın.
- Korumalı alan modu etkinse ancak Docker kullanılamıyorsa doctor, çözümle birlikte yüksek sinyalli bir uyarı bildirir (`Docker'ı kurun` veya `openclaw config set agents.defaults.sandbox.mode off`).
- Eski korumalı alan kayıt defteri dosyaları (`~/.openclaw/sandbox/containers.json` veya `~/.openclaw/sandbox/browsers.json`) varsa doctor bunları bildirir; `openclaw doctor --fix` geçerli girdileri parçalı kayıt defteri dizinlerine geçirir ve geçersiz eski dosyaları karantinaya alır.
- `gateway.auth.token`/`gateway.auth.password` SecretRef tarafından yönetiliyorsa ve mevcut komut yolunda kullanılamıyorsa doctor salt okunur bir uyarı bildirir ve düz metin yedek kimlik bilgileri yazmaz.
- Kanal SecretRef denetimi bir düzeltme yolunda başarısız olursa doctor erken çıkmak yerine devam eder ve bir uyarı bildirir.
- Durum dizini geçişlerinden sonra doctor, etkin varsayılan Telegram veya Discord hesapları ortam yedeğine bağlıysa ve `TELEGRAM_BOT_TOKEN` veya `DISCORD_BOT_TOKEN` doctor süreci tarafından kullanılamıyorsa uyarır.
- Telegram `allowFrom` kullanıcı adı otomatik çözümlemesi (`doctor --fix`), mevcut komut yolunda çözümlenebilir bir Telegram belirteci gerektirir. Belirteç denetimi kullanılamıyorsa doctor bir uyarı bildirir ve o geçiş için otomatik çözümlemeyi atlar.
## macOS: `launchctl` env geçersiz kılmaları
## macOS: `launchctl` ortam geçersiz kılmaları
Daha önce `launchctl setenv OPENCLAW_GATEWAY_TOKEN ...` (veya `...PASSWORD`) çalıştırdıysanız, bu değer yapılandırma dosyanızı geçersiz kılar ve kalıcı “yetkisiz” hatalara neden olabilir.
Daha önce `launchctl setenv OPENCLAW_GATEWAY_TOKEN ...` (veya `...PASSWORD`) çalıştırdıysanız, bu değer yapılandırma dosyanızı geçersiz kılar ve kalıcı “yetkisiz” hatalarına neden olabilir.
```bash
launchctl getenv OPENCLAW_GATEWAY_TOKEN

View File

@ -4,46 +4,46 @@ read_when:
summary: Ajan çalışma zamanı, çalışma alanı sözleşmesi ve oturum önyüklemesi
title: Ajan çalışma zamanı
x-i18n:
generated_at: "2026-04-30T09:15:06Z"
generated_at: "2026-05-04T02:22:25Z"
model: gpt-5.5
provider: openai
source_hash: f4d65ee96cece296251d7d3a0512f12d2dfa900db0e5ffc0f37dcddae7ea55ad
source_hash: 89bbbd05a9bf2054d3a1f24aeed005a05b61152a047b593addfb46817baae05a
source_path: concepts/agent.md
workflow: 16
---
OpenClaw, **tek bir gömülü ajan çalışma zamanı** çalıştırır — her Gateway için bir ajan süreci; kendi çalışma alanı, önyükleme dosyaları ve oturum deposu vardır. Bu sayfa bu çalışma zamanı sözleşmesini kapsar: çalışma alanının neleri içermesi gerektiğini, hangi dosyaların enjekte edildiğini ve oturumların buna göre nasıl önyüklendiğini.
OpenClaw, **tek bir gömülü ajan çalışma zamanı** çalıştırır: Gateway başına bir ajan süreci; kendi çalışma alanı, başlangıç dosyaları ve oturum deposu vardır. Bu sayfa, çalışma zamanının sözleşmesini kapsar: çalışma alanında nelerin bulunması gerektiği, hangi dosyaların enjekte edildiği ve oturumların buna karşı nasıl başlatıldığı.
## Çalışma alanı (zorunlu)
## Çalışma alanı (gerekli)
OpenClaw, araçlar ve bağlam için ajanın **tek** çalışma dizini (`cwd`) olarak tek bir ajan çalışma alanı dizini (`agents.defaults.workspace`) kullanır.
OpenClaw, tek bir ajan çalışma alanı dizinini (`agents.defaults.workspace`) araçlar ve bağlam için ajanın **tek** çalışma dizini (`cwd`) olarak kullanır.
Önerilen: Eksikse `~/.openclaw/openclaw.json` oluşturmak ve çalışma alanı dosyalarını başlatmak için `openclaw setup` kullanın.
Önerilen: eksikse `~/.openclaw/openclaw.json` oluşturmak ve çalışma alanı dosyalarını başlatmak için `openclaw setup` kullanın.
Tam çalışma alanı düzeni + yedekleme kılavuzu: [Ajan çalışma alanı](/tr/concepts/agent-workspace)
`agents.defaults.sandbox` etkinse, ana olmayan oturumlar bunu `agents.defaults.sandbox.workspaceRoot` altındaki oturum başına çalışma alanlarıyla geçersiz kılabilir ([Gateway yapılandırması](/tr/gateway/configuration) bölümüne bakın).
`agents.defaults.sandbox` etkinse, ana olmayan oturumlar bunu `agents.defaults.sandbox.workspaceRoot` altındaki oturum başına çalışma alanlarıyla geçersiz kılabilir (bkz. [Gateway yapılandırması](/tr/gateway/configuration)).
## Önyükleme dosyaları (enjekte edilir)
## Başlangıç dosyaları (enjekte edilir)
`agents.defaults.workspace` içinde OpenClaw şu kullanıcı tarafından düzenlenebilir dosyaları bekler:
- `AGENTS.md` — çalışma talimatları + “bellek”
- `SOUL.md`kişilik, sınırlar, ton
- `TOOLS.md` — kullanıcı tarafından tutulan araç notları (örn. `imsg`, `sag`, kurallar)
- `SOUL.md`persona, sınırlar, ton
- `TOOLS.md` — kullanıcı tarafından bakımı yapılan araç notları (örn. `imsg`, `sag`, kurallar)
- `BOOTSTRAP.md` — tek seferlik ilk çalıştırma ritüeli (tamamlandıktan sonra silinir)
- `IDENTITY.md` — ajan adı/havası/emoji
- `USER.md` — kullanıcı profili + tercih edilen hitap
Yeni bir oturumun ilk turunda OpenClaw, bu dosyaların içeriklerini doğrudan ajan bağlamına enjekte eder.
Yeni bir oturumun ilk turunda OpenClaw, bu dosyaların içeriklerini sistem isteminin Proje Bağlamı içine enjekte eder.
Boş dosyalar atlanır. Büyük dosyalar kırpılır ve istemlerin sade kalması için bir işaretleyiciyle kısaltılır (tam içerik için dosyayı okuyun).
Boş dosyalar atlanır. Büyük dosyalar, istemlerin yalın kalması için bir işaretleyiciyle kısaltılır ve kesilir (tam içerik için dosyayı okuyun).
Bir dosya eksikse, OpenClaw tek bir “eksik dosya” işaretleyici satırı enjekte eder (ve `openclaw setup` güvenli bir varsayılan şablon oluşturur).
Bir dosya eksikse OpenClaw tek bir “eksik dosya” işaretleyici satırı enjekte eder (ve `openclaw setup` güvenli bir varsayılan şablon oluşturur).
`BOOTSTRAP.md` yalnızca **tamamen yeni bir çalışma alanı** için oluşturulur (başka önyükleme dosyası yoksa). Ritüeli tamamladıktan sonra bunu silerseniz, sonraki yeniden başlatmalarda yeniden oluşturulmamalıdır.
`BOOTSTRAP.md` yalnızca **tamamen yeni bir çalışma alanı** için oluşturulur (başka başlangıç dosyası yoksa). Beklemedeyken OpenClaw bunu Proje Bağlamı içinde tutar ve kullanıcı mesajına kopyalamak yerine ilk ritüel için sistem istemine başlangıç rehberliği ekler. Ritüeli tamamladıktan sonra silerseniz, sonraki yeniden başlatmalarda tekrar oluşturulmamalıdır.
Önyükleme dosyası oluşturmayı tamamen devre dışı bırakmak için (önceden hazırlanmış çalışma alanları için) şunu ayarlayın:
Başlangıç dosyası oluşturmayı tamamen devre dışı bırakmak için (önceden hazırlanmış çalışma alanları için), şunu ayarlayın:
```json5
{ agents: { defaults: { skipBootstrap: true } } }
@ -51,24 +51,24 @@ Bir dosya eksikse, OpenClaw tek bir “eksik dosya” işaretleyici satırı enj
## Yerleşik araçlar
Çekirdek araçlar (read/exec/edit/write ve ilgili sistem araçları) araç politikasına tabi olarak her zaman kullanılabilir. `apply_patch` isteğe bağlıdır ve `tools.exec.applyPatch` ile kapılanır. `TOOLS.md` hangi araçların var olduğunu denetlemez; _sizin_ bunların nasıl kullanılmasını istediğinize dair rehberlik sağlar.
Temel araçlar (okuma/yürütme/düzenleme/yazma ve ilgili sistem araçları), araç politikasına tabi olarak her zaman kullanılabilir. `apply_patch` isteğe bağlıdır ve `tools.exec.applyPatch` tarafından kapılanır. `TOOLS.md` hangi araçların var olduğunu kontrol etmez; bunların nasıl kullanılmasını _istediğinize_ dair rehberliktir.
## Skills
OpenClaw, Skills öğelerini şu konumlardan yükler (en yüksek öncelik ilk sırada):
OpenClaw, Skills öğelerini şu konumlardan yükler (en yüksek öncelik önce):
- Çalışma alanı: `<workspace>/skills`
- Proje ajan Skills öğeleri: `<workspace>/.agents/skills`
- Kişisel ajan Skills öğeleri: `~/.agents/skills`
- Yönetilen/yerel: `~/.openclaw/skills`
- Paketle birlikte gelen (kurulumla gönderilir)
- Birlikte gelenler (kurulumla gönderilen)
- Ek Skills klasörleri: `skills.load.extraDirs`
Skills, yapılandırma/env ile kapılanabilir ([Gateway yapılandırması](/tr/gateway/configuration) içindeki `skills` bölümüne bakın).
Skills, yapılandırma/env tarafından kapılanabilir (bkz. [Gateway yapılandırması](/tr/gateway/configuration) içindeki `skills`).
## Çalışma zamanı sınırları
Gömülü ajan çalışma zamanı, Pi ajan çekirdeği (modeller, araçlar ve istem hattı) üzerine kuruludur. Oturum yönetimi, keşif, araç bağlantıları ve kanal teslimi, bu çekirdeğin üzerinde OpenClaw tarafından sahiplenilen katmanlardır.
Gömülü ajan çalışma zamanı, Pi ajan çekirdeği (modeller, araçlar ve istem işlem hattı) üzerine kuruludur. Oturum yönetimi, keşif, araç bağlantıları ve kanal teslimi, bu çekirdeğin üzerindeki OpenClaw sahipliğindeki katmanlardır.
## Oturumlar
@ -77,35 +77,35 @@ Oturum dökümleri JSONL olarak şurada saklanır:
- `~/.openclaw/agents/<agentId>/sessions/<SessionId>.jsonl`
Oturum kimliği kararlıdır ve OpenClaw tarafından seçilir.
Diğer araçlardan kalan eski oturum klasörleri okunmaz.
Diğer araçlardan gelen eski oturum klasörleri okunmaz.
## Akış sırasında yönlendirme
Sıra modu `steer` olduğunda, gelen mesajlar mevcut çalıştırmaya enjekte edilir. Sıraya alınmış yönlendirme, **mevcut asistan turu araç çağrılarını yürütmeyi bitirdikten sonra**, bir sonraki LLM çağrısından önce teslim edilir. Pi, `steer` için bekleyen tüm yönlendirme mesajlarını birlikte boşaltır; eski `queue`, her model sınırında bir mesaj boşaltır. Yönlendirme artık mevcut asistan mesajındaki kalan araç çağrılarını atlamaz.
Kuyruk modu `steer` olduğunda, gelen mesajlar mevcut çalıştırmaya enjekte edilir. Kuyruğa alınmış yönlendirme, **mevcut asistan turu araç çağrılarını yürütmeyi bitirdikten sonra**, bir sonraki LLM çağrısından önce teslim edilir. Pi, `steer` için bekleyen tüm yönlendirme mesajlarını birlikte boşaltır; eski `queue` ise model sınırı başına bir mesaj boşaltır. Yönlendirme artık mevcut asistan mesajındaki kalan araç çağrılarını atlamaz.
Sıra modu `followup` veya `collect` olduğunda, gelen mesajlar mevcut tur bitene kadar tutulur; ardından sıraya alınmış yüklerle yeni bir ajan turu başlar. Mod ve sınır davranışı için [Sıra](/tr/concepts/queue) ve [Yönlendirme sırası](/tr/concepts/queue-steering) bölümlerine bakın.
Kuyruk modu `followup` veya `collect` olduğunda, gelen mesajlar mevcut tur bitene kadar tutulur, ardından kuyruğa alınan yüklerle yeni bir ajan turu başlar. Mod ve sınır davranışı için [Kuyruk](/tr/concepts/queue) ve [Yönlendirme kuyruğu](/tr/concepts/queue-steering) sayfalarına bakın.
Blok akışı, tamamlanan asistan bloklarını biter bitmez gönderir; **varsayılan olarak kapalıdır** (`agents.defaults.blockStreamingDefault: "off"`).
Sınırı `agents.defaults.blockStreamingBreak` ile ayarlayın (`text_end` vs `message_end`; varsayılan text_end).
Yumuşak blok parçalamayı `agents.defaults.blockStreamingChunk` ile denetleyin (varsayılan 8001200 karakter; önce paragraf sonlarını, sonra yeni satırları tercih eder; cümleler en son gelir).
Tek satırlık spami azaltmak için akıştaki parçaları `agents.defaults.blockStreamingCoalesce` ile birleştirin (göndermeden önce boşta kalmaya dayalı birleştirme). Telegram dışı kanallarda blok yanıtlarını etkinleştirmek için açıkça `*.blockStreaming: true` gerekir.
Ayrıntılı araç özetleri araç başlangıcında yayınlanır (debounce yoktur); Control UI, kullanılabilir olduğunda araç çıktısını ajan olayları üzerinden akıtır.
Sınırı `agents.defaults.blockStreamingBreak` ile ayarlayın (`text_end` ve `message_end`; varsayılan text_end).
Yumuşak blok parçalamayı `agents.defaults.blockStreamingChunk` ile denetleyin (varsayılan 8001200 karakter; paragraf sonlarını, sonra yeni satırları tercih eder; cümleler en son).
Tek satırlık gereksiz yoğunluğu azaltmak için akıtılan parçaları `agents.defaults.blockStreamingCoalesce` ile birleştirin (göndermeden önce boşta kalmaya dayalı birleştirme). Telegram dışı kanalların blok yanıtlarını etkinleştirmek için açık `*.blockStreaming: true` gerekir.
Ayrıntılı araç özetleri araç başlangıcında yayımlanır (debounce yok); Control UI, kullanılabildiğinde araç çıktısını ajan olayları üzerinden akıtır.
Daha fazla ayrıntı: [Akış + parçalama](/tr/concepts/streaming).
## Model başvuruları
## Model referansları
Yapılandırmadaki model başvuruları (örneğin `agents.defaults.model` ve `agents.defaults.models`), **ilk** `/` karakterinden bölünerek ayrıştırılır.
Yapılandırmadaki model referansları (örneğin `agents.defaults.model` ve `agents.defaults.models`), **ilk** `/` karakterine göre bölünerek ayrıştırılır.
- Modelleri yapılandırırken `provider/model` kullanın.
- Model kimliğinin kendisi `/` içeriyorsa (OpenRouter tarzı), provider önekini ekleyin (örnek: `openrouter/moonshotai/kimi-k2`).
- Providerı atlarsanız, OpenClaw önce bir alias dener, ardından aynı model kimliği için benzersiz bir yapılandırılmış-provider eşleşmesi arar ve ancak bundan sonra yapılandırılmış varsayılan providera geri döner. Bu provider yapılandırılmış varsayılan modeli artık sunmuyorsa, OpenClaw eski kaldırılmış-provider varsayılanını göstermesi yerine ilk yapılandırılmış provider/model çiftine geri döner.
- Model kimliğinin kendisi `/` içeriyorsa (OpenRouter tarzı), sağlayıcı önekini ekleyin (örnek: `openrouter/moonshotai/kimi-k2`).
- Sağlayıcıyı atlarsanız OpenClaw önce bir takma adı, ardından tam bu model kimliği için benzersiz bir yapılandırılmış sağlayıcı eşleşmesini dener ve ancak bundan sonra yapılandırılmış varsayılan sağlayıcıya geri döner. Bu sağlayıcı artık yapılandırılmış varsayılan modeli sunmuyorsa OpenClaw, eskimiş kaldırılmış sağlayıcı varsayılanını göstermek yerine ilk yapılandırılmış sağlayıcı/modele geri döner.
## Yapılandırma (asgari)
En azından şunları ayarlayın:
- `agents.defaults.workspace`
- `channels.whatsapp.allowFrom` (şiddetle önerilir)
- `channels.whatsapp.allowFrom` (kesinlikle önerilir)
---

View File

@ -1,65 +1,65 @@
---
read_when:
- OpenClaw hataları için canlı görsel kalite güvencesi oluşturma veya çalıştırma
- Bir çekme isteği için öncesi ve sonrası doğrulama ekleme
- Discord, Slack, WhatsApp veya diğer canlı aktarım senaryoları ekleme
- OpenClaw hataları için canlı görsel QA oluşturma veya çalıştırma
- Bir çekme isteği için önce ve sonra doğrulaması ekleme
- Discord, Slack, WhatsApp veya diğer canlı aktarım senaryolarını ekleme
- Ekran görüntüleri, tarayıcı otomasyonu veya VNC erişimi gerektiren QA çalıştırmalarında hata ayıklama
summary: Mantis, OpenClaw hatalarını canlı aktarımlarda yeniden üretmek, öncesi ve sonrası kanıtları yakalamak ve artefaktları çekme isteklerine eklemek için kullanılan görsel uçtan uca doğrulama sistemidir.
summary: Mantis, OpenClaw hatalarını canlı aktarım katmanlarında yeniden üretmek, öncesi ve sonrası kanıtları yakalamak ve artefaktları PR'lere eklemek için kullanılan görsel uçtan uca doğrulama sistemidir.
title: Peygamberdevesi
x-i18n:
generated_at: "2026-05-03T21:30:32Z"
generated_at: "2026-05-04T02:22:59Z"
model: gpt-5.5
provider: openai
source_hash: 3463882b01a7941f6d758c509d6cd70e099aa8352053347fa9c37a80e5b256ce
source_hash: 5a86ab4bc876d1c53ada1c30580034165f028194a072f559eb54a898a369211d
source_path: concepts/mantis.md
workflow: 16
---
Mantis, gerçek bir runtime, gerçek bir aktarım ve görünür kanıt gerektiren hatalar için OpenClaw uçtan uca doğrulama sistemidir. Bilinen kötü bir ref üzerinde bir senaryo çalıştırır, kanıt toplar, aynı senaryoyu aday ref üzerinde çalıştırır ve karşılaştırmayı bir bakımcının PR'dan veya yerel bir komuttan inceleyebileceği artifact'ler olarak yayımlar.
Mantis, gerçek bir çalışma zamanı, gerçek bir taşıma katmanı ve görünür kanıt gerektiren hatalar için OpenClaw uçtan uca doğrulama sistemidir. Bilinen kötü bir ref üzerinde bir senaryo çalıştırır, kanıt toplar, aynı senaryoyu aday ref üzerinde çalıştırır ve karşılaştırmayı bir bakımcının PR'dan veya yerel bir komuttan inceleyebileceği artefaktlar olarak yayımlar.
Mantis, Discord ile başlar çünkü Discord bize yüksek değerli bir ilk kulvar sağlar: gerçek bot kimlik doğrulaması, gerçek guild kanalları, tepkiler, iş parçacıkları, yerel komutlar ve insanların aktarımın gösterdiğini görsel olarak doğrulayabileceği bir tarayıcı UI'ı.
Mantis, Discord ile başlar çünkü Discord bize yüksek değerli bir ilk hat verir: gerçek bot kimlik doğrulaması, gerçek sunucu kanalları, tepkiler, iş parçacıkları, yerel komutlar ve insanların taşıma katmanının ne gösterdiğini görsel olarak doğrulayabileceği bir tarayıcı arayüzü.
## Hedefler
- Bir GitHub issue'sundan veya PR'dan gelen hatayı, kullanıcıların gördüğü aynı aktarım yapısıyla yeniden üretmek.
- Düzeltmeyi uygulamadan önce baseline ref üzerinde bir **önce** artifact'i yakalamak.
- Düzeltmeyi uyguladıktan sonra aday ref üzerinde bir **sonra** artifact'i yakalamak.
- Mümkün olduğunda, Discord REST tepki okuması veya kanal transcript denetimi gibi deterministik bir oracle kullanmak.
- Bir GitHub issue veya PR'daki hatayı, kullanıcıların gördüğü aynı taşıma biçimiyle yeniden üretmek.
- Düzeltmeyi uygulamadan önce temel ref üzerinde bir **önce** artefaktı yakalamak.
- Düzeltmeyi uyguladıktan sonra aday ref üzerinde bir **sonra** artefaktı yakalamak.
- Mümkün olduğunda, Discord REST tepki okuması veya kanal dökümü kontrolü gibi deterministik bir doğrulayıcı kullanmak.
- Hatanın görünür bir UI yüzeyi olduğunda ekran görüntüleri yakalamak.
- Agent denetimli bir CLI'dan yerel olarak ve GitHub'dan uzaktan çalışmak.
- Oturum açma, tarayıcı otomasyonu veya sağlayıcı kimlik doğrulaması takıldığında VNC kurtarması için yeterli makine durumunu korumak.
- Çalıştırma engellendiğinde, manuel VNC yardımı gerektiğinde veya tamamlandığında bir operatör Discord kanalına kısa durum göndermek.
- Aracı denetimli bir CLI'dan yerel olarak ve GitHub'dan uzaktan çalıştırmak.
- Oturum açma, tarayıcı otomasyonu veya sağlayıcı kimlik doğrulaması takıldığında VNC kurtarma için yeterli makine durumunu korumak.
- Çalışma engellendiğinde, manuel VNC yardımı gerektiğinde veya tamamlandığında operatör Discord kanalına kısa durum göndermek.
## Hedef Dışılar
## Hedef Dışı Konular
- Mantis, birim testlerinin yerine geçmez. Bir Mantis çalıştırması, düzeltme anlaşıldıktan sonra genellikle daha küçük bir regresyon testine dönüşmelidir.
- Mantis normal hızlı CI kapısı değildir. Daha yavaştır, canlı kimlik bilgileri kullanır ve canlı ortamın önemli olduğu hatalar için ayrılmıştır.
- Mantis normal çalışma için insan gerektirmemelidir. Manuel VNC, mutlu yol değil, bir kurtarma yoludur.
- Mantis artifact'lerde, günlüklerde, ekran görüntülerinde, Markdown raporlarında veya PR yorumlarında ham secret saklamaz.
- Mantis, birim testlerin yerine geçmez. Bir Mantis çalışması, düzeltme anlaşıldıktan sonra genellikle daha küçük bir regresyon testine dönüşmelidir.
- Mantis, normal hızlı CI kapısı değildir. Daha yavaştır, canlı kimlik bilgileri kullanır ve canlı ortamın önemli olduğu hatalar için ayrılmıştır.
- Mantis, normal çalışma için insan gerektirmemelidir. Manuel VNC, mutlu yol değil bir kurtarma yoludur.
- Mantis ham gizli bilgileri artefaktlarda, günlüklerde, ekran görüntülerinde, Markdown raporlarında veya PR yorumlarında saklamaz.
## Sahiplik
Mantis, OpenClaw QA yığınında yer alır.
Mantis, OpenClaw QA yığınında yaşar.
- OpenClaw, senaryo runtime'ının, aktarım adaptörlerinin, kanıt şemasının ve `pnpm openclaw qa mantis` altındaki yerel CLI'ın sahibidir.
- QA Lab, canlı aktarım harness parçalarının, tarayıcı yakalama yardımcılarının ve artifact yazıcılarının sahibidir.
- Crabbox, uzak VM gerektiğinde ısıtılmış Linux makinelerinin sahibidir.
- GitHub Actions, uzak workflow giriş noktasının ve artifact saklamanın sahibidir.
- ClawSweeper, GitHub yorum yönlendirmesinin sahibidir: bakımcı komutlarını ayrıştırma, workflow'u dispatch etme ve son PR yorumunu gönderme.
- OpenClaw agent'ları, bir senaryo agentik kurulum, hata ayıklama veya takılı durum raporlaması gerektirdiğinde Mantis'i Codex üzerinden yürütür.
- OpenClaw, `pnpm openclaw qa mantis` altındaki senaryo çalışma zamanına, taşıma bağdaştırıcılarına, kanıt şemasına ve yerel CLI'a sahiptir.
- QA Lab, canlı taşıma donanımı parçalarına, tarayıcı yakalama yardımcılarına ve artefakt yazıcılarına sahiptir.
- Crabbox, uzak VM gerektiğinde ısıtılmış Linux makinelerine sahiptir.
- GitHub Actions, uzak iş akışı giriş noktasına ve artefakt saklamaya sahiptir.
- ClawSweeper, GitHub yorum yönlendirmesine sahiptir: bakımcı komutlarını ayrıştırma, iş akışını tetikleme ve son PR yorumunu gönderme.
- OpenClaw aracıları, bir senaryonun agentic kurulum, hata ayıklama veya takılı durum raporlaması gerektiğinde Codex üzerinden Mantis'i yürütür.
Bu sınır, aktarım bilgisini OpenClaw'da, makine zamanlamasını Crabbox'ta ve bakımcı workflow bağlantı mantığını ClawSweeper'da tutar.
Bu sınır, taşıma bilgisini OpenClaw'da, makine zamanlamasını Crabbox'ta ve bakımcı iş akışı bağlayıcısını ClawSweeper'da tutar.
## Komut Yapısı
## Komut Biçimi
İlk yerel komut Discord botunu, guild'i, kanalı, mesaj gönderimini, tepki gönderimini ve artifact yolunu doğrular:
İlk yerel komut Discord botunu, sunucuyu, kanalı, ileti göndermeyi, tepki göndermeyi ve artefakt yolunu doğrular:
```bash
pnpm openclaw qa mantis discord-smoke \
--output-dir .artifacts/qa-e2e/mantis/discord-smoke
```
Yerel önce ve sonra çalıştırıcısı şu yapıyı kabul eder:
Yerel önce ve sonra çalıştırıcısı şu biçimi kabul eder:
```bash
pnpm openclaw qa mantis run \
@ -70,22 +70,39 @@ pnpm openclaw qa mantis run \
--output-dir .artifacts/qa-e2e/mantis/local-discord-status-reactions
```
Çalıştırıcı, çıktı dizini altında ayrılmış baseline ve aday worktree'leri oluşturur, bağımlılıkları yükler, her ref'i build eder, senaryoyu `--allow-failures` ile çalıştırır, ardından `baseline/`, `candidate/`, `comparison.json` ve `mantis-report.md` yazar. İlk Discord senaryosu için başarılı bir doğrulama, baseline durumunun `fail` ve aday durumunun `pass` olduğu anlamına gelir.
Çalıştırıcı, çıktı dizini altında ayrılmış temel ve aday worktree'ler oluşturur, bağımlılıkları yükler, her ref'i derler, senaryoyu `--allow-failures` ile çalıştırır, ardından `baseline/`, `candidate/`, `comparison.json` ve `mantis-report.md` yazar. İlk Discord senaryosu için başarılı doğrulama, temel durumun `fail` ve aday durumun `pass` olması anlamına gelir.
GitHub smoke workflow'u `Mantis Discord Smoke` adındadır. İlk gerçek senaryo için önce ve sonra GitHub workflow'u `Mantis Discord Status Reactions` adındadır. Şunları kabul eder:
İlk VM/tarayıcı ilkeli masaüstü smoke çalışmasıdır:
- `baseline_ref`: yalnızca queued davranışını yeniden üretmesi beklenen ref.
```bash
pnpm openclaw qa mantis desktop-browser-smoke \
--output-dir .artifacts/qa-e2e/mantis/desktop-browser
```
Bir Crabbox masaüstü makinesi kiralar veya yeniden kullanır, VNC oturumu içinde görünür bir tarayıcı başlatır, masaüstünü yakalar, artefaktları yerel çıktı dizinine geri çeker ve yeniden bağlanma komutunu rapora yazar. Komut varsayılan olarak Hetzner sağlayıcısını kullanır çünkü Mantis hattında çalışan masaüstü/VNC kapsamına sahip ilk sağlayıcı odur. Başka bir Crabbox filosuna karşı çalıştırırken `--provider`, `--crabbox-bin` veya `OPENCLAW_MANTIS_CRABBOX_PROVIDER` ile geçersiz kılın.
Kullanışlı masaüstü smoke bayrakları:
- `--lease-id <cbx_...>` veya `OPENCLAW_MANTIS_CRABBOX_LEASE_ID`, ısıtılmış bir masaüstünü yeniden kullanır.
- `--browser-url <url>`, görünür tarayıcıda açılan sayfayı değiştirir.
- `--html-file <path>`, repo yerelindeki bir HTML artefaktını görünür tarayıcıda render eder. Mantis bunu, oluşturulan Discord durum tepkisi zaman çizelgesini gerçek bir Crabbox masaüstü üzerinden yakalamak için kullanır.
- `--keep-lease` veya `OPENCLAW_MANTIS_KEEP_VM=1`, yeni oluşturulmuş başarılı bir kiralamayı VNC incelemesi için açık tutar. Başarısız çalışmalar, bir operatörün yeniden bağlanabilmesi için bir kiralama oluşturulduğunda varsayılan olarak kiralamayı korur.
- `--class`, `--idle-timeout` ve `--ttl`, makine boyutunu ve kiralama ömrünü ayarlar.
GitHub smoke iş akışı `Mantis Discord Smoke`'tur. İlk gerçek senaryo için önce ve sonra GitHub iş akışı `Mantis Discord Status Reactions`'tır. Şunları kabul eder:
- `baseline_ref`: yalnızca kuyruğa alınmış davranışı yeniden üretmesi beklenen ref.
- `candidate_ref`: `queued -> thinking -> done` göstermesi beklenen ref.
Workflow harness ref'ini checkout eder, ayrı baseline ve aday worktree'leri build eder, her worktree üzerinde `discord-status-reactions-tool-only` çalıştırır ve `baseline/`, `candidate/`, `comparison.json` ile `mantis-report.md` dosyalarını Actions artifact'leri olarak yükler.
İş akışı donanım ref'ini checkout eder, ayrı temel ve aday worktree'ler derler, her worktree'ye karşı `discord-status-reactions-tool-only` çalıştırır ve `baseline/`, `candidate/`, `comparison.json` ve `mantis-report.md` dosyalarını Actions artefaktları olarak yükler. Ayrıca her hattın zaman çizelgesi HTML'ini bir Crabbox masaüstü tarayıcısında render eder ve bu VNC ekran görüntülerini deterministik zaman çizelgesi PNG'lerinin yanında PR yorumunda yayımlar. İş akışı, mevcut masaüstü/tarayıcı kiralama bayraklarını bir sonraki Crabbox ikili sürümü kesilmeden önce kullanabilmek için Crabbox CLI'ı `openclaw/crabbox` main'den derler.
Status-reactions çalıştırmasını doğrudan bir PR yorumundan da tetikleyebilirsiniz:
Durum tepkileri çalışmasını doğrudan bir PR yorumundan da tetikleyebilirsiniz:
```text
@Mantis discord status reactions
```
Yorum tetikleyicisi özellikle dardır. Yalnızca write, maintain veya admin erişimi olan kullanıcıların pull request yorumlarında çalışır ve yalnızca Discord status-reaction isteklerini tanır. Varsayılan olarak bilinen kötü baseline ref'ini ve aday olarak mevcut PR head SHA'sını kullanır. Bakımcılar iki ref'i de geçersiz kılabilir:
Yorum tetikleyicisi kasıtlı olarak dardır. Yalnızca yazma, bakım veya yönetici erişimine sahip kullanıcıların pull request yorumlarında çalışır ve yalnızca Discord durum tepkisi isteklerini tanır. Varsayılan olarak bilinen kötü temel ref'i ve aday olarak mevcut PR baş SHA'sını kullanır. Bakımcılar iki ref'i de geçersiz kılabilir:
```text
@Mantis discord status reactions baseline=origin/main candidate=HEAD
@ -100,42 +117,43 @@ ClawSweeper komut örnekleri:
İlk komut açık ve senaryo odaklıdır. İkincisi daha sonra bir PR'ı veya issue'yu etiketlerden, değişen dosyalardan ve ClawSweeper inceleme bulgularından önerilen Mantis senaryolarına eşleyebilir.
## Çalıştırma Yaşam Döngüsü
## Çalışma Yaşam Döngüsü
1. Kimlik bilgilerini edin.
2. Bir VM ayır veya yeniden kullan.
3. Baseline ref için temiz bir checkout hazırla.
4. Bağımlılıkları yükle ve yalnızca senaryonun ihtiyaç duyduklarını build et.
5. Yalıtılmış durum diziniyle bir alt OpenClaw Gateway başlat.
6. Canlı aktarımı, sağlayıcıyı, modeli ve tarayıcı profilini yapılandır.
7. Senaryoyu çalıştır ve baseline kanıtını yakala.
8. Gateway'i durdur ve günlükleri koru.
9. Aday ref'i aynı VM'de hazırla.
10. Aynı senaryoyu çalıştır ve aday kanıtını yakala.
11. Oracle sonuçlarını ve görsel kanıtı karşılaştır.
12. Markdown, JSON, günlükler, ekran görüntüleri ve isteğe bağlı trace artifact'leri yaz.
13. GitHub Actions artifact'lerini yükle.
14. Kısa bir PR veya Discord durum mesajı gönder.
3. Senaryo UI kanıtı gerektirdiğinde masaüstü/tarayıcı profilini hazırla.
4. Temel ref için temiz bir checkout hazırla.
5. Bağımlılıkları yükle ve yalnızca senaryonun ihtiyaç duyduklarını derle.
6. Yalıtılmış durum diziniyle bir alt OpenClaw Gateway başlat.
7. Canlı taşıma katmanını, sağlayıcıyı, modeli ve tarayıcı profilini yapılandır.
8. Senaryoyu çalıştır ve temel kanıtı yakala.
9. Gateway'i durdur ve günlükleri koru.
10. Aynı VM'de aday ref'i hazırla.
11. Aynı senaryoyu çalıştır ve aday kanıtı yakala.
12. Doğrulayıcı sonuçlarını ve görsel kanıtı karşılaştır.
13. Markdown, JSON, günlükler, ekran görüntüleri ve isteğe bağlı iz artefaktları yaz.
14. GitHub Actions artefaktlarını yükle.
15. Kısa bir PR veya Discord durum iletisi gönder.
Senaryo iki farklı şekilde başarısız olabilmelidir:
- **Hata yeniden üretildi**: baseline beklenen şekilde başarısız oldu.
- **Harness hatası**: ortam kurulumu, kimlik bilgileri, Discord API, tarayıcı veya sağlayıcı, hata oracle'ı anlamlı olmadan önce başarısız oldu.
- **Hata yeniden üretildi**: temel, beklenen şekilde başarısız oldu.
- **Donanım hatası**: ortam kurulumu, kimlik bilgileri, Discord API, tarayıcı veya sağlayıcı, hata doğrulayıcısı anlamlı olmadan önce başarısız oldu.
Son rapor bu durumları ayırmalıdır; böylece bakımcılar oynak bir ortamı ürün davranışıyla karıştırmaz.
Son rapor, bakımcıların kararsız bir ortamı ürün davranışıyla karıştırmaması için bu durumları ayırmalıdır.
## Discord MVP
İlk senaryo, kaynak yanıt teslim modunun `message_tool_only` olduğu guild kanallarındaki Discord durum tepkilerini hedeflemelidir.
İlk senaryo, kaynak yanıt teslim modunun `message_tool_only` olduğu sunucu kanallarında Discord durum tepkilerini hedeflemelidir.
Neden iyi bir Mantis tohumu olduğu:
- Tetikleyen mesajdaki tepkiler olarak Discord'da görünür.
- Discord mesaj tepki durumu üzerinden güçlü bir REST oracle'ı vardır.
- Gerçek bir OpenClaw Gateway'i, Discord bot kimlik doğrulamasını, mesaj dispatch'ini, kaynak yanıt teslim modunu, durum tepki durumunu ve model turn yaşam döngüsünü çalıştırır.
- Tetikleyici ileti üzerindeki tepkiler olarak Discord'da görünür.
- Discord ileti tepki durumu üzerinden güçlü bir REST doğrulayıcısı vardır.
- Gerçek bir OpenClaw Gateway, Discord bot kimlik doğrulaması, ileti dağıtımı, kaynak yanıt teslim modu, durum tepki durumu ve model turu yaşam döngüsünü çalıştırır.
- İlk uygulamayı dürüst tutacak kadar dardır.
Beklenen senaryo yapısı:
Beklenen senaryo biçimi:
```yaml
id: discord-status-reactions-tool-only
@ -166,9 +184,9 @@ evidence:
screenshotMessageRow: true
```
Baseline kanıtı, queued onay tepkisini göstermeli ancak tool-only modda yaşam döngüsü geçişi göstermemelidir. Aday kanıtı, `messages.statusReactions.enabled`ıkça true olduğunda yaşam döngüsü durum tepkilerinin çalıştığını göstermelidir.
Temel kanıt, kuyruğa alındı onay tepkisini göstermeli ancak yalnızca araç modunda yaşam döngüsü geçişi göstermemelidir. Aday kanıt, `messages.statusReactions.enabled`ıkça true olduğunda yaşam döngüsü durum tepkilerinin çalıştığını göstermelidir.
Çalıştırılabilir ilk parça, opt-in Discord canlı QA senaryosudur:
Çalıştırılabilir ilk dilim, opt-in Discord canlı QA senaryosudur:
```bash
pnpm openclaw qa discord \
@ -180,23 +198,23 @@ pnpm openclaw qa discord \
--output-dir .artifacts/qa-e2e/mantis/discord-status-reactions-candidate
```
SUT'yi her zaman açık guild işleme, `visibleReplies: "message_tool"`, `ackReaction: "👀"` ve açık durum tepkileriyle yapılandırır. Oracle gerçek Discord tetikleme mesajını yoklar ve gözlemlenen `👀 -> 🤔 -> 👍` dizisini bekler. Artifact'ler `discord-qa-reaction-timelines.json`, `discord-status-reactions-tool-only-timeline.html` ve `discord-status-reactions-tool-only-timeline.png` içerir.
SUT'yi her zaman açık sunucu işleme, `visibleReplies: "message_tool"`, `ackReaction: "👀"` ve açık durum tepkileriyle yapılandırır. Doğrulayıcı gerçek Discord tetikleyici iletisini yoklar ve gözlenen `👀 -> 🤔 -> 👍` dizisini bekler. Artefaktlar `discord-qa-reaction-timelines.json`, `discord-status-reactions-tool-only-timeline.html` ve `discord-status-reactions-tool-only-timeline.png` içerir.
## Mevcut QA Parçaları
Mantis sıfırdan başlamak yerine mevcut özel QA yığınının üzerine inşa edilmelidir:
Mantis, sıfırdan başlamak yerine mevcut özel QA yığını üzerine kurulmalıdır:
- `pnpm openclaw qa discord` zaten driver ve SUT botlarıyla canlı bir Discord kulvarı çalıştırır.
- Canlı aktarım çalıştırıcısı zaten `.artifacts/qa-e2e/` altında raporlar ve gözlemlenen mesaj artifact'leri yazar.
- Convex kimlik bilgisi lease'leri, paylaşılan canlı aktarım kimlik bilgilerine zaten özel erişim sağlar.
- Tarayıcı denetim servisi zaten ekran görüntülerini, snapshot'ları, headless yönetilen profilleri ve uzak CDP profillerini destekler.
- QA Lab'in aktarım yapılı testler için zaten bir debugger UI'ı ve bus'ı vardır.
- `pnpm openclaw qa discord`, sürücü ve SUT botlarıyla zaten canlı bir Discord hattı çalıştırır.
- Canlı taşıma çalıştırıcısı, raporları ve gözlenen ileti artefaktlarını zaten `.artifacts/qa-e2e/` altına yazar.
- Convex kimlik bilgisi kiralamaları, paylaşılan canlı taşıma kimlik bilgilerine zaten özel erişim sağlar.
- Tarayıcı denetim servisi ekran görüntülerini, anlık görüntüleri, başsız yönetilen profilleri ve uzak CDP profillerini zaten destekler.
- QA Lab'de taşıma biçimli testler için zaten bir hata ayıklayıcı UI ve veri yolu vardır.
İlk Mantis uygulaması, bu parçalar üzerinde ince bir önce/sonra çalıştırıcısı ve bir görsel kanıt katmanı olabilir.
İlk Mantis uygulaması, bu parçaların üzerinde ince bir önce/sonra çalıştırıcısı ve ek olarak bir görsel kanıt katmanı olabilir.
## Kanıt Modeli
Her çalıştırma kararlı bir artifact dizini yazar:
Her çalışma kararlı bir artefakt dizini yazar:
```text
.artifacts/qa-e2e/mantis/<run-id>/
@ -221,60 +239,60 @@ Her çalıştırma kararlı bir artifact dizini yazar:
Özet şunları içermelidir:
- test edilen ref'ler ve SHA'lar
- aktarım ve senaryo kimliği
- makine sağlayıcısı ve makine kimliği veya lease kimliği
- secret değerleri olmadan kimlik bilgisi kaynağı
- baseline sonucu
- aday sonucu
- hatanın baseline üzerinde yeniden üretilip üretilmediği
- adayın hatayı düzeltip düzeltmediği
- artifact yolları
- taşıma ve senaryo kimliği
- makine sağlayıcısı ve makine kimliği veya kiralama kimliği
- gizli değerler olmadan kimlik bilgisi kaynağı
- temel sonuç
- aday sonuç
- hatanın temelde yeniden üretilip üretilmediği
- adayın bunu düzeltip düzeltmediği
- artefakt yolları
- temizlenmiş kurulum veya temizlik sorunları
Ekran görüntüleri kanıttır, secret değildir. Yine de redaksiyon disiplini gerektirirler: özel kanal adları, kullanıcı adları veya mesaj içeriği görünebilir. Herkese açık PR'lar için, redaksiyon hikayesi güçlenene kadar satır içi görseller yerine GitHub Actions artifact bağlantılarını tercih edin.
Ekran görüntüleri kanıttır, gizli bilgi değildir. Yine de redaksiyon disiplini gerekir: özel kanal adları, kullanıcı adları veya ileti içeriği görünebilir. Herkese açık PR'lar için redaksiyon hikayesi daha güçlü olana kadar satır içi görseller yerine GitHub Actions artefakt bağlantılarını tercih edin.
## Tarayıcı ve VNC
Tarayıcı kulvarının iki modu vardır:
Tarayıcı hattının iki modu vardır:
- **Headless otomasyon**: CI için varsayılandır. Chrome, CDP etkin şekilde çalışır ve Playwright veya OpenClaw tarayıcı denetimi ekran görüntüleri yakalar.
- **VNC kurtarma**: oturum açma, MFA, Discord anti-otomasyon veya görsel hata ayıklama bir insan gerektirdiğinde aynı VM üzerinde etkinleştirilir.
- **Başsız otomasyon**: CI için varsayılandır. Chrome, CDP etkin şekilde çalışır ve Playwright veya OpenClaw tarayıcı denetimi ekran görüntüleri yakalar.
- **VNC kurtarma**: oturum açma, MFA, Discord otomasyon karşıtı önlemleri veya görsel hata ayıklama bir insan gerektirdiğinde aynı VM üzerinde etkinleştirilir.
Discord gözlemci tarayıcı profili, her çalıştırma için oturum açmayı önleyecek kadar kalıcı olmalı, ancak kişisel tarayıcı durumundan yalıtılmış olmalıdır. Bir profil, geliştirici dizüstü bilgisayarına değil, Mantis makine havuzuna aittir.
Discord gözlemci tarayıcı profili, her çalıştırmada oturum açmayı önleyecek kadar kalıcı olmalı, ancak kişisel tarayıcı durumundan yalıtılmış olmalıdır. Bir profil, bir geliştirici dizüstü bilgisayarına değil, Mantis makine havuzuna aittir.
Mantis takıldığında şunları içeren bir Discord durum mesajı gönderir:
Mantis takıldığında, şu bilgileri içeren bir Discord durum mesajı gönderir:
- çalıştırma kimliği
- senaryo kimliği
- makine sağlayıcısı
- artifact dizini
- yapıt dizini
- varsa VNC veya noVNC bağlantı talimatları
- kısa engelleyici metni
İlk özel dağıtım bu mesajları mevcut operatör kanalına gönderebilir ve daha sonra özel bir Mantis kanalına taşınabilir.
İlk özel dağıtım bu mesajları mevcut operatör kanalına gönderebilir ve daha sonra özel bir Mantis kanalına geçebilir.
## Makineler
Mantis, ilk uzak uygulama için Crabbox üzerinden AWS'yi tercih etmelidir. Crabbox bize ısıtılmış makineler, lease takibi, hydration, günlükler, sonuçlar ve temizlik sağlar. AWS kapasitesi çok yavaş veya kullanılamaz durumdaysa aynı makine arayüzünün arkasına bir Hetzner sağlayıcısı ekleyin.
Mantis, ilk uzak uygulama için Crabbox üzerinden AWS'yi tercih etmelidir. Crabbox bize önceden hazırlanmış makineler, kira takibi, hazırlama, günlükler, sonuçlar ve temizlik sağlar. AWS kapasitesi çok yavaşsa veya kullanılamıyorsa, aynı makine arayüzünün arkasına bir Hetzner sağlayıcısı ekleyin.
Minimum VM gereksinimleri:
- Masaüstü çalıştırabilir Chrome veya Chromium kurulumu olan Linux
- Tarayıcı otomasyonu için CDP erişimi
- Kurtarma için VNC veya noVNC
- masaüstü özellikli Chrome veya Chromium kurulumuna sahip Linux
- tarayıcı otomasyonu için CDP erişimi
- kurtarma için VNC veya noVNC
- Node 22 ve pnpm
- OpenClaw checkout'u ve bağımlılık önbelleği
- Playwright kullanıldığında Playwright Chromium tarayıcı önbelleği
- bir OpenClaw Gateway, bir tarayıcı ve bir model çalıştırması için yeterli CPU ve bellek
- Discord, GitHub, model sağlayıcıları ve kimlik bilgisi broker'ına outbound erişim
- Discord, GitHub, model sağlayıcıları ve kimlik bilgisi aracısına giden erişim
VM, beklenen kimlik bilgisi veya tarayıcı profil depoları dışında uzun ömürlü ham secret'ları tutmamalıdır.
VM, beklenen kimlik bilgisi veya tarayıcı profili depoları dışında uzun ömürlü ham gizli bilgiler tutmamalıdır.
## Secret'lar
## Gizli Bilgiler
Secret'lar uzak çalıştırmalar için GitHub organizasyon veya repository secret'larında, yerel çalıştırmalar içinse yerel operatör denetimli bir secret dosyasında yaşar.
Uzak çalıştırmalar için gizli bilgiler GitHub kuruluş veya depo gizli bilgilerinde, yerel çalıştırmalar içinse yerel operatör kontrollü bir gizli bilgi dosyasında bulunur.
Önerilen secret adları:
Önerilen gizli bilgi adları:
- `OPENCLAW_QA_DISCORD_MANTIS_BOT_TOKEN`
- `OPENCLAW_QA_DISCORD_DRIVER_BOT_TOKEN`
@ -282,30 +300,32 @@ Secret'lar uzak çalıştırmalar için GitHub organizasyon veya repository secr
- `OPENCLAW_QA_DISCORD_GUILD_ID`
- `OPENCLAW_QA_DISCORD_CHANNEL_ID`
- `OPENCLAW_QA_DISCORD_NOTIFY_CHANNEL_ID`
- genel GitHub yapıtı yüklemeleri için `OPENCLAW_QA_REDACT_PUBLIC_METADATA=1`
- herkese açık GitHub yapıt yüklemeleri için `OPENCLAW_QA_REDACT_PUBLIC_METADATA=1`
- `OPENCLAW_QA_CONVEX_SITE_URL`
- `OPENCLAW_QA_CONVEX_SECRET_CI`
- `OPENCLAW_QA_MANTIS_CRABBOX_COORDINATOR`
- `OPENCLAW_QA_MANTIS_CRABBOX_COORDINATOR_TOKEN`
Uzun vadede, Convex kimlik bilgisi havuzu canlı taşıma kimlik bilgileri için normal kaynak olarak kalmalıdır. GitHub gizli değerleri aracıyı ve geri dönüş hatlarını önyükler.
Uzun vadede Convex kimlik bilgisi havuzu, canlı taşıma kimlik bilgilerinin normal kaynağı olarak kalmalıdır. GitHub gizli bilgileri aracıyı ve yedek şeritleri başlatır. Discord durum tepkileri iş akışı, Mantis Crabbox gizli bilgilerini Crabbox CLI'nin beklediği `CRABBOX_COORDINATOR` ve `CRABBOX_COORDINATOR_TOKEN` ortam değişkenlerine geri eşler. Düz `CRABBOX_*` GitHub gizli bilgi adları uyumluluk yedeği olarak kabul edilmeye devam eder.
Mantis çalıştırıcısı şunları asla yazdırmamalıdır:
- Discord bot belirteçleri
- Discord bot token'ları
- sağlayıcı API anahtarları
- tarayıcı çerezleri
- kimlik doğrulama profili içerikleri
- VNC parolaları
- ham kimlik bilgisi yükleri
Genel yapıt yüklemeleri ayrıca bot, sunucu, kanal ve mesaj kimlikleri gibi Discord hedef meta verilerini de sansürlemelidir. GitHub smoke iş akışı bu nedenle `OPENCLAW_QA_REDACT_PUBLIC_METADATA=1` ayarını etkinleştirir.
Herkese açık yapıt yüklemeleri ayrıca bot, sunucu, kanal ve mesaj kimlikleri gibi Discord hedef meta verilerini de redakte etmelidir. GitHub smoke iş akışı bu nedenle `OPENCLAW_QA_REDACT_PUBLIC_METADATA=1` değerini etkinleştirir.
Bir belirteç yanlışlıkla bir issue'ya, PR'a, sohbete veya günlüğe yapıştırılırsa, yeni gizli değer saklandıktan sonra onu döndürün.
Bir token yanlışlıkla bir issue'ya, PR'ye, sohbete veya günlüğe yapıştırılırsa, yeni gizli bilgi depolandıktan sonra onu döndürün.
## GitHub Yapıtları Ve PR Yorumları
## GitHub Yapıtları ve PR Yorumları
Mantis iş akışları tam kanıt paketini kısa ömürlü bir Actions yapıtı olarak yüklemelidir. İş akışı bir hata raporu veya düzeltme PR'ı için çalıştırıldığında, sansürlenmiş PNG ekran görüntülerini `qa-artifacts` dalına da yayımlamalı ve o hata ya da düzeltme PR'ında satır içi önce/sonra ekran görüntüleriyle bir yorumu eklemeli ya da güncellemelidir. Birincil kanıtı yalnızca genel bir QA otomasyonu PR'ında paylaşmayın. Ham günlükler, gözlemlenen mesajlar ve diğer hacimli kanıtlar Actions yapıtında kalır.
Mantis iş akışları tam kanıt paketini kısa ömürlü bir Actions yapıtı olarak yüklemelidir. İş akışı bir hata raporu veya düzeltme PR'si için çalıştırıldığında, redakte edilmiş PNG ekran görüntülerini `qa-artifacts` dalına da yayımlamalı ve ilgili hata veya düzeltme PR'sine satır içi önce/sonra ekran görüntüleriyle bir yorum eklemeli veya mevcut yorumu güncellemelidir. Birincil kanıtı yalnızca genel bir QA otomasyonu PR'sine göndermeyin. Ham günlükler, gözlemlenen mesajlar ve diğer hacimli kanıtlar Actions yapıtında kalır.
Production iş akışları bu yorumları `github-actions[bot]` ile değil, Mantis GitHub App ile paylaşmalıdır. Uygulama kimliğini ve özel anahtarı `MANTIS_GITHUB_APP_ID` ve `MANTIS_GITHUB_APP_PRIVATE_KEY` GitHub Actions gizli değerleri olarak saklayın. İş akışı, ekleme/güncelleme anahtarı olarak gizli bir işaret kullanır, belirteç düzenleyebildiğinde o yorumu günceller ve eski bir bot sahibi işaret düzenlenemediğinde Mantis sahipliğinde yeni bir yorum oluşturur.
Üretim iş akışları bu yorumları `github-actions[bot]` ile değil, Mantis GitHub App ile göndermelidir. Uygulama kimliğini ve özel anahtarı `MANTIS_GITHUB_APP_ID` ve `MANTIS_GITHUB_APP_PRIVATE_KEY` GitHub Actions gizli bilgileri olarak saklayın. İş akışı gizli bir işaretçiyi ekleme/güncelleme anahtarı olarak kullanır, token düzenleyebildiğinde o yorumu günceller ve eski bot sahipli bir işaretçi düzenlenemediğinde Mantis sahipli yeni bir yorum oluşturur.
PR yorumu kısa ve görsel olmalıdır:
@ -327,15 +347,15 @@ candidate showed the expected queued -> thinking -> done sequence.
| <inline screenshot> | <inline screenshot> |
```
Çalıştırma, test düzeneği başarısız olduğu için başarısız olduğunda, yorum adayın başarısız olduğunu ima etmek yerine bunu söylemelidir.
Çalıştırma, test düzeneği başarısız olduğu için başarısız olursa, yorum adayın başarısız olduğunu ima etmek yerine bunu söylemelidir.
## Özel Dağıtım Notları
Özel bir dağıtımda zaten bir Mantis Discord uygulaması olabilir. Doğru bot izinlerine sahipse ve güvenli şekilde döndürülebiliyorsa başka bir uygulama oluşturmak yerine o uygulamayı yeniden kullanın.
Özel bir dağıtımda zaten bir Mantis Discord uygulaması olabilir. Doğru bot izinlerine sahipse ve güvenle döndürülebiliyorsa başka bir uygulama oluşturmak yerine o uygulamayı yeniden kullanın.
İlk operatör bildirim kanalını gizli değerler veya dağıtım yapılandırması üzerinden ayarlayın. Önce mevcut bir maintainer veya operasyon kanalını işaret edebilir, ardından böyle bir kanal oluştuğunda özel bir Mantis kanalına taşınabilir.
İlk operatör bildirim kanalını gizli bilgiler veya dağıtım yapılandırması üzerinden ayarlayın. Önce mevcut bir bakımcı veya operasyon kanalını işaret edebilir, bir kanal oluşturulduktan sonra özel bir Mantis kanalına taşınabilir.
Sunucu kimliklerini, kanal kimliklerini, bot belirteçlerini, tarayıcı çerezlerini veya VNC parolalarını bu belgeye koymayın. Bunları GitHub gizli değerlerinde, kimlik bilgisi aracısında veya operatörün yerel gizli değer deposunda saklayın.
Bu belgeye sunucu kimlikleri, kanal kimlikleri, bot token'ları, tarayıcı çerezleri veya VNC parolaları koymayın. Bunları GitHub gizli bilgilerinde, kimlik bilgisi aracısında veya operatörün yerel gizli bilgi deposunda saklayın.
## Senaryo Ekleme
@ -344,8 +364,8 @@ Bir Mantis senaryosu şunları bildirmelidir:
- kimlik ve başlık
- taşıma
- gerekli kimlik bilgileri
- temel ref ilkesi
- aday ref ilkesi
- temel referans ilkesi
- aday referans ilkesi
- OpenClaw yapılandırma yaması
- kurulum adımları
- uyaran
@ -355,32 +375,32 @@ Bir Mantis senaryosu şunları bildirmelidir:
- zaman aşımı bütçesi
- temizlik adımları
Senaryolar küçük, tipli oracle'ları tercih etmelidir:
Senaryolar küçük, tiplendirilmiş oracle'ları tercih etmelidir:
- tepki hataları için Discord tepki durumu
- iş parçacığı hataları için Discord mesaj referansları
- Slack hataları için Slack iş parçacığı ts'si ve tepki API durumu
- Slack hataları için Slack iş parçacığı zaman damgası ve tepki API durumu
- e-posta hataları için e-posta mesaj kimlikleri ve başlıkları
- UI tek güvenilir gözlemlenebilir olduğunda tarayıcı ekran görüntüleri
Görsel kontroller eklemeli olmalıdır. Bir platform API'si hatayı kanıtlayabiliyorsa, geçme/kalma oracle'ı olarak API'yi kullanın ve ekran görüntülerini insan güveni için saklayın.
Görüntü kontrolleri eklemeli olmalıdır. Bir platform API'si hatayı kanıtlayabiliyorsa, API'yi başarılı/başarısız oracle'ı olarak kullanın ve ekran görüntülerini insan güveni için tutun.
## Sağlayıcı Genişletme
Discord'dan sonra aynı çalıştırıcı şunları ekleyebilir:
- Slack: tepkiler, iş parçacıkları, uygulama mention'ları, modallar, dosya yüklemeleri.
- E-posta: bağlayıcıların yeterli olmadığı yerlerde `gog` kullanarak Gmail kimlik doğrulaması ve mesaj iş parçacıkları.
- WhatsApp: QR oturumu açma, yeniden tanımlama, mesaj teslimi, medya, tepkiler.
- Telegram: grup mention kapısı, komutlar, mevcut olduğu yerlerde tepkiler.
- Matrix: şifreli odalar, iş parçacığı veya yanıt ilişkileri, yeniden başlatma sonrası devam.
- Slack: tepkiler, iş parçacıkları, uygulama bahsetmeleri, modallar, dosya yüklemeleri.
- E-posta: bağlayıcıların yeterli olmadığı yerlerde `gog` kullanarak Gmail kimlik doğrulaması ve mesaj iş parçacığı.
- WhatsApp: QR ile oturum açma, yeniden tanımlama, mesaj teslimi, medya, tepkiler.
- Telegram: grup bahsetme kapısı, komutlar, varsa tepkiler.
- Matrix: şifrelenmiş odalar, iş parçacığı veya yanıt ilişkileri, yeniden başlatma sonrası sürdürme.
Her taşımanın bir ucuz smoke senaryosu ve bir ya da daha fazla hata sınıfı senaryosu olmalıdır. Pahalı görsel senaryolar isteğe bağlı kalmalıdır.
Her taşımanın bir ucuz smoke senaryosu ve bir veya daha fazla hata sınıfı senaryosu olmalıdır. Pahalı görsel senaryolar isteğe bağlı kalmalıdır.
## Açık Sorular
- Mevcut Mantis botu yeniden kullanıldığında hangi Discord botu sürücü, hangisi SUT olmalıdır?
- Gözlemci tarayıcı oturumu ilk aşamada bir insan Discord hesabı, bir test hesabı veya yalnızca bot tarafından okunabilir REST kanıtı mı kullanmalıdır?
- GitHub, PR'lar için Mantis yapıtlarını ne kadar süre saklamalıdır?
- ClawSweeper, bir maintainer komutunu beklemek yerine ne zaman otomatik olarak Mantis önermelidir?
- Genel PR'lar için ekran görüntüleri yüklemeden önce sansürlenmeli veya kırpılmalı mıdır?
- Gözlemci tarayıcı oturumu açma ilk aşamada bir insan Discord hesabı mı, bir test hesabı mı, yoksa yalnızca bot tarafından okunabilir REST kanıtı mı kullanmalıdır?
- GitHub, PR'ler için Mantis yapıtlarını ne kadar süre saklamalıdır?
- ClawSweeper ne zaman bir bakımcı komutu beklemek yerine otomatik olarak Mantis önermelidir?
- Herkese açık PR'ler için ekran görüntüleri yüklemeden önce redakte edilmeli veya kırpılmalı mı?

View File

@ -2,36 +2,31 @@
read_when:
- Uzun süren sohbet turları için görünür ilerleme güncellemelerini yapılandırma
- Kısmi, blok ve ilerleme akışı modları arasında seçim yapma
- OpenClaw'ın çalışma sürerken bir kanal mesajını nasıl güncellediğini açıklama
- OpenClaw'un çalışma devam ederken tek bir kanal mesajını nasıl güncellediğini açıklama
- İlerleme taslakları, bağımsız ilerleme mesajları veya sonlandırma yedeği sorunlarını giderme
summary: 'İlerleme taslakları: bir ajan çalışırken güncellenen, görünür tek bir devam eden çalışma mesajı'
summary: 'İlerleme taslakları: bir ajan çalışırken güncellenen görünür tek bir devam eden çalışma mesajı'
title: İlerleme taslakları
x-i18n:
generated_at: "2026-05-03T21:31:16Z"
generated_at: "2026-05-04T02:23:08Z"
model: gpt-5.5
provider: openai
source_hash: 0fc0dff38232228b49872d66f4498f065675cdd3abf3a0f4003cb34fcbb7de8c
source_hash: 8ce19262800f1c3c3e505a3cf1d41ed5c3dffcbca168ad7b7afabdce62eee8fe
source_path: concepts/progress-drafts.md
workflow: 16
---
İlerleme taslakları, konuşmayı geçici durum yanıtları yığınına dönüştürmeden
uzun süren ajan turlarının sohbette canlı hissettirmesini sağlar.
İlerleme taslakları, uzun süren aracı turlarının sohbet içinde canlı hissettirmesini sağlar ve bunu konuşmayı geçici durum yanıtları yığınına dönüştürmeden yapar.
İlerleme taslakları etkinleştirildiğinde OpenClaw, görünür bir çalışma-devam
mesajı oluşturur; ajan okurken, plan yaparken, araçları çağırırken veya onay
beklerken bunu günceller ve kanal bunu güvenli şekilde yapabiliyorsa bu taslağı
son yanıta dönüştürür.
İlerleme taslakları etkinleştirildiğinde, OpenClaw yalnızca turun gerçek iş yaptığını kanıtlamasından sonra görünür bir devam eden çalışma mesajı oluşturur; ajan okurken, plan yaparken, araçları çağırırken veya onay beklerken bu mesajı günceller ve kanal bunu güvenli biçimde yapabildiğinde bu taslağı son yanıta dönüştürür.
```text
Shelling
- reading recent channel context
- checking matching issues
- preparing reply
Shelling...
📖 Read: from docs/concepts/progress-drafts.md
🔎 Web Search: for "discord edit message"
🛠️ Exec: run tests
```
Araç ağırlıklı çalışma sırasında tek düzenli durum mesajı ve tur tamamlandığında
son yanıt istediğinizde ilerleme taslaklarını kullanın.
Araç yoğun iş sırasında tek bir düzenli durum mesajı ve tur tamamlandığında son yanıt istediğinizde ilerleme taslaklarını kullanın.
## Hızlı Başlangıç
@ -49,73 +44,64 @@ son yanıt istediğinizde ilerleme taslaklarını kullanın.
}
```
Bu genellikle yeterlidir. OpenClaw otomatik tek kelimelik bir etiket seçer,
yararlı iş gerçekleşirken kompakt ilerleme satırları ekler ve o tur için yinelenen
bağımsız ilerleme gevezeliğini bastırır.
Bu genellikle yeterlidir. OpenClaw otomatik tek kelimelik bir etiket seçer, iş en az beş saniye sürdüğünde veya ikinci bir iş olayı yaydığında beklemeyi bırakır, yararlı iş gerçekleşirken kompakt ilerleme satırları ekler ve o tur için yinelenen bağımsız ilerleme sohbetini bastırır.
## Kullanıcıların Gördükleri
Bir ilerleme taslağının iki parçası vardır:
Bir ilerleme taslağının iki bölümü vardır:
| Parça | Amaç |
| ----------------- | ------------------------------------------------------------------ |
| Etiket | `Thinking` veya `Shelling` gibi kısa bir başlık. |
| İlerleme satırları | Araç çağrıları, görev adımları veya onaylar gibi kompakt çalışma güncellemeleri. |
| Bölüm | Amaç |
| ----------------- | ------------------------------------------------------------------------------------- |
| Etiket | `Thinking...` veya `Shelling...` gibi kısa bir başlık. |
| İlerleme satırları | Ayrıntılı çıktıyla aynı araç etiketlerini ve simgelerini kullanan kompakt çalışma güncellemeleri. |
Etiket, ajan yanıtlamaya başladığında hemen görünür. İlerleme satırları yalnızca
ajan yararlı iş güncellemeleri yaydığında eklenir. Mümkün olduğunda son yanıt
taslağın yerini alır; aksi halde OpenClaw son yanıtı normal şekilde gönderir ve
kanalın taşıma biçimine göre taslağı temizler veya güncellemeyi durdurur.
Etiket, ajan anlamlı işe başladıktan ve ya beş saniye meşgul kaldıktan ya da ikinci bir iş olayı yaydıktan sonra görünür. Yalnızca düz metin yanıtları ilerleme taslağı göstermez. İlerleme satırları yalnızca ajan yararlı iş güncellemeleri yaydığında eklenir; örneğin `🛠️ Exec`, `🔎 Web Search` veya `✍️ Write: to /tmp/file`. Varsayılan olarak `/verbose` ile aynı kompakt açıklama modunu kullanırlar; hata ayıklarken ham komutların/ayrıntıların da eklenmesini istiyorsanız `agents.defaults.toolProgressDetail: "raw"` ayarlayın.
Mümkün olduğunda son yanıt taslağın yerini alır; aksi durumda OpenClaw son yanıtı normal şekilde gönderir ve kanalın taşımasına göre taslağı temizler veya güncellemeyi durdurur.
## Bir Mod Seçin
`channels.<channel>.streaming.mode` görünür devam eden çalışma davranışını denetler:
`channels.<channel>.streaming.mode`, görünür devam eden çalışma davranışını denetler:
| Mod | En uygun kullanım | Sohbette görünenler |
| ---------- | --------------------------------- | ------------------------------------------------- |
| `off` | Sessiz kanallar | Yalnızca son yanıt. |
| `partial` | Yanıt metninin görünmesini izleme | En son yanıt metniyle düzenlenen tek taslak. |
| `block` | Daha büyük yanıt önizleme parçaları | Daha büyük parçalar halinde güncellenen veya eklenen tek önizleme. |
| `progress` | Araç ırlıklı veya uzun süren turlar | Tek durum taslağı, ardından son yanıt. |
| Mod | En uygun kullanım | Sohbette görünen |
| ---------- | ---------------------------------- | ----------------------------------------------------- |
| `off` | Sessiz kanallar | Yalnızca son yanıt. |
| `partial` | Yanıt metninin görünmesini izlemek | En son yanıt metniyle düzenlenen tek bir taslak. |
| `block` | Daha büyük yanıt önizleme parçaları | Daha büyük parçalarda güncellenen veya eklenen tek bir önizleme. |
| `progress` | Araç yoğun veya uzun süren turlar | Tek bir durum taslağı, ardından son yanıt. |
Kullanıcılar yanıt metninin token token akmasını izlemekten çok "ne oluyor" ile
ilgileniyorsa `progress` seçin.
Kullanıcılar yanıt metninin token token akmasını izlemekten çok “neler oluyor” sorusunu önemsediğinde `progress` seçin.
Yanıtın kendisi ilerleme sinyaliyse `partial` seçin.
Yanıtın kendisi ilerleme sinyali olduğunda `partial` seçin.
Daha büyük metin parçalarında taslak önizleme güncellemeleri istiyorsanız
`block` seçin. Discord ve Telegram üzerinde `streaming.mode: "block"` hâlâ
önizleme akışıdır, normal blok teslimi değildir. Normal blok yanıtları
istediğinizde `streaming.block.enabled` veya eski `blockStreaming` kullanın.
Taslak önizleme güncellemelerini daha büyük metin parçaları halinde istediğinizde `block` seçin. Discord ve Telegramda `streaming.mode: "block"` hâlâ önizleme akışıdır, normal blok teslimi değildir. Normal blok yanıtları istediğinizde `streaming.block.enabled` veya eski `blockStreaming` kullanın.
## Etiketleri Yapılandırma
## Etiketleri Yapılandırın
İlerleme etiketleri `channels.<channel>.streaming.progress` altında bulunur.
Varsayılan etiket `auto` değeridir; bu, OpenClaw'ın yerleşik tek kelimelik
etiket havuzundan seçim yapar:
Varsayılan etiket `auto` değeridir; bu, OpenClawın yerleşik tek-kelime-ve-üç-nokta etiket havuzundan seçim yapar:
```text
Thinking
Shelling
Scuttling
Clawing
Pinching
Molting
Bubbling
Tiding
Reefing
Cracking
Sifting
Brining
Nautiling
Krilling
Barnacling
Lobstering
Tidepooling
Pearling
Snapping
Surfacing
Thinking...
Shelling...
Scuttling...
Clawing...
Pinching...
Molting...
Bubbling...
Tiding...
Reefing...
Cracking...
Sifting...
Brining...
Nautiling...
Krilling...
Barnacling...
Lobstering...
Tidepooling...
Pearling...
Snapping...
Surfacing...
```
Sabit bir etiket kullanın:
@ -153,7 +139,7 @@ Kendi otomatik etiket havuzunuzu kullanın:
}
```
Etiketi gizleyip yalnızca ilerleme satırlarını gösterin:
Etiketi gizleyin ve yalnızca ilerleme satırlarını gösterin:
```json5
{
@ -170,11 +156,30 @@ Etiketi gizleyip yalnızca ilerleme satırlarını gösterin:
}
```
## İlerleme Satırlarını Denetleme
## İlerleme Satırlarını Denetleyin
İlerleme satırları ilerleme modunda varsayılan olarak etkindir. Bunlar gerçek
çalışma olaylarından gelir: araç başlangıçları, öğe güncellemeleri, görev
planları, onaylar, komut çıktısı, yama özetleri ve benzer ajan etkinliği.
İlerleme satırları, ilerleme modunda varsayılan olarak etkindir. Bunlar gerçek çalışma olaylarından gelir: araç başlangıçları, öğe güncellemeleri, görev planları, onaylar, komut çıktısı, yama özetleri ve benzer ajan etkinlikleri.
OpenClaw, ilerleme taslakları ve `/verbose` için aynı biçimlendiriciyi kullanır:
```json5
{
agents: {
defaults: {
toolProgressDetail: "explain", // explain | raw
},
},
}
```
`"explain"` varsayılandır ve taslakları `🛠️ Exec: check JS syntax for /tmp/app.js` gibi kısa etiketlerle sabit tutar. `"raw"` mevcut olduğunda alttaki komutu/ayrıntıyı ekler; bu, hata ayıklarken yararlıdır ama sohbette daha gürültülüdür.
Örneğin aynı komut, ayrıntı moduna bağlı olarak farklı görünür:
| Mod | İlerleme satırı |
| --------- | ------------------------------------------------------------------- |
| `explain` | `🛠️ Exec: check JS syntax for /tmp/app.js` |
| `raw` | `🛠️ Exec: check JS syntax for /tmp/app.js, node --check /tmp/app.js` |
Kaç satırın görünür kalacağını sınırlayın:
@ -193,7 +198,7 @@ Kaç satırın görünür kalacağını sınırlayın:
}
```
Tek ilerleme taslağını koruyup araç ve görev satırlarını gizleyin:
Tek ilerleme taslağını koruyun ancak araç ve görev satırlarını gizleyin:
```json5
{
@ -210,78 +215,58 @@ Tek ilerleme taslağını koruyup araç ve görev satırlarını gizleyin:
}
```
`toolProgress: false` ile OpenClaw yine de o tur için eski bağımsız araç ilerleme
mesajlarını bastırır. Yapılandırılmışsa etiket dışında kanal son yanıta kadar
görsel olarak sessiz kalır.
`toolProgress: false` ile OpenClaw, o tur için eski bağımsız araç ilerleme mesajlarını yine de bastırır. Yapılandırılmış bir etiket varsa o etiket dışında, kanal son yanıta kadar görsel olarak sessiz kalır.
## Kanal Davranışı
Her kanal desteklediği en temiz taşıma biçimini kullanır:
Her kanal desteklediği en temiz taşımayı kullanır:
| Kanal | İlerleme taşıma biçimi | Notlar |
| --------------- | -------------------------------------- | --------------------------------------------------------------------- |
| Discord | Tek mesaj gönderir, sonra düzenler. | Son metin, güvenli tek önizleme mesajına sığdığında yerinde düzenlenir. |
| Matrix | Tek olay gönderir, sonra düzenler. | Hesap düzeyindeki akış yapılandırması hesap düzeyindeki taslakları denetler. |
| Microsoft Teams | Kişisel sohbetlerde yerel Teams akışı. | `streaming.mode: "block"` Teams blok teslimine eşlenir. |
| Slack | Yerel akış veya düzenlenebilir taslak gönderisi. | Konu kullanılabilirliği, yerel akışın kullanılıp kullanılamayacağını etkiler. |
| Telegram | Tek mesaj gönderir, sonra düzenler. | Eski görünür taslaklar, son zaman damgaları yararlı kalsın diye değiştirilebilir. |
| Mattermost | Düzenlenebilir taslak gönderisi. | Araç etkinliği aynı taslak tarzı gönderiye katlanır. |
| Kanal | İlerleme taşıması | Notlar |
| --------------- | ------------------------------------------ | ------------------------------------------------------------------------- |
| Discord | Tek bir mesaj gönderir, sonra düzenler. | Son metin, tek bir güvenli önizleme mesajına sığdığında yerinde düzenlenir. |
| Matrix | Tek bir olay gönderir, sonra düzenler. | Hesap düzeyi akış yapılandırması hesap düzeyi taslakları denetler. |
| Microsoft Teams | Kişisel sohbetlerde yerel Teams akışı. | `streaming.mode: "block"` Teams blok teslimine eşlenir. |
| Slack | Yerel akış veya düzenlenebilir taslak gönderisi. | İş parçacığı kullanılabilirliği, yerel akışın kullanılıp kullanılamayacağını etkiler. |
| Telegram | Tek bir mesaj gönderir, sonra düzenler. | Daha eski görünür taslaklar, son zaman damgalarının yararlı kalması için değiştirilebilir. |
| Mattermost | Düzenlenebilir taslak gönderisi. | Araç etkinliği aynı taslak tarzı gönderiye katlanır. |
Güvenli düzenleme desteği olmayan kanallar genellikle yazıyor göstergelerine veya
yalnızca son teslimata geri döner.
Güvenli düzenleme desteği olmayan kanallar genellikle yazıyor göstergelerine veya yalnızca son yanıt teslimine geri döner.
## Sonlandırma
Son yanıt hazır olduğunda OpenClaw sohbeti temiz tutmaya çalışır:
- Taslak güvenli şekilde son yanıta dönüşebiliyorsa OpenClaw onu yerinde düzenler.
- Kanal yerel ilerleme akışı kullanıyorsa OpenClaw, yerel taşıma son metni kabul
ettiğinde bu akışı sonlandırır.
- Son yanıtta medya, onay istemi, açık yanıt hedefi, çok fazla parça veya
başarısız düzenleme/gönderme varsa OpenClaw son yanıtı normal kanal teslim
yolundan gönderir.
- Taslak güvenli biçimde son yanıta dönüşebiliyorsa OpenClaw bunu yerinde düzenler.
- Kanal yerel ilerleme akışı kullanıyorsa, yerel taşıma son metni kabul ettiğinde OpenClaw bu akışı sonlandırır.
- Son yanıtta medya, bir onay istemi, açık bir yanıt hedefi, çok fazla parça veya başarısız bir düzenleme/gönderme varsa OpenClaw son yanıtı normal kanal teslim yolu üzerinden gönderir.
Geri dönüş yolu bilinçli bir tercihtir. Metni kaybetmekten, bir yanıtı yanlış
konuya bağlamaktan veya taslağın üzerine kanalın güvenli şekilde temsil edemeyeceği
bir payload yazmaktansa yeni bir son yanıt göndermek daha iyidir.
Geri dönüş yolu bilinçli bir tercihtir. Metni kaybetmekten, yanıtı yanlış iş parçacığına bağlamaktan veya taslağı kanalın güvenli biçimde temsil edemeyeceği bir yükle üzerine yazmaktansa yeni bir son yanıt göndermek daha iyidir.
## Sorun Giderme
**Yalnızca son yanıtı görüyorum.**
Mesajı işleyen hesap veya kanal için `channels.<channel>.streaming.mode`
değerinin `progress` olarak ayarlandığını kontrol edin. Bazı grup veya alıntılı
yanıt yolları, kanal doğru mesajı güvenli şekilde düzenleyemediğinde bir tur için
taslak önizlemelerini devre dışı bırakabilir.
Mesajı işleyen hesap veya kanal için `channels.<channel>.streaming.mode` değerinin `progress` olarak ayarlandığını kontrol edin. Bazı grup veya alıntı-yanıt yolları, kanal doğru mesajı güvenli biçimde düzenleyemediğinde bir tur için taslak önizlemelerini devre dışı bırakabilir.
**Etiketi görüyorum ama araç satırlarını görmüyorum.**
`streaming.progress.toolProgress` ayarını kontrol edin. `false` ise OpenClaw tek
taslak davranışını korur ancak araç ve görev ilerleme satırlarını gizler.
`streaming.progress.toolProgress` değerini kontrol edin. `false` ise OpenClaw tek taslak davranışını korur ancak araç ve görev ilerleme satırlarını gizler.
**Düzenlenmiş taslak yerine yeni bir son mesaj görüyorum.**
Bu bir güvenlik geri dönüşüdür. Medya yanıtlarında, uzun yanıtlarda, açık yanıt
hedeflerinde, eski Telegram taslaklarında, eksik Slack konu hedeflerinde, silinmiş
önizleme mesajlarında veya başarısız yerel akış sonlandırmasında gerçekleşebilir.
Bu bir güvenlik geri dönüşüdür. Medya yanıtlarında, uzun yanıtlarda, açık yanıt hedeflerinde, eski Telegram taslaklarında, eksik Slack iş parçacığı hedeflerinde, silinmiş önizleme mesajlarında veya başarısız yerel akış sonlandırmasında gerçekleşebilir.
**Hâlâ bağımsız ilerleme mesajları görüyorum.**
İlerleme modu, bir taslak etkin olduğunda varsayılan bağımsız araç ilerleme
mesajlarını bastırır. Bağımsız mesajlar hâlâ görünüyorsa turun gerçekten ilerleme
modunu kullandığını ve `streaming.mode: "off"` ya da o mesaj için taslak
oluşturamayan bir kanal yolu olmadığını doğrulayın.
İlerleme modu, taslak etkin olduğunda varsayılan bağımsız araç ilerleme mesajlarını bastırır. Bağımsız mesajlar hâlâ görünüyorsa, turun gerçekten ilerleme modunu kullandığını ve `streaming.mode: "off"` ya da o mesaj için taslak oluşturamayan bir kanal yolu kullanmadığını doğrulayın.
**Teams, Discord veya Telegram'dan farklı davranıyor.**
**Teams, Discord veya Telegramdan farklı davranıyor.**
Microsoft Teams, genel gönder-ve-düzenle önizleme taşıma biçimi yerine kişisel
sohbetlerde yerel akış kullanır. Teams ayrıca `streaming.mode: "block"` değerini
Teams blok teslimi olarak ele alır; çünkü Discord ve Telegram tarafından kullanılan
aynı taslak önizleme blok moduna sahip değildir.
Microsoft Teams, kişisel sohbetlerde genel gönder-ve-düzenle önizleme taşıması yerine yerel bir akış kullanır. Teams ayrıca `streaming.mode: "block"` değerini Teams blok teslimi olarak ele alır, çünkü Discord ve Telegram tarafından kullanılan aynı taslak-önizleme blok moduna sahip değildir.
## İlgili
- [Akış ve parçalara ayırma](/tr/concepts/streaming)
- [Akış ve parçalama](/tr/concepts/streaming)
- [Mesajlar](/tr/concepts/messages)
- [Kanal yapılandırması](/tr/gateway/config-channels)
- [Discord](/tr/channels/discord)

View File

@ -1,72 +1,75 @@
---
read_when:
- Bir ajan araçları kullanırken steer'ın nasıl davrandığınııklama
- Bir ajan araçları kullanırken yönlendirmenin nasıl davrandığınııklama
- Etkin çalıştırma kuyruğu davranışını veya çalışma zamanı yönlendirme entegrasyonunu değiştirme
- steer, queue, collect ve followup modlarını karşılaştırma
summary: Etkin çalıştırma yönlendirmesinin çalışma zamanı sınırlarında iletileri nasıl kuyruğa aldığı
- steer, queue, collect ve followup modlarının karşılaştırılması
summary: Aktif çalıştırma yönlendirmesi, çalışma zamanı sınırlarında mesajları nasıl kuyruğa alır
title: Yönlendirme kuyruğu
x-i18n:
generated_at: "2026-04-30T09:18:43Z"
generated_at: "2026-05-04T02:23:42Z"
model: gpt-5.5
provider: openai
source_hash: 560390c8c26bcce95e0137f4336ad6e62bc3e2344cb15fd12ca3cfe4a85a8acc
source_hash: c8df35b127ae0c1e1b3b684a1f63ce33874eb3d0b7bf9d0df7cb9dfce093090a
source_path: concepts/queue-steering.md
workflow: 16
---
Bir oturum çalışması zaten akış yaparken bir mesaj geldiğinde OpenClaw, aynı oturum için başka bir çalışma başlatmak yerine bu mesajı etkin çalışma zamanına gönderebilir. Herkese açık modlar çalışma zamanından bağımsızdır; Pi ve yerel Codex app-server düzeneği teslim ayrıntılarını farklı uygular.
Bir oturum çalışması zaten akış halindeyken bir mesaj geldiğinde, OpenClaw aynı oturum için başka bir çalışma başlatmak yerine bu mesajı etkin çalışma zamanına gönderebilir. Genel modlar çalışma zamanından bağımsızdır; Pi ve yerel Codex app-server düzeneği teslim ayrıntılarını farklı şekilde uygular.
## Çalışma zamanı sınırı
Yönlendirme, zaten çalışmakta olan bir araç çağrısını kesintiye uğratmaz. Pi, kuyruğa alınmış yönlendirme mesajlarını model sınırlarında denetler:
Yönlendirme, zaten çalışmakta olan bir araç çağrısını kesintiye uğratmaz. Pi, model sınırlarında kuyruktaki yönlendirme mesajlarını denetler:
1. Asistan araç çağrıları ister.
2. Pi, mevcut asistan mesajının araç çağrısı toplu işini yürütür.
2. Pi, mevcut asistan mesajının araç çağrısı grubunu yürütür.
3. Pi, tur sonu olayını yayar.
4. Pi, kuyruğa alınmış yönlendirme mesajlarını boşaltır.
4. Pi, kuyruktaki yönlendirme mesajlarını boşaltır.
5. Pi, bu mesajları bir sonraki LLM çağrısından önce kullanıcı mesajları olarak ekler.
Bu, araç sonuçlarını onları isteyen asistan mesajıyla eşleşmiş tutar, ardından bir sonraki model çağrısının en son kullanıcı girdisini görmesini sağlar.
Bu, araç sonuçlarını onları isteyen asistan mesajıyla eşlenmiş tutar, ardından bir sonraki model çağrısının en son kullanıcı girdisini görmesini sağlar.
Yerel Codex app-server düzeneği, Pi'nin dahili yönlendirme kuyruğu yerine `turn/steer` sunar. OpenClaw aynı modları burada uyarlar:
- `steer`, yapılandırılmış sessizlik penceresi boyunca kuyruğa alınmış mesajları toplar, ardından toplanan tüm kullanıcı girdileriyle varış sırasına göre tek bir `turn/steer` isteği gönderir.
- `queue`, ayrı `turn/steer` istekleri göndererek eski serileştirilmiş biçimi korur.
- `followup`, `collect`, `steer-backlog` ve `interrupt`, etkin Codex turunun etrafında OpenClaw'a ait kuyruk davranışı olarak kalır.
- `steer`, kuyruktaki mesajları yapılandırılmış sessiz pencere boyunca gruplar, ardından toplanan tüm kullanıcı girdileriyle geliş sırasına göre tek bir `turn/steer` isteği gönderir.
- `queue`, ayrı `turn/steer` istekleri göndererek eski serileştirilmiş yapıyı korur.
- `followup`, `collect`, `steer-backlog` ve `interrupt`, etkin Codex turu etrafında OpenClaw tarafından sahip olunan kuyruk davranışı olarak kalır.
Codex inceleme ve manuel Compaction turları aynı tur yönlendirmesini reddeder. Bir çalışma zamanı yönlendirmeyi kabul edemediğinde OpenClaw, ilgili mod izin veriyorsa takip kuyruğuna geri döner.
Codex inceleme ve manuel Compaction turları aynı tur yönlendirmesini reddeder. Bir çalışma zamanı yönlendirmeyi kabul edemediğinde, OpenClaw bu modun izin verdiği durumlarda followup kuyruğuna geri döner.
Bu sayfa, normal gelen mesajlar için kuyruk modu yönlendirmesini açıklar. Açık `/steer <message>` komutu için bkz. [Steer](/tools/steer).
## Modlar
| Mod | Etkin çalışma davranışı | Sonraki takip davranışı |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| `steer` | Kuyruğa alınmış tüm yönlendirme mesajlarını bir sonraki çalışma zamanı sınırında birlikte enjekte eder. Varsayılan budur. | Yalnızca yönlendirme kullanılamadığında takibe geri döner. |
| `queue` | Eski tek tek yönlendirme. Pi, model sınırı başına bir kuyruğa alınmış mesaj enjekte eder; Codex ayrı `turn/steer` istekleri gönderir. | Yalnızca yönlendirme kullanılamadığında takibe geri döner. |
| `steer-backlog` | `steer` ile aynı etkin çalışma yönlendirme davranışı. | Aynı mesajı daha sonraki bir takip turu için de tutar. |
| `followup` | Mevcut çalışmayı yönlendirmez. | Kuyruğa alınmış mesajları daha sonra çalıştırır. |
| `collect` | Mevcut çalışmayı yönlendirmez. | Uyumlu kuyruğa alınmış mesajları debounce penceresinden sonra tek bir sonraki turda birleştirir. |
| `interrupt` | Etkin çalışmayı iptal eder, ardından en yeni mesajı başlatır. | Yok. |
| Mod | Etkin çalışma davranışı | Sonraki followup davranışı |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| `steer` | Kuyruktaki tüm yönlendirme mesajlarını bir sonraki çalışma zamanı sınırında birlikte enjekte eder. Varsayılan budur. | Yalnızca yönlendirme kullanılamadığında followup'a geri döner. |
| `queue` | Eski tek tek yönlendirme. Pi her model sınırında kuyruktaki bir mesajı enjekte eder; Codex ayrı `turn/steer` istekleri gönderir. | Yalnızca yönlendirme kullanılamadığında followup'a geri döner. |
| `steer-backlog` | `steer` ile aynı etkin çalışma yönlendirme davranışı. | Aynı mesajı daha sonraki bir followup turu için de tutar. |
| `followup` | Geçerli çalışmayı yönlendirmez. | Kuyruktaki mesajları daha sonra çalıştırır. |
| `collect` | Geçerli çalışmayı yönlendirmez. | Uyumlu kuyruktaki mesajları bekletme penceresinden sonra tek bir sonraki turda birleştirir. |
| `interrupt` | Etkin çalışmayı iptal eder, ardından en yeni mesajı başlatır. | Yok. |
## Seri mesaj örneği
Aracı bir araç çağrısı yürütürken dört kullanıcı mesaj gönderirse:
Temsilci bir araç çağrısı yürütürken dört kullanıcı mesaj gönderirse:
- `steer`: etkin çalışma zamanı, bir sonraki model kararından önce dört mesajın tümünü varış sırasına göre alır. Pi bunları bir sonraki model sınırında boşaltır; Codex bunları tek bir toplu `turn/steer` olarak alır.
- `queue`: eski serileştirilmiş yönlendirme. Pi, kuyruğa alınmış mesajları tek tek enjekte eder; Codex ayrı `turn/steer` istekleri alır.
- `collect`: OpenClaw etkin çalışma bitene kadar bekler, ardından debounce penceresinden sonra uyumlu kuyruğa alınmış mesajlarla bir takip turu oluşturur.
- `steer`: etkin çalışma zamanı, bir sonraki model kararından önce dört mesajın tamamını geliş sırasına göre alır. Pi bunları bir sonraki model sınırında boşaltır; Codex bunları tek bir gruplu `turn/steer` olarak alır.
- `queue`: eski serileştirilmiş yönlendirme. Pi kuyruktaki mesajları tek tek enjekte eder; Codex ayrı `turn/steer` istekleri alır.
- `collect`: OpenClaw etkin çalışma sona erene kadar bekler, ardından bekletme penceresinden sonra uyumlu kuyruktaki mesajlarla bir followup turu oluşturur.
## Kapsam
Yönlendirme her zaman mevcut etkin oturum çalışmasını hedefler. Yeni bir oturum oluşturmaz, etkin çalışmanın araç politikasını değiştirmez veya mesajları gönderene göre bölmez. Çok kullanıcılı kanallarda, gelen istemler zaten gönderen ve yönlendirme bağlamını içerir; bu nedenle bir sonraki model çağrısı her mesajı kimin gönderdiğini görebilir.
Yönlendirme her zaman geçerli etkin oturum çalışmasını hedefler. Yeni bir oturum oluşturmaz, etkin çalışmanın araç politikasını değiştirmez veya mesajları gönderene göre bölmez. Çok kullanıcılı kanallarda gelen istemler zaten gönderen ve rota bağlamını içerir, bu nedenle bir sonraki model çağrısı her mesajı kimin gönderdiğini görebilir.
OpenClaw'ın uyumlu mesajları birleştirebilen ve takip kuyruğu düşürme politikasını koruyabilen daha sonraki bir takip turu oluşturmasını istediğinizde `collect` kullanın. `queue` yalnızca eski tek tek yönlendirme davranışına ihtiyacınız olduğunda kullanın.
OpenClaw'ın uyumlu mesajları birleştirebilen ve followup kuyruğu bırakma politikasını koruyabilen daha sonraki bir followup turu oluşturmasını istediğinizde `collect` kullanın. `queue` yalnızca eski tek tek yönlendirme davranışına ihtiyacınız olduğunda kullanın.
## Debounce
## Bekletme
`messages.queue.debounceMs`, `collect`, `followup`, `steer-backlog` ve etkin çalışma yönlendirmesi kullanılamadığında `steer` geri dönüşü dahil olmak üzere takip teslimine uygulanır. Pi için etkin `steer` debounce zamanlayıcısını kullanmaz, çünkü Pi mesajları bir sonraki model sınırına kadar doğal olarak toplar. Yerel Codex düzeneği için OpenClaw, toplu `turn/steer` göndermeden önce sessizlik penceresi olarak aynı debounce değerini kullanır.
`messages.queue.debounceMs`, `collect`, `followup`, `steer-backlog` ve etkin çalışma yönlendirmesi kullanılamadığında `steer` geri dönüşü dahil olmak üzere followup teslimine uygulanır. Pi için etkin `steer` kendisi bekletme zamanlayıcısını kullanmaz, çünkü Pi mesajları doğal olarak bir sonraki model sınırına kadar gruplar. Yerel Codex düzeneği için OpenClaw, gruplu `turn/steer` göndermeden önce sessiz pencere olarak aynı debounce değerini kullanır.
## İlgili
- [Komut kuyruğu](/tr/concepts/queue)
- [Steer](/tools/steer)
- [Mesajlar](/tr/concepts/messages)
- [Aracı döngüsü](/tr/concepts/agent-loop)
- [Temsilci döngüsü](/tr/concepts/agent-loop)

View File

@ -1,60 +1,60 @@
---
read_when:
- Otomatik yanıtın yürütülmesini veya eşzamanlılığını değiştirme
- Otomatik yanıt yürütmesini veya eşzamanlılığını değiştirme
- /queue modlarını veya mesaj yönlendirme davranışınııklama
summary: Otomatik yanıt kuyruğu modları, varsayılan değerleri ve oturum başına geçersiz kılmaları
summary: Otomatik yanıt kuyruğu modları, varsayılanları ve oturum başına geçersiz kılmalar
title: Komut kuyruğu
x-i18n:
generated_at: "2026-05-02T08:52:46Z"
generated_at: "2026-05-04T02:23:20Z"
model: gpt-5.5
provider: openai
source_hash: c59ea6802d8bf526f4005db3b1baa87d96a23d561c916f91520e8e641fbaf74f
source_hash: 085aebe7059020f027eb08bb382cce2d253ea117eed0ca77d6ffd208f295acb1
source_path: concepts/queue.md
workflow: 16
---
Gelen otomatik yanıt çalıştırmalarını (tüm kanallar) küçük bir süreç içi kuyruk üzerinden serileştirerek birden çok aracı çalıştırmasının çakışmasını önleriz; oturumlar arasında güvenli paralelliğe yine de izin veririz.
Gelen otomatik yanıt çalıştırmalarını (tüm kanallar) küçük bir süreç içi kuyruk üzerinden serileştirerek birden fazla agent çalıştırmasının çakışmasını önlerken oturumlar arasında güvenli paralelliğe izin veririz.
## Neden
- Otomatik yanıt çalıştırmaları pahalı olabilir (LLM çağrıları) ve birden çok gelen mesaj birbirine yakın zamanda ulaştığında çakışabilir.
- Serileştirme, paylaşılan kaynaklar (oturum dosyaları, günlükler, CLI stdin) için rekabeti önler ve üst akış hız sınırlarına takılma olasılığını azaltır.
- Otomatik yanıt çalıştırmaları pahalı olabilir (LLM çağrıları) ve kısa aralıklarla birden fazla gelen mesaj ulaştığında çakışabilir.
- Serileştirme, paylaşılan kaynaklar (oturum dosyaları, günlükler, CLI stdin) için rekabeti önler ve upstream hız sınırlarına takılma olasılığını azaltır.
## Nasıl çalışır
## Nasıl çalışır?
- Şerit farkındalıklı bir FIFO kuyruğu, her şeridi yapılandırılabilir bir eşzamanlılık üst sınırıyla boşaltır (yapılandırılmamış şeritler için varsayılan 1; main varsayılanı 4, subagent varsayılanı 8).
- `runEmbeddedPiAgent`, oturum başına yalnızca bir etkin çalıştırmayı garanti etmek için **oturum anahtarına** göre kuyruğa alır (şerit `session:<key>`).
- Ardından her oturum çalıştırması bir **global şeride** (`main` varsayılan) alınır; böylece genel paralellik `agents.defaults.maxConcurrent` ile sınırlandırılır.
- Ayrıntılı günlükleme etkin olduğunda, kuyruğa alınan çalıştırmalar başlamadan önce ~2 snden fazla beklediyse kısa bir bildirim üretir.
- Yazıyor göstergeleri yine kuyruğa alma anında hemen tetiklenir (kanal destekliyorsa); bu yüzden sıranın bize gelmesini beklerken kullanıcı deneyimi değişmez.
- Şerit farkındalığı olan bir FIFO kuyruğu, her şeridi yapılandırılabilir bir eşzamanlılık sınırıyla boşaltır (yapılandırılmamış şeritler için varsayılan 1; main varsayılanı 4, subagent varsayılanı 8).
- `runEmbeddedPiAgent`, oturum başına yalnızca bir etkin çalıştırmayı garanti etmek için **oturum anahtarına** göre kuyruğa alır (`session:<key>` şeridi).
- Ardından her oturum çalıştırması bir **küresel şeride** (`main` varsayılan) kuyruğa alınır; böylece toplam paralellik `agents.defaults.maxConcurrent` ile sınırlandırılır.
- Ayrıntılı günlükleme etkinleştirildiğinde, kuyruğa alınan çalıştırmalar başlamadan önce ~2 saniyeden uzun beklediyse kısa bir bildirim üretir.
- Yazıyor göstergeleri, destekleniyorsa kanalda, kuyruğa alındığında hâlâ hemen tetiklenir; bu yüzden kullanıcı deneyimi sıra beklerken değişmez.
## Varsayılanlar
Ayarlanmadığında tüm gelen kanal yüzeyleri şunları kullanır:
Ayarlanmadığında, tüm gelen kanal yüzeyleri şunları kullanır:
- `mode: "steer"`
- `debounceMs: 500`
- `cap: 20`
- `drop: "summarize"`
`steer`, etkin model turunu ikinci bir oturum çalıştırması başlatmadan duyarlı tuttuğu için varsayılandır. Bir sonraki model sınırından önce gelen tüm yönlendirme mesajlarını boşaltır. Geçerli çalıştırma yönlendirmeyi kabul edemiyorsa OpenClaw, yedek olarak bir takip kuyruk girdisine geçer.
`steer` varsayılandır çünkü ikinci bir oturum çalıştırması başlatmadan etkin model turunu duyarlı tutar. Bir sonraki model sınırından önce gelen tüm yönlendirme mesajlarını boşaltır. Geçerli çalıştırma yönlendirmeyi kabul edemiyorsa OpenClaw bir takip kuyruğu girdisine geri döner.
## Kuyruk modları
Gelen mesajlar geçerli çalıştırmayı yönlendirebilir, takip turunu bekleyebilir veya ikisini birden yapabilir:
Gelen mesajlar geçerli çalıştırmayı yönlendirebilir, bir takip turunu bekleyebilir veya ikisini de yapabilir:
- `steer`: yönlendirme mesajlarını etkin çalışma zamanına kuyruğa alır. Pi, bekleyen tüm yönlendirme mesajlarını **geçerli asistan turu araç çağrılarını yürütmeyi bitirdikten sonra**, bir sonraki LLM çağrısından önce iletir; Codex app-server tek bir toplu `turn/steer` alır. Çalıştırma etkin olarak akış vermiyorsa veya yönlendirme kullanılamıyorsa OpenClaw, yedek olarak bir takip kuyruk girdisine geçer.
- `queue` (eski): eski tek tek yönlendirme. Pi, her model sınırında kuyruğa alınmış bir yönlendirme mesajı iletir; Codex app-server ayrı `turn/steer` istekleri alır. Önceki serileştirilmiş davranışa ihtiyacınız yoksa `steer` kullanın.
- `followup`: her mesajı, geçerli çalıştırma bittikten sonraki bir aracı turu için kuyruğa alır.
- `collect`: kuyruktaki mesajları sessizlik penceresinden sonra **tek** bir takip turunda birleştirir. Mesajlar farklı kanalları/iş parçacıklarını hedefliyorsa yönlendirmeyi korumak için ayrı ayrı boşaltılır.
- `steer`: yönlendirme mesajlarını etkin runtime içine kuyruğa alır. Pi, bekleyen tüm yönlendirme mesajlarını **geçerli assistant turu araç çağrılarını yürütmeyi bitirdikten sonra**, bir sonraki LLM çağrısından önce teslim eder; Codex app-server tek bir toplu `turn/steer` alır. Çalıştırma etkin olarak akış yapmıyorsa veya yönlendirme kullanılamıyorsa OpenClaw bir takip kuyruğu girdisine geri döner.
- `queue` (eski): eski, tek seferde bir mesaj yönlendirmesi. Pi, her model sınırında kuyruğa alınmış bir yönlendirme mesajı teslim eder; Codex app-server ayrı `turn/steer` istekleri alır. Önceki serileştirilmiş davranışa ihtiyacınız yoksa `steer` tercih edin.
- `followup`: her mesajı, geçerli çalıştırma bittikten sonra daha sonraki bir agent turu için kuyruğa alır.
- `collect`: kuyruğa alınmış mesajları, sessiz pencerenin ardından **tek** bir takip turunda birleştirir. Mesajlar farklı kanalları/iş parçacıklarını hedefliyorsa yönlendirmeyi korumak için ayrı ayrı boşaltılır.
- `steer-backlog` (diğer adıyla `steer+backlog`): şimdi yönlendirir **ve** aynı mesajı bir takip turu için korur.
- `interrupt` (eski): o oturumun etkin çalıştırmasını iptal eder, ardından en yeni mesajı çalıştırır.
Steer-backlog, yönlendirilen çalıştırmadan sonra bir takip yanıtı alabileceğiniz anlamına gelir; bu yüzden akış yüzeyleri yinelenmiş gibi görünebilir. Gelen mesaj başına tek yanıt istiyorsanız `collect`/`steer` kullanın.
Steer-backlog, yönlendirilen çalıştırmadan sonra bir takip yanıtı alabileceğiniz anlamına gelir; bu nedenle akış yüzeylerinde yinelenen yanıtlar gibi görünebilir. Gelen mesaj başına tek yanıt istiyorsanız `collect`/`steer` tercih edin.
Çalışma zamanına özgü zamanlama ve bağımlılık davranışı için bkz. [Yönlendirme kuyruğu](/tr/concepts/queue-steering).
Runtimea özgü zamanlama ve bağımlılık davranışı için bkz. [Yönlendirme kuyruğu](/tr/concepts/queue-steering).ık `/steer <message>` komutu için bkz. [Yönlendir](/tools/steer).
Global olarak veya kanal başına `messages.queue` üzerinden yapılandırın:
`messages.queue` üzerinden küresel olarak veya kanal başına yapılandırın:
```json5
{
@ -72,26 +72,26 @@ Global olarak veya kanal başına `messages.queue` üzerinden yapılandırın:
## Kuyruk seçenekleri
Seçenekler `followup`, `collect` ve `steer-backlog` için geçerlidir (ayrıca yönlendirme takip davranışına geri düştüğünde `steer` veya eski `queue` için de geçerlidir):
Seçenekler `followup`, `collect` ve `steer-backlog` için geçerlidir (ayrıca yönlendirme takibe geri döndüğünde `steer` veya eski `queue` için de geçerlidir):
- `debounceMs`: kuyruğa alınmış takipleri boşaltmadan önceki sessizlik penceresi. Yalın sayılar milisaniyedir; `/queue` seçenekleri tarafından `ms`, `s`, `m`, `h` ve `d` birimleri kabul edilir.
- `cap`: oturum başına kuyruğa alınabilecek en fazla mesaj sayısı. `1` altındaki değerler yok sayılır.
- `drop: "summarize"`: varsayılan. Gerektiğinde en eski kuyruk girdilerini düşürür, kompakt özetleri korur ve bunları sentetik bir takip istemi olarak enjekte eder.
- `drop: "old"`: gerektiğinde en eski kuyruk girdilerini, özetleri korumadan düşürür.
- `debounceMs`: kuyruğa alınmış takipleri boşaltmadan önceki sessiz pencere. Yalın sayılar milisaniyedir; `/queue` seçenekleri `ms`, `s`, `m`, `h` ve `d` birimlerini kabul eder.
- `cap`: oturum başına en fazla kuyruğa alınmış mesaj sayısı. `1` altındaki değerler yok sayılır.
- `drop: "summarize"`: varsayılan. Gerektie en eski kuyruk girdilerini düşürür, kompakt özetleri korur ve bunları sentetik bir takip istemi olarak ekler.
- `drop: "old"`: özetleri korumadan, gerektikçe en eski kuyruk girdilerini düşürür.
- `drop: "new"`: kuyruk zaten doluyken en yeni mesajı reddeder.
Varsayılanlar: `debounceMs: 500`, `cap: 20`, `drop: summarize`.
## Öncelik sırası
## Öncelik
Mod seçimi için OpenClaw şunları çözümler:
Mod seçimi için OpenClaw şu sırayla çözümler:
1. Satır içi veya saklanan oturum başına `/queue` geçersiz kılması.
2. `messages.queue.byChannel.<channel>`.
3. `messages.queue.mode`.
4. Varsayılan `steer`.
Seçeneklerde, satır içi veya saklanan `/queue` seçenekleri yapılandırmaya göre önceliklidir. Ardından kanala özgü debounce (`messages.queue.debounceMsByChannel`), Plugin debounce varsayılanları, global `messages.queue` seçenekleri ve yerleşik varsayılanlar uygulanır. `cap` ve `drop`, kanal başına yapılandırma anahtarları değil, global/oturum seçenekleridir.
Seçenekler için satır içi veya saklanan `/queue` seçenekleri yapılandırmaya göre önceliklidir. Ardından kanala özgü debounce (`messages.queue.debounceMsByChannel`), Plugin debounce varsayılanları, küresel `messages.queue` seçenekleri ve yerleşik varsayılanlar uygulanır. `cap` ve `drop` küresel/oturum seçenekleridir; kanal başına yapılandırma anahtarları değildir.
## Oturum başına geçersiz kılmalar
@ -101,21 +101,22 @@ Seçeneklerde, satır içi veya saklanan `/queue` seçenekleri yapılandırmaya
## Kapsam ve garantiler
- Gateway yanıt hattını kullanan tüm gelen kanallardaki otomatik yanıt aracı çalıştırmaları için geçerlidir (WhatsApp web, Telegram, Slack, Discord, Signal, iMessage, webchat vb.).
- Varsayılan şerit (`main`), gelenler + ana Heartbeatler için süreç çapındadır; birden çok oturumun paralel çalışmasına izin vermek için `agents.defaults.maxConcurrent` ayarlayın.
- Ek şeritler bulunabilir (örn. `cron`, `cron-nested`, `nested`, `subagent`); böylece arka plan işleri gelen yanıtları engellemeden paralel çalışabilir. Yalıtılmış Cron aracı turları, iç aracı yürütmeleri `cron-nested` kullanırken bir `cron` yuvası tutar; ikisi de `cron.maxConcurrentRuns` kullanır. Paylaşılan Cron dışı `nested` akışları kendi şerit davranışlarını korur. Bu ayrılmış çalıştırmalar [arka plan görevleri](/tr/automation/tasks) olarak izlenir.
- Oturum başına şeritler, belirli bir oturuma aynı anda yalnızca bir aracı çalıştırmasının dokunmasını garanti eder.
- Gateway yanıt hattını kullanan tüm gelen kanallardaki otomatik yanıt agent çalıştırmaları için geçerlidir (WhatsApp web, Telegram, Slack, Discord, Signal, iMessage, webchat vb.).
- Varsayılan şerit (`main`), gelenler + ana Heartbeatler için süreç genelindedir; birden fazla oturuma paralel izin vermek için `agents.defaults.maxConcurrent` değerini ayarlayın.
- Ek şeritler bulunabilir (örn. `cron`, `cron-nested`, `nested`, `subagent`), böylece arka plan işleri gelen yanıtları engellemeden paralel çalışabilir. İzole cron agent turları, iç agent yürütmeleri `cron-nested` kullanırken bir `cron` yuvası tutar; ikisi de `cron.maxConcurrentRuns` kullanır. Paylaşılan cron dışı `nested` akışları kendi şerit davranışlarını korur. Bu ayrılmış çalıştırmalar [arka plan görevleri](/tr/automation/tasks) olarak izlenir.
- Oturum başına şeritler, belirli bir oturuma aynı anda yalnızca bir agent çalıştırmasının dokunmasını garanti eder.
- Harici bağımlılık veya arka plan worker iş parçacığı yoktur; saf TypeScript + promiseler.
## Sorun giderme
- Komutlar takılmış gibi görünüyorsa ayrıntılı günlükleri etkinleştirin ve kuyruğun boşaldığını doğrulamak için “queued for …ms” satırlarını arayın.
- Kuyruk derinliğine ihtiyacınız varsa ayrıntılı günlükleri etkinleştirin ve kuyruk zamanlama satırlarını izleyin.
- Bir turu kabul edip ardından ilerleme üretmeyi durduran Codex app-server çalıştırmaları Codex bağdaştırıcısı tarafından kesilir; böylece etkin oturum şeridi dış çalıştırma zaman aşımını beklemek yerine serbest bırakılabilir.
- Tanılama etkin olduğunda, `diagnostics.stuckSessionWarnMs` süresini aşacak şekilde `processing` durumunda kalan ve gözlenen yanıt, araç, durum, blok veya ACP ilerlemesi olmayan oturumlar geçerli etkinliğe göre sınıflandırılır. Etkin çalışma `session.long_running` olarak günlüğe yazılır; yakın zamanda ilerleme olmayan etkin çalışma `session.stalled` olarak günlüğe yazılır; `session.stuck`, etkin çalışma olmayan bayat oturum kayıtları için ayrılmıştır ve yalnızca bu yol etkilenen oturum şeridini serbest bırakıp kuyruktaki çalışmanın boşalmasını sağlayabilir. Yinelenen `session.stuck` tanılamaları, oturum değişmeden kaldığı sürece geri çekilir.
- Bir turu kabul edip sonra ilerleme üretmeyi bırakan Codex app-server çalıştırmaları Codex adaptörü tarafından kesilir; böylece etkin oturum şeridi dış çalıştırma zaman aşımını beklemek yerine serbest kalabilir.
- Tanılamalar etkinleştirildiğinde, `diagnostics.stuckSessionWarnMs` süresini geçmiş halde `processing` içinde kalan ve gözlemlenen yanıt, araç, durum, blok veya ACP ilerlemesi olmayan oturumlar geçerli etkinliğe göre sınıflandırılır. Etkin çalışma `session.long_running` olarak günlüğe yazılır; yakın zamanda ilerleme olmayan etkin çalışma `session.stalled` olarak günlüğe yazılır; `session.stuck`, etkin çalışma olmadan eskimiş oturum kayıt tutma için ayrılmıştır ve yalnızca bu yol etkilenen oturum şeridini serbest bırakıp kuyruğa alınmış işin boşalmasını sağlayabilir. Tekrarlanan `session.stuck` tanılamaları, oturum değişmeden kaldığı sürece geri çekilir.
## İlgili
- [Oturum yönetimi](/tr/concepts/session)
- [Yönlendirme kuyruğu](/tr/concepts/queue-steering)
- [Yönlendir](/tools/steer)
- [Yeniden deneme ilkesi](/tr/concepts/retry)