打开 Karpathy 的 minbpe 项目,你大概率会直奔train()和encode()这两个核心函数——毕竟分词器的灵魂就是"怎么训练"和"怎么编码"。但如果你把目光停在base.py第 59 行那个看起来不起眼的errors='replace'参数上,就会发现一个精妙的工程设计正从这一行代码向外辐射,最终决定了整个持久化架构的分工:.model文件存数据,.vocab文件只给人看,而且——永远不可能反过来。# base.py:57-61defrender_token(t:bytes)-str:/