mcpField
E
english-learner

english-learner

github.com/learnwy其他5401 次安装21 周前更新
代码仓库

关于 english-learner

面向英语学习者的技能,支持查词、记录词汇、纠错、掌握度跟踪和间隔复习。它结合按语言触发的反馈与主动查询、测验和统计模式,并将学习数据保存在本地。

主要功能

  1. 01英语及多语言写作反馈
  2. 02词汇查询与记录
  3. 03掌握度跟踪和间隔复习
  4. 04测验与统计模式
  5. 05本地 SQLite 持久化存储
  6. 06每日推送待复习卡片

适用场景

  1. 01纠正常见英语消息中的问题
  2. 02翻译中文或其他语言的文本
  3. 03通过测验和到期卡片复习词汇
  4. 04跟踪词汇掌握度与学习活动

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/learnwy/skills --skill english-learner

安装后在 Claude Code 中输入/english-learner确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

hooks.json
references/
conditional-reflection.md
data-storage.md
intercept-modes.md
learning-mode.md
scripts/
cli.cjs
scripts/hooks/
session-context.cjs
stop-response-scan.cjs
user-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 进程,无需为每个技能单独启动进程):

事件库函数用途
UserPromptSubmitlib/prompt-scan.ts注入英文/中文拦截提醒
Stoplib/stop-scan.ts每次助手回复后,从回复中找出 2–4 个高级词汇并展示给用户(会询问用户,不会自动保存)
SessionStartlib/session-scan.ts每天推送一次 3 张待复习卡片(间隔重复算法)

每个扫描器都是纯函数 (payload | message) => string | null。副作用(数据库写入)由 lib/*-store.ts 负责。

边界

此技能仅用于:词汇收录、查询、掌握情况跟踪、间隔重复、由拦截驱动的纠正。

此技能不用于:完整的作文编辑、超出 3 个问题上限的语法辅导、中文以外的母语辅导,或偏好的持久化记忆(跨技能统计请使用 learnwy-status)。

另请参阅

评论

支持 Markdown