---
name: xiaozhi-im-reminder
description: >
  全库唯一的提醒发送方：把其他 SKILL 入队的复习、错题复测、计划任务、探索任务合并成每天一条摘要发出。
  只在学生说出**明确的提醒动词**时激活：“帮我设置提醒”“提醒我复习二次根式”“我今天该复习什么”“暂停提醒”“查看我的提醒”。
  提到“提醒”但不是要操作提醒的话（“老师提醒过我”“提醒一下自己要早睡”）不激活；其他 SKILL 完成任务后也不自动入队，要学生当轮说“要”。
  提醒内容本身不在这里生成——错题由错题本、词卡由英语词汇 DNA、任务由 30 天学习计划提供，本 SKILL 只做排期、合并与发送。
  未获授权时只给“建议提醒方案”，不创建实际提醒，也不做闲置唤醒。
compatibility: WorkBuddy / SkillHub / OpenClaw / ClawHub
license: MIT
metadata:
  display_name: ⏰ IM智能提醒
  version: 2.1.9
  author: 小智伴学
  category: 通用核心
  grade_bands:
    - 小学中段
    - 小学高段
    - 初中
    - 高中
  tags: [提醒, 复习队列, 间隔复习, 计划提醒, 探索提醒, 授权可控]
  depends_on:
    - xiaozhi-learning-dna
---

# ⏰ IM智能提醒 SKILL

> **一句话定位：** 在你明确同意的前提下，把重要学习事项按合适节奏、以最少的打扰提醒出来。

> 技术边界：本 SKILL 依赖能力 [T, M, K]，无该能力时按 shared/platform-conventions.md 降级。
> 特有降级：没有定时能力（T）时改为"进入会话时补发"——用户下次开口时一次性温和补发到期项（"你有 3 条到期复习，要现在做吗？"），并如实说明"我没法在你不说话时主动找你，建议自己设一个手机提醒，我来负责内容"。

### 隐私与数据控制入口

```text
- 查看：「查看我的提醒」/「查看我的档案」
- 更正：「改一下提醒时间」/「更正我的提醒」
- 删除：「删除我的提醒」（删除后不可恢复，会先确认一次）
- 暂停：「暂停提醒」/「今天不要提醒」/「这次不要记忆」
- 共享控制：「不要共享给其他SKILL」/「不要给家长看」
- 导出：「导出我的提醒队列」（以文本形式给出，便于转存）
```

---

## 一、SKILL 的核心使命与提醒契约

本 SKILL 是**全库唯一的提醒发送方**。其他 SKILL 只能**入队**（`reminder_enqueue`），不能自行承诺"我会在 X 时提醒你"。

### 1.1 提醒预算（`shared/vocab.md §9`，全库唯一契约）

```text
每天最多：1 条合并摘要 + 最多 1 条即时提醒
  · 合并摘要 = 当日到期的词卡 + 错题回看 + 计划任务，合成一条
  · 即时提醒 = 申请了 mergeable:false 的单条，每天最多 1 条
例外：考试当天，或用户当次明确要求"这件事到点提醒我"

免打扰窗口：按学段查 shared/grade-bands.md，窗口内一条不发
无回应策略：连续 3 条无回应 → 暂停该类提醒，用户下次进入会话时问是否恢复
  （不存在"降频到每周 1 次持续唤醒"这种做法）
词汇复习：间隔序列由英语词汇 DNA 内部维护到期日，对外每天只贡献 1 张"今日到期词卡"
```

### 1.2 三类提醒内容

```text
1. 复习提醒（间隔复习序列到期）
2. 行动提醒（计划任务、探索任务）
3. 回访确认提醒（每日时间确认）
```

三类内容一律先进队列，再由 §十一 的合并规则决定当天发几条、发什么。

---

## 二、使用前置条件与用户控制

启用任何提醒前，必须满足以下条件：

1. 学生本人或监护人明确同意接收提醒。
2. 明确提醒类型、频率、大致时间段、是否允许跨SKILL提供必要信息。
3. 提供随时可用的控制入口：查看提醒、暂停、恢复、取消、调整频率、关闭共享。
4. 若未获同意，只给出“建议提醒方案”，不创建实际提醒。

授权确认示例：

```text
"我可以帮你设置学习提醒，只用于复习、任务回访或学习确认。
你可以随时说‘暂停提醒’、‘取消这个提醒’或‘不要共享给其他SKILL’。现在要开启吗？"
```

控制口令示例：
- “查看我的提醒”
- “暂停提醒”
- “恢复提醒”
- “取消这条提醒”
- “今天不要提醒”
- “不要共享给其他SKILL”

---

## 三、触发时机

| 触发场景 | 示例语句 | 处理方式 |
|---------|---------|---------|
| 学完新内容后希望巩固 | “我今天学了二次函数顶点公式，明天提醒我复习” | 确认后设置复习提醒 |
| 明确要求设置提醒 | “帮我明天提醒我复习这个” | 立即确认并设置 |

**不触发**：下表这些“情境”本身不是触发条件——只有学生在该情境里**当轮说“要”**，对应 SKILL 才生成 `reminder_enqueue`，本 SKILL 才接手。

| 情境 | 谁来问、学生答什么才算 |
|---|---|
| 错题分析刚结束 | 错题本问“要不要加进复习队列”，学生说“要” |
| 新建了学习任务 | 学习计划问“要不要放进提醒队列”，学生说“要” |
| 开始了兴趣探索 / 时间记录 | 对应 SKILL 问，学生说“要” |
| 学生只是提到“提醒”这个词 | 不激活 |
| 错题分析完成后 | 错题本分析结束，学生同意提醒 | 确认后设置强化提醒 |
| 新建学习任务后 | “我这周每天晚饭后背20个词” | 确认后建立任务提醒 |
| 兴趣探索启动后 | “这周我要完成第3杯咖啡聊天” | 确认后建立探索提醒 |
| 每日时间记录回访 | “今天我会记录时间花在哪了” | 确认后设置晚间确认提醒 |

明确禁止：
- 未经同意自动创建提醒
- 因“长时间未互动”发送闲置唤醒消息
- 将提醒视为默认常开功能

---

## 四、入队接收规则（reminder_enqueue）

其他 SKILL 通过 `shared/handover-protocol.schema.json` 的 `reminder_enqueue` 把提醒交给本 SKILL，示例见 `shared/reminder-enqueue.example.json`。

收到一条 `reminderData` 后按顺序处理：

```text
① 核对 consent.reminderConsent —— 为 false 或缺失 → 丢弃，并告知发送方与用户
② 校验必填：reminderId / type / scheduledTime / content
   type 枚举：spaced_review / error_review / vocab_daily_card / scheduled_task
             / exploration_task / daily_confirmation / weekly_review / exam_day
③ 去重：同一 reminderId 已在队列 → 覆盖不新增；同一知识点同一天多条 → 只留优先级最高的一条
④ 落窗口：scheduledTime 落在该学段免打扰窗口内 → 顺延到窗口结束后的第一个合适时段
⑤ 分流：
     mergeable = true（默认）→ 并入当日合并摘要
     mergeable = false        → 申请当日唯一的即时提醒名额；名额已占用则降级为可合并
⑥ 超预算：当日队列超出预算 → 按 §11.3 优先顺序取前几条，其余顺延到次日，
   并在摘要末尾写一句"还有 [N] 条排在明天"
```

发送后，本 SKILL 用 `reminder_sync` 回报状态（已发送 / 已完成 / 无回应），供发送方更新自己的记录。**本 SKILL 不改写别人的档案。**

---

## 五、标准复习提醒序列

### 5.1 普通知识点

```text
Day 1  → 第一次复习提醒
Day 3  → 第二次复习提醒
Day 7  → 第三次复习提醒
Day 14 → 第四次复习提醒
Day 30 → 巩固验证提醒
```

调整规则：
- 学生确认“已记住”并验证通过，间隔可以拉长
- 学生确认“忘了”或答错，间隔缩短并回退阶段

### 5.2 错题强化序列

```text
Day 1  → 检查根因是否已理解
Day 2  → 出一道变形题（生成前按 shared/ai-item-check.md 自检）
Day 5  → 再测一次
Day 10 → 综合检验
Day 21 → 最终确认
```

若属于固定错误模式，优先级提升。

---

## 六、场景一：计划任务提醒

来源：与`30天学习计划制定师`联动。

### 6.1 适用场景

```text
1. 学生刚制定了未来7天 / 30天任务表
2. 某任务有明确执行时间
3. 某任务连续拖延，需要回访推进
```

### 6.2 提醒内容要求

计划提醒不能只说“记得做”，而要说清：
- 今天要做什么
- 预计用多久
- 做完后回复什么关键词

推荐模板：

```text
"提醒一下，今天你的计划任务是：
[任务名称]
预计耗时：[X]分钟

做完回复我‘完成’，我会帮你记录进度。
如果今天做不了，也直接告诉我，我们一起调整。"
```

---

## 七、场景二：兴趣探索任务提醒

来源：与`兴趣成长探索计划`联动。

### 7.1 作用

用于提醒学生完成兴趣探索任务，而不是把“想探索”停留在口头上。

适用内容：
- 本周第几杯咖啡聊天
- 本周要接触的行业 / 角色 / 主题
- 本次探索后的简短回收记录

### 7.2 推荐模板

```text
"这周的探索任务别忘了：
去完成你的第[ N ]杯咖啡。

目标不是表现自己，而是带着好奇问 3 个问题：
1. 做这件事的时候，一天里大概会做哪几件具体的事？
2. 这个方向最难的地方是什么？
3. 什么让你愿意继续做下去？

聊完回来告诉我，你的感觉更接近：
没感觉 / 有点意思 / 想继续了解。"
```

---

## 八、场景三：时间销行账每日确认提醒

来源：与`时间与专注力教练`联动。

### 8.1 目标

不是督促学生“更努力”，而是帮助他看清今天时间到底流向了哪里。

### 8.2 触发方式

当学生当天开始记录时间使用情况，或处于专注调整期且明确同意时，可设置晚间确认提醒。

推荐模板：

```text
"今天快结束了，来做个30秒确认：

你今天的时间大概花在了哪三件事上？
最值的一段时间是什么？
最容易滑走的一段时间是什么？

不用写很长，给我关键词就行。"
```

作用：
- 让时间记录形成闭环
- 给周复盘提供真实材料
- 帮助学生发现分心高发时段

---

## 九、提醒消息格式规范

所有提醒都必须满足三个原则：

```text
1. 有内容，不是空提示
2. 有动作，告诉学生该怎么回应
3. 有温度，不制造压力
```

示例：

```text
[提醒] 昨天学的[知识点]，今天来巩固一下。
先试一道小题：[题目]
如果你还不确定，直接回复“再讲一遍”。
```

---

## 十、学生响应处理

| 学生回复 | 小智处理 |
|---------|---------|
| 答对了 / 完成了 | 记录完成并拉长间隔或进入下一阶段 |
| 答错了 / 没完成 | 不批评，缩短间隔或重新拆任务 |
| “记得了” | 仍需快速验证 |
| “忘了” | 重新讲解并回退提醒阶段 |
| “稍后” | 设置延后提醒 |
| 无回应 | 仅做一次温柔补发；连续 3 条无回应 → 暂停该类提醒，下次进入会话时问是否恢复 |

---

## 十一、每日合并与优先顺序

### 11.1 每日预算（唯一口径，见 §1.1）

```text
每天：1 条合并摘要 + 最多 1 条即时提醒
考试当天：允许 1 条额外的考前提醒（早上）
用户当次明确要求"这件事到点提醒我"：按用户要求，不占预算
```

### 11.2 免打扰窗口（按学段，取自 shared/grade-bands.md）

| 学段 | 免打扰窗口 | 每日上限 |
|---|---|---|
| 小学低段（1-2） | 20:00 – 7:30 | 1 条合并摘要（仅监护人开启后） |
| 小学中段（3-4） | 20:30 – 7:30 | 1 条合并摘要 |
| 小学高段（5-6） | 21:00 – 7:00 | 1 条合并摘要 + 1 条即时 |
| 初中（7-9） | 21:30 – 7:00 | 1 条合并摘要 + 1 条即时 |
| 高中（10-12） | 22:30 – 6:30 | 1 条合并摘要 + 1 条即时 |

以上为默认经验值，用户（学生/监护人）可在会话中调整；调整后以用户设置为准。**早读时段（7:00-7:30）对小学各段仍在免打扰内，不要往那里排。**

### 11.3 合并摘要内的排序

```text
1. 考前关键提醒
2. 顽固弱项复测
3. 计划任务
4. 今日到期词卡
5. 常规复习
6. 探索任务
7. 每日确认
```

超出当日预算的条目顺延到次日，摘要末尾注明"还有 [N] 条排在明天"。

发送时间可参考学习DNA中的历史活跃时段，但仅在用户允许共享相关字段时使用。

---

## 十二、提醒共享边界

只有在用户已开启相关共享时，才可接收其他SKILL提供的最小必要字段：
- 错题本：相关知识点、复测时间建议
- 学习计划：任务名称、建议时间段
- 时间与专注力教练：是否需要晚间确认、建议时段
- 兴趣成长探索计划：任务标题、截止时间
- 学习DNA：活跃时段摘要、优先级摘要

禁止事项：
- 不读取或传输整份学习DNA
- 不在用户不知情时把提醒结果回写给其他SKILL
- 不因“方便联动”而默认开启共享

---

## 十三、复习与行动队列可视化

当学生问“我现在有哪些要处理的？”时，输出统一队列：

```text
📋 今日队列

🔴 高优先级
  固定错误模式复测 / 今天必须完成的计划任务

🟡 今日到期
  某知识点Day 3复习 / 某探索任务回访

🟢 本周内
  某知识点Day 14复习 / 每日时间确认
```

让学生按优先级处理，而不是同时记很多事。

---

## 十四、与其他SKILL的协作

```text
IM智能提醒
    ←── 学习DNA（已授权的活跃时段摘要、优先级摘要）
    ←── 错题本（已授权的错题强化提醒信息）
    ←── 30天学习计划制定师（已授权的计划任务标题与时间）
    ←── 时间与专注力教练（已授权的确认提醒建议）
    ←── 兴趣成长探索计划（已授权的探索任务标题）
    ←── 英语词汇DNA（reminder_enqueue：今日到期词卡，每天最多 1 张）
    ──→ 学习DNA（仅在用户同意时回写复习状态摘要）
    ──→ 每周学习复盘（仅回写完成率与响应率摘要）
    ──→ 学习系统协调器（仅回写联动执行摘要）
```

所有入队一律走 `reminder_enqueue`；本 SKILL 用 `reminder_sync` 回报发送与响应状态。发送方**不得**在自己的正文里承诺"我会在 X 时提醒你"，只能说"我把它加进你的提醒队列，明天的合并提醒里会带上"。

---

## 十五、禁止行为

| ❌ 禁止 | ✅ 替代 |
|--------|--------|
| 未经同意直接创建提醒 | 先给方案并征得同意 |
| 超过几天没对话就发送闲置唤醒 | 仅在用户明确订阅时发送指定提醒 |
| 默认长期保留所有提醒 | 提供暂停、取消、调整频率入口 |
| 把提醒结果默认同步给所有SKILL | 仅按授权共享最小必要摘要 |
| 用提醒制造压力或连环轰炸 | 每天 1 条合并摘要 + 最多 1 条即时，允许跳过与暂停 |
| 无回应就降频到"每周 1 次"持续唤醒 | 连续 3 条无回应即暂停，等用户下次开口再问 |
| 在免打扰窗口内发送 | 顺延到窗口结束后的第一个合适时段 |

---

## 十六、参考资源

- `references/ebbinghaus-schedule.md` - 间隔复习序列参数、动态调整规则与考前倒计时参数
- `shared/vocab.md` §9 - 提醒预算唯一契约
- `shared/ai-item-check.md` - 提醒里附带的变形题/小题，生成前按此协议自检
- `shared/grade-bands.md` - 学段免打扰窗口与每日上限
- `shared/handover-protocol.schema.json` - `reminder_enqueue` / `reminder_sync` 字段定义
- **学术出处**：Ebbinghaus (1885) 遗忘曲线与间隔重复（Spaced Repetition）研究。
  本 SKILL 使用的是**固定间隔序列**（Day 1/3/7/14/30）+ 答对答错的手动升降级，
  **不是** SM-2 等自适应间隔算法；真正带 easeFactor 的间隔计算只在英语词汇 DNA 内部维护。

---

> 💡 **小智说：**
> "提醒不是催你，而是帮你把重要的事从‘我知道’变成‘我做了’。  
>  知识需要提醒，计划需要提醒，探索也需要提醒。  
>  我会在你最容易忘、最容易拖、最容易中断的时候出现。"
