Langsung ke konten utama

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

Feishu/Lark adalah platform kolaborasi serba ada tempat tim mengobrol, berbagi dokumen, mengelola kalender, dan menyelesaikan pekerjaan bersama. Status: siap produksi untuk DM bot + chat grup. WebSocket adalah mode default; mode Webhook bersifat opsional.

Mulai cepat

Memerlukan OpenClaw 2026.4.25 atau lebih baru. Jalankan openclaw --version untuk memeriksa. Tingkatkan dengan openclaw update.
1

Jalankan wizard penyiapan channel

openclaw channels login --channel feishu
Pilih penyiapan manual untuk menempelkan App ID dan App Secret dari Feishu Open Platform, atau pilih penyiapan QR untuk membuat bot secara otomatis. Jika aplikasi seluler Feishu domestik tidak bereaksi terhadap kode QR, jalankan ulang penyiapan dan pilih penyiapan manual.
2

Setelah penyiapan selesai, mulai ulang gateway untuk menerapkan perubahan

openclaw gateway restart

Kontrol akses

Pesan langsung

Konfigurasikan dmPolicy untuk mengontrol siapa yang dapat mengirim DM ke bot:
  • "pairing" - pengguna tidak dikenal menerima kode pairing; setujui melalui CLI
  • "allowlist" - hanya pengguna yang tercantum di allowFrom yang dapat chat (default: hanya pemilik bot)
  • "open" - izinkan DM publik hanya ketika allowFrom menyertakan "*"; dengan entri terbatas, hanya pengguna yang cocok yang dapat chat
  • "disabled" - nonaktifkan semua DM
Setujui permintaan pairing:
openclaw pairing list feishu
openclaw pairing approve feishu <CODE>

Chat grup

Kebijakan grup (channels.feishu.groupPolicy):
NilaiPerilaku
"open"Merespons semua pesan di grup
"allowlist"Hanya merespons grup dalam groupAllowFrom atau yang dikonfigurasi eksplisit di groups.<chat_id>
"disabled"Menonaktifkan semua pesan grup; entri eksplisit groups.<chat_id> tidak menimpa ini
Default: allowlist Persyaratan mention (channels.feishu.requireMention):
  • true - wajib @mention (default)
  • false - respons tanpa @mention
  • Override per grup: channels.feishu.groups.<chat_id>.requireMention
  • @all dan @_all yang hanya untuk broadcast tidak dianggap sebagai mention bot. Pesan yang menyebut @all sekaligus bot secara langsung tetap dihitung sebagai mention bot.

Contoh konfigurasi grup

Izinkan semua grup, tanpa perlu @mention

{
  channels: {
    feishu: {
      groupPolicy: "open",
    },
  },
}

Izinkan semua grup, tetap wajib @mention

{
  channels: {
    feishu: {
      groupPolicy: "open",
      requireMention: true,
    },
  },
}

Izinkan hanya grup tertentu

{
  channels: {
    feishu: {
      groupPolicy: "allowlist",
      // Group IDs look like: oc_xxx
      groupAllowFrom: ["oc_xxx", "oc_yyy"],
    },
  },
}
Dalam mode allowlist, Anda juga dapat mengizinkan grup dengan menambahkan entri eksplisit groups.<chat_id>. Entri eksplisit tidak menimpa groupPolicy: "disabled". Default wildcard di bawah groups.* mengonfigurasi grup yang cocok, tetapi tidak mengizinkan grup dengan sendirinya.
{
  channels: {
    feishu: {
      groupPolicy: "allowlist",
      groups: {
        oc_xxx: {
          requireMention: false,
        },
      },
    },
  },
}

Batasi pengirim dalam grup

{
  channels: {
    feishu: {
      groupPolicy: "allowlist",
      groupAllowFrom: ["oc_xxx"],
      groups: {
        oc_xxx: {
          // User open_ids look like: ou_xxx
          allowFrom: ["ou_user1", "ou_user2"],
        },
      },
    },
  },
}

Dapatkan 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. Dapatkan ID Grup

ID pengguna (open_id, format: ou_xxx)

Mulai gateway, kirim DM ke bot, lalu periksa log:
openclaw logs --follow
Cari open_id dalam output log. Anda juga dapat memeriksa permintaan pairing yang tertunda:
openclaw pairing list feishu

Perintah umum

PerintahDeskripsi
/statusTampilkan status bot
/resetReset sesi saat ini
/modelTampilkan atau ganti model AI
Feishu/Lark tidak mendukung menu slash-command native, jadi kirim ini sebagai pesan teks biasa.

Pemecahan masalah

Bot tidak merespons di chat grup

  1. Pastikan bot ditambahkan ke grup
  2. Pastikan Anda @mention bot (wajib secara default)
  3. Verifikasi groupPolicy bukan "disabled"
  4. Periksa log: openclaw logs --follow

Bot tidak menerima pesan

  1. Pastikan bot sudah dipublikasikan dan disetujui di Feishu Open Platform / Lark Developer
  2. Pastikan langganan event menyertakan im.message.receive_v1
  3. Pastikan persistent connection (WebSocket) dipilih
  4. Pastikan semua cakupan izin yang diperlukan diberikan
  5. Pastikan gateway berjalan: openclaw gateway status
  6. Periksa log: openclaw logs --follow

Penyiapan QR tidak bereaksi di aplikasi seluler Feishu

  1. Jalankan ulang penyiapan: openclaw channels login --channel feishu
  2. Pilih penyiapan manual
  3. Di Feishu Open Platform, buat aplikasi self-built dan salin App ID serta App Secret-nya
  4. Tempel kredensial tersebut ke wizard penyiapan

App Secret bocor

  1. Reset App Secret di Feishu Open Platform / Lark Developer
  2. Perbarui nilai dalam konfigurasi Anda
  3. Mulai ulang gateway: openclaw gateway restart

Konfigurasi lanjutan

Beberapa akun

{
  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 mengontrol akun mana yang digunakan ketika API keluar tidak menentukan accountId. accounts.<id>.tts menggunakan bentuk yang sama seperti messages.tts dan melakukan deep-merge di atas konfigurasi TTS global, sehingga penyiapan Feishu multi-bot dapat menyimpan kredensial penyedia bersama secara global sambil hanya meng-override suara, model, persona, atau mode otomatis per akun.

Batas pesan

  • textChunkLimit - ukuran potongan teks keluar (default: 2000 karakter)
  • mediaMaxMb - batas unggah/unduh media (default: 30 MB)

Streaming

Feishu/Lark mendukung balasan streaming melalui kartu interaktif. Saat diaktifkan, bot memperbarui kartu secara real time ketika menghasilkan teks.
{
  channels: {
    feishu: {
      streaming: true, // enable streaming card output (default: true)
      blockStreaming: true, // opt into completed-block streaming
    },
  },
}
Atur streaming: false untuk mengirim balasan lengkap dalam satu pesan. blockStreaming nonaktif secara default; aktifkan hanya ketika Anda ingin blok assistant yang sudah selesai dikirim sebelum balasan final.

Optimalisasi kuota

Kurangi jumlah panggilan API Feishu/Lark dengan dua flag opsional:
  • typingIndicator (default true): atur false untuk melewati panggilan reaksi mengetik
  • resolveSenderNames (default true): atur false untuk melewati lookup profil pengirim
{
  channels: {
    feishu: {
      typingIndicator: false,
      resolveSenderNames: false,
    },
  },
}

Sesi ACP

Feishu/Lark mendukung ACP untuk DM dan pesan thread grup. ACP Feishu/Lark dikendalikan oleh perintah teks - tidak ada menu slash-command native, jadi gunakan pesan /acp ... langsung dalam percakapan.

Binding ACP persisten

{
  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" },
    },
  ],
}

Spawn ACP dari chat

Dalam DM atau thread Feishu/Lark:
/acp spawn codex --thread here
--thread here berfungsi untuk DM dan pesan thread Feishu/Lark. Pesan lanjutan dalam percakapan yang terikat dirutekan langsung ke sesi ACP tersebut.

Routing multi-agent

Gunakan bindings untuk merutekan DM atau grup Feishu/Lark ke agent yang berbeda.
{
  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" },
      },
    },
  ],
}
Field routing:
  • match.channel: "feishu"
  • match.peer.kind: "direct" (DM) atau "group" (chat grup)
  • match.peer.id: Open ID pengguna (ou_xxx) atau ID grup (oc_xxx)
Lihat Dapatkan ID grup/pengguna untuk tips lookup.

Referensi konfigurasi

Konfigurasi lengkap: Konfigurasi Gateway
PengaturanDeskripsiDefault
channels.feishu.enabledAktifkan/nonaktifkan channeltrue
channels.feishu.domainDomain API (feishu atau lark)feishu
channels.feishu.connectionModeTransport peristiwa (websocket atau webhook)websocket
channels.feishu.defaultAccountAkun default untuk perutean keluardefault
channels.feishu.verificationTokenWajib untuk mode webhook-
channels.feishu.encryptKeyWajib untuk mode webhook-
channels.feishu.webhookPathJalur rute webhook/feishu/events
channels.feishu.webhookHostHost bind webhook127.0.0.1
channels.feishu.webhookPortPort bind webhook3000
channels.feishu.accounts.<id>.appIdID aplikasi-
channels.feishu.accounts.<id>.appSecretRahasia aplikasi-
channels.feishu.accounts.<id>.domainOverride domain per akunfeishu
channels.feishu.accounts.<id>.ttsOverride TTS per akunmessages.tts
channels.feishu.dmPolicyKebijakan DMallowlist
channels.feishu.allowFromDaftar allowlist DM (daftar open_id)[BotOwnerId]
channels.feishu.groupPolicyKebijakan grupallowlist
channels.feishu.groupAllowFromDaftar allowlist grup-
channels.feishu.requireMentionWajibkan @mention di gruptrue
channels.feishu.groups.<chat_id>.requireMentionOverride @mention per grup; ID eksplisit juga mengizinkan grup dalam mode allowlistinherited
channels.feishu.groups.<chat_id>.enabledAktifkan/nonaktifkan grup tertentutrue
channels.feishu.textChunkLimitUkuran potongan pesan2000
channels.feishu.mediaMaxMbBatas ukuran media30
channels.feishu.streamingOutput kartu streamingtrue
channels.feishu.blockStreamingStreaming balasan blok selesaifalse
channels.feishu.typingIndicatorKirim reaksi mengetiktrue
channels.feishu.resolveSenderNamesResolve nama tampilan pengirimtrue

Jenis pesan yang didukung

Terima

  • ✅ Teks
  • ✅ Teks kaya (post)
  • ✅ Gambar
  • ✅ File
  • ✅ Audio
  • ✅ Video/media
  • ✅ Stiker
Pesan audio Feishu/Lark yang masuk dinormalisasi sebagai placeholder media, bukan JSON file_key mentah. Saat tools.media.audio dikonfigurasi, OpenClaw mengunduh resource catatan suara dan menjalankan transkripsi audio bersama sebelum giliran agen, sehingga agen menerima transkrip ucapan. Jika Feishu menyertakan teks transkrip langsung dalam payload audio, teks tersebut digunakan tanpa panggilan ASR lain. Tanpa penyedia transkripsi audio, agen tetap menerima placeholder <media:audio> plus lampiran yang disimpan, bukan payload resource Feishu mentah.

Kirim

  • ✅ Teks
  • ✅ Gambar
  • ✅ File
  • ✅ Audio
  • ✅ Video/media
  • ✅ Kartu interaktif (termasuk pembaruan streaming)
  • ⚠️ Teks kaya (pemformatan bergaya post; tidak mendukung kemampuan penulisan Feishu/Lark penuh)
Bubble audio native Feishu/Lark menggunakan jenis pesan audio Feishu dan memerlukan media unggahan Ogg/Opus (file_type: "opus"). Media .opus dan .ogg yang sudah ada dikirim langsung sebagai audio native. MP3/WAV/M4A dan format lain yang kemungkinan audio ditranskode ke Ogg/Opus 48kHz dengan ffmpeg hanya ketika balasan meminta pengiriman suara (audioAsVoice / message tool asVoice, termasuk balasan catatan suara TTS). Lampiran MP3 biasa tetap menjadi file reguler. Jika ffmpeg tidak tersedia atau konversi gagal, OpenClaw beralih ke lampiran file dan mencatat alasannya di log.

Thread dan balasan

  • ✅ Balasan inline
  • ✅ Balasan thread
  • ✅ Balasan media tetap sadar thread saat membalas pesan thread
Untuk groupSessionScope: "group_topic" dan "group_topic_sender", grup topik native Feishu/Lark menggunakan thread_id peristiwa (omt_*) sebagai kunci sesi topik kanonis. Jika peristiwa pembuka topik native tidak menyertakan thread_id, OpenClaw menghidrasinya dari Feishu sebelum merutekan giliran. Balasan grup normal yang diubah OpenClaw menjadi thread tetap menggunakan ID pesan root balasan (om_*) sehingga giliran pertama dan giliran lanjutan tetap berada dalam sesi yang sama.

Terkait