大模型对话技巧
长对话用久了,经常会出现一种很微妙的感觉。
模型明明还记得前面的内容,回答却越来越飘。已经否定过的方案又被提出来,早期假设和最新结论混在一起,改一个文件时还会顺手碰到无关代码。
这里需要说准确一点。上下文变长不代表幻觉一定单调增加,长上下文本身也能提供更多证据。真正的问题通常是信息太多、关键内容埋在中间、指令彼此冲突,以及大量已经过期的探索过程还留在上下文里。相关研究常把其中一类现象称为 Lost in the Middle,模型对长上下文不同位置的信息利用并不总是均匀。
所以开新会话不是“清空记忆重新来”,而是做一次上下文压缩。
什么时候应该换会话
我一般看到下面几种信号就会考虑切换。
- 同一个已修正问题连续复发。
- 模型无法稳定说清当前目标和已完成事项。
- 讨论已经从需求分析进入完全不同的实施阶段。
- 对话里堆了大量日志、失败方案和过期代码。
- 每次回答都要花很长篇幅重新解释边界,真正工作反而越来越少。
如果只是一个局部错误,先纠正即可。换会话也有成本,摘要漏掉的约束不会自动回来。
原来的交接 Prompt
本次对话的上下文已经太长了,我打算关闭并重新开启一个会话。请为继任者整理一份工作交接,让它能够理解当前任务并继续推进。
这句话能用,但它太开放了。模型很可能写出一篇看起来完整、实际缺少文件路径和验证状态的散文总结。
更稳的交接模板
请为新的会话生成一份可直接继续工作的交接文档,只记录已经确认的信息,不猜测。
请按以下结构输出:
1. 最终目标
- 用户真正要得到什么
- 明确不在范围内的事情
2. 当前环境
- 项目路径、分支、技术栈和关键版本
- 相关文件及其作用
3. 已确认事实
- 已通过代码、日志、文档或测试验证的结论
- 每条注明证据来自哪里
4. 已完成工作
- 修改过什么
- 为什么这样修改
- 已运行哪些测试,结果是什么
5. 当前未解决问题
- 具体症状
- 已排除哪些原因
- 仍然存在的假设,按可能性排序
6. 重要决策与约束
- 用户已经确认的选择
- 不能破坏的兼容性、性能和风格要求
7. 下一步
- 给出最小可执行的三到五步
- 第一步必须能直接开始,不要重新做已经完成的调查
8. 风险
- 哪些结论仍未验证
- 哪些文件存在用户自己的未提交修改
最后附上一段不超过 300 字的“新会话首条消息”,让我可以直接复制粘贴。
拿到交接后,别急着关掉旧会话。先检查四件事,目标有没有被偷换,事实和假设有没有混在一起,文件路径是否准确,测试是否真的执行过。
最好还让旧会话再做一次反向检查。
请审查刚才的交接文档,列出其中遗漏、未经验证或可能误导继任者的内容。只修正交接,不继续实施任务。
新会话开始后,也不要让它立刻大改代码。先让它复述目标、检查当前文件状态,再从交接里的第一步继续。因为交接描述的是某个时刻的状态,而工作区可能已经发生变化。
一句话总结,长对话真正需要的不是“失忆”,而是把探索历史压缩成一份可验证的当前状态。

延伸阅读: