Daily English learning with spaced repetition — built-in A1–B2 word bank, new words daily, quiz mode (MCQ/fill-in/spelling), streak tracking, level progression.
---
name: english-daily
description: "Daily English learning with spaced repetition — built-in A1–B2 word bank, new words daily, quiz mode (MCQ/fill-in/spelling), streak tracking, level progression."
keywords: 学英语, 英语单词, 今日单词, 英语练习, 英语学习, 词汇, 测验, 打卡, 连续学习, 进度, 间隔重复, 每日推送, English learning, vocabulary, daily words, quiz, streak, spaced repetition, English practice, CEFR, word bank
license: MIT-0
compatibility:
platforms:
- claude-code
- claude-ai
- api
metadata:
openclaw:
runtime:
node: ">=18"
---
# English Daily
> 私人英语学习助手 — 每日单词 · SRS复习 · 测验打卡 · 进度追踪
## 何时使用
- 用户说"学英语""英语单词""今日单词""英语练习"
- 用户想背单词、做填空、做选择题
- 用户说"测验""我的进度""连续打卡""学习报告"
- 用户说"开启推送""每天推英语单词"
---
## 核心命令(全部纯计算,无文件写入)
档案与学习进度存于原生 **MEMORY.md**,由 Agent 维护。脚本从参数拿到档案字段(等级/每日目标/SRS进度/streak/积分等),做纯计算并**输出更新后的 MEMORY.md 区块**供 Agent 回写。
```bash
# 注册(首次使用)→ 输出 MEMORY.md 档案区块,由 Agent 写入原生记忆
node scripts/register.js <userId> <姓名> [等级 A1/A2/B1/B2] [每日目标 1-20]
# 今日学习(每日推送内容)→ 更新 streak 后输出新的 MEMORY.md 区块
node scripts/daily-push.js <userId> --level <等级> --goal <目标> \
--progress '<SRS进度JSON>' --streak <n> --longest <n> --last <日期> --points <n>
# 测验练习(纯计算生成题目)
node scripts/quiz.js <userId> [vocab|sentence|mixed] --level <等级> --progress '<SRS进度JSON>'
# 记录测验积分(Claude 在测验完成后调用)→ 更新积分/SRS后输出新的 MEMORY.md 区块
node scripts/quiz.js <userId> --score <正确题数×10> --level <等级> --progress '<SRS进度JSON>' --points <累计积分>
# 查看进度(升级时输出新的 MEMORY.md 区块)
node scripts/progress.js <userId> --name <姓名> --level <等级> --progress '<SRS进度JSON>' --streak <n> --points <n>
# 推送管理(等级/目标作为参数;cron 由 openclaw 运行时管理)
node scripts/push-toggle.js on <userId> --level <等级> --goal <目标> [--morning 08:00] [--channel telegram]
node scripts/push-toggle.js off <userId>
node scripts/push-toggle.js status <userId>
```
---
## 👤 用户档案与进度 (存于原生 MEMORY.md)
本 skill **不向磁盘写任何用户数据**。用户的等级、每日目标、连续学习(streak)、总积分、以及 SRS 单词进度全部保存在 OpenClaw 原生 **MEMORY.md** 中,由 Agent 读写、跨会话保留。
**流程:**
1. 新用户 → 运行 `register.js`,它输出一段 `<!-- english-daily:profile:<userId> -->` markdown 区块。**把该区块写入 MEMORY.md。**
2. 后续每次学习/测验/看进度 → 先**读取 MEMORY.md** 中该区块,把 等级/每日目标/streak/积分/SRS进度(JSON) 作为参数传给脚本。
3. `daily-push.js`(刷新 streak/上次学习)、`quiz.js --score`(累加积分、更新 SRS)、`progress.js`(升级时)会输出**更新后的区块**——用它覆盖 MEMORY.md 中的旧区块。
4. SRS 进度是一段紧凑 JSON,存在区块的「SRS进度」行;传参时原样作为 `--progress '<JSON>'`,勿手动改写。
档案区块格式示例:
```markdown
<!-- english-daily:profile:telegram_123 -->
## 英语学习档案 · 张三
- userId: telegram_123
- 姓名: 张三
- 母语: zh
- 等级: B1 → 目标: B2
- 每日目标: 5 个新单词
- 连续学习: 7天(最长 12天)
- 上次学习: 2026-07-02
- 总积分: 340
- 已学单词: 28
- 推送: 已开启 telegram 08:00
- SRS进度(勿手改): {"apple":{"interval":7,"repetitions":3,"ease":2.5,"nextReview":"2026-07-09","lastQuality":3}}
<!-- /english-daily:profile -->
```
---
## 学习流程
1. **注册** → `register.js` 输出学习档案区块(等级、每日目标),Agent 写入 MEMORY.md
2. **每日学习** → `daily-push.js` 输出今日复习词 + 新词列表,并回写刷新后的档案区块
3. **测验** → `quiz.js` 生成5题(词义选择或句子填空),Claude 逐题互动
4. **记分** → 测验完成后 Claude 调用 `--score`,脚本更新积分/SRS并输出新区块供回写
5. **进度** → `progress.js` 显示连续打卡、掌握词数、升级进度;升级时输出新区块
> 每一步的档案字段都从 MEMORY.md 读出后作为 CLI 参数传入;脚本本身不落盘。
---
## 推送设置
```bash
node scripts/push-toggle.js on <userId> --level B1 --goal 5 # 默认 08:00
node scripts/push-toggle.js on <userId> --level B1 --goal 5 --morning 07:30 --channel feishu
node scripts/push-toggle.js off <userId>
```
支持渠道:`telegram` / `feishu` / `slack` / `discord`
推送触发时,cron 消息会让 Agent 先从 MEMORY.md 读出该用户的 SRS 进度与 streak,再运行 `daily-push.js`(等级/每日目标已烘焙进 cron 消息),最后回写刷新后的档案区块。cron 由 openclaw 运行时通过 `__OPENCLAW_CRON_ADD__`/`__OPENCLAW_CRON_RM__` 协议管理,skill 不落盘。
---
## 等级体系
| 等级 | 词汇量 | 升级条件(掌握词数) |
|------|--------|---------------------|
| A1 | ~40词 | 掌握40词 → 升A2 |
| A2 | ~50词 | 掌握90词 → 升B1 |
| B1 | ~40词 | 掌握130词 → 升B2 |
| B2 | ~30词 | 最高等级 |
掌握标准:SRS间隔 ≥ 7天(即多次正确复习)
---
## SRS算法说明
采用简化SM-2间隔重复:
- 质量1(遗忘)/ 质量2(困难)→ 明天复习
- 质量3(掌握)→ 间隔 × 1.5
- 质量4(轻松)→ 间隔 × 2.0
- 最大间隔30天
---
## 🔐 数据与隐私 (Data & Privacy)
- **无文件写入**:所有脚本均为纯计算(生成学习内容/测验题/推送 prompt、更新 streak 与 SRS),**不向磁盘写入任何用户数据**,符合 clawhub 无 `fs` 写入规范。`data/users/*.json` 已列入 `.clawhubignore`,不随 skill 打包。
- **原生记忆**:用户的等级、每日目标、连续学习、积分、SRS 单词进度全部保存在 OpenClaw 原生 `MEMORY.md`,由你本机的 Agent 管理,不经过任何外部服务。
- **删除档案**:删除 MEMORY.md 中对应的 `<!-- english-daily:profile:<userId> -->` 区块即清除该用户的全部学习数据。
- **推送隔离**:`telegram`/`feishu`/`slack`/`discord` 由 openclaw 运行时投递,skill 不调用任何渠道 API、不持有 token。
## 注意事项
- 内置单词库(A1-B2共约160词),`data/wordbank.json`(只读,随 skill 打包)
- 所有脚本仅使用 Node.js 内置模块(path 等),无需 npm install
- 用户ID仅允许字母、数字、连字符、下划线(防路径穿越)
- 用户学习数据为本地敏感数据,请勿随 skill 一并打包或公开分享
---
*Version: 1.1.0 · Updated: 2026-07-02*
don't have the plugin yet? install it then click "run inline in claude" again.