首页 教程 分类 Skills下载 关于
ZH EN JA KO
技能插件

为OpenClaw开发定时提醒技能

· 10 分钟

前言

定时提醒是个人 AI 助手最实用的功能之一。想象一下,在聊天窗口随口说一句"明天早上9点提醒我开会",到了时间就真的收到通知——这正是我们这篇教程要实现的。

本教程将带你开发一个功能完整的提醒 Skill,包含自然语言时间解析、周期提醒和持久化存储。

功能规划

我们的提醒 Skill 需要具备以下能力:

功能 说明 优先级
设置提醒 用自然语言创建一次性提醒 必须
周期提醒 每天、每周、每月重复的提醒 必须
查看提醒 列出所有待触发的提醒 必须
删除提醒 取消指定提醒 必须
持久化 重启后提醒不丢失 必须
多渠道推送 在设置提醒的频道中推送通知 推荐

MCP工具配置

提醒功能需要文件读写和定时调度能力。在 ~/.config/openclaw/openclaw.json5 中配置 MCP 工具:

{
  mcp: {
    servers: {
      "filesystem": {
        command: "npx",
        args: ["-y", "@modelcontextprotocol/server-filesystem",
               "--allow-read", "--allow-write",
               "~/.openclaw/data/reminders/"],
      },
      "scheduler": {
        command: "npx",
        args: ["-y", "@openclaw-mcp/scheduler"],
      }
    }
  }
}

创建提醒数据目录:

mkdir -p ~/.openclaw/data/reminders/

编写SKILL.md

~/.openclaw/skills/ 目录下创建 reminder.SKILL.md

---
name: reminder
version: 1.0.0
description: 定时提醒技能,支持自然语言设置提醒、周期任务和持久化存储
triggers:
  - 提醒
  - remind
  - 闹钟
  - alarm
  - 定时
  - 待办
  - 记得
  - 别忘了
  - 到时候
mcp_tools:
  - filesystem
  - scheduler
---

# 定时提醒技能

## Description

这是一个定时提醒技能,让用户可以通过自然语言设置、管理提醒事项。
提醒到期时,自动在用户所在的频道发送通知。

## Core Behavior

### 设置提醒

当用户想设置提醒时:

1. **解析时间**:从用户消息中提取时间信息,支持以下格式:
   - 绝对时间:"明天早上9点"、"3月15日下午3点"、"2026-03-20 14:00"
   - 相对时间:"5分钟后"、"1小时后"、"3天后"
   - 自然语言:"今天晚上"、"这周五"、"下周一上午"

2. **提取内容**:识别提醒内容,即用户想被提醒做什么。

3. **确认信息**:向用户确认提醒的时间和内容。

4. **保存提醒**:使用 filesystem 工具将提醒保存到
   `~/.openclaw/data/reminders/reminders.json`。

5. **注册调度**:使用 scheduler 工具注册定时任务。

### 查看提醒

当用户要查看提醒列表时,读取 reminders.json 并按时间排序展示。

### 删除提醒

当用户要取消提醒时,根据编号或内容匹配找到提醒并删除。

### 触发提醒

当提醒时间到达时,scheduler 会回调 OpenClaw,在对应频道发送提醒消息。

## Data Schema

提醒数据使用 JSON 格式存储:

```json
{
  "reminders": [
    {
      "id": "rem_20260328_001",
      "content": "参加下午的产品会议",
      "triggerTime": "2026-03-28T14:00:00+08:00",
      "repeat": null,
      "channelType": "telegram",
      "channelId": "12345678",
      "userId": "user_001",
      "createdAt": "2026-03-28T09:00:00+08:00",
      "status": "pending"
    }
  ]
}

字段说明

字段 类型 说明
id string 唯一标识符,格式 rem_YYYYMMDD_NNN
content string 提醒内容
triggerTime string 触发时间,ISO 8601 格式
repeat object/null 重复规则(见下文)
channelType string 来源频道类型
channelId string 来源频道/用户 ID
userId string 设置提醒的用户
createdAt string 创建时间
status string 状态:pending/triggered/cancelled

重复规则

{
  "repeat": {
    "type": "daily",
    "interval": 1,
    "endDate": "2026-12-31T23:59:59+08:00"
  }
}

可用的 type 值:

  • daily:每天重复
  • weekly:每周重复(可指定星期几)
  • monthly:每月重复(可指定日期)
  • cron:自定义 cron 表达式

Output Format

Reminder Set Successfully

✅ 提醒已设置!

📋 内容:{提醒内容}
⏰ 时间:{YYYY年MM月DD日 HH:mm}
🔁 重复:{重复规则,无则显示"一次性"}
🆔 编号:{ID}

到时候我会在这里通知你。

View Reminder List

📝 你的提醒列表:

1. ⏰ {时间1} - {内容1} [编号: {ID1}]
2. ⏰ {时间2} - {内容2} [编号: {ID2}]
3. 🔁 {时间3} - {内容3}(每天重复)[编号: {ID3}]

共 {N} 个待触发提醒。
输入"取消提醒 {编号}"可删除指定提醒。

Reminder Triggered Notification

🔔 提醒时间到!

📋 {提醒内容}
⏰ 当前时间:{HH:mm}

---
这是你在 {设置时间} 设置的提醒。

Reminder Deleted Successfully

❌ 已取消提醒:{提醒内容}

Error Handling

  • 如果无法解析时间,请用户用更明确的方式表述
  • 如果时间已经过去,提醒用户设置的时间已过期
  • 如果 reminders.json 不存在,自动创建空文件
  • 如果 scheduler 不可用,告知用户提醒功能暂时不可用

Example Interactions

用户:明天早上8点提醒我买咖啡 助手:✅ 提醒已设置! 📋 内容:买咖啡 ⏰ 时间:2026年03月29日 08:00 🔁 重复:一次性 🆔 编号:rem_20260328_001

用户:每周五下午5点提醒我写周报 助手:✅ 提醒已设置! 📋 内容:写周报 ⏰ 时间:每周五 17:00(下次:2026年03月28日) 🔁 重复:每周五 🆔 编号:rem_20260328_002

用户:看看我有哪些提醒 助手:📝 你的提醒列表: 1. ⏰ 03/29 08:00 - 买咖啡 [编号: rem_20260328_001] 2. 🔁 每周五 17:00 - 写周报 [编号: rem_20260328_002] 共 2 个待触发提醒。

用户:取消买咖啡的提醒 助手:❌ 已取消提醒:买咖啡


## 持久化机制

### 存储策略

提醒数据保存在 `~/.openclaw/data/reminders/reminders.json` 中。每次操作(创建、删除、修改)后立即写入文件。

### 重启后恢复

当 OpenClaw 重启时,提醒技能需要:

1. 从 reminders.json 中读取所有 `pending` 状态的提醒
2. 重新向 scheduler 注册定时任务
3. 清理已过期但未触发的提醒(标记为 `missed`,在下次交互时通知用户)

## 时区处理

时间解析和存储必须考虑时区问题:

```markdown
## Timezone Rules

- 默认使用用户所在频道配置的时区
- 如果未配置时区,默认使用 Asia/Shanghai (UTC+8)
- 所有存储时间使用 ISO 8601 带时区格式
- 显示时间使用用户本地时区

测试清单

开发完成后,按以下清单进行测试:

# 1. 重启以加载技能
openclaw restart

# 2. 确认技能已加载
openclaw skill list

然后在聊天中逐项测试:

  • [ ] 设置一个 1 分钟后的提醒,验证是否准时触发
  • [ ] 设置一个绝对时间的提醒
  • [ ] 设置一个周期提醒
  • [ ] 查看提醒列表
  • [ ] 删除一个提醒
  • [ ] 重启 OpenClaw,检查提醒是否恢复

总结

定时提醒 Skill 是一个综合性项目,涉及自然语言时间解析、数据持久化、定时任务调度和多渠道通知推送。掌握了这个 Skill 的开发思路,你就能进一步开发更复杂的自动化工作流技能。

OpenClaw 是开源免费的个人AI助手,支持 WhatsApp、Telegram、Discord 等多平台接入