命名即规格:AI 智能体设计中命名如何决定架构
The Name Is the Spec
在 AI 智能体设计中,命名本身就是规格:把设计交给编码智能体时,模型会把名称当作规格而非提示,按该词在训练代码库中的常见含义直接实现。2026 年 6 月一项 46,535 次受控代码生成实验覆盖 19 类线索,发现提示线索可使模型选择的算法族波动高达 100 个百分点,连团队名、项目代号等安慰剂线索也平均造成 26 个百分点的偏移。
“我的语言的界限意味着我的世界的界限。”
—— Ludwig Wittgenstein
我现在正深入一个 AI agent 新迭代版本的架构之中,而我不断遇到同一件事:设计会因我给各个部分起的名字不同而呈现出不同的形态。
不是文档,而是架构本身:哪些组件存在,它们之间的边界落在哪里,哪一个拥有某块状态,哪一个只能读取它。我给某个东西改了名,几个决定之后,整个设计就悄悄围绕这个新词重新排列了。
“计算机科学里只有两件难事:缓存失效和命名。”
—— Phil Karlton
每个人都听过这句话,但为什么,为什么命名这么难?
它难,是因为名字不是你在工作完成后刷上去的那层漆。名字就是设计。命名正是思考发生的地方。
当你试图给一个组件起一个精确的名字时,你一直舒适地背负着的模糊性就无处可藏了。这是我本周遇到的一个:这个东西是 escalation 还是 handover?事实证明,这里的命名很重要。escalation 意味着 agent 保留所有权并引入帮助:有一个队列,有紧迫性,有人欠一个答复。handover 意味着 agent 转移所有权并退下。不同的状态,不同的失败模式,对客户不同的承诺。我那个模糊的设计可以是其中任何一种,这意味着它两者都不是,这意味着它还不是一个设计。名字迫使做出了决定。
跳过这一步的代价会不断累积,因为你在命名决定之后所做的每一个决定,都会把那个名字作为约束继承下来。把某个东西叫作 Queue,六周后就会有人给它加上重试逻辑,因为队列就是这么用的。但那个东西其实是一个 ledger,而现在每次重试都会把同一条记录写两次。你为模糊的名字付出的代价不是一次性的。每当后续的决定建立在一个从未坚实的基础上时,你都要为它付利息。
这一切都不新鲜。领域驱动设计二十年来一直在说,用领域自身的语言为事物命名的斗争,本身就是建模。Peter Naur 在 1985 年说出了更深层的版本:
“编程应当被恰当地视为一种活动,程序员通过它形成或获得对眼前事务的某种洞察,某种理论。”
名字就是这种理论书写所用的语言。但请注意,在这整个传统中,名字始终只作用于人。它让设计者更敏锐,让团队对齐,而系统是在人改进的下游才得到改进的。
LLM 极大地放大了这一点。
如果你用编码 agent 设计系统,你已经能感受到。名字塑造人类理解是一个缓慢、宽容的过程。模型对你的名字所做的事,既不缓慢也不宽容。
当我把一个设计交给编码 agent 时,它把我的名字当作规范来读。不是指向规范的提示。就是规范。对于一个在数百万个代码库上训练过的模型来说,名字是一个检索键:它指向每一个曾用过那个词的系统。
一个拿到模糊名字的同事要么会来问你,要么挑一种理解继续往下做。无论哪种情况,这个缺口都还在,迟早有人要为此付出代价。而智能体只会按照你的词在它所见过的一切代码库中通常的含义去理解,据此构建,几秒钟内就交回来。代码能编译,测试能通过,看起来像是进展,可三轮对话之后,你们俩都在一个没人真正做出的决定之上继续搭建。
一个糟糕的名字,对人来说,当下耗费你的时间,之后还会让决策打折扣,因为这个名字会固化成对之后一切构建的约束。而一个糟糕的名字对智能体来说,耗费的是你的方向。
这一点现在是可以量化的。2026 年 6 月的一项近期研究在 19 种提示线索类型上进行了 46,535 次受控代码生成实验,变量命名就是其中之一:
“附带性提示线索,即任务规范之外的上下文词语或元数据,能够左右模型选择哪种算法,即便所有输出都通过了相同的测试。”
他们观察到,最终构建出的算法家族出现了高达 100 个百分点的波动。即便是被设计为无意义安慰剂的线索——团队名称和项目代号——也平均让分布偏移了 26 个百分点。你的用词自带载荷,无论你有没有装货。
当名字起得对时,同样的机制也会为你所用。把一个组件命名为 Orchestrator,智能体就会去拿真正的编排器所用的东西:saga、重试、补偿逻辑。把它命名为 Gateway,代码就会停留在边界处,把业务逻辑挡在外面。这些你一个字都没写。是那个词把它们带进来的。
所以,选一个名字,也是在选你希望模型替你假设多少东西。一个标准词(Orchestrator、Ledger)自带模型在它名下见过的一切构建,其中大部分是你想要的,有些不是。一个生造词则什么都不带,所以你得自己把每一种行为都讲清楚。两者都能行得通。行不通的是中间地带:用一个标准词去表达略微不同的意思。模型会按标准含义来构建,而不是你的含义。
当我找不到一个合适的名字时,我会停下写作,去找那个我还没做出的决定。到目前为止,总有一个。这是我一天里最便宜的警告,而且它在模型基于这份模糊性构建出半个功能之前就会触发。
名字现在就是一条指令。你选的每一个名字,都是在赌你要把哪一千个系统请进你自己的系统里。
有意识地选择你的幽灵。
没有文章
来源:Hacker News · fromautomation.co