Skip to content

Samm-Fang/LLM-Powered-RIME

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 LLM-Powered-RIME

为 Rime 输入法注入 AI 智能联想能力,让打字更流畅、更智能!

基于大语言模型的 Rime 输入法智能联想插件,类似豆包输入法的 AI 联想功能。通过本地运行的小型语言模型,在你输入时实时预测下文,提供智能词语建议。

✨ 核心特性

🧠 AI 驱动的智能联想

  • 基于大语言模型的上下文理解,提供 7 个智能联想词
  • 支持连续联想:选择一个词后自动触发下一轮预测
  • 真正理解语义,不只是简单的词频统计

⚡ 极致性能优化

  • 使用 llama.cpp 引擎,推理速度快如闪电
  • 支持 NVIDIA GPU 加速(CUDA)
  • CPU 模式也能流畅运行
  • 首次推理 1-2 秒,后续推理 0.1-0.3 秒

🎯 完美融入 Rime

  • 独立进程运行,不影响 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(用于克隆子模块)

🚀 快速开始

方式一:使用预编译版本(推荐)

  1. 下载发布包

    Releases 下载最新版本的 LLM-Powered-RIME-vX.X.X.zip

  2. 解压并安装

    # 解压到任意目录
    # 运行安装脚本
    install.bat
  3. 下载语言模型

    推荐使用 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
  4. 配置输入方案

    编辑你的输入方案配置文件(例如 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 示例文件,展示了如何集成到雾凇拼音方案

  5. 重新部署 Rime

    右键点击 Rime 托盘图标 → 选择"重新部署"

  6. 开始使用

    打开任意文本编辑器,输入中文并上屏,即可看到 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 继续配置

📖 使用指南

基本操作

  1. 启用/禁用 AI 联想

    • 输入 llm 并按空格:启用 AI 联想功能
    • 输入 sllm 并按空格:禁用 AI 联想功能
    • 可随时切换,无需重启 Rime
  2. 触发联想

    • 输入中文词语后按空格或回车上屏
    • 稍等片刻(首次 1-2 秒,后续 0.1-0.3 秒)
    • 联想词会显示在候选框中
  3. 选择联想词

    • 按数字键 1-7 选择对应的联想词
    • 选中后自动上屏并触发下一轮联想
  4. 隐藏/显示联想框

    • 按右 Shift 键切换显示状态
    • 停止输入 5 秒后自动隐藏
  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

📚 项目文档

📂 项目结构

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!这个项目需要真正懂技术的人来拯救。

🙏 致谢

感谢以下开源项目:

  • Rime - 优秀的开源输入法框架
  • llama.cpp - 高性能的 LLM 推理引擎
  • 雾凇拼音 - 优秀的 Rime 输入方案
  • Qwen - 强大的中文语言模型

特别感谢 AI 工具在开发过程中提供的帮助。

📞 联系方式

🗺️ 开发路线图

已完成 ✅

  • Windows 支持
  • 命名管道 IPC
  • GPU 加速(CUDA)
  • 智能资源管理
  • 多方案兼容

计划中 📋

  • Linux/macOS 支持
  • 更多 IPC 方式(共享内存、HTTP)
  • 完整句子生成模式
  • 多模型动态切换
  • 性能进一步优化
  • 完善的单元测试
  • CI/CD 自动化

欢迎贡献 🎯

  • 更多输入方案的配置示例
  • 其他语言模型的适配
  • 性能基准测试
  • 用户使用教程视频

⭐ Star History

如果这个项目对你有帮助,请给个 Star ⭐

Star History Chart


让 AI 为你的输入加速!

Made with ❤️ and 🤖

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors