跳到主要内容
提示词可预测?这论文解决了我对 vibe-coding 最没底的一件事

提示词可预测?这论文解决了我对 vibe-coding 最没底的一件事

阿舟
阿舟

· 阅读约 8 分钟

拿到这论文的时候我第一反应是标题党。"从提示的语言学特征预测 LLM 表现"?看这架势像是要把 prompt 工程从手艺活变成计量经济学。

但我还是点进去了。9000 个受控变体,625 条标注需求,5 个开源模型。换个角度想,这是一帮被 prompt 玄学折磨到忍无可忍的人,决定把 prompt 这玩意儿放上实验台扒光了看。

我为什么在意这个东西?因为我跟 AI 编程工具之间那个"实习生"的心智模型,最近一年出现了地基裂缝。

以前我的审查路径很明确:代码出来,眼睛扫一遍,不对就改。代码是静态的,错不错我一眼能看出七八成。但后来我大量把 agent 用于前期流程——让它先读上游的任务描述,自己产出需求条目、分类标签、验收标准。越强的 agent 确实可以"用起来像回事儿"地把任务从 80% 的空泛推进到 60% 的空泛。最可恨的是它到底有没有理解我在讲什么,你只有等它把垃圾代码跑完一遍才知道。跑完一遍的成本是:一个完整的上下文窗口加一次代码审查加一次重构。

于是卡进那个经典困境:等到能评估输出的时刻,成本已经付出了。评估能不能前置?

论文的机制其实是这么回事:拿 100 个初始提示,干扰出 9000 个带细微语言差异的变体——不止是改单词,是连词密度、依存距离、句长词长这些按 31 项拆解,然后看这些数字能不能提前预报一个二分类需求工程任务上的 F1 和召回率。

结论是能。但 R² 只有 0.38-0.42。说实话这个数字一点都谈不上漂亮,我得强调这一点。

有意思的是,它立住了那件事:信号的底噪是真的,不是过拟合幻觉。

而且它逮住的那个信号跟我怀疑的一致——你喂给模型的 prompt 越"绕",它对领域词越敏感;而"绕"是可测量的,特征是复合依存分布 + 连词密度 + 词句长度这些看起来一点都不"语义"的东西。那些觉得"prompt 的重点是词汇是否领域化、是否专业"的人可能想反了——至少在这几个任务上,关键词不是表现的主导因素,主导因素是句法骨架,是句子怎么被搭起来的。

有一度我怀疑这个结论是不是在说"越简洁越好"。

不是。如果越简洁越好,变体分析会把句子长度当成最高信号。但研究跨模型筛下来,信号是三个:复合依存分布、连词密度、词长句长。句长本身是因子,但要说的远不止"长短"——是句子内部结构怎么组织逻辑关系。用长句装多重嵌套逻辑的时候,那些逻辑钩子怎么分布,才是真正致命的东西。我们的困境,和模型的困境一样深。

这跟我另一个长期的怀疑挂上了钩:好的 agent 指令,和我深思熟虑后写给人类的简短邮件,在语法特征上应该是同一族的,而不是"更像学术论文摘要"的那种。 得,这就是为什么每次我把一篇糟糕的周报直接喂给它做任务描述,它就连同那周报的"绕"一起复现进代码里了。

当时我们处理一个迁移任务,输入里的措辞有"我们应当考虑到数据一致性问题"这种话。Claude 在那干了一件特别人类的事:它把"考虑数据一致性"当成了行动指令,在代码里造了一个并不存在的抽象层,说"为了 data integrity"——解释得头头是道,实际上跑起来直接挂了。我在 diff 审查时差点没找到它埋了什么雷,因为这个 40 行的 diff 每一行看起来都在干正事,且语法非常完整。那是我第一次在代码审查里觉得:这一份代码,人不可能靠读懂来抓住问题——问题根本不是逻辑 bug,是指令的内在结构在微观上变形了。

所以后续给 agent 模糊指令,我自己会下意识做一件事:删掉"我们应当""建议考虑"这种状语从句和附加语,把语句改成命令式——"迁移前先校验数据一致性"。用语法上极简的命令来消解变形。

这个实验给了我的主观经验一种奇怪的理论合法性:语法特征真的能预测,而且是预测在模型理性产出之前。因为模型对领域词汇和复杂结构的敏感,在语料上首先体现在它能匹配多少结构的"分布"。

不过我在这里要收一收,不能吹过头。

R² 0.38-0.42 有多大价值?如果你想要一个能精准排名所有 prompt 的预报器,靠这堆语言特征不靠谱。但如果你只想要粗筛:哪些 prompt 根本不该费电去跑,哪些 prompt 基本是安全的纯命令式——这个精度够了。

我用语言特征做"预审"用到现在,感觉确实是这样。凡是句子写着写着冒出三个换行加一堆排比,让模型觉得"这事强调了很多遍",F1 基本不好看。凡是我把动词都怼在句首,命令式一下去,哪怕废话多一点,推断正确率都高不少。你说这是不是有更深的因果,我答不上来。我也没法证明是句法本身起作用,还是句法只是反映了 prompt 作者对任务的理解决定了表现——这个混淆因素论文其实绕开了,因为它基于受控变体,不是在自然语料上做相关性。

论文里真正扎到我的,是这条:降低 LLM 性能的语言模式,与增加人类理解难度的模式重叠。

这个点在学术上也许只是相关性讨论里不起眼的副产品。但在我看来,它指向一个我脑子里很久没落地的东西:

模型不是"机器",它像一面聚焦当代写作水平的透镜。你说一句含混、布满连词、从句套从句的话,人类对方大概率会迟疑一下然后自己脑补——但模型不会脑补,它只是把这种高复杂度投射成概率模糊的输出。

所以有些人在 AI 时代开始学"指令式沟通",并不是在讨好机器,是在重新练习写作里的"具体"。

这里跑题讲个段子。去年我花了很多时间让 ChatGPT 读清楚我的公共组件设计文档,它把我的"可选优化"当真需求做了。我改口成"记录这个方案,不实现"才消停。之前我以为是它不够强,现在回头看那个文档本身:大量"值得注意的是""同时应当考虑到"这类连接词,语法结构完全是为了过渡而生的,没有任何执行信号。我把一篇文章丢给一个需要用命令行动的存在,又要它不误解——是我在犯傻。

现在我基本不写那种提示语了。改成类似这样:

迁移前先执行一致性校验:
- 检查外键约束完整性
- 失败则终止,不继续

没有连词起承转合,全是逗号和句号。这像"人话"吗?其实它是把事情说清楚的最短路径——句式功能单一,本身就是最有效的领域语言。

论文里那句"词汇多样性并不作为质量维度重要",简直往我伤口上撒盐。我过去改 prompt 特别喜欢找同义词换词,生怕字面上不懂。结果最后发现:句子结构的清晰度才是关键,用词翻不出多少花。

我差点把这篇文章写成"提示词就该是祈使句"的宣言。但我不想。因为该收的还是要收:不管语言特征能解释多少,在推理前模型自己要表达什么只有它自己知道;外显语言预测永远是间接的。有用,但不是银弹。

这篇论文给我最大的启发,其实不是"如何写更好的提示语",而是给这类研究的方法论点了个赞——把 30 个指标一次一次暴力生成出来回归,而不是靠"我们从 1000 个资深用户的 prompt 中总结了十条经验"来写报告。前者是可证伪的,后者是幸存者偏差加自我感动。

至于未来,我倒无所谓它能把 R² 推到多高,反倒希望永远别推到 1.0。如果某天仅凭 prompt 的语言学特征就能预测到 F1=0.99,说明我们写代码的过程已经退化成不需要任何深度的模式匹配——那才该是我们开始用脑子的时刻。

预测是为了在投入算力前筛掉注定翻车的 prompt。但真正翻车的原因——领域知识缺失、任务定义不清、词汇上的"看不明说"——语言特征筛不出来的,它只能筛掉"结构上的不适合"。剩下的靠的还是人坐在那里盯。

人盯这一步,说真的,永远没法省。

而 AI 现在连"更像人话"的提示语都还在教我写——这大概是我缴智商税学到的最偏的一门课了。

阿舟
阿舟

写代码写到一半开始怀疑人生,靠 AI 工具续命,顺手把踩过的坑都记下来。

查看主页 →