问云( rime‑wenyun )是一款 librime‑lua 实现的按需云端候选插件,填补 Rime 生态中双拼、辅助码方案缺少云输入的空白。

传统云输入插件大多只适配全拼,直接把原始编码提交云端,无法处理双拼 / 辅码编码;而问云利用 Rime 内置spelling_hints拼写提示接口,在引擎内部自动还原出无调全拼,再调用云端接口获取新词、人名、网络热词。

采用按需触发设计:平时完全本地运行,不会自发联网;遇到本地词库打不出的人名、网络新词,按下快捷键才发起网络请求,上屏后的云词汇自动存入本地记忆库,下次直接离线可用。 Windows 小狼毫、 mac 鼠须管、 Linux fcitx5‑rime /ibus‑rime 全前端通用,兼容小鹤双拼、自然码双拼、各类辅助码体系,万象、雾凇等主流方案均可挂载。

核心痛点: Rime 本地词库更新周期长,大量新晋人名、网络梗不会出现在本地词库,双拼用户一直缺少成熟可用的云补全手段。

核心功能

1. 双拼 & 辅助码原生兼容(项目最大亮点)

不依赖外部编码转换表,读取翻译器输出的spelling_hints注释,直接从双拼 / 辅码编码还原标准无调全拼。

自然码、小鹤、搜狗双拼,搭配各类字形辅助码都可以直接使用,这是早期librime‑cloud插件不具备的能力。

使用示例:输入自然码双拼编码yhlikp(对应 “杨立昆”),本地词库无匹配,按下快捷键,插件自动还原全拼向云端查询,返回候选杨立昆杨丽坤等,选中上屏本地记忆,再次输入编码离线直接出词,候选标记☁。

2. 按需触发,隐私优先

默认快捷键:Ctrl+Alt+/不按快捷键完全不会发送任何内容到网络,只有手动触发才把还原后的拼音提交云端,日常打字零网络开销,不会后台偷偷上传输入内容,兼顾云能力与隐私边界。

3. 云候选本地持久记忆

云端获取的词条成功上屏,自动写入本地 LevelDB 记忆库;再次输入同一套编码,该词条直接置顶显示,无需再次联网,标记区分本地原生词条与云获取词条。重复候选会自动去重,不会重复显示相同词语。

4. 多云源自动降级回退

内置多套公开 Web 云接口,主源访问失败自动切换备用源:

  1. 搜狗云(默认首选,人名、新词质量高,响应速度约 40ms )
  2. 谷歌 Input Tools (回退备选,整句效果佳,新词更新慢)
  3. 百度 olime (接口现已失效,保留配置以备恢复)

全部为公开网页接口,无需申请 API‑Key;接口属于非官方承诺,随时可能失效,插件会静默降级,不破坏正常本地输入流程。

5. 纯 Lua 实现,无二进制依赖

只需要 lua 脚本文件,不需要编译二进制程序; Linux/macOS 系统自带 curl , Windows10 及以上内置 curl 工具,无需额外安装软件包。

工作流程原理

  1. 用户正常输入双拼或者带辅码编码,本地 Rime 先输出原生候选;
  2. 本地找不到目标词,按下Ctrl+Alt+/触发插件;
  3. processor 组件打上触发标记,通知 translator ;
  4. 读取spelling_hints,解析得到不带声调的标准全拼;
  5. curl 调用云端接口获取候选,设置较高权重注入候选列表,附带来源标记如(搜狗云)
  6. 用户选中云词条上屏, commit_notifier 将词条写入本地 LevelDB 记忆库;
  7. filter 做注释兜底,兼容万象等会清空注释的 Lua 插件,保证标记正常显示。

注意: librime‑lua 没有真正异步 IO ,网络请求是阻塞的,仅在按下快捷键瞬间短暂卡顿,普通打字不受任何影响。

部署安装

前置依赖

  1. 开启librime‑lua支持: Windows 小狼毫、 mac 鼠须管内置; Linux 发行版手动安装librime‑plugin‑lua
  2. 系统环境具备curl命令;
  3. 双拼 / 辅码方案必须开启translator/spelling_hints,数值大于 0;万象系列默认开启;雾凇等方案在 custom 配置中添加translator/spelling_hints: 9

安装步骤

  1. 将仓库lua/wenyun.lualua/wenyun/整个文件夹复制到 Rime 用户目录下lua/子目录。
  2. 在你正在使用的输入方案的.custom.yaml中挂载处理器、翻译器、过滤器(以万象 Pro 举例):
patch:
  engine/processors/@next: lua_processor@*wenyun*processor
  engine/translators/@next: lua_translator@*wenyun*translator
  engine/filters/@next: lua_filter@*wenyun*filter
  1. 输入法托盘执行重新部署 Rime,即可生效。

可自定义配置项(写在 custom.yaml 的 patch 块下)

  wenyun/trigger_key: "Control+Alt+slash" # 触发快捷键
  wenyun/provider: sogou       # 默认云源 sogou / google
  wenyun/candidate_count: 5    # 返回云候选条数
  wenyun/timeout: 1.0          # 请求超时秒数
  wenyun/db_name: "lua/wenyun" # 本地记忆库路径
  wenyun/debug: false          # 是否开启调试日志