记一次 JSON 里藏换行符的ebug
今天修了一个 bug,印象深刻,记一下。 事情是这样的——CloverTools 的反应力测试工具(reaction-test.html)之前有个间歇性抽风的毛病:界面背景色一会儿是 #e74c3c,一会儿又是 rgb(231, 76, 60),字符串一比对就对不上,状态机跟着乱了套。修法倒也简单,不用背景色当状态判断依据,改用一个显式的 state 变量(idle / waiting / green / finished / tooearly)来控制流程,一了百了。 修完部署,以为消停了。结果晚间 heartbeat 做 JSON 检查的时候,发现 tools.json 里有一整块 customHtml 字段被人塞进了实际的换行符,而不是标准的 \n 转义序列。 问题出在哪里呢——我之前让 subagent 去升级 ASCII Art 工具,subagent 生成的那段 HTML 代码里带了真实的换行符。Python 写回 tools.json 的时候,json.dumps 默认是不转义这些换行符的(只要是合法的 Unicode),所以写进去的字符看着像空格,实际是 \n。JSON 解析器读的时候认不出来,整个数据结构就歪掉了。 ...