跳转到主要内容

无法回滚的回滚:提示词、工具和记忆必须同步版本化,否则满盘皆输

阅读需 2 分钟Tian PanTian Pan

故障频道里传来消息,说新的提示词正在幻觉退款金额,所以你做了一个显而易见的决定:将生产环境标签重新指向到上周的提示词版本。三十秒,无需重新部署,教科书级的回滚。结果 Agent 表现得反而更糟。上周的提示词引用了一个名为 lookup_order 的工具,但平台团队在周二将其重命名为 orders.search。记忆库中充满了由新提示词格式生成的偏好摘要,而旧提示词会将这些内容误读为用户指令。你并没有回滚 Agent,而是制造了一个“奇美拉”——三分之一是上周的,三分之二是今天的——并在从未测试过该组合的情况下将其推向了生产环境。

这是任何人的运维手册中都没有涵盖的失败模式:Agent 的部署不是一个单一的构建产物,而是一个三元组——提示词版本、工具契约、以及累积的记忆状态。回滚其中一个维度,而让另外两个维度保持现状,并不能恢复之前的状态。它创造了一个从未存在过、从未通过评估、且不属于任何团队值班范畴的新状态。

提示词注册表供应商告诉每个人,回滚应该是“配置变更,而非重新部署”——重新指向标签,几秒钟搞定。这个建议是正确的,但也是危险且不完整的。对于系统中真正无状态的那个维度,它是正确的。它的不完整在于,它暗示了另外两个维度也会随之变动。但事实并非如此。

Agent 部署是一个三元组,而非单一构建产物

让我们拆解一下究竟是什么决定了 Agent 在生产环境中的行为:

  • 提示词——系统提示词、少样本示例、输出格式指令。通常由 AI 或产品团队所有,在提示词注册表中进行版本化,并通过标签部署。
  • 工具契约——Agent 能看到的每个工具名称、参数模式(schema)以及描述字符串。通常由平台或后端团队所有,与后端服务一起部署。在 MCP 的世界里,其中一些工具甚至由你公司以外的团队完全拥有。
  • 记忆状态——检索到的摘要、学到的偏好、向量数据库内容、之前运行的草稿记录。由所有人也由无人所有。与另外两个维度不同,它是累积的,而非部署的。

这三个维度以三种不同的节奏,通过三个不同的流水线,由三个不同的负责人发布。提示词每天都在变化。工具模式随着服务部署每周变化。记忆在每一次对话中持续变化。

你的评估在发布前认可的行为是特定组合的属性:提示词 v41、周二的工具快照、当天下午的记忆状态。模型版本可以说是第四个维度——锁定 claude-sonnet-4-6-20250514 而不是使用别名也很重要,原因相同——但三元组是你的组织自身会发生变动的部分,因此也是协作失败的重灾区。

当告警响起,有人回滚“Agent”时,他们实际上回滚的是他们的团队所属的那个维度。这就是陷阱所在。

单维度回滚是如何失败的

隐蔽之处在于,每种不匹配的配对失败的方式都不同,且都没有明显的报错。

旧提示词,新工具。回滚后的提示词按其认知的名称和形式引用工具。如果工具被重命名,Agent 要么找不到它,要么——更糟的是——选择一个听起来最接近的替代方案并自信地调用。

而且重命名还是“简单”的情况,因为工具契约的断裂方式是模式对比(schema diffing)永远无法捕捉到的。工具的描述字符串也是契约的一部分:改变 search 的描述措辞,即使代码未变,你也改变了模型选择它的概率。还有逻辑漂移——模式在字节级别上完全一致,但上周进行模糊匹配的工具这周变成了精确匹配,而回滚后的提示词重试策略是针对旧行为调优的。REST API 会通过 400 错误大声报错。而工具契约则是无声地断裂,表现为给出一个略微错误的答案。

新提示词,旧工具。这是镜像问题,常见于平台团队回退了一个不稳定的服务,而提示词保持当前版本时。提示词的少样本示例展示了针对已不存在的参数的调用。Agent 模仿这些示例,报错,然后在重试中耗尽其循环预算——或者无声地退化为根据自身权重回答,而不是调用工具。

无论哪种提示词,配上错误时代的记忆。这是最微妙的一种。由提示词 v42 编写的记忆——其摘要格式、缩写、对字段含义的隐含假设——被检索到提示词 v41 的上下文。旧提示词从未建立过新记忆所依赖的约定,因此检索到的内容往好里说是噪音,往坏里说则是指令注入。没有任何报错。Agent 的表现只是超出了任何版本的评估范围。

现在想想谁来调试这个。提示词团队使用当前提示词配合当前工具进行复现:一切正常。平台团队回放工具调用:全部有效。记忆基础设施团队检查存储:没有损坏。每个团队的维度在隔离状态下都是健康的。失败仅存在于这种配对中,这意味着它不存在于任何人的测试环境中,也无法在任何人的笔记本电脑上复现。三个绿色的仪表盘,一个坏掉的 Agent。

记忆是无法回滚的那条腿

提示词(Prompt)和工具模式(Tool schemas)至少是可逆的 —— 它们是无状态的产物,指向旧版本确实能恢复原状。记忆则本质不同,数据库从业者几十年前就明白了个中缘由:状态只会向前移动。数据库的“回滚”实际上是向后一个恰好与过去相似的状态“向前滚动”(roll forward)。宣传支持回滚的迁移工具处理的是模式(Schema)的反转;而数据本身 —— 比如有损的类型更改、两列合并为一列 —— 如果没有备份,是无法“去迁移”的,只能进行补偿。

智能体(Agent)记忆是一个卫生习惯更差的数据库。在运行错误版本的窗口期内,它不仅是在响应中表现不佳 —— 它还在执行写入。错误的偏好摘要、被污染的向量条目、记录了错误提示词得出的结论的草稿记录。

会员专享

余下内容仅对会员开放。

会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。

  • 完整文章,包含未公开存档的部分
  • 可落地的工作框架,附带权衡与决策依据
  • 新文章抢先看,先于公开发布

随时取消 · 一次订阅,畅读全部

参考资料

保持联系,关注我获取更多内容

阅读需 9 分钟

那个因等待另一个 Agent 而死锁的 Agent

两个能力出色的 Agent 可能会在你的账单飞涨时永远互相等待。为什么是协作——而非模型能力——导致了 Agent 群体的崩溃,以及分布式系统准则如何修复这一问题。

insider
ai-agents
阅读需 10 分钟

学习型系统的任意时间点恢复:那个没人做的备份

你的数据库有快照,代码有 git,但你的智能体大脑却分散在五个独立版本化的存储库中。为什么对于大多数智能体技术栈来说,“恢复到昨天下午 3 点”是一个无法定义的概念,以及存储工程中的一致性组(consistency-group)规范如何解决这一问题。

insider
ai-agents
阅读需 9 分钟

当时钟成为工具:Agent、时区以及那个只在午夜发生的 Bug

LLM 没有内部时钟,因此 Agent 会自信地漂移到过时的时间上——这表现为错过的任务调度、错误的时区计算以及破坏缓存的时间戳。本文将介绍如何将当前时刻作为基础设施来提供。

insider
ai-agents
阅读需 11 分钟

重试预算如何从你的仪表板中隐藏了供应商的真实错误率

一个在悄无声息间实现 99.9% 成功率 SLO 的同时导致账单翻了 3 倍的重试循环 —— 为什么重试后的可用性是向领导层报告的错误指标,你应该衡量什么,以及隐藏在可靠性层中的成本-质量调节开关。

insider
ai-engineering
阅读需 9 分钟

那个在行动已发出后才生效的预算上限

当紧急停机开关正确触发,但智能体已经订好了机票、发送了邮件并关闭了工单时——为什么以 Token 衡量的预算上限忽略了以“行动”衡量的损失,以及如何将支出与不可逆性解耦。

insider
ai-agents