WorkBuddy Handoff(工作台交接)
Purpose
WorkBuddy 的对话 / 任务历史 / 云端用户画像本来就会随账号自动云同步,但本地产物、本地记忆文件、
MCP 配置、凭证、技能、自动化库只存在于当前电脑。本 skill 提供两个确定可靠的动作,让用户用
"U 盘拷来拷去"的方式,在两地电脑之间保持工作台一致:
- pack(打包 / 离开 A 机):把
WorkBuddy/与.workbuddy/整包复制到一个独立的
WBHandoff文件夹,用户只需把这个文件夹拷到 U 盘 / 移动硬盘 / 网盘带走。 - deploy(部署 / 到 B 机):把 U 盘 / 移动硬盘 / 网盘里的
WBHandoff还原回当前电脑的对应位置,并先自动备份
本机原有数据以防覆盖丢失。
When to use
- 用户要离开当前电脑,希望把这两天的工作成果、记忆、配置完整带走。
- 用户到了另一台电脑,希望把之前的工作台一键还原,继续干活、翻查旧文件、调用旧产物。
- 用户明确表示不想用云盘同步 / 便携 SSD,倾向"手动拷贝"。
How to use
第 0 步:确定模式
- 用户说"打包 / 带走 / 离开 A 机 / 我要走了" → 执行 pack。
- 用户说"部署 / 还原 / 到 B 机 / 我到了" → 执行 deploy。
- 若上下文不明,用一句话向用户确认是"打包"还是"部署",不要猜。
Pack(离开 A 机)
第 1 步:检查 WorkBuddy 状态(不阻塞)
脚本会自动检测 WorkBuddy 是否运行,仅在提示中告知"部分被锁文件可能跳过",不会强制退出。用户随时可以触发打包,无需先手动关闭。
第 2 步:交互式确认打包范围
触发打包后,不要立即执行,先向用户展示以下确认对话:
> 请问你要打包的范围是?
> 1. 按时间选择 — 打包最近 N 天的数据(自动从 projects/ 里筛选)
> 2. 按任务选择 — 列出最近 3 个工作区,选一个或多个
> 3. 手动指定路径 — 你告诉我具体要打包哪些文件夹
用 AskUserQuestion 工具展示上述 3 个选项让用户选择。
如果用户选了「按时间选择」,紧接着追问第二层确认:
> 打包近几天的数据?
> - 今天(当天)
> - 本周(本自然周)
> - 最近 7 天
> - 最近 30 天
> - 自定义天数
同样用 AskUserQuestion 让用户选。
如果用户选了「按任务选择」,先用下面脚本列出最近 3 个工作区,呈现给用户:
$projects = Get-ChildItem "$env:USERPROFILE\.workbuddy\projects" -Directory |
Sort-Object LastWriteTime -Descending | Select-Object -First 3
foreach ($p in $projects) {
$size = (Get-ChildItem $p.FullName -Recurse -File -ErrorAction SilentlyContinue |
Measure-Object Length -Sum).Sum
Write-Host "$($p.Name) $([math]::Round($size/1MB,1)) MB (修改于 $($p.LastWriteTime.ToString('MM-dd HH:mm')))"
}
然后问用户:
> 以上 3 个是最活跃的工作区,请选择要打包的(可多选):
> 1. 第一个(最新)
> 2. 第二个
> 3. 第三个
> 4. 全部 3 个
> 5. 只打包当前活跃工作区(不含历史)
用 AskUserQuestion 让用户选。
如果用户选了「手动指定路径」,让用户直接输入要打包的文件夹路径(可多行),或直接选"打包全部 WorkBuddy/"和".workbuddy/"。
第 3 步:预览确认(估算大小+内容摘要)
在真正打包前,先向用户展示预览摘要,让用户知道大概多大、用什么存储介质:
📦 即将打包的内容预览:
• 工作区: 最近 N 天的项目 / 指定工作区列表
• 记忆文件: MEMORY.md + 工作区日志
• 配置: MCP配置(mcp.json)、凭证(credentials)、技能(skills)
• 自动化库: workbuddy.db(含定时任务)
• 产物索引: artifact-index + blobs(如有)
预估大小: ~X.X GB (根据已选范围估算)
建议存储介质(任选其一即可):
- 小于 4GB: 普通 U 盘(8GB/16GB)
- 4~16GB: 大容量 U 盘或便携 SSD
- 大于 16GB: 移动硬盘
- 任意大小: 网盘(夸克网盘 / 百度网盘 / OneDrive / 微云等)
* 上传:把 `WBHandoff` 整个文件夹传上去,到 B 机下载到同名位置即可
* 注意:网盘是"上传/下载"模型,非实时同步,换机前记得先在 A 机把最新包传完,到 B 机下载后再 deploy
* 包内含凭证(`.workbuddy\credentials`),上传前请确认网盘账号可信、开启二次验证
你当前的可用空间(U盘/移动硬盘/网盘均可): ____ (需用户自行确认)
用 AskUserQuestion 询问用户:
> 预览如上,确认继续打包吗?
> 1. ✅ 确认打包(按当前范围执行)
> 2. 📏 调整范围(减小以压缩大小)
> 3. ❌ 取消打包
第 4 步:运行 pack.ps1 打包
根据用户选择,用对应参数调用 pack.ps1:
-
全部打包(默认):
powershell powershell -NoProfile -ExecutionPolicy Bypass -File "<skill_dir>\scripts\pack.ps1" -
按时间(指定 days):
powershell powershell -NoProfile -ExecutionPolicy Bypass -File "<skill_dir>\scripts\pack.ps1" -Days $N -
按任务(指定项目名列表):
powershell powershell -NoProfile -ExecutionPolicy Bypass -File "<skill_dir>\scripts\pack.ps1" -Projects "projA","projB" -
手动路径(指定 paths):
powershell powershell -NoProfile -ExecutionPolicy Bypass -File "<skill_dir>\scripts\pack.ps1" -Paths "path1","path2"
脚本会把结果写到 $env:USERPROFILE\WBHandoff(或用户指定的 -OutPath)。
第 5 步:报告与提醒
向用户报告输出路径与大小,并提醒:
> 现在把整个 WBHandoff 文件夹拷到 U 盘 / 移动硬盘 / 网盘带走即可(网盘请上传整个文件夹,到 B 机下载后再 deploy)。
Deploy(到 B 机)
- 确认转移包路径(默认
$env:USERPROFILE\WBHandoff;若用户把 U 盘 / 移动硬盘 / 网盘内容放在别处,用
-PkgPath "实际路径"指定)。 - 先确认本机 WorkBuddy 已彻底关闭。
- 运行部署脚本:
powershell powershell -NoProfile -ExecutionPolicy Bypass -File "<skill_dir>\scripts\deploy.ps1" [-PkgPath "转移包路径"] - 脚本会先自动把 B 机现有数据备份到
WBHandoff-Backup-<时间戳>,再把转移包还原到位。 - 向用户报告完成,提醒可打开 WorkBuddy 验证;并说明原数据已备份、可回滚。
Critical discipline(务必告知用户)
- 绝不同时两台机器都留着未同步的改动。 每次换机前,一定在"最新那台"重新跑一次 pack,再带去
覆盖另一台。最后一次覆盖会把更早的改动冲掉——顺序很重要。 - 凭证会随包走: 转移包内含
.workbuddy\credentials(如 Redfox Key、企查查等),会在 B 机直接
可用,不必重配;但也意味着包里有机密,妥善保管 U 盘 / 移动硬盘 / 网盘账号。 - 对话/历史本就在云上: 即使不拷包,同账号登录也能看到对话列表;本 skill 补的是"产物 + 记忆 +
配置"这一层。 - 实时打包即可: 脚本支持 WorkBuddy 运行时打包,被锁文件自动跳过;关闭后重跑一次可补全。
排错
- 若 deploy 报"找不到 WorkBuddy 或 .workbuddy":检查
-PkgPath是否指向含这两个子文件夹的目录。 - 若 pack 报"WorkBuddy 仍在运行":关闭主窗口与托盘图标后重试。
- 个别超长路径(>260 字符)的项目文件可能复制失败:可忽略(对话已在云上),或改用 Robocopy 的
/256选项放宽限制。
详见 references/handoff-guide.md(知识背景与 FAQ)。