如何让 AI Coding Agent 使用 Git worktree

Git worktree 让每个 AI Coding Agent 拥有自己的工作目录和分支。本文说明命令、常见问题,以及 HiFox 如何为每条任务自动准备隔离的 worktree。

Jamie

Jamie

2026-10-26

如何让 AI Coding Agent 使用 Git worktree

把两个 AI Coding Agent 指向同一个检出目录,它们迟早会毁掉一个下午。一个改写另一个正在编辑的文件。一个把另一个脚下的分支切走。两个都对同一份 node_modules 执行 npm install,留下谁也没写过的 lockfile。失败一开始很安静,然后你要在两个 Agent 都解释不了的混乱里二分排查。

Git worktree 是标准修法。worktree 让每个 Agent 在同一个仓库上拥有自己的工作目录和自己检出的分支,并行工作不再互相碰撞。这篇指南说明真实会用到的命令、实际会咬人的问题,以及很少有人提到的清理纪律。然后说明手工 worktree 在哪里停止扩展,以及 HiFox 怎样让每条任务自动使用自己的 worktree,把结果回到同一条共享记录,而不是散落在各个终端里。

如果只跑一个 Agent,现在还不需要这些。一旦跑两个,隔离就不再可选。

先看结论

Git worktree 是挂在同一个仓库上的第二个工作目录,有自己的分支和索引。给每个 AI Coding Agent 自己的 worktree,它们就可以并行编辑、构建和测试,而不会互相覆盖或争夺当前分支。命令很简单。增长的是操作成本:每个 worktree 的安装、清理、磁盘和协调。HiFox 把这个成本接过来,为每条任务自动准备隔离的 worktree,并把每个结果交回任务供人审查。

为什么一个检出目录装不下两个 Agent

普通的 git checkout 正好有一个工作目录、一个索引和一个 HEAD。一个人做一件事时没问题。两个 Agent 同时工作时它会失效,因为这三样都是共享状态。

想象同一个仓库上的两个 Agent。Agent A 正在名为 auth-refactor 的分支上重构认证模块。Agent B 被要求修复日志问题,并执行 git checkout -b fix-logging。这一条命令会移动整个检出目录的 HEAD。Agent A 未提交的改动现在位于错误的分支上,下一次提交会落到错误的地方,构建也会因为要花二十分钟「调试」的原因失败。没有崩溃。状态只是悄悄错了。

文件上更糟。两个 Agent 共享一个工作目录。Agent B 重新生成配置文件或重新运行格式化工具时,会改掉 Agent A 正在使用的文件。

Git worktree 到底是什么

值得记住的定义是:

Git worktree 是连接到同一个仓库的额外工作目录。它有自己检出的分支、索引和 HEAD,并共享一个对象数据库。

最后一句是关键。worktree 不是克隆。克隆会复制整个对象库:每个提交、每个 blob、每个 tag 都复制到第二个 .git。worktree 共享一个对象库,只增加一个轻量的第二个工作目录。提交一旦落下来,每个 worktree 都能看见,因为下面只有一份历史。每个 worktree 不同的是检出:哪个分支被检出、暂存了什么、磁盘上哪些文件是脏的。

对 Agent,这正好对应问题。每个 Agent 得到一个 worktree。每个 worktree 有自己的分支和自己的文件。它们不能互相覆盖,因为它们不写同一个目录。

实际会用到的命令

从一个普通仓库开始。下面的命令都在仓库里面执行。

用新分支创建 worktree。这是最常用的一条:

git worktree add -b fix-logging ../myproject-fix-logging main

它会在 ../myproject-fix-logging 创建目录,从 main 建立新分支 fix-logging,并在那里检出。把 Agent 指向这个目录,它就有一个干净、隔离的工作位置。

为已有分支创建 worktree:

git worktree add ../myproject-auth auth-refactor

列出当前打开的 worktree:

git worktree list
/Users/you/myproject              9f3c1a2 [main]
/Users/you/myproject-fix-logging  9f3c1a2 [fix-logging]
/Users/you/myproject-auth         3b7e0d4 [auth-refactor]

每个 worktree 一行,包含路径、检出的提交和分支。Agent 一多,这张列表就是你的地图。

实际会咬人的问题

每个 worktree 都要自己的依赖安装和环境文件。对象库是共享的,node_modules 和构建缓存不是。

worktree 应该放在主检出目录旁边,不要嵌套在里面。嵌套会干扰遍历目录的工具,也会把忽略规则搞复杂。

删除前先提交或暂存。--force 是你确定时才用的,不是默认动作。定期执行 git worktree prune,并查看 git worktree list,避免留下失效条目。

不要用自己的脚本删除 Runtime 自己的嵌套缓存,例如 ~/.claude/worktrees。让 Runtime 管理它。

脚本在哪里停止扩展

命令可以写进脚本。每个 worktree 的安装、环境、清理、磁盘、谁在哪个目录,以及结果怎样回到同一个人手里,会随着 Agent 数量增长。脚本能创建目录,却不会自然变成一块看得见状态的看板。并行运行多个 Claude Code、用看板代替手工脚本、派发第一条任务,以及 Agent 编排,都是隔离做完之后才出现的问题。

HiFox 怎样让每条任务使用自己的 worktree

HiFox 是 Agent 的指挥和管理平台。它不替代 Claude Code、Codex 或其他 Agent 已经在使用的执行工具。它在周围加上共享的任务、电脑、上下文和审查。worktree 隔离就做在这一层里,所以不用再手工维护。

机制很直接。每条任务得到一个隔离目录。对有仓库的工作,HiFox 根据缓存的仓库数据为每次运行准备新的 worktree,因此多条任务可以针对同一份源代码工作,却从不写入同一个检出目录。你不用执行 git worktree add,也不用自己设计命名、清理任务或映射文件。指派一条任务时,隔离已经在那里。

手工 worktree 和管理层

问题手工 git worktreeHiFox 管理的 worktree
每个 Agent 的隔离每次运行自己执行 git worktree add每条任务自动得到新的 worktree
每个 worktree 的准备自己写安装和环境脚本作为任务准备的一部分处理
清理自己负责,容易忘记由系统管理,安全清理不会碰受保护的缓存
哪个 Agent 在哪里自己维护映射文件显示在任务上,没有旁路文件
结果和 diff留在各个终端里回到任务供审查
任务占用和锁自己写锁任务从共享计划中认领
磁盘协调手工在已连接的电脑之间管理

一个人跑一两个 Agent、希望完全控制时,用手工 worktree。数量和风险上升后,管理层才值得使用。

人与 Agent 的边界仍然成立

隔离改变的是工作发生在哪里,不是谁做决定。worktree 让 Agent 可以并行研究、执行、测试和汇报,而不会碰撞。人仍然定方向、授予权限并接受结果。需要团队判断的地方,自动化就停下来。每个 Agent 一个新的 worktree,让这条边界可以执行:每个 Agent 的工作以自己分支上可审查的变更到来,而不是混进共享检出目录、无法追踪的编辑。你审查的是分支,不是混乱。Agent 编程讲的是日常工作方式,HiFox 是什么讲的是这层管理平台,两者都不是再做一个写代码的工具。

继续手工时可以遵循的做法

  • 用分支或任务给 worktree 目录命名,不要用序号。myproject-auth-refactor 能说明它是什么,myproject-wt3 不能。
  • 把 worktree 放在主检出目录旁边,不要嵌套进去。
  • 把每个 worktree 的准备工作写成 Agent 首先运行的一个脚本,让新目录一步就能运行。
  • 按计划清理,而不是想起来才清理。每天执行 git worktree prune,并查看 git worktree list。
  • 不要用自己的脚本删除 Runtime 的嵌套缓存。
  • 移除前先提交或暂存。--force 只在你确定时使用。

结论

  • 一个检出目录只有一个分支、一个索引和一个 HEAD,装不下两个同时工作的 Agent。
  • worktree 在同一份共享历史上增加第二个工作目录,让每个 Agent 有自己的分支和文件。
  • add、list、remove、prune,以及确实需要时的 --force,这些命令很简单。
  • 增长的是操作成本:安装、磁盘、清理、协调和结果收集。
  • 一两个 Agent 适合手工 worktree;数量和风险上升后,管理层才有位置。
  • HiFox 为每条任务自动准备新的 worktree,并把每个结果交回任务供人审查。

先学会手工命令。它们会告诉你上面任何一层实际在做什么。当记账本身变成工作时,再把隔离交给管理层。

Explore more

你关掉的 Codex 数据共享,可能被悄悄重新打开

你关掉的 Codex 数据共享,可能被悄悄重新打开

OpenAI 尚未确认 Codex 数据共享开关为何被重新打开。本文拆开个人账号、企业工作区和 API 的数据边界,给出一套可截图、可复核、可处置的团队检查流程。

2026-11-05

OpenAI 收购 Pierre:Codex 补代码审阅

OpenAI 收购 Pierre:Codex 补代码审阅

OpenAI 收购 Pierre 指向 Codex 的代码理解与审阅工作流。公告确认了方向,却未公布整合时间表。团队现在可从任务验收、运行证据和独立审阅入手,检验 Agent 写完代码后能否被可靠接手。

2026-11-05

DeepSeek Search 与 Fetch API 上线:每千次成功请求各 0.75 美元

DeepSeek Search 与 Fetch API 上线:每千次成功请求各 0.75 美元

DeepSeek 在官方 API 文档中新增 Search 与 Fetch 两个独立接口:Search 用于网页搜索,Fetch 用于抓取网页内容。两项能力都按成功请求计费,每 1000 次分别收费 0.75 美元。对正在搭建 RAG、研究…

2026-11-05