运行时依赖
安装命令
点击复制技能文档
智能提醒助手 - Smart Reminder 核心能力 本技能提供四个维度的提醒能力: 人格化提醒 — 固定 5 种人格风格,提醒消息完全按该人格的语调、用词、表情符号输出 昵称个性化 — 用户可设置自己的昵称,全局应用于所有提醒消息 游戏化进度追踪 — 多频次任务(如"每周一三五运动")显示进度条,风格化呈现 延续性反馈 — 记录每次提醒的完成状态,影响到下一次提醒的措辞 快速使用 用户触发句式示例 场景 用户说 你应该 单次提醒 "提醒我 30 分钟后喝水" 创建 cron at 任务,存储 config,带上人格发送提醒 单次指定时间 "明天下午 3 点提醒我开会" 同上 多频次任务+人格 "设定每周一三五晚 8 点运动,要可爱的提醒风格" 创建 3 个 cron 任务(或一个 cron 表达式),存储 task config,包含 progress 指定人格(5种任选) "元气风格提醒我每天早上跑步" 同上,人格设为 "energetic" 无指定人格 "提醒我多喝水" 默认用 "gentle" 风格 设置昵称 "叫我小可爱" / "别叫我名字了" 更新 config.nickname,后续所有提醒使用该昵称 5 种人格一览(详见 personalities.md) 名称 key 特点 颜文字风格 🎀 可爱 cute 软萌、撒娇、使用大量颜文字 (。>ω<。) ♡~ ⚡ 元气 energetic 热血、干劲满满、感叹号多 💪🔥✨ 📋 认真 formal 正经、简洁、称呼礼貌 少用emoji 🗡️ 毒舌 sarcastic 傲娇、调侃、激将法 😒~哼 🌸 温柔 gentle 暖心、体贴、知心大姐姐/哥哥 ☺️💗 工作流程 Step 1: 用户提出提醒需求 解析用户的自然语言请求,提取: 任务名称(如"运动"、"喝水") 时间/频率(如"30分钟后"、"每天早8点"、"周一三五") 人格偏好(如"可爱风格"、"元气一点"——未指定则默认温柔) 总频次(仅多频次任务需要,如"每周运动3次"→totalSessions=3) 昵称设置(如"叫我小可爱"→更新全局昵称;"别叫昵称"→清空) Step 2: 存储任务配置 将任务写入状态文件:memory/smart-reminder-tasks.json 文件结构: { "config": { "nickname": "小可爱" }, "tasks": { "task_": { "id": "task_abc123", "name": "运动训练", "schedule": { "type": "cron", "expression": "0 20 1,3,5", "tz": "Asia/Shanghai" }, "personality": "cute", "delivery": { "channel": "openclaw-weixin", "sessionKey": "agent:main:openclaw-weixin:direct:...@im.wechat" }, "tracking": { "totalSessions": 3, "completedSessions": 0, "weekStart": "2026-05-11", "history": [], "sinceLastCompletion": 0 }, "createdAt": "2026-05-11T12:00:00+08:00", "enabled": true } } } config.nickname — 用户昵称,所有提醒消息的 {nickname} 占位符替换为此值 未设置时各人格使用默认称呼(见 personalities.md 末尾) 字段说明: schedule.type — "at"(单次)或 "cron"(重复) personality — 人格 key delivery — 必需字段! channel — 目标频道 ID(如 "openclaw-weixin"、"telegram"、"main" 表示当前会话) sessionKey — 目标会话 key(从 openclaw sessions 获取,用于 sessions_send) 跨频道提醒(如从 Control UI 设定但发到微信)必须设置此字段 tracking.totalSessions — 每周目标次数(仅多频次) tracking.completedSessions — 本周已完成次数 tracking.weekStart — 当前追踪周的周一 YYYY-MM-DD tracking.history — 数组,每项 {date, completed, feedback?} tracking.sinceLastCompletion — 连续未完成次数(用于鞭策) Step 3: 创建 cron 任务 ⚠️ 警告:存储 task 配置后必须同时创建 cron 任务! 光存 config 不会触发任何提醒。 必须使用 cron 工具创建任务(不是 CLI!CLI 有设备范围限制)。 调用 cron(add) 工具: 单次提醒 → schedule: {kind: "at", at: "ISO-8601 with offset"} 重复提醒 → schedule: {kind: "cron", expr: "...", tz: "Asia/Shanghai"} 所有提醒 → payload: {kind: "systemEvent", text: "SMART_REMINDER task_id"} 单次自动清理 → deleteAfterRun: true cron 的 systemEvent 文本格式: cron 触发后发送 systemEvent 给主 session,文本必须包含 task ID。 SMART_REMINDER task_abc123 cron 调用示例(工具调用): { "action": "add", "job": { "name": "SMART_REMINDER_task_abc123", "schedule": { "kind": "at", "at": "2026-05-12T20:00:00+08:00" }, "payload": { "kind": "systemEvent", "text": "SMART_REMINDER task_abc123" }, "sessionTarget": "main", "deleteAfterRun": true } } 重要: 不要使用 openclaw cron add CLI 命令 使用 cron 函数工具(tool),它是 OpenClaw Gateway 原生支持的 cron job 的 name 设为对应 task ID 方便管理 Step 4: cron 触发 → 生成提醒消息 当收到 SMART_REMINDER task_xxx 系统事件时(同频道提醒): 读取任务配置 — 从 skills/memory/smart-reminder-tasks.json 加载该 task 读取昵称 — 从 config.nickname 获取;若无则按人格使用默认称呼 读取进度上下文 — 检查 tracking.history 和 sinceLastCompletion 生成个性化提醒 — 将 personalities.md 模板中的 {nickname} 替换为用户昵称 直接在当前 session 回复 — 提醒消息 + 询问完成状态 Step 4b: 跨频道投递(从网页端发到微信) ⚠️ 只有需要跨频道投递时用此方式! 同频道提醒用 Step 4 的 systemEvent 方式。 如果用户通过 Control UI(网页)设定提醒但想在微信接收,需要使用 cron 的 delivery 机制。 不需要 systemEvent! 直接创建 agentTurn 类型的 cron job,通过 delivery 投递到微信: cron 调用示例: { "action": "add", "job": { "name": "SMART_REMINDER_task_xxx", "schedule": {"kind": "at", "at": "ISO-8601"}, "payload": { "kind": "agentTurn", "message": "用温柔风格告诉昵称该喝糖水了,发完就结束", "timeoutSeconds": 120, "lightContext": true }, "sessionTarget": "isolated", "deleteAfterRun": true, "delivery": { "mode": "announce", "channel": "openclaw-weixin", "to": "用户的xxx@im.wechat", "accountId": "微信bot的AccountId" } } } 关键参数: sessionTarget: "isolated" — 必须用孤立 session timeoutSeconds: 120 — agent 启动可能需要一些时间,给充足超时 lightContext: true — 轻量标记,减少加载时间 delivery.mode: "announce" — 投递模式 delivery.channel: "openclaw-weixin" — 目标频道 delivery.to: "用户@im.wechat" — 微信用户的 ID(从微信 session key 获取) delivery.accountId: "bot的AccountId" — 微信 bot 的 account ID(从 channels status 获取) 注意: delivery.to 和 delivery.accountId 缺一不可 sessions_send 不可行(受 visibility=tree 限制),必须用 delivery 机制 同频道提醒(用户在哪