用途
该技能用于在开始功能开发或执行实施计划时,建立一个与当前工作区隔离的独立工作环境。通过使用 Git Worktrees,可以确保新功能的开发不会影响当前分支的稳定性,同时允许多个分支并行工作。
核心原则
- 先检测,后创建:在创建任何工作区之前,必须先检查当前是否已经处于一个隔离的工作区中。
- 原生工具优先:优先使用平台原生的 worktree 工具(如
EnterWorktree、WorktreeCreate、/worktree命令或--worktree标志)。只有当没有原生工具可用时,才回退到手动使用git worktree命令。 - 不要与框架对抗:避免绕过框架的 worktree 管理机制,否则会产生框架无法识别和管理的“幽灵状态”。
主要能力
- 检测现有隔离:通过比较 Git 目录和公共目录,判断当前是否已经在链接的工作树中。同时需要排除 Git 子模块的情况,子模块会被视为普通仓库。
- 创建隔离工作区:在获得用户同意后,优先使用原生 worktree 工具;若无原生工具,则使用
git worktree add命令手动创建。目录选择遵循用户指定 > 项目本地已有目录(.worktrees优先于worktrees)> 默认.worktrees/的顺序。 - 安全验证:在项目本地创建 worktree 目录前,必须验证该目录已在
.gitignore中被忽略,防止工作树内容被意外提交到仓库。如果未被忽略,则需要添加并提交.gitignore的修改。 - 项目初始化:自动检测项目类型并安装依赖,支持 Node.js(
npm install)、Rust(cargo build)、Python(pip install -r requirements.txt或poetry install)和 Go(go mod download)。 - 基线验证:运行项目对应的测试命令(如
npm test、cargo test、pytest、go test ./...),确保工作区从干净的状态开始。如果测试失败,会报告失败情况并询问用户是否继续或进行调查。
使用方式
- 开始前:代理需要宣布“我正在使用 using-git-worktrees 技能来设置隔离工作区。”
- 步骤 0:检测现有隔离。如果已在链接的工作树中,则跳过创建步骤,直接进入项目设置;如果为普通仓库,则需要询问用户是否同意创建隔离工作树(除非用户已声明偏好)。
- 步骤 1:创建隔离工作区。先尝试原生 worktree 工具;如果没有,再使用
git worktree手动创建。如果因沙箱权限问题导致创建失败,则告知用户并在当前目录继续工作。 - 步骤 2:运行项目对应的依赖安装命令。
- 步骤 3:运行基线测试。测试通过后报告工作区已准备就绪;测试失败则报告并询问用户。
- 报告:输出工作区路径、测试通过数量、是否准备就绪等信息。
适用场景
- 启动需要与当前工作区隔离的功能开发。
- 在执行实施计划之前,确保有一个独立的工作环境。
- 需要在多个分支之间并行工作,而不互相干扰。
限制
- 如果用户拒绝创建隔离工作区,则会在当前位置继续工作。
- 如果沙箱环境阻止了
git worktree add(权限错误),则无法创建工作树,只能在当前目录工作。 - 如果项目没有
package.json、Cargo.toml等文件(或对应的语言配置文件),则跳过依赖安装步骤。 - 基线测试失败时,是否继续由用户决定,而不是自动继续。