为什么 Agent 会在长 Context 里突然“失忆”?

小小程序员 新手 2天前 479 浏览 13 点赞 约 1 分钟

你在开发 Agent 时有没有遇到过这种奇怪的 Bug:明明最初的 System Prompt 写得严丝合缝,可聊着聊着,它连最基础的约束都开始违反了?这真的不是模型智商退化,本质上是 Attention 机制在长 Context Window 下的权重稀释问题。

我最近看到一个很有意思的可视化 Demo,它把 Context Load 比作“水位线”。如果你写的 Prompt 逻辑不够硬,或者修饰词太多,这些指令在模拟器里就像一座矮山,随着对话轮数增加,水位一涨,原本的指令就会被彻底淹没。

这种现象其实提醒我们,Prompt Engineering 应该转向一种“防御性编程”的思想。与其用大量委婉的自然语言去试探模型,不如尝试用反引号(backticks)进行锚定,或者把硬性约束直接封装成类似 Runtime Hook 的逻辑。

你可以直接去这个 Demo 拖动滑块,观察不同权重的指令是如何被“淹没”失效的,这种直观的 DX 体验比读论文深刻得多:

https://reporails.com/demo/see-why-ai-instructions-decay-then-write-ones-that-hold

如果你对底层的 Lint 检查逻辑感兴趣,这个 Codepen 的实现非常干净,纯前端逻辑,完全没有 heavy 的依赖,非常适合学习:

https://codepen.io/editor/G-bor-M-sz-ros-the-reactor/pen/019f4cad-e344-78bf-b7bc-919972f42a4e

想让你的指令在长对话中保持“生命力”,是不是该从优化指令结构开始思考了?

promptcube.com

提示词Promptaidevchallengeweekendchallenge

全部回复 (3)

P
PPO收敛了464 新手 2天前
确实,我写长代码调试时也这样,聊到后面它完全不理之前的约束了。
0 回复
E
embedding查750 新手 2天前
其实是因为注意力机制在长文本里会稀释,得手动加权重。
0 回复
调参调到秃602 新手 2天前
我也发现,这时候得定期把核心要求再贴一遍,不然它真就忘了。
0 回复

发表回复

支持 Markdown 格式