xiaozhi-im-reminder · v2.1.9 · 2026-09-06 · sha256 e7deabcc38602891

xiaozhi-im-reminder v2.1.9A

Immutable. This exact content is served forever at /api/v1/blob/e7deabcc38602891.

---
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 内部维护。

---

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