Appearance
AI 的上下文为什么只增不减?
导读
Token 一旦进入上下文窗口就只能追加,模型无法删除;旧内容依然参与计算,持续分散注意力。由此衍生三个常见故障:长文本中间的指令被忽略、明显的错误视而不见、开口就编。应对办法是把关键约束放在开头或结尾,重要信息直接贴给它。
Token 只会不断地累加
Token 一旦送入上下文窗口,只会持续追加,模型本身无法从中删除任何内容。旧内容依然存在、参与计算,持续分散模型注意力。我们口中所谓的「删除内容」,并不是真的删掉了 Token,只是靠新指令把旧信息竞争性压制住。
补充提醒
真正的上下文删除,不是模型自带能力,而是 Harness(上下文管理器)在下一轮组装请求时,主动放弃携带旧 Token,属于外部的物理剔除。
普通使用者可以简化理解:模型本身不能删除窗口内已有的内容;想用指令压制旧信息,旧内容还留在输入里,结果不可靠。
旧信息不会自动消失,于是就有了上下文的拖累和任务的惯性。
举个例子:
模型输出:
text
123模型的上下文是:
text
内容:abc123
约束:不要说 abc为什么 AI 会对明显的错误视而不见
模型没有稳定可靠的全局逻辑机制,也不会主动做全局一致性审查。
举个例子:
你正在通过 AI 构思一本小说,告诉它:把主人公的性别从女性改成男性。
| 改动的类型 | 例子 | 模型处理起来 |
|---|---|---|
| 显性标签 | 「她」改成「他」,「女性」改成「男性」 | 容易,Token 和指令直接对应 |
| 隐性依赖 | 女厕所、生理期、被推进产房、闺蜜话题 | 难,需要多步推理和全局一致性审查 |
| 旧 Token | 「她」「女性」「怀孕」「生理期」仍在上下文里 | 可能和新设定同时被激活 |
改性别时,AI 会优先改显性标签。但因为性别改变而需要连锁调整的内容,却不一定稳定。
它不会意识到:主人公改成男性之后,就不应该再出现在女厕所听闲言碎语;上课迟到的理由也不该是生理期不方便;而且他应该在产房外焦急等待,而不是被推进产房。
「女厕所」「生理期」「生育」这些隐含设定,需要多步推理。
为什么 AI 会睁着眼睛说瞎话
旧 Token 会存入 KV 缓存池,这也是 AI 与你展开连贯对话的核心:AI 只需要在原来的结论上新增 Token 就行了,同时新增 Token 又可以借助注意力机制,「回指」前面已有的内容。问题就出在这个「回指」上。
模型没有精确的书签或者指针,而是一种软绑定:目标文本只要在上下文窗口内、特征清晰,就更容易被注意力关联上。
举个例子:
你把整本书都放进上下文后,再让 AI 修改第 5 章里的某段内容。
模型并不会重新通读整本书,而是依靠注意力匹配相似片段。这种指向关系没有强制性,就非常容易出错。
基于这个特性,我们会遇到一类典型故障:哪怕答案早就写在上下文里,你让 AI 自己把它找出来,结果依旧不稳定、容易出错。
这是 Transformer 架构与生俱来的短板,同时,这套机制恰恰也是它产生创造力的根源。所以最优做法是:直接把这段高质量 Token 贴给它,远好于让模型自行检索定位。
为什么中间的对话最容易忘
因为 AI 有明确的位置偏好。模型不会平等对待所有位置,注意力存在明显的位置偏见:
开头记得最牢,结尾次之,中间最容易忽略。
这就是 Lost in the Middle(中间丢失)。这种特性其实是注意力机制与预训练数据共同产生的一个副产品,刚好和人类「首尾记忆更强」的感受撞在了一起。它也解释了一个现象:为什么全文都在窗口里,埋在中段的约束却很容易被无视。
实操规则:硬性关键约束放在开头或结尾,不要埋在长文本中间。Harness 的系统提示词放在最前面,也正是利用了这个注意力优势。网上一种论调说,一些办公向 Agent 非常容易擅自动手,在没有指令的情况下有明显的动手倾向。原因就是它的系统提示词默认是 /craft。
为什么 AI 会有 AI 味
这个话题太大,不如先抓几个典型。比如著名的 AI 味句式:不是……而是……、最痛 XX 的那一个、最便宜/贵/值钱。
等一下,好像发现了什么不得了的事情:
- 「那一个」 ≈ that / the one
- 「不是…而是…」 ≈ not A but B
- 「最便宜最贵的这种」 ≈ this kind of / such a
这不就是翻译腔吗?
| 原文 | AI 直译腔 | 人话 |
|---|---|---|
| the cheapest and most expensive kind | 最便宜和最贵的那一个 | 最贵和最便宜的(那类) |
| Pick the one that is the most expensive, not the cheap one | 选最贵的那一个,而不是便宜的那一个 | 选最贵的,别挑便宜的 |
为什么 AI 摆脱不了翻译腔?
模型并不是「理解英文再翻成中文」,而是见过太多成对的句子(训练数据里有海量中英对照、机器翻译、英文转中文的文本),直接把模板刻进了权重里:not A but B 对应 不是……而是……,the one 对应 那一个。
英文靠连词、代词(that/one/but)搭骨架,语法成分一个不能少;中文靠意思串联,代词、连接词能省则省。AI 把英文的骨架完整搬进中文,就会塞满冗余的代词和连接词,读起来像穿着西装打太极——架势对,劲儿不对。
一个有意思的边界:「不是…而是…」本身没错
它是标准书面汉语,不是病句。问题不在词,在场景错配。
写论文、分析观点时用「不是…而是…」很合适;但日常对话、随笔、文案里还硬套这个句式,就像隔着层玻璃说话一样生硬。AI 缺的不是词汇量,是语域感知——它知道这个词组存在,却不知道在什么社交距离、什么情绪浓度下才得体。
因为缺乏具身认知与真实体验,AI 的情感永远是对语料的模仿,而非体验的投射。它也没法在日常交互中得到「这句话太生硬了」的真实负反馈。
这有点像先天听力有障碍的朋友学说话:经过大量训练,可以发出准确的声音,但语调里总缺一点自然的起伏。
一半以上的 AI 阴谋论都是 Anthropic 散播的
但另一方面,AI 在编程上展现出惊人的创造力。因为代码没有中间态:行就是行,不行就是不行。这种确定性让 AI 如鱼得水,训练质量天然更高。
知道了这一点,再看当下的割裂就很有趣了。硅谷大佬们惊呼:「我的天,AI 已经有了灵魂!它们正在改变世界,必须严加监管!」而另一边,写报道的记者还在跟「AI 味」死磕,琢磨怎么把「不是…而是…」改成一句人话。
作者的跑题的私货
Anthropic 当年从 OpenAI 分离出去,直至现在可以跟 OpenAI 分庭抗礼,我认为重要的原因就包括 Anthropic 把宝全都压在了让 AI 写代码的科技树上,而 OpenAI 当年既要还要,在 ToB 还有 ToC 的商业路线上摇摆不定,错失了大把的时间。
作者的跑题的抱怨:
全世界都知道 Claude 是世界上最牛逼的模型,Claude Code 是世界上最牛逼的 Hermes。全世界都想用。但 Claude 就非常拎得清,它知道自己的 coding plan 卖得越多,它亏得越多,所以它平等地封禁每一个中国用户。Claude 就像是一个高冷的女神,它是明码标价的,看不起你,每一次被它封号,就像失恋一样:虽然女神骗走了我的钱,但我不后悔。如果有机会,我还愿意跟女神在一起。
参考资料
- Lost in the Middle: How Language Models Use Long Contexts
- OpenAI:Prompt caching
- 提示词怎么写:五个失败原因,以及两套写法。
- 提示词的实用小技巧:六个可以直接照做的动作。