weasel icon indicating copy to clipboard operation
weasel copied to clipboard

关于一部分weasel的用户卡顿的原因和改进建议

Open sanshanjianke opened this issue 1 year ago • 40 comments

上报前请检查

  • [ ] 我遇到的问题没有其他人在 issue 里提到过
  • [ ] 我的小狼毫版本于 rime/weasel 下载
  • [ ] 我在使用小狼毫的最新发布版本,或最新发布版本后的 CI 构建

操作系统信息

  • OS 详细版本:Windows10操作系统及几个其他的操作系统
  • 小狼毫版本: 0.16.0.0版、0.15.0.0版

描述遇到的问题 使用weasel进行输入时,输入和选词均存在较大的延迟。 原因在于系统对CPU功耗优化,使CPU在低强度运行时频率较低。

复现步骤 正常输入时,按键后选词框弹出的速度明显缓慢。 打开任务管理器->性能->CPU。 可以看到,此时查看CPU频率在1ghz以下(在我的电脑上是0.5ghz),使用输入法输入时,CPU频率并没有增加多少,几个存在卡顿的朋友也是如此。 我的笔记本电脑切换到高性能模式(此时CPU稳定在2.4ghz),群友的台式机锁频到2ghz以上,并在任务管理器->详细信息中将WeaselServer.exe的优先级设置成实时。 此时再使用Rime进行输入时,可以看到已经完全没有卡顿的现象出现。 综上所述,我推测部分weasel用户卡顿的原因在于系统对CPU功耗优化。

预期行为 希望weasel加入如下功能: 设置一个选项,如果用户存在上述问题造成weasel卡顿时,可以开启该选项。 开启后,用户可以根据需要设置CPU频率。 当输入文字时,weasel自动将CPU频率提升至用户设置的频率。当用户不再输入文字一定时间后(可以设置为用户自定义),weasel放弃控制CPU频率,使其回复默认。如此可以减少笔记本电脑用户的电池能耗,不必担心干扰续航。 如果该功能确实难以实现,希望weasel可以先将该问题通告一下,方便存在卡顿的用户使用、调整。

用户文件 请于此附上 weasel 用户文件夹下的内容,方便开发者调试问题

截图 如果问题需要,可附上 GIF 图片

其他补充说明 如果有其他补充说明,可以写在这里

sanshanjianke avatar May 19 '24 11:05 sanshanjianke

报卡顿的同学,大概应该是对整体窗体做了阴影,在节能模式下,CPU不满足快速响应阴影计算的要求吧。阴影是添头,不要盲上。

fxliang avatar May 20 '24 14:05 fxliang

我这里应该和窗体阴影的关系不大,我的系统是刚装的,并且安装时就已经关闭了Windows窗体阴影。 image 在输入第一个字符时,rime会花费150ms左右的时间创建候选框窗体,后续继续输入计算仍然要100ms左右时间进行响应,应该至少有70ms的时间在做内容方面的运算,应该和窗体关系不大。 之前我测试了一下微软拼音输入法做对比,在使用微软拼音进行输入的时候,在第一下卡顿之后,在持续输入时,微软拼音会让cpu频率保持在1ghz以上。这个CPU频率正巧可以使微软输入法不至于卡顿。 相比较使用rime输入法进行输入时,CPU频率一直在0.5ghz和0.7ghz之间波动,在这个频率进行使用,卡顿的感觉就十分明显了。 image 并且和输入方案应该也没有关系,我用过一台更老的电脑,2011年的probook6450b,使用的是32nm制程的i5-520m,进行长期的Word编辑工作、视频弹幕编辑和QQ聊天。在测试时没有见到任何卡顿的现象。

sanshanjianke avatar May 20 '24 15:05 sanshanjianke

报卡顿的同学,大概应该是对整体窗体做了阴影,在节能模式下,CPU不满足快速响应阴影计算的要求吧。阴影是添头,不要盲上。

刚刚发错了,忘了加回复了.... :-) 应该和阴影无关,我在后面的楼层写了一些图文解释。

sanshanjianke avatar May 20 '24 15:05 sanshanjianke

小狼毫没有一次很多,每次只有page_size 个(后端给多少就是多少),要优化的话空间在后端上

候选框出现慢:第一个编码上屏后,候选框延迟 1 秒才出现,后续未见卡顿(某字符所对应的候选过多,例如十万个 v 开头的候选)

关于这个问题,奇怪的是,fcitx5-rime 和 Squirrel 未报告卡顿,是不是客户端内做了限制出词的逻辑,比如一次 query 只出 1000 个词。

如果是的话,希望小狼毫也做一个。因为这可以保证大词库,简拼的正常运行,而且对实际使用没有影响,1000 词需要翻 200 页,根本用不上。

@fxliang

fxliang avatar May 21 '24 04:05 fxliang

报卡顿的同学,大概应该是对整体窗体做了阴影,在节能模式下,CPU不满足快速响应阴影计算的要求吧。阴影是添头,不要盲上。

刚刚发错了,忘了加回复了.... :-) 应该和阴影无关,我在后面的楼层写了一些图文解释。

我指的是小狼毫的候选窗口阴影特性;

另外可以试试#1253 提高了进程的优先级,可能有一点点改善

fxliang avatar May 21 '24 10:05 fxliang

报卡顿的同学,大概应该是对整体窗体做了阴影,在节能模式下,CPU不满足快速响应阴影计算的要求吧。阴影是添头,不要盲上。

刚刚发错了,忘了加回复了.... :-) 应该和阴影无关,我在后面的楼层写了一些图文解释。

我指的是小狼毫的候选窗口阴影特性;

另外可以试试#1253 提高了进程的优先级,可能有一点点改善

感觉我这个应该没有开窗口阴影特效。 image image 优先级的话,我之前有做过尝试,即便是调整成实时也没有太大的改变。我以前也试着推荐让几个遇见过这个问题的朋友尝试,但都没有明显的改善。 但是将CPU频率拉起来,确实能得到很明显的提升。即便是一些由于本身lua算法设计问题造成的延迟也能得到不小的改善。 所以希望设计一个这样的功能,即便用户可能因为设置或方案设计问题造成卡顿,也能通过拉高CPU频率这样的方法,将问题掩盖掉。

sanshanjianke avatar May 22 '24 00:05 sanshanjianke

我现在遇到的问题是隔一段时间Windows会整个卡上2、3秒钟,键盘没有反应,鼠标点任何窗口都没有响应。

不知道什么原因。

sstiger1230 avatar May 22 '24 15:05 sstiger1230

安装了b1aebe8,目前最新的nightly,但出现了卡一下然后后台崩溃的情况,添加的守护进程没有生效,需要手动重启服务才行。

经过这次崩溃后正常运行的时间里,日志里有看到守护进程拉起后台的日志

Qeynos avatar May 23 '24 08:05 Qeynos

安装了b1aebe8,目前最新的nightly,但出现了卡一下然后后台崩溃的情况,添加的守护进程没有生效,需要手动重启服务才行。

经过这次崩溃后正常运行的时间里,日志里有看到守护进程拉起后台的日志

守护不是一崩就拉起,如果连续6次按键消息无响应后拉起

另外卡一下之后,应该会在日志目录里面生成dmp崩溃文件,右击->日志文件夹可以看到

fxliang avatar May 23 '24 09:05 fxliang

安装了b1aebe8,目前最新的nightly,但出现了卡一下然后后台崩溃的情况,添加的守护进程没有生效,需要手动重启服务才行。 经过这次崩溃后正常运行的时间里,日志里有看到守护进程拉起后台的日志

守护不是一崩就拉起,如果连续6次按键消息无响应后拉起

另外卡一下之后,应该会在日志目录里面生成dmp崩溃文件,右击->日志文件夹可以看到

确实有dmp文件,需要发上来吗

Qeynos avatar May 23 '24 09:05 Qeynos

安装了b1aebe8,目前最新的nightly,但出现了卡一下然后后台崩溃的情况,添加的守护进程没有生效,需要手动重启服务才行。 经过这次崩溃后正常运行的时间里,日志里有看到守护进程拉起后台的日志

守护不是一崩就拉起,如果连续6次按键消息无响应后拉起 另外卡一下之后,应该会在日志目录里面生成dmp崩溃文件,右击->日志文件夹可以看到

确实有dmp文件,需要发上来吗

看这个吧,自行消化一部分 https://github.com/rime/weasel/issues/1259

fxliang avatar May 23 '24 09:05 fxliang

安装了b1aebe8,目前最新的nightly,但出现了卡一下然后后台崩溃的情况,添加的守护进程没有生效,需要手动重启服务才行。 经过这次崩溃后正常运行的时间里,日志里有看到守护进程拉起后台的日志

守护不是一崩就拉起,如果连续6次按键消息无响应后拉起 另外卡一下之后,应该会在日志目录里面生成dmp崩溃文件,右击->日志文件夹可以看到

确实有dmp文件,需要发上来吗

看这个吧,自行消化一部分 #1259

微信截图_20240523182437

微信截图_20240523182447

消化不了...

Qeynos avatar May 23 '24 10:05 Qeynos

关闭用户词典大概率就不太崩了

fxliang avatar May 23 '24 10:05 fxliang

关闭用户词典大概率就不太崩了

但以往版本不会这么能感知崩溃

Qeynos avatar May 24 '24 02:05 Qeynos

+1

red-co avatar Jun 27 '24 01:06 red-co

非常感谢了。 我之前也是这样,一旦开始打长文字,很快就会出现卡顿,在之前带团的时候问题非常严重(就算是CPU此时已经处于高频率也是这样) 看了issue后我改了优先级,现在非常跟手了。 所以其实我觉得核心问题和CPU的频率无关,主要问题还是Weasel的CPU调用有问题,可能是由于什么原因,让系统分配的CPU时间少……

linlin4112 avatar Jul 02 '24 12:07 linlin4112

我长时间运行之后也会变得越来越卡,重启算法服务之后会好一点

raawaa avatar Oct 15 '24 13:10 raawaa

一个比较详细的临时方案,通过反复询问GPT4-o和GPT4-o1得到

设置优先级

  1. 打开任务管理器

    • 按下 Ctrl + Shift + Esc 或右键单击任务栏并选择“任务管理器”。
  2. 切换到“详细信息”选项卡

    • 如果任务管理器显示的是简化视图,点击左下角的“更多详细信息”。
    • 然后切换到“详细信息”选项卡。
  3. 找到目标进程

    • 在列表中找到 WeaselServer.exe
  4. 设置优先级

    • 右键单击 WeaselServer.exe,选择“设置优先级”。
    • 选择“实时”或“高”。
  5. 确认更改

    • 系统会弹出提示框,确认设置后即可。

注意问了ChatGPT这个设置是临时的,所以加了一个开机自动设置

开机自动设置(Win11)

创建一个WeaselServerLauncher.vbs(先创建.txt,然后修改后缀)可以放到你的程序文件夹下

内容为:

Option Explicit

Dim WshShell, cmd
Set WshShell = CreateObject("WScript.Shell")

' 程序路径(确保包含双引号以正确处理空格)
Dim progPath
progPath = """D:\Program Files\Rime\weasel-0.16.3\WeaselServer.exe"""

' 构造命令行:
' 原代码使用 /HIGH,以高优先级启动:
' cmd = "cmd.exe /c start ""Weasel"" /HIGH " & progPath
'
' 如果需要使用实时优先级,将 /HIGH 修改为 /REALTIME:
' 注意:实时优先级对系统影响较大,请谨慎使用。
cmd = "cmd.exe /c start ""Weasel"" /HIGH " & progPath

' 使用 WshShell.Run 执行命令:
' 参数说明:
'  - cmd:要执行的命令
'  - 0:隐藏窗口(不显示cmd窗口)
'  - False:不等待命令执行完成立即返回
WshShell.Run cmd, 0, False

Set WshShell = Nothing

然后win+R,regedit,打开后地址输入为:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

定位到开机启动项,找到WeaselServer,把数值数据改为刚刚创建.vbs的启动命令,注意替换地址

wscript.exe "地址前缀\WeaselServerLauncher.vbs"

Humanleaning avatar Dec 18 '24 14:12 Humanleaning

不少用户在用很重的复杂的librime-lua组件,很多时候很可能是有问题的。如果试试明月拼音不用那些奇奇怪怪的lua组件一段时间,说不定服务就不卡了。

fxliang avatar Dec 18 '24 14:12 fxliang

我最近也在经历rime的卡顿问题,它总是不经意地出现,然后在某个场景下好像又能自己恢复正常状态,就比如我现在在浏览器里打这段字,性能表现就非常正常,但是我刚刚在TG里回消息,它就很卡。不排除这是使用了第三方词库的原因(白霜词库),但是,如果说禁用了第三方词库换来rime正常的性能表现,那我估计自己可能会逃离rime。前文提到的,把WeaselServer.exe在任务管理器里改成实时或者高,确实能改善当前卡顿的状态。还是希望开发者能优化一下吧,非常感谢!

GRDpengyuyan avatar Dec 29 '24 11:12 GRDpengyuyan

你们卡顿发生时,%Temp%\rime.weasel目录下有新增崩溃转储DMP文件或者ERROR日志吗。

我禁用包含Notifier的Lua脚本后,崩溃现象似乎消失。未看出为什么那些Lua导致KeyEvent期间偶发崩溃。错误日志有多种。崩溃时偶尔也看到level_db.cc:259] Error opening db 'rime_mint': IO error: C:\Users\[用户名]\AppData\Roaming\Rime\rime_mint.userdb/LOCK: 另一个程序正在使用此文件,进程无法访问。

yfdyh000 avatar Dec 29 '24 11:12 yfdyh000

你们卡顿发生时,%Temp%\rime.weasel目录下有新增崩溃转储DMP文件或者ERROR日志吗。

我禁用包含Notifier的Lua脚本后,崩溃现象似乎消失。未看出为什么那些Lua导致KeyEvent期间偶发崩溃。错误日志有多种。崩溃时偶尔也看到level_[db.cc:259](http://db.cc:259)] Error opening db 'rime_mint': IO error: C:\Users\[用户名]\AppData\Roaming\Rime\rime_mint.userdb/LOCK: 另一个程序正在使用此文件,进程无法访问。

我找到了今天rime卡顿时候的一个dump日志文件了,可能真的跟contributor说的那样,使用了比较繁重的第三方词库就会出现类似的问题,但是更改进程的cpu优先级又能变得流畅……这让我很纠结,我是打算主力使用rime的,现在不得不重新考虑了。

GRDpengyuyan avatar Dec 29 '24 17:12 GRDpengyuyan

儘量用預設的方案和配置吧。性能穩定。

lotem avatar Dec 30 '24 08:12 lotem

我找到了今天rime卡顿时候的一个dump日志文件了,可能真的跟contributor说的那样,使用了比较繁重的第三方词库就会出现类似的问题,但是更改进程的cpu优先级又能变得流畅……这让我很纠结,我是打算主力使用rime的,现在不得不重新考虑了。

若執行腳本程序,那就得取決於腳本的作者怎麼寫了。不是 Rime 能控制的。

lotem avatar Dec 30 '24 08:12 lotem

librime-lua插件实际是通过lua的形式写cpp代码,写得不好的话,那是没有办法的

fxliang avatar Dec 30 '24 09:12 fxliang

加上custom之后很卡,win11上通过任务栏点图标切应用,点几个直接就卡死个3-5秒这种状态。配置用的五笔拼音混输。把windows defender设置了实时保护白名单,把rime目录还有WeaselServer.exe进程都加去了,都没有用

把custom去掉又不卡了,这个custom配置有严重问题么

wubi_pinyin.schema.yaml

# Rime schema settings
# encoding: utf-8

schema:
  schema_id: wubi_pinyin
  name: "五笔·拼音"
  version: "0.9"
  author:
    - 發明人 王永民先生
  description: |
    五筆字型86版+漢語拼音混合輸入。
    碼表源自 ibus-table
  dependencies:
    - pinyin_simp

switches:
  - name: ascii_mode
    reset: 1
    states: [ 中文, 西文 ]
  - name: full_shape
    states: [ 半角, 全角 ]
  - name: extended_charset
    states: [ 常用, 增廣 ]
  - name: ascii_punct
    states: [ 。,, ., ]

engine:
  processors:
    - ascii_composer
    - recognizer
    - key_binder
    - speller
    - punctuator
    - selector
    - navigator
    - express_editor
  segmentors:
    - ascii_segmentor
    - matcher
    - abc_segmentor
    - punct_segmentor
    - fallback_segmentor
  translators:
    - punct_translator
    - reverse_lookup_translator
    - table_translator

speller:
  delimiter: " ;'"
  #max_code_length: 4  # 四碼頂字上屏

translator:
  dictionary: wubi86
  prism: wubi_pinyin
  enable_charset_filter: true
  enable_sentence: true
  enable_encoder: true
  encode_commit_history: true
  max_phrase_length: 4
  disable_user_dict_for_patterns:
    - "^z.*$"

abc_segmentor:
  extra_tags:
    - reverse_lookup

reverse_lookup:
  dictionary: pinyin_simp
  prefix: "`"
  suffix: "'"
  tips: 〔拼音〕
  preedit_format:
    - xform/([nl])v/$1ü/
    - xform/([nl])ue/$1üe/
    - xform/([jqxy])v/$1u/

punctuator:
  import_preset: default

key_binder:
  import_preset: default

recognizer:
  import_preset: default
  patterns:
    reverse_lookup: "`[a-z]*'?$"

wubi_pinyin.custom.yaml

# Rime schema settings
# encoding: utf-8

patch:
  switches/@next:
    name: emoji_suggestion
    reset: 1
    states: ["🈚︎", "🈶️"]
  "engine/filters/@before 0": simplifier@emoji_suggestion
  emoji_suggestion:
    opencc_config: emoji.json
    option_name: emoji_suggestion
    tips: all
    inherit_comment: false

  "engine/filters/@before 2": uniquifier

  # engine/translators/+:
    # - script_translator

  # librime-lua 输入动态时间和日期
  # "engine/translators/@6": lua_translator@date_translator
  
  # 快捷表情和符号
  punctuator:
    import_preset: symbols
    symbols:
      "/fs": [ ½, ‰, ¼, ⅓, ⅔, ¾, ⅒ ]
      "/xh": [ *, ×, ✱, ★, ☆, ✩, ✧, ❋, ❊, ❉, ❈, ❅, ✿, ✲ ]
      "/dq": [ 🌍, 🌎, 🌏, 🌐, 🌑, 🌒, 🌓, 🌔, 🌕, 🌖, 🌗, 🌘 ]
      "/sg": [ 🍇, 🍉, 🍌, 🍍, 🍎, 🍏, 🍑, 🍒, 🍓, 🍗, 🍦, 🎂, 🍺, 🍻 ]
      "/dw": [ 🙈, 🐵, 🐈, 🐷, 🐨, 🐼, 🐾, 🐔, 🐬, 🐠, 🦋 ]
      "/bq": [ 😀, 😁, 😂, 😃, 😄, 😅, 😆, 😉, 😊, 😋, 😎, 😍, 😘, 😗 ]
      "/ss": [ 💪, 👈, 👉, 👆, 👇, ✋, 👌, 👍, 👎, ✊, 👊, 👋, 👏, 👐 ]
    half_shape:
      "#": "#"
      "*": "*"
      "`": "`"
      "~": "~"
      "@": "@"
      "=": "="
      '\': "、"
      "%": "%"
      "$": [ "¥", "$" ]
      "|": [ "|", "|", "·" ]
      "/": [ "/", "÷" ]
      "'": { pair: [ "「", "」" ] }
      "[": "【"
      "]": "】"
      "<": "《"
      ">": "》"

  recognizer/patterns/punct: "^/([a-z]+|[0-9]0?)$"

junbujianwpl avatar Dec 31 '24 03:12 junbujianwpl

"engine/filters/@before 2": uniquifier

這是在幹什麼。方案里沒有 filter 啊。

lotem avatar Dec 31 '24 03:12 lotem

我建議用默認的配置。

默認沒有問題的話,就不能斷定是前端的問題了,很有可能是自定義配置的問題。

lotem avatar Dec 31 '24 03:12 lotem

"engine/filters/@before 2": uniquifier

這是在幹什麼。方案里沒有 filter 啊。

这套配置在mac上也使用,测试的时候发现候选词和emoji有重复,就加了这条。可能别的配置导致了重复,这个uniquifier最后删掉了 默认用着是好的 纯新手,使用rime还不到一星期 😄️

junbujianwpl avatar Dec 31 '24 04:12 junbujianwpl

加上custom之后很卡,win11上通过任务栏点图标切应用,点几个直接就卡死个3-5秒这种状态。配置用的五笔拼音混输。把windows defender设置了实时保护白名单,把rime目录还有WeaselServer.exe进程都加去了,都没有用

把custom去掉又不卡了,这个custom配置有严重问题么

wubi_pinyin.schema.yaml

# Rime schema settings
# encoding: utf-8

schema:
  schema_id: wubi_pinyin
  name: "五笔·拼音"
  version: "0.9"
  author:
    - 發明人 王永民先生
  description: |
    五筆字型86版+漢語拼音混合輸入。
    碼表源自 ibus-table
  dependencies:
    - pinyin_simp

switches:
  - name: ascii_mode
    reset: 1
    states: [ 中文, 西文 ]
  - name: full_shape
    states: [ 半角, 全角 ]
  - name: extended_charset
    states: [ 常用, 增廣 ]
  - name: ascii_punct
    states: [ 。,, ., ]

engine:
  processors:
    - ascii_composer
    - recognizer
    - key_binder
    - speller
    - punctuator
    - selector
    - navigator
    - express_editor
  segmentors:
    - ascii_segmentor
    - matcher
    - abc_segmentor
    - punct_segmentor
    - fallback_segmentor
  translators:
    - punct_translator
    - reverse_lookup_translator
    - table_translator

speller:
  delimiter: " ;'"
  #max_code_length: 4  # 四碼頂字上屏

translator:
  dictionary: wubi86
  prism: wubi_pinyin
  enable_charset_filter: true
  enable_sentence: true
  enable_encoder: true
  encode_commit_history: true
  max_phrase_length: 4
  disable_user_dict_for_patterns:
    - "^z.*$"

abc_segmentor:
  extra_tags:
    - reverse_lookup

reverse_lookup:
  dictionary: pinyin_simp
  prefix: "`"
  suffix: "'"
  tips: 〔拼音〕
  preedit_format:
    - xform/([nl])v/$1ü/
    - xform/([nl])ue/$1üe/
    - xform/([jqxy])v/$1u/

punctuator:
  import_preset: default

key_binder:
  import_preset: default

recognizer:
  import_preset: default
  patterns:
    reverse_lookup: "`[a-z]*'?$"

wubi_pinyin.custom.yaml

# Rime schema settings
# encoding: utf-8

patch:
  switches/@next:
    name: emoji_suggestion
    reset: 1
    states: ["🈚︎", "🈶️"]
  "engine/filters/@before 0": simplifier@emoji_suggestion
  emoji_suggestion:
    opencc_config: emoji.json
    option_name: emoji_suggestion
    tips: all
    inherit_comment: false

  "engine/filters/@before 2": uniquifier

  # engine/translators/+:
    # - script_translator

  # librime-lua 输入动态时间和日期
  # "engine/translators/@6": lua_translator@date_translator
  
  # 快捷表情和符号
  punctuator:
    import_preset: symbols
    symbols:
      "/fs": [ ½, ‰, ¼, ⅓, ⅔, ¾, ⅒ ]
      "/xh": [ *, ×, ✱, ★, ☆, ✩, ✧, ❋, ❊, ❉, ❈, ❅, ✿, ✲ ]
      "/dq": [ 🌍, 🌎, 🌏, 🌐, 🌑, 🌒, 🌓, 🌔, 🌕, 🌖, 🌗, 🌘 ]
      "/sg": [ 🍇, 🍉, 🍌, 🍍, 🍎, 🍏, 🍑, 🍒, 🍓, 🍗, 🍦, 🎂, 🍺, 🍻 ]
      "/dw": [ 🙈, 🐵, 🐈, 🐷, 🐨, 🐼, 🐾, 🐔, 🐬, 🐠, 🦋 ]
      "/bq": [ 😀, 😁, 😂, 😃, 😄, 😅, 😆, 😉, 😊, 😋, 😎, 😍, 😘, 😗 ]
      "/ss": [ 💪, 👈, 👉, 👆, 👇, ✋, 👌, 👍, 👎, ✊, 👊, 👋, 👏, 👐 ]
    half_shape:
      "#": "#"
      "*": "*"
      "`": "`"
      "~": "~"
      "@": "@"
      "=": "="
      '\': "、"
      "%": "%"
      "$": [ "¥", "$" ]
      "|": [ "|", "|", "·" ]
      "/": [ "/", "÷" ]
      "'": { pair: [ "「", "」" ] }
      "[": "【"
      "]": "】"
      "<": "《"
      ">": "》"

  recognizer/patterns/punct: "^/([a-z]+|[0-9]0?)$"

我也是这个问题,win10,困挠我很久了,没打字,只是点击状态栏电脑就会卡住几秒

tooyond avatar Jan 08 '25 16:01 tooyond