Skill: artwebs/workday-reminder (version 1.0.0)

--- name: workday-reminder description: 工作日下班提醒技能。提供工作日下班时间（默认 17:30）的定时提醒、倒计时查询和提醒管理功能。当用户提到"下班提醒"、"下班倒计时"、"还有多久下班"、"设置下班时间"等相关需求时触发。支持工作日和周末区分提醒。 metadata: {"openclaw":{"emoji":"🏃","requires":{"config":["channels.qqbot"]}}} --- # 工作日下班提醒 ## ⚠️ 强制规则 **当用户提到「下班提醒」「下班时间」「还有多久下班」「几点下班」「查看倒计时」等任何涉及下班时间的请求时，必须调用 `cron` 工具来设置定时提醒或计算倒计时，绝对不能只用自然语言回复说"好的"！** 你没有内存或后台线程，口头承诺"到时候提醒"是无效的——只有调用 `cron` 工具才能真正注册定时任务。 --- ## 核心规则 ### 1. 下班提醒设置 **默认下班时间：17:30（工作日）** - 只在工作日提醒（周一到周五） - 周末不提醒 - 使用 cron 表达式：`"30 17 * * 1-5"` - 时区：`Asia/Shanghai` **payload.kind 必须是 `"agentTurn"`，绝对不能用 `"systemEvent"`！** **5 个不可更改字段：** | 字段 | 固定值 | 原因 | |------|--------|------| | `payload.kind` | `"agentTurn"` | `systemEvent` 不会发 QQ 消息 | | `payload.deliver` | `true` | 否则不投递 | | `payload.channel` | `"qqbot"` | QQ 通道标识 | | `payload.to` | 用户 openid | 从上下文获取 | | `sessionTarget` | `"isolated"` | 隔离会话避免污染 | **提醒消息模板：** ```json { "message": "你是一个暖心的下班提醒助手。请用温暖、有趣的方式提醒用户：下班时间到了！要求：(1) 不要回复HEARTBEAT_OK (2) 不要解释你是谁 (3) 直接输出一条暖心的提醒消息 (4) 可以加一句简短的关心或鸡汤的话，比如'辛苦了，好好休息'、'今天也很棒，明天继续加油' (5) 控制在2-3句话以内 (6) 用🏃、🎉、✨等emoji点缀，让提醒更有活力" } ``` **完整的 job 配置：** ```json { "action": "add", "job": { "name": "工作日下班提醒", "schedule": { "kind": "cron", "expr": "30 17 * * 1-5", "tz": "Asia/Shanghai" }, "sessionTarget": "isolated", "wakeMode": "now", "payload": { "kind": "agentTurn", "message": "你是一个暖心的下班提醒助手。请用温暖、有趣的方式提醒用户：下班时间到了！要求：(1) 不要回复HEARTBEAT_OK (2) 不要解释你是谁 (3) 直接输出一条暖心的提醒消息 (4) 可以加一句简短的关心或鸡汤的话，比如'辛苦了，好好休息'、'今天也很棒，明天继续加油' (5) 控制在2-3句话以内 (6) 用🏃、🎉、✨等emoji点缀，让提醒更有活力", "deliver": true, "channel": "qqbot", "to": "{用户的openid}" } } } ``` > **注意：**周期任务（cron）**不加** `deleteAfterRun`，否则每次触发后都会被删除。 --- ### 2. 查看下班倒计时 **计算逻辑：** 1. 获取当前时间（Asia/Shanghai 时区） 2. 确定今天是工作日还是周末 3. 如果是工作日，计算当前时间到 17:30 的剩余时间 4. 如果是周末，告知用户今天不用上班，提示距离下一个工作日下班时间 5. 如果当前时间已过 17:30，提示已经下班 **回复模板：** - **工作日，还未下班：** ``` 🕐 今天是工作日，下班时间 17:30 ⏰ 距离下班还有：X小时Y分钟 💪 加油，马上就可以下班啦！ ``` - **工作日，已经下班：** ``` 🎉 今天已经下班啦！ 💤 好好休息，明天见~ ``` - **周末：** ``` 😌 今天是周末，不用上班哦~ 📅 距离下个工作日下班还有：X天Y小时 ``` **计算示例（使用 Python 脚本）：** ```bash python3 scripts/countdown.py --offtime "17:30" ``` 脚本返回 JSON 格式的倒计时信息： ```json { "today": "工作日", "current_time": "13:45", "off_time": "17:30", "countdown": "3小时45分钟", "already_off": false, "message": "🕐 今天是工作日，下班时间 17:30\n⏰ 距离下班还有：3小时45分钟\n💪 加油，马上就可以下班啦！" } ``` --- ### 3. 提醒管理 #### 查询提醒 使用 `cron` 工具的 `list` 功能： ```json { "action": "list" } ``` **回复模板：** - 有提醒：`📋 你的下班提醒已设置：每天 17:30（工作日）` - 无提醒：`📭 目前还没有设置下班提醒哦~ 说"设置下班提醒"就可以啦！` #### 取消提醒 先 `list` 找到 jobId，然后 `remove`： ```json { "action": "remove", "jobId": "{jobId}" } ``` **回复模板：**`✅ 已取消下班提醒~` #### 修改下班时间 需要先取消旧提醒，再创建新提醒。注意 cron 表达式的格式： - 18:00 → `"0 18 * * 1-5"` - 18:30 → `"30 18 * * 1-5"` - 17:00 → `"0 17 * * 1-5"` --- ## 用户交互场景 ### 场景 1：设置下班提醒 **用户说：** - "设置下班提醒" - "提醒我下班" - "下班时间提醒我一下" - "每天提醒我下班" **AI 行为：** 1. 调用 `cron` 工具创建工作日 17:30 的定时提醒 2. 回复：`🏃 收到！工作日每天 17:30 会提醒你下班~` --- ### 场景 2：查看倒计时 **用户说：** - "还有多久下班" - "下班倒计时" - "几点下班" - "现在到下班还有多久" **AI 行为：** 1. 调用 `scripts/countdown.py` 计算倒计时 2. 输出格式化的倒计时信息 --- ### 场景 3：管理提醒 **用户说：** - "我的提醒有哪些" - "查看下班提醒" - "取消下班提醒" - "改到18点提醒" **AI 行为：** - 查询：调用 `cron list` - 取消：调用 `cron remove` - 修改：先 `remove` 再 `add` --- ## 自定义下班时间 用户可以指定自定义下班时间，格式为 `HH:MM`（24小时制）： **示例：** - "18点下班提醒" → cron: `"0 18 * * 1-5"` - "18:30下班" → cron: `"30 18 * * 1-5"` - "17点下班" → cron: `"0 17 * * 1-5"` **解析逻辑：** 1. 从用户输入中提取时间 2. 转换为 cron 表达式（分 时 * * 1-5） 3. 创建定时提醒 4. 回复确认消息 **cron 表达式生成公式：** ``` "{分钟} {小时} * * 1-5" ``` --- ## Cron 表达式参考 | 下班时间 | Cron 表达式 | |---------|-------------| | 17:00 | `"0 17 * * 1-5"` | | 17:30 | `"30 17 * * 1-5"` | | 18:00 | `"0 18 * * 1-5"` | | 18:30 | `"30 18 * * 1-5"` | | 19:00 | `"0 19 * * 1-5"` | **字段说明：** - 第1个数字：分钟（0-59） - 第2个数字：小时（0-23） - `*`：每天 - `1-5`：周一到周五 --- ## 回复模板总结 | 场景 | 回复 | |------|------| | 设置提醒成功 | `🏃 收到！工作日每天 {时间} 会提醒你下班~` | | 查询有提醒 | `📋 你的下班提醒已设置：每天 {时间}（工作日）` | | 查询无提醒 | `📭 目前还没有设置下班提醒哦~ 说"设置下班提醒"就可以啦！` | | 取消提醒成功 | `✅ 已取消下班提醒~` | | 修改提醒成功 | `✅ 下班提醒已更新为：每天 {时间}（工作日）` | | 倒计时（未下班） | `🕐 今天是工作日，下班时间 {时间}\n⏰ 距离下班还有：{倒计时}\n💪 加油，马上就可以下班啦！` | | 倒计时（已下班） | `🎉 今天已经下班啦！\n💤 好好休息，明天见~` | | 倒计时（周末） | `😌 今天是周末，不用上班哦~\n📅 距离下个工作日下班还有：{倒计时}` |


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)