rime‑ice‑dict‑update (别名 rimeup ),是专门针对雾凇拼音( rime‑ice )开发的命令行词库更新工具。雾凇上游仓库持续迭代词库,但原生只能手动下载文件覆盖本地。直接覆盖更新会丢失用户本地新增词条、手动调整过的词频,而简单 git 拉取又会产生大量冲突。
rimeup 采用三方基线合并算法,在拉取上游雾凇词库更新的同时,保留用户本地修改的词条与词频,同时提供整体覆盖模式;更新前自动备份,原子写入防止词库文件损坏,只需一条命令完成词库同步, macOS 、 Linux 、 Windows 均可使用,只处理 dict.yaml 词库文件,不会触碰 schema 、 lua 、 OpenCC 等其它配置文件。
工具定位:只做rime‑ice 词库更新,不管理 Rime 方案脚本、皮肤配置。
核心功能
1. 差异预览,更新前可视化比对
执行rimeup --check,打印表格,清晰展示每一份词库的本地版本、上游版本、上游新增词条数量、本地独有词条数量,让用户在更新前充分掌握变更情况,不会盲目执行更新。
2. 两种更新模式可选
- 增量合并模式(推荐):依靠基线快照做三方合并,智能区分「上游改动」和「用户改动」
- 基线 = 上次同步时上游状态;
- 本地新增词条、手动调过词频的条目,全部予以保留;
- 用户未改动的词条跟随上游更新(上游增删、调频全部同步);
- 上游新增词条合并进本地词库。
- 整体覆盖模式:直接完整替换为上游原版词库,丢弃全部本地修改,适合想要纯净上游版本的场景。
3. 安全防护机制
- 自动备份:每次修改前,把待变更词库备份至时间戳命名备份目录,出错可以回滚;
- 原子写入:先写临时文件,全部完成再替换原文件,程序中途崩溃不会生成半截损坏 yaml ;
- 范围隔离:仅仅处理
*.dict.yaml词库, schema 、 lua 脚本、自定义符号配置完全不受影响; - 本地独有文件跳过:上游仓库不存在、用户自己新增的词库文件,直接跳过,不会删除;
- 容错解析:个别词库解析异常自动降级为覆盖模式,不会中断整体更新流程。
4. 灵活命令行参数
- 支持自定义 Rime 用户目录,适配鼠须管、 fcitx5‑rime 、小狼毫;
- 可指定上游 git 仓库地址、缓存目录、基线目录、备份目录;
- 零依赖业务库,仅 Python 标准库,系统只需要安装 git 。
增量合并逻辑详解
工具保存一份基线快照(上次同步的上游版本),对每一组「词语 + 编码」进行判断:
| 词条状态 | rimeup 处理策略 |
|---|---|
| 本地新增(基线、上游均不存在) | ✅保留用户词条 |
| 本地内容等于基线(用户从未修改) | ⬆️跟随上游更新,上游增删同步生效 |
| 本地内容不等于基线(改过词频 / 内容) | ✅保留用户修改 |
| 上游全新词条 | ⬆️合并入本地词库 |
首次执行增量合并没有基线快照,会保守保留所有和上游不一致的本地词条;第二次之后基线生效,可以做到精准区分改动。本地新增词条会追加在词库末尾,打上注释标记。
安装方式
方式 1 : pipx (推荐,隔离环境)
pipx install git+https://github.com/ryekee/rime‑ice‑dict‑update.git
方式 2 : pip 直接安装
pip install git+https://github.com/ryekee/rime‑ice‑dict‑update.git
方式 3 :单脚本直接运行,无需安装
curl -fsSL https://raw.githubusercontent.com/ryekee/rime‑ice‑dict‑update/main/rimeup.py -o ~/.local/bin/rimeup
chmod +x ~/.local/bin/rimeup
安装完成校验:
rimeup --check
基础使用
rimeup # 交互模式,预览差异,选择覆盖/增量合并/不更新
rimeup --check # 仅预览差异表格,不修改任何文件
rimeup --incremental # 直接执行增量合并(保留本地改动)
rimeup --overwrite # 直接整体覆盖为上游原版
# 指定 Rime 目录,非 macOS 平台示例
rimeup --incremental --rime-dir ~/.local/share/fcitx5/rime
更新执行完成后,务必在 Rime 输入法托盘执行重新部署,新的词库才会编译生效。
