agentscope-ai / agentscope-ai/QwenPaw

【功能建议】对话闪退导致历史丢失 — 建议内置自动存档机制

Open
#6,542 3 comments 0 reactions 0 assignees View on GitHub
enhancement
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.