4. 对话历史不是记忆:多轮任务如何保持语义连续

发布时间:2026/8/13 9:16:51
4. 对话历史不是记忆:多轮任务如何保持语义连续 第一轮用户说:“分析动态工作流的并发限制。”第二轮只说:“那最小改动应该落在哪个函数?”如果系统只把第二句话发给模型,它就像接到一张没有寄件人和前文的便签;如果把所有历史原封不动重播,又会让上下文越来越重。多轮上下文的难点,是在“连续”与“膨胀”之间保持平衡。4.1 当前生产链路如何携带历史当前生产续聊链路不是直接调用conversationContextFormatter.ts,而是:Webview continueConversation - extension.ts.handleContinueConversation - conversationManager.addUserMessage - conversationManager.getConversationHistory - executeRun(..., conversationHistory) - reactAgentRunner.run - system message + history + 当前 taskconversationContextFormatter.ts是仓库中独立、带测试的格式化器,体现了相同的消息序列规则,但阅读生产行为时应以extension.ts和reactAgentRunner.ts为准。runner 会先加入本轮 system prompt,再逐条复制历史中的 user/assistant 消息;如果最后一条消息并不是内容完全相同的当前 user task,才追加当前任务。这个小规则看似琐碎,却避免了两个常见错误:把同一条用户消息重复追加,模型误以为用户说了两遍;在上一轮仍未闭合时插入新 user 消息,破坏消息角色序列。