2025-12-23    2025-12-23    1511 字  4 分钟

闲聊的时候多次看到一些朋友提到「 用户词库的多设备同步 」方面的问题,这里结合个人的一些使用过程作一下简要的说明,以供参考。

先来简要描述一下我个人的使用场景。

使用设备:工作电脑 A、家庭电脑 B
操作系统:Windows
输入平台:小狼毫 v0.16.3
输入方案:声笔飞单
同步平台:坚果云

设置同步文件夹

Rime 在点击「 用户资料同步 」,默认会在 Rime 方案根目录下生成一个同步文件夹 sync,你可以在 installation.yaml 文件中指定新的位置。

![[assets/Pasted image 20251223103438.png|200]]

以下是个人的配置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# --- installation.yaml ---

distribution_code_name: Weasel
distribution_name: "小狼毫"
distribution_version: 0.16.3
install_time: "Sat Oct 18 21:29:07 2025"
installation_id: "sb-rime"
rime_version: 1.11.2
sync_dir: "C:\\Users\\jack\\Nutstore\\1\\我的坚果云\\RimeSync"
update_time: "Thu Oct 30 17:34:13 2025"

其中,sync_dir 用于指定同步位置,installation_id 用于指定生成的文件夹名称。如此,同步之后,C:\Users\jack\Nutstore\1\我的坚果云\RimeSync\sb-rime 就是设置好的同步文件夹了。

假如,你这样配置这两个字段:

1
2
3
#...
installation_id: "wx-rime"
sync_dir: "C:\\Users\\amz\\Nutstore\\1\\我的坚果云\\Sync"

那么,你的同步文件夹就是 C:\Users\amz\Nutstore\1\我的坚果云\Sync\wx-rime 了。

*注:其他设备路径格式会有区别,如 Linux/Mac 下,目录层级使用 / 而不是 \

好的,相信你已经清楚了~

用户词同步原理分析

Rime 的输入方案,常见有两种添加自造词的方式 —— 自动调频记录、手动造词记录,无论使用哪种方式,最终都会记录在对应的 *.userdb 中,在「 用户资料同步 」时于同步文件夹生成相应的 *.userdb.txt

如,我使用的方案是声笔飞单,使用过程中会把自造词记录到 sbfm.userdb 中,在「 用户资料同步 」时,会生成 C:\Users\jack\Nutstore\1\我的坚果云\RimeSync\sb-rime\sbfm.userdb.txt

![[assets/Pasted image 20251223110448.png]] ⇄ ![[assets/Pasted image 20251223110614.png]]

点击「 用户资料同步 」,到底发生了什么呢?

如果同步文件夹¹不存在,就会根据设置生成,并同步当前使用到的方案文件。

如果同步文件夹²存在,本地内容会和同步文件夹中的内容自动比对合并

![[assets/Pasted image 20251223110448.png]] ⇄ ![[assets/Pasted image 20251223110614.png]]

*注:当你在电脑 A 添加了一下用户词,并同步后;在使用电脑 B 时,开机之后,要等待同步盘(如坚果云)同步完成后,再点击同步。否则,有可能提示你文件冲突。

相信到这里,大家应该已经清楚了,用户词库同步的核心就在于 *.userdb.txt 。它长这样:

![[assets/Pasted image 20251223111840.png|575]]

它记录了用户词的编码,上屏词数等信息。聪明的 Rime 会在你「 用户资料同步 」时,识别处理它,并写入到对应的 *.userdb 中,供你在当前设备输入时使用。

保存好 *.userdb.txt 这个文件,你的用户词就永远不会丢失。

转换成词典格式

上个章节,我们了解了 *.userdb.txt 文件的内容格式,它和我们的 *.dict.yaml 中的格式是不一致的,有没有办法转换呢?

当然,其实 Rime 本身就提供了这个功能。

![[assets/Pasted image 20251223112802.png|200]]

![[assets/Pasted image 20251223112930.png|500]]

导出之后,生成了如下文件。

![[assets/Pasted image 20251223113729.png]]

![[assets/Pasted image 20251223113902.png|350]]

看,它的内容就是我们常见的字典中的格式了,如此,你可以方便地将其处理成字典使用。

使用同步转换脚本

该章节是可选的。通过上述章节,我们已经便捷地同步用户词库、转换成常规字典格了。只不过多处需要使到操作处理,尤其是转换成常规字典格式的过程。

使用 sync_user_dict.py 脚本,简单设置后,可以:

1. 一键转换 *.userdb 为指定的常规字典文件,如 *.dict.yaml,且
2. 转换过程是渐进式的,自动去除重复词条(默认保留较高权重的),
3. 累积式的,以前的用户词会得到保留

并且,它会在际本执行前后自动执行「 同步用户资料 」和「 重新部署 」操作。

![[assets/Pasted image 20251223115750.png]]

结语

积累个人的用户词条是有必要的,当你切换其他方案的时候,可以以此为基础方便地转换成所使用方案的字典格式使用。当然,不建议频繁转码,输入法只是个工具而已。