3.5.5 知道何时开始新对话 转载

来源:https://github.com/datawhalechina/vibe-vibe

03-technique_3.5-iterative-dialogue_3.5.5-start-new-chat.png

经过本节学习,你将掌握

  • 识别「该开新对话」的三个信号
  • 理解为什么「清新开始」有时比「继续修补」更高效
  • 学会「搬家」:把关键信息从旧对话带到新对话
  • 获得一个可复制的新对话启动模板

旧对话太长会怎样?

在 3.5.4 中,我们讲了上下文窗口的概念。当对话太长时,早期内容会被挤出窗口,导致 AI「失忆」。

但问题不止于此。即使内容没被挤出,太长的对话也会降低 AI 的表现

问题 原因
回复变慢 需要处理更多历史信息
容易遗漏指令 关键信息淹没在大量对话中
更容易出错 历史中的矛盾信息会干扰判断
难以调试 你也很难回溯问题出在哪一轮

有时候,开一个新对话比在旧对话里继续挣扎更有效。

三个「该开新对话」的信号

信号一:对话超过 20 轮

这是一个经验值。当对话轮次超过 20 轮(你发一条、AI 回一条算一轮),就应该考虑开新对话了。

为什么是 20 轮?
- 每轮对话平均 500-1000 tokens
- 20 轮 ≈ 10K-20K tokens
- 已经占用了相当比例的上下文窗口

例外情况:如果你用的是大上下文窗口模型(如 Claude 200K),可以适当放宽到 30-40 轮。

信号二:AI 开始「忘记」早期约定

当你发现以下情况时,说明上下文管理已经失效:

❌ 你第 1 轮说用 TypeScript,AI 第 18 轮给你 JavaScript
❌ 你第 3 轮说不要用 any,AI 第 15 轮代码里全是 any
❌ 你问"按照之前的格式",AI 问你"什么格式?"

判断方法:如果你发现自己需要反复重申同一个约定(超过 3 次),就该开新对话了。

信号三:话题发生根本转变

当你从一个任务转向另一个完全不同的任务时,旧对话的历史反而会干扰。

旧话题:实现用户登录功能
新话题:设计数据库表结构

两个话题关系不大,旧对话中的登录代码会占用上下文空间,
却对设计数据库没有帮助。

经验法则:如果新任务和之前的对话内容没有直接关联,开新对话。

三个信号的速查表

信号 判断标准 行动
轮次过多 超过 20 轮 考虑开新对话
AI 失忆 反复重申约定超过 3 次 立即开新对话
话题转变 新任务与历史无关 开新对话

如何「搬家」:把关键信息带到新对话

开新对话不意味着从零开始。你需要把关键信息「搬」到新对话中。

第一步:从旧对话中提取关键信息

在旧对话结束前,让 AI 帮你总结:

请总结我们这次对话的关键信息,包括:
1. 项目的技术栈和约定
2. 已完成的功能列表
3. 当前的代码结构
4. 遗留的问题或待办事项

请用简洁的 Markdown 格式输出,方便我复制到新对话中。

第二步:保存总结

把 AI 的总结保存下来。可以:

  • 复制到一个文本文件
  • 保存到项目的 README 或 NOTES.md
  • 直接记在脑子里(如果内容不多)

第三步:在新对话中重建上下文

用提取的信息开始新对话:

我要继续开发一个待办清单项目。以下是项目背景:

**技术栈**:
- React 18 + TypeScript
- Tailwind CSS
- Zustand 状态管理

**已完成功能**:
1. 添加任务(带空输入验证)
2. 删除任务(带确认提示)
3. 任务列表展示

**代码结构**:
- src/components/AddTaskForm.tsx
- src/components/TaskList.tsx
- src/components/TaskItem.tsx
- src/store/taskStore.ts

**当前任务**:
实现任务编辑功能——点击任务可以修改标题

请基于以上背景,帮我实现任务编辑功能。

可复制模板:新对话启动 Prompt

通用模板

我要继续开发 [项目名称]。以下是项目背景:

## 技术栈
- [技术1]
- [技术2]
- [技术3]

## 编码约定
- [约定1]
- [约定2]
- [约定3]

## 已完成功能
1. [功能1]
2. [功能2]
3. [功能3]

## 代码结构
- [目录/文件1]:[用途]
- [目录/文件2]:[用途]

## 本次任务
[详细描述你要做的事情]

请基于以上背景开始。

简化模板(适用于简单项目)

继续开发 [项目名称],技术栈:[技术栈]。

已完成:[简要列举]
现在要做:[本次任务]

注意事项:
1. [约定1]
2. [约定2]

带代码上下文的模板

我要继续开发一个功能。以下是相关的现有代码:

**现有组件**(TaskList.tsx):
```tsx
// 这里粘贴相关代码片段

现在需要
[描述你需要 AI 做的事情]

请注意

  • 保持和现有代码风格一致
  • [其他约定]

什么时候不需要开新对话?

有时候旧对话还是更好的选择:

情况 建议 原因
对话还在 10 轮以内 继续旧对话 历史信息仍然有价值
正在调试一个 bug 继续旧对话 错误上下文很重要
功能实现到一半 继续旧对话 避免重新解释
需要引用之前的代码 继续旧对话 代码在历史中可直接引用

核心原则:如果旧对话的历史对当前任务仍然有帮助,继续用;如果已经变成负担,果断开新的。

「清新开始」的心理优势

除了技术原因,开新对话还有心理上的好处:

旧对话:
"之前改了这么多轮还没改好,是不是我的问题..."

新对话:
"这是一个全新的开始,这次一定可以"

有时候,一个干净的起点能帮助你更清晰地思考问题。

实战技巧:对话命名

很多 AI 工具支持给对话命名。善用这个功能:

❌ 默认命名:"New Chat"、"Untitled"
✅ 有意义的命名:"待办清单-添加功能"、"待办清单-删除功能"

好的命名能帮你:

  • 快速找到历史对话
  • 知道每个对话在做什么
  • 决定是继续旧对话还是开新对话

本节要点

三个信号:超过 20 轮、AI 反复失忆、话题根本转变

清新开始的价值:有时比继续修补更高效

搬家流程:让 AI 总结 → 保存 → 新对话中重建上下文

启动模板:用结构化的 Prompt 开始新对话,快速重建上下文

对话命名:给对话起有意义的名字,便于管理

本章总结

恭喜你完成了 3.5 节「迭代对话的艺术」的学习。

回顾一下你学到了什么:

小节 核心收获
3.5.1 一次搞定是幻觉,迭代是常态
3.5.2 三阶段模型:看方向 → 改问题 → 磨细节
3.5.3 SBI 反馈框架,让 AI 精准理解你的修改需求
3.5.4 四个上下文管理技巧 + 工具级配置
3.5.5 知道何时「搬家」,如何「搬家」

一句话总结:迭代不是失败,而是通往成功的必经之路。

下一节(3.6),我们将学习当 AI「不听话」时——输出错误、产生幻觉、代码有 bug——如何诊断问题并修正。

最后编辑:Alex 2026-03-05 11:39:49