Install
openclaw skills install feishu-agent-provision3分钟为飞书群创建一个专属 AI Agent:自动定时报告、长期记忆上下文、群内智能应答。支持创建 / 克隆 / 删除 / 诊断,绑定群组自动路由,无需手动配置。 Create Feishu group AI Agents in minutes — includes scheduled reports, long...
openclaw skills install feishu-agent-provisionEN: Create Feishu group AI Agents in minutes — includes scheduled reports, long-term memory, group binding, clone, delete, and diagnose. One command to deploy.
ZH: 3分钟为飞书群创建一个专属 AI Agent:自动定时报告、长期记忆上下文、群内智能应答。支持创建 / 克隆 / 删除 / 诊断,绑定群组自动路由,无需手动配置。
一句话:用一条指令,为每个飞书群创建专属 AI Agent——自动定时汇报、长期记忆上下文、群内智能应答。
这个 skill 能做什么?
使用示例:
用户:"创建一个航天赛道 agent,绑定 space 群"
→ 自动完成:workspace 创建 → 注册配置 → 绑定群组 → 设置每日17:00报告
用户:"克隆 math-tutor,改名 chemistry-tutor"
→ 自动完成:完整复制 → 新群绑定 → 身份定义调整
⚠️ 安全声明(必读) 本 skill 需要以下系统权限,请在安装前确认:
- 在
$HOME/.openclaw/下创建目录和文件- 修改 OpenClaw 网关配置(
gateway config.patch)- 创建和管理 cron 定时任务
- 读写 agent workspace 下的所有文件
- 注册 agent ID 并绑定飞书群
安装行为:
always: false(仅在用户明确触发时执行,不自动运行) VirusTotal: 已确认安全(0/67 引擎报恶意)
accountId: "main",支持多飞书账号环境用户说以下内容时激活(建议加前缀"用 skill"或"用 Feishu Agent Provision"):
用户说以下内容时激活(建议加前缀"用 skill"或"用 Feishu Agent Provision"):
用户说以下内容时激活(扫描所有已注册 Agent 的路由状态,一键发现配置问题):
用户说以下内容时激活(查询单个 Agent 的详细状态):
依次询问以下问题,确认所有配置:
必填项:
Agent ID — 英文ID,如 ctyun、project-x(字母+数字+短横线,不能有下划线或中文)
Agent 中文名 — 对外显示名称,如"业务代理"、"航天赛道Agent"
飞书群 ID — 形如 oc_xxx(确认已加入机器人的群)
Agent 职责描述 — 这个 agent 负责什么?(简要描述,50字以内)
汇报时间:
17:00,默认 17:00)周五 17:00,默认周五 17:00)数据文件路径(可选) — agent 需要读取的数据文件绝对路径,如 /Users/xxx/.project/data.json
可选配置:
请选择 Agent 的 Session 模式:
1️⃣ 短期(isolated)
- 每次任务新建 session,不保留历史
- 轻量、隔离,适合临时性 Agent
2️⃣ 中期(medium session)
- 持久 session,保留上下文
- 定时清理旧数据(30天)
- 适合有持续任务但不需要长期记忆的 Agent
3️⃣ 长期(long session)【推荐】
- 完整持久 session,累积所有历史
- 完整备份机制
- 适合需要记住项目进度、历史决策的 Agent
请回复数字 1、2 或 3
推荐选择 3(长期),可获得完整记忆累积能力。如果用户提供了完整信息,跳过询问直接使用。
⚠️ 确认提示:即将在
$HOME/.openclaw/agents/<AGENT_ID>/下创建目录和文件。这是安全的,但如果该 Agent ID 已存在,现有配置可能被覆盖。
AGENT_ID="<id>"
AGENT_DIR="$HOME/.openclaw/agents/$AGENT_ID/workspace"
mkdir -p "$AGENT_DIR/memory"
mkdir -p "$AGENT_DIR/memory/daily"
SOUL.md — Agent 身份定义,包含:
USER.md — 服务对象信息(从主 workspace 复制或新建)
AGENTS.md — 标准 workspace 指引(从主 workspace 复制)
HEARTBEAT.md — 空或仅有注释
memory/backup.md — 备份状态文件:
# <AGENT_ID> 备份状态
## 基本信息
- 创建时间:<YYYY-MM-DD>
- Session 长效性:<短期/中期/长期>
- 核心配置:<职责描述>
- 飞书群:<群ID>
## 当前状态
- 最后更新时间:<YYYY-MM-DD>
- 当前进度:<简要描述>
- 待处理事项:<列表>
## Session 模式
- sessionTarget: session:<AGENT_ID>
- 备份策略:启动时读 backup.md,结束时写 backup.md
⚠️ 确认提示:即将修改 OpenClaw 全局配置,添加 Agent 注册信息和群组路由绑定。修改后需执行
openclaw gateway restart使配置生效。
使用 gateway config.patch 注入:
{
"agents": {
"list": [{
"id": "<AGENT_ID>",
"workspace": "<AGENT_DIR>",
"identity": { "name": "<中文名>" }
}]
},
"bindings": [{
"type": "route",
"agentId": "<AGENT_ID>",
"match": {
"channel": "feishu",
"accountId": "main",
"peer": { "kind": "group", "id": "<飞书群ID>" }
}
}]
}
发送测试消息到对应飞书群,检查日志确认路由成功:
openclaw logs --follow | grep "dispatching to agent"
确认日志出现 agent:<AGENT_ID>:feishu:group:<飞书群ID>
⚠️ 确认提示:即将创建 cron 定时任务,该任务将持续运行并在指定时间向飞书群发送消息。如不再需要,可随时通过
cron remove删除。
Session 模式映射:
| 用户选择 | sessionTarget |
|---|---|
| 短期 | "isolated" |
| 中期 | "session:<AGENT_ID>-medium" |
| 长期 | "session:<AGENT_ID>" |
完整 cron add 命令(必须包含 delivery):
日报 Cron(周一至周五):
{
"name": "<AGENT_ID>-daily-report",
"agentId": "<AGENT_ID>",
"schedule": { "kind": "cron", "expr": "0 <HOUR> * * 1-5", "tz": "Asia/Shanghai" },
"payload": {
"kind": "agentTurn",
"message": "📋 <中文名>定时报告时间到!\n\n【记忆恢复】启动时先读 ~/.openclaw/agents/<AGENT_ID>/workspace/memory/backup.md,了解当前状态。\n\n【执行任务】<具体任务内容,如读取数据文件、生成报告等>\n\n【发送前确认】整理完报告内容后,先发飞书 DM 给我确认(「发」或「改后发」),收到回复后再发送到飞书群。**不要自动直接发群**。\n\n【结束备份】任务完成后,把本次执行结果(时间、做了什么、下次待办)追加写入 ~/.openclaw/agents/<AGENT_ID>/workspace/memory/backup.md。\n\n格式:【YYYY-MM-DD HH:MM】完成:xxx;待办:xxx",
"timeoutSeconds": 120
},
"sessionTarget": "session:<AGENT_ID>",
"delivery": {
"mode": "announce",
"channel": "feishu",
"to": "<飞书群ID>"
}
}
周报 Cron(周五合并到日报,不单独发):
{
"name": "<AGENT_ID>-weekly-report",
"agentId": "<AGENT_ID>",
"schedule": { "kind": "cron", "expr": "0 <HOUR> * * 5", "tz": "Asia/Shanghai" },
"payload": {
"kind": "agentTurn",
"message": "📋 <中文名>周报时间到!\n\n【记忆恢复】先读 ~/.openclaw/agents/<AGENT_ID>/workspace/memory/backup.md。\n\n【执行任务】本周总结 + 下周计划(注意:周五与日报合并发送,不要单独发一条)。\n\n【发送前确认】整理完周报内容后,先发飞书 DM 给我确认(「发」或「改后发」),收到回复后再发送到飞书群。**不要自动直接发群**。\n\n【结束备份】把本次结果追加写入 ~/.openclaw/agents/<AGENT_ID>/workspace/memory/backup.md。",
"timeoutSeconds": 120
},
"sessionTarget": "session:<AGENT_ID>",
"delivery": {
"mode": "announce",
"channel": "feishu",
"to": "<飞书群ID>"
}
}
⚠️ 关键检查项(必做):
agentId 必须填写为 "<AGENT_ID>"(由该 agent 自己执行 cron,不是 main)delivery.channel 必须为 "feishu"delivery.to 必须填写飞书群 ID(形如 oc_xxx),不能为空sessionTarget 必须根据用户选择的 Session 模式填写"isolated" 并去掉备份相关指令⚠️ 常见错误:漏填
delivery.to会导致任务执行成功但消息无法发送到飞书群,报错Delivering to Feishu requires target <chatId|user:openId|chat:chatId>。
启动时恢复:
每次 cron 触发后,先读取 memory/backup.md,恢复:
结束时备份:
每次任务完成后,将结果追加写入 memory/backup.md:
Session 长效性对比:
| 模式 | 记忆保留 | 适用场景 |
|---|---|---|
| 短期(isolated) | 无,每次新建 | 临时任务、一次性报告 |
| 中期(medium) | 有,30天清理 | 有持续任务但不需要长期记忆 |
| 长期(long) | 有,永久累积 | 需要记住项目进度、历史决策 |
调用 scripts/delete_agent.py 执行删除流程。
推荐使用 --no-restart 模式(避免 Gateway 重启导致输出丢失),最后手动重启。
Step 1:检查 Agent 是否存在
openclaw.json 的 agents.listStep 2:检查活跃 Session(有则警告)
Step 3:预览清理清单
⚠️ 即将删除 Agent「<ID>」:
【将清理的组件】
├── 🗂️ Workspace: ~/.openclaw/agents/<ID>/workspace/
│ ├── SOUL.md / USER.md / AGENTS.md / HEARTBEAT.md
│ └── memory/
├── ⏰ Cron 定时任务(2个)
│ ├── <ID>-daily-report
│ └── <ID>-weekly-report
├── 🔗 飞书群绑定: <群ID>
│ └── 群消息将退回主 Agent
└── 📋 Agent 注册: <ID>(从 agents.list 移除)
⚠️ 此操作不可逆!
Step 4:安全确认 用户必须输入「确认删除」才能继续(非简单 Y),否则取消。
Step 5:执行清理
~/.Trash/(而非直接 rm)Step 6:完成后提示
✅ 删除步骤完成!Agent「<ID>」已从系统移除。
📌 后续注意:
• 飞书群 <群ID> 的消息现在由主 Agent 响应
• Workspace 备份可在 trash 中找到
• config 已修改,重启后生效
• 请之后手动执行:openclaw gateway restart
trash 而非 rm--no-restart,避免输出丢失python3 scripts/clone_agent.py <SOURCE_AGENT_ID>
Step 1:检查源 Agent(自动) 检查 agents.list,验证源 Agent 是否存在;读取 workspace 所有文件;获取原 cron 任务、原绑定群。
Step 2:展示源 Agent 摘要
📋 克隆来源:math-tutor
【基本信息】
• 中文名:中考数学辅导
• 原飞书群:oc_e83c4768...
【Cron 定时任务】
• math-tutor-daily | 0 21 * * 1-5
【SOUL.md 核心内容】
# 中考数学辅导
## Teaching Philosophy
### 苏格拉底教学法
1. 先问认知...
...
【USER.md 核心内容】
• 服务对象:中考学生及其家长
• 科目:数学
Step 3:用户填写清单
【清单格式】
1. 新 Agent ID:chemistry-tutor
2. 新飞书群:oc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
3. Cron策略:1
(1=克隆原 Cron;2=不克隆;3=克隆并改为 HH:MM)
4. SOUL.md:1
(1=克隆仅替换ID;2=留空自动生成minimal;3=修改内容)
5. USER.md:1
(1=克隆仅替换ID;2=留空自动生成minimal;3=修改内容)
6. AGENTS.md:1(1=克隆;2=跳过)
7. HEARTBEAT.md:1(1=克隆;2=跳过)
如选 4 或 5 为「3 修改内容」,或 3 为「3 HH:MM」,
下一条消息请按以下格式填写:
SOUL修改:中文名=xxx | 科目=xxx | 职责=xxx
USER修改:服务对象=xxx | 科目=xxx
Cron改为:21:30
清单各选项说明:
| 选项 | SOUL.md | USER.md |
|---|---|---|
1 克隆仅替换ID | 完整复制,只替换原 Agent ID | 完整复制,只替换原 Agent ID |
2 留空自动生成minimal | 自动生成最小可用文件(带空字段占位) | 自动生成最小可用文件 |
3 修改内容 | 用户按格式单行填写,AI 生成完整文件 | 用户按格式单行填写,AI 生成完整文件 |
修改内容填写格式:
SOUL修改:中文名=中考化学辅导 | 科目=化学 | 职责=苏格拉底式化学辅导 | 角色=AI化学辅导老师
USER修改:服务对象=中考学生 | 科目=化学
Step 4:生成预览报告 展示所有配置结果,包括 SOUL.md / USER.md 内容预览。
Step 5:确认克隆 [1] / 取消 [2]
Step 6:执行 + 重启
3 HH:MM 直接指定新时间一键扫描所有已注册 Agent 的飞书路由配置,发现以下问题:
accountId(多账号环境下导致路由失败)groupAllowFrom 位置错误(写在顶层而非 accounts.main)见上文「触发条件 → 诊断扫描」
Step 1:收集数据
openclaw.json 的 agents.listbindings 数组channels.feishu.groupAllowFrom 位置Step 2:逐 Agent 分析 对每个 Agent(除 main、ctyun 外)检查:
accountId?→ 无 → 标记「需修复(缺 accountId)」accountId 是否为 main?→ 否 → 标记「需修复(accountId 不匹配)」Step 3:检查 groupAllowFrom 位置
channels.feishu.groupAllowFrom → ✅ 正常channels.feishu.accounts.main.groupAllowFrom → ✅ 正常Step 4:生成诊断报告
📋 Agent 路由诊断报告
生成时间:<YYYY-MM-DD HH:MM>
【绑定状态】
| Agent | 群组 | accountId | 状态 | 备注 |
|-------|------|-----------|------|------|
| space | oc_d225... | ❌ 缺失 | 需修复 | 多账号环境下无法匹配 |
| knowledge-base | oc_ffd... | ✅ 有 | 正常 | - |
| ... | ... | ... | ... | ... |
【groupAllowFrom 位置】
| 位置 | 状态 |
|------|------|
| channels.feishu.groupAllowFrom(顶层) | ❌ 错误(gateway 不会从此读取)|
| channels.feishu.accounts.main.groupAllowFrom | ✅ 正确 |
【需要修复的 Agent】
- space(oc_d225...):binding 缺 accountId
- llm-study(oc_636...):binding 缺 accountId
- chemistry-tutor(oc_81ba...):binding 缺 accountId
【修复方案】
已生成修复命令,确认后自动执行。
Step 5:确认修复
⚠️ 发现 <N> 个 Agent 需要修复,<M> 处配置问题。
修复内容:
1. 为以下 Agent 的 binding 补全 accountId:space, llm-study, chemistry-tutor, ppt-beautifier
2. 将 groupAllowFrom 从顶层迁移至 accounts.main
是否执行?[1] 确认修复 / [2] 取消
选择 [1]:自动执行修复 + 重启 Gateway。 选择 [2]:展示修复命令,用户自行执行。
# 1. 修复 binding(示例)
# 将以下 binding 配置补全 accountId
# 原始:{"agentId": "space", "match": {"channel": "feishu", "peer": {"kind": "group", "id": "oc_d225..."}}}
# 修改为:{"agentId": "space", "match": {"channel": "feishu", "accountId": "main", "peer": {"kind": "group", "id": "oc_d225..."}}}
# 2. 迁移 groupAllowFrom
# 将 channels.feishu.groupAllowFrom 的值移动到 channels.feishu.accounts.main.groupAllowFrom
# 并删除顶层 channels.feishu.groupAllowFrom
# 执行后必须:openclaw gateway restart
查询单个 Agent 的详细运行状态,包括:注册信息、路由状态、Session 模式、备份机制、Workspace 完整性等。
见上文「触发条件 → 状态查询」
Step 1:确认 Agent ID
Step 2:收集数据 读取并汇总以下信息:
| 数据源 | 获取内容 |
|---|---|
agents.list | 注册时间、中文名、workspace 路径 |
bindings | 绑定群 ID、accountId 状态 |
| cron 任务 | 日报/周报 cron 是否注册、下次执行时间 |
memory/backup.md | 最后备份时间、备份状态 |
| workspace 文件列表 | SOUL.md、USER.md 等是否存在 |
| session 文件 | 最后活跃时间 |
Step 3:判断 Session 类型
从 cron job 的 sessionTarget 推断:
| sessionTarget | Session 类型 |
|---|---|
isolated | 短期 |
session:<ID>-medium | 中期 |
session:<ID> | 长期 |
| 无 cron | 短期(isolated) |
Step 4:生成状态报告
📋 Agent「<ID>」状态报告
查询时间:<YYYY-MM-DD HH:MM>
【基本信息】
• Agent ID:<ID>
• 中文名:<中文名>
• 注册时间:<YYYY-MM-DD HH:MM>(从 agents.list 读取)
• Workspace:~/.openclaw/agents/<ID>/workspace/
【路由状态】
• 绑定群:<oc_xxx>
• accountId:✅ 有(main)/ ❌ 缺失
• Binding 状态:✅ 正常 / ❌ 需修复
【Session 模式】
• Session 类型:短期 / 中期 / 长期
• Session 标识:session:<ID> / isolated
• 最后活跃时间:<YYYY-MM-DD HH:MM>(从 session 文件读取)
【定时任务】
• 日报 Cron:✅ / ❌
- 名称:<ID>-daily-report
- Schedule:0 <HOUR> * * 1-5(周一至周五)
- 下次执行:<YYYY-MM-DD HH:MM>
• 周报 Cron:✅ / ❌
- 名称:<ID>-weekly-report
- Schedule:0 <HOUR> * * 5(周五)
【备份机制】
• 备份文件:memory/backup.md
• 备份位置:~/.openclaw/agents/<ID>/workspace/memory/backup.md
• 最后备份时间:<YYYY-MM-DD HH:MM>(文件 mtime)
• 备份状态:
- ✅ 正常(48 小时内有更新)
- ⚠️ 过久(超过 48 小时未更新)
- ❌ 无备份文件
• Cron Payload 含备份指令:✅ / ❌
【Workspace 文件完整性】
• SOUL.md:✅ / ❌
• USER.md:✅ / ❌
• AGENTS.md:✅ / ❌
• HEARTBEAT.md:✅ / ❌
• memory/backup.md:✅(<YYYY-MM-DD HH:MM>)/ ❌
• memory/daily/:✅(<N> 个文件)/ ❌(空目录)
【最近活动】
• 最后处理消息:<YYYY-MM-DD HH:MM>(从 session 文件读取)
• Agent 当前状态:🟢 在线 / 🟡 空闲 / ⚠️ 异常
Step 5:异常项高亮 如有异常项,在报告底部列出:
⚠️ 发现以下问题:
1. accountId 缺失(binding 需修复)
2. 备份文件超过 48 小时未更新
3. Workspace SOUL.md 文件缺失
建议运行「诊断飞书 agent 路由」获取完整修复方案。
~(agent 运行时不会展开)channels.feishu.groupAllowFrom 中配置症状:在飞书群发送消息,没有收到回复。
排查步骤:
openclaw gateway statusopenclaw config get channels.feishu.groupAllowFromopenclaw logs --limit 50 | grep ""openclaw config get agents.list症状:群消息被主 Agent 响应,而不是专属 Agent。
排查步骤:
openclaw config get bindings 查看该 Agent 的 binding 配置accountId 字段:
accountId → 检查值是否为 mainaccountId → ⚠️ 多账号环境下会导致路由失败(见下方修复)openclaw config get channels.feishu.groupAllowFrom 确认群 ID 在白名单中openclaw gateway restart 重启 Gatewayopenclaw logs | grep dispatching 确认路由到正确的 Agent修复(多账号环境):
如果 binding 缺 accountId,需要补全:
// 改前
{"agentId": "space", "match": {"channel": "feishu", "peer": {"kind": "group", "id": "oc_d225..."}}}
// 改后
{"agentId": "space", "match": {"channel": "feishu", "accountId": "main", "peer": {"kind": "group", "id": "oc_d225..."}}}
使用 gateway config.patch 修复后重启 Gateway。
一键修复: 运行「诊断飞书 agent 路由」触发修复流程,可自动完成所有修复。
症状:Agent 每次都不记得之前的事。
原因:选择了"短期(isolated)"模式。
解决:
"session:<AGENT_ID>"症状:memory/backup.md 内容一直是旧的。
排查:
症状:克隆时指定了与原 Agent 相同的飞书群。
原因:两个 Agent 绑定同群会导致消息混乱,设计上禁止。
解决:
accountId);新增诊断扫描功能;新增状态查询功能;更新故障排查章节--quiet 静默模式,统一为纯交互模式--no-restart 参数,执行后始终询问重启 [1]立即/[2]稍后