Skip to content

Latest commit

 

History

History
50 lines (39 loc) · 3.28 KB

File metadata and controls

50 lines (39 loc) · 3.28 KB

Linguist Zixia Input | 紫霞输入法:项目愿景与架构设计

1. 项目愿景与核心定义

本项目旨在开发一款跨平台的高效拼音输入法引擎及其 macOS 原生客户端。其核心设计理念是**「确定性输入(Deterministic Input)」**。让工具像物理规律一样可预测,为用户提供极致的肌肉记忆和心流体验。

核心特性要求(第一阶段 Sandbox 验证重点)

  • 确定性候选列表 (Deterministic Candidate List)
    • 单字锁死:高频单字的候选位置永远固定。
    • 手动锚定:词组位置由用户通过快捷键手动锚定,而非由算法自动频繁调整。
    • 双轨制设计:如果 Session-based 动态权重与固定词序冲突,优先保证固定/锚定位的确定性。
  • 状态机驱动的混合输入 (Hybrid Input)
    • 支持通过前缀切换模式(如 jvj 引导日文/特殊短语输入)。
    • 核心引擎由简洁、可维护的状态机(State Machine)驱动。
  • Vim-like 缓冲区编辑 (Vim Buffer Mode)
    • 输入过程中按 Esc 进入拼音缓冲区的 Vim 行编辑模式,支持快速修复 typo(如 h/j/k/l, w/b, x 等操作)。
  • 以词定字 (Word-based Selection)
    • 在候选高亮状态下,通过 [ (首字) 或 ] (尾字) 快速截取字符提交。
  • 极致隐私 (Zero-Persistence & No-Network)
    • 没有任何网络请求。
    • 除非用户明确锚定词序,否则不进行持久化隐私存储。Session-based 的权重优化仅保留在内存中。

2. 当前开发阶段:DemoApp 仿真验证 (IME Simulator)

为了 100% 专注于核心逻辑,当前阶段不使用 IMK,不注册为系统输入法。

  • 运行模式:一个标准的 macOS 桌面应用程序 (DemoApp)。
  • 交互逻辑
    1. App 内部拦截键盘按键序列(A-Z, 0-9, Esc, [, ], Space 等)。
    2. 将按键流(Key Stream)送入核心引擎进行状态转换。
    3. 在 App 内部渲染「绝对固定物理宽度」的候选框视图。
    4. 模拟「提交」操作,将最终选定的文字输出到 App 内部的文本显示区。

3. 架构设计原则:面向 FFI 与解耦

  • 核心引擎 (Core Engine)
    • 纯粹性:仅依赖 Foundation。禁止引入任何 UI 框架。
    • 逻辑层:负责状态机转移、拼音切分、内存词库检索、Vim 模式逻辑。
    • 接口设计:API 必须是 Stateless 或基于状态句柄的,方便未来转换为 C-ABI。
  • 仿真 UI (DemoApp UI)
    • 固定视觉:候选框宽度必须物理固定,不随内容缩放。
    • 仿真环境:实现一套按键分发逻辑,模拟系统输入法对键盘事件的消费。

4. 协作约束

  • 强制格式化与验证:在任何代码修改后,必须执行 swift-format 进行格式化,并执行 xcodebuild 相关命令(或通过 swift build)确保代码编译通过且无语法错误。
  • 防幻觉机制:禁止使用「现代智能联想」或「LLM 词频预测」作为第一阶段的逻辑。
  • 标点符号规范:在任何中文字符串中,永远使用方框引号「」,不要使用普通引号“”
  • 排版风格:遵循全局记忆中的中文排版约束(无空格、- 列表、慎用加粗)。