Skip to content

Repository files navigation

FastWords

FastWords

菜单栏里的极简背单词应用 · 间隔重复 · 离线中英词典 A minimalist menu-bar vocabulary app for macOS — spaced repetition, offline dictionary, exam word books.

Platform Swift License Release Algorithm

中文 · English


中文

FastWords 是一款常驻 macOS 菜单栏的背单词工具:单词安静地待在菜单栏,工作间隙瞥一眼就能复习。它把 科学的间隔重复(FSRS-6���离线中英词典 + 考试词书 装进一个轻量、纯本地、无账号、无广告的应用里。

⚠️ FastWords 是 菜单栏应用,没有 Dock 图标。启动后请看屏幕右上角菜单栏W 图标。

✨ 功能

  • 🧠 FSRS-6 间隔重复 — 采用业界最新的 FSRS-6 调度算法(Anki 同款思路,纯 Swift 实现),建模你的遗忘曲线,按目标记忆率精准安排复习;自动判定「已掌握」,告别 SM-2 的 ease hell。
  • 📖 离线中英词典 — 内置约 15,000 个考试高频词(基于开源 ECDICT),带 中文释义 + 英英释义 + 音标,完全离线、秒出。
  • 🎓 8 本考试词书 — 中考 / 高考 / 四级 / 六级 / 考研 / 托福 / 雅思 / GRE,一键加载切换,各自独立保存进度。
  • 🔊 发音 — macOS 内置 TTS(美音 / 英音、可调语速、离线),有真人音频时优先播放并缓存;US / UK 双音标。
  • 📚 多词书管理 — 可同时维护多本词书、随时切换;导入时合并去重并保留已有进度
  • 🤖 专属 AI 记忆助理 — 支持自定义你的身份/职业/语境,自动生成属于你个人的「词根拆解」与「幽默串记」;当某词频繁出错时,自动补充「易混词辨析」。
  • ☁️ iCloud 无缝同步 — 零配置开启,进度自动在 Mac 设备间同步,完全本地+iCloud 驱动,无需注册任何账号。
  • 📖 系统原生词典联动 — 一键瞬间唤起 macOS 系统自带词典,查看极其详尽的大部头释义与维基百科。
  • 📊 学习热力图 — GitHub 风格的每日学习热力图 + 今日 / 连续天数 / 累计 / 已掌握统计。
  • ⌨️ 顺手 — 键盘快捷键(Space 已认识、←/→ 翻页、↵ 朗读)、卡片显示内容自由开关、深靛蓝 + Maple 字体的精���界面。
  • 🔒 极简安全 — 无账号、无服务器、无广告。所有数据完全掌控在你自己的电脑与 iCloud 中。

📥 下载安装

  1. Releases 下载 FastWords-vX.Y.Z.zip
  2. 解压,把 FastWords.app 拖进「应用程序」文件夹。
  3. 首次打开(应用未做苹果签名,需绕过 Gatekeeper):
    • 右键点击 FastWords.app → 选「打开」→ 在弹窗里再点「打开」。
    • 如果提示「已损坏 / 无法验证开发者」,在终端运行一次:
      xattr -dr com.apple.quarantine /Applications/FastWords.app
      然后正常双击打开即可。
  4. 看屏幕右上角菜单栏W 图标——点开就能用。

🛠 从源码构建

需要安装 Xcode 命令行工具(xcode-select --install)。

git clone https://github.com/MonsterQiu/FastWords.git
cd FastWords

swift build            # 编译
swift test             # 跑测试

./Scripts/package_app.sh   # 打包 + 自动退出旧进程并打开新 app
./Scripts/package_app.sh --no-relaunch   # 仅打包不重启

./Scripts/release.sh       # 生成可分发的 dist/FastWords-v0.2.1.zip

开发约定:改完会影响运行的应用代码后,应自动执行 ./Scripts/package_app.sh(打包并自动重启到新版本,无需手动退出)。发版 zip 仍用 release.sh,仅在主动发版时执行。详见 AGENTS.md

🔬 工作原理 / How It Works

  • FSRS-6 调度:每个词跟踪 稳定性 (S) / 难度 (D) / 可提取性 (R) 三个量,按幂函数遗忘曲线预测「你此刻还记得的概率」,并解出「掉到目标记忆率(默认 90%)的那一天」作为下次复习日。点「认识」间隔增长、「不认识」重置、「模糊」小幅推进。连续记牢(稳定性 ≥ 21 天)即自动「已掌握」。
  • 离线词典:内置 ECDICT 的考试词��集(TSV,约 15k 词,含中文/英英/音标/tag),按考试 tag 过滤即可切出任意一本考试书。查不到的词可联网用 Free Dictionary API 补例句和真人发音。
  • 数据:纯 JSON 文件持久化(state.json),含多词书、每词 FSRS 状态、每日学习计数。

🙏 致谢 / Acknowledgements

组件 用途 许可
ECDICT 内置中英词典数据(约 15k 词子集) MIT
Maple Mono 单词主标题与音标字体 SIL OFL 1.1
Free Dictionary API 可选的在线例句 / 真人发音 免费 API(运行时调用)
Apple AVFoundation 离线语音合成(TTS) 系统框架

FastWords 本体代码采用 MIT 许可


English

FastWords is a macOS menu-bar vocabulary app: words sit quietly in your menu bar so you can review at a glance between tasks. It packs modern spaced repetition (FSRS-6) and an offline English–Chinese dictionary with exam word books into a lightweight, fully local app — no account, no cloud, no ads.

⚠️ FastWords is a menu-bar app with no Dock icon. After launching, look for the W icon in the top-right menu bar.

✨ Features

  • 🧠 FSRS-6 spaced repetition — the modern open-source scheduler (the algorithm Anki uses), implemented in pure Swift. Models your forgetting curve, schedules to a target retention, auto-detects "mastered," and avoids SM-2's ease-hell.
  • 📖 Offline EN–CN dictionary — ~15,000 high-frequency exam words (from the open-source ECDICT) with Chinese meaning + English definition + phonetics, fully offline.
  • 🎓 8 exam word books — Zhongkao / Gaokao / CET-4 / CET-6 / Postgrad / TOEFL / IELTS / GRE; load and switch with one tap, each keeps its own progress.
  • 🔊 Pronunciation — built-in macOS TTS (US/UK accents, adjustable rate, offline), preferring & caching human audio when available; US/UK phonetics.
  • 📚 Multiple word books — keep several books, switch anytime; importing merges & de-dupes while preserving existing progress.
  • 🤖 Personalized AI Assistant — input your profession/context, and the AI generates customized mnemonics, root breakdowns, and dynamic synonym disambiguation for tricky words.
  • ☁️ iCloud Sync — zero-config synchronization across your Macs. Fully driven by local storage and iCloud; no accounts needed.
  • 📖 Native Dictionary Integration — one-click instant access to macOS's built-in Dictionary app for deep, comprehensive definitions and Wikipedia lookups.
  • 📊 Learning heatmap — a GitHub-style daily-learning heatmap plus today / streak / total / mastered stats.
  • ⌨️ Frictionless — keyboard shortcuts (Space = known, ←/→ = navigate, ↵ = speak), per-card content toggles, a refined indigo + Maple-Mono UI.
  • 🔒 Private & Secure — no accounts, no backend servers, no ads. Your data stays entirely on your Mac and your personal iCloud.

📥 Download & Install

  1. Download FastWords-vX.Y.Z.zip from Releases.
  2. Unzip and drag FastWords.app into your Applications folder.
  3. First launch (the app is not Apple-notarized, so Gatekeeper needs a nudge):
    • Right-click FastWords.app → Open → click Open again in the dialog.
    • If macOS says it's "damaged" or "from an unidentified developer," run once in Terminal:
      xattr -dr com.apple.quarantine /Applications/FastWords.app
      then open it normally.
  4. Look for the W icon in the top-right menu bar — click it to start.

🛠 Build from Source

Requires Xcode command-line tools (xcode-select --install).

git clone https://github.com/MonsterQiu/FastWords.git
cd FastWords

swift build            # compile
swift test             # run tests

./Scripts/package_app.sh   # package + quit old process + open new app
./Scripts/package_app.sh --no-relaunch   # package only

./Scripts/release.sh       # produce a distributable dist/FastWords-v0.2.1.zip

Dev convention: after code changes that affect the running app, always run ./Scripts/package_app.sh (packages and auto-relaunches the new build). Use release.sh only when cutting a release. See AGENTS.md.

📜 License

FastWords is released under the MIT License. Bundled third-party data and fonts retain their own licenses (ECDICT — MIT; Maple Mono — SIL OFL 1.1). See the Acknowledgements table above.

About

Native macOS menu bar vocabulary app with local word books.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages