Install
openclaw skills install @thcjp/smart-reminder-freeopenclaw skills install @thcjp/smart-reminder-free不是教你创建提醒,而是教你理解用户的自然语言事件描述。中文解析、结构化存储、智能查询,一站式日程助手。
用户说"后天上午10点有个会"、"下个月2号我妈生日"、"周五下午三点交报告"——如何把这些自然语言转化为结构化事件并设置提醒?本技能聚焦自然语言事件捕获与智能管理,帮助Agent成为用户的私人日程助手。
┌─────────────────────────────────────────────────────────┐
│ 智能提醒助手 (免费版) │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────────────────────────────────┐ │
│ │ 自然语言捕获层 │ │
│ │ "后天上午10点有个会" │ │
│ │ "下个月2号我妈生日" │ │
│ │ "周五下午三点交报告" │ │
│ └────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────────────────────────┐ │
│ │ 事件解析层 │ │
│ │ title │ start_datetime │ notes │ │
│ │ reminders_offsets │ repeat │ │
│ └────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────────────────────────┐ │
│ │ 澄清提问层(最小化) │ │
│ │ 仅在关键信息模糊时提问 │ │
│ └────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────────────────────────┐ │
│ │ 存储层(events.yml) │ │
│ │ 工作区数据文件,支持Git同步 │ │
│ └────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────────────────────────┐ │
│ │ 提醒调度层 │ │
│ │ 默认偏移:24h前 / 1h前 / 10m前 │ │
│ └────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────────────────────────┐ │
│ │ 查询接口层 │ │
│ │ "我最近有什么安排?" │ │
│ └────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
用户说"后天上午10点有个会":
详细代码示例已移至
references/detail.md
配置完整的提醒调度:
详细代码示例已移至
references/detail.md
配置中文自然语言解析:
详细代码示例已移至
references/detail.md
结果处理: 执行完成后,查看输出结果确认操作状态。成功时输出包含处理摘要和结果数据;失败时根据错误信息排查问题,查阅错误处理章节获取恢复步骤。
支持中文自然语言事件描述:
| 输入模式 | 解析结果 | 示例 |
|---|---|---|
<相对日期><时段><事件> | 日期+时间+标题 | "后天上午10点有个会" |
<月份><日期><事件> | 具体日期+标题 | "下个月2号我妈生日" |
<周几><时段><事件> | 周几+时间+标题 | "周五下午三点交报告" |
<相对日期><时段><事件> | 日期+时间+标题 | "明天上午9点站会" |
支持的日期表达:
支持的时间表达:
输入: 用户提供自然语言事件捕获所需的指令和必要参数。 处理: 按照skill规范执行自然语言事件捕获操作,遵循单一意图原则。 输出: 返回自然语言事件捕获的执行结果,包含操作状态和输出数据。
事件存储在 ~/.workspace/reminders/events.yml:
- id: evt_1700000000
title: 团队周会
start_datetime: "2026-07-20T10:00:00"
notes: 讨论Q3规划
reminders_offsets:
- 1440 # 24小时前
- 60 # 1小时前
- 10 # 10分钟前
repeat: none
timezone: Asia/Shanghai
created_at: "2026-07-18T10:00:00"
status: active
- id: evt_1700000001
title: 妈妈生日
start_datetime: "2026-08-02T09:00:00"
notes: 记得提前准备礼物
reminders_offsets:
- 1440
- 60
- 10
repeat: yearly
timezone: Asia/Shanghai
created_at: "2026-07-18T10:01:00"
status: active
字段说明:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | string | 是 | 事件唯一ID |
title | string | 是 | 事件标题 |
start_datetime | ISO 8601 | 是 | 开始时间 |
notes | string | 否 | 备注 |
reminders_offsets | number[] | 是 | 提醒偏移(分钟) |
repeat | enum | 是 | none/yearly(免费版) |
timezone | string | 是 | IANA时区 |
created_at | ISO 8601 | 是 | 创建时间 |
status | enum | 是 | active/cancelled/done |
输入: 用户提供事件结构化存储所需的指令和必要参数。 处理: 按照skill规范执行事件结构化存储操作,遵循单一意图原则。 输出: 返回事件结构化存储的执行结果,包含操作状态和输出数据。
| 偏移 | 说明 | 适用场景 |
|---|---|---|
| 1440分钟(24小时) | 提前一天提醒 | 重要事件预先准备 |
| 60分钟(1小时) | 提前一小时提醒 | 即将开始的事件 |
| 10分钟(10分钟) | 提前十分钟提醒 | 最后提醒 |
设计理由:三级偏移覆盖"预先准备-即将开始-最后提醒"三个阶段,平衡提醒充分性与打扰频率。
输入: 用户提供默认提醒偏移所需的指令和必要参数。 处理: 按照skill规范执行默认提醒偏移操作,遵循单一意图原则。 输出: 返回默认提醒偏移的执行结果,包含操作状态和输出数据。
仅当关键信息模糊时才提问:
| 模糊情况 | 澄清问题 | 示例 |
|---|---|---|
| 日期无法解析 | "请问是哪一天?" | "有个会"(无日期) |
| 时间缺失 | "请问是几点?" | "后天有个会"(无时间) |
| 月份歧义 | "请问是哪个月?" | "2号有个会"(无月份) |
| 标题不明确 | "请问事件内容是?" | "后天上午10点"(无事件) |
原则:
输入: 用户提供最小化澄清原则所需的指令和必要参数。 处理: 按照skill规范执行最小化澄清原则操作,遵循单一意图原则。 输出: 返回最小化澄清原则的执行结果,包含操作状态和输出数据。
sr.query_upcoming(days=7)
sr.query_range(start, end)
sr.search_by_title("会议")
查询回复格式:
你最近7天的安排:
1. 2026-07-20 10:00 - 团队周会(讨论Q3规划)
2. 2026-07-22 15:00 - 客户评审会议
3. 2026-07-25 09:00 - 每日站会
共3个事件。
输入: 用户提供事件查询接口所需的指令和必要参数。 处理: 按照skill规范执行事件查询接口操作,遵循单一意图原则。 输出: 返回事件查询接口的执行结果,包含操作状态和输出数据。 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:与提醒助手免费版、含中文解析、默认提醒偏移与基、础查询、智能提醒助手免费、版是面向、Agent、的自然语言事件捕、获与提醒系统、不同于提醒创建引、本技能聚焦、如何理解用户的自、然语言事件描述并、智能管理、事件解析、基础查询、Use、when、模型调用、智能对话、LLM、应用时使用、不适用于需要、确定性的关键决策等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。
input_params参数,支持创建/查询/导出操作角色:职场人士
场景描述:用户说"后天上午10点有个会",捕获事件并设置提醒。
sr = SmartReminder()
parser = NaturalLanguageParser()
parsed = parser.parse("后天上午10点有个会")
missing = parser.needs_clarification(parsed)
if missing:
print(f"请问补充以下信息:{', '.join(missing)}")
else:
sr.capture(
title=parsed["title"],
start_datetime=parsed["start_datetime"],
notes="",
repeat=parsed["repeat"]
)
角色:注重家庭的人
场景描述:用户说"下个月2号我妈生日",捕获为年度重复事件。
parsed = parser.parse("下个月2号我妈生日")
sr.capture(
title=parsed["title"],
start_datetime=parsed["start_datetime"],
notes="记得提前准备礼物",
repeat="yearly" # 年度重复
)
角色:项目经理
场景描述:用户说"周五下午三点交报告",捕获截止日期提醒。
parsed = parser.parse("周五下午三点交报告")
sr.capture(
title=parsed["title"],
start_datetime=parsed["start_datetime"],
notes="项目A阶段性报告",
repeat="none"
)
角色:忙碌的职场人士
场景描述:用户问"我最近有什么安排?",返回近期事件列表。
upcoming = sr.query_upcoming(days=7)
if not upcoming:
print("最近7天没有安排")
else:
print("你最近7天的安排:\n")
for i, event in enumerate(upcoming, 1):
dt = datetime.fromisoformat(event["start_datetime"])
print(f"{i}. {dt.strftime('%Y-%m-%d %H:%M')} - {event['title']}")
if event["notes"]:
print(f" 备注:{event['notes']}")
免费版支持中文自然语言:(1) 相对日期(今天/明天/后天)+ 时段(上午/下午X点)+ 事件;(2) 周几(周一至周日、下周一至下周日)+ 时段 + 事件;(3) 具体日期(X月X号)+ 事件。例如"后天上午10点有个会"、"周五下午三点交报告"、"下个月2号我妈生日"。
事件存储在工作区的 ~/.workspace/reminders/events.yml 文件。使用YAML格式,便于阅读与编辑。文件可纳入Git版本控制,实现跨设备同步与备份。事件数据与技能本身分离,便于迁移。
默认在事件开始前的24小时、1小时、10分钟各提醒一次,覆盖"预先准备-即将开始-最后提醒"三个阶段。专业版支持自定义偏移序列。所有提醒通过cron作业调度,投递到Telegram(免费版默认渠道)。
采用"最小化澄清"原则:仅当关键信息(日期、时间、标题)模糊时才提问,一次只问最少必要的问题。例如用户说"有个会"(无日期),仅问"请问是哪一天?"。优先使用上下文推断(如"生日"默认年度重复),避免连续追问。
直接问"我最近有什么安排?"、"下周有什么?"等自然语言查询。助手会读取events.yml,计算近期事件(默认7天),按时间排序返回列表。每个事件显示时间、标题与备注。
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| Python 3.8+ | 运行时 | 必需 | 从python.org安装 |
| PyYAML | Python包 | 必需 | pip install pyyaml |
| Agent Gateway | 运行时 | 必需 | Agent平台内置 |
| skill-platform CLI | 工具 | 必需 | Agent平台内置 |
| Telegram Bot | 投递通道 | 否 | 注册Telegram Bot获取 |
| LLM API | API | 必需 | 由Agent平台内置LLM提供 |
本技能基于原始开源自然语言提醒作品改进,保留原始版权声明:
本改进作品在原始作品基础上进行了深度差异化改造,包括但不限于:
原始MIT license允许使用、复制、修改和分发,需保留版权声明。本改进作品在保留原始版权声明的基础上添加自有署名,完全符合MIT license要求。
本免费体验版限制以下高级功能:
解锁全部功能请使用专业版:smart-reminder-pro
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
输入:用户提供操作指令和必要参数
输出:返回执行结果,包含操作状态和输出数据
用户: 执行核心功能
Skill: 正在执行核心功能...
Skill: 执行完成,结果如下: 操作成功