设置说明方案设置

码表方案配置

五笔等码表方案的全局上屏行为、编码提示、z 键引导、词频调整与自动造词

v0.122.0

方案 → 码表方案配置。这里的设置是所有码表方案共享的基线——五笔 86、导入的五笔 98 / 虎码、快符表都读同一份。个别方案要不一样,用方案级码表配置覆盖。

对应配置段是 config.toml[schema.codetable],完整键名与默认值见方案与引擎配置

码表方案是什么

码表方案按「编码 → 词条」的固定映射出候选,编码由方案的码表文件写死,不做拼音那样的语言模型推断。清风内置的五笔 86(ID wubi86)基于极点五笔码表,最大码长 4:

q    → 我(一级简码)
dd   → 大(二码简码)
gggg → 王(全码)
ggtt → 五笔(二字词)

导入第三方码表(五笔 98、新世纪、虎码等)后也是同一套配置在管。

上屏行为

这一组决定「什么时候自动把候选送出去」:

选项说明出厂
全码唯一自动上屏编码唯一精确匹配、且没有更长的后继编码时,直接上屏不必按空格
自动上屏最短码长 0.122 新增上一项从第几码开始生效,见下。仅在上一项开启时可调满码(跟随方案)
满码空码清空编码达到最大码长且一个候选都没有时,自动清空缓冲,不必按 Esc
顶码上屏编码超过最大码长时,自动把前 N 码的首选顶上去,多出来的码留在缓冲继续
标点顶码上屏有编码时按标点,先上屏首选再输出该标点

「顶码」是码表方案特有的连打机制

四码方案打第五个字母时,前四码那个字已经确定了——顶码上屏就是把它自动送出去,让你不必按空格断开。关掉它,第五个字母会被当作新一轮编码或被丢弃(取决于方案)。

自动上屏最短码长 0.122 新增

「全码唯一自动上屏」默认只在打满全码时才动手:四码方案得打够 4 码。这一项把门槛往前挪。

档位从第几码起判定
满码(跟随方案)方案自己的最大码长(四码方案 = 4 码)
1 码 ~ 5 码就是这个码长

门槛只是第一道闸,另外两道照旧:该编码得只有一个精确匹配,且词库里没有以它开头的更长编码。所以调到 2 码并不等于「打两码就走」——gg 底下还有 ggtt 之类后继时仍会等你。真正用得上的是短码即到头的码表:快符表那种最大码长 1 的方案,把门槛设成 1 码就能唯一即上屏。

别设得比方案的全码长还大

下拉里的档位是固定的 1~5,而方案的全码长未必有那么长。设成比它大的值,编码永远够不着门槛,自动上屏就等于整个关掉——界面上却看不出异样。拿不准就用「满码(跟随方案)」。

短语的自动上屏跟着同一个门槛走(同一个开关下,短语与码表的「满码」规格必须一致),方案里另设的码表覆盖同样适用。

常用功能

选项说明出厂
显示编码提示候选旁显示该词的完整编码。打 gg 时「王」旁边显示剩下的 gg,帮你记全码
精确匹配模式只显示编码完全等于你打的那些候选,不再显示前缀补全的长词
精确匹配空码补全精确匹配模式下若一个候选都没有,自动从更长编码里取首个候选顶上,避免空码。仅在上一项开启时可用
z 键重复输入z 时首选是上一次上屏的内容,快速重复
z 键引导功能见下不启用
出简让全 0.117 新增见下关闭
单字输入 0.121 新增只出单字。同码没有词来争首选,满码唯一即可直接上屏,不必看候选窗。见下

精确匹配模式适合谁

默认(关)时,打 gg 会同时出精确匹配的「王」和前缀补全的 ggtt「五笔」等长词。开启后只剩精确匹配的,候选干净、位置稳定,适合已经打熟、靠肌肉记忆盲打的用户;代价是失去「打半个码就看到长词」的便利。

「精确匹配空码补全」是它的安全网:某个编码在词库里恰好没有精确条目时,不至于面对空候选卡住。

z 键引导功能

z 在五笔 86 里是死码(不参与任何编码),可以借来当引导键。空码状态下按 z 直接进入所选模式:

取值效果
不启用(作编码字母)z 就是普通字母
临时拼音z 进入临时拼音
临时英文z 进入临时英文
快捷输入z 进入快捷输入

z 有三重身份,冲突时按固定顺序裁决

z 键重复输入、z 键引导功能、以及「z 是本方案的活码前缀」三者共用一个键。运行时的裁决顺序是:z 是本方案活码 > 「z 键重复输入」开着且有上屏历史 > 引导功能

所以在 z 参与编码的方案(如某些三码方案)上配引导功能不会生效;在五笔 86 上则要先关掉「z 键重复输入」,引导功能才有机会拿到这个键。

其它引导键(符号键)在临时拼音 / 临时英文 / 快捷输入各自的触发键设置里配——那三处只收符号键,字母键统一走这一项。

出简让全 0.117 新增

一个字如果有简码,打全码时就不该再占着首选——那个位置留给词组更划算。

以五笔的「大」为例,它的一简是 d

你打的关闭全部简码
d
dddd大、大厦、硕大、磕磕碰碰大厦、硕大、磕磕碰碰、大

打一个键就能出「大」,那么打满四码时再把它摆在第一位只是浪费一次翻页。让位之后「大」不会消失,而是沉到该编码所有候选之后——它已经有更短的打法了。

档位说的是「简码算到第几级」,它同时决定两件事:哪些字让位,以及从第几码开始让:

档位哪些字让位从第几码开始让
关闭都不让,完全按词库顺序
一、二级简码有一简或二简的字3 码
全部简码有一到三简的字4 码

两档的差别落在只有三简、没有更短打法的字上:选「全部简码」,它们在全码位让位;选「一、二级简码」,它们不在范围内,全码位仍保留首选。

代价是后者让得更早——一简、二简的字从三简位就开始让位了。想让三简位也保持词库原样,选「全部简码」。

出厂关,要用请自己开

「有简码的字,短码首选就是它自己」这个前提只对五笔这类前缀式简码成立。别的码表(词频码、 二三重码表等)的短码首选是作者按频次排定的常用字,让位会把它们沉到底——所以这一项出厂是关的, 内置的五笔方案也一样,不替你做主。词库侧同理:发行的五笔词库保留极点上游排定的候选次序, 没有在生成阶段做过任何让位。

用五笔并且想要这个功能,在上面那个下拉里选「全部简码」就行——这里改的是全局,对所有码表方案生效。 只想给其中一个方案开,用方案级码表配置:勾上「出简让全」 那一行单独设,没勾时那一行显示的是它当前跟随的档位。

0.118 升级到 0.119 的用户

0.118 这一项的出厂值是「全部简码」。如果你当时没动过它,升级后它会变成关闭,候选顺序会有变化—— 按上面的说明开回来即可。当时主动设成「关闭」或「一、二级简码」的,设置保留不变。

没有词组接手时不让位

让位的前提是该编码下确实有词组可以顶上。若一个编码只有单字候选,首选原样不动——不会为了让位而把另一个生僻字推到前面。

键名汉字不设豁免

上面的 dddd 正是五笔的 25 个键名汉字码之一(aaaa = 工、ffff = 土……)。它们按同一条规则让位,没有例外。若你依赖打满四码出键名汉字,把档位调到「关闭」。

单字输入 0.121 新增

开启后候选只出单字,不出词

五笔一类的定长码表最用得上:单字恒是全码长,同码的词被滤掉之后「满码唯一即上屏」的成立率大幅提高,可以不看候选窗连续敲;练习拆字、录入人名与古文时也用得着。

几条边界:

  • 短语、命令、快捷输入的候选不受管辖,开着也照常显示——它们是你自己写的内容,不是词库里的「词」。
  • 候选检索范围是两回事:那个按字的常用度筛,这个按候选长短筛,可以同时生效。
  • 「一个字」按显示上的一个字算,⚽️ 这类由多个码位组成的图形也算一个。
  • 拼音方案另有自己的一份开关,取值互不共享——「五笔只出单字、拼音照常出词」在全局层就配得了。
  • 临时拼音、临时英文、快捷输入、特殊模式各有各的候选路径,当前不走这道过滤

这一项可以逐方案覆盖:一台机器上常有多张码表、简码体系深浅不同。也可以绑一个热键随时开关(动词 single_char,见按键功能表),热键切的是临时状态,重启或切方案后回到设置里的值。

英文候选 0.121 新增

码表方案的候选列表里捎带英文词库候选:打 hello 直接选到 hello,不必切英文方案、也不必走临时英文。适合常打命令行与变量名的用户。

选项说明出厂
启用英文候选同时查询英文词库并显示英文候选
英文最小触发长度有中文候选时,编码达到此长度才查英文(0 = 默认 3)3
有英文候选时否决满码上屏满码自动上屏前若存在英文候选则不自动上屏

整串恰好是一个英文词时才混入——打 githu 不出 GitHub,想打某个词就敲完它。收窄到精确之后英文天然只剩一两条,不会刷屏。

「最小触发长度」只约束「中文侧有候选」那一路。中文候选为空时不受它约束,2 码起就给英文补全——wi / vi / hi 这类不成音节、中文一条也给不出的串,因此不再是空码。

定长码表请让「否决满码上屏」开着

五笔 4 码即满码上屏。关掉它,打 github 到第 4 键就被顶出中文,英文永远等不到露面。

英文候选的位次是自动的:中文解得好就让位、解不出就上前hen 排在 很/恨/狠/痕 之后,github 排第 1(中文侧本来就没候选)。代价是英文不参与词频学习——选多少次它的位置都由上面这条规则决定。

这三项可以逐方案覆盖。拼音方案另有自己的一份,取值独立。

词频调整

先读原理再调参数

这一组的每个选项都建立在「词频与权重是两个独立维度」之上。三种策略的取舍、首选保护为什么按码长分级、提升为什么跨不出档位——完整说明见词频与候选排序。本节只讲每一项的界面含义。

选项说明出厂
启用词频调整总开关。关闭后候选顺序完全由词库权重决定
调频策略置顶 / 步进 / 位次渐进,见下置顶
补全词参与调频前缀补全出来的候选是否参与提升。仅「位次渐进」下可用全部
热度衰减半衰期使用记录衰减到一半所需的小时数,0 = 内置 72 小时。仅「位次渐进」下可用0
一简位保护前 N 项只打 1 个编码时,词库前 N 项不参与调频1
二简位保护前 N 项打 2 个编码时同上1
三简位保护前 N 项打 3 个编码时同上0
全码位保护前 N 项打 4 个及以上编码时同上0

三种调频策略 0.114 新增

策略语义适合
置顶用过一次即排到「没用过的那批」之前,已用过的按最近使用时间排想立竿见影、不怕误选
步进同样是「用过优先」,已用过的内部按累计次数排想抗一点误选
位次渐进 0.114 新增每用一次目标位次前移一半(第 8 位 → 4 → 2 → 1),久不用按半衰期回落想平滑、误选代价小

「置顶」与「步进」的本质是同一个:布尔的「用过优先」——只要用过一次就整体跳到未用过的之前,策略只决定已用过的内部怎么排。好处是立竿见影,代价是一次误选就把词顶到很显眼的位置,且码表侧的「用过」永不衰减

「位次渐进」没有这道台阶,用连续的位次表达强弱,误选一次只前移一档;也是唯一带时间衰减的策略,所以「补全词参与调频」和「热度衰减半衰期」两项只在它下面可用,其余策略下会置灰。

三者都不会破坏「五笔优先」:提升只在同一来源档内发生,补全词再怎么用也跨不到精确全码之前。

简码位的首选保护 0.113 新增

首选保护按本次输入的码长分成四档,出厂即为「一简二简保护、三简与全码放开」。

五笔的一简是肌肉记忆的核心,而 25 个一简编码每个都是二选一a → 工 / 戈、s → 要 / 五……)。调频只看「有没有被选过」、不看词库权重,因此不保护的话,误选一次次选字就会永久换掉首选。分档之后简码位保住词库钦定的首选,全码位仍可正常调频——那里才是调频该起作用的地方。

保护名额只在精确匹配的候选里取,不足则少保护,不会把前缀补全的长词一并钉死。

0.112 及以前开过调频的用户需手动改一项

旧版只有一个 protect_top_n,出厂值是 1;开过调频的用户配置里冻结着这个值,升级后全码位仍被锁死。请把「全码位保护前 N 项」改为 0。三个新增的简码档不受影响,自动按新默认生效。

自动造词

连续上屏的单字会被自动组成词条,算出编码后存入临时词库,此后可直接用该编码打出。

选项说明出厂
启用自动造词总开关
转入用户词库次数该临时词用满几次后收录进用户词库;0 = 不收录,一直留在临时词库0

拼音方案不适用

本节只涉及码表方案与混输方案的码表侧。拼音方案用的是「选词即学」,开关在拼音方案配置 → 自动学习,两者互不影响。

累积与终止

引擎维护一个连续单字缓冲:每上屏一个汉字单字即追加,遇到终止信号则取出已累积的序列尝试造词,随后清空。

只有汉字单字会进入缓冲。混输方案下由拼音打出的单字同样计入,因为造词时的编码由词组编码器按字重新计算,与该字的输入来源无关。

终止信号有七种:

信号说明
上屏多字词选中词组即表明当前不是散字序列。该词组本身不进入缓冲
上屏非汉字标点、英文、数字、空格。该字符本身也不进入缓冲
回车
切换中英文模式
切走输入法或窗口失去焦点
移动光标插入点改变后,已累积的字与后续输入不再连续
距上一个字超过 5 秒见下

超时的处理与其余六种不同:它先将旧序列取出造词,再以当前字开启新序列,而非丢弃。此举用于避免跨句拼接,例如间隔十分钟的两次「加好」不会被拼成「加好加好」。间隔阈值由 idle_timeout_ms 控制,0 表示取默认值 5000 毫秒。

造词条件

取出的序列还需满足四项条件,任一不满足则整词作废。

长度 —— 少于 2 字不造词;超过 5 字同样不造词,且是整体放弃而非截取末尾若干字。在连续 8 字的中间切分,结果多半不成词,是杂词的主要来源。上下限为 min_phrase_len(默认 2)与 max_phrase_len(默认 5),均未在设置界面暴露。

取码 —— 按方案文件 [[encoder.rules]] 定义的词组编码器规则,从各字的编码推导词条编码。

取码失败是自动造词不生效的最常见原因

只要序列中有一个字在码表里取不到全码,整词即作废。生僻字、扩展词库中的字往往只有词条而无全码,含这类字的序列不会产出词条。开启 debug 日志可看到失败的具体词条。

查重 —— 若「编码 + 词条」在系统词库或用户词库中已存在则跳过,避免候选出现重复项。

归属 —— 混输方案下,出码与入库均使用主码表方案。因此在混输中造出的词,切回纯码表方案后同样可用。

存储与晋升

新词条写入临时词库,初始权重 800,即时可用。

重复造出同一词条不会重复入库,而是将其使用计数加一,权重不再增长。计数达到「转入用户词库次数」后自动转入用户词库;该项为 0 时不会自动转入,词条一直留在临时词库,可在词库页手动转正、删除或清空。

临时词库默认保留 5000 条(temp_max_entries0 表示不限),超出时删除权重最低的若干条。检查按写入次数节流,每造词 64 次执行一次,故实际条数可能短暂略高于上限。

排查

日志级别调至 debug,日志中 auto-phrase: 开头的记录覆盖整条链路:终止信号及其原因、取码失败及具体词条、查重跳过、造词成功及计数、临时词库淘汰。排查完毕后调回 info

隐藏字段 min_phrase_len / max_phrase_len / idle_timeout_ms / temp_max_entries 的取值范围见配置参考

相关页面

对这篇文档有疑问,或发现内容有误?

欢迎到文档仓库提 issue,写明问题时附上本页链接即可。

去提 issue →

本页目录