5.3 KiB
5.3 KiB
08 · 数据存储与备份
1. 数据都存在哪
1.1 主配置
| 平台 | 路径 |
|---|---|
| Linux | ~/.live2D/live2d.conf.json |
| macOS | ~/.live2D/live2d.conf.json |
| Windows | %USERPROFILE%\.live2D\live2d.conf.json |
⚠️ 注意 Linux 大小写:是
.live2D(大写 D),不是.live2d。代码写死。
文件大致结构(见 03-首次启动配置.md §5)。
1.2 会话数据
存在 Tauri 提供的系统 app-data 目录:
| 平台 | 路径 |
|---|---|
| Linux | ~/.local/share/com.ezviber.plus/sessions/ |
| macOS | ~/Library/Application Support/com.ezviber.plus/sessions/ |
| Windows | %APPDATA%\com.ezviber.plus\sessions\ |
子目录结构:
sessions/
├── _index.json ← 会话索引(标题/消息数/时间)
├── 2026-06-19_153500/ ← 会话 id = 创建时间戳
│ ├── chat.jsonl ← 消息流(一行一条 JSON)
│ └── images/
│ ├── <uuid>.png ← 截图原图(给 LLM 多模态)
│ └── <uuid>.jpg ← 截图压缩预览(给聊天气泡)
├── 2026-06-19_180200/
│ ├── chat.jsonl
│ └── images/
└── __reminders__/ ← 提醒中心(特殊 id)
├── chat.jsonl
└── images/ ← 一般为空
1.3 数据库
ezvibe_memory.db(SQLite,向量记忆)
| 平台 | 路径 |
|---|---|
| 全部 | <工作目录>/ezvibe_memory.db ⚠️ |
⚠️ 坑:这个路径是相对当前工作目录的,不是 app-data 目录。如果你用
cd /tmp && /opt/ezviber-plus/live2d启动,db 就会在/tmp/ezvibe_memory.db。实际影响不大——RAG embedder 是
DummyEmbedder,数据库几乎是空的。
1.4 模型缩放 / 位置
存在主配置的每个 URL 下(嵌套对象):
{
"https://...shizuku.model.json": {
"position": { "x": 100, "y": 200 },
"scale": { "x": 1.0, "y": 1.0 }
}
}
2. 数据迁移
搬家 / 换电脑 / 重装系统的标准流程:
# 1. 旧机器:备份
tar -czf ezviber-backup.tgz \
~/.live2D/ \
~/.local/share/com.ezviber.plus/ # Linux
# ~/Library/Application\ Support/com.ezviber.plus/ # macOS
# %APPDATA%\com.ezviber.plus\ # Windows
# 2. 同步到新机器
# 3. 新机器:解压到对应路径
tar -xzf ezviber-backup.tgz -C ~/
# 4. 装好 EzVibeR+ 之后启动一次
⚠️ 聊天里的图片用相对路径(
sessions/.../images/xxx.png),所以只要保证两台机器的app-data绝对路径一致(如都在~/.local/share/com.ezviber.plus/),图片就能正常显示。改了用户名就坏。
3. 启动时 GC(自动清理)
每次启动会异步跑一次图片孤儿 GC:
- 扫所有
<app_data>/sessions/<id>/images/*.png|jpg|jpeg→ 候选集合 A - 扫所有 session 的
chat.jsonl→ 引用集合 R(只取imagePath/imagePngPath的文件名) A - R= 孤儿- 删孤儿 + 打印日志
保守策略:
- 单个 session 读 jsonl 失败 → 该 session 的所有图片保留(宁可漏删不误删)
- 只动
.png / .jpg / .jpeg,其他扩展名不动 - GC 失败只
warn,不阻断启动
日志格式(终端看):
启动 GC: 扫描 42 张,引用 35 张,删除 7 张孤儿,释放 1234567 字节
4. 删除某条消息 / 整个会话
- 整个会话:聊天面板点 🗑 → 整个目录(含 jsonl 和 images)都删
- 单条消息:当前不支持 UI 操作
- 绕过 UI 直接删(高级):
- 删整个会话:删
<app-data>/sessions/<id>/目录 + 手动编辑_index.json移除该条目 - 删某条消息:用文本编辑器打开
chat.jsonl,删对应行(保持一行一条 JSON 的格式) - 改完重启软件让索引重读
- 删整个会话:删
5. 备份建议
| 频率 | 备份什么 | 工具 |
|---|---|---|
| 每周 | ~/.live2D/live2d.conf.json |
任何同步盘 |
| 每次重要对话后 | 导出会话(⬇ MD 或 ⬇ JSON) |
内置导出 |
| 每月 | 整个 app-data 目录 |
任何备份工具 |
| 跨机器 | 同上 + 复制 model_dir |
rsync / 同步盘 |
💡 最稳的备份是定期用「⬇ MD / ⬇ JSON」导出关键会话,文件名自带时间戳和会话标题,永久可读。
6. 隐私 & 安全
- 所有数据只在本地——不传给任何第三方
- LLM 调用按你配的 provider 走(你用哪家就是哪家,没中间商)
live2d.conf.json里的llm_api_key是明文存盘的,注意文件权限- Linux/macOS:
chmod 600 ~/.live2D/live2d.conf.json
- Linux/macOS:
- 截图保存在
app-data/sessions/<id>/images/,全屏内容都包括——如果你截了敏感页面,记得手动删
7. 完全卸载
# Linux
rm -rf ~/.live2D/
rm -rf ~/.local/share/com.ezviber.plus/
# macOS
rm -rf ~/.live2D/
rm -rf ~/Library/Application\ Support/com.ezviber.plus/
rm -rf /Applications/EzVibeR+.app # 图形界面拖废纸篓也行
# Windows (PowerShell)
Remove-Item -Recurse -Force "$env:USERPROFILE\.live2D"
Remove-Item -Recurse -Force "$env:APPDATA\com.ezviber.plus"
下一步:09-常见问题FAQ.md。