和 DeepSeek 或豆包这类大模型多聊几轮,你大概遇到过这种情况:开头交代得清清楚楚的要求,聊着聊着就被淡化了,让它全程保持表格输出,它中途又变回大段文字。这种要求随轮次变淡的现象通常叫指令衰减,本文按机制拆开讲:注意力怎么被稀释、什么时候最明显、怎么把要求拉回来。
注意力为什么会随轮次稀释
大模型每生成一个字,都要把整段对话重新读一遍再决定下一个字。注意力并非平均分配,而是按相关性加权:最新消息和当前话题最相关,分到的注意力最多;开头那条指令离生成位置越来越远,与眼下话题的相似度越来越低,权重一路下滑。这也解释了为什么同一份提示在短对话里很稳,拖长了就开始飘。指令衰减不是要求被删掉了,而是被新内容层层覆盖,实际约束力越来越小。
衰减最明显的三个节点
- 话题切换时:新话题与旧指令相似度骤降,权重掉得最快。
- 上下文逼近窗口上限时:最早的内容可能被整体挤出。
- 中间塞进大段粘贴内容时:无关文本把指令往上下文深处推。
有人会故意利用这种位置感来劫持模型行为,那就是提示注入,机制见提示注入是怎么「劫持」指令的?;它难根治的根源在于指令与数据同源,展开看防注入为什么难?指令与数据同源。
哪些写法会加速淡化
只交代一次、交代得笼统、混在闲聊里说,都是高危写法。比如第一轮只说「认真点答」,到第十轮它几乎不剩约束力;把「输出保持三列」写成顺嘴一句,五轮后大概率走样。此外,把多条要求挤成一句长话,稀释时会整句一起失效,拆开写反而各自存活得更久。指令越具体、位置越固定,衰减越慢。
| 高危写法 | 为什么加速淡化 | 改法 |
|---|---|---|
| 只交代一次、措辞笼统 | 后续轮次无人重申,约束力逐轮下滑 | 每轮消息末尾用一句短指令重申 |
| 多条要求挤成一句长话 | 稀释时会整句一起失效 | 拆成多条短句分别写 |
| 关键约定用代称指代 | 措辞漂移把衰减再放大一次 | 给约定起固定名字,重申时用原名 |
把关键指令拉回来的做法
- 每轮消息末尾用一句短指令重申核心要求。
- 把长时效要求放进系统提示,不随对话稀释。
- 话题切换时显式补一句「继续按之前的要求来」。
长文本场景的淡化另有解法,可参考长提示的「中间遗忘」怎么补救?;温度参数与指令稳固度的关系见提示词和温度是怎么配合的?每一步都讲透;格式类要求走样的细节则在格式声明为什么偶尔失效?机制细节全梳理里有展开。
实战里还有一类隐性衰减值得单独点名:指令本身没变,但它依赖的名词换了说法。比如开头约定「按三栏布局输出」,五轮后你说「还是那个样子」,模型对「那个样子」的记忆已经模糊,衰减被措辞漂移再次放大。对策是给关键约定起固定名字,重申时用原名,别用代称。另外,重申嵌在任务句里比单独发一条更自然,「按三栏布局输出本轮结果」就比「记得之前的要求」有效;重申时只挑最关键的一两条,逐条短句,比把全部要求重新粘贴一遍更不容易被当成噪音。
指令衰减自查清单
- 关键指令只出现过一次?——补一句重申。
- 本轮话题和最初设定差得远?——切换话题时重申一次。
- 对话已经很长?——考虑开新会话并压缩核心设定。
一句话记住它:越容易走样的要求,越要亲自往后拉一把。
关于指令衰减的三个常问问题
- 指令衰减是模型退步或者坏了吗?:多数时候它只是注意力分配的正常结果,换一个模型同样会遇到。
- 把指令写得更长更细能防住它吗?:写细有用,但篇幅长不等于稳,位置和重申频率比字数更关键。
- 多轮对话和一次性长提示哪个衰减更快?:一次性提示里的指令不会被新消息覆盖,多轮对话反而更容易淡。
收个尾:指令在上下文里也会过期,想让要求活得久,就得定期给它续期。


