Skip to content

SECTL/NoctType

Repository files navigation

OmniType

OmniType 是一个以 Rust 为核心的跨平台输入法项目,目标是在 Android、iOS/iPadOS、HarmonyOS、Windows、Linux 和 macOS 上复用同一套输入法核心。

当前阶段只做核心,不急着做平台壳。平台壳后续放在 platforms/ 目录下,只负责系统输入法框架接入、键盘面板、候选栏和文本提交;候选生成、词库查询、排序、分页、输入状态机都应该调用 Rust 核心。

当前能力

  • Rust workspace 已搭建;
  • 支持基础词库加载;
  • 已接入 AOSP PinyinIME 基础拼音词库;
  • 支持英语和技术词种子词库;
  • 支持候选词生成与频率排序;
  • 支持用户选择频率加权雏形;
  • 支持输入会话状态;
  • 支持候选分页;
  • 支持平台壳未来共用的输入事件模型;
  • 支持拼音音节切分;
  • 支持拼音前缀候选;
  • 提供 CLI 用于调试核心引擎。

仓库结构

crates/
  omnitype-cli/      命令行调试入口
  omnitype-config/   核心配置结构
  omnitype-core/     输入会话、事件流、分页和提交状态
  omnitype-dict/     词库加载、精确查询和前缀查询
  omnitype-engine/   候选生成、排序、拼音切分和用户频率加权
  omnitype-userdb/   用户词库持久化
docs/                架构和平台说明
shared/dictionaries/ 基础词库数据
third_party/         第三方来源数据和授权文件
tools/dict-builder/  词库构建工具

运行示例

查询完整拼音:

cargo run -p omnitype-cli -- zhongguo

查询拼音前缀:

cargo run -p omnitype-cli -- b

查看分页候选:

cargo run -p omnitype-cli -- ba

回放输入事件:

cargo run -p omnitype-cli -- --events next,select:1 ba

指定外部词库文件:

cargo run -p omnitype-cli -- --dict shared/dictionaries/base.tsv nihao

使用用户词库文件记录选词频率:

cargo run -p omnitype-cli -- --user-dict local-data/userdb.tsv --events select:2 nihao

覆盖候选页大小:

cargo run -p omnitype-cli -- --page-size 5 ba

词库说明

当前基础词库位于:

shared/dictionaries/base.tsv

中文基础词库来自 AOSP PinyinIME,并保留在:

third_party/aosp-pinyinime/

词库格式为:

locale<TAB>reading<TAB>text<TAB>frequency<TAB>source

字段含义:

  • locale:语言或区域标识;
  • reading:输入串,中文为无声调拼音,英语为小写输入形式;
  • text:候选文本;
  • frequency:基础频率,数值越大排序越靠前;
  • source:数据来源,用于授权审计和重建。

验证命令

修改 Rust 代码后至少运行:

cargo fmt --all
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
cargo build --workspace

下一步核心路线

我认为接下来仍然应该继续做核心,优先级如下:

  1. 用户词库持久化

    • 当前已支持 TSV 文件加载和保存;
    • 下一步应支持删除、降权、迁移和按平台目录自动选址;
    • 后续可以再引入更紧凑的二进制格式。
  2. 简拼支持

    • 支持 nh -> 你好zg -> 中国
    • 这会明显提升真实输入体验。
  3. 更强的拼音切分

    • 处理 xian 这类多切分歧义;
    • 后续需要对不同切分路径打分。
  4. 候选去重和排序策略优化

    • 当前已有基础去重和频率排序;
    • 后续需要综合基础词频、用户频率、候选长度、输入匹配质量。
  5. 核心 FFI 边界设计

    • 为 Android、HarmonyOS、iOS、Windows、Linux、macOS 的平台壳准备稳定接口;
    • 平台层不应直接依赖内部复杂结构。
  6. 词库构建流水线增强

    • 记录词库生成版本、来源、授权和时间;
    • 后续再考虑领域词库和临时学习词库。

协作规则

AGENTS.md。本项目要求 Git 提交信息、代码注释、文档注释和脚本说明使用中文;协议字段、命令参数、crate 名称、API 名称和第三方项目名称可以保留英文。

About

Rust-first cross-platform input method core

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors