耗时任务做完,手机立刻收到推送:OpenClaw 技能主动推送飞书通知完全指南
当你让 AI 执行一个耗时任务(比如处理大数据、跑模型、爬取网页)后,是不是只能干等着终端输出?能不能让 AI 完事后直接“叮”一声推送到手机?本文手把手教你用 OpenClaw 的自定义技能,结合内置的 message 工具,实现“耗时任务完成 → 飞书主动推送”的丝滑体验。
文章目录
- 耗时任务做完,手机立刻收到推送:OpenClaw 技能主动推送飞书通知完全指南
-
- 背景:为什么你需要这个功能?
- 1. 前置确认:飞书通道必须已启用且正常
-
- 1.1 检查飞书通道是否启用
- 1.2 检查飞书通道配置
- 1.3 检查飞书通道运行状态
- 2. 最推荐的方式:在自定义技能中指示 LLM 使用 `message` 工具
-
- 2.1 创建技能目录和 SKILL.md
- 2.2 SKILL.md 完整示例(可直接复制修改)
- 3. 后台任务处理(重要)
- 示例对话
- 3. 测试一下:让 AI 执行你的新技能
- 4. 进阶用法:让推送更“高级”
-
- 4.1 使用消息卡片
- 4.2 @提及某人
- 4.3 推送文件
- 5. 常见问题排查(我踩过的坑)
-
- 5.1 推送不成功,怎么办?
- 5.2 推送成功了,但手机没收到通知?
- 5.3 如何获取当前用户的 open_id 或 chat_id?
- 5.4 任务执行时间很长,怕超时?
- 6. 总结:让 AI 真正成为你的“得力助手”
背景:为什么你需要这个功能?
我一开始用 OpenClaw 跑一些耗时的 Python 脚本时,经常是 openclog logs –follow 挂着,然后时不时瞄一眼。后来有一次跑了个 20 分钟的任务,中间去喝了杯咖啡,回来才发现早跑完了,白白浪费了 15 分钟。于是我就琢磨:能不能让 AI 在任务完成后主动给我发个飞书通知?
OpenClaw 的设计哲学之一就是“极简核心,插件化扩展”,它的 message 工具天然支持通过已启用的通道(如飞书、Telegram)发送消息。也就是说,只要飞书通道是通的,任何技能都可以调用 message 工具给任何人发推送,包括你自己。

1. 前置确认:飞书通道必须已启用且正常
在开始之前,确保你的 OpenClaw 实例已经正确配置了飞书通道。这步如果没做好,后面全是白搭。
1.1 检查飞书通道是否启用
# 查看所有已启用的插件/通道
openclaw plugins list
你应该能看到 feishu 在列表里,并且状态为 ENABLED。如果没有,启用它:
openclaw plugins enable feishu
1.2 检查飞书通道配置
编辑配置文件 ~/.openclaw/openclaw.json(或 config.yaml,取决于你的版本),确认飞书部分配置正确:
{
"channels": {
"feishu": {
"enabled": true,
"appId": "cli_xxxxxx",
"appSecret": "your_app_secret",
"verificationToken": "your_verification_token",
"encryptKey": "your_encrypt_key" // 如果启用加密
}
}
}
小提示:如果你是用 openclaw wizard 配置的,这些字段会自动填好。
1.3 检查飞书通道运行状态
重启 Gateway 后,运行:
openclaw status
应该能看到类似:
Channels:
feishu ON | OK
telegram ON | OK
…
如果显示 ERROR,用 openclaw logs –follow 查看具体错误。
2. 最推荐的方式:在自定义技能中指示 LLM 使用 message 工具
OpenClaw 的自定义技能本质上是一个 SKILL.md 文件,放在 ~/.openclaw/workspace/skills/你的技能名/ 目录下。你可以在 Markdown 指令中明确告诉 LLM:“任务完成后,必须调用 message 工具通过飞书推送通知。”
2.1 创建技能目录和 SKILL.md
假设我们要创建一个叫 long-task 的技能:
mkdir -p ~/.openclaw/workspace/skills/long-task
cd ~/.openclaw/workspace/skills/long-task
nano SKILL.md
2.2 SKILL.md 完整示例(可直接复制修改)
下面是一个完整的 SKILL.md,包含了详细的指令和示例调用格式。我加了大量注释,方便你理解每一部分的作用。
—
name: long-task
description: 执行耗时任务(如数据处理、模型推理),完成后通过飞书主动推送结果。
version: 1.0
author: YourName
—
# 耗时任务技能
## 技能概述
本技能用于执行可能耗时较长的后台任务,并在任务完成后通过飞书通道主动推送通知给发起用户。支持富文本、@提及和交互卡片。
## 使用规则
### 1. 任务启动
当用户请求执行耗时任务时,遵循以下步骤:
– 确认任务参数(如输入文件、模型名称、超时时间等)。
– 立即回复用户:“任务已开始后台执行,完成后我会通过飞书推送结果给你。”
– 调用实际的任务执行工具/脚本(如 `exec`、`python` 等)开始处理。
### 2. 任务完成后主动推送通知
任务执行完毕后,**必须**调用 `message` 工具发送飞书推送。调用格式如下(YAML):
```yaml
message:
action: send
channel: feishu
recipient: current # 可选:current(当前会话用户)、具体的 open_id、chat_id
text: |
✅ **你的耗时任务已完成!**
– 任务名称:{{task_name}}
– 执行结果:{{result_summary}}
– 耗时:{{duration}} 秒
– 输出文件:{{output_path}}
# 可选:卡片消息(支持飞书卡片 JSON)
card: |
{
"config": { "wide_screen_mode": true },
"elements": [
{ "tag": "markdown", "content": "✅ **任务完成**\\n点击下方按钮查看结果" },
{ "tag": "action", "actions": [ … ] }
]
}
# 可选:@指定用户
mention: { "user_id": "ou_xxx", "name": "张三" }
参数说明:
- action:固定为 send。
- channel:固定为 feishu(必须)。
- recipient:可以是 current(自动推导当前会话的用户/群),也可以是具体的 open_id 或 chat_id。用 current 最省事。
- text:支持 Markdown 格式的文本。
- card:(可选)飞书消息卡片 JSON,优先级高于 text。
- mention:(可选)@某人,需提供 user_id 和显示名称。
3. 后台任务处理(重要)
如果任务预计执行时间超过 30 秒,建议结合 openclaw-notify 技能实现异步推送:
- 安装:openclaw skills install openclaw-notify
- 使用:任务启动后,立即返回“任务已后台执行”,然后调用 openclaw-notify 在任务真正完成后推送通知。
示例对话
用户:帮我处理一下这个 1GB 的日志文件,提取所有错误行,完成后通知我。 AI:好的,任务已开始后台执行,完成后我会通过飞书推送结果给你。 (后台执行中… 执行完毕后调用 message 工具) AI(通过飞书推送):✅ 日志处理完成!提取到 128 条错误行,结果已保存到 /workspace/errors.txt,耗时 47 秒。
### 2.3 刷新技能
保存 SKILL.md 后,需要让 OpenClaw 重新加载技能:
```bash
openclaw skills refresh
或者在飞书里直接对 AI 说:“刷新技能”,如果你配置了相关意图的话。
3. 测试一下:让 AI 执行你的新技能
在飞书里对你的 OpenClaw 机器人说:
“用 long-task 技能执行一个耗时测试任务,比如 sleep 10 秒,完成后飞书推送通知我结果。”
你会立即收到一条回复:“任务已开始后台执行…”,10 秒后,你的飞书手机端应该会收到一条推送通知,内容就是你 SKILL.md 里定义的格式。
如果收不到推送,别急,往下看排查指南。
4. 进阶用法:让推送更“高级”
4.1 使用消息卡片
飞书支持丰富的交互卡片。你可以在 card 字段里放一段 JSON,让推送变成按钮、图片、表格等。例如:
message:
action: send
channel: feishu
recipient: current
card: |
{
"config": { "wide_screen_mode": true },
"header": { "title": { "tag": "plain_text", "content": "任务完成通知" } },
"elements": [
{ "tag": "markdown", "content": "✅ 你的日志分析任务已完成,点击下方按钮下载结果。" },
{ "tag": "action", "actions": [
{ "tag": "button", "text": { "tag": "plain_text", "content": "下载结果" }, "url": "https://example.com/download" }
]
}
]
}
这样推送过去就是一个带按钮的卡片,用户可以直接点击下载。
4.2 @提及某人
如果想在群里推送时 @具体的人,可以用 mention 字段:
message:
action: send
channel: feishu
recipient: current
text: "任务完成,<at id=ou_xxx>张三</at> 请查收。"
mention:
user_id: "ou_xxx"
name: "张三"
注意 text 里的 <at> 标签和 mention 字段要配合使用,否则可能无法正确解析。
4.3 推送文件
飞书通道支持发送文件(如图片、文档)。可以用 media 字段:
message:
action: send
channel: feishu
recipient: current
text: "结果文件已生成,请查收:"
media:
type: "file"
file_path: "/workspace/output/result.pdf"
文件会被上传并作为附件发送。
5. 常见问题排查(我踩过的坑)
5.1 推送不成功,怎么办?
首先,用 openclaw logs –follow 实时查看日志,看有没有类似这样的输出:
2026-03-09 15:23:45 INFO [channels.feishu] Sending message to recipient current…
2026-03-09 15:23:46 ERROR [channels.feishu] Failed to send message: invalid recipient
常见错误:
| invalid recipient | recipient: current 无法推导出具体用户(比如在群聊里但未绑定用户) | 改用具体的 open_id 或 chat_id。可以在飞书开放平台后台查看。 |
| permission denied | 飞书 App 未授权发送消息权限 | 在飞书开放平台检查应用是否勾选了 im:message:send_as_bot 权限,并重新发布版本。 |
| rate limit exceeded | 调用太频繁 | 飞书有频率限制,适当增加推送间隔。 |
| timeout | 网络问题 | 检查 OpenClaw 所在机器能否访问飞书 API。 |
5.2 推送成功了,但手机没收到通知?
飞书 App 的通知开关可能没开。检查:
- 手机系统设置 → 通知 → 飞书 → 允许通知。
- 飞书 App 内设置 → 新消息通知 → 确保“接收消息通知”开启。
5.3 如何获取当前用户的 open_id 或 chat_id?
如果你不想用 current,可以先用 message 工具的另一个 action 来查询:
在飞书里对 AI 说:“帮我查一下当前会话的 chat_id”。(需要你的技能或系统支持这个指令)
或者手动获取:在飞书开放平台,进入你的应用,点击“开发配置” -> “调试工具”,可以用用户 ID 查询接口。
5.4 任务执行时间很长,怕超时?
OpenClaw 默认的 Agent 执行超时可能是 5 分钟。如果你的任务需要更久,有两种方案:
我强烈推荐第二种,因为它不会占用 Agent 会话资源,用户体验也更好。
6. 总结:让 AI 真正成为你的“得力助手”
通过自定义技能 + message 工具,OpenClaw 不再只是一个被动的问答机器人,而是可以主动通知你、提醒你的智能助理。无论是耗时任务完成、定时提醒、异常监控,都可以用类似的方式实现。
最后,再分享一个我自己的小技巧:我写了一个 daily-report 技能,每天早上 9 点通过 cron 触发,抓取我关注的几个数据源,汇总后主动推送到飞书。这样我一睁眼就能看到昨天的关键数据,完全不占用我早上的宝贵时间。
希望这篇文章能帮你把 OpenClaw 用得更顺手。如果你在实践过程中遇到问题,欢迎在评论区留言。
—— The lobster way. 🦞




