为 Rime 输入法注入 AI 智能联想能力,让打字更流畅、更智能!
基于大语言模型的 Rime 输入法智能联想插件,类似豆包输入法的 AI 联想功能。通过本地运行的小型语言模型,在你输入时实时预测下文,提供智能词语建议。
- 基于大语言模型的上下文理解,提供 7 个智能联想词
- 支持连续联想:选择一个词后自动触发下一轮预测
- 真正理解语义,不只是简单的词频统计
- 使用 llama.cpp 引擎,推理速度快如闪电
- 支持 NVIDIA GPU 加速(CUDA)
- CPU 模式也能流畅运行
- 首次推理 1-2 秒,后续推理 0.1-0.3 秒
- 独立进程运行,不影响 Rime 核心稳定性
- 兼容任何 Rime 输入方案(雾凇拼音、小鹤双拼、万象拼音等)
- 无需修改原有输入方案,只需简单配置即可启用
- 智能资源管理:闲置时自动卸载模型,节省内存
- 内存占用 ≤ 150MB
- 显存占用 ≤ 600MB(GPU 模式)
- 推荐使用 0.5B 参数的小模型,体积仅 300MB
- 数字键 1-7 快速选择联想词
- 右 Shift 键一键隐藏/显示联想框
- 自动隐藏:停止输入 5 秒后自动收起
- 操作系统:Windows 10/11 64位(Linux/macOS 支持开发中)
- Rime 输入法:小狼毫(Weasel)>= 0.14.0
- 内存:至少 2GB 可用内存
- 硬盘空间:至少 1GB(包含模型文件)
- GPU 加速:NVIDIA 显卡 + CUDA 11.7+(推荐)
- 显存:至少 1GB
- Visual Studio 2022(含 C++ 桌面开发工具)
- CMake >= 3.15
- Git(用于克隆子模块)
-
下载发布包
从 Releases 下载最新版本的
LLM-Powered-RIME-vX.X.X.zip -
解压并安装
# 解压到任意目录 # 运行安装脚本 install.bat
-
下载语言模型
推荐使用 Qwen2.5-0.5B-Instruct (Q4_K_M):
- 大小:约 300MB
- 下载地址:Hugging Face
- 下载文件:
qwen2.5-0.5b-instruct-q4_k_m.gguf - 放置位置:
%APPDATA%\Rime\models\qwen2.5-0.5b-instruct-q4_k_m.gguf
-
配置输入方案
编辑你的输入方案配置文件(例如
rime_ice.custom.yaml),添加以下内容:patch: engine/processors: - lua_processor@llm_suggestion_processor # 添加这行 - ascii_composer - recognizer # ... 其他保持不变 engine/filters: - lua_filter@llm_suggestion_filter # 添加这行 - simplifier # ... 其他保持不变
💡 提示:本仓库提供了
rime_ice.custom.yaml示例文件,展示了如何集成到雾凇拼音方案 -
重新部署 Rime
右键点击 Rime 托盘图标 → 选择"重新部署"
-
开始使用
打开任意文本编辑器,输入中文并上屏,即可看到 AI 联想词!
# 1. 克隆仓库(包含 llama.cpp 子模块)
git clone --recursive https://github.com/Samm-Fang/LLM-Powered-RIME.git
cd LLM-Powered-RIME
# 2. 编译项目
scripts\build_all.bat
# 3. 按照"方式一"的步骤 3-6 继续配置-
启用/禁用 AI 联想
- 输入
llm并按空格:启用 AI 联想功能 - 输入
sllm并按空格:禁用 AI 联想功能 - 可随时切换,无需重启 Rime
- 输入
-
触发联想
- 输入中文词语后按空格或回车上屏
- 稍等片刻(首次 1-2 秒,后续 0.1-0.3 秒)
- 联想词会显示在候选框中
-
选择联想词
- 按数字键
1-7选择对应的联想词 - 选中后自动上屏并触发下一轮联想
- 按数字键
-
隐藏/显示联想框
- 按右 Shift 键切换显示状态
- 停止输入 5 秒后自动隐藏
-
连续输入
- 选择联想词后会自动触发新的联想
- 实现流畅的连续输入体验
本插件兼容任何 Rime 输入方案。以万象拼音为例:
编辑 luna_pinyin.custom.yaml:
patch:
engine/processors:
- lua_processor@llm_suggestion_processor
- ascii_composer
- recognizer
- key_binder
- speller
- punctuator
- selector
- navigator
- express_editor
engine/filters:
- lua_filter@llm_suggestion_filter
- simplifier
- uniquifier重新部署后即可在万象拼音中使用 AI 联想功能。
编辑 %APPDATA%\Rime\llm_suggestion.yaml 可自定义各项参数:
llm_suggestion:
enabled: true # 启用/禁用功能
# 模型路径(自动检测,通常无需修改)
model_path: "models/qwen2.5-0.5b-instruct-q4_k_m.gguf" inference:
temperature: 0.7 # 温度参数(0.0-2.0)
# 越高越随机,越低越保守
# 推荐值:0.6-0.8
top_k: 7 # 返回的联想词数量(1-10)
# 推荐值:5-7
repeat_penalty: 1.1 # 重复惩罚(>1.0)
# 越高越避免重复词
# 推荐值:1.0-1.2 server:
args:
- "--n-gpu-layers"
- "99" # GPU 加速层数
# 99 = 全部加载到 GPU(推荐)
# 0 = 纯 CPU 模式
# 20-50 = 混合模式
- "--threads"
- "4" # CPU 线程数
# 根据你的 CPU 核心数调整
# 推荐值:物理核心数的 50-75%
- "--ctx-size"
- "2048" # 上下文窗口大小
# 越大越占内存
# 推荐值:1024-2048 timers:
hide_delay: 5 # 停止输入后隐藏 UI 的延迟(秒)
unload_delay: 300 # 卸载模型的延迟(秒,5分钟)
shutdown_delay: 600 # 终止进程的延迟(秒,10分钟)| 场景 | GPU 层数 | 线程数 | 上下文 | 预期性能 |
|---|---|---|---|---|
| 高端 GPU | 99 | 4 | 2048 | 0.1-0.2s |
| 中端 GPU | 50 | 4 | 1024 | 0.2-0.4s |
| 无 GPU | 0 | 4-8 | 1024 | 0.5-1.0s |
| 低配 CPU | 0 | 2 | 512 | 1.0-2.0s |
┌─────────────────────────────────────────────────────────────┐
│ Rime 输入法进程 │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Lua 插件层 │ │
│ │ ├─ llm_suggestion_processor (处理器) │ │
│ │ ├─ llm_suggestion_filter (过滤器) │ │
│ │ ├─ controller.lua (联想控制器) │ │
│ │ ├─ state_manager.lua (状态管理) │ │
│ │ ├─ ipc_client.lua (IPC 客户端) │ │
│ │ └─ binary_protocol.lua (二进制协议) │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↕ 命名管道 (IPC)
┌─────────────────────────────────────────────────────────────┐
│ llm_suggestion_server.exe │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ C++ 后端服务 │ │
│ │ ├─ named_pipe.cpp (命名管道服务器) │ │
│ │ ├─ top_k_extractor.cpp (Top-K 提取器) │ │
│ │ ├─ ipc_protocol.h (通信协议) │ │
│ │ └─ llama.cpp (LLM 推理引擎) │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
- 解耦架构:Lua 插件与 C++ 服务器分离,互不影响
- 异步通信:通过命名管道实现高效 IPC
- 智能管理:自动启动/停止服务器,按需加载/卸载模型
- 二进制协议:高效的数据传输格式
遇到问题?请先查看 FAQ.md 获取详细的故障排除指南。
| 问题 | 快速解决 |
|---|---|
| 联想不显示 | 检查是否重新部署、查看日志文件 |
| 服务器启动失败 | 确认模型路径、检查内存是否充足 |
| 推理速度慢 | 启用 GPU 加速或使用更小的模型 |
| 内存占用高 | 调整 ctx-size 或使用 Q2/Q3 量化模型 |
详细解决方案请参考 FAQ.md。
- FAQ.md - 常见问题与详细故障排除
- rime_ice.custom.yaml - 雾凇拼音集成示例
- 需求文档 - 功能需求说明
- 设计文档 - 技术架构设计
LLM-Powered-RIME/
├── src/ # 源代码
│ ├── cpp/ # C++ 后端服务
│ │ ├── llm_suggestion_server.cpp
│ │ ├── top_k_extractor.cpp
│ │ ├── named_pipe.cpp
│ │ └── ipc_protocol.h
│ └── lua/ # Lua 插件
│ └── llm_suggestion/
│ ├── init.lua
│ ├── controller.lua
│ ├── state_manager.lua
│ ├── ipc_client.lua
│ └── binary_protocol.lua
├── config/ # 配置文件模板
│ └── llm_suggestion.yaml
├── scripts/ # 构建脚本
│ └── build_all.bat
├── llama.cpp/ # llama.cpp 子模块
├── rime_ice.custom.yaml # 雾凇拼音集成示例
├── install.bat # 安装脚本
├── start_server_safe.bat # 手动启动服务器
├── README.md # 项目说明
├── FAQ.md # 常见问题
└── LICENSE # 许可证
欢迎提交 Issue 和 Pull Request!
# 克隆仓库
git clone --recursive https://github.com/Samm-Fang/LLM-Powered-RIME.git
# 编译
scripts\build_all.bat
# 测试
# 按照快速开始指南配置并测试- 提交 Issue 前请先查看 FAQ.md
- 提供详细的错误信息和日志文件
- 说明你的系统环境和配置
欢迎在 Issues 中提出新功能建议!
本项目采用 CC BY-NC-SA 4.0(知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议)
- ✅ 可以自由使用、修改、分享
- ✅ 必须署名并使用相同许可
- ❌ 不得用于商业目的
- 💝 欢迎捐赠支持开发
详见 LICENSE 文件。
如果这个项目对你有帮助,欢迎通过以下方式支持:
- ⭐ 给项目点个 Star
- 🐛 报告 Bug 和提出建议
- 📖 完善文档和教程
- 💰 捐赠支持(开发中)
本项目是一份由 AI 浇筑的屎山,我不甚理解 C++ 和 Lua,只是看到豆包输入法强大的很想跟风玩一玩。
- 代码质量堪忧,可能存在各种奇怪的 Bug
- 作者能力有限,无法保证长期维护
- 使用本软件造成的任何问题,作者不承担责任
- 项目按"原样"提供,不提供任何明示或暗示的保证
- 这是一个实验性项目,纯属个人兴趣
如果你有能力改进代码,非常欢迎提交 PR!这个项目需要真正懂技术的人来拯救。
感谢以下开源项目:
特别感谢 AI 工具在开发过程中提供的帮助。
- GitHub Issues: 提交问题
- 作者: Samm-Fang
- Windows 支持
- 命名管道 IPC
- GPU 加速(CUDA)
- 智能资源管理
- 多方案兼容
- Linux/macOS 支持
- 更多 IPC 方式(共享内存、HTTP)
- 完整句子生成模式
- 多模型动态切换
- 性能进一步优化
- 完善的单元测试
- CI/CD 自动化
- 更多输入方案的配置示例
- 其他语言模型的适配
- 性能基准测试
- 用户使用教程视频
如果这个项目对你有帮助,请给个 Star ⭐
让 AI 为你的输入加速!
Made with ❤️ and 🤖