Automatically create a new OpenClaw Feishu agent by validating credentials, configuring settings, creating workspace, and restarting the gateway for immediat...
---
name: agent-setup
description: Auto-create a new OpenClaw agent with a Feishu bot. Trigger when the user says something like: "帮我创建新agent", "创建飞书机器人", "新建agent", "快速创建一个飞书bot", "创建新的ai助手", "帮我配一个新机器人". Only triggers on creation requests — not on collaboration/routing/诊断 issues.
metadata:
openclaw:
emoji: "🤖"
minVersion: "4.0"
---
# Agent Auto-Setup
Auto-create a new OpenClaw Feishu agent from App ID + Secret. Full pipeline: validate → backup → detect model → write config → create workspace → restart+verify.
---
## Step 0: Check prerequisites
**This skill requires App ID + App Secret from Feishu Open Platform.**
If not yet provided, send an interactive card to collect:
```
请提供新机器人凭证:
快速创建链接(手机/电脑均可):
https://open.feishu.cn/page/openclaw?form=multiAgent
App ID: [输入框]
App Secret: [输入框]
【确认创建】
```
Use `feishu_ask_user_question` with free-text inputs. Bot name is auto-detected from Feishu API — do NOT ask the user for a name.
**IMPORTANT — Progress notifications:** After EACH step completes, send a brief reply to the user so they know the pipeline is running. Do NOT stay silent. Reply format: `⚙️ Step X/Y: [doing...]` then `✅ Step X/Y done: [result]`.
---
## Step 1: Validate credentials
> After done: reply `✅ Step 1/10: 凭证验证通过 → {{BOT_NAME}}`
```bash
curl -s -X POST "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal" \
-H "Content-Type: application/json" \
-d '{"app_id": "{{APP_ID}}", "app_secret": "{{APP_SECRET}}"}'
```
Expected: `code: 0`. Extract `tenant_access_token`.
Then get bot name:
```bash
curl -s "https://open.feishu.cn/open-apis/bot/v3/info" \
-H "Authorization: Bearer $TOKEN"
```
Extract `bot.app_name` from the response. This is the canonical name — use it for both `botName` and `name`.
---
## Step 2: Backup
> After done: reply `✅ Step 2/10: 配置文件已备份`
```bash
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak.$(date +%Y%m%d%H%M%S)
```
---
## Step 3: Detect current model
> After done: reply `✅ Step 3/10: 当前模型已识别 → {{PRIMARY_MODEL}}`
```bash
python3 -c "
import json
d = json.load(open('/Users/zaihuilou/.openclaw/openclaw.json'))
m = d.get('agents', {}).get('defaults', {}).get('model', {})
print('PRIMARY=' + m.get('primary', 'minimax/MiniMax-M2.7-highspeed'))
print('FALLBACKS=' + json.dumps(m.get('fallbacks', [])))
"
```
Use detected values for the new agent's model config.
---
## Step 4: Read existing accounts
> After done: reply `✅ Step 4/10: 已有账号 {{ACCOUNT_LIST}} → 新账号 {{ACCOUNT_KEY}}`
```bash
python3 -c "
import json
d = json.load(open('/Users/zaihuilou/.openclaw/openclaw.json'))
accounts = list(d.get('channels', {}).get('feishu', {}).get('accounts', {}).keys())
print(list(accounts))
"
```
Determine next account key (e.g. `agent3` if `default`, `planner`, `moltbook` exist).
---
## Step 5: Write secret to credentials store
> After done: reply `✅ Step 5/10: 凭证已写入 secrets.json`
Path: `~/.openclaw/credentials/secrets.json`
Read existing file, add:
```json
"channels": {
"feishu": {
"accounts": {
"{{ACCOUNT_KEY}}": {
"appSecret": "{{APP_SECRET}}"
}
}
}
}
```
Write back atomically.
---
## Step 6: Write account to openclaw.json
> After done: reply `✅ Step 6/10: 账号已注册 → {{ACCOUNT_KEY}}`
Read `openclaw.json`, add under `channels.feishu.accounts`:
```json
"{{ACCOUNT_KEY}}": {
"appId": "{{APP_ID}}",
"appSecret": {
"source": "file",
"provider": "local-secrets",
"id": "/channels/feishu/accounts/{{ACCOUNT_KEY}}/appSecret"
},
"botName": "{{BOT_NAME}}",
"dmPolicy": "allowlist",
"allowFrom": ["ou_5bcd7105a9d91b7dc63a76c42dfe1880"],
"groupPolicy": "disabled"
}
```
---
## Step 7: Register agent
> After done: reply `✅ Step 7/10: Agent 配置已写入`
Read `agents` config, add:
```json
{
"id": "{{ACCOUNT_KEY}}",
"name": "{{BOT_NAME}}",
"workspace": "/Users/zaihuilou/.openclaw/workspaces/feishu-{{ACCOUNT_KEY}}",
"model": {
"primary": "{{PRIMARY_MODEL}}",
"fallbacks": {{FALLBACK_ARRAY}}
}
}
```
---
## Step 8: Create workspace
> After done: reply `✅ Step 8/10: Workspace 已创建`
```bash
mkdir -p /Users/zaihuilou/.openclaw/workspaces/feishu-{{ACCOUNT_KEY}}/memory
```
Create `SOUL.md`:
```markdown
# SOUL.md - {{BOT_NAME}}
- **Name:** {{BOT_NAME}}
- **Role:** (由主控分配的角色描述)
- **Vibe:** 直接、务实
- **Emoji:** 🤖
## Collaboration
- 主控入口:飞书 direct → 智能管家
- 接受主控派发任务,完成后汇报给主控
- 不主动在群里发言
```
Create `AGENTS.md`:
```markdown
# AGENTS.md
## {{BOT_NAME}}(本 agent)
- workspace: `~/.openclaw/workspaces/feishu-{{ACCOUNT_KEY}}`
- 接受主控派发,执行后收口
```
Create `memory/.gitkeep`.
---
## Step 9: Grant exec permission
> After done: reply `✅ Step 9/10: exec 权限已授权`
```bash
openclaw approvals allowlist add "*" --agent "{{ACCOUNT_KEY}}"
openclaw approvals allowlist add "*" --agent "{{ACCOUNT_KEY}}:cron"
```
---
## Step 10: Restart & Verify
> After done: reply `✅ Step 10/10: 全部完成!{{BOT_NAME}} 已就绪 → 去飞书搜索它发消息测试吧`
```bash
openclaw gateway restart
sleep 5
```
After restart:
- If bot responds in Feishu DM → all good
- If no response: check `openclaw logs --tail 30`
---
## Error handling
| Error | Action |
|-------|--------|
| Feishu credential invalid | Report error, stop — ask user to re-check |
| Config write fails | Restore backup, report error |
| Gateway restart fails | Restore backup, report error |
| Workspace creation fails | Report error (partial state) |
Always restore backup on failure before reporting.
---
## Post-setup
On success:
- Tell user the new bot name and DM link
- Remind user to add bot to any Feishu groups if needed
- Tell user group routing config can be updated separately via collab-setup skill
don't have the plugin yet? install it then click "run inline in claude" again.