WorkBuddy 空间安全重命名
背景(为什么需要这个技能)
WorkBuddy 桌面端的空间列表名,本质就是 ~/WorkBuddy/ 下的文件夹名。系统目前没有"重命名空间"的 UI 入口(右键菜单只有"打开文件夹 / 从列表中移除",空间名本身点不进去)。
数据库 ~/.workbuddy/workbuddy.db 里:
- workspaces 表只有 path 字段(没有独立的 name 字段)→ 显示名完全来自目录名
- sessions 表用 cwd(空间目录绝对路径)关联每个任务/会话
关键坑:如果只在 Finder 里改文件夹名、不碰数据库,历史任务的 cwd 会指向已不存在的旧路径 → 任务打不开。
何时使用
- 用户说"重命名空间 / 给空间改名 / 空间文件夹改名"等
- 空间列表里一堆日期时间戳(如
2026-07-23-14-05-01),想换成好记的名字 - 在官方提供原生重命名功能之前,作为可复用方案
安全流程(本技能做的事)
- 备份
workbuddy.db(带时间戳,便于还原) - 重命名
~/WorkBuddy/<旧名>→~/WorkBuddy/<新名> - 同步数据库:
UPDATE workspaces SET path=新 WHERE path=旧;UPDATE sessions SET cwd=… WHERE cwd LIKE 旧%(用前缀匹配,兼容后代子路径) - 验证:确认旧路径在 db 中残留为 0
- 提醒用户完全退出并重启桌面端,列表才刷新
用法(agent 执行)
拿到用户的"原 → 新"清单后,运行脚本:
python3 <本技能目录>/scripts/rename_workspaces.py "原文件夹名=新文件夹名" ["另一个=新名" ...]
或从映射文件批量:
python3 <本技能目录>/scripts/rename_workspaces.py -f mapping.txt
mapping.txt 每行一条:原文件夹名=新文件夹名(# 开头为注释,可忽略)。
可选参数:
- --root <目录>:空间根目录,默认 ~/WorkBuddy
- --db <文件>:数据库路径,默认 ~/.workbuddy/workbuddy.db
- --no-backup:跳过备份(不推荐)
- --dry-run:只打印将要执行的操作,不改动任何文件/数据库(推荐先跑一次确认无误)
运行后脚本会打印每个空间的改名结果、数据库同步行数、旧路径清零校验,并提示重启桌面端。
注意事项
- 改名不会丢失任何历史任务(
cwd已同步)。 - 只改用户指定的空间;未列出的日期空间保持原样。
- 目标名若已存在则跳过该条(不会覆盖)。
- 还原方法:把
workbuddy.db.bak_<时间戳>复制回workbuddy.db,并把目录名改回原样即可。 - 强烈建议同时向 WorkBuddy 官方反馈"空间支持重命名"需求,原生功能上线后本技能可退役。