命名是 LLM 语义理解与组织结构化资产之间的首要接口。糟糕的命名降低 Agent 性能的方式,与糟糕的 tokenization 降低模型训练效果的方式如出一辙。


问题:你的文件名就是 Agent 的全部世界

在量化投资公司,同一个概念——"行情数据"——可以沿着交易所、品种、频率、数据源、存储格式等多个正交维度分解。当我们开始用 Claude Code 大规模服务内部研究流程时,一个问题变得尖锐:Agent 每次 lsgrepgit log 的输出都会进入 context window,而这些输出中的命名就是 Agent 理解系统的第一层——也往往是唯一一层——信息。

一个路径 mktdata/shfe/tick/cudata_feed_03_raw 对人类来说都能接受——前者需要知道 shfe 是上期所,后者需要知道 03 对应什么。但对 LLM 而言,二者的可解析性有本质差异。这篇文章试图解释为什么,并给出一套可操作的命名规范。


一、Transformer 如何处理你的文件路径

BPE 分词的实际行为

现代 LLM 使用 Byte Pair Encoding (BPE) 分词(Sennrich et al., 2016, "Neural Machine Translation of Rare Words with Subword Units")。关键机制是两阶段编码:正则预分词器先将文本切成 chunk,然后 BPE 合并操作在每个 chunk 内独立进行,不会跨 chunk 边界合并。

这意味着分隔符的选择直接决定分词结果:

核心规律:常见英文单词(marketdatatickconfig)几乎一定是单 token。领域缩写(shfemktdata)则大概率被切碎为无意义的 subword。模型需要从碎片中重建语义——可行但不可靠。

命名影响 LLM 推理的实证

这不只是理论推测。Wang et al.(2023, Penn State & CMU, arXiv:2307.12488)的实验表明,将 Python 代码中的变量名匿名化后,CodeBERT 在代码搜索任务上的 MRR 显著下降。更关键的发现是:有意误导性的命名(名称暗示错误功能)比随机命名造成的性能下降更严重——证明模型确实在积极使用名称语义进行推理,而非仅依赖结构线索。

Le et al.(2025, arXiv:2510.03178, "When Names Disappear")在更新的模型(GPT-4o、DeepSeek V3、Llama 4)上验证了类似结论。他们将代码理解能力分为结构语义通道(定义程序行为的形式结构)和命名通道(传达意图的人类可读命名)。移除命名通道后,类级别代码摘要准确率下降可达 30 个百分点(如 DeepSeek V3 从 87.7 降至 58.7)。

Word2Vec 类比为什么重要

经典的 word2vec 关系 king - man + woman ≈ queen 说明:一致的语义关系会在嵌入空间中形成线性结构。应用到命名:如果 LLM 反复看到 {exchange}/tick/{instrument} 这个模式——shfe/tick/cucme/tick/esice/tick/cl——它就能构建出"tick 是一个频率维度"的向量表征,遇到从未见过的 nymex/tick/gc 时可以通过类比理解。而如果命名不一致(shfe_ticks_cuCME-ES-TICKice/realtime/cl),每个模式都需要独立记忆。

Min et al.(2022, EMNLP, arXiv:2202.12837)的研究进一步支持这个观点:在 in-context learning 中,示例的格式和分布比标签是否正确更重要。12 个不同模型(包括 GPT-3)上的实验表明,随机替换示例标签几乎不影响性能。对命名来说:一个全部遵循 {category}/{source}/{type}/{symbol} 格式的文件系统就是一个 many-shot prompt——每条路径都在强化格式模式。