Repository navigation
v0.1.22 · 配置不再写入自动识别的路径(保持解压到哪都能用)
配置不再写入"自动识别出来的路径"(保持"解压到哪都能用")
下载:页面下面的 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 返回默认值,表现成"回退没生效"。
排查了半天才发现是夹具的问题、代码是对的。以后给这类函数做沙箱测试,依赖的模块级常量要一次列全。