agentscope-ai / agentscope-ai/QwenPaw
[Feature] 支持将部分对话转移至新会话(会话拆分)
- 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
Avaliação
Esta issue ainda não foi avaliada.