前言

使用小狼毫,雾凇拼音很久了,Rime输入法小狼毫简明使用手册,其他都很满意,但一直以来就有一个问题困扰我:重启电脑后,weasel.yamlweasel.custom.yaml 等文件里改的配置参数非得重新手动部署一下才有效,点击 build 里的 weasel.yaml 查看修改的设置又都显示正常。

开始我还搜索了一下,有些说是小狼毫输入法的 bug,但都是老版本,后面 0.15.0,0.16.0,到现在 0.17.4 了,我的四台电脑都是这样。
后来就放弃了,每次重启电脑就再手动部署一遍。这两天电脑重启了多了点,我就有些不爽,想问 AI 把这个问题解决了。
问 ChatGPT,先是怀疑我的多个 YMAL 设置不对,格式不对,又是让我查日志,折腾了半天还是不知道问题出在哪。
我改问 Gemini,几轮对话下来还真找到问题出在哪了。

解决问题

确认问题

  1. 按下 Win + R,输入 shell:startup 并回车。

  2. 在打开的文件夹里,右键 -> 新建 -> 快捷方式。

  3. 对象位置输入: "C:\Program Files\Rime\weasel-0.17.4\WeaselServer.exe" (注意确认安装路径,并要带双引号)。

  4. 右键点击刚才创建的这个快捷方式 -> 属性。在“目标”栏的末尾添加一个空格和参数 /p
    变成这样:...WeaselServer.exe" /p
    /p 参数会告诉小狼毫这是由用户启动的常驻进程。
    保存后重启电脑。不要动任何设置,再进入启动文件夹里,双击运行。看看是不是不用重新部署小狼毫,设置的参数都生效了,如果是,就按下面的步骤解决问题。如果不是,那就和我的问题不一样,去检查一下 build 里的 weasel.yaml 文件。

核心原因分析(AI)

  1. 启动冲突: 那两个开关对应着系统层面的自启动逻辑。当你重启电脑时,系统自带的启动项(可能是旧版残留或安装程序注册的)抢先运行了 WeaselServer。

  2. 环境变量滞后: 系统自带的启动项由于加载优先级太高(启动太早),此时 Windows 还没准备好你的 AppData 用户路径,导致这个抢先运行的进程变成了“聋子”,读不到配置。

  3. 快捷方式失效: 当你登录桌面后,shell:startup 里的快捷方式尝试运行,但发现后台已经有一个 WeaselServer 了,于是它就自动退出了(小狼毫是单实例程序),没能成功“拨乱反正”。

  4. 手动双击有效: 你手动双击时,虽然进程已存在,但手动触发会向原进程发送信号或强制刷新环境,从而激活了配置。

解决方法

  1. 打开 Windows 设置 -> 账户 -> 和 设置 -> 应用 -> 按下图关闭。

login

backup

startup

  1. 打开任务管理器 -> 启动,WeaselServer.exe 即小狼毫算法服务禁用。

taskmgr

  1. Win + R 输入 regedit 打开 注册表编辑器。
    定位到:HKEY_CURRENT_USER\Software\Rime\Weasel
    在右侧空白处右键 -> 新建 -> DWORD (32位) 值。命名为 Preload,并将其值设置为 1(十六进制)。原理: 这是一个隐藏开关,告诉小狼毫在服务启动时更积极地预载用户配置。

  2. 在注册表里依次检查以下三个路径:

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run

如果看到任何 WeaselRime 的条目,全部右键删除。

  1. 重启电脑。小狼毫应该就正常运行了所有配置,不用再部署一次了。