跳转至

❓ 常见问题

先解决问题,再解释原理。
本页收集万象用户最容易遇到的安装、更新、配置、词库、辅助码、英文混输与 Lua 功能问题。问题选题会参考 Rime 社区中的高频讨论,但答案统一以万象当前的 Schema、Lua 与项目文档实现为准,不会直接套用其他方案的配置。

FAQ 使用原则

先确认版本,再确认配置来源,最后重新部署。
万象的大量能力并不是单个 YAML 字段独立完成的,而是 Schema、挂接方案、词库、Lua 与 Rime 编译结果共同工作。遇到问题时,不建议先删除用户词库或大范围改配置。


安装、更新与部署

Q:第一次用万象,Base、Pro、Lite、Pure 应该怎么选?

大多数用户先从 Base 开始。

  • Base:适合全拼、常规双拼,以及希望保留自动调频习惯的用户,词库带声调还能通过声调筛选,也能用反查数据进行lookup辅筛。
  • Pro:面向双拼 + 专属辅助码用户,词库本身携带辅助码信息,更强调精确筛选和可控造词,万象全功能安排。
  • Lite:在base的基础上简化词库声调去掉部分lua,主要面向不常用声调用户以及可以作为前端OEM首选。
  • Pure:适合低版本环境、不能正常使用 Lua,或者只需要基础输入能力的场景。

如果你只是想“先稳定用起来”,选 Base;如果你明确知道自己需要哪一种辅助码,再选对应的 Pro 分包。

Pro 不是“Base 的绝对升级版”,而是不同输入哲学。

相关文档:方案介绍与版本对比


Q:万象更新时,怎样避免自己的配置被覆盖?

不要长期直接改仓库自带的 *.schema.yamldefault.yaml。个人配置尽量写进对应的 *.custom.yaml

例如修改主方案时:

# wanxiang.custom.yaml
patch:
  menu/page_size: 7

更新时可以替换项目原文件,而自己的 wanxiang.custom.yaml 继续保留。

词库也一样:个人固定短语、专业词库、用户数据应放在自己的文件或数据库中,不要把长期个人内容直接塞进万象官方词库。

总之就是仓库有的文明你不要与之重名,重名就会被覆盖这是计算机规律。

相关文档:自定义万象方案 · 词库管理与同步


Q:我修改了 YAML,为什么输入法一点变化都没有?

先确认三件事:

  1. 改的是用户目录里实际正在使用的文件
  2. 修改写在正确的方案或正确的 *.custom.yaml
  3. 保存后执行了重新部署

Rime 工作时使用的是部署后生成的编译结果,不会因为你保存了一份 YAML 就立刻热更新。

其次任何schema、custom文件都不支持折叠到其他路径中,只能在用户目录最上层。

如果只是改皮肤、前端候选布局,则还要注意:这些往往属于小狼毫、鼠须管、Fcitx5 等前端自己的配置,不一定由 wanxiang.schema.yaml 控制。

相关文档:Rime 工作机制


Q:为什么第一次部署万象会比较慢?

这是正常现象。首次部署需要编译词典、生成拼写映射 / Prism、加载语法模型,并初始化相关组件。

其中根据转写的复杂度,部署速度各有不同,虽然我们提倡一次部署后就好好用就好了,但使用rime不可避免地想要自定义和多次部署。

部署过程中不要连续重复点击“重新部署”。尤其词库较大、语法模型已启用时,第一次编译本来就需要时间。

后续如果源文件没有变化,正常情况下不应该每次都完整重建所有内容。


Q:方案已经出现在方案选单里了,但切过去完全打不了字,怎么办?

“能看到方案名”只说明方案被发现了,不代表它的依赖、Lua、词典和编译结果都正常

优先检查:

  • 部署日志有没有 error、依赖缺失或 Lua 加载错误;
  • 使用的平台是否支持当前万象版本所需的 librime / Lua;
  • Base / Pro 的词库和语法模型是否放完整;
  • Linux / Fcitx5 是否存在前端快捷键或组件冲突。

不要因为“方案名能看到”就把问题直接归到词库。

相关文档:Windows · macOS · Fcitx5 Linux


Q:切换全拼、小鹤、自然码后,为什么有些挂接功能还是原来的编码?

万象的拼音类型不只影响主翻译器,还可能影响英文、反查等挂接方案。

因此推荐使用万象提供的方案切换指令,例如:

/flypy    → 小鹤双拼
/mspy     → 微软双拼
/zrm      → 自然码
/sogou    → 搜狗双拼
/znabc    → 智能ABC
/ziguang  → 紫光双拼
/pyjj     → 拼音加加
/gbpy     → 国标双拼
/lxsq     → 乱序17
/ltsp     → 蓝天双拼
/sdpy     → 首道双拼
/pinyin   → 全拼
/zrlong   → 自然龙(反查是全拼)
/hxlong   → 汉心龙(反查是全拼)
/jjf      → 间接辅助
/zjf      → 直接辅助

执行切换后再重新部署,让主方案与相关挂接方案保持一致。

不要只改主方案的一行 algebra,就默认整个万象生态已经全部切换。

这只是一种自动方式,其背后的真正原理是把custom目录中携带的预设文件帮你复制到了根目录,原则上这些都要自己打开文件进行修改,可在文档--快速上手--手动设置阅读相关内容


配置与 Patch

Q:为什么推荐 wanxiang.custom.yaml,而不是直接改 wanxiang.schema.yaml

因为 *.custom.yaml 是 Rime 原生的覆盖机制。

官方文件负责提供“默认实现”,你的 custom 只写“我与默认值不同的部分”。这样做有两个好处:

  • 更新万象时不容易覆盖个人配置;
  • 出问题时可以快速判断是官方默认还是个人 Patch 导致的。

对于长期使用,这比直接魔改主方案文件更容易维护。


Q:一个 custom 文件里是不是每改一段都要再写一个 patch:

不是。一个 custom 文件顶部只需要一个 patch:

正确:

patch:
  menu/page_size: 7
  super_processor/enable_backspace_limit: false
  super_comment/candidate_length: 3

不要写成:

patch:
  ...

patch:
  ...

后者会让 YAML 顶层键发生覆盖或产生与你预期不同的结果。

别人写文档、教程是为了体现段落层级,不要看见每一个都有patch: 就都写上。

相关文档:自定义万象方案


Q:@0@next/+ 到底是什么意思?

它们主要用于处理 YAML 列表。

例如:

patch:
  switches/@0/reset: 1

表示修改 switches 列表中的第 1 项。

追加内容可以使用类似:

patch:
  super_tips/files/+:
    - lua/data/my_tips.txt

如果你想彻底接管一个数组,而且数组顺序本身决定行为,直接整体覆盖往往比不断插入更清楚。但官方有更新的时候你同样也不是万事大吉,可能需要解构冲突。


Q:我已经改了翻页快捷键,为什么原来的 -= 还是能翻页?

优先检查:

key_binder:
  import_preset: default

import_preset: default 会把 default.yaml 中的快捷键一起导入。你只修改主方案自己的 key_binder/bindings,并不代表继承进来的规则自动消失。

如果冲突来自 default.yaml,应在 default.custom.yaml 中一并处理。

这也是“明明改了,旧快捷键却还在”的高频原因。

其次是你使用的/+这样的命令来修改的按键,这个表示在原来的末尾追加因此相当于有了两种翻页的按键存在。

相关文档:快捷键说明 · 自定义万象方案


Q:可以随便调整 engine/processorstranslatorsfilters 的顺序吗?

不建议。

rime的很多 Lua 组件有明确的先后关系。例如字符过滤、注释处理、替换、英文格式化、手动排序、最终去重,各自依赖上游候选的状态。

尤其:

- uniquifier

通常应当留在过滤链最后完成最终去重。

如果只是修改某个功能的参数,优先 Patch 对应配置项,不要为了“看起来整齐”重排整个引擎流水线。


Q:我只想修改一个开关默认状态,需要把整段 switches 复制过来吗?

不用。

例如修改第一个开关:

patch:
  switches/@0/reset: 1

只有当你要大幅重排、删除、重建整个列表时,才考虑整体覆盖。

局部修改尽量局部 Patch,结构变化再整体接管。


Q:为什么有些配置改的是主方案,有些还要改挂接方案?

因为万象不是一个单文件方案。

例如英文词库可以由 wanxiang_english.schema.yaml 负责独立编译,主方案再通过:

wanxiang_english:
  dictionary: wanxiang_english

调用它。

所以当你把英文词典换成另一个名字时,通常需要同时保证:

  1. 挂接方案编译的是新词典;
  2. 主方案调用的也是同一个新词典名。

只改一头,就可能出现“文件明明存在,主方案就是不用”的情况。

相关文档:词库管理与同步


词库、自造词与同步

Q:我只是想加邮箱、地址、签名、固定短语,应该改主词库吗?

不用,优先使用 custom_phrase.dict.yaml

它就是给固定内容和短编码准备的,例如:

example@example.com mail    100
万象拼音    wx  100

三个字段之间使用 Tab 制表符

上屏文本<Tab>编码<Tab>权重

不要拿普通空格冒充 Tab。

万象默认给 custom_phrase 较高初始质量,本来就适合做快捷置顶短语。

相关文档:词库管理与同步


Q:custom_phrase.dict.yaml 明明写了内容,为什么不生效?

依次检查:

  • 列与列之间是不是 Tab
  • 文件编码是否正常;
  • custom_phrase/dictionary 是否仍然指向 custom_phrase
  • 保存后有没有重新部署。

万象当前默认:

custom_phrase:
  dictionary: custom_phrase
  enable_completion: false
  enable_sentence: false
  initial_quality: 99

如果你的目标只是固定快捷短语,没必要为了“同步”或“调频”随意改变这套数据库类型。


Q:custom_phrase、专业固定词典、用户词库、自造词,分别适合什么?

可以这样理解:

固定少量内容custom_phrase.dict.yaml
大量专业词、长期维护的数据 → 独立 .dict.yaml 并通过 Patch 挂载
日常输入产生的动态学习 → 主翻译器用户词库
我明确想记住一个新词 → 万象的自造词 / 无感造词机制

不要把所有个人数据都塞进一种机制里。用途分开后,更新、同步和排错都会轻松很多。

相关文档:词库管理与同步 · 高阶造词


Q:我有自己的专业词库,怎样挂载才不怕以后更新万象被覆盖?

不要直接编辑万象官方 .dict.yaml

更稳妥的方式是:

  1. 给自己的词典单独命名;
  2. 放在用户目录;
  3. 通过 *.custom.yaml 修改对应 dictionary 或扩展关系;
  4. 重新部署。

如果你替换的是独立挂接词库,例如英文,还要同时保证挂接方案与主方案的调用名称一致。

相关文档:词库管理与同步


Q:为什么 Base 默认会调频,而 Pro 更强调关闭自动调频?

这是两个版本输入哲学上的差异。

Base 更接近普通拼音用户熟悉的体验:输入、选择、逐渐学习。

Pro 面向重度辅助码用户,强调“词库和排序本身尽量稳定”,避免无差别学习不断改变精确候选。需要某个私人词明显提前时,可以通过造词和手动排序解决,而不是让所有候选都持续漂移。

所以不要简单理解为:

enable_user_dict: true = 一定更高级

对 Pro 来说,稳定和可控本身就是设计目标。


Q:PRO版本我造了一个私人名字,为什么没有自动压过系统高频词?

这是预期行为之一。

私人名字对你可能极重要,但对于正常语句来说,系统高频词也不能因为一次造词就永久失去合理排序。

万象提供了更明确的方式:先造词,再手动置顶或移动候选

默认手动排序配置:

super_sequence:
  up: "Control+j"
  down: "Control+k"
  reset: "Control+l"
  pin: "Control+p"

这样可以把“私人偏好”与“系统词库整体排序”分开管理。

相关文档:手动排序


Q:多设备同步用户词,应该同步哪个文件?

Rime 的动态用户词通过 UserDB 同步。

重点配置在:

installation.yaml

建议每台设备设置不同、容易识别的:

installation_id: "windows"

并把:

sync_dir:

指向同一个同步目录。

执行“同步用户数据”后,Rime 会把用户数据库导出为文本形式,例如:

wanxiang.userdb.txt

再由其他设备导入、合并。

相关文档:词库管理与同步


Q:custom_phrase.dict.yaml 会跟着 UserDB 自动同步吗?

它本质上是你自己维护的固定文本文件,不等同于输入过程中产生的 UserDB。

如果你希望多设备共用同一份 custom_phrase.dict.yaml,可以用自己的网盘、Git 或其他文件同步方式管理;不要把“Rime 用户词同步”和“任意配置文件同步”当成一回事。你可以选择在一个地方维护变更,其他设备都只是单向下载你的更新。这与UserDB多个设备文件夹合并数据是不同的。


Q:从别的 Rime 方案迁移用户词库,只改 db_name 就一定能用吗?

不一定。

用户词不仅有“词文本”,还与原方案的编码、拼写规则、数据库结构有关。

如果来源方案和万象的编码体系不同,尤其涉及带调编码、双拼转写或不同拼写运算时,单纯改数据库名可能把数据导进去了,却无法按你当前输入方式正常召回。

迁移时应先小批量验证,不要直接覆盖现有万象 UserDB。


辅助码、反查与字符集

Q:Base 没有 Pro 的专属辅助码,那是不是完全不能辅助筛选?

不是。

Base 仍然可以利用万象的:

  • 声调;
  • 两分 / 多分部件;
  • 笔画;
  • 反查数据库;

进行筛选。

Pro 的核心增强是:词库编码本身进一步携带专属辅助码信息,因此能在更多输入场景里直接使用对应辅助码。

简单说:

Base:拼音为主,反查 / 声调辅助
Pro:双拼 + 专属辅助码深度参与

相关文档:辅助码系统


Q:反引号 ` 到底是干什么的?

它是万象默认的反查 / 辅筛引导键之一。

主方案中:

wanxiang_reverse:
  prefix: "`"

wanxiang_lookup 也使用:

key: "`"

因此它既连接部件 / 笔画反查,也参与候选中的辅助筛选。

如果你自行修改这个键,要同时理解 speller/alphabetrecognizer、reverse translator 和 super_lookup 之间的关系,不能只改一个地方就结束。

相关文档:生僻字反查 · 候选辅筛


Q:Super Lookup 为什么不像传统辅助码那样必须“第一个码对第一个字”?

因为万象采用的是有序模糊匹配思路。

对于词组,它更关注你输入的辅助信息是否按顺序出现在候选的辅助序列中,而不是强迫你每一个码都严格标明属于第几个汉字。

这样做的目的,是让用户“知道多少打多少”,减少为了筛词反而先计算位置的负担。

相关文档:候选辅筛


Q:我不想看辅助码提示,但还想保留反查 / 辅筛,可以吗?

可以把“显示提示”和“筛选能力”分开理解。

例如超级注释中的:

super_comment:
  candidate_length: 2

控制的是辅助码等注释显示范围。把显示关闭,并不等于必须删除 super_lookupwanxiang_reverse

因此如果你只是嫌候选注释太多,优先调整 super_comment,不要直接拆掉整套反查组件。

相关文档:超级注释


Q:为什么有些生僻字完全不出现,有些却出现成方框或问号?

这是两个不同问题。

完全不出现:先检查字符集过滤。万象的 charset_filter 可以按不同字符集合、白名单、黑名单控制候选范围。

候选存在但显示成方框 / 问号:更可能是当前前端或字体没有对应字形,这不是把字符加入白名单就一定能解决的。

排查时先分清楚是“候选被过滤”,还是“候选已经有了但字体画不出来”。

相关文档:字符过滤 · 生僻字反查


Q:小字集里缺一个我常用的字,能不能只加这一个?

可以。

万象的字符集配置支持 addlistblacklist 微调,而不要求为了一个字彻底关闭过滤。

例如:

charset_filter:
  - option: charset_filter
    base: a
    addlist:
      - "你的常用字"
    blacklist: []

实际使用时建议通过 custom Patch 修改,避免更新覆盖。


Q:反查时我更想先看单字,不想先看词组,能切吗?

万象提供了对应的候选优先策略开关。

当前方案中有:

char_priority

用于在特定编码重合、反查 / 辅筛场景下控制“词组先”或“单字先”。

这类需求优先使用已有开关,不需要为了排序单独重写反查词典。


英文混输与内置功能

Q:万象为什么有时候会自动给英文加空格?可以关吗?

可以。

万象英文 Lua 提供四种策略:

wanxiang_english:
  english_spacing: smart

可选:

off
before
after
smart

smart 是默认思路:连续英文输入时智能维护单词间空格,同时允许回车、空格或超时打断状态。

还可以设置:

spacing_timeout: 5

相关文档:中英与混合编码


Q:我替换了 wanxiang_english.dict.yaml,为什么主方案还是在用旧英文词库?

因为英文是“挂接方案编译 + 主方案调用”的结构。

如果新词典叫:

wanxiang_english_user

通常要同时让:

# wanxiang_english.custom.yaml
translator/dictionary: wanxiang_english_user

和:

# wanxiang.custom.yaml
wanxiang_english/dictionary: wanxiang_english_user

指向同一个名字。

只改词典文件名,不同步修改调用关系,很容易出现“编译了一套,主方案叫的是另一套”。

相关文档:词库管理与同步


Q:AI绘画、型号、品牌、英文缩写这类中英混合词应该放哪里?

少量固定内容可以直接放 custom_phrase.dict.yaml

如果是成体系的中文 + 英文 + 数字 + 符号混合词汇,则更适合使用万象的 wanxiang_mixedcode 数据体系,而不是把所有混合词都塞进普通中文用户词。

这样可以保留不同 Translator 之间更清楚的职责边界。


Q:日期、时间的显示格式能自己改吗?

可以。

万象把常用格式直接开放在 YAML:

date_formats:
time_formats:
datetime_formats:
english_date_formats:

例如:

date_formats:
  - "Y年m月d日"
  - "Y-m-d"

写几行,就会生成几种候选;顺序就是候选顺序。

时间插件还支持中文星期、英文星期、ISO 周数、时区、12 / 24 小时等占位符。

相关文档:时间日期


Q:/sj/rqN20250101 是同一套东西吗?

它们都由时间日期体系处理,但入口不同。

  • /sj:当前时间;
  • /rq:当前日期;
  • /dt:日期 + 时间;
  • /ed:英文日期;
  • N...:数字日期输入 / 查询模式。

其中 /sj/rq 等前缀来自:

key_binder/shijian_keys

默认可以使用 /o 两种引导方式。

相关文档:时间日期


Q:大写 VRU 分别是什么?总记混。

记住它们是不同 Translator 的入口:

V  → 超级计算器
R  → 数字 / 金额大写
U  → Unicode / 码点转换
N  → 日期输入

它们在 recognizer/patterns 中分别分发,不要把 R 的金额转换和 N 的日期模式混在一起。

相关文档:魔法字母


Q:我知道一个符号长什么样,但不知道怎么输入,万象有搜索吗?

有。

超级符号支持精确和模糊两种思路,例如:

/sym.arrow.r.double
/sym?arrow
/sym/arrow

Emoji 也使用类似规则:

/emoji?heart

模糊模式可以按关键词搜索 Codex 名称,多关键词还能使用 . 组合。

相关文档:超级符号


Q:候选词后面输入反斜杠,为什么会出现括号包裹功能?

这是万象的 paired_symbols / super_filter 能力。

默认触发符:

paired_symbols:
  trigger: "\\"

在已有候选的情况下输入触发符,再追加映射键,可以把当前候选包进:

[]
【】
「」
《》
()
{}

等成对符号中。

它不是普通标点替换,而是对当前候选进行包装。

相关文档:成对符号


Q:怎么判断是不是 Lua 没加载成功?

如果只是一个词打不出来,不足以说明 Lua 有问题。

更有价值的现象是:多个彼此独立的 Lua 功能同时失效,例如时间、计算器、随机工具、超级符号等都没有反应。

这时再结合部署 / 前端日志查看 Lua 模块加载错误,会比盯着某一个候选可靠得多。


Q:为什么同一个词典,多个方案部署时还会各自出现 Prism?

因为词典和 Prism 不是同一个东西

词典提供“有哪些词、编码是什么”;Prism 更接近某个方案经过 speller/algebra 后的拼写映射结果。

不同方案即使共用同一个 dictionary,只要拼写规则不同,也可能需要不同的 Prism。

万象的主翻译器也预留了:

# prism: wanxiang

用于明确指定共享 Prism 的场景。

所以“词典一样”并不自动等于“所有方案只编译一个 Prism”。


Q:为什么我的 custom_phrase、英文词、主词库候选优先级看起来不一样?

这是设计如此。

不同 Translator 有各自的:

initial_quality

例如 custom_phrase 默认就是为了固定短语快速上屏,因此质量通常高于普通拼音、英文候选。

不要只用“第三列权重”解释所有跨 Translator 排序;词条内部权重和 Translator 初始质量是两个层次。


Q:输入一个不存在的三编码时,为什么偶尔还能吐出前面两码的单字?

这是 super_filter 的轻量兜底逻辑。

它会在特定情况下记录两码首选单字;当第三码导致完全无候选时,再把之前的单字作为 fallback 候选吐出来,避免输入突然“断掉”。

这类候选属于兜底,不应误认为主词库真的存在对应三码。


Q:为什么我把候选包裹、动态时间占位之类功能删掉后,其他地方也开始异常?

因为 super_filter 并不只负责一件事。

当前实现中它同时承担:

  • 文本转义;
  • 动态时间占位;
  • 成对符号包裹;
  • 候选锁定;
  • 三码空候选兜底;

等能力。

如果你只是“不想用某一种效果”,优先关闭对应配置或映射,不要随手把整个过滤器从 engine/filters 删除。


还没找到你的问题?

建议先这样描述问题

尽量同时提供:平台 / Rime 前端、万象版本、Base / Pro / Lite / Pure、当前输入方案、复现输入、期望结果、实际结果、相关 custom 配置、部署或运行日志
“不能用”“突然坏了”通常不足以定位问题,而一条完整的复现路径往往几分钟就能判断出问题在哪一层。


FAQ 编写说明

本页的问题池会持续吸收万象自身 Issue / Discussion,以及社区中反复出现的共性问题,有什么特定问题也可以进行PR共建