背景
非技术用户通常不会主动备份,但一旦 Agent 配置、会话、记忆或 workspace 丢了,损失很大。现在常见做法是靠飞书/网盘等外部工具备份,配置繁琐,还有大小限制。TenBox 应该默认帮用户保护 Agent 数据,让用户敢升级、敢迁移、敢重建 VM。
这个 issue 建议从“自动备份到宿主机”升级为“默认保护 Agent 数据”:自动备份、删除前保留、升级前快照和一键恢复都走同一套用户心智。
当前代码依据
Linux daemon 已有 /var/lib/tenbox/vms/<vm-id>/vm.json、runtime log、crash 等数据布局:docs/tenboxd.md。
VM spec 已支持 shared_folders,daemon/cloud edit 能热更新共享目录:src/common/vm_model.h、src/daemon/rpc_server.cpp、src/daemon/cloud_tunnel.cpp、src/daemon/runtime_manager.cpp。
Guest 已自动挂载 virtiofs 到 /mnt/shared:scripts/rootfs-scripts/virtiofs-automount。
Host settings 当前只有 LLM proxy,可扩展 backup settings:src/daemon/host_settings.cpp。
定义 Agent profile 迁移包,支持非技术用户导出/导入 Agent 数据 #126 会定义标准 Agent profile 迁移包,默认保护 Agent 数据:自动备份、删除保留、升级前快照和一键恢复 #127 应复用该包格式,避免单独发明备份格式。
MVP 边界
第一版只备份 Agent profile + VM 元数据,不做整个 qcow2 磁盘快照。
建议 MVP:
默认备份对象:
默认备份位置:
Linux daemon:/var/lib/tenbox/backups/<vm-id>/。
桌面版后续可用用户 home 下的 TenBox Backups。
允许用户改到外接盘/NAS 路径。
默认保留策略:
每个 VM / 每个 Agent 保留最近 5 份。
空间不足时停止新备份并给出人话提示,不静默写爆磁盘。
用户入口用简单文案:
Agent 数据已保护
最近备份
立即备份
恢复到上一次
导出到新电脑
删除/升级保护:
删除 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 兜底。
背景
非技术用户通常不会主动备份,但一旦 Agent 配置、会话、记忆或 workspace 丢了,损失很大。现在常见做法是靠飞书/网盘等外部工具备份,配置繁琐,还有大小限制。TenBox 应该默认帮用户保护 Agent 数据,让用户敢升级、敢迁移、敢重建 VM。
这个 issue 建议从“自动备份到宿主机”升级为“默认保护 Agent 数据”:自动备份、删除前保留、升级前快照和一键恢复都走同一套用户心智。
当前代码依据
/var/lib/tenbox/vms/<vm-id>/vm.json、runtime log、crash 等数据布局:docs/tenboxd.md。shared_folders,daemon/cloud edit 能热更新共享目录:src/common/vm_model.h、src/daemon/rpc_server.cpp、src/daemon/cloud_tunnel.cpp、src/daemon/runtime_manager.cpp。/mnt/shared:scripts/rootfs-scripts/virtiofs-automount。src/daemon/host_settings.cpp。MVP 边界
第一版只备份 Agent profile + VM 元数据,不做整个 qcow2 磁盘快照。
建议 MVP:
vm.json、镜像来源、TenBox 版本。/var/lib/tenbox/backups/<vm-id>/。TenBox Backups。后续阶段
验收标准
风险与注意点