在终端里沉浸式练习外语输入,兼具 CLI 的效率与 TUI 的友好体验。
mllt-cli 是一个使用 Go 编写的跨平台语言学习工具,借助命令行与 Bubble Tea 图形界面实现单词、短语、句子、文章等多维度的打字练习。项目内置资源管理、收藏/标记、间隔重复(SRS)与练习统计功能,可在全终端环境下完成高频巩固。
说明:项目起源于作者的个人学习需求,功能难免存在片面之处,虽然允许设置其他语言,但是尚未对多种语言进行开发测试,且目前测试覆盖有限,难免会有很多问题。欢迎大家通过 Issue 或 PR 指出问题、提供建议,一起迭代完善。
- 双重交互模式:Cobra 提供的 CLI 与 Bubble Tea TUI 无缝结合,支持上下箭头、Tab 自动补全与命令提示。
- 多维度练习:单词、短语、句子、文章四类素材任意切换,可根据练习目标自定义文件夹与资源。
- 资源管理完善:支持导入、删除、收藏、标记等操作,构建专属词库,练习时时刻保持高频内容。
- 记忆曲线驱动:内置艾宾浩斯遗忘曲线与 SRS 排序模式,让重点词条得到及时复习。
- 沉浸式练习体验:可选打字音效、顺序/随机/收藏等多种练习模式,提升学习沉浸感。
- 练习统计回顾:自动记录每日练习数据,按日期查看次数、正确率与用时,帮助复盘学习节奏。
- 确保本地环境满足:
- macOS / Linux / Windows 终端环境
- (可选)Go 1.24.0 或更新版本,用于自行构建
- 获取可执行文件:
- 推荐:前往 Releases 下载与你平台匹配的包
- 或 使用
go install:go install github.com/ajilisiwei/mllt-cli/cmd/mllt-cli@latest
- 将二进制放入 PATH 后执行:
mllt-cli # 启动交互式主界面 mllt-cli --help # 查看所有命令
首次运行会在 ~/.mllt-cli(Windows:%USERPROFILE%\.mllt-cli)下自动初始化默认配置、资源与音效文件。
-
主菜单:集中入口,可快速跳转到语言管理、练习、资源管理、设置与统计等模块。
-
练习模块首页:将单词、短语、句子、文章练习分类展示,配合上下箭头与回车键快速进入对应模式。
-
练习命令提示:练习过程中提供命令建议,例如
> favorite收藏、> mark标记,帮助聚焦重点条目;界面顶部展示进度与当前条目。 -
文章练习视图:逐句输入长文本,实时对照原文,底部指示快捷键与命令,适合沉浸式阅读练习。
-
资源导入界面:支持输入文件夹与文件路径,提供自动补全与列表选择,便于快速导入自定义素材。
-
设置总览:集中调整匹配模式、练习顺序、键盘音效、翻译显示等偏好设置,保持个性化体验。
自 v1.0.0 起提供多平台发行包,压缩包内含可执行文件与资源:
| 平台 | 下载包 | 安装 |
|---|---|---|
| macOS (amd64) | mllt-cli_v1.0.0_darwin_amd64.tar.gz |
tar -xzf … && sudo mv mllt-cli /usr/local/bin/ |
| macOS (arm64) | mllt-cli_v1.0.0_darwin_arm64.tar.gz |
同上 |
| macOS (universal) | mllt-cli_v1.0.0_darwin_universal.tar.gz |
同上 |
| Linux (amd64) | mllt-cli_v1.0.0_linux_amd64.tar.gz |
tar -xzf … && sudo mv mllt-cli /usr/local/bin/ |
| Windows (amd64) | mllt-cli_v1.0.0_windows_amd64.zip |
解压后将 mllt-cli.exe 复制到 PATH 所在目录 |
下载后可通过 shasum -a 256 <文件> 对比 Release 提供的校验值,确认文件完整。
本地已安装 Go 时可直接构建:
go install github.com/ajilisiwei/mllt-cli/cmd/mllt-cli@latest可执行文件将位于 $GOBIN(或 $GOPATH/bin)。
git clone https://github.com/ajilisiwei/mllt-cli.git
cd mllt-cli
./build.sh # 输出通用 macOS 可执行文件
sudo ./install.sh # 将二进制与默认资源安装到系统路径sudo ./uninstall.sh # 或手动删除二进制与 ~/.mllt-cli- 运行
mllt-cli进入主界面,通过方向键选择模块。 lang、practice、manage、setting模块都可以在 CLI 中直接调用,例如mllt-cli practice words。- 练习界面可输入
> help查看命令提示,Tab自动补全,Esc返回上一级。
常用命令示例:
| 命令 | 说明 | 示例 |
|---|---|---|
mllt-cli lang ls |
列出支持的语言 | mllt-cli lang ls |
mllt-cli lang st <language> |
切换练习语言 | mllt-cli lang st japanese |
mllt-cli practice words [file] |
单词练习 | mllt-cli practice words default/四级单词 |
mllt-cli manage import <type> <file> |
导入资源 | mllt-cli manage import phrases ~/Downloads/phrases.txt |
mllt-cli manage delete <type> [file] |
删除资源或文件夹 | mllt-cli manage delete sentences |
| `mllt-cli setting order [random | sequential | ebbinghaus]` |
| `mllt-cli setting keyboard-sound [enable | disable]` | 打开/关闭键盘音效 |
| `mllt-cli setting translation [show | hide]` | 控制正确后是否显示翻译 |
- 使用“收藏”列表整理高频词汇,配合
> favorite、> unfavorite命令快速管理。 - 在 SRS 模式下建议每日复习自动排定的内容,保持记忆曲线闭环。
- 可在
~/.mllt-cli/config.yaml调整练习顺序、音效和翻译等行为。
安装或首次运行会生成默认配置:
languages:
- english
- japanese
current_language: english
correctness_match_mode: word_match
next_one_order: ebbinghaus
input_keyboard_sound: true
show_translation: false主要字段说明:
languages:语言列表;在lang ls中展示并作为资源目录。current_language:当前练习语言,决定资源根目录。correctness_match_mode:exact_match或word_match。next_one_order:random、sequential、ebbinghaus。input_keyboard_sound:是否播放敲击音效。show_translation:是否显示翻译。
- 内置资源位于
resources/<language>/<type>/<folder>/<file>.txt。 - 用户资源与练习记录会放在
~/.mllt-cli/resources与~/.mllt-cli/user-data。 - 默认提供《新概念英语》文章、四六级词汇、日常短语等素材,支持日语目录扩展。
- 导入文件需为 UTF-8
.txt,每行一个条目,分隔符支持->>、制表符、空格、/、:、:等。
示例:
hello ->> 你好
breakfast 早餐
cloud computing 云计算
- 每次练习会在
~/.mllt-cli/user-data/statistics/<YYYY-MM-DD>.json写入记录。 - “统计”模块可按天查看次数、正确率、用时、练习详情。
- SRS 数据位于
~/.mllt-cli/user-data/srs/<language>/<type>/<file>.json,正确则延长复习间隔,错误则重置阶段。
- 增加更多语言的默认资源模板
- 提供练习统计导出与可视化
- 支持自定义快捷键与键位布局
- SRS 与练习进度的云端同步能力
- CLI 批量导入导出工具
欢迎在 Discussions 或 Issues 中投票/留言,路线图会根据反馈持续调整。
- Fork 仓库并创建特性分支
- 完成改动后运行
go test ./... - 提交 PR 并在描述中说明改动动机与测试情况
你也可以提交文档、资源文件或示例,帮助更多学习者快速上手。
- 以个人学习需求为核心,功能仍在快速迭代期
- 缺乏系统化测试,可能存在 Bug 或边界情况未覆盖
- 如果发现问题,请通过 Issue 告知,或附带复现步骤提交 PR
如果 mllt-cli 对你有帮助,欢迎 Star ⭐️、分享给身边的语言学习伙伴,或在 Issue 中告诉我们你的实践心得!





