Regional platforms
Feishu
OpenClaw は、公式 @openclaw/feishu Plugin を通じて Feishu/Lark(オールインワンのコラボレーションプラットフォーム)に接続します。ボットとの DM、グループチャット、ストリーミングカード応答、Feishu のドキュメント/wiki/ドライブ/Bitable ツールを利用できます。
ステータス: ボットとの DM とグループチャットにおいて本番環境で使用可能です。デフォルトのイベント転送方式は WebSocket(公開 URL は不要)で、Webhook モードは任意です。
クイックスタート
チャネル設定ウィザードを実行する
openclaw channels login --channel feishu@openclaw/feishu Plugin がない場合はインストールされ、その後、設定が順に案内されます。
- 手動設定: Feishu Open Platform(
https://open.feishu.cn)または Lark Developer(https://open.larksuite.com)から取得した App ID と App Secret を貼り付けます。 - QR 設定: Feishu アプリで QR コードをスキャンし、ボットを自動作成します。このフローでは、DM が自分のアカウント(自分の
open_idを指定したdmPolicy: "allowlist")に限定されます。
ウィザードでは、API ドメイン(Feishu または Lark)とグループポリシーについても確認されます。中国国内版 Feishu モバイルアプリで QR コードに反応しない場合は、設定を再実行して手動設定を選択してください。
設定完了後、変更を適用するために Gateway を再起動する
openclaw gateway restart受信イベントの耐久性
OpenClaw は、認証済みの im.message.receive_v1 および drive.notice.comment_add_v1 エンベロープを、エージェントへのディスパッチ前に永続キューへ登録します。保留中または再試行可能なイベントは Gateway の再起動後も維持され、チャットまたはドキュメント単位で直列化されたまま処理されます。また、アクティブな完了記録または保持されている完了記録が存在する間は、Feishu のイベント ID を使用してキューへの重複登録を抑止します。
制限付き再試行後も WebSocket イベントを永続化できない場合、OpenClaw は未コミットのターンを飛ばして処理を続行せず、そのソケットを閉じて新しい認証済み接続を強制します。リアクションや VC 会議への招待を含むその他の Feishu イベントタイプは通常のイベント経路を使用するため、この永続キューの保証は適用されません。
アクセス制御
ダイレクトメッセージ
ボットに DM を送信できるユーザーを制御するには、channels.feishu.dmPolicy(デフォルト: pairing)を設定します。
| 値 | 動作 |
|---|---|
"pairing" |
未知のユーザーにはペアリングコードが送信され、CLI で承認します |
"allowlist" |
allowFrom に記載されているユーザーのみチャットできます |
"open" |
DM を公開します。設定検証では、allowFrom に "*" が含まれている必要があります。ワイルドカード以外のエントリによって、アクセスは引き続き制限されます |
ペアリング要求を承認する:
openclaw pairing list feishuopenclaw pairing approve feishu <CODE>グループチャット
グループポリシー(channels.feishu.groupPolicy、デフォルト: allowlist):
| 値 | 動作 |
|---|---|
"open" |
グループ内のすべてのメッセージに応答します |
"allowlist" |
groupAllowFrom に含まれるグループ、または groups.<chat_id> で明示的に設定されたグループにのみ応答します |
"disabled" |
すべてのグループメッセージを無効にします。明示的な groups.<chat_id> エントリでも上書きできません |
メンション要件(channels.feishu.requireMention):
- デフォルトでは @メンションが必要です。ただし、有効なグループポリシーが
"open"の場合は、メンションを付けられないメッセージ(画像など)もエージェントに届くよう、デフォルトがfalseになります。 - 上書きするには、
trueまたはfalseを明示的に設定します。グループ単位で上書きするには、channels.feishu.groups.<chat_id>.requireMentionを使用します。 - ブロードキャスト専用の
@allおよび@_allは、ボットへのメンションとして扱われません。@allとボットの両方を直接メンションしたメッセージは、引き続きボットへのメンションとして扱われます。
グループ設定の例
すべてのグループを許可し、@メンションを不要にする
{ channels: { feishu: { groupPolicy: "open", // "open" では requireMention のデフォルトは false }, },}すべてのグループを許可し、引き続き @メンションを必須にする
{ channels: { feishu: { groupPolicy: "open", requireMention: true, }, },}特定のグループのみを許可する
{ channels: { feishu: { groupPolicy: "allowlist", // グループ ID の形式: oc_xxx groupAllowFrom: ["oc_xxx", "oc_yyy"], }, },}allowlist モードでは、明示的な groups.<chat_id> エントリを追加してグループを許可することもできます。明示的なエントリでも groupPolicy: "disabled" は上書きされません。groups.* のワイルドカードデフォルトは一致するグループを設定しますが、それだけでグループが許可されるわけではありません。
{ channels: { feishu: { groupPolicy: "allowlist", groups: { oc_xxx: { requireMention: false, }, }, }, },}グループ内の送信者を制限する
{ channels: { feishu: { groupPolicy: "allowlist", groupAllowFrom: ["oc_xxx"], groups: { oc_xxx: { // ユーザーの open_id の形式: ou_xxx allowFrom: ["ou_user1", "ou_user2"], }, }, }, },}channels.feishu.groupSenderAllowFrom は、すべてのグループに同じ送信者許可リストを設定します。グループ単位の allowFrom が優先されます。
ボットが作成したメッセージ
Feishu は、デフォルトで他のボットが作成したメッセージを無視します。ボット間のグループ会話を許可するには、アプリに im:message.group_at_msg.include_bot:readonly および im:message:readonly スコープを付与してから、allowBots を設定します。
{ channels: { feishu: { allowBots: true, }, },}Feishu がボット作成のグループイベントを配信するのは、別のボットがこのボットをメンションした場合のみです。既存のグループポリシー、送信者許可リスト、メンション要件は引き続き適用されます。OpenClaw は自身が作成したメッセージを破棄し、すべてのテキスト応答またはカード応答で相手のボットをメンションし、共通の channels.defaults.botLoopProtection ガードを適用します。
グループ ID/ユーザー ID を取得する
グループ ID(chat_id、形式: oc_xxx)
Feishu/Lark でグループを開き、右上のメニューアイコンをクリックして、Settings に移動します。グループ ID(chat_id)は設定ページに表示されます。

ユーザー ID(open_id、形式: ou_xxx)
Gateway を起動してボットに DM を送信し、ログを確認します。
openclaw logs --followログ出力で open_id を探します。保留中のペアリング要求を確認することもできます。
openclaw pairing list feishuよく使用するコマンド
| コマンド | 説明 |
|---|---|
/status |
ボットのステータスを表示します |
/reset |
現在のセッションをリセットします |
/model |
AI モデルを表示または切り替えます |
トラブルシューティング
ボットがグループチャットで応答しない
- ボットがグループに追加されていることを確認します
- ボットを @メンションしていることを確認します(デフォルトで必須)
groupPolicyが"disabled"ではないことを確認します- ログを確認します:
openclaw logs --follow
ボットがメッセージを受信しない
- ボットが Feishu Open Platform / Lark Developer で公開および承認されていることを確認します
- イベントサブスクリプションに
im.message.receive_v1が含まれていることを確認します - 会議招待への自動参加を使用する場合は、
vc.bot.meeting_invited_v1もサブスクライブします - persistent connection(WebSocket)が選択されていることを確認します
- 必要なすべての権限スコープが付与されていることを確認します
- Gateway が実行中であることを確認します:
openclaw gateway status - ログを確認します:
openclaw logs --follow
vc.bot.meeting_invited_v1 をサブスクライブしても、イベントが配信されるだけです。自動参加は
デフォルトで無効です。すべてのアカウントで有効にするには、次のように設定します。
{ channels: { feishu: { vcAutoJoin: true, }, },}1 つのアカウントだけで有効にするには、トップレベルの切り替えを省略し、アカウントの上書きを設定します。
{ channels: { feishu: { accounts: { meetings: { vcAutoJoin: true }, }, }, },}エージェントが参加ターンを受信する前に、招待者には通常の Feishu DM ポリシー、許可リスト/ペアリング、セッション、応答
ルーティングが引き続き適用されます。参加には、アプリのアイデンティティ用に設定され、かつ
vc:meeting.bot.join:write スコープを持つ利用可能な Feishu VC 参加
ツールも必要です。たとえば、公式の
lark-cli VC エージェント skill
は vc +meeting-join を提供します。
Feishu モバイルアプリで QR 設定に反応しない
- 設定を再実行します:
openclaw channels login --channel feishu - 手動設定を選択します
- Feishu Open Platform で自社開発アプリを作成し、その App ID と App Secret をコピーします
- それらの認証情報を設定ウィザードに貼り付けます
App Secret が漏えいした
- Feishu Open Platform / Lark Developer で App Secret をリセットします
- 設定内の値を更新します
- Gateway を再起動します:
openclaw gateway restart
高度な設定
複数のアカウント
{ channels: { feishu: { defaultAccount: "main", accounts: { main: { appId: "cli_xxx", appSecret: "xxx", name: "プライマリボット", tts: { providers: { openai: { voice: "shimmer" }, }, }, }, backup: { appId: "cli_yyy", appSecret: "yyy", name: "バックアップボット", enabled: false, }, }, }, },}defaultAccount は、送信 API で accountId が指定されていない場合に使用するアカウントを制御します。アカウントエントリはトップレベルの設定を継承し、ほとんどのトップレベルキーはアカウント単位で上書きできます。
accounts.<id>.tts は tts と同じ形式を使用し、グローバル TTS 設定に対してディープマージされます。そのため、複数ボットの Feishu 設定では、共有するプロバイダー認証情報をグローバルに保持しながら、音声、モデル、ペルソナ、または自動モードのみをアカウント単位で上書きできます。
メッセージの制限
textChunkLimit- 送信テキストのチャンクサイズ(デフォルト:4000文字)streaming.chunkMode-"length"(デフォルト)は上限で分割し、"newline"は改行位置を優先しますmediaMaxMb- メディアのアップロード/ダウンロード上限(デフォルト:30MB)
ストリーミング
Feishu/Lark は、インタラクティブカード(Card Kit ストリーミング API)によるストリーミング応答をサポートしています。有効にすると、ボットはテキストの生成中にカードをリアルタイムで更新します。
{ channels: { feishu: { streaming: { mode: "partial", // ストリーミングカード出力(デフォルト: "partial") block: { enabled: true }, // 完了ブロックのストリーミングを有効にする }, }, },}streaming.mode: "off" を設定すると、返信全体が 1 つのメッセージで送信されます。renderMode: "raw"(カードではなくプレーンテキスト)でもストリーミングカードが無効になります。streaming.block.enabled はデフォルトで無効です。完了したアシスタントブロックを最終返信の前に送信したい場合にのみ有効にしてください。従来のブール値 streaming とフラットな blockStreaming / blockStreamingCoalesce / chunkMode キーは、openclaw doctor --fix によってこのネストされた形式へ移行されます。
クォータの最適化
2 つのオプションフラグを使用して、Feishu/Lark API の呼び出し回数を減らせます。
typingIndicator(デフォルトtrue):falseに設定すると、入力中リアクションの呼び出しを省略しますresolveSenderNames(デフォルトtrue):falseに設定すると、送信者プロフィールの検索を省略します
{ channels: { feishu: { typingIndicator: false, resolveSenderNames: false, }, },}グループセッションのスコープとトピックスレッド
channels.feishu.groupSessionScope(トップレベル、アカウント単位、またはグループ単位)は、グループメッセージをエージェントセッションにマッピングする方法を制御します。
| 値 | セッション |
|---|---|
"group"(デフォルト) |
グループチャットごとに 1 つのセッション |
"group_sender" |
(グループ + 送信者)ごとに 1 つのセッション |
"group_topic" |
トピックスレッドごとに 1 つのセッション。グループセッションにフォールバックします |
"group_topic_sender" |
(トピック + 送信者)ごとに 1 つのセッション。(グループ + 送信者)にフォールバックします |
トピックスコープでは、Feishu/Lark のネイティブトピックグループはイベント thread_id(omt_*)を正規のトピックセッションキーとして使用します。ネイティブのトピック開始イベントで thread_id が省略されている場合、OpenClaw はターンをルーティングする前に Feishu からその値を取得します。OpenClaw がスレッドに変換する通常のグループ返信では、引き続き返信ルートメッセージ ID(om_*)を使用するため、最初のターンと後続のターンが同じセッションに維持されます。
replyInThread: "enabled"(トップレベルまたはグループ単位)を設定すると、ボットの返信はインラインで返信する代わりに、Feishu のトピックスレッドを作成または継続します。topicSessionMode は groupSessionScope の非推奨の旧設定です。groupSessionScope を使用してください。
Feishu ワークスペースツール
Plugin には、Feishu のドキュメント、チャット、ナレッジベース、クラウドストレージ、権限、Bitable 用のエージェントツールと、対応する Skills(feishu-doc、feishu-drive、feishu-perm、feishu-wiki)が含まれています。ツールファミリーは channels.feishu.tools によって制限されます。
| キー | ツール | デフォルト |
|---|---|---|
tools.doc |
feishu_doc ドキュメント操作 |
true |
tools.chat |
feishu_chat チャット情報 + メンバーのクエリ |
true |
tools.wiki |
feishu_wiki ナレッジベース(doc が必要) |
true |
tools.drive |
feishu_drive クラウドストレージ |
true |
tools.perm |
feishu_perm 権限管理 |
false(機密性が高い) |
tools.scopes |
feishu_app_scopes アプリスコープ診断 |
true |
tools.bitable |
feishu_bitable_* Bitable/Base 操作 |
true |
tools.base は tools.bitable のエイリアスです。両方が設定されている場合は、明示的な bitable の値が優先されます。アカウント単位の制限は accounts.<id>.tools に配置します。
ルートディレクトリ外で feishu_drive info を直接検索するには、アプリに完全な drive:drive スコープがすでに付与されている場合を除き、drive:drive.metadata:readonly を付与してください。どちらのスコープもない場合、info により、従来のルートディレクトリ検索を drive:drive:readonly 経由で引き続き利用できます。
ACP セッション
Feishu/Lark は、DM とグループスレッドメッセージで ACP をサポートしています。Feishu/Lark の ACP はテキストコマンドで操作します。ネイティブのスラッシュコマンドメニューはないため、会話内で /acp ... メッセージを直接使用してください。
永続的な ACP バインディング
{ 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" }, }, ],}チャットから ACP を生成
Feishu/Lark の DM またはスレッドで次を実行します。
/acp spawn codex --thread here--thread here は、DM と Feishu/Lark のスレッドメッセージで機能します。バインドされた会話内の後続メッセージは、その ACP セッションへ直接ルーティングされます。
マルチエージェントルーティング
bindings を使用して、Feishu/Lark の DM またはグループを異なるエージェントへルーティングします。
{ 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" }, }, }, ],}ルーティングフィールド:
match.channel:"feishu"match.peer.kind:"direct"(DM)または"group"(グループチャット)match.peer.id:ユーザー Open ID(ou_xxx)またはグループ ID(oc_xxx)
検索のヒントについては、グループ ID/ユーザー ID を取得するを参照してください。
ユーザー単位のエージェント分離(動的エージェント作成)
dynamicAgentCreation を有効にすると、DM ユーザーごとに分離されたエージェントインスタンスが自動的に作成されます。各ユーザーには、以下が個別に割り当てられます。
- 独立したワークスペースディレクトリ
- 個別の
USER.md/SOUL.md/MEMORY.md - 非公開の会話履歴
- 分離された Skills と状態
これは、各ユーザーに専用の非公開 AI アシスタント体験を提供する公開ボットに不可欠です。
クイックセットアップ
{ channels: { feishu: { dmPolicy: "open", allowFrom: ["*"], dynamicAgentCreation: { enabled: true, workspaceTemplate: "~/.openclaw/workspace-{agentId}", agentDirTemplate: "~/.openclaw/agents/{agentId}/agent", }, }, }, session: { // 重要:各ユーザーの DM をそのユーザーの「メインセッション」にします // USER.md / SOUL.md / MEMORY.md を自動的に読み込みます // より強力に分離するには、代わりに "per-channel-peer" を使用します dmScope: "main", },}動作の仕組み
新しいユーザーが初めて DM を送信すると、次の処理が行われます。
- チャンネルが一意の
agentIdを生成します。デフォルトアカウントではfeishu-{user_open_id}、名前付きアカウントでは長さを制限したアカウント接頭辞付きの識別子ダイジェストになります workspaceTemplateパスに新しいワークスペースを作成します- エージェントを登録し、このユーザー用のバインディングを作成します
- ワークスペースヘルパーが、初回アクセス時にブートストラップファイル(
AGENTS.md、SOUL.md、USER.mdなど)を確実に用意します - このユーザーからの今後のすべてのメッセージを専用エージェントへルーティングします
設定オプション
| 設定 | 説明 | デフォルト |
|---|---|---|
channels.feishu.dynamicAgentCreation.enabled |
ユーザー単位のエージェント自動作成を有効にする | false |
channels.feishu.dynamicAgentCreation.workspaceTemplate |
動的エージェントのワークスペース用パステンプレート | ~/.openclaw/workspace-{agentId} |
channels.feishu.dynamicAgentCreation.agentDirTemplate |
エージェントディレクトリ名のテンプレート | ~/.openclaw/agents/{agentId}/agent |
channels.feishu.dynamicAgentCreation.maxAgents |
作成する動的エージェントの最大数 | 無制限 |
テンプレート変数:
{agentId}- 生成されたエージェント ID(例:feishu-ou_xxxxxxまたはfeishu-support-<identity_digest>){userId}- 送信者の Feishu open_id(例:ou_xxxxxx)
セッションスコープ
session.dmScope は、ダイレクトメッセージをエージェントセッションにマッピングする方法を制御します。これは、すべてのチャンネルに影響するグローバル設定です。
| 値 | 動作 | 適した用途 |
|---|---|---|
"main" |
各ユーザーの DM をそのエージェントのメインセッションにマッピングします | USER.md / SOUL.md を自動読み込みしたいシングルユーザーボット |
"per-peer" |
各ピアに個別のセッションを割り当てます(チャンネルは問いません) | 送信者の識別情報のみに基づく分離 |
"per-channel-peer" |
(チャンネル + ユーザー)の組み合わせごとに個別のセッションを割り当てます | より強力な分離が必要な公開マルチユーザーボット |
"per-account-channel-peer" |
(アカウント + チャンネル + ユーザー)の組み合わせごとに個別のセッションを割り当てます | アカウント単位のセッション分離が必要なマルチアカウントボット |
トレードオフ:"main" を使用すると、ブートストラップファイル(USER.md、SOUL.md、MEMORY.md)の自動読み込みが有効になりますが、すべてのチャンネルの全 DM で同じセッションキーパターンが共有されます。ブートストラップの自動読み込みより分離を重視する公開マルチユーザーボットでは、"per-channel-peer" を検討し、ブートストラップファイルを手動で管理してください。
一般的なマルチユーザー構成
{ 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: { // 必要な分離レベルに基づいて dmScope を選択します: // ブートストラップの自動読み込みには "main"、より強力な分離には "per-channel-peer" dmScope: "main", }, bindings: [], // 空 - 動的エージェントは自動的にバインドされます}検証
Gateway のログを確認し、動的作成が機能していることを確認します。
feishu: ユーザー ou_xxxxxx 用の動的エージェント "feishu-ou_xxxxxx" を作成しています ワークスペース: /home/user/.openclaw/workspace-feishu-ou_xxxxxx エージェントディレクトリ: /home/user/.openclaw/agents/feishu-ou_xxxxxx/agent作成されたすべてのワークスペースを一覧表示します。
ls -la ~/.openclaw/workspace-*注記
- ワークスペースの分離: 各ユーザーには専用のワークスペースディレクトリとエージェントインスタンスが割り当てられます。通常のメッセージングフローでは、ユーザーは互いの会話履歴やファイルを参照できません。
- セキュリティ境界: これはメッセージングコンテキストを分離する仕組みであり、敵対的な共同テナントに対するセキュリティ境界ではありません。エージェントプロセスとホスト環境は共有されます。
- 設定の書き込みを有効にしておく必要があります: 動的エージェントの作成では、エージェントとバインディングが設定に書き込まれます。
channels.feishu.configWritesがfalseの場合はスキップされます(デフォルト: 有効)。 bindingsは空にする必要があります: 動的エージェントは自身のバインディングを自動登録します- アップグレードパス: 既存の手動バインディングは動的エージェントと併用できます
session.dmScopeはグローバルです: これは Feishu だけでなく、すべてのチャンネルに影響します
設定リファレンス
完全な設定: Gateway の設定
| 設定 | 説明 | デフォルト |
|---|---|---|
channels.feishu.enabled |
チャンネルを有効化または無効化 | true |
channels.feishu.domain |
API ドメイン(feishu、lark、または https:// ベース URL) |
feishu |
channels.feishu.connectionMode |
イベント転送方式(websocket または webhook) |
websocket |
channels.feishu.defaultAccount |
送信ルーティングのデフォルトアカウント | default |
channels.feishu.verificationToken |
Webhook モードでは必須 | - |
channels.feishu.encryptKey |
Webhook モードでは必須 | - |
channels.feishu.webhookPath |
Webhook のルートパス | /feishu/events |
channels.feishu.webhookHost |
Webhook のバインドホスト | 127.0.0.1 |
channels.feishu.webhookPort |
Webhook のバインドポート | 3000 |
channels.feishu.accounts.<id>.appId |
アプリ ID | - |
channels.feishu.accounts.<id>.appSecret |
アプリシークレット | - |
channels.feishu.accounts.<id>.domain |
アカウントごとのドメイン上書き | feishu |
channels.feishu.accounts.<id>.tts |
アカウントごとの TTS 上書き | tts |
channels.feishu.dmPolicy |
DM ポリシー(pairing、allowlist、open) |
pairing |
channels.feishu.allowFrom |
DM 許可リスト(open_id のリスト) | - |
channels.feishu.groupPolicy |
グループポリシー(open、allowlist、disabled) |
allowlist |
channels.feishu.groupAllowFrom |
グループ許可リスト | - |
channels.feishu.groupSenderAllowFrom |
すべてのグループに適用される送信者許可リスト | - |
channels.feishu.requireMention |
グループ内で @メンションを必須にする | true(ポリシーが open の場合は false) |
channels.feishu.allowBots |
ボットループ保護を適用し、このボットをメンションする他のボットを受け入れる | false |
channels.feishu.groups.<chat_id>.requireMention |
グループごとの @メンション上書き。明示的な ID は許可リストモードでもそのグループを許可します | 継承 |
channels.feishu.groups.<chat_id>.enabled |
特定のグループを有効化または無効化 | true |
channels.feishu.groups.<chat_id>.allowFrom |
グループごとの送信者許可リスト(groupSenderAllowFrom を上書き) |
- |
channels.feishu.groupSessionScope |
グループセッションのマッピング(group、group_sender、group_topic、group_topic_sender) |
group |
channels.feishu.replyInThread |
ボットの返信でトピックスレッドを作成または継続(disabled、enabled) |
disabled |
channels.feishu.reactionNotifications |
受信リアクションイベント(off、own、all) |
own |
channels.feishu.vcAutoJoin |
通常の DM 認可後、招待された VC 会議に参加 | false |
channels.feishu.dynamicAgentCreation.enabled |
ユーザーごとのエージェントの自動作成を有効化 | false |
channels.feishu.dynamicAgentCreation.workspaceTemplate |
動的エージェントのワークスペース用パステンプレート | ~/.openclaw/workspace-{agentId} |
channels.feishu.dynamicAgentCreation.agentDirTemplate |
エージェントディレクトリ名のテンプレート | ~/.openclaw/agents/{agentId}/agent |
channels.feishu.dynamicAgentCreation.maxAgents |
作成する動的エージェントの最大数 | 無制限 |
channels.feishu.textChunkLimit |
メッセージのチャンクサイズ | 4000 |
channels.feishu.streaming.chunkMode |
チャンクの分割(length または newline) |
length |
channels.feishu.mediaMaxMb |
メディアのサイズ制限 | 30 |
channels.feishu.renderMode |
返信のレンダリング(auto、raw、card) |
auto |
channels.feishu.streaming.mode |
ストリーミングカード出力(partial または off) |
partial |
channels.feishu.streaming.block.enabled |
完了したブロック単位での返信ストリーミング | false |
channels.feishu.typingIndicator |
入力中リアクションを送信 | true |
channels.feishu.resolveSenderNames |
送信者の表示名を解決 | true |
channels.feishu.configWrites |
チャンネルから開始される設定の書き込みを許可(動的エージェントに必要) | true |
channels.feishu.tools.doc |
ドキュメントツールを有効化 | true |
channels.feishu.tools.chat |
チャット情報ツールを有効化 | true |
channels.feishu.tools.wiki |
ナレッジベースツールを有効化(doc が必要) |
true |
channels.feishu.tools.drive |
クラウドストレージツールを有効化 | true |
channels.feishu.tools.perm |
権限管理ツールを有効化 | false |
channels.feishu.tools.scopes |
アプリスコープ診断ツールを有効化 | true |
channels.feishu.tools.bitable |
Bitable/Base ツールを有効化 | true |
channels.feishu.tools.base |
channels.feishu.tools.bitable のエイリアス。両方が設定されている場合は明示的な bitable が優先 |
true |
channels.feishu.accounts.<id>.tools.bitable |
アカウントごとの Bitable/Base ツールゲート | 継承 |
channels.feishu.accounts.<id>.tools.base |
アカウントごとの tools.bitable のエイリアス |
継承 |
対応しているメッセージタイプ
受信
- ✅ テキスト
- ✅ リッチテキスト(投稿)
- ✅ 画像
- ✅ ファイル
- ✅ 音声
- ✅ 動画/メディア
- ✅ ステッカー
受信した Feishu/Lark の音声メッセージは、生の file_key JSON ではなく、
メディアプレースホルダーとして正規化されます。tools.media.audio が設定されている場合、
OpenClaw は音声メモのリソースをダウンロードし、エージェントターンの前に共有音声文字起こしを
実行するため、エージェントは発話内容の文字起こしを受け取ります。Feishu が音声ペイロードに
文字起こしテキストを直接含めている場合、そのテキストが使用され、追加の ASR 呼び出しは
行われません。音声文字起こしプロバイダーがない場合でも、エージェントは生の Feishu
リソースペイロードではなく、<media:audio> プレースホルダーと保存された添付ファイルを
受け取ります。
送信
- ✅ テキスト
- ✅ 画像
- ✅ ファイル
- ✅ 音声
- ✅ 動画/メディア
- ✅ インタラクティブカード(ストリーミング更新を含む)
- ⚠️ リッチテキスト(投稿形式の書式設定。Feishu/Lark のすべての作成機能には対応していません)
Feishu/Lark ネイティブの音声バブルは、Feishu の audio メッセージタイプを使用し、
Ogg/Opus アップロードメディア(file_type: "opus")を必要とします。既存の .opus および .ogg メディアは、
ネイティブ音声として直接送信されます。MP3/WAV/M4A およびその他の音声形式と推定されるファイルは、
返信で音声配信が要求された場合(audioAsVoice / メッセージツール asVoice、TTS 音声メモの
返信を含む)に限り、ffmpeg を使用して 48kHz Ogg/Opus にトランスコードされます。
通常の MP3 添付ファイルは通常のファイルのままです。ffmpeg が存在しない場合、または
変換に失敗した場合、OpenClaw はファイル添付にフォールバックし、その理由をログに記録します。
スレッドと返信
- ✅ インライン返信
- ✅ スレッド返信
- ✅ スレッドメッセージに返信する場合、メディア返信でもスレッド情報が維持されます
トピックグループのセッションルーティングについては、 グループセッションのスコープとトピックスレッドを参照してください。
関連項目
- チャンネルの概要 - サポートされているすべてのチャンネル
- ペアリング - DM 認証とペアリングの流れ
- グループ - グループチャットの動作とメンションゲート
- チャンネルルーティング - メッセージのセッションルーティング
- セキュリティ - アクセスモデルと堅牢化