Task Router Skill
Task Router
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 messages for the platform. Use when connecting OpenClaw to Feishu and you want your agent to be a competent group participant, not just a responder.
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
SkillHub CLI
skillhub install 4ier/feishu-group打开来源仓库,查看说明和兼容环境后,按来源提供的命令或步骤安装。
将来源链接提供给你的 Agent,让它先读取说明、核对依赖,并向你说明将执行的安装步骤。
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 Group Everything your OpenClaw agent needs to be a good Feishu group chat participant. ## 1. Know who you're talking to 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: ```bash python3 scripts/sync_feishu_contacts.py <openclaw_config> <feishu_account> <user_md_path> ``` This populates a table in USER.md: ```markdown ## 飞书通讯录 (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: ```bash 0 7 * * 1 python3 /path/to/scripts/sync_feishu_contacts.py ~/.openclaw/openclaw.json my_app ~/workspace/USER.md ``` ## 2. Group chat etiquette Add to AGENTS.md or SOUL.md: **When to respond:** - Directly @mentioned - Can add real value to the conversation - Something witty or relevant fits naturally **When to stay silent:** - Casual banter you have nothing to add to - Someone already answered well - "Yeah" / "Nice" / emoji-only territory **General rules:** - Don't dominate the conversation — participate, don't monologue - One reaction per message max - Keep replies concise — respect the group's attention ## 3. DM behavior - Always address the sender by their actual name (look up from the contacts table) - Never assume a DM is from your "primary human" — anyone...
Task Router
OpenClaw integration guidance for CAPTCHAS Agent API, including OpenResponses tool schemas and plugin tool registration.
name: modelready description: Start using a local or Hugging Face model instantly, directly from chat. metadata: {"openclaw":{"requires":{"bins": "bash", "curl" }, "env": "URL" }}
Read-only factual data about historical Ethereum mainnet contracts. Use when the user asks about a specific contract address, early Ethereum contracts, deployment era, deployer, bytecode, decompiled code, or do...