资讯动态

AutoGPT setup-repo 技能:一键初始化 Git worktree 并行开发环境的完整流程

发布时间:2026/9/7 3:21:27 来源:尧图企业网站定制
AutoGPT setup-repo 技能一键初始化 Git worktree 并行开发环境的完整流程【免费下载链接】AutoGPTAutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.项目地址: https://gitcode.com/GitHub_Trending/au/AutoGPT在 AutoGPT 平台的多智能体贡献工作流中同一仓库往往需要同时承载「主开发 PR 评审 多条并行功能分支」的多工作区需求。本文基于仓库内置的 Claude Code 技能 setup-repo/SKILL.md完整拆解它如何从一个全新克隆的仓库出发自动完成 worktree 布局识别、分支与 worktree 批量创建、.env环境文件级联复制、branchlet 配置同步以及依赖安装的八步流程。读完后你既能直接触发该技能也能手工照做出一套等价的并行开发环境。技能定位与元信息setup-repo是存放在 .claude/skills/setup-repo/SKILL.md 中的一个 Claude Code 技能skill其 YAML frontmatter 声明了触发条件与参数约定name: setup-repo description: Initialize a worktree-based repo layout for parallel development. Creates a main worktree, a reviews worktree for PR reviews, and N numbered work branches. Handles .env creation, dependency installation, and branchlet config. TRIGGER when user asks to set up the repo from scratch, initialize worktrees, bootstrap their dev environment, setup repo, setup worktrees ... user-invocable: true args: No arguments — interactive setup via prompts.要点有三无参数、交互式args声明为 No arguments — interactive setup via prompts即技能不接收命令行参数而是通过提问收集用户偏好触发语义明确description 中列出了 setup repo、setup worktrees、bootstrap dev environment 等触发短语且特别指出适用场景是刚克隆下来的仓库还没有兄弟 worktree目标产物固定一套由main主检出reviewsPR 评审branch1..branchN并行开发分支组成的 worktree 布局。从仓库的 .claude/settings.json 可以看到Agent 的 Bash 权限白名单中专门放开了git worktree:*和branchlet:*命令族这与本技能的执行方式是相互印证的技能的核心动作就是 worktree 管理。第一步识别仓库根并探测既有布局技能的第一步不是直接创建任何东西而是先确定三个关键变量并判断当前仓库是否已经处于 worktree 布局中ROOT$(git rev-parse --show-toplevel) REPO_NAME$(basename $ROOT) PARENT$(dirname $ROOT)随后通过统计「同父目录下的兄弟 worktree 数量」来判断是否已有布局而不是简单看目录名目录名可以随便取# Count worktrees that are siblings (live under $PARENT but arent $ROOT itself) SIBLING_COUNT$(git worktree list --porcelain 2/dev/null | grep ^worktree | grep -c $PARENT/ || true) if [ $SIBLING_COUNT -gt 1 ]; then echo INFO: Existing worktree layout detected at $PARENT ($SIBLING_COUNT worktrees) # Use $ROOT as-is; skip renaming/restructuring else echo INFO: Fresh clone detected, proceeding with setup fi这里的设计意图值得注意探测逻辑的目的是幂等。如果已经检测到多于 1 个兄弟 worktree技能会直接复用现有布局、跳过重命名/重构只有在全新克隆fresh clone时才走完整初始化路径。这保证技能可以被重复触发而不破坏已有环境。第二步交互式收集用户偏好技能通过AskUserQuestion向用户收集两个决定布局规模的参数需要多少个并行工作分支选项为 4、8、16 或自定义。它们会被命名为branch1到branchN基准分支base branch选哪个选项为origin/master、origin/dev或自定义。所有工作分支和reviews分支都从这个基准分支派生。这两个参数分别决定了后续循环中的$COUNT分支数量和base-branch派生起点是整个流程中仅有的两个用户输入。第三步与第四步批量创建分支和 worktree分支与 worktree 的创建逻辑见 SKILL.md 第 52–91 行遵循先存在则跳过的幂等原则cd $ROOT git fetch origin # 创建 reviews 分支已存在则跳过 if git show-ref --verify --quiet refs/heads/reviews; then echo INFO: Branch reviews already exists, skipping else git branch reviews base-branch fi # 创建编号工作分支已存在则跳过 for i in $(seq 1 $COUNT); do if git show-ref --verify --quiet refs/heads/branch$i; then echo INFO: Branch branch$i already exists, skipping else git branch branch$i base-branch fi doneworktree 的创建则将每个分支检出为主检出的兄弟目录if [ -d $PARENT/reviews ]; then echo INFO: Worktree $PARENT/reviews already exists, skipping else git worktree add $PARENT/reviews reviews fi for i in $(seq 1 $COUNT); do if [ -d $PARENT/branch$i ]; then echo INFO: Worktree $PARENT/branch$i already exists, skipping else git worktree add $PARENT/branch$i branch$i fi done分支侧用git show-ref --verify探测引用、worktree 侧用-d探测目录两套检查配合起来确保重复执行时已存在的分支/工作区只会被报告 skipping不会被重复创建或覆盖。第五步环境文件的级联复制策略这是整个技能中最容易踩坑、也最有实操价值的一步。技能明确要求不要假设 .env 文件存在Do NOT assume .env files exist并对每个 worktree 执行三级级联若源 worktree 存在.env→ 直接复制若只有.env.default或.env.example→ 复制为.env并提示 may need to edit it三者都不存在 → 警告用户并列出缺失的 env 文件路径。需要检查的三个位置与/worktree技能保持一致autogpt_platform/.envautogpt_platform/backend/.envautogpt_platform/frontend/.env完整实现见 SKILL.md 第 109–140 行SOURCE$ROOT WORKTREESreviews for i in $(seq 1 $COUNT); do WORKTREES$WORKTREES branch$i; done FOUND_ANY_ENV0 for wt in $WORKTREES; do TARGET$PARENT/$wt for envpath in autogpt_platform autogpt_platform/backend autogpt_platform/frontend; do if [ -f $SOURCE/$envpath/.env ]; then FOUND_ANY_ENV1 cp $SOURCE/$envpath/.env $TARGET/$envpath/.env elif [ -f $SOURCE/$envpath/.env.default ]; then FOUND_ANY_ENV1 cp $SOURCE/$envpath/.env.default $TARGET/$envpath/.env echo NOTE: $wt/$envpath/.env was created from .env.default — you may need to edit it elif [ -f $SOURCE/$envpath/.env.example ]; then FOUND_ANY_ENV1 cp $SOURCE/$envpath/.env.example $TARGET/$envpath/.env echo NOTE: $wt/$envpath/.env was created from .env.example — you may need to edit it else echo WARNING: No .env, .env.default, or .env.example found at $SOURCE/$envpath/ fi done done if [ $FOUND_ANY_ENV -eq 0 ]; then echo WARNING: No environment files or templates were found in the source worktree. # 用 AskUserQuestion 确认Continue setup without env files? # 用户拒绝则在此停止先让用户准备好 .env 文件 fi这一级联链在仓库里是能落到实处的当前仓库实际提供的模板文件正是 autogpt_platform/.env.default、autogpt_platform/backend/.env.default 和 autogpt_platform/frontend/.env.default。以 backend 的模板为例其中包含了必须修改的凭据占位符例如DB_USERpostgres DB_PASSyour-super-secret-and-long-postgres-password DB_HOSTlocalhost DB_SCHEMAplatform DATABASE_URLpostgresql://${DB_USER}:${DB_PASS}${DB_HOST}:${DB_PORT}/${DB_NAME}?schema${DB_SCHEMA}connect_timeout${DB_CONNECT_TIMEOUT}而顶层 autogpt_platform/.env.default 的注释也明确提示这些值对应 docker-compose.yml 中db服务硬编码的凭据改动时需同步docker-compose.platform.yml与各.env(.default)文件。frontend 模板则包含BETTER_AUTH_SECRET默认值为 dev-only注释标注生产环境必须覆盖等配置。这也解释了技能为何在从模板生成.env后总要打印 you may need to edit it —— 默认模板里的密码、密钥都是占位值。技能文档中还特别注明这段 env 复制逻辑是刻意与/worktree技能 的实现对齐的若更新此处的路径列表或回退逻辑请同步更新/worktree。查看 worktree/SKILL.md 可以印证它对单个 worktree 执行同样的.env→.env.default两级回退路径列表完全一致。第六步复制 branchlet 配置if [ -f $ROOT/.branchlet.json ]; then for wt in $WORKTREES; do cp $ROOT/.branchlet.json $PARENT/$wt/.branchlet.json done fi目的是让 branchlet一个 worktree 管理工具能在各子工作区中继续管理更下层的子 worktree。仓库根目录确实存在 .branchlet.json其内容展示了该配置的完整能力面worktreeCopyPatterns自动拷贝.env、.env.local、autogpt_platform/frontend/.auth/**、.claude/settings.local.json、.vscode/settings.json等worktreeCopyIgnores排除node_modules、.next、__pycache__、各类缓存目录以及**/.env.default、**/.claude/skills/**技能本体随 git 走不参与拷贝postCreateCmd一条命令链完成「无本地.env时从.env.default播种 →autogpt_libs的poetry install→backend的poetry install poetry run prisma generate→ 前端pnpm install pnpm generate:api并带 Node 版本检测必要时经 nvm/mise/fnm/volta 切换」——与 setup-repo 技能的依赖安装步骤下一节高度呼应deleteBranchWithWorktree: false删除 worktree 时不联动删除分支保护开发成果。第七步逐工作区顺序安装依赖依赖安装在所有 worktree 上串行执行每个 worktree 内部按三层技术栈依次进行for wt in $WORKTREES; do TARGET$PARENT/$wt echo Installing deps for $wt (cd $TARGET/autogpt_platform/autogpt_libs poetry install) (cd $TARGET/autogpt_platform/backend poetry install poetry run prisma generate) (cd $TARGET/autogpt_platform/frontend pnpm install) echo Done: $wt || echo FAILED: $wt done三条安装链对应 AutoGPT 平台的三层结构见 AGENTS.md 的目录说明工作区路径命令对应组件autogpt_platform/autogpt_libspoetry install共享 Python 库autogpt_platform/backendpoetry install poetry run prisma generateFastAPI 后端含 Prisma 客户端生成autogpt_platform/frontendpnpm installNext.js TypeScript 前端技能文档对这一步有一句坦诚的性能提示This is slow. Run in background if possible and notify when complete.这一步很慢尽量放后台执行并在完成后通知。因为每个 worktree 都要独立安装全量 Python 依赖并重新生成 Prisma 客户端N 个 worktree 意味着 N 倍的安装耗时串联则保证前一阶段失败时不会盲目继续并以 Done / FAILED 标记给出清晰的成功/失败信号。第八步验证与汇报最后一步只做验证与总结汇报git worktree list并向用户总结三类信息创建了哪些 worktree、每个 env 文件是复制自.env从默认模板创建还是缺失、过程中出现的任何警告或错误。这使汇报内容与第五步的执行结果严格对应便于用户判断哪些工作区还需要手工补配置。最终目录布局完成全部八步后父目录下形成如下布局parent/ main/ # 主检出已存在 reviews/ # PR 评审 worktree branch1/ # 工作分支 1 branch2/ # 工作分支 2 ... branchN/ # 工作分支 N每个兄弟目录都是独立分支的完整可运行工作区分支互不干扰、依赖独立安装、环境文件各自持有这是并行开发多人或多 Agent 同时改不同功能的核心价值所在。与仓库内其他技能的协作关系从源码结构看setup-repo并非孤立存在而是 AutoGPT 平台 Agent 工具链中的初始化层可以从两个相邻技能中得到印证/worktree 技能单点补充当布局已建好、只需临时追加一个独立 worktree 时例如按AutoGPTN编号自动取下一个可用名用它即可。它复用与 setup-repo 相同的环境文件回退逻辑还额外给出了运行应用时的端口清理提示后端占用 8001、8002、8003、8005、8006、8007、8008 端口——这对多 worktree 同时起服务时的端口冲突问题很实用/orchestrate 技能上层调度在 tmux 窗口中管理一支 Claude Code Agent 编队每个窗口对应一个 worktree。它内置的find-spare.sh和capacity.sh脚本负责列出空闲 worktree与打印可用/占用情况——这些空闲 worktree正是 setup-repo 批量创建出的branch1..branchN。也就是说setup-repo 负责把 worktree 池子建满orchestrate 负责调度使用。三者组合起来形成了完整的链路setup-repo 建池 → worktree 按需补建 → orchestrate 分发 Agent。要点小结该技能是幂等的通过git worktree list --porcelain统计兄弟数探测既有布局分支侧git show-ref、目录侧-d双重判重重复执行只会跳过而非破坏用户只需回答两个问题分支数量、基准分支其余全部自动化环境文件遵循.env→.env.default→.env.example三级回退覆盖autogpt_platform、backend、frontend三个位置且与/worktree技能保持同步约定模板文件在当前仓库中真实存在见 backend/.env.default 等其中的占位密码与密钥在投入使用前必须替换.branchlet.json的复制使 branchlet 可在每个子工作区继续管理子 worktree其postCreateCmd甚至内建了与技能第七步等价的依赖安装链依赖安装是耗时最长的一步技能明确建议后台执行验证环节以git worktree list为准并逐项汇报 env 文件的来源。【免费下载链接】AutoGPTAutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.项目地址: https://gitcode.com/GitHub_Trending/au/AutoGPT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价