本项目旨在开发一款跨平台的高效拼音输入法引擎及其 macOS 原生客户端。其核心设计理念是**「确定性输入(Deterministic Input)」**。让工具像物理规律一样可预测,为用户提供极致的肌肉记忆和心流体验。
- 确定性候选列表 (Deterministic Candidate List):
- 单字锁死:高频单字的候选位置永远固定。
- 手动锚定:词组位置由用户通过快捷键手动锚定,而非由算法自动频繁调整。
- 双轨制设计:如果 Session-based 动态权重与固定词序冲突,优先保证固定/锚定位的确定性。
- 状态机驱动的混合输入 (Hybrid Input):
- 支持通过前缀切换模式(如
j或vj引导日文/特殊短语输入)。 - 核心引擎由简洁、可维护的状态机(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 的权重优化仅保留在内存中。
为了 100% 专注于核心逻辑,当前阶段不使用 IMK,不注册为系统输入法。
- 运行模式:一个标准的 macOS 桌面应用程序 (DemoApp)。
- 交互逻辑:
- App 内部拦截键盘按键序列(A-Z, 0-9, Esc, [, ], Space 等)。
- 将按键流(Key Stream)送入核心引擎进行状态转换。
- 在 App 内部渲染「绝对固定物理宽度」的候选框视图。
- 模拟「提交」操作,将最终选定的文字输出到 App 内部的文本显示区。
- 核心引擎 (Core Engine):
- 纯粹性:仅依赖
Foundation。禁止引入任何 UI 框架。 - 逻辑层:负责状态机转移、拼音切分、内存词库检索、Vim 模式逻辑。
- 接口设计:API 必须是 Stateless 或基于状态句柄的,方便未来转换为 C-ABI。
- 纯粹性:仅依赖
- 仿真 UI (DemoApp UI):
- 固定视觉:候选框宽度必须物理固定,不随内容缩放。
- 仿真环境:实现一套按键分发逻辑,模拟系统输入法对键盘事件的消费。
- 强制格式化与验证:在任何代码修改后,必须执行
swift-format进行格式化,并执行xcodebuild相关命令(或通过swift build)确保代码编译通过且无语法错误。 - 防幻觉机制:禁止使用「现代智能联想」或「LLM 词频预测」作为第一阶段的逻辑。
- 标点符号规范:在任何中文字符串中,永远使用方框引号「」,不要使用普通引号“”。
- 排版风格:遵循全局记忆中的中文排版约束(无空格、
-列表、慎用加粗)。