[Feature]: 会话分支(fork):保留当前上下文复制多份会话并行运行,缓解长对话注意力漂移

Author: ToTcryCreated Sep 14, 2026Updated Sep 14, 2026

会话分支(Session Fork)/ English TL;DR: fork a session into N independent copies that inherit the context snapshot up to the fork point, so unrelated side tasks can run in parallel without polluting or drifting the main conversation.

Problem Statement

在一条较长的会话里推进主线任务时,经常临时冒出 2~3 条互不相关的支线任务(验证另一个假设、查一个旁证、试一种改法)。现在的两种做法都很痛:

  • 按顺序在同一会话里做:支线内容污染主线上下文,模型注意力漂移严重,主线质量肉眼可见地下降;做完支线还得把注意力"拉回来"。
  • 开新会话做支线:丢失已有上下文,每条支线都要重新交代一遍背景,重复且易漏。

现有的替代能力(多会话并行、群聊房间 @ 分发、工作流并行节点)都只解决了"并行执行",缺少"上下文快照继承"这一层。

Proposed Solution

支持会话分支(fork)

  1. 在任意会话中一键"从此处分支",复制出 1~N 个副本会话;
  2. 每个副本继承分支点之前的完整上下文快照,之后各自独立运行、互不影响;
  3. 原会话继续保留,不受分支影响;
  4. 副本会话上标注来源(fork 自哪个会话/哪条消息),便于回溯;
  5. 建议同时补一个 REST 端点:POST /api/studio/sessions/{id}/fork(可选参数:分支点 message id、副本数量)。现有 Sessions API 已经很完整(分组/导出/切模型/切 workspace 等),补 fork 的实现路径应该很自然。

Alternatives Considered

替代方式 未解决的部分
手动开多个会话并行 不继承主干上下文,支线要重新交代背景
导出会话 json 再贴进新会话 可用但繁琐,属于"穷人版分支"
群聊房间 @ 不同 Agent 分发 靠 Agent 自己读群聊历史,不是干净的上下文快照
工作流并行节点 适合预先定义好的任务,不适合探索性对话

Priority

Medium - nice to have(不阻塞日常使用,但对高频探索型工作流收益很大)

Use Cases

  1. 调试/探索时同时出现多条互不相关的支线(如并行验证两个假设),希望各自带着主线上下文独立推进,做完只合并结论不合并历史;
  2. A/B 对比:同一任务、同一上下文快照,分别用不同模型 / 不同 Agent / 不同参数并行跑,横向比较结果;
  3. 安全实验:在副本里尝试"可能搞砸"的激进操作,失败直接丢弃分支,主线无损。

Additional Context

  • 参考体验:ZCode(智谱)的会话分支功能——保留前面会话并复制多份单独运行,对缓解长对话注意力漂移非常有效,属于"上下文隔离优于上下文压缩"的思路。
  • 相关但不同的已有 issue:#2618(会话分类树状层级)解决的是组织问题,本需求解决的是上下文继承问题;#2456(群聊 Agent 间上下文隔离/摘要转交)是相邻场景。
  • 环境:Ekko Studio 0.7.21 桌面版(Windows),Sessions REST API 核对时未发现 fork/branch/clone/duplicate 相关端点。

Source: EKKOLearnAI/hermes-studio