前端进阶之旅前端进阶之旅
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
首页程序员面试题库上下文裁剪 历史优先 截断策略
AIAI 开发提示与上下文设计

上下文接近窗口上限时,应优先裁剪哪类内容?

当上下文窗口将满,优先裁剪最远离当前任务的旧轮次、冗余示例和低相关文档,保留系统指令和最近的用户请求,以帮助模型将注意力集中在关键信息上。

前端进阶之旅 · 一题精讲更新于 2026.09.05
AI 开发#提示与上下文设计
先看核心答案
理解线索

裁剪优先级排序

  1. 旧轮次多为历史闲聊,已过时且噪声大
  2. 冗余示例重复示例占token,信息增益低
  3. 低相关文档与当前任务无关的长文可删

若早期信息是当前推理的因果前提,则不能删除

核心回答

先记住这个答案

裁剪顺序应为:最先移除最旧的、与当前意图无关的对话轮次;其次是重复示例与低价值文档;最后才考虑压缩需要长期参照的内容。保留system prompt、最近几轮用户指令及工具结果,因为它们直接影响本轮输出。边界在于:必须保留与当前任务有因果联系的早期信息,比如报错链。

  • 先删最旧的低价值对话
  • 冗余示例优先牺牲
  • 保留最近指令与核心系统约束

为何旧内容更容易丢弃

Transformer的self-attention使每个token都能直接访问其它token,但在长序列中,较早的内容与当前输出之间的距离较远,其有效利用程度可能下降。实践中,模型生成时往往更受靠近输出的上下文影响,这是常见的经验观察,但并非绝对规则;较早的系统指令即便重要,也可能因距离较远而较少被利用。因此在token预算不足时,优先删除已被当前指令覆盖或与最新问题无因果联系的历史记录,有助于保留更高的信息密度。

围绕“信息增益”判断,不简单地按时间一刀切。例如用户在第2轮提供的偏好设定可能一直有效,但第5轮问过的“今天天气”已经无用。同样,演示过三遍的few-shot示例,在输入格式稳定后可以只留一份。裁剪的本质是降低每个token的边际噪声,而不是机械地截断一半。

200k 窗口的客服机器人裁剪决策

设一个客服机器人,窗口200k,当前已用183k。对话包含system指令、用户报修历史、一份50页产品说明书(约70k token)、以及多次重复的示例。方案:先删除最初15轮“咨询送货时间”等已办结对话,释放约30k;再把示例从每个类别3条降为1条,释放18k;最后把与本次“烧毁主板”无关的产品章节(如外观描述)截取,保留电气参数部分,释放25k。处理后占110k,新问题得以被窗口接纳。

为何这样处理:刚办结的对话轮次只提供语境而不参与当前故障判断;重复示例在用户已明确故障类型时近乎噪声;而与故障无关的文档章节只占配额不增加推理依据。保留的是最近3轮、原始发票图片描述和系统安全策略,它们对“是否赔偿”的决策起直接作用。

裁剪的失效场景与代价

裁剪并非总是安全。若应用是多步代码修复,用户在第40轮引用了第2轮的报错栈,把第2轮删除会导致当前推理断裂。此时必须保留该早期轮次,哪怕牺牲后面若干轮次的示例。判定标准是“是否存在当前问题明确指向的历史前提”,而不是时间久远。

但“保留前提”也要付出代价:它占住剩余配额后,新的长文可能装不下。工程解法是提前预估增量token,并设计改写压缩逻辑,而不是临时硬切。同时,若上下文结构本身带有位置标记(如轮次编号),删除后需重新编号,否则模型可能混淆引用,这一步的算力和调试成本也应计入。

回答前,多想一步

容易答错的地方

总是删除最早的对话
这是错误的,因为早期可能有核心约束,比如用户一开始给出“我是会员,需要优先处理”,删除会丢失身份信息。应当优先删除中间冗余段落而非所有最旧内容。
给所有旧轮次打摘要来压缩
这个误区在于,摘要会丢失细节,且需要额外一次生成调用,若摘要质量不佳反而引入幻觉。优先直接删除无因果关联的轮次,而不是概括,但要注意摘要选型不是本问题讨论范围。
试着用自己的话回答

面试官还会怎么问?

怎么判断哪些旧轮次“低相关”?

可以按词法重叠与最新请求的意图匹配度预筛,再用小模型打分,但必须设定阈值,避免误删。实际落地可用嵌入相似度,成本低于让主模型自行判断。

如果窗口已经满了,系统提示词还能保留吗?

系统提示词通常很小,若必须压缩,可以精简其中长指令,但核心安全约束应保留,否则可能导致输出风险上升。压缩前应测试结构完整性。

裁剪后模型会记住被删内容吗?

不会,模型没有持久记忆,删除即不可见,所以只保证当前请求所需的信息依然在上下文中。若后续轮次再引用,则会发生事实断裂。

从一道题,走向一组知识

把知识连起来

提示与上下文设计

当系统提示词与用户指令冲突时,模型应遵循哪一层级?

同属「提示与上下文设计」专题,接着看 系统提示 用户指令 冲突 优先级 在具体场景中的处理方式。

提示与上下文设计

在长上下文提示中,为什么建议把文档放在查询之前?

同属「提示与上下文设计」专题,接着看 长上下文 文档位置 查询顺序 在具体场景中的处理方式。

参考资料

  • Prompting best practices - Claude Platform Docs

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 为何旧内容更容易丢弃
  3. 200k 窗口的客服机器人裁剪决策
  4. 裁剪的失效场景与代价
  5. 容易答错的地方
  6. 面试官还会怎么问
  7. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑