Skip to content

默认保护 Agent 数据:自动备份、删除保留、升级前快照和一键恢复 #127

@luoyuctl

Description

@luoyuctl

背景

非技术用户通常不会主动备份,但一旦 Agent 配置、会话、记忆或 workspace 丢了,损失很大。现在常见做法是靠飞书/网盘等外部工具备份,配置繁琐,还有大小限制。TenBox 应该默认帮用户保护 Agent 数据,让用户敢升级、敢迁移、敢重建 VM。

这个 issue 建议从“自动备份到宿主机”升级为“默认保护 Agent 数据”:自动备份、删除前保留、升级前快照和一键恢复都走同一套用户心智。

当前代码依据

MVP 边界

第一版只备份 Agent profile + VM 元数据,不做整个 qcow2 磁盘快照。

建议 MVP:

  1. 默认备份对象:
  2. 默认备份位置:
    • Linux daemon:/var/lib/tenbox/backups/<vm-id>/
    • 桌面版后续可用用户 home 下的 TenBox Backups
    • 允许用户改到外接盘/NAS 路径。
  3. 默认保留策略:
    • 每个 VM / 每个 Agent 保留最近 5 份。
    • 空间不足时停止新备份并给出人话提示,不静默写爆磁盘。
  4. 用户入口用简单文案:
    • Agent 数据已保护
    • 最近备份
    • 立即备份
    • 恢复到上一次
    • 导出到新电脑
  5. 删除/升级保护:
    • 删除 VM 前提示“保留 Agent 数据”。
    • 升级 Agent 或镜像前自动做一次 profile snapshot。

后续阶段

验收标准

  • 用户不配置飞书/网盘,也能看到 Agent 数据被备份到宿主机。
  • 备份包复用 定义 Agent profile 迁移包,支持非技术用户导出/导入 Agent 数据 #126 profile 包格式,包含 manifest、校验和、agent 类型、VM id、创建时间、TenBox 版本。
  • 删除 VM 前能选择保留 Agent 数据,并能在后续恢复。
  • Agent/镜像升级前自动创建一次快照。
  • 每个 VM 有清晰的最近备份状态:已保护、备份失败、空间不足、从未备份。
  • 支持保留策略,默认不会无限增长。
  • 备份日志和 UI 不泄露 API key/token。

风险与注意点

  • 不要默认备份整个 VM 磁盘;一致性、体积、锁和增量都会复杂很多。
  • Agent profile 可能包含敏感 token,备份目录权限要收紧。
  • 备份前最好做大小估算,避免用户宿主机磁盘被写满。
  • 如果 guest 损坏到无法执行 profile export,MVP 可能无法备份;后续可考虑 QGA guest-exec 或离线挂载 qcow2 兜底。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions