先把当时的情况摆出来。长文档按 8000 字符硬切,切片边界正好落在 JSON 示例中间,下游解析报 Expecting property name enclosed in double quotes。
排查方向其实有限,先把可能性排一排。截断点不考虑结构边界。少数情况下是代码块没有做配对检查。
少数情况下是切片之间没有重叠。不容易想到的是,截断后没有标记不完整。
先看每个切片的括号是否配对
python -c "s=open('p1.txt').read();print(s.count('{'),s.count('}'))"
优先在空行或段落边界切
python split_safe.py --max 8000 --boundary paragraph
保证代码块成对后再切
python split_safe.py --max 8000 --protect fences
不完整切片加标记单独处理
python mark_partial.py --dir parts/ --flag
中间停过一次,把已经改的东西回滚干净,再重新来一遍。
同样的操作我在测试机上先走了一遍,线上只做验证过的部分。
怎么算真的好了,看的是同一批现象。全部切片解析通过,没有结构错误,字符合并回去与原文一致。
补一句。截断点要落在语义边界上,按固定字符位置切迟早会破结构。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
