大模型对话技巧

长对话用久了,经常会出现一种很微妙的感觉。

模型明明还记得前面的内容,回答却越来越飘。已经否定过的方案又被提出来,早期假设和最新结论混在一起,改一个文件时还会顺手碰到无关代码。

这里需要说准确一点。上下文变长不代表幻觉一定单调增加,长上下文本身也能提供更多证据。真正的问题通常是信息太多、关键内容埋在中间、指令彼此冲突,以及大量已经过期的探索过程还留在上下文里。相关研究常把其中一类现象称为 Lost in the Middle,模型对长上下文不同位置的信息利用并不总是均匀。

所以开新会话不是“清空记忆重新来”,而是做一次上下文压缩。

什么时候应该换会话

我一般看到下面几种信号就会考虑切换。

  • 同一个已修正问题连续复发。
  • 模型无法稳定说清当前目标和已完成事项。
  • 讨论已经从需求分析进入完全不同的实施阶段。
  • 对话里堆了大量日志、失败方案和过期代码。
  • 每次回答都要花很长篇幅重新解释边界,真正工作反而越来越少。

如果只是一个局部错误,先纠正即可。换会话也有成本,摘要漏掉的约束不会自动回来。

原来的交接 Prompt

本次对话的上下文已经太长了,我打算关闭并重新开启一个会话。请为继任者整理一份工作交接,让它能够理解当前任务并继续推进。

这句话能用,但它太开放了。模型很可能写出一篇看起来完整、实际缺少文件路径和验证状态的散文总结。

更稳的交接模板

请为新的会话生成一份可直接继续工作的交接文档,只记录已经确认的信息,不猜测。

请按以下结构输出:

1. 最终目标
- 用户真正要得到什么
- 明确不在范围内的事情

2. 当前环境
- 项目路径、分支、技术栈和关键版本
- 相关文件及其作用

3. 已确认事实
- 已通过代码、日志、文档或测试验证的结论
- 每条注明证据来自哪里

4. 已完成工作
- 修改过什么
- 为什么这样修改
- 已运行哪些测试,结果是什么

5. 当前未解决问题
- 具体症状
- 已排除哪些原因
- 仍然存在的假设,按可能性排序

6. 重要决策与约束
- 用户已经确认的选择
- 不能破坏的兼容性、性能和风格要求

7. 下一步
- 给出最小可执行的三到五步
- 第一步必须能直接开始,不要重新做已经完成的调查

8. 风险
- 哪些结论仍未验证
- 哪些文件存在用户自己的未提交修改

最后附上一段不超过 300 字的“新会话首条消息”,让我可以直接复制粘贴。

拿到交接后,别急着关掉旧会话。先检查四件事,目标有没有被偷换,事实和假设有没有混在一起,文件路径是否准确,测试是否真的执行过。

最好还让旧会话再做一次反向检查。

请审查刚才的交接文档,列出其中遗漏、未经验证或可能误导继任者的内容。只修正交接,不继续实施任务。

新会话开始后,也不要让它立刻大改代码。先让它复述目标、检查当前文件状态,再从交接里的第一步继续。因为交接描述的是某个时刻的状态,而工作区可能已经发生变化。

一句话总结,长对话真正需要的不是“失忆”,而是把探索历史压缩成一份可验证的当前状态。

延伸阅读: