SuperAPI AI 工具集

using-git-worktrees

编程与开发

查看项目

更新于 10-15 10:24

技能介绍

用途

该技能用于在开始功能开发或执行实施计划时,建立一个与当前工作区隔离的独立工作环境。通过使用 Git Worktrees,可以确保新功能的开发不会影响当前分支的稳定性,同时允许多个分支并行工作。

核心原则

  • 先检测,后创建:在创建任何工作区之前,必须先检查当前是否已经处于一个隔离的工作区中。
  • 原生工具优先:优先使用平台原生的 worktree 工具(如 EnterWorktree、WorktreeCreate、/worktree 命令或 --worktree 标志)。只有当没有原生工具可用时,才回退到手动使用 git worktree 命令。
  • 不要与框架对抗:避免绕过框架的 worktree 管理机制,否则会产生框架无法识别和管理的“幽灵状态”。

主要能力

  1. 检测现有隔离:通过比较 Git 目录和公共目录,判断当前是否已经在链接的工作树中。同时需要排除 Git 子模块的情况,子模块会被视为普通仓库。
  2. 创建隔离工作区:在获得用户同意后,优先使用原生 worktree 工具;若无原生工具,则使用 git worktree add 命令手动创建。目录选择遵循用户指定 > 项目本地已有目录(.worktrees 优先于 worktrees)> 默认 .worktrees/ 的顺序。
  3. 安全验证:在项目本地创建 worktree 目录前,必须验证该目录已在 .gitignore 中被忽略,防止工作树内容被意外提交到仓库。如果未被忽略,则需要添加并提交 .gitignore 的修改。
  4. 项目初始化:自动检测项目类型并安装依赖,支持 Node.js(npm install)、Rust(cargo build)、Python(pip install -r requirements.txt 或 poetry install)和 Go(go mod download)。
  5. 基线验证:运行项目对应的测试命令(如 npm test、cargo test、pytest、go test ./...),确保工作区从干净的状态开始。如果测试失败,会报告失败情况并询问用户是否继续或进行调查。

使用方式

  1. 开始前:代理需要宣布“我正在使用 using-git-worktrees 技能来设置隔离工作区。”
  2. 步骤 0:检测现有隔离。如果已在链接的工作树中,则跳过创建步骤,直接进入项目设置;如果为普通仓库,则需要询问用户是否同意创建隔离工作树(除非用户已声明偏好)。
  3. 步骤 1:创建隔离工作区。先尝试原生 worktree 工具;如果没有,再使用 git worktree 手动创建。如果因沙箱权限问题导致创建失败,则告知用户并在当前目录继续工作。
  4. 步骤 2:运行项目对应的依赖安装命令。
  5. 步骤 3:运行基线测试。测试通过后报告工作区已准备就绪;测试失败则报告并询问用户。
  6. 报告:输出工作区路径、测试通过数量、是否准备就绪等信息。

适用场景

  • 启动需要与当前工作区隔离的功能开发。
  • 在执行实施计划之前,确保有一个独立的工作环境。
  • 需要在多个分支之间并行工作,而不互相干扰。

限制

  • 如果用户拒绝创建隔离工作区,则会在当前位置继续工作。
  • 如果沙箱环境阻止了 git worktree add(权限错误),则无法创建工作树,只能在当前目录工作。
  • 如果项目没有 package.json、Cargo.toml 等文件(或对应的语言配置文件),则跳过依赖安装步骤。
  • 基线测试失败时,是否继续由用户决定,而不是自动继续。