workbuddy-account-migrate
Health Gecti
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 13 GitHub stars
Code Gecti
- Code scan — Scanned 1 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
One-click migration tool for WorkBuddy — restore conversation history, memory, and MCP connectors after switching accounts. 切换账号后一键恢复对话记录。
workbuddy-account-migrate
WorkBuddy 切换账号后对话记录不见了?一键恢复。
中文
你是不是遇到了这个问题?
WorkBuddy 切换账号 / 重新登录 / 换了腾讯云身份后,之前的对话记录全没了?长期记忆、MCP 连接器配置也看不到了?
数据其实没丢——它们还在磁盘上,只是 WorkBuddy 用 user_id 做了账号隔离,新账号的 UI 看不到旧账号的数据。
本工具一键把旧账号的数据合并到当前登录账号,对话记录、记忆、连接器全部恢复可见。
切换账号前: 切换账号后:
┌──────────────────┐ ┌──────────────────┐
│ 账号 A │ │ 账号 B │
│ 26 个对话 ✅ │ ──→ │ 26 个对话 ❌ │ ← UI 看不到了
│ 13KB 记忆 ✅ │ │ 13KB 记忆 ❌ │ ← 文件还在磁盘上
│ 17 个 MCP ✅ │ │ 17 个 MCP ❌ │
└──────────────────┘ └──────────────────┘
│
运行迁移脚本
│
▼
┌──────────────────┐
│ 账号 B │
│ 26 个对话 ✅ │ ← 合并到当前账号
│ 13KB 记忆 ✅ │ ← 追加去重
│ 17 个 MCP ✅ │ ← 深度合并
└──────────────────┘
功能特性
| 特性 | 说明 |
|---|---|
| ✅ 交互式向导 | 运行即用,自动诊断、列出账号、输入序号选择,无需知道 user_id |
| ✅ Session 对话记录迁移 | 修改 SQLite 数据库中的 user_id 字段,对话记录全部回归 |
| ✅ Memory 长期记忆合并 | 追加式去重合并,不会丢失当前账号已有记忆 |
| ✅ Connector MCP 连接器合并 | JSON 深度合并,目标账号已有配置保留不动 |
| ✅ 自动备份 + 回滚 | 迁移前自动备份数据库、记忆、连接器,支持一键回滚 |
| ✅ WAL 安全处理 | 迁移前后执行 SQLite checkpoint,确保数据持久化 |
| ✅ 多源 user_id 验证 | v1.3:从 DB 最新 session 和 storage.json 交叉验证,避免过时 ID 导致迁移失败 |
| ✅ 迁移结果验证 | v1.3:UPDATE 后验证源 user_id 归零,确认迁移成功 |
| ✅ 零依赖 | 仅需 Python 3.8+,无第三方包 |
快速开始
git clone https://github.com/xiaoliuzhuan666/workbuddy-account-migrate.git
cd workbuddy-account-migrate
python3 scripts/migrate.py
运行效果:
======================================================================
WorkBuddy 账号迁移向导
======================================================================
当前登录: abc12345-6789-...
发现以下可迁移的账号:
序号 Sessions Memory Connectors
----------------------------------------
1 7 5.1KB 17mcp/4conn
2 18 13.0KB 17mcp/6conn
请输入要迁移的账号序号(输入 q 取消): 2
输入序号即可,全程不需要知道 user_id。
其他模式:
# 仅诊断 — 查看所有账号数据分布
python3 scripts/migrate.py --diagnose
# 指定源账号迁移(高级用户)
python3 scripts/migrate.py --source <USER_ID>
# 回滚到指定备份
python3 scripts/migrate.py --rollback <TAG>
迁移内容
| 数据类型 | 存储位置 | 隔离方式 | 是否迁移 | 迁移策略 |
|---|---|---|---|---|
| Session 对话记录 | workbuddy.db sessions 表 |
user_id 字段 |
✅ | UPDATE user_id |
| 长期记忆 Memory | ~/.workbuddy/memory/{uid}_memory.md |
按文件名 | ✅ | 追加去重合并 |
| Connector 连接器配置 | ~/.workbuddy/connectors/{uid}/mcp.json |
按子目录 | ✅ | JSON 深度合并 |
| Skills 技能 | ~/.workbuddy/skills/ |
无隔离 | ❌ | 全局共享,无需迁移 |
| Automations 定时任务 | workbuddy.db automations 表 |
无 user_id | ❌ | 全局共享,无需迁移 |
| Settings / MCP / Plugins | 全局配置文件 | 无隔离 | ❌ | 全局共享,无需迁移 |
工作原理
Step 1:自动诊断 — 从数据库、Memory 文件、Connector 目录三个来源自动发现所有账号。当前登录账号通过多源交叉验证自动获取(DB 最新 session user_id + storage.json 的 genie.userId,不一致时优先使用 DB 值并发出警告)。
Step 2:安全备份 — 迁移前自动备份到 ~/.workbuddy/migrate_backups/{timestamp}_{uid}/
Step 3:执行迁移 — Session 用 UPDATE user_id,Memory 逐行去重追加,Connector JSON 深度合并
Step 4:持久化 + 验证 — 迁移后执行 WAL checkpoint 确保数据落盘,验证源 user_id 归零确认迁移成功
Step 5:重启提示 — 提示重启 WorkBuddy 客户端,UI 刷新缓存后数据可见
兼容性
| 平台 | 状态 |
|---|---|
| WorkBuddy (macOS) | ✅ 已测试 |
| WorkBuddy (Windows) | ⚠️ 路径需适配(%APPDATA%),欢迎 PR |
| WorkBuddy (Linux) | ⚠️ 路径需适配(~/.config),欢迎 PR |
| CodeBuddy CLI | ❌ 不适用(见下方说明) |
为什么不支持 CodeBuddy CLI? CodeBuddy CLI 的记忆按项目维度隔离(~/.codebuddy/memories/{project-id}/),对话记录按 {sessionId}.jsonl 独立文件存储,不依赖 user_id 过滤,不存在账号切换后数据丢失的问题。如果你是 CodeBuddy 用户遇到类似问题,欢迎提 Issue。
安全规则
- 必须先备份 — 迁移前自动创建备份,不可跳过
- 源 ≠ 目标 — 防止自我覆盖
- Memory 追加不覆盖 — 不会丢失当前账号已有记忆
- Connector 深度合并 — 保留目标账号已有配置
- 迁移后重启 — WorkBuddy 客户端有内存缓存
- 备份 7 天可清 — 手动删除即可
回滚
ls ~/.workbuddy/migrate_backups/
python3 scripts/migrate.py --rollback 20260525170000_abc12345
竞品对比
| 项目 | 定位 | 同平台账号切换 | Session 迁移 | Memory 迁移 |
|---|---|---|---|---|
| 本项目 | 同平台账号切换数据合并 | ✅ | ✅ | ✅ |
| ai-memory-sync | 跨设备记忆同步 | ❌ | ❌ | ✅ |
| claw-migrate | 跨平台记忆迁移 | ❌ | ❌ | ✅ |
| workbuddy-manager | 本地会话管理 | ❌ | ✅ 本地 | ❌ |
本项目填补的空白:跨平台迁移和跨设备同步都有人做了,但同平台账号切换后的数据合并是唯一没人覆盖的场景。
FAQ
Q: WorkBuddy 切换账号后对话记录 / 历史记录真的没丢吗?
A: 没丢。数据文件全部还在磁盘上,只是 UI 按 user_id 过滤导致看不到。本工具把这些数据合并到当前账号下即可恢复可见。
Q: 迁移后旧账号数据还在吗?
A: Session 的 user_id 被改为新账号,所以在旧账号的 UI 下不可见了。Memory 和 Connector 的源文件仍然保留,可手动清理。
Q: 支持双向迁移吗?
A: 支持。从账号 A 迁到 B 后,也可以再从 B 迁回 A。但注意 Memory 是追加合并,多次迁移可能产生重复内容。
Q: 支持 CodeBuddy CLI 吗?
A: 暂不支持。CodeBuddy CLI 不存在账号切换数据丢失的问题。详见上方「兼容性」章节。
Q: Windows / Linux 可以用吗?
A: 脚本中的 STORAGE_JSON 路径目前硬编码为 macOS 路径。Windows 和 Linux 需要适配路径,欢迎提 PR。
项目结构
workbuddy-account-migrate/
├── README.md # 本文档
├── LICENSE # MIT 许可证
├── .gitignore # 排除敏感文件
├── SKILL.md # WorkBuddy Skill 描述符
├── scripts/
│ └── migrate.py # 核心迁移脚本
└── references/
└── data_isolation_map.md # 数据隔离全景图
贡献
- Bug 报告 / 功能请求 → Issues
- 代码贡献 → 提交 PR,请确保无硬编码的 user_id 或 Token
- 平台适配(Windows/Linux)→ 欢迎 PR
更新日志
v1.3.0 (2026-05-26)
关键修复:账号切换后 storage.json 中 genie.userId 未同步,导致迁移被静默跳过
- Bug 修复:
get_current_user_id()改为多源交叉验证——同时从 DB 最新 session 和 storage.json 读取 user_id,不一致时警告并优先使用 DB 值。此前仅依赖genie.userId,账号切换后可能过时,导致 source=target 迁移被跳过。 - Bug 修复:
migrate_sessions()迁移后增加 WAL checkpoint + 验证源 user_id 归零。此前修改可能因 WAL 未落盘而在客户端重启后丢失。 - 文档更新:SKILL.md 新增 AI 手动迁移最佳实践、3 条新踩坑记录。
v1.2.0 (2026-05-25)
- 新增历史任务恢复(
--list-tasks、--restore-tasks) - 新增交互式向导模式
- 新增
--generate-commands生成 TaskCreate 命令
v1.1.0 (2026-05-25)
- 首次公开发布
- Session、Memory、Connector 迁移
- 自动备份 + 回滚
License
MIT © 2026
English
The Problem
After switching accounts in WorkBuddy (Tencent Cloud AI assistant desktop app), all your previous conversation history, long-term memory, and MCP connector configs disappear from the UI. The data is still on disk — just hidden by user_id isolation.
This tool merges old account data into your current account with a single command.
Quick Start
git clone https://github.com/xiaoliuzhuan666/workbuddy-account-migrate.git
cd workbuddy-account-migrate
python3 scripts/migrate.py
Interactive wizard — just pick a number, no user_id knowledge required.
What Gets Migrated
| Data | How | Strategy |
|---|---|---|
| Session history | SQLite user_id field |
UPDATE to new account |
| Long-term Memory | ~/.workbuddy/memory/{uid}_memory.md |
Append + deduplicate |
| MCP Connectors | ~/.workbuddy/connectors/{uid}/mcp.json |
JSON deep merge |
Skills, Automations, Settings are global (no user_id) — no migration needed.
Features
- 🧙 Interactive wizard (no user_id needed)
- 🔒 Safe: append-only memory, deep-merge connectors, WAL checkpoint before & after
- 🔍 Multi-source user_id validation (DB + storage.json cross-check)
- ✅ Post-migration verification (source user_id must be zero)
- 🪶 Zero dependencies (Python 3.8+ only)
Compatibility
- ✅ WorkBuddy macOS (tested)
- ⚠️ Windows/Linux (path adaptation needed, PRs welcome)
- ❌ CodeBuddy CLI (not needed — it uses project-level isolation, not user-level)
Changelog
v1.3.0 (2026-05-26)
Critical fix: Migration was silently skipped due to stale user_id
- Bug fix:
get_current_user_id()now uses multi-source cross-validation — reads from both DB latest session andstorage.json, warns when inconsistent, prioritizes DB value. Previously relied solely ongenie.userIdwhich could be stale after account switch, causingsource == targetand migration being skipped. - Bug fix:
migrate_sessions()now performs WAL checkpoint after UPDATE (not just before), and verifies source user_id is zero. Previously, modifications could be lost on client restart due to unflushed WAL logs. - SKILL.md: Added AI manual migration best practices, 3 new troubleshooting entries.
- README: Updated feature list, workflow description, and version badge.
v1.2.0 (2026-05-25)
- Added task history recovery (
--list-tasks,--restore-tasks) - Added interactive wizard mode
- Added
--generate-commandsfor TaskCreate tool
v1.1.0 (2026-05-25)
- Initial public release
- Session, Memory, Connector migration
- Auto-backup + rollback support
License
MIT © 2026
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi