关于 english-learner
面向英语学习者的技能,支持查词、记录词汇、纠错、掌握度跟踪和间隔复习。它结合按语言触发的反馈与主动查询、测验和统计模式,并将学习数据保存在本地。
主要功能
- 01英语及多语言写作反馈
- 02词汇查询与记录
- 03掌握度跟踪和间隔复习
- 04测验与统计模式
- 05本地 SQLite 持久化存储
- 06每日推送待复习卡片
适用场景
- 01纠正常见英语消息中的问题
- 02翻译中文或其他语言的文本
- 03通过测验和到期卡片复习词汇
- 04跟踪词汇掌握度与学习活动
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ learnwy/ skills --skill english-learner安装后在 Claude Code 中输入/english-learner确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
hooks.jsonreferences/conditional-reflection.mddata-storage.mdintercept-modes.mdlearning-mode.mdscripts/cli.cjsscripts/hooks/session-context.cjsstop-response-scan.cjsuser-prompt-scan.cjs详细介绍
英语学习助手
具备持久化存储、掌握度跟踪和间隔重复功能的个人词汇助手。
三种自动拦截模式(被动,由钩子驱动)
| 模式 | 触发条件 | 操作 |
|---|---|---|
| 英语拦截 | 用户用英语书写(EN 比率 ≥ 0.6) | 如果发现问题:在「💡 English Tip」表格中显示 1–3 条修正建议。如果没有问题:严格显示 "✅ English looks fluent — no issues found."。始终调用 vocab record-input,并传入 had_issues + issue_count。 |
| 中文拦截 | 用户用中文书写(CN 比率 ≥ 0.3,或包含翻译/怎么说/用英语等意图)。始终触发,不会静默跳过。 分级输出:普通消息使用完整模式;≥ 500 个字符或包含代码关键词(代码/编程/bug/修复/重构/编译/部署/配置文件)时使用轻量模式。 | 完整模式:「🌐 中译英」区块——修正建议(如有)+ 2–3 条英文翻译 + 2–3 个词汇 + batch_save。轻量模式:「🌐 中译英 (light)」——1 条英文翻译 + 可选的 1 个词汇。两种模式都会调用 record-input,并传入 language: zh。 |
| 其他语言拦截 | 用户使用 JA/KO/ES/FR/DE/RU/AR 等语言书写正文(EN 比率低,ZH 比率低)。始终触发。 分级处理:普通消息使用完整模式,≥ 800 个字符时使用轻量模式。 | 完整模式:「🌐 Translate & Learn」——检测语言、翻译、提取 2–3 个词汇并自动保存。轻量模式:1 条英文翻译 + 可选的 1 个词汇。两种模式都会调用 record-input,并传入 language: ja/ko/other。 |
所有模式都通过 learnwy-dispatch(UserPromptSubmit + Stop 钩子)接入。它们不会阻断用户的实际任务——先提供修正建议,然后继续处理工作。
每次触发都会向 prose_log 记录一条记录,以便计算流利度、各语言的活动情况以及 30 天趋势(vocab prose-stats)。
详细规则、排除条件和 Markdown 格式:请参阅 references/intercept-modes.md。
主动模式(用户明确请求时)
| 触发条件 | 模式 | 操作 |
|---|---|---|
| 单词/短语/句子 | 查询 | vocab batch_get → 如果是新内容则由 AI 生成 → batch_save → 显示卡片 |
学习/review/quiz | 测验 | quiz generate 5 all low_mastery → 使用 AskUserQuestion 逐项询问用户 |
stats/统计 | 统计 | vocab stats → 显示摘要 |
查单词/学英语/翻译请求 | 查询 | 与单词查询流程相同 |
回复格式(单词卡、短语卡、句子解析、测验提示词、统计信息):请参阅 references/learning-mode.md。
不应触发的情况
只有在输入完全不是正文内容时,拦截才会完全跳过:
- 纯代码/Shell 命令/仅包含文件路径的行(由
looksLikeNonProse匹配) - 单行
Use Skill:指令 - 少于 4 个字符的内容(或包含 CJK 时少于 2 个字符)
技术内容较多或较长的中文不会被跳过——而是进入轻量模式(翻译成 1 个句子,可选提取 1 个词汇)。请参阅记忆中的 [feedback-learning-tools-fire-everywhere]:静默拦截会损害长期数据集,因此我们始终触发,只调整输出详略程度。
英语流利度检查比较特殊:如果没有问题,就显示单行确认 ✅ English looks fluent——这本身就是触发结果,并非跳过。
前置条件
- Node.js ≥ 24(使用内置的
node:sqlite) - 可写入的主目录:数据存储在
~/.learnwy/english-learner/data.db
子命令
单一 CLI 入口 scripts/cli.cjs 会分发所有操作:
# vocab — CRUD + batch ops
node scripts/cli.cjs vocab batch_get '["word1","word2"]'
node scripts/cli.cjs vocab batch_save '[{"word":"...","definition":"...","phonetic":"...","examples":[]}]'
node scripts/cli.cjs vocab get_word|save_word|get_phrase|save_phrase|log_query|stats|update_mastery ...
# corrections — persist usage tips from the English intercept
node scripts/cli.cjs vocab record-correction '[{"original":"imrpove","corrected":"improve","reason":"typo","words":[{"word":"improve","definition":"改进;改善","phonetic":"/ɪmˈpruːv/"}]}]'
node scripts/cli.cjs vocab top-corrections [limit=5]
node scripts/cli.cjs vocab corrections-stats
# prose log — log every prose input (clean or with issues), then aggregate fluency
node scripts/cli.cjs vocab record-input '{"language":"en","text":"<original>","had_issues":false,"issue_count":0}'
node scripts/cli.cjs vocab prose-stats # totals, clean-rate, by-language, 30-day window
node scripts/cli.cjs vocab recent-prose [limit=20]
# sentence — input classification + word extraction
node scripts/cli.cjs sentence classify <text>
node scripts/cli.cjs sentence parse <sentence>
node scripts/cli.cjs sentence batch_check <words>
# quiz — review session
node scripts/cli.cjs quiz generate [count] [type] [focus]
node scripts/cli.cjs quiz review [limit]
node scripts/cli.cjs quiz summary
# spaced repetition + linking
node scripts/cli.cjs link-wiki # cross-link with llm-wiki
# report — generate a self-contained static HTML dashboard from the SQLite DB
# sections: Overview · Due now · Activity · Words · Phrases · Corrections · Fluency · Materials
# Fluency section shows overall + 30-day clean rate, by-language breakdown, and 20 most-recent inputs.
node scripts/cli.cjs report # writes ~/.learnwy/english-learner/report.html
node scripts/cli.cjs report --output <path> # custom destination
node scripts/cli.cjs report --json # also dump intermediate report.html.json
node scripts/cli.cjs report --open # open in default browser after generation
# install/uninstall hooks (registered with .claude/ + .trae/)
node scripts/cli.cjs install --scope global --target both
node scripts/cli.cjs uninstall --scope global --target both
涉及 ≥2 个项目时,必须使用 vocab batch_*。
存储
~/.learnwy/english-learner/
├── data.db # SQLite — words, phrases, history (schema in references/data-storage.md)
└── memory/
├── SOUL.md
└── USER.md
src/shared/db.ts 会自动迁移架构(版本化迁移)。间隔重复列(next_review_at、interval_days)用于驱动 SessionStart,每天推送 3 张到期卡片。
Hooks
通过 learnwy-dispatch 接入(单个 Node 进程,无需为每个技能单独启动进程):
| 事件 | 库函数 | 用途 |
|---|---|---|
UserPromptSubmit | lib/prompt-scan.ts | 注入英文/中文拦截提醒 |
Stop | lib/stop-scan.ts | 每次助手回复后,从回复中找出 2–4 个高级词汇并展示给用户(会询问用户,不会自动保存) |
SessionStart | lib/session-scan.ts | 每天推送一次 3 张待复习卡片(间隔重复算法) |
每个扫描器都是纯函数 (payload | message) => string | null。副作用(数据库写入)由 lib/*-store.ts 负责。
边界
此技能仅用于:词汇收录、查询、掌握情况跟踪、间隔重复、由拦截驱动的纠正。
此技能不用于:完整的作文编辑、超出 3 个问题上限的语法辅导、中文以外的母语辅导,或偏好的持久化记忆(跨技能统计请使用 learnwy-status)。
另请参阅
- references/intercept-modes.md — 详细的英文和中文拦截规则及格式
- references/learning-mode.md — 测验/查询/统计的回复格式
- references/data-storage.md — SQLite 架构和记录 JSON 结构