Regional platforms
Feishu
Feishu/Lark, ekiplerin sohbet ettiği, belge paylaştığı, takvimleri yönettiği ve birlikte iş yaptığı hepsi bir arada bir iş birliği platformudur.
Durum: bot DM'leri + grup sohbetleri için üretime hazır. WebSocket varsayılan moddur; Webhook modu isteğe bağlıdır.
Hızlı başlangıç
Kanal kurulum sihirbazını çalıştırın
openclaw channels login --channel feishuFeishu Open Platform'dan bir App ID ve App Secret yapıştırmak için manuel kurulumu seçin veya otomatik olarak bot oluşturmak için QR kurulumunu seçin. Çin içi Feishu mobil uygulaması QR koduna tepki vermiyorsa kurulumu yeniden çalıştırın ve manuel kurulumu seçin.
Kurulum tamamlandıktan sonra değişiklikleri uygulamak için gateway'i yeniden başlatın
openclaw gateway restartErişim kontrolü
Doğrudan mesajlar
Bota kimin DM gönderebileceğini denetlemek için dmPolicy yapılandırın:
"pairing"- bilinmeyen kullanıcılar bir eşleştirme kodu alır; CLI üzerinden onaylayın"allowlist"- yalnızcaallowFromiçinde listelenen kullanıcılar sohbet edebilir"open"- yalnızcaallowFrom"*"içerdiğinde herkese açık DM'lere izin verilir; kısıtlayıcı girdilerle yalnızca eşleşen kullanıcılar sohbet edebilir
Bir eşleştirme isteğini onaylayın:
openclaw pairing list feishuopenclaw pairing approve feishu <CODE>Grup sohbetleri
Grup ilkesi (channels.feishu.groupPolicy):
| Değer | Davranış |
|---|---|
"open" |
Gruplardaki tüm mesajlara yanıt ver |
"allowlist" |
Yalnızca groupAllowFrom içindeki veya groups.<chat_id> altında açıkça yapılandırılmış gruplara yanıt ver |
"disabled" |
Tüm grup mesajlarını devre dışı bırak; açık groups.<chat_id> girdileri bunu geçersiz kılmaz |
Varsayılan: allowlist
Bahsetme gereksinimi (channels.feishu.requireMention):
true- @mention gerektir (varsayılan)false- @mention olmadan yanıt ver- Grup başına geçersiz kılma:
channels.feishu.groups.<chat_id>.requireMention - Yalnızca yayın amaçlı
@allve@_all, bot bahsetmeleri olarak değerlendirilmez. Hem@allhem de doğrudan bottan bahseden bir mesaj yine bot bahsetmesi sayılır.
Grup yapılandırma örnekleri
Tüm gruplara izin ver, @mention gerekmez
{ channels: { feishu: { groupPolicy: "open", }, },}Tüm gruplara izin ver, yine de @mention gerektir
{ channels: { feishu: { groupPolicy: "open", requireMention: true, }, },}Yalnızca belirli gruplara izin ver
{ channels: { feishu: { groupPolicy: "allowlist", // Group IDs look like: oc_xxx groupAllowFrom: ["oc_xxx", "oc_yyy"], }, },}allowlist modunda, açık bir groups.<chat_id> girdisi ekleyerek bir grubu da kabul edebilirsiniz. Açık girdiler groupPolicy: "disabled" değerini geçersiz kılmaz. groups.* altındaki joker karakterli varsayılanlar eşleşen grupları yapılandırır, ancak tek başlarına grupları kabul etmezler.
{ channels: { feishu: { groupPolicy: "allowlist", groups: { oc_xxx: { requireMention: false, }, }, }, },}Grup içindeki göndericileri kısıtla
{ channels: { feishu: { groupPolicy: "allowlist", groupAllowFrom: ["oc_xxx"], groups: { oc_xxx: { // User open_ids look like: ou_xxx allowFrom: ["ou_user1", "ou_user2"], }, }, }, },}Grup/kullanıcı kimliklerini alma
Grup kimlikleri (chat_id, biçim: oc_xxx)
Grubu Feishu/Lark içinde açın, sağ üst köşedeki menü simgesine tıklayın ve Ayarlar bölümüne gidin. Grup kimliği (chat_id) ayarlar sayfasında listelenir.

Kullanıcı kimlikleri (open_id, biçim: ou_xxx)
Gateway'i başlatın, bota bir DM gönderin, ardından günlükleri kontrol edin:
openclaw logs --followGünlük çıktısında open_id arayın. Bekleyen eşleştirme isteklerini de kontrol edebilirsiniz:
openclaw pairing list feishuYaygın komutlar
| Komut | Açıklama |
|---|---|
/status |
Bot durumunu göster |
/reset |
Geçerli oturumu sıfırla |
/model |
AI modelini göster veya değiştir |
Sorun giderme
Bot grup sohbetlerinde yanıt vermiyor
- Botun gruba eklendiğinden emin olun
- Bottan @mention ile bahsettiğinizden emin olun (varsayılan olarak gerekir)
groupPolicydeğerinin"disabled"olmadığını doğrulayın- Günlükleri kontrol edin:
openclaw logs --follow
Bot mesaj almıyor
- Botun Feishu Open Platform / Lark Developer içinde yayınlandığından ve onaylandığından emin olun
- Etkinlik aboneliğinin
im.message.receive_v1içerdiğinden emin olun - Kalıcı bağlantı (WebSocket) seçildiğinden emin olun
- Gerekli tüm izin kapsamlarının verildiğinden emin olun
- Gateway'in çalıştığından emin olun:
openclaw gateway status - Günlükleri kontrol edin:
openclaw logs --follow
QR kurulumu Feishu mobil uygulamasında tepki vermiyor
- Kurulumu yeniden çalıştırın:
openclaw channels login --channel feishu - Manuel kurulumu seçin
- Feishu Open Platform içinde kendi oluşturduğunuz bir uygulama oluşturun ve App ID ile App Secret değerlerini kopyalayın
- Bu kimlik bilgilerini kurulum sihirbazına yapıştırın
App Secret sızdı
- Feishu Open Platform / Lark Developer içinde App Secret değerini sıfırlayın
- Yapılandırmanızdaki değeri güncelleyin
- Gateway'i yeniden başlatın:
openclaw gateway restart
Gelişmiş yapılandırma
Birden çok hesap
{ channels: { feishu: { defaultAccount: "main", accounts: { main: { appId: "cli_xxx", appSecret: "xxx", name: "Primary bot", tts: { providers: { openai: { voice: "shimmer" }, }, }, }, backup: { appId: "cli_yyy", appSecret: "yyy", name: "Backup bot", enabled: false, }, }, }, },}defaultAccount, giden API'ler bir accountId belirtmediğinde hangi hesabın kullanılacağını denetler.
accounts.<id>.tts, messages.tts ile aynı şekli kullanır ve genel TTS yapılandırmasının üzerine derin birleştirme uygular; böylece çok botlu Feishu kurulumları, hesap başına yalnızca ses, model, persona veya otomatik modu geçersiz kılarken paylaşılan sağlayıcı kimlik bilgilerini genel olarak tutabilir.
Mesaj sınırları
textChunkLimit- giden metin parçası boyutu (varsayılan:2000karakter)mediaMaxMb- medya yükleme/indirme sınırı (varsayılan:30MB)
Akış
Feishu/Lark, etkileşimli kartlar üzerinden akışlı yanıtları destekler. Etkinleştirildiğinde bot, metin üretirken kartı gerçek zamanlı olarak günceller.
{ channels: { feishu: { streaming: true, // enable streaming card output (default: true) blockStreaming: true, // opt into completed-block streaming }, },}Tam yanıtı tek mesajda göndermek için streaming: false ayarlayın. blockStreaming varsayılan olarak kapalıdır; yalnızca tamamlanmış assistant bloklarının son yanıttan önce gönderilmesini istediğinizde etkinleştirin.
Kota optimizasyonu
İki isteğe bağlı bayrakla Feishu/Lark API çağrılarının sayısını azaltın:
typingIndicator(varsayılantrue): yazıyor tepkisi çağrılarını atlamak içinfalseayarlayınresolveSenderNames(varsayılantrue): gönderici profili aramalarını atlamak içinfalseayarlayın
{ channels: { feishu: { typingIndicator: false, resolveSenderNames: false, }, },}ACP oturumları
Feishu/Lark, DM'ler ve grup konu mesajları için ACP'yi destekler. Feishu/Lark ACP metin komutuyla çalışır; yerel eğik çizgi komutu menüleri yoktur, bu nedenle /acp ... mesajlarını doğrudan konuşmada kullanın.
Kalıcı ACP bağlaması
{ agents: { list: [ { id: "codex", runtime: { type: "acp", acp: { agent: "codex", backend: "acpx", mode: "persistent", cwd: "/workspace/openclaw", }, }, }, ], }, bindings: [ { type: "acp", agentId: "codex", match: { channel: "feishu", accountId: "default", peer: { kind: "direct", id: "ou_1234567890" }, }, }, { type: "acp", agentId: "codex", match: { channel: "feishu", accountId: "default", peer: { kind: "group", id: "oc_group_chat:topic:om_topic_root" }, }, acp: { label: "codex-feishu-topic" }, }, ],}Sohbetten ACP başlatma
Bir Feishu/Lark DM'sinde veya konu dizisinde:
/acp spawn codex --thread here--thread here, DM'ler ve Feishu/Lark konu mesajları için çalışır. Bağlı konuşmadaki takip mesajları doğrudan bu ACP oturumuna yönlendirilir.
Çok ajanlı yönlendirme
Feishu/Lark DM'lerini veya gruplarını farklı ajanlara yönlendirmek için bindings kullanın.
{ agents: { list: [ { id: "main" }, { id: "agent-a", workspace: "/home/user/agent-a" }, { id: "agent-b", workspace: "/home/user/agent-b" }, ], }, bindings: [ { agentId: "agent-a", match: { channel: "feishu", peer: { kind: "direct", id: "ou_xxx" }, }, }, { agentId: "agent-b", match: { channel: "feishu", peer: { kind: "group", id: "oc_zzz" }, }, }, ],}Yönlendirme alanları:
match.channel:"feishu"match.peer.kind:"direct"(DM) veya"group"(grup sohbeti)match.peer.id: kullanıcı Open ID'si (ou_xxx) veya grup kimliği (oc_xxx)
Arama ipuçları için Grup/kullanıcı kimliklerini alma bölümüne bakın.
Kullanıcı başına ajan yalıtımı (Dinamik Ajan Oluşturma)
Her DM kullanıcısı için otomatik olarak yalıtılmış ajan örnekleri oluşturmak üzere dynamicAgentCreation etkinleştirin. Her kullanıcı şunlara sahip olur:
- Bağımsız çalışma alanı dizini
- Ayrı
USER.md/SOUL.md/MEMORY.md - Özel konuşma geçmişi
- Yalıtılmış Skills ve durum
Bu, her kullanıcının kendi özel AI asistanı deneyimine sahip olmasını istediğiniz herkese açık botlar için gereklidir.
Hızlı kurulum
{ channels: { feishu: { dmPolicy: "open", allowFrom: ["*"], dynamicAgentCreation: { enabled: true, workspaceTemplate: "~/.openclaw/workspace-{agentId}", agentDirTemplate: "~/.openclaw/agents/{agentId}/agent", }, }, }, session: { // Critical: makes each user's DM their "main session" // Automatically loads USER.md / SOUL.md / MEMORY.md // For stronger isolation, use "per-channel-peer" instead dmScope: "main", },}Nasıl çalışır
Yeni bir kullanıcı ilk DM'sini gönderdiğinde:
- Kanal benzersiz bir
agentIdüretir: varsayılan hesap içinfeishu-{user_open_id}veya adlandırılmış bir hesap için sınırlandırılmış, hesap önekli kimlik özeti workspaceTemplateyolunda yeni bir çalışma alanı oluşturur- Ajanı kaydeder ve bu kullanıcı için bir bağlama oluşturur
- Çalışma alanı yardımcısı ilk erişimde önyükleme dosyalarını (
AGENTS.md,SOUL.md,USER.mdvb.) sağlar - Bu kullanıcıdan gelen tüm gelecekteki mesajları ayrılmış ajanına yönlendirir
Yapılandırma seçenekleri
| Ayar | Açıklama | Varsayılan |
|---|---|---|
channels.feishu.dynamicAgentCreation.enabled |
Otomatik kullanıcı başına ajan oluşturmayı etkinleştir | false |
channels.feishu.dynamicAgentCreation.workspaceTemplate |
Dinamik ajan çalışma alanları için yol şablonu | ~/.openclaw/workspace-{agentId} |
channels.feishu.dynamicAgentCreation.agentDirTemplate |
Ajan dizini adı şablonu | ~/.openclaw/agents/{agentId}/agent |
channels.feishu.dynamicAgentCreation.maxAgents |
Oluşturulacak dinamik ajanların azami sayısı | sınırsız |
Şablon değişkenleri:
{agentId}- oluşturulan ajan kimliği (ör.feishu-ou_xxxxxxveyafeishu-support-<identity_digest>){userId}- gönderenin Feishu open_id değeri (ör.ou_xxxxxx)
Oturum kapsamı
session.dmScope, doğrudan mesajların ajan oturumlarına nasıl eşlendiğini denetler. Bu, tüm kanalları etkileyen genel bir ayardır.
| Değer | Davranış | En uygun kullanım |
|---|---|---|
"main" |
Her kullanıcının DM'i, ajanının ana oturumuna eşlenir | USER.md / SOUL.md dosyalarının otomatik yüklenmesini istediğiniz tek kullanıcılı botlar |
"per-channel-peer" |
Her (kanal + kullanıcı) birleşimi ayrı bir oturum alır | Daha güçlü yalıtım gerektiren herkese açık çok kullanıcılı botlar |
"per-account-channel-peer" |
Her (hesap + kanal + kullanıcı) birleşimi ayrı bir oturum alır | Hesap düzeyinde oturum yalıtımı gerektiren çok hesaplı botlar |
Ödünleşim: "main" kullanmak otomatik önyükleme dosyası yüklemesini (USER.md, SOUL.md, MEMORY.md) etkinleştirir, ancak tüm kanallardaki tüm DM'lerin aynı oturum anahtarı desenini paylaşması anlamına gelir. Yalıtımın önyükleme otomatik yüklemesinden daha önemli olduğu herkese açık çok kullanıcılı botlar için "per-channel-peer" kullanmayı ve önyükleme dosyalarını elle yönetmeyi değerlendirin.
{ session: { // For single-user personal bots: enables auto bootstrap loading dmScope: "main", // For public multi-user bots: stronger isolation // dmScope: "per-channel-peer", },}Tipik çok kullanıcılı dağıtım
{ channels: { feishu: { appId: "cli_xxx", appSecret: "xxx", dmPolicy: "open", allowFrom: ["*"], groupPolicy: "open", requireMention: true, dynamicAgentCreation: { enabled: true, workspaceTemplate: "~/.openclaw/workspace-{agentId}", agentDirTemplate: "~/.openclaw/agents/{agentId}/agent", }, }, }, session: { // Choose dmScope based on your isolation needs: // "main" for bootstrap auto-loading, "per-channel-peer" for stronger isolation dmScope: "main", }, bindings: [], // Empty - dynamic agents auto-bind}Doğrulama
Dinamik oluşturmanın çalıştığını doğrulamak için Gateway günlüklerini kontrol edin:
feishu: creating dynamic agent "feishu-ou_xxxxxx" for user ou_xxxxxxworkspace: /Users/you/.openclaw/workspace-feishu-ou_xxxxxxfeishu: dynamic agent created, new route: agent:feishu-ou_xxxxxx:mainOluşturulan tüm çalışma alanlarını listeleyin:
ls -la ~/.openclaw/workspace-*Notlar
- Çalışma alanı yalıtımı: Her kullanıcı kendi çalışma alanı dizinini ve ajan örneğini alır. Kullanıcılar normal mesajlaşma akışı içinde birbirlerinin konuşma geçmişini veya dosyalarını göremez.
- Güvenlik sınırı: Bu, düşmanca bir ortak kiracı güvenlik sınırı değil, mesajlaşma bağlamı yalıtım mekanizmasıdır. Ajan süreci ve ana makine ortamı paylaşılır.
bindingsboş olmalıdır: Dinamik ajanlar kendi bağlamalarını otomatik kaydeder- Yükseltme yolu: Mevcut elle yapılan bağlamalar dinamik ajanlarla birlikte çalışmaya devam eder
session.dmScopegeneldir: Bu yalnızca Feishu'yu değil, tüm kanalları etkiler
Yapılandırma başvurusu
Tam yapılandırma: Gateway yapılandırması
| Ayar | Açıklama | Varsayılan |
|---|---|---|
channels.feishu.enabled |
Kanalı etkinleştir/devre dışı bırak | true |
channels.feishu.domain |
API etki alanı (feishu veya lark) |
feishu |
channels.feishu.connectionMode |
Olay aktarımı (websocket veya webhook) |
websocket |
channels.feishu.defaultAccount |
Giden yönlendirme için varsayılan hesap | default |
channels.feishu.verificationToken |
Webhook modu için gerekli | - |
channels.feishu.encryptKey |
Webhook modu için gerekli | - |
channels.feishu.webhookPath |
Webhook rota yolu | /feishu/events |
channels.feishu.webhookHost |
Webhook bağlama ana makinesi | 127.0.0.1 |
channels.feishu.webhookPort |
Webhook bağlama bağlantı noktası | 3000 |
channels.feishu.accounts.<id>.appId |
Uygulama kimliği | - |
channels.feishu.accounts.<id>.appSecret |
Uygulama gizli anahtarı | - |
channels.feishu.accounts.<id>.domain |
Hesap başına etki alanı geçersiz kılma | feishu |
channels.feishu.accounts.<id>.tts |
Hesap başına TTS geçersiz kılma | messages.tts |
channels.feishu.dmPolicy |
DM ilkesi | pairing |
channels.feishu.allowFrom |
DM izin listesi (open_id listesi) | - |
channels.feishu.groupPolicy |
Grup ilkesi | allowlist |
channels.feishu.groupAllowFrom |
Grup izin listesi | - |
channels.feishu.requireMention |
Gruplarda @bahsetme gerektir | true |
channels.feishu.groups.<chat_id>.requireMention |
Grup başına @bahsetme geçersiz kılma; açık kimlikler grubu izin listesi modunda da kabul eder | devralınan |
channels.feishu.groups.<chat_id>.enabled |
Belirli bir grubu etkinleştir/devre dışı bırak | true |
channels.feishu.dynamicAgentCreation.enabled |
Otomatik kullanıcı başına ajan oluşturmayı etkinleştir | false |
channels.feishu.dynamicAgentCreation.workspaceTemplate |
Dinamik ajan çalışma alanları için yol şablonu | ~/.openclaw/workspace-{agentId} |
channels.feishu.dynamicAgentCreation.agentDirTemplate |
Ajan dizini adı şablonu | ~/.openclaw/agents/{agentId}/agent |
channels.feishu.dynamicAgentCreation.maxAgents |
Oluşturulacak dinamik ajanların azami sayısı | sınırsız |
channels.feishu.textChunkLimit |
Mesaj parçası boyutu | 2000 |
channels.feishu.mediaMaxMb |
Medya boyutu sınırı | 30 |
channels.feishu.streaming |
Akışlı kart çıktısı | true |
channels.feishu.blockStreaming |
Tamamlanmış blok yanıtı akışı | false |
channels.feishu.typingIndicator |
Yazıyor tepkileri gönder | true |
channels.feishu.resolveSenderNames |
Gönderen görünen adlarını çözümle | true |
channels.feishu.tools.bitable |
Bitable/Base araçlarını etkinleştir | true |
channels.feishu.tools.base |
channels.feishu.tools.bitable için takma ad; ikisi de ayarlandığında açık bitable kazanır |
true |
channels.feishu.accounts.<id>.tools.bitable |
Hesap başına Bitable/Base araç kapısı | devralınan |
channels.feishu.accounts.<id>.tools.base |
tools.bitable için hesap başına takma ad |
devralınan |
Desteklenen mesaj türleri
Alma
- ✅ Metin
- ✅ Zengin metin (gönderi)
- ✅ Görseller
- ✅ Dosyalar
- ✅ Ses
- ✅ Video/medya
- ✅ Çıkartmalar
Gelen Feishu/Lark ses mesajları, ham file_key JSON yerine medya yer tutucuları olarak normalleştirilir. tools.media.audio yapılandırıldığında OpenClaw sesli not kaynağını indirir ve ajan turundan önce paylaşılan ses yazıya dökme işlemini çalıştırır; böylece ajan konuşulan dökümü alır. Feishu ses yükünde döküm metnini doğrudan içeriyorsa, bu metin başka bir ASR çağrısı yapılmadan kullanılır. Bir ses yazıya dökme sağlayıcısı olmadığında ajan yine de ham Feishu kaynak yükü yerine bir <media:audio> yer tutucusu ve kaydedilmiş eki alır.
Gönderme
- ✅ Metin
- ✅ Görseller
- ✅ Dosyalar
- ✅ Ses
- ✅ Video/medya
- ✅ Etkileşimli kartlar (akış güncellemeleri dahil)
- ⚠️ Zengin metin (gönderi tarzı biçimlendirme; tam Feishu/Lark yazarlık özelliklerini desteklemez)
Yerel Feishu/Lark ses balonları, Feishu audio ileti türünü kullanır ve
Ogg/Opus yükleme medyası (file_type: "opus") gerektirir. Mevcut .opus ve .ogg medyası
doğrudan yerel ses olarak gönderilir. MP3/WAV/M4A ve diğer olası ses formatları,
yalnızca yanıt sesli teslimat istediğinde (audioAsVoice / ileti aracı asVoice, TTS sesli not
yanıtları dahil) ffmpeg ile 48kHz Ogg/Opus biçimine dönüştürülür. Sıradan MP3 ekleri normal dosyalar olarak kalır. ffmpeg eksikse veya
dönüştürme başarısız olursa, OpenClaw dosya ekine geri döner ve nedeni günlüğe kaydeder.
Konular ve yanıtlar
- ✅ Satır içi yanıtlar
- ✅ Konu yanıtları
- ✅ Medya yanıtları, bir konu iletisine yanıt verirken konu farkındalığını korur
groupSessionScope: "group_topic" ve "group_topic_sender" için yerel
Feishu/Lark konu grupları, olay thread_id değerini (omt_*) kanonik
konu oturumu anahtarı olarak kullanır. Yerel bir konu başlatıcı olayı thread_id değerini atlarsa, OpenClaw
tur yönlendirilmeden önce bunu Feishu'dan doldurur. OpenClaw'ın konuya dönüştürdüğü normal grup yanıtları,
ilk tur ve takip turu aynı oturumda kalsın diye yanıt kök ileti kimliğini (om_*) kullanmaya devam eder.
İlgili
- Kanallara Genel Bakış - desteklenen tüm kanallar
- Eşleştirme - DM kimlik doğrulaması ve eşleştirme akışı
- Gruplar - grup sohbeti davranışı ve bahsetme kapısı
- Kanal Yönlendirme - iletiler için oturum yönlendirmesi
- Güvenlik - erişim modeli ve güçlendirme