agentscope-ai / agentscope-ai/QwenPaw

[Feature] 支持将部分对话转移至新会话(会话拆分)

Aberta
#4,436 2 comentários 0 reações 0 responsáveis Ver no GitHub
enhancement
Linguagem predominante
Python
Estrelas
34.9k
Forks
3.1k
Merge médio
1d 15h
PRs com merge (30d)
225

Descrição

## Summary

支持将当前会话中的部分对话(选中消息或从某轮开始)转移至新会话,避免长上下文导致的 token 浪费,同时保留必要的上下文连续性。

## Component(s) Affected

- [ ] Core / Backend (app, agents, config, providers, utils, local_models)
- [x] Console (frontend web UI)
- [ ] Channels (DingTalk, Feishu, QQ, Discord, iMessage, etc.)
- [ ] Skills
- [ ] CLI
- [ ] Documentation (website)
- [ ] Tests
- [ ] CI/CD
- [ ] Scripts / Deploy

## Problem / Motivation

随着对话轮数增加,上下文 token 急剧膨胀。当前 QwenPaw 支持创建新会话,但新会话是空白的——用户只能手动复制关键信息到新会话,或依赖 Agent 的记忆文件(如 MEMORY.md)来延续上下文。

对于非 Agent 的普通用户,没有便捷的方式将"从第 N 轮开始的对话"或"选中的若干条消息"迁移到新会话中,导致要么忍受高成本的长上下文,要么丢失上下文从零开始。

典型场景:
- 一个会话中完成了 A 任务,开始 B 任务 → B 不需要 A 的冗余历史
- 对话到第 15 轮后方向改变 → 第 15 轮之后的对话更适合独立会话
- Agent 场景:工具调用产生大量输出后,需要开新会话但携带关键结论

## Proposed Solution

### 方案 A:基于选中消息拆分

1. 用户在聊天界面中选中一条或多条消息(长按 / 多选)
2. 点击"转移到新会话"
3. 新会话创建,包含选中的消息;可选项:是否将选中消息之前的对话生成为摘要作为新会话的首条系统消息

### 方案 B:基于轮数拆分

1. 用户在某条消息上点击"从此处拆分"
2. 该消息及之后的所有消息移入新会话
3. 原会话保留拆分点之前的消息

### 方案 C:带摘要的新会话

1. 用户点击"开新会话(携带摘要)"
2. QwenPaw 自动对当前会话生成摘要(可调用模型或简单截取最近 N 条关键消息)
3. 新会话首条系统消息包含摘要内容

以上方案可组合实现。

## Alternatives Considered

- 仅靠用户手动复制粘贴 → 体验差,容易遗漏关键上下文
- 自动按轮数拆分(如每 20 轮自动开新会话)→ 过于激进,破坏对话连贯性
- 仅依赖 Agent 记忆文件(MEMORY.md 等)→ 非 Agent 用户无法使用

## Additional Context

- #4435(对话轮数展示)——先让用户"看到"该拆了,本 issue 提供"怎么拆"的能力,两者配合形成完整闭环
- #4044(分层子代理上下文继承)——架构层面的上下文管理,本 issue 是用户侧的会话管理

## Willing to Contribute

- [ ] I am willing to open a PR for this feature (after discussion).

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.