factory-reset-vscode-fork-ide
Installation
SKILL.md
VSCode 二次开发 IDE 出厂还原
适用于 Windows(Git Bash 执行)。目标:扩展数归零 + 用户配置归出厂。默认不留任何备份(用户偏好),删除一律走回收站(SendToRecycleBin),不直接物理删除。
审计附件:历次实战处理过的全部 C 盘路径(各 IDE 扩展文件夹、个人配置三件套、未动的相邻目录、恢复指引)见 references/cleanup-audit-log.md。执行新目标前可对照该清单确认同类路径的处理边界;每次完成新清理后应追加更新该清单。
铁律(踩过的坑)
- CLI 入口要挑对:fork 的
bin/下常有多个.cmd(如code.cmd、qoder-cn.cmd)。逐个试--list-extensions,能输出扩展列表的才是 IDE 管理入口;另一个多半是独立 agent CLI 的壳,不支持扩展参数。 - 不要猜数据目录:
~/.xxx/extensions这种目录可能属于另一个同门产品(共享或历史遗留)。唯一权威来源是<安装目录>/resources/app/product.json的dataFolderName字段。 - 内置导入扩展必须
--force:报marked as a Built-in extension不是失败,加--force重来。 - 卸载后必扫残留:CLI 卸载会留下空壳文件夹、
.GUID临时目录和.obsolete标记,物理目录要手动清。 - 依赖会阻塞卸载:报
Cannot uninstall 'X'. 'Y' extension depends on this时,先卸依赖方Y(若Y是内置"not installed",等 IDE 进程退出后重试X通常即通);报is not installed说明该项已在别处清掉,跳过即可,不算失败。 - IDE 进程必须先退出:运行中的实例退出时会写回
extensions.json和用户配置,覆盖清理结果。动手前tasklist | grep -i <IDE名>,有进程先让用户关闭。 extensions.json计数为 0 才算完:文件夹删了但注册表没清 = 没清干净。- 绝不动相邻产品目录:只动目标 fork 自己的
~/.<dataFolderName>(且只碰其extensions子目录)和%APPDATA%\<AppName>\User,同前缀的其他目录是别的产品的家(.qoder/.qoder-cn/.qoderwork分属不同产品,归属以各自 product.json 为准)。 - CLI 卸载路径可能整个坏掉:若所有扩展都报同一个 JS 错误(如 Trae EN 的
Cannot read properties of undefined (reading 'isProtectedExtension'),带不带--force都一样),说明 fork 改坏了卸载功能,不是单个扩展的问题。不要逐个重试——直接切换「注册表直改方案」(见标准流程 §3 的兜底分支)。