@openclaw/feishu: DM bot, obrolan grup, balasan kartu streaming, serta alat dokumen/wiki/drive/Bitable Feishu.
Status: siap produksi untuk DM bot + obrolan grup. WebSocket adalah transport peristiwa default (tidak memerlukan URL publik); mode webhook bersifat opsional.
Mulai cepat
Memerlukan OpenClaw 2026.5.29 atau lebih baru. Jalankan
openclaw --version untuk memeriksa. Tingkatkan versi dengan openclaw update.1
Jalankan wizard penyiapan kanal
@openclaw/feishu jika belum tersedia, lalu memandu proses penyiapan:- Penyiapan manual: tempelkan App ID dan App Secret dari Feishu Open Platform (
https://open.feishu.cn) atau Lark Developer (https://open.larksuite.com). - Penyiapan QR: pindai kode QR di aplikasi Feishu untuk membuat bot secara otomatis. Alur ini membatasi DM hanya untuk akun Anda sendiri (
dmPolicy: "allowlist"denganopen_idAnda).
2
Setelah penyiapan selesai, mulai ulang Gateway untuk menerapkan perubahan
Ketahanan pesan masuk
OpenClaw memasukkan envelopeim.message.receive_v1 dan drive.notice.comment_add_v1 yang telah diautentikasi ke antrean secara tahan lama sebelum pengiriman ke agen. Peristiwa yang tertunda atau dapat dicoba ulang tetap bertahan setelah Gateway dimulai ulang, tetap diserialkan per obrolan atau dokumen, dan menggunakan ID peristiwa Feishu untuk mencegah entri antrean duplikat selama catatan penyelesaian aktif atau yang dipertahankan masih ada.
Jika peristiwa WebSocket tidak dapat dipersistenkan setelah sejumlah percobaan ulang yang dibatasi, OpenClaw menutup soket tersebut dan memaksa koneksi baru yang diautentikasi, alih-alih melanjutkan setelah giliran yang belum di-commit. Jenis peristiwa Feishu lainnya, termasuk reaksi dan undangan rapat VC, menggunakan jalur peristiwa normal dan tidak mendapatkan jaminan antrean tahan lama ini.
Kontrol akses
Pesan langsung
Konfigurasikanchannels.feishu.dmPolicy (default: pairing) untuk mengontrol siapa yang dapat mengirim DM kepada bot:
Setujui permintaan pemasangan:
Obrolan grup
Kebijakan grup (channels.feishu.groupPolicy, default: allowlist):
Persyaratan penyebutan (
channels.feishu.requireMention):
- Default: @mention diperlukan, kecuali jika kebijakan grup efektif adalah
"open"; dalam kondisi tersebut, nilai default-nya adalahfalseagar pesan yang tidak dapat menyertakan penyebutan (misalnya gambar) tetap sampai ke agen. - Tetapkan
trueataufalsesecara eksplisit untuk menggantinya; penggantian per grup:channels.feishu.groups.<chat_id>.requireMention. @alldan@_allyang hanya untuk siaran tidak dianggap sebagai penyebutan bot. Pesan yang menyebut@allsekaligus bot secara langsung tetap dihitung sebagai penyebutan bot.
Contoh konfigurasi grup
Izinkan semua grup tanpa memerlukan @mention
Izinkan semua grup, tetapi tetap wajibkan @mention
Hanya izinkan grup tertentu
allowlist, Anda juga dapat mengizinkan grup dengan menambahkan entri groups.<chat_id> eksplisit. Entri eksplisit tidak menggantikan groupPolicy: "disabled". Default wildcard di bawah groups.* mengonfigurasi grup yang cocok, tetapi tidak mengizinkan grup dengan sendirinya.
Batasi pengirim dalam grup
channels.feishu.groupSenderAllowFrom menetapkan daftar izin pengirim yang sama untuk semua grup; allowFrom per grup memiliki prioritas.
Pesan yang dibuat oleh bot
Secara default, Feishu mengabaikan pesan yang dibuat oleh bot lain. Untuk mengizinkan percakapan grup antarbot, berikan cakupanim:message.group_at_msg.include_bot:readonly dan im:message:readonly kepada aplikasi, lalu tetapkan allowBots:
channels.defaults.botLoopProtection.
Mendapatkan ID grup/pengguna
ID grup (chat_id, format: oc_xxx)
Buka grup di Feishu/Lark, klik ikon menu di sudut kanan atas, lalu buka Settings. ID grup (chat_id) tercantum di halaman pengaturan.

ID pengguna (open_id, format: ou_xxx)
Mulai Gateway, kirim DM kepada bot, lalu periksa log:
open_id dalam keluaran log. Anda juga dapat memeriksa permintaan pemasangan yang tertunda:
Perintah umum
Feishu/Lark tidak mendukung menu perintah garis miring native, jadi kirimkan perintah ini sebagai pesan teks biasa.
Pemecahan masalah
Bot tidak merespons dalam obrolan grup
- Pastikan bot telah ditambahkan ke grup
- Pastikan Anda @mention bot (diwajibkan secara default)
- Verifikasikan bahwa
groupPolicybukan"disabled" - Periksa log:
openclaw logs --follow
Bot tidak menerima pesan
- Pastikan bot telah dipublikasikan dan disetujui di Feishu Open Platform / Lark Developer
- Pastikan langganan peristiwa menyertakan
im.message.receive_v1 - Untuk bergabung otomatis dengan undangan rapat, langgani juga
vc.bot.meeting_invited_v1 - Pastikan persistent connection (WebSocket) dipilih
- Pastikan semua cakupan izin yang diperlukan telah diberikan
- Pastikan Gateway sedang berjalan:
openclaw gateway status - Periksa log:
openclaw logs --follow
vc.bot.meeting_invited_v1 hanya mengirimkan peristiwa. Bergabung otomatis
dinonaktifkan secara default. Untuk mengaktifkannya secara global:
vc:meeting.bot.join:write. Sebagai contoh, skill agen VC lark-cli resmi
menyediakan vc +meeting-join.
Penyiapan QR tidak merespons di aplikasi seluler Feishu
- Jalankan kembali penyiapan:
openclaw channels login --channel feishu - Pilih penyiapan manual
- Di Feishu Open Platform, buat aplikasi mandiri lalu salin App ID dan App Secret-nya
- Tempelkan kredensial tersebut ke wizard penyiapan
App Secret bocor
- Atur ulang App Secret di Feishu Open Platform / Lark Developer
- Perbarui nilainya dalam konfigurasi Anda
- Mulai ulang Gateway:
openclaw gateway restart
Konfigurasi lanjutan
Beberapa akun
defaultAccount mengontrol akun yang digunakan ketika API keluar tidak menentukan accountId. Entri akun mewarisi pengaturan tingkat teratas; sebagian besar kunci tingkat teratas dapat diganti per akun.
accounts.<id>.tts menggunakan bentuk yang sama seperti messages.tts dan melakukan deep merge terhadap konfigurasi TTS global, sehingga penyiapan Feishu dengan beberapa bot dapat mempertahankan kredensial penyedia bersama secara global sambil hanya mengganti suara, model, persona, atau mode otomatis per akun.
Batas pesan
textChunkLimit- ukuran potongan teks keluar (default:4000karakter)streaming.chunkMode-"length"(default) membagi pada batas;"newline"mengutamakan batas baris barumediaMaxMb- batas unggah/unduh media (default:30MB)
Streaming
Feishu/Lark mendukung balasan streaming melalui kartu interaktif (API streaming Card Kit). Ketika diaktifkan, bot memperbarui kartu secara waktu nyata saat menghasilkan teks.streaming.mode: "off" untuk mengirim balasan lengkap dalam satu pesan; renderMode: "raw" (teks biasa alih-alih kartu) juga menonaktifkan kartu streaming. streaming.block.enabled dinonaktifkan secara default; aktifkan hanya jika Anda ingin blok asisten yang telah selesai dikirim sebelum balasan akhir. Boolean lama streaming serta kunci datar blockStreaming / blockStreamingCoalesce / chunkMode dimigrasikan ke bentuk bertingkat ini melalui openclaw doctor --fix.
Pengoptimalan kuota
Kurangi jumlah panggilan API Feishu/Lark dengan dua flag opsional:typingIndicator(defaulttrue): aturfalseuntuk melewati panggilan reaksi mengetikresolveSenderNames(defaulttrue): aturfalseuntuk melewati pencarian profil pengirim
Cakupan sesi grup dan utas topik
channels.feishu.groupSessionScope (tingkat teratas, per akun, atau per grup) mengontrol cara pesan grup dipetakan ke sesi agen:
Untuk cakupan topik, grup topik asli Feishu/Lark menggunakan peristiwa
thread_id (omt_*) sebagai kunci sesi topik kanonis. Jika peristiwa pembuka topik asli tidak menyertakan thread_id, OpenClaw mengambilnya dari Feishu sebelum merutekan giliran. Balasan grup biasa yang diubah OpenClaw menjadi utas tetap menggunakan ID pesan akar balasan (om_*) agar giliran pertama dan giliran lanjutan tetap berada dalam sesi yang sama.
Atur replyInThread: "enabled" (tingkat teratas atau per grup) agar balasan bot membuat atau melanjutkan utas topik Feishu alih-alih membalas sebaris. topicSessionMode adalah pendahulu groupSessionScope yang sudah tidak digunakan; utamakan groupSessionScope.
Alat ruang kerja Feishu
Plugin ini menyediakan alat agen untuk dokumen, percakapan, basis pengetahuan, penyimpanan cloud, izin, dan Bitable Feishu, serta skill yang sesuai (feishu-doc, feishu-drive, feishu-perm, feishu-wiki). Kelompok alat dikendalikan oleh channels.feishu.tools:
tools.base adalah alias untuk tools.bitable; nilai eksplisit bitable diprioritaskan jika keduanya ditetapkan. Pengendali per akun berada di bawah accounts.<id>.tools.
Berikan drive:drive.metadata:readonly untuk pencarian langsung feishu_drive info di luar direktori
akar, kecuali aplikasi sudah memiliki cakupan penuh drive:drive. Tanpa salah satu cakupan tersebut, info
tetap menyediakan pencarian direktori akar lama melalui drive:drive:readonly.
Sesi ACP
Feishu/Lark mendukung ACP untuk DM dan pesan utas grup. ACP Feishu/Lark dikendalikan oleh perintah teks—tidak ada menu perintah garis miring asli, jadi gunakan pesan/acp ... secara langsung dalam percakapan.
Pengikatan ACP persisten
Membuat ACP dari percakapan
Dalam DM atau utas Feishu/Lark:--thread here berfungsi untuk DM dan pesan utas Feishu/Lark. Pesan lanjutan dalam percakapan yang terikat dirutekan langsung ke sesi ACP tersebut.
Perutean multiagen
Gunakanbindings untuk merutekan DM atau grup Feishu/Lark ke agen yang berbeda.
match.channel:"feishu"match.peer.kind:"direct"(DM) atau"group"(percakapan grup)match.peer.id: Open ID pengguna (ou_xxx) atau ID grup (oc_xxx)
Isolasi agen per pengguna (Pembuatan Agen Dinamis)
AktifkandynamicAgentCreation untuk secara otomatis membuat instans agen terisolasi bagi setiap pengguna DM. Setiap pengguna mendapatkan:
- Direktori ruang kerja independen
USER.md/SOUL.md/MEMORY.mdterpisah- Riwayat percakapan privat
- Skill dan status terisolasi
Pengikatan dinamis menyertakan
accountId Feishu yang dinormalisasi, sehingga akun default dan akun bernama merutekan setiap pengirim ke agen dinamis yang tepat.Jika akun bernama membuat agen dinamis tanpa cakupan pada rilis lama, agen lama tersebut tetap diperhitungkan dalam maxAgents. Pastikan agen itu tidak digunakan oleh akun default sebelum menghapusnya, atau tingkatkan sementara maxAgents; OpenClaw tidak dapat menyimpulkan dengan aman akun mana yang memiliki status lama yang ambigu.Penyiapan cepat
Cara kerjanya
Saat pengguna baru mengirim DM pertama mereka:- Saluran menghasilkan
agentIdunik:feishu-{user_open_id}untuk akun default, atau ringkasan identitas terbatas yang diawali akun untuk akun bernama - Membuat ruang kerja baru pada jalur
workspaceTemplate - Mendaftarkan agen dan membuat pengikatan untuk pengguna ini
- Pembantu ruang kerja memastikan berkas bootstrap (
AGENTS.md,SOUL.md,USER.md, dan sebagainya) tersedia pada akses pertama - Merutekan semua pesan mendatang dari pengguna ini ke agen khusus mereka
Opsi konfigurasi
Variabel templat:
{agentId}- ID agen yang dihasilkan (misalnya,feishu-ou_xxxxxxataufeishu-support-<identity_digest>){userId}- open_id Feishu milik pengirim (misalnya,ou_xxxxxx)
Cakupan sesi
session.dmScope mengontrol cara pesan langsung dipetakan ke sesi agen. Ini adalah pengaturan global yang memengaruhi semua saluran.
Kompromi: Menggunakan
"main" mengaktifkan pemuatan otomatis berkas bootstrap (USER.md, SOUL.md, MEMORY.md), tetapi berarti semua DM di semua saluran menggunakan pola kunci sesi yang sama. Untuk bot publik multi-pengguna yang lebih mengutamakan isolasi daripada pemuatan otomatis bootstrap, pertimbangkan "per-channel-peer" dan kelola berkas bootstrap secara manual.
Gunakan
"per-account-channel-peer" jika akun Feishu bernama harus mempertahankan sesi terpisah untuk pengirim yang sama. Pengikatan dinamis mempertahankan cakupan akun.Penerapan multi-pengguna umum
Verifikasi
Periksa log Gateway untuk memastikan pembuatan dinamis berfungsi:Catatan
- Isolasi ruang kerja: Setiap pengguna mendapatkan direktori ruang kerja dan instans agen masing-masing. Pengguna tidak dapat melihat riwayat percakapan atau berkas pengguna lain dalam alur perpesanan normal.
- Batas keamanan: Ini adalah mekanisme isolasi konteks perpesanan, bukan batas keamanan antarpenyewa yang bermusuhan. Proses agen dan lingkungan host digunakan bersama.
- Penulisan konfigurasi harus tetap diaktifkan: Pembuatan agen dinamis menulis agen dan pengikatan ke dalam konfigurasi; proses ini dilewati jika
channels.feishu.configWritesbernilaifalse(default: diaktifkan). bindingsharus kosong: Agen dinamis mendaftarkan pengikatannya sendiri secara otomatis- Jalur peningkatan: Pengikatan manual yang sudah ada tetap berfungsi bersama agen dinamis
session.dmScopebersifat global: Ini memengaruhi semua kanal, bukan hanya Feishu
Referensi konfigurasi
Konfigurasi lengkap: Konfigurasi GatewayJenis pesan yang didukung
Terima
- ✅ Teks
- ✅ Teks kaya (postingan)
- ✅ Gambar
- ✅ Berkas
- ✅ Audio
- ✅ Video/media
- ✅ Stiker
file_key mentah. Ketika tools.media.audio dikonfigurasi, OpenClaw
mengunduh sumber catatan suara dan menjalankan transkripsi audio bersama sebelum
giliran agen, sehingga agen menerima transkrip ucapan. Jika Feishu menyertakan
teks transkrip secara langsung dalam payload audio, teks tersebut digunakan tanpa
panggilan ASR lain. Tanpa penyedia transkripsi audio, agen tetap menerima
placeholder <media:audio> beserta lampiran yang disimpan, bukan payload
sumber daya Feishu mentah.
Kirim
- ✅ Teks
- ✅ Gambar
- ✅ Berkas
- ✅ Audio
- ✅ Video/media
- ✅ Kartu interaktif (termasuk pembaruan streaming)
- ⚠️ Teks kaya (pemformatan bergaya postingan; tidak mendukung kemampuan penulisan Feishu/Lark secara lengkap)
audio dan memerlukan
media unggahan Ogg/Opus (file_type: "opus"). Media .opus dan .ogg yang ada
dikirim langsung sebagai audio native. MP3/WAV/M4A dan format lain yang kemungkinan merupakan audio
ditranskode menjadi Ogg/Opus 48kHz dengan ffmpeg hanya ketika balasan meminta pengiriman
suara (audioAsVoice / alat pesan asVoice, termasuk balasan catatan suara TTS).
Lampiran MP3 biasa tetap menjadi file biasa. Jika ffmpeg tidak tersedia atau
konversi gagal, OpenClaw beralih ke lampiran file dan mencatat alasannya dalam log.
Utas dan balasan
- ✅ Balasan sebaris
- ✅ Balasan utas
- ✅ Balasan media tetap mempertimbangkan utas saat membalas pesan utas
Terkait
- Ikhtisar Saluran - semua saluran yang didukung
- Pemasangan - autentikasi DM dan alur pemasangan
- Grup - perilaku obrolan grup dan pembatasan berdasarkan sebutan
- Perutean Saluran - perutean sesi untuk pesan
- Keamanan - model akses dan penguatan