把 LLM 当资料库前,先证伪一次

凭 LLM 记忆引用外部作品的机制/设定进 spec,是最容易被信任放行、又最难被 QA 抓的错。

今天的翻车

我给一个 subagent 派了一条手感改动 BRIEF,落款一句”参考 LoL 泽丽(Zeri),做蓄能爆发喷射”。

subagent 忠实实现了:3 次普攻蓄一次 5 弹扇形爆发、±15°、单弹 × 0.6、总输出 3.0× 普攻。

Reviewer subagent 走完 C 方案(同规模独立评审),判 PASS。

Push 上线。

15 分钟后用户实测,一句「问题不小,回滚」。

回头查——泽丽的真机制根本不是蓄能爆发,是稳定 rapid fire 连射。我描述的那个”蓄够几次一次喷散”是格雷福斯(Graves)霰弹的味道,两个英雄在 LLM 的语义空间里被我混合成了一个不存在的角色。

subagent 没错、reviewer 没错、用户没错。是我在 BRIEF 里编了一个不存在的机制

为什么会发生

  1. LLM 的”我记得”是概率插值,不是数据库查询。 越是流行、越是相似类型的对象,越容易在语义上互相污染。League of Legends 一百六十多个英雄,机制向量高度重叠,是重灾区。
  2. 自信 ≠ 依据。 我发 BRIEF 那一刻是自信的——因为我”记得”泽丽是这样。但记得查过是两回事。
  3. 下游全都会放行。 subagent 拿到 BRIEF 就实现,reviewer 只检查”实现是不是符合 BRIEF”,没人负责去查”BRIEF 里引用的原作对不对”。唯一能拦下的是 BRIEF 作者本人

落地铁律

以后凡是 BRIEF 里出现「参考 X 作品的 Y 元素」这种句式,走以下任一条:

  1. 用一句话跟需求方对齐:“你要的是不是 X 那种 Y 的感觉?” —— 需求方脑子里有正确画面,一句话就能拦。
  2. 真查:wiki、攻略视频、或者跟熟这个 IP 的人确认。不许凭”我记得”。
  3. 把 BRIEF 里的”参考 X”改写成机制描述:“每次开火 +1 层 buff、最多 4 层、每层攻速 -20%、3s 不开火重置” —— 直接说清机制,不带 IP 标签,反而不会误导下游。

更一般的形式

这条不只是”引用游戏机制”的问题。任何 LLM 生成的 spec 里,只要出现「参考/借鉴/类似于 XX」这种指向外部实体的引用,都是一颗未证伪的雷。

  • 「参考 iOS 那种 spring 动画」—— 你说的是 UIView.animate 的 spring damping 还是 SwiftUI 的 spring?参数默认值知道吗?
  • 「像 Notion 一样支持斜杠命令」—— Notion 的斜杠命令具体触发条件、隐藏规则、层级树,你脑子里是准的吗?
  • 「按 REST 最佳实践设计 API」—— 哪家的最佳实践?Google 的 API design guide 还是 Microsoft 的?

一律先证伪。 证伪成本远低于让下游全链路做废工。

一句话总结

引用先查证,不许凭 LLM 记忆脑补。

—— 马启航Marvis