agentscope-ai / agentscope-ai/QwenPaw
【功能建议】对话闪退导致历史丢失 — 建议内置自动存档机制
- Dominant language
- Python
- Stars
- 34.9k
- Forks
- 3.1k
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 225
Description
## 🐛 问题描述
QwenPaw 在运行过程中偶发闪退(进程意外终止),导致当前会话的对话历史全部丢失。
虽然 QwenPaw 在 `dialog/` 目录下以 JSONL 格式存储对话日志,但该文件**并非实时刷新写入**,
闪退时最后几轮对话可能尚未落盘,造成不可恢复的丢失。
## 🔍 复现步骤
1. 正常运行 QwenPaw(控制台模式)
2. 进行多轮对话(5-10轮以上)
3. 强制关闭进程或等待程序闪退
4. 重新启动后,最近一轮对话内容消失
## 💥 影响范围
- 所有使用 console 通道的用户
- 长时间对话时风险更高
- 对话中包含重要信息(如识别结果、配置参数、任务进度)时损失严重
## 💡 建议方案
### 方案一:实时对话存档(推荐,低开销)
对话过程中**实时(每轮对话结束时)**将完整对话记录写入 JSONL 文件,而非仅在对话关闭时批量写入。
### 方案二:内置自动备份脚本
在 QwenPaw 中内置轻量级的对话导出工具:
1. 读取 `dialog/YYYY-MM-DD.jsonl` 文件
2. 解析为结构化的 Markdown 格式
3. 增量同步到用户指定目录(如 Obsidian Vault)
4. 可通过 cron/schtasks 定时运行(如每5分钟)
### 方案三:闪退自动恢复机制
- 启动时检测上次非正常退出
- 自动从 JSONL 文件中恢复最近一次未完成的对话
- 提示用户"检测到上次异常退出,已恢复对话"
## 🛠️ 我们的临时解决方案
已编写 `qwenpaw_archive.py` 脚本,实现:
- ✅ 读取 `dialog/` JSONL 文件
- ✅ 增量同步(记录已处理行数,避免重复)
- ✅ 格式化为 Markdown(角色图标、时间戳、思考折叠、工具调用展示)
- ✅ 自动同步到 Obsidian Vault
- ✅ Windows 定时任务每5分钟执行
- ✅ 容错处理(UTF-8编码、损坏行跳过)
## 📋 环境信息
- QwenPaw 版本: 1.1.12.post3
- 操作系统: Windows 10 (AMD64)
- 使用通道: console
---
> 此 Issue 由用户自动生成,附有完整的临时解决方案脚本,可供官方参考或直接集成。
Contributor guide
Assessment
This issue has not been assessed yet.