[feature] 支持编辑历史 user 消息并从该处回滚重写
Author: yy1588133Created Sep 18, 2026Updated Sep 18, 2026
提交前确认
- 我已经阅读了 README 常见问题
- 我已经阅读了第三方模型使用指南(如使用第三方 provider)
- 我已经搜索过现有 issues,确认没有重复问题
- 我已经隐藏截图和日志中的 API Key、Token、Cookie 等敏感信息
问题描述
希望 cc-haha 支持在会话中直接编辑历史 user 消息并从该处回滚重写:在任意一条历史 user 消息上提供「编辑」入口,修改其内容后,会话回滚到该条消息之前,并以新内容重新执行该轮。
参考同类工具 Zcode 的交互:user 消息悬停时出现「编辑」按钮,点击后进入编辑态,确认后从该条消息处重新生成。
使用环境
- 使用方式: 桌面端
- 操作系统: Windows
- 系统版本: Windows 11
- 桌面端版本: 最新版本(设置页 -> 关于 可查看)
- 安装来源: GitHub Release
使用场景
模型输出中断(如上游截断 finish_reason=length、网络异常)导致该轮回复不可用时,目前只能新建会话或整轮回退后重新描述需求。若能直接编辑该轮 user 消息重发,只需微调措辞或补充约束即可原地恢复,成本最低。
已有能力与差异说明
我确认 cc-haha 已具备以下能力:
- 助手会话分叉:assistant 消息处支持 fork 出新会话分支,原会话不变;
- 撤销当前轮次文件变更:回合结束后可按 checkpoint 回滚该轮文件改动;
- 仅回退对话(#1273、#962,v0.6.0 已发布):纯对话或失败回合可退回该轮之前,不恢复磁盘文件。
以上能力组合后仍无法实现「修改某条 user 消息的内容,再从该条消息处重写该轮」:
- 「仅回退对话」只能整轮退回,不能编辑消息内容;
- 「助手会话分叉」是产生副本,不是在原会话内原地修改;
- 「撤销当前轮次」只处理文件,不处理消息文本。
本 issue 申请的即是在现有回滚/检查点机制上补齐这一交互。
期望方案
- 在历史 user 消息上提供「编辑」入口(如悬停按钮,交互可参考 Zcode);
- 编辑确认后会话回滚到该条消息之前,以新内容重新执行该轮;
- 编辑回滚时磁盘文件的处理,建议对齐现有「撤销当前轮次」的 checkpoint 行为(回滚该轮及之后的文件改动),具体策略由维护者定夺;
- 失败/被截断的轮次同样支持编辑重发。
Source: NanmiCoder/cc-haha