同一会话持续工作后,模型可能重新提出已否决方案、漏掉早期格式要求,或继续沿用一条已经纠正的错误事实。仅凭这些现象不能断定模型被降级,因为实际请求中的有效上下文也在变化:产品可能裁剪旧消息、压缩摘要或检索部分历史;即使内容仍在窗口内,互相冲突的指令和大量中间输出也会干扰当前任务。本文给出一套定位方法,并用任务快照把目标、事实、约束和未决问题带到干净会话。
1. API 请求中的“历史”是显式输入
调用模型 API 时,系统指令、工具、资料、历史消息和当前问题都占用本次请求的上下文。模型依据当前能看到的内容生成输出,而不是自动读取应用数据库中的全部历史。
Anthropic 的 Context Windows 文档 和 OpenAI 的 Conversation State 文档 都说明了上下文或会话状态需要由产品与 API 机制管理。聊天产品可能额外提供摘要、检索、项目资料或记忆,但具体实现不应从界面现象反推。
因此,早期规则失效时,先问“当前请求实际包含什么”,而不是只问“模型为什么没记住”。
2. 三种历史处理会产生不同缺口
截断
早期消息退出有效上下文后,其中的格式、约束和事实不再可见。若产品没有公开具体裁剪策略,不能断言它一定删除了哪一段,只能通过导出的请求、调试日志或新会话对照验证。
摘要
摘要会保留主要方向,但不保证逐字保留所有细节。原要求若包含例外、否决理由或精确输出格式,概括后可能只剩“用户有格式要求”。
检索
产品可能只取回被判定与当前问题相关的历史。旧约束若没有清楚标记适用范围,检索阶段可能不选择它;也可能取回一条已经过期的旧结论。
这三种机制都可能节省上下文,但不能被当作无损历史记录。
3. 内容没有超限也会退化
关键信息被稀释
一条重要约束埋在大量工具输出、草稿和讨论中时,模型需要在每次生成时重新定位它。“能放入窗口”不等于每条内容获得相同权重。
指令互相冲突
“回答详细”“以后保持简短”和“这一节展开”可以同时存在。若消息没有说明哪条是全局规则、哪条只适用于当前步骤,模型只能依据上下文猜测优先级。
错误被当成已确认事实
模型或用户早期写错版本、路径或需求后,后续讨论可能继续引用它。若纠正只写“不是这样”,而没有说明正确事实和受影响结论,错误仍可能留在历史中。
会话内任务已经改变
写文章、调代码和分析报错需要不同资料、工具和成功标准。把多个任务放在同一会话,会让已无关的规则继续参与当前判断。
4. 先判断是哪一类问题
遇到跑偏时可以依次检查:
当前产品是否能显示或导出实际请求历史。
早期约束是否仍出现在有效上下文。
历史摘要是否遗漏了例外和精确格式。
是否存在互相冲突但未明确撤销的指令。
是否有错误事实被后续消息继续引用。
当前任务是否已经偏离会话最初目标。
没有请求日志时,可以做对照:把当前目标、正确事实和必要约束整理成短交接包,在新会话中运行相同任务。新会话改善只能说明干净上下文更适合这次任务,不能单独证明旧会话使用了哪种裁剪机制。
5. 在阶段边界制作任务快照
任务快照不是聊天摘要,而是下一阶段的最小工作合同:
当前目标:这一步要交付什么。
已确认事实:每条事实的来源或文件位置。
已否决方案:结论与否决理由。
必须遵守的约束:适用范围和优先级。
当前状态:已完成、进行中和未完成事项。
未决问题:需要用户、工具或外部资料确认的内容。
验证方法:完成后如何检查。
快照应由人检查,尤其是事实、权限和已否决方案。未经核对的模型总结可能把原错误带入新会话。
6. 明确撤销旧前提
纠正错误时写清三个部分:
旧前提:[不再使用的内容]
正确事实:[替代内容及依据]
影响范围:[哪些结论或步骤需要重新检查]
例如版本发生变化后,不只替换版本号,还要重新检查依赖该版本的配置、兼容性和测试结论。若旧消息不能删除,应在快照中把撤销记录放在相关事实旁边。
7. 什么时候继续,什么时候重开
可以继续当前会话:
目标没有变化。
冲突规则可以明确撤销。
必要资料仍可定位。
错误尚未扩散到多个结论。
更适合整理快照后重开:
任务目标已经改变。
多个错误前提互相依赖。
历史中存在大量无关工具输出。
产品摘要遗漏关键约束。
连续纠正仍沿用旧方案。
重开不是删除责任记录。原会话、快照和验证证据仍应保留;新会话只负责用干净输入继续当前任务。
8. API 应用要显式设计上下文
自己构建对话应用时,需要明确:
保留哪些原始消息。
何时生成摘要,摘要如何版本化。
哪些系统和业务规则始终保留。
资料如何按用户权限检索。
错误工具结果如何标记或移除。
任务状态如何独立于聊天文本保存。
不要把数据库中的所有消息无限追加,也不要只保存一个无法追溯的滚动摘要。重要事实应连接来源,任务状态应有结构化记录,摘要变化应能定位到原消息。
9. 结论与限制
长对话中的约束失效,可能来自上下文裁剪、摘要和检索丢失,也可能来自信息稀释、指令冲突、错误累积或任务切换。先检查当前有效输入,再决定补充规则、撤销旧前提或用快照开启新会话。
本文不判断任何聊天产品的内部裁剪策略,也不把一次新会话改善归因于模型版本。没有实际请求、产品文档或调试记录时,只能列出可能机制;重要任务仍需用来源、结构化状态和可执行验证来证明连续性。