消息分支与 Fork 对话 · 从任意位置分叉做 A/B 测试
为什么对话分支特别重要
很多时候你想从同一个位置探索不同的回复方向——对比不同模型的回答、尝试不同的提示词、或者安全地试一些"有风险"的提示词。传统做法是手动开启新对话、复制粘贴历史——麻烦且容易出错。
RikkaHub 的 Fork(分支) 功能让这件事变得简单:从任意消息处一键分叉,新对话继承之前的完整历史,之后完全独立。
消息节点版本 vs Fork 分支
这是两个容易混淆但不同的功能:
| 功能 | 操作 | 效果 |
|---|---|---|
| 节点版本 | 重新生成 / 编辑消息 | 在同一条对话里,同一消息位置出现多个版本,左右切换 |
| Fork 分支 | 从某条消息处分叉 | 新创建一个全新的独立对话,从分叉点开始继承历史 |
简单理解:
- 节点版本 = 同一条对话里多几个"备选回复"(在同一位置左右翻)
- Fork 分支 = 复制出一条新对话来继续探索(两个对话完全独立)
创建分支步骤
- 在对话中找到要分叉的位置(可以是用户消息,也可以是助手回复)
- 长按该消息,或点击其下方的更多(三点)菜单
- 点击 Fork
- RikkaHub 创建新对话,自动跳转进入
分叉点之前的所有消息被完整复制到新对话里。从分叉点开始,你可以继续发送不同的提示词、切换不同的模型。原对话保持不变。
分支 vs 原对话的关系
| 项目 | 行为 |
|---|---|
| 分叉点之前的历史 | 新对话复制,原对话保留 |
| 分叉点之后的消息 | 两个对话独立,互不影响 |
| 文件附件 | 分叉时单独复制(删除原对话不影响新对话) |
| 助手 / 设置 | Fork 时继承原对话的助手、系统提示词、注入模式 |
| 存储 | 两个对话独立出现在历史列表里 |
典型场景
场景 1:对比不同模型对同一问题的回答
- 原对话里用 GPT-4o 问了一个问题
- 从你的问题处 Fork
- 在 Fork 对话里切换到 Claude Sonnet
- 发送相同的问题
- 直接对比两个对话里的回答质量和风格
场景 2:安全地尝试有风险的提示词
你想试试一个"可能让对话跑偏"的提示词——在 Fork 对话里试,原对话保持原样。跑偏了就放弃 Fork,回到原对话继续。
场景 3:分享对话的干净版本
一个对话跑了 20 轮,你想分享给别人但中间有 15 轮废话。从某个干净的位置 Fork,新对话里只有精简后的历史,直接导出分享。
场景 4:重新生成不满意的回复
对某个助手回复不满意,长按 → 重新生成。新回复会作为同一节点的新版本出现(不是 Fork 分支),你可以左右切换对比。
节点版本切换
当一个消息节点存在多个版本时(由重新生成或编辑创建),消息旁边会出现分支导航器:
- 显示:当前版本号 / 总版本数(如 "2 / 3")
- 左箭头 ←:跳到上一个版本
- 右箭头 →:跳到下一个版本
- 到第一个或最后一个时,对应箭头变灰
对话中该节点之后的所有消息会自动更新,始终展示由每个节点当前所选版本构成的路径。
v2.5.6 修复了什么
更新日志提到修复了"分叉对话标题序号重复叠加"的问题——之前多次 Fork 可能导致标题里出现 "fork (1) (2) (3)" 这种序号重复的现象。v2.5.6 已修复。
分支对话的管理
分支对话和普通对话一样存储在本地:
- 按最近更新时间排序出现在历史列表
- 可以重命名、置顶、删除
- 删除原对话不影响分支对话(分叉点之前的消息是独立复制的)