workbuddy-account-migrate

mcp
Security Audit
Pass
Health Pass
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 13 GitHub stars
Code Pass
  • Code scan — Scanned 1 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

One-click migration tool for WorkBuddy — restore conversation history, memory, and MCP connectors after switching accounts. 切换账号后一键恢复对话记录。

README.md

workbuddy-account-migrate

WorkBuddy 切换账号后对话记录不见了?一键恢复。

License: MIT
Platform: macOS
Python 3.8+
Version 1.3.0

English | 中文


中文

你是不是遇到了这个问题?

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。

安全规则

  1. 必须先备份 — 迁移前自动创建备份,不可跳过
  2. 源 ≠ 目标 — 防止自我覆盖
  3. Memory 追加不覆盖 — 不会丢失当前账号已有记忆
  4. Connector 深度合并 — 保留目标账号已有配置
  5. 迁移后重启 — WorkBuddy 客户端有内存缓存
  6. 备份 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 and storage.json, warns when inconsistent, prioritizes DB value. Previously relied solely on genie.userId which could be stale after account switch, causing source == target and 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-commands for TaskCreate tool

v1.1.0 (2026-05-25)

  • Initial public release
  • Session, Memory, Connector migration
  • Auto-backup + rollback support

License

MIT © 2026

Reviews (0)

No results found