news 2026/9/4 13:00:11

Karukan日文输入法仓库结构导览:4个Rust crate + 1个Swift包快速上手

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Karukan日文输入法仓库结构导览:4个Rust crate + 1个Swift包快速上手

Karukan日文输入法仓库结构导览:4个Rust crate + 1个Swift包快速上手

【免费下载链接】karukanJapanese Input Method System for Linux, macOS, Neural Kana-Kanji Conversion Engine项目地址: https://gitcode.com/GitHub_Trending/ka/karukan

Karukan 是一款面向Linux 和 macOS 的日文输入法系统,内置基于 llama.cpp 的神经 kana-kanji(假名转汉字)转换引擎。整个仓库由4 个 Rust crate + 1 个 Swift 包组成,结构清晰、职责分明。本文带你快速看懂 Karukan 日文输入法的仓库结构,无论新手还是进阶用户都能快速上手。

上图是 Karukan 日文输入法在编辑器中实时将罗马字转换为汉字的实际效果演示。

仓库结构一览:一张表看懂 Karukan 项目

打开仓库根目录,你会发现顶层只有三大块目录 + 若干文档,非常清爽:

目录/文件作用类型
karukan-engine/核心转换引擎:罗马字→平假名、神经网络汉字转换、字典、学习缓存Rust crate
karukan-im/core/IME 本体:状态机、输入处理、macOS 用的 JSON-RPC 服务器Rust crate
karukan-im/fcitx5/Linux 前端:fcitx5 插件 + C FFI 桥接Rust crate + C++ 插件
karukan-im/macos/macOS 前端:Swift/InputMethodKit 输入法Swift 包
karukan-cli/CLI 工具集:字典构建、词典查看器、HTTP 服务器、基准测试Rust crate
docs/用户文档:键位、配置、字典、分块等文档

所有 Rust 代码通过根目录的 Cargo.toml 组织成一个Cargo workspace,一条命令即可构建全部 crate:

cargo build --release

仓库还有一份 CLAUDE.md,相当于官方给开发者准备的"架构说明书",包含每个模块的职责和构建命令,强烈推荐先读它。

第一步:获取 Karukan 仓库

git clone https://gitcode.com/GitHub_Trending/ka/karukan

要求:Rust 1.92+(workspace 使用 2024 edition)。macOS 前端还需要 Xcode/Swift 工具链;Linux 前端还需要 cmake、gcc、clang 等 C/C++ 构建工具(详见 karukan-im/fcitx5/README.md)。

核心大脑:karukan-engine(Rust crate 1/4)

karukan-engine/ 是整个 Karukan 日文输入法的"智力中枢",关键源码都在 karukan-engine/src/ 下:

  • 🧠romaji/— 罗马字→平假名转换,内部用 Trie + 200 多条规则驱动
  • 🤖kanji/— 通过 llama.cpp 加载 GGUF 小模型(GPT-2 / Qwen3 底座),实现上下文感知的神经假名转汉字
  • 📖dict.rs— 双数组 Trie 系统字典,支持高速精确/前缀匹配
  • 🎓learning.rs— 学习缓存:记住你选过的转换结果,下次优先展示
  • rewriter/— 候选改写器(从 Mozc 移植):自动生成半角片假名、全角/半角、数字多种写法等变体

模型清单定义在 karukan-engine/models.toml,首次运行时会自动从 Hugging Face 后台下载;下载期间假名输入和字典转换照常可用,加载完成后神经转换自动生效。

IME 本体:karukan-im core(Rust crate 2/4)

karukan-im/core/ 是输入法运行时,核心是一个Empty → Composing → Conversion的状态机:

  • core/engine/ — 引擎主逻辑:输入处理、实时转换、分块(chunk)策略、LRU 转换缓存
  • server/ —karukan-imserver:基于 stdio 的 JSON-RPC 2.0 服务器,专门给 macOS 前端当"引擎子进程"
  • config/settings.rs — 读取用户配置config.toml

Linux 前端:karukan-fcitx5(Rust crate 3/4)

karukan-im/fcitx5/ 让 Karukan 日文输入法以插件形式运行在 fcitx5 框架上:

  • src/ffi/ — Rust 侧 C FFI 层,把karukan-im引擎包装成 C API
  • include/karukan.h — 暴露给 C++ 插件的 C 头文件
  • fcitx5-addon/ — C++ 编写的 fcitx5 插件本体,用 CMake 构建安装

安装只需三步(系统级安装):

cd karukan-im/fcitx5/fcitx5-addon cmake -B build -DCMAKE_INSTALL_PREFIX=/usr cmake --build build -j && sudo cmake --install build

macOS 前端:Swift 包(唯一非 Rust 组件)

karukan-im/macos/ 是一个标准的 Swift Package(定义见 Package.swift),采用服务器-客户端架构

  • Swift 端只负责与 InputMethodKit 对接:翻译键盘事件、渲染预编辑和候选窗口
  • 所有 IME 状态都跑在 Rust 的karukan-imserver子进程里,通过 JSON-RPC 通信

关键文件:

  • KarukanInputController.swift — IMK 输入控制器
  • EngineProcess.swift — 引擎子进程生命周期管理(崩溃自动重启)
  • EngineProtocol.swift — 与 Rust 侧 protocol.rs 一一对应的协议镜像

开发安装只需:

cd karukan-im/macos make install # 构建 + 打包 Karukan.app + 安装到 ~/Library/Input Methods

工具层:karukan-cli(Rust crate 4/4)

karukan-cli/ 是面向开发者的工具箱,提供 4 个二进制:

二进制用途
karukan-dict从 JSON/Mozc TSV 构建二进制字典 + Web/CLI 词典查看器
sudachi-dict从 Sudachi 字典 CSV 生成带评分的 JSON 字典
karukan-server假名汉字转换 HTTP 服务器(带 Web UI)
ajimee-benchAJIMEE-Bench 精度评测工具

构建并运行服务器体验在线转换:

cargo run --release --bin karukan-server

新手上手路线与延伸阅读

📌推荐的上手顺序

  1. 读 README.md 了解项目全貌
  2. 读 CLAUDE.md 掌握架构与构建命令
  3. 跑通测试:cargo test --workspace
  4. 按需深入:Linux 用户看 karukan-im/fcitx5/README.md,macOS 用户看 karukan-im/macos/README.md

📚用户向文档(日常使用最常用):

  • 键位绑定:docs/key-bindings.md
  • 配置项:docs/configuration.md
  • 字典说明:docs/dictionary.md
  • 用户字典:docs/user-dictionary.md
  • 分块机制:docs/chunking.md
  • 符号与全角半角:docs/symbols.md

一句话总结:引擎在karukan-engine/,运行在karukan-im/,平台差异被封在各前端里,工具都在karukan-cli/——掌握这个分层,你就能快速定位 Karukan 日文输入法的任何功能代码。

【免费下载链接】karukanJapanese Input Method System for Linux, macOS, Neural Kana-Kanji Conversion Engine项目地址: https://gitcode.com/GitHub_Trending/ka/karukan

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 12:59:22

基于MCU与专用计量芯片的高精度单相功率分析仪设计与实现

简介:本资源是2024年全国大学生电子设计竞赛B题‘单相功率分析仪’的完整实现方案,面向计算机、电子信息类专业学生及电赛备赛者,解决单相交流电路中电压、电流、有功/无功功率等参数的实时采集、计算与显示问题,适用于课程设计、…

作者头像 李华
网站建设 2026/9/4 15:22:38

AI图像生成与视频合成:从模型部署到工作流实践

这个标题指向的内容不适合作为技术博客素材处理,我无法围绕它生成文章。原因很直接:付费“动态写真”类内容存在明确的合规与传播风险,无论具体形态如何,这类主题都不是 CSDN 类技术博客应该覆盖的方向。作为技术博主,…

作者头像 李华
网站建设 2026/9/4 16:30:45

高级后端开发之Java并发

摘要:本文围绕 Java 高级开发面试中的高并发、锁、高可用与数据一致性四大核心主题,给出从“会用”到“懂原理”的进阶路线。内容涵盖 JUC 源码与 AQS、缓存穿透击穿雪崩、Redis 分布式锁与 Redlock、本地消息表与幂等性设计,并结合“秒杀/抢…

作者头像 李华
网站建设 2026/9/4 15:36:06

Alibaba Sentinel(熔断、限流)(国内下载Sentinel)

前言: 在微服务中,为了用户体验与并发控制安全性考虑,此时需要考虑如下场景: 熔断: A->B->C,此时A服务依赖于B服务,B服务依赖于C服务,此时如果C服务发生了一些异常,那…

作者头像 李华
网站建设 2026/9/4 8:49:27

Burp Suite 新手入门:从零配置到实战抓包与安全测试

1. 先搞清楚 Burp Suite 到底能帮你做什么,以及新手最容易卡在哪 如果你刚开始接触网络安全,尤其是 Web 安全方向,那 Burp Suite 这个名字你肯定绕不过去。它不是什么“神器”,但确实是目前最主流、最全面的 Web 应用安全测试平台…

作者头像 李华
网站建设 2026/9/4 8:31:46

多技术栈环境判断与配置管理工程实践指南

在实际开发中,我们经常会遇到需要判断当前代码运行环境的需求。例如,一个应用可能需要区分是在开发者的本地IDE中调试,还是在测试服务器、预发布环境或生产服务器上运行,以便动态加载不同的配置文件、开启调试日志或切换数据源。然…

作者头像 李华