Skip to content

v0.1.22 · 配置不再写入自动识别的路径(保持解压到哪都能用)

Choose a tag to compare

@Rapace7 Rapace7 released this 08 Oct 04:02
· 48 commits to main since this release

配置不再写入"自动识别出来的路径"(保持"解压到哪都能用")

下载:页面下面的 Assets 里那个 RapaceGo.zip(约 146 MB)。

展开看这一版改了什么

v0.1.22:配置不再写入"自动识别出来的路径"(保持"解压到哪都能用")

修的问题(我自己在 v0.1.21 里引入的)

做 v0.1.21 的权重自动识别时,我把"失效就回退"加在了 normalizeConfig 里 ——
而那个函数的结果会被 settings:save 写进 settings.json。
于是实测发现包里存下了:

"analyzeWeight": "...\\RapaceGo懒人包\\KataGo\\weights\\Bot.bin"   ← 自动识别结果,不是用户填的

这恰恰破坏了我们自己的设计:一旦用户把文件夹挪个位置 / 复制给别人,
这两条就变成失效的绝对路径,而那本来是"相对软件目录解析"就能解决的问题。

改法:把"解析"和"存盘"分开

环节 该做什么
readConfig(读盘) 做失效回退 —— 路径指的文件不在了就退回默认(运行时决定"用哪条")
normalizeConfig(存盘用) 只做"填了没有"的规范化,不解析 —— 用户填什么就原样留着
settings:save 与默认值相同的路径不写进配置文件(含「最近用过」列表)

判据很直白:结果等于默认 → 就等于"没有自定义" → 不必存。
存下来的只可能是"用户确实指到了别处",那才该持久化。

验证(真机端到端,用改名过的权重)

把懒人包的 weights 只留 Bot.bin / Human.bin(模拟夸克上传后的形态),启动:

① 权重自动识别    → Bot.bin / Human.bin   两个都 ok
② 加载分析引擎    → 3 秒就绪
③ 点一次「保存」  → settings.json 里五个路径字段**全是空串**、
                    recent 列表也**空**(不再存自动识别的路径)

再手动把文件夹当作"用户挪过位置"验证过:路径失效时能自己找回 Bot.bin / Human.bin。

测试

dev/_test_weight_bin.cjs 扩到 12 条,其中三条专测这次的分工:

  • 配置里存着失效路径 → readConfig 回退到自动识别到的权重、并如实报 fellBack
  • 配置有效时 readConfig 原样保留(不覆盖用户手动选的)
  • normalizeConfig 不做解析(存盘不能写进解析结果)

顺带记一个坑:测试夹具最初漏了 RECENT_MAX,而 readConfig 自己有 try/catch ——
ReferenceError 被静默吞掉、直接走 catch 返回默认值,表现成"回退没生效"。
排查了半天才发现是夹具的问题、代码是对的。以后给这类函数做沙箱测试,依赖的模块级常量要一次列全。