Skip to content

支持 Agent 数据自动备份快照#131

Closed
luoyuctl wants to merge 15 commits into
78:mainfrom
luoyuctl:codex/issue-127-agent-backups
Closed

支持 Agent 数据自动备份快照#131
luoyuctl wants to merge 15 commits into
78:mainfrom
luoyuctl:codex/issue-127-agent-backups

Conversation

@luoyuctl
Copy link
Copy Markdown
Contributor

@luoyuctl luoyuctl commented May 10, 2026

Closes #127

变更内容

  • 改成纯 TenBox.app 能力,不再修改 rootfs / 镜像,也不要求镜像预置备份脚本或 systemd timer。
  • TenBox.app 使用宿主持久目录 ~/Library/Application Support/TenBox/AgentBackups/<vm-id>/<agent>/ 保存备份。
  • 立即备份通过临时共享目录 + console 通道注入标准 shell 命令完成,备份包为 .tar.gz
  • 默认每个 VM / Agent 保留最近 5 份备份。
  • 支持查看备份状态、立即备份、恢复最近备份;恢复前会把现有数据移动到 *.pre-restore-YYYYMMDDHHMMSS
  • 复用 定义 Agent profile 迁移包,支持非技术用户导出/导入 Agent 数据 #126 的 Agent 数据归档逻辑和排除项,不引入第二套数据选择规则。
  • 更新 docs/agent-profile.mdCLAUDE.md,说明备份由 TenBox.app 和宿主持久目录管理,不依赖镜像更新。

验证

  • swift build -c debug --package-path src/manager-macos --scratch-path /tmp/tenbox-spm-127-pure 通过。
  • ./scripts/build-macos.sh --debug 通过,产出 universal TenBox-0.8.0.app
  • 使用未改镜像的 Hermes review VM 做真实验证:通过共享目录 + console 注入命令完成 backup snapshot/restore,恢复后数据回到备份时内容。
  • 同一轮验证覆盖 profile export/import 和健康诊断,确认三项能力可以在无镜像脚本的 VM 上工作。

本地 Review 产物

  • App:~/Library/Application Support/TenBox/review-apps/issue-127-TenBox.app
  • 可直接导入的未改 Hermes 镜像:~/Library/Application Support/TenBox/images/hermes-arm64-0.11.0/
  • 纯 TenBox.app 验证产物:~/Library/Application Support/TenBox/review-images/pure-tenbox-app-hermes-arm64/validation/

依赖说明

自 Review 结论

@luoyuctl luoyuctl changed the title Add Agent data backup snapshots 支持 Agent 数据自动备份快照 May 10, 2026
@luoyuctl luoyuctl marked this pull request as draft May 10, 2026 18:04
@luoyuctl
Copy link
Copy Markdown
Contributor Author

补充修复:已修复 review app 启动时 Sparkle.framework 被 hardened runtime library validation 拦截的问题。新增 com.apple.security.cs.disable-library-validation entitlement 后重新构建并覆盖本地 app;codesign --verify --deep --strict 通过,直接执行 TenBoxManager 保持运行 3 秒,未再出现 dyld Sparkle 缺库/签名崩溃。最新提交:e1e5dbb

@luoyuctl
Copy link
Copy Markdown
Contributor Author

验证更新:已把最新修复推到 cc50612,并重新生成 review app。\n\n这次同步了 agent tool 的共享目录等待和 shell begin-marker 快速失败处理,避免备份/恢复在共享目录尚未挂载或 shell 未启动时长时间假卡住;Hermes 备份也排除了可重装的大目录和临时文件。\n\n已跑四个本机镜像的 VM 内功能链路:\n- hermes-arm64-0.11.0: backup snapshot/restore OK,profile/backup 约 2.3M,排除 Hermes app checkout、venv/bin、logs/cache、gateway pid/lock。\n- hermes-fcitx5-arm64-0.11.0: backup snapshot/restore OK,profile/backup 约 2.3M,排除项 OK。\n- openclaw-arm64-2026.3.23-2: backup snapshot/restore OK,profile/backup 约 4K,排除 cache OK。\n- openclaw-arm64-2026.4.1: backup snapshot/restore OK,profile/backup 约 8K,排除 cache OK。\n\n构建校验:swift build -c debug --package-path src/manager-macos 通过;./scripts/build-macos.sh --debug 通过;review app codesign verify 通过;TenBoxManager 直接启动通过。

@luoyuctl
Copy link
Copy Markdown
Contributor Author

补充修复:同步了 Export/Import 点击卡住相关修复,已推到 cb3fa5d。\n\n修复点:\n- 文件选择面板从同步 runModal() 改为异步 sheet/window panel,避免阻塞 SwiftUI sheet 的按钮路径。\n- Agent 工具临时共享目录改为 runtime-only,不再持久化到 VM config。\n- 启动/读取配置时清理旧版本残留的 tenbox-agent-ops-* / tenbox-agent-backups-* share。\n\n验证:\n- swift build -c debug --package-path src/manager-macos 通过。\n- ./scripts/build-macos.sh --debug 通过,review app 已重新替换。\n- review app codesign verify 通过,直接启动通过。

@luoyuctl
Copy link
Copy Markdown
Contributor Author

这个 PR 已合并整理进合集 PR #132,避免三条 PR 重复 review。这里先关闭,分支保留不删,后续统一看 #132

@luoyuctl
Copy link
Copy Markdown
Contributor Author

关闭原因:已合并整理进合集 PR #132

@luoyuctl luoyuctl closed this May 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

1 participant