WorkBuddy 卸载重装+数据迁移全记录:用 Junction 解决工作空间路径锁定问题

WorkBuddy 卸载重装+数据迁移全记录:用 Junction 解决工作空间路径锁定问题

本文记录了将 WorkBuddy 工作空间和全局配置从 C 盘迁移到 D 盘的完整过程,包括卸载重装、目录联接(Junction)方案、以及中途遇到的各种"坑"和解决方案。

适用于:WorkBuddy 重装后需要恢复数据、或想把数据迁移到其他盘符的用户。


一、背景

WorkBuddy 用了一段时间后,C 盘空间吃紧。看了看 WorkBuddy 的数据分布:

  • 工作空间目录 (项目文件、记忆、自动化配置等):在 C:\Users\用户名\WorkBuddy\
  • 全局配置目录SOUL.mdMEMORY.md、插件、二进制文件等):在 C:\Users\用户名\.workbuddy\ 下,光插件和运行时就有 500+ MB

目标:把这两块数据全部迁移到 D 盘,释放 C 盘空间。


二、备份

2.1 复制工作空间

cmd 复制代码
robocopy "C:\Users\用户名\WorkBuddy\Claw" "D:\WorkBuddy\Claw" /E /COPYALL

2.2 复制全局配置

cmd 复制代码
robocopy "C:\Users\用户名\.workbuddy" "D:\WorkBuddy\.workbuddy" /E /COPYALL

注意:复制时如果有文件被锁定跳过(比如 Cookies),不影响核心功能,重启后会自动生成。

2.3 验证备份

确认 D 盘以下关键文件存在:

  • 工作空间:项目文件、.workbuddy/ 目录(含 automations-registry.jsonmemory/ 等)
  • 全局配置:MEMORY.mdSOUL.mdIDENTITY.mdUSER.md

三、卸载重装

正常卸载 WorkBuddy,然后重新安装。

安装路径选哪里都行------程序本体和数据是分离的,只要后面 Junction 配好,数据全在 D 盘。


四、核心问题:无法切换工作空间路径

重装后启动 WorkBuddy,发现工作空间还是默认指向 C 盘原路径,而且 应用内没有"切换工作空间目录"的操作入口

试了各种方法:设置界面、配置文件、命令行参数......都找不到切换路径的地方。

这就是本次迁移最大的障碍。


五、解决方案:目录联接(Junction)

5.1 原理

既然不能让 WorkBuddy 去读 D 盘,那就让 C 盘路径自己指向 D 盘

Windows 的 mklink /J 可以创建目录联接(Junction),让系统以为文件在 C 盘,实际读写都走 D 盘。对 WorkBuddy 完全透明,不需要改任何配置。

复制代码
mklink /J "C盘原路径" "D盘实际数据"

Junction vs Symbolic Link

  • mklink /J(Junction):不需要管理员权限,兼容性更好,推荐
  • mklink /D(Symbolic Link):需要管理员权限

5.2 最终需要的 Junction 结构

C 盘路径 D 盘实际数据 说明
C:\Users\用户名\WorkBuddy D:\WorkBuddy 工作空间(项目文件等)
C:\Users\用户名\.workbuddy D:\.workbuddy 全局配置

为什么全局配置放在 D:\.workbuddy 而不是 D:\WorkBuddy\.workbuddy:让两条 Junction 路径完全独立,不重叠,避免父子级 Junction 嵌套问题。


六、操作过程(含踩坑实录)

第 1 步:创建工作空间 Junction

cmd 复制代码
mklink /J "C:\Users\用户名\WorkBuddy\Claw" "D:\WorkBuddy\Claw"

这一步比较顺利,直接创建成功。

后续优化:改为创建父级 Junction C:\Users\用户名\WorkBuddyD:\WorkBuddy,这样 Claw 子目录自动解析,不需要单独的子 Junction。但这一步需要先删除子 Junction,详见后面的踩坑。

第 2 步:创建全局配置 Junction

cmd 复制代码
mklink /J "C:\Users\用户名\.workbuddy" "D:\.workbuddy"
🕳️ 坑 1:WorkBuddy 运行时不断重建 .workbuddy 目录

现象 :删除 C:\Users\用户名\.workbuddy 后,WorkBuddy 进程立即重建该目录,删除跟不上重建速度,无法创建 Junction。

原因 :WorkBuddy 运行时会持续向 .workbuddy 写入文件(插件下载、缓存等)。

解决方案:先重命名旧目录,再创建 Junction,最后删除旧目录:

cmd 复制代码
ren "C:\Users\用户名\.workbuddy" ".workbuddy_old"
mklink /J "C:\Users\用户名\.workbuddy" "D:\.workbuddy"
rmdir /S /Q "C:\Users\用户名\.workbuddy_old"

ren 是瞬间完成的,WorkBuddy 还没来得及重建就已经改名了。

第 3 步:合并为父级 Junction(简化结构)

最初创建的是 C:\Users\用户名\WorkBuddy\ClawD:\WorkBuddy\Claw 的子 Junction。后来想简化为父级 Junction:C:\Users\用户名\WorkBuddyD:\WorkBuddy,这样 Claw 会自动解析,不需要单独的 Junction。

🕳️ 坑 2:工作空间目录被进程锁定

现象rmdir "C:\Users\用户名\WorkBuddy\Claw" 提示"另一个程序正在使用此文件",ren 也失败。

原因Claw 是当前 WorkBuddy 的工作空间目录,进程持续占用。

解决方案:必须完全关闭 WorkBuddy(包括 VS Code 窗口和系统托盘图标),然后在外部执行。

🕳️ 坑 3:关闭 WorkBuddy 后仍残留空目录

现象 :关闭 WorkBuddy 后,Claw 变成空目录(之前的 Junction 被删了但 WorkBuddy 重建了空目录),rmdir 可以删除。

解决方案 :创建 .bat 脚本,关闭 WorkBuddy 后以管理员身份运行:

cmd 复制代码
@echo off
echo === 开始修复 Junction ===

echo [1/4] 删除旧的子 Junction / 空目录...
rmdir "C:\Users\用户名\WorkBuddy\Claw" 2>nul

echo [2/4] 删除空的 WorkBuddy 目录...
rmdir "C:\Users\用户名\WorkBuddy" 2>nul

echo [3/4] 创建父级 Junction: WorkBuddy -^> D:\WorkBuddy
mklink /J "C:\Users\用户名\WorkBuddy" "D:\WorkBuddy"
if errorlevel 1 (
    echo *** 错误:Junction 创建失败!请检查 WorkBuddy 是否已完全关闭。
    pause
    exit /b 1
)

echo [4/4] 验证...
dir "C:\Users\用户名\WorkBuddy\Claw" >nul 2>&1
if errorlevel 1 (
    echo *** 验证失败:无法通过 Junction 访问 Claw 目录
    pause
    exit /b 1
)

echo.
echo === 全部完成!===
echo Junction 结构:
echo   C:\Users\用户名\WorkBuddy -^> D:\WorkBuddy
echo   C:\Users\用户名\.workbuddy -^> D:\.workbuddy
echo.
echo 请重新启动 WorkBuddy。
pause

操作步骤

  1. 完全关闭 WorkBuddy
  2. 找到 .bat 脚本,右键 → 以管理员身份运行
  3. 看到 全部完成! 后重启 WorkBuddy

七、恢复后验证

重启 WorkBuddy 后,执行 4 项验证:

验证项 方法 结果
项目文件读取 对话中说"看下持仓表"等指令 ✅ 文件正常读取
全局记忆生效 检查 SOUL.md / MEMORY.md 内容 ✅ 配置完整
自动化任务重建 对话中说"重建自动化调度" ✅ 从 JSON 注册表重建全部调度
数据查询可用 执行依赖 Python 环境的功能 ⚠️ 需补装依赖(见下)

🕳️ 坑 4:Python 依赖缺失

现象 :重装后 Python 环境是干净的,import tushareModuleNotFoundError

原因 :卸载重装后 Python 环境被重置,之前 pip install 的包都没了。

解决方案

cmd 复制代码
pip install tushare

八、自动化调度重建

WorkBuddy 的自动化调度(定时任务)存储在项目的 .workbuddy/automations-registry.json 中。重装后需要手动触发重建:

  1. 在对话中输入:重建自动化调度
  2. WorkBuddy 读取 JSON 注册表,自动重建全部调度
  3. 工作目录(cwds)会自动适配为当前路径
🕳️ 坑 5:RRULE 格式不兼容

现象:部分调度创建失败,提示 RRULE 格式错误。

原因 :WorkBuddy 的自动化系统不支持 BYMONTHBYMONTHDAYYEARLY 等 RRULE 字段,也不支持 BYSECOND

解决方案

  • 不支持的频率改为 FREQ=DAILY,在 prompt 首行加入日期判断逻辑(非目标日期直接跳过)
  • 移除所有 BYSECOND
  • 功能行为不变,只是触发频率从"精确日期"变成"每天触发但自动跳过"

九、最终架构

复制代码
C盘(Junction,对应用透明)          D盘(实际数据)
─────────────────────────          ─────────────────────────
C:\Users\用户名\WorkBuddy\  ──→   D:\WorkBuddy\
  └── Claw\(工作空间)              └── Claw\(项目文件+记忆+配置)
      └── .workbuddy\
          ├── automations-registry.json
          └── memory\
              ├── MEMORY.md
              └── YYYY-MM-DD.md

C:\Users\用户名\.workbuddy\  ──→   D:\.workbuddy\
  ├── SOUL.md                       ├── SOUL.md
  ├── MEMORY.md                     ├── MEMORY.md
  ├── IDENTITY.md                   ├── IDENTITY.md
  ├── USER.md                       ├── USER.md
  ├── binaries\(491 MB)            ├── binaries\
  ├── plugins\(53 MB)             ├── plugins\
  └── skills-marketplace\(43 MB)  └── skills-marketplace\

C 盘释放约 575 MB 空间,所有数据实际存储在 D 盘。


十、经验总结

10.1 核心原则

  1. 先备份再操作:复制到 D 盘后验证完整性,确认无误再删除 C 盘
  2. Junction 优于符号链接mklink /J 不需要管理员权限,兼容性更好
  3. 关闭应用再操作:WorkBuddy 运行时会锁定工作空间目录和持续重建配置目录,必须完全关闭后再创建 Junction
  4. 两条 Junction 独立:工作空间和全局配置放在不同的 D 盘路径下,避免路径嵌套问题

10.2 遇到的 5 个坑

# 问题 根因 解决方案
1 无法切换工作空间路径 应用内无此入口 用 Junction 让 C 盘路径指向 D 盘
2 .workbuddy 目录删不掉 WorkBuddy 运行时持续重建 ren 重命名旧目录 → 创建 Junction → 删除旧目录
3 工作空间目录锁定 WorkBuddy 进程占用 关闭 WorkBuddy → 运行 .bat 脚本 → 重启
4 Python 依赖缺失 重装后环境干净 pip install 补装
5 RRULE 格式不兼容 自动化系统不支持部分字段 改用 DAILY + prompt 日期判断

10.3 给后来者的建议

  • 备份用 robocopy/E /COPYALL 保证完整性,比手动复制可靠
  • 验证再删除:D 盘备份验证通过后再动 C 盘,别提前删
  • 准备一个 .bat 脚本:WorkBuddy 运行时锁定的目录只能关闭后操作,提前写好脚本一次搞定
  • 记下自动化调度注册表automations-registry.json 是调度的"种子文件",有了它随时可以重建
  • 先装依赖再验证 :重装后 Python 依赖会丢,先 pip install 补装再测试功能

附:完整操作脚本

将以下内容保存为 migrate_workbuddy.bat修改用户名后,在完全关闭 WorkBuddy 的情况下以管理员身份运行:

cmd 复制代码
@echo off
chcp 65001 >nul
echo ========================================
echo   WorkBuddy 数据迁移工具 (Junction)
echo ========================================
echo.

REM ====== 配置区(按需修改) ======
set USERNAME=你的用户名
set WORKBUDDY_C=C:\Users\%USERNAME%\WorkBuddy
set WORKBUDDY_D=D:\WorkBuddy
set DOTWORKBUDDY_C=C:\Users\%USERNAME%\.workbuddy
set DOTWORKBUDDY_D=D:\.workbuddy
REM =================================

echo [1/8] 删除工作空间子目录(如存在)...
rmdir "%WORKBUDDY_C%\Claw" 2>nul
rmdir "%WORKBUDDY_C%" 2>nul

echo [2/8] 创建工作空间 Junction...
mklink /J "%WORKBUDDY_C%" "%WORKBUDDY_D%"
if errorlevel 1 (
    echo *** 错误:工作空间 Junction 创建失败!
    echo 请确认 WorkBuddy 已完全关闭(包括系统托盘)。
    pause
    exit /b 1
)

echo [3/8] 验证工作空间 Junction...
dir "%WORKBUDDY_C%\Claw" >nul 2>&1
if errorlevel 1 (
    echo *** 验证失败:无法通过 Junction 访问工作空间
    pause
    exit /b 1
)
echo     工作空间 Junction 验证通过。

echo.
echo [4/8] 删除旧的全局配置目录(如存在)...
rmdir "%DOTWORKBUDDY_C%" 2>nul
if exist "%DOTWORKBUDDY_C%" (
    echo     目录仍存在,尝试重命名...
    ren "%DOTWORKBUDDY_C%" ".workbuddy_old" 2>nul
)

echo [5/8] 创建全局配置 Junction...
mklink /J "%DOTWORKBUDDY_C%" "%DOTWORKBUDDY_D%"
if errorlevel 1 (
    echo *** 错误:全局配置 Junction 创建失败!
    pause
    exit /b 1
)

echo [6/8] 验证全局配置 Junction...
dir "%DOTWORKBUDDY_C%\SOUL.md" >nul 2>&1
if errorlevel 1 (
    echo *** 验证失败:无法通过 Junction 访问全局配置
    pause
    exit /b 1
)
echo     全局配置 Junction 验证通过。

echo.
echo [7/8] 清理重命名的旧目录(如存在)...
if exist "C:\Users\%USERNAME%\.workbuddy_old" (
    rmdir /S /Q "C:\Users\%USERNAME%\.workbuddy_old" 2>nul
)

echo.
echo ========================================
echo   全部完成!
echo ========================================
echo.
echo Junction 结构:
echo   %WORKBUDDY_C%  -^>  %WORKBUDDY_D%
echo   %DOTWORKBUDDY_C%  -^>  %DOTWORKBUDDY_D%
echo.
echo 请重新启动 WorkBuddy,然后输入"重建自动化调度"。
echo.
pause

本文记录于 2026-07-04,基于 WorkBuddy 实际迁移操作整理。不同版本的 WorkBuddy 可能有差异,请根据实际情况调整。

相关推荐
Vodka~1 小时前
WSL2 + RViz GPU渲染机械臂
人工智能·python
Mister Leon1 小时前
模型端侧部署之 Nvidia Orin 异构硬件调度
人工智能
Python私教1 小时前
DocsGPT 开源二开第一步:如意知识库工厂怎么换脸?
人工智能
林中青木1 小时前
OpenCV 5.0 使用方法及注意事项
人工智能·opencv·计算机视觉
硅谷秋水1 小时前
FATE:面向物理落地机器人课程学习具备主动修复功能且考虑可行性-觉察的闭环任务生成方法
人工智能·深度学习·语言模型·机器人
8Qi81 小时前
hello-agents学习笔记--Memory让Agent拥有记忆
人工智能·python·llm·agent·ai编程·vibecoding
IT·陈寒1 小时前
Gemini 3 Flash Preview 深度评测:速度、智能与成本的综合博弈
人工智能
梦想的初衷~2 小时前
《双 Agent 工作台 + 全栈 GIS 项目搭建:前端地图/空间数据库/后端/云部署指南》
人工智能·echarts·leaflet·webgis·ai 辅助编程
恣逍信点2 小时前
论“无中生有”之元逻辑——《凌微经——对称性共生关系论》随读
人工智能·程序人生·知识图谱·学习方法·业界资讯·交友·哲学