基于Rime的lua脚本系统打造AI增强输入法
极简版 AI 纠错功能:
按 6 触发纠错,显示"AI纠正中..."
再按 6 显示纠正结果
文件说明ai_corrector_processor.lua按键监听(放入 lua/ 目录)ai_corrector.lua候选词处理(放入 lua/ 目录)ai_corrector_service*后台服务
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Rime输入法支持内置简单的Lua脚本,基于此得以设计AI输入法。
Rime的配置文件夹结构大致如下:
Rime
Lua——存放lua脚本
build——存放构建后的信息
*.userdb——存放用户输入习惯的记录
*_dicts——存放引入的词典
其他配置文件
1. 程序文件部署
当前版本总共需要部署三个程序,分别是两个lua程序以及一个可执行程序。
Rime输入法配置文件可通过Rime输入法菜单打开,Mac端叫作用户设定,Windows端叫作用户文件夹。Mac下Rime用户资料默认在Users/用户名/Library/Rime下,可直接在README.md所在目录打开终端执行下面命令进行复制。
cp ai_corrector_processor.lua ~/Library/Rime/lua/
cp ai_corrector.lua ~/Library/Rime/lua/
Windows端Rime用户文件夹默认路径是C:\Users\用户名\AppData\Roaming\Rime,Linux平台输入框架和版本不同则具体的也会目录不同,需要根据系统是fictx4、fictx5或iBus来定。
将不同平台对应的可执行程序复制到Rime配置文件的根目录下。
2. 配置 Rime Schema
在你的输入方案的schema(例如雾凇拼音rime_ice.schema.yaml文件)中添加:
engine:
processors:
- lua_processor@*ai_corrector_processor # 尽量放在processors前面,以免被其他processor抢先捕获
filters:
- lua_filter@*ai_corrector # 这一条必须放在filters的第一个位置,用于修改AI纠正结果显示
或者在输入方案的custom文件中添加:
patch: # 更推荐这种添加方案,不影响原有配置文件
engine/processors/@after 0: lua_processor@*ai_corrector_processor
engine/filters/@before last: lua_filter@*ai_corrector
例如对雾凇拼音的rime_ice.shcema.yaml配置文件创建一个rime_ice.custom.yaml文件,然后添加上面的patch内容。
3. 启动服务
Windows平台在Rime根目录下打开PowerShell,执行命令开启服务,终端会显示纠错请求信息。Windows平台可以利用nssm制作后台服务(注意工作目录设置成Rime配置文件根目录)。
./ai_corrector_service_Windows/ai_corrector_service.exe
Linux平台同样在Rime配置根目录打开终端,执行命令启动服务。
./ai_corrector_service_Linux/ai_corrector_service.bin
如果启动失败的话检查权限是否正确,通过命令赋予运行权限。
chmod +x ./ai_corrector_service_Linux/ai_corrector_service.bin
Linux可用systemd设置成服务后台运行,直接执行bin文件即可,建议设置工作目录是Rime配置文件根目录。
Mac平台将ai_corrector_service_Mac.app放置在Rime配置文件根目录后不可以直接双击运行,因为服务程序没有UI,因此同样需要在Rime配置文件根目录打开终端执行命令:
./ai_corrector_service_Mac.app/Contents/MacOS/ai_corrector_service
Mac电脑可用launched设置成服务后台运行。
4. 重新部署 Rime
本方案是基于雾凇拼音输入方案而设计的,其他拼音方案同样可用。雾凇拼音默认设置5个候选词,因此我将数字键6作为了触发纠错功能的触发按键。
上面部署阶段成功后,具体的操作流程如下:
输入拼音,看到候选词
按 6 触发纠错
再按 6 显示结果
按 空格 选择结果
结束语:
因为Rime本身的设计,lua脚本只能在输入发生变动时触发,因此该版本需要先按数字键6触发AI纠错请求,等1-2s后再按6触发AI返回结果显示。等待按第二次键很是恼人,目前已经在设计第二版本,期望可以解决避免需要二次按键触发的问题。
当前版本prompt提示词经过数百次尝试优化,已经达到较好的效果。如果关注较多的话考虑下一版本公开提示词,到时候可以自定义做更多花样。
资源链接:
https://1815368419.v.123pan.cn/1815368419/26934630
支持外部配置文件和自动触发的 AI 纠错功能:
按 6 触发纠错
按 0 显示结果(或开启自动触发后自动显示)
文件说明ai_corrector_processor.lua按键监听(放入 lua/ 目录)ai_corrector.lua候选词处理(放入 lua/ 目录)ai_corrector_service.*后台服务ai_corrector_config.json配置文件
1. 复制文件
见版本1说明
2. 修改配置
编辑 ai_corrector_config.json:
{
"api_key": "你的API密钥",
"auto_trigger": true
}
配置文件记录着请求AI的信息,请把他放置在Rime配置目录下。
3. 配置 Rime Schema
见版本1说明
4. 启动服务
见版本1说明
5. 重新部署 Rime
选项说明默认值providerAI 提供商 (deepseek/openai/ollama)deepseekapi_keyAPI 密钥空api_urlAPI 地址DeepSeekmodel模型名称deepseek-chatauto_trigger自动显示结果trueprompt纠错提示词内置
开启 auto_trigger 后:
按 6 触发纠错
AI 返回结果后自动模拟按键 0
结果自动显示
需要权限:
macOS: 系统设置 → 隐私与安全性 → 辅助功能 → 添加 服务程序
资源链接:
https://1815368419.v.123pan.cn/1815368419/26963692
前言:
由于Linux系统输入法框架的设计,首发v2版本出现配置文件找错目录的问题,现已经经过修改和测试,在作者Ubuntu24 x11系统上已经可以正常运行,如若在其他发行版上出现问题请及时反馈。
v2版本是基于python的pynput模块实现发送模拟按键0来代替用户第二次按键触发直接修改输入法第一个候选词显示为AI返回结果的,但是优于Linux下x11和Wayland对pynput支持较差,因此此次修复版本针对这一问题做出了深度修复与测试。作者Ubuntu24 x11环境下可以实现正常纠错及自动触发,优于作者设备有限,没能测试Wayland,因此下面给出x11的实际可行配置策略及Wayland理论可行配置策略。
本文档说明在 Linux 环境下配置 AI 纠错服务自动触发功能所需的依赖和设置。
Python 的 pynput 库在 Linux 下存在以下问题:
X11:需要额外权限配置,且不够稳定
Wayland:静默失败,无法正常工作
因此,在 Linux 下程序跳过 pynput,改用系统工具。
程序通过环境变量 XDG_SESSION_TYPE 自动检测当前桌面环境:
echo $XDG_SESSION_TYPE
# 输出 "x11" 或 "wayland"
使用工具:xdotool
安装
# Ubuntu/Debian
sudo apt install xdotool
# Fedora
sudo dnf install xdotool
# Arch
sudo pacman -S xdotool
测试
xdotool key 0
无需额外配置
X11 下 xdotool 开箱即用,无需守护进程或特殊权限。
使用工具:ydotool
安装
# Ubuntu/Debian
sudo apt install ydotool
# Fedora
sudo dnf install ydotool
# Arch
sudo pacman -S ydotool
启动守护进程
ydotool 需要后台运行 ydotoold 守护进程:
# 手动启动
sudo ydotoold &
# 或使用 systemd(推荐)
sudo systemctl enable ydotool
sudo systemctl start ydotool
用户权限
将用户添加到 input 组:
sudo usermod -aG input $USER
# 注销并重新登录生效
测试
# 数字 0 的 Linux 内核键码是 11
# 格式:keycode:1 (按下) keycode:0 (释放)
ydotool key 11:1 11:0
结语:以上是针对Linux用户需要特殊配置的说明,若有其他问题请即时反馈。
资源链接:https://1815368419.v.123pan.cn/1815368419/26969029