Teach OpenClaw how to work in Feishu (Lark) group chats — recognize who's talking, behave properly in groups vs DMs, respect multi-user privacy, and format m...
Everything your OpenClaw agent needs to be a good Feishu group chat participant.
Feishu group messages include sender names in metadata. DMs don't — they only include an opaque open_id. Without setup, your agent will assume all DMs come from one person.
Fix: Embed an open_id → name lookup table in USER.md. Since workspace files are injected into the system prompt, the agent matches senders instantly — no tool calls.
Run the bundled sync script to pull your org's contacts:
python3 scripts/sync_feishu_contacts.py <openclaw_config> <feishu_account> <user_md_path>
This populates a table in USER.md:
## 飞书通讯录 (App Name)
飞书 DM 不携带发送者姓名。用 inbound metadata 的 chat_id(格式 `user:ou_xxx`)匹配下表识别发送者。
| 姓名 | open_id |
|------|---------|
| Alice | ou_abc123 |
| Bob | ou_def456 |
Important: Feishu open_id is per-app. Multiple OpenClaw instances using different Feishu apps must each pull contacts with their own credentials.
After updating USER.md, restart the gateway. Workspace files are cached at startup; /new alone won't pick up changes.
Set up weekly auto-sync via crontab:
0 7 * * 1 python3 /path/to/scripts/sync_feishu_contacts.py ~/.openclaw/openclaw.json my_app ~/workspace/USER.md
Add to AGENTS.md or SOUL.md:
When to respond:
When to stay silent:
General rules:
Feishu does NOT render Markdown well. Follow these rules:
**bold**, # headers, or [links](url) in messagescode blocks — use sparinglyAdd to SOUL.md or AGENTS.md:
Add this to your startup sequence:
识别消息发送者:飞书 DM 不携带发送者姓名,只有 open_id(inbound metadata 的 chat_id 格式 user:ou_xxx)。
提取 open_id,在 USER.md 的飞书通讯录表格中匹配找到姓名。
不要假设 DM 对方就是主人——任何人都可能给你发私聊。
群聊消息自带 Sender metadata 可直接使用。
ZIP package — ready to use