代码审查发现的问题: - finalize() 用 std::unique 按序列去重,但列表按 (edge_count, weight, arrival) 排序,相同序列的重复项并不相邻,会漏去重并 占用 k-best 槽位。改为按序列哈希用 unordered_set 全表去重。 - 每个假设都拼接完整 key 字符串(O(length^2 * k) 分配)仅用于 去重。改用滚动哈希 seq_hash,去掉逐节点字符串物化。 - 合并纠错边时按 min 取所有表(含被禁用表)的权重,会让被关闭 的表泄漏更低的 tie-break 代价。改为查询时仅按启用类型的子集 计算权重(min_enabled_correction_weight)。 - resolve_series_query 在 series-cache 命中前也重跑 k=9 束搜索。 按输入元组缓存 SeriesQueryResolution(纯输入函数,与词典内容 无关,无需失效),退格/重打前缀不再重算。 - mark_autocorrect_candidates 用 any_of 匹配任意备选读音,若某 备选折叠后恰好等于原始字母,会给用户拼对的候选误标 corrected_from。改为仅匹配与原始字母不同的读音。 验证:imetest 全绿;eval_quanpin_autocorrect(mixed/deletion, seed 42,300 样本)R@1/R@3/读音还原与基线逐档一致,p50 略降。
Metasequoia IME for Windows
中文 README · Website · Docs · Privacy
A free and open-source Chinese and Japanese input method for Windows 10 and 11, built on TSF with no legacy IMM32 path.
This repository is the whole Windows product: the TSF text service DLL, the resident server, the conversion engine, a self-written native GUI framework, the HTML surfaces and the installer. The engine was imported from MSIME-Engine and specialized for Windows; it now lives in engine/ as a first-party component, so a plain clone builds the product. See engine/UPSTREAM.md.
This is a public beta. Expect rough edges and read the release notes before upgrading.
Install
Download the installer from Releases or the download page, run it, then switch with Win + Space.
Current builds are not code signed. SmartScreen will block them and uiAccess is unavailable, which means the candidate window cannot float above elevated applications. Verify the download with the SHA256 published on the download page.
You need the Microsoft Visual C++ 2015–2022 Redistributable (x64). The server and settings app are 64-bit; the x86 redistributable is a separate package and does not substitute for it. If you cannot switch to the IME, the server keeps exiting, or the settings window closes immediately, install that first.
What it does
- Chinese input: full pinyin, double pinyin (Xiaohe / Ziranma / Shoudao / Microsoft), Wubi 86
- Japanese input: romaji, with hiragana, katakana and dictionary candidates; also available as a temporary mode from Chinese
- Helpcode (形码) filtering on pinyin schemes: five tables, single- and double-code
- Optional cloud candidates, and AI suggestions via DeepSeek / OpenAI / SiliconFlow / Groq
- English-Chinese glosses in the vertical candidate window
- Mixed Chinese-English input, emoji and kaomoji, a dedicated English candidate mode
- Voice input with streaming recognition and optional cleanup
- Handwriting, on-screen keyboard, floating toolbar, clipboard history
- User dictionary management, candidate frequency tuning, skins with light and dark variants
Privacy
An input method sees every keystroke, so the boundaries are stated explicitly in PRIVACY.md: which features reach the network, what each one sends, what the defaults are, and how to turn each off.
Two things worth knowing up front. Cloud candidates are on by default — the composition spelling goes to Google's input-tools service, and it is the only network feature that works without you supplying a credential. API tokens are stored in plain text in config.toml, unlike macOS and Linux which use the Keychain and Secret Service.
There is no telemetry, analytics or crash reporting of any kind.
Building and contributing
CONTRIBUTING.md has the environment, the build order and what to run before opening a pull request. Contributions do not have to be code — dictionary entries, documentation, icons and compatibility testing all count, and the recruiting page lists them by area.
Note that most issues, documentation and code comments are in Chinese. English pull requests and issues are welcome.
Licence
GPL-3.0. See LICENSE and THIRD_PARTY_NOTICES.txt.