WorkBuddy工作空间路径搬迁
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_b187eee2/workspace-relocate。
技能介绍
解决什么问题
当你在文件系统中移动或重命名 WorkBuddy 工作空间文件夹后,应用侧边栏可能会继续指向失效的旧路径,导致工作区无法正常加载,历史会话记录也会丢失。这是因为 WorkBuddy 在多个位置硬编码了原始路径的映射关系。本技能通过精确的数据库操作和目录重命名,一次性修复这些断链。
核心原理与执行步骤
WorkBuddy 将工作空间映射分散在 SQLite 数据库(workbuddy.db)、会话记录和本地磁盘目录中。技能会按以下顺序同步更新这三处关联:
- 状态核查:只读校验磁盘文件现状,确认旧路径失效、新路径已就位,并读取数据库定位需要修改的路径或会话 ID。
- 安全备份:在动手前,对数据库、WAL 和 SHM 文件进行带时间戳的三件套备份,确保变更可回滚。
- 事务更新:通过短锁和事务安全地执行
UPDATE,同步修改workspaces表的path和sessions表的cwd字段。 - 目录重命名:使用系统调用重命名磁盘上的历史会话目录,保证历史 JSONL 数据不丢失。
- WAL 固化与校验:执行
PRAGMA wal_checkpoint(TRUNCATE)将写入日志固化,并重新查询数据库确认所有路径已正确同步。
适用边界与注意点
- 转义规则:
~/.workbuddy/projects/下的目录名经过特殊转义,路径中的\替换为-,冒号被移除。重命名时需严格遵循此规则。 - Bash 脚本陷阱:在 Git Bash 中使用
heredoc时,Windows 路径的反斜杠极易被吞没,导致写入正斜杠路径。必须使用chr(92)拼接反斜杠以规避此问题。 - 只改库模式:如果仅执行数据库更新而不操作磁盘,应用虽能指向新路径,但旧的历史会话目录未重命名,历史记录将无法关联或显示。
- 完全重启:修改完成后,必须完全退出 WorkBuddy(包括系统托盘进程),否则侧边栏不会刷新路径。
使用场景
- 资源管理器里移动或重命名工作空间文件夹后,侧边栏指向死路径、点开找不到文件,需更新 WorkBuddy 数据库中的路径对应关系。
- 工作空间历史会话丢失或无法关联,需同步重命名 ~/.workbuddy/projects/ 下按旧路径命名的历史目录,保留 jsonl 会话文件。
- 文件已自行迁移、用户只想改数据库不碰磁盘,需仅更新 workspaces 和 sessions 表并提示历史会话可能不显示。
- Git Bash heredoc 写入路径时反斜杠被吞,导致 UPDATE 匹配 0 行,需用 chr(92) 构造反斜杠重跑事务更新。
适合人员
- 经常整理磁盘、会把项目文件夹移到其他盘符或归档目录的 WorkBuddy 用户,需要迁移后工作空间不失效。
- 习惯用 Git Bash 脚本自动化 Windows 路径操作的开发者,需要避开反斜杠转义坑导致数据库写入失败。
- 依赖历史会话回溯工作的工程师,需要在搬迁文件夹后仍能关联到旧会话记录。