SolonCode 的两个“后悔药“:重新运行 vs 继续运行 在 SolonCode Web 聊天界面底部工具栏有三个按钮从左到右Cop— 复制上一条回复内容Re-run重新运行— 删除旧回答重新跑一轮Continue继续运行— 保留旧回答继续追加内容这两个按钮看起来很像但行为完全不同。今天深入拆解它们的实现。重新运行Re-run行为删除旧的气泡用同样的输入重新跑一遍。使用场景AI 答错了想让它重新回答想换个角度重新问实现原理源码在RerunCommand.java// 逆向遍历消息列表找到最后一个 UserMessageListChatMessagemessageListsession.getMessages();StringlastUserInputnull;while(!messageList.isEmpty()){ChatMessagemsgmessageList.get(messageList.size()-1);if(msginstanceofUserMessage){lastUserInputmsg.getContent();session.removeLatestMessage(1);break;}session.removeLatestMessage(1);}// 重新运行输入相同if(lastUserInput!null){ctx.runAgentTask(lastUserInput,null);}核心逻辑逆向遍历找到最后一个用户消息删除它之后的所有 AI 响应然后用同样的输入重新跑一遍。结果新回答完全替换旧回答。继续运行Continue行为保留旧的气泡在旧回答后面继续追加新内容。使用场景AI 答到一半断了比如 token 限制想让 AI 继续写下去旧回答不完整想让它补充实现原理源码在ContinueCommand.javaReActTracetracesession.getContext().getAs(__main);if(trace!null){if(Agent.ID_END.equals(trace.getRoute())){// 说明有结束节点重新回到思考点trace.setRoute(ReActAgent.ID_REASON);trace.setFinalAnswer(null,false);ChatMessageworkMessagetrace.getWorkingMemory().getLastMessage();if(workMessageinstanceofAssistantMessage){trace.getWorkingMemory().removeLastMessage();}// 回退一条 ai 历史消息要重新生成ListChatMessagemessageListsession.getMessages();if(Assert.isNotEmpty(messageList)messageList.get(messageList.size()-1)instanceofAssistantMessage){session.removeLatestMessage(1);}}}ctx.runAgentTask(null,null);核心逻辑检查 trace 状态必须是ID_END已完成将 route 重置为ID_REASON回到思考阶段清空finalAnswer让 AI 重新生成回退最后一条 AI 消息用空的输入继续运行结果旧气泡保留新内容追加在后面。两个按钮的对照表维度Re-run重新运行Continue继续运行是否删除旧响应✅ 删除❌ 保留是否清空历史✅ 剥除后续消息❌ 保留完整历史是否重置 trace✅ 重置❌ 仅重置 route输入同一个用户输入空输入适用场景答错了想重答答到一半断了是否可链式操作可再 Re-run可再 Continue三个具体场景场景 AAI 答错了问题“1 1 ?” AI 回答3操作点击 Re-run结果旧气泡3被删除新气泡2出现历史回到问题本身场景 BAI 答到一半断了问题长文本生成到一半断了操作点击 Continue结果旧气泡保留已生成的部分新气泡追加在后面内容无缝衔接场景 C先 Re-run 再 Continue问题想换个思路但保留部分内容操作点击 Re-run → 得到新回答 A点击 Continue → 在 A 后面追加 B结果最终有两个气泡A 和 B 都是新内容runId 联动机制两个按钮都依赖一个关键字段runId。作用同一轮对话的所有气泡共享同一个runId。联动效果Re-run 时删除该runId下的所有气泡Continue 时新气泡也使用同一个runId实现// Web UI 中每个气泡都有>divclassmessagedata-run-idabc123!--内容--/div// Re-run 时JS 会删除所有>([data-run-id runId ]).remove();好处用户看到的是一整轮对话不需要手动删除单个气泡保持了对话的原子性三端可用这两个命令不仅存在于 Web UI还有三个入口1. CLI 命令行soloncode/rerun# 重新运行soloncode/continue# 继续运行2. Web UI点击工具栏的 Re-run / Continue 按钮。3. IM 机器人在飞书/钉钉/微信中输入/rerun或/continue。总结Re-run 删除旧回答 同输入重跑Continue 保留旧回答 空输入续跑两个命令底层实现完全不同但都通过runId联动保持对话完整性。掌握这两个后悔药能让 AI 对话更流畅出错也能快速修正。

相关新闻

最新新闻

轻量级规则引擎落地:Spring Boot 集成 LiteFlow 实现动态业务编排与热更新

轻量级规则引擎落地:Spring Boot 集成 LiteFlow 实现动态业务编排与热更新

业务逻辑越写越像意大利面,改个活动规则得走一遍 CI/CD,这毛病在不少团队里都见过。运营今天加个库存拦截,明天改个阶梯满减,技术侧就得跟着改代码、补单测、等发布。等到线上跑起来,往往已经错过了最佳窗口期。 这篇…

2026/8/23 23:42:07
基于YOLOv8-SOEP-RFPN-MFM的太阳能电池板检测算法研究

基于YOLOv8-SOEP-RFPN-MFM的太阳能电池板检测算法研究

概述 本项目研究基于YOLOv8-SOEP-RFPN-MFM的太阳能电池板检测算法,专注于太阳能电池板缺陷识别任务。项目采用目标检测技术,处理包含5类缺陷的数据集,包括’Cell’、‘Cell-Multi’、‘No-Anomaly’、‘Shadowing’和’Unclassified’。后端…

2026/8/23 23:42:07
【MQTT】自动重连:退避、抖动与传输层自愈

【MQTT】自动重连:退避、抖动与传输层自愈

应用层连接断了,第一时间想的往往不是「为什么断」,而是「赶紧重连」。automatic_reconnect 就是 Paho 给客户端准备的方案:断线后自动把连接建回来,不用你写重试循环。 但开了开关之后,事情没那么简单。设备断线后多…

2026/8/23 23:42:07
Apple Cursor:免费的 macOS 风格光标主题与完整安装指南

Apple Cursor:免费的 macOS 风格光标主题与完整安装指南

Apple Cursor:免费的 macOS 风格光标主题与完整安装指南 【免费下载链接】apple_cursor Free & Open source macOS Cursors. 项目地址: https://gitcode.com/gh_mirrors/ap/apple_cursor Apple Cursor 是一个免费开源的 macOS 风格光标主题项目&#xff…

2026/8/23 23:42:07
GetQzonehistory:一键获取QQ空间历史说说,3 步导出完整记忆档案

GetQzonehistory:一键获取QQ空间历史说说,3 步导出完整记忆档案

GetQzonehistory:一键获取QQ空间历史说说,3 步导出完整记忆档案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory GetQzonehistory 是一个用 Python 写的开源小工具…

2026/8/23 23:42:07
DeepSeek首个多模态API模型上线:多模态成赠品,成本比竞品低25倍!

DeepSeek首个多模态API模型上线:多模态成赠品,成本比竞品低25倍!

刚刚,DeepSeek首个多模态API模型DeepSeek -V4-Flash-Vision-Exp正式上线,API可立即调用。其多模态能力免费,成本远低于竞品,表现还十分出色。多模态能力成“赠品”别家单独计费的多模态能力,在DeepSeek这里成了满配版“…

2026/8/23 23:37:07