# 边学打字边记单词的PC工具TakeWords

**URL:** <https://forum.freemdict.com/t/topic/45552>\
**Category:** 软件经验交流展望\
**Created:** [2026 年11 月 13 日 05:42 UTC](https://forum.freemdict.com/t/topic/45552 "2026-11-13T05:42:12Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![masonwu21](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/m/74df32/32.png) [@masonwu21](https://forum.freemdict.com/u/masonwu21)\
发布日期： [2026 年11 月 13 日 05:42 UTC](https://forum.freemdict.com/t/topic/45552/1 "2026-11-13T05:42:12Z")

</div>

[TakeWords.zip](https://forum.freemdict.com/uploads/short-url/mZObn6PBEWdJ38Oyb1MxTNGkSew.zip) (9.4 MB)

 ![ScreenShot_2026-11-13_134105_869](https://forumcdn.freemdict.com/uploads/default/original/3X/9/c/9c1a27e752a23216d326e1acef7130ecf19a39c7.png)

## 核心特性

### 学习闭环

- **听音 → 打字 → 评分 → 发音连读 → 下一词** ，全流程键盘驱动。
- **乱序出题** ：`Srs::Pick` 用 `std::mt19937` 从 `due → fresh → pool` 三级候选里随机抽，不再顺序背。
- **SM-2 简化间隔重复** （`srs.hpp`）：
  - 又快又对（q≥5，且 reps≥3、accuracy≥0.9）→ mastery=2，进入长间隔。
  - **打错过 1 次（q=3）或过慢（q=4）→ interval 压到 ≤6 天 / ≤3 天** ， mastery 停在 1，下次很快再来。
  - 连错（q=2）→ mastery=0，回到短循环。

- **下箭头自评「熟练」** ：`typing.js` 直接把当前词判定为已掌握（mastery=2、interval≥ 21 天）并进入下一词；右箭头为「跳过」（不记掌握度，回炉更短间隔）。
- **词库通关总进度** ：`word-card` 底部 `pass-bar` 显示 `已掌握 / 词库总量 · 百分比`，mastered/total 由后端为权威（`word.grade` / `word.known` 返回），避免前端漂移。
