术语表

什么是 Worktree 隔离?

TL;DR

Worktree 隔离是指每个 AI 智能体都在自己的文件夹中、在自己的分支上拥有一份独立的代码副本。这样多个智能体就能同时编辑相同的文件而不会互相覆盖。你的主检出目录在合并之前不会被动到。Pane 会为每个 Pane 自动设置好这一切。

Worktree 隔离是指每个 AI 智能体都在自己的文件夹中、在自己的分支上使用一份独立的代码副本。这样多个智能体就能同时修改相同的文件而不会互相覆盖,你的主检出目录在合并之前也不会被动到。

问题

共享一个文件夹的智能体迟早会互相覆盖。

你让智能体 A 重写登录页,让智能体 B 添加注册流程。两者都需要修改 auth.ts。在同一个共享文件夹里,智能体 B 保存了自己的版本,悄悄替换掉了智能体 A 的修改。两个智能体都没有察觉,你要到后来才发现。

所以让多个智能体在同一个目录里工作是在赌运气。在两个智能体碰到同一个文件之前一切正常,一旦碰到,就会有人的工作丢失。

解决办法

每个智能体一个 worktree:文件和分支独立,历史共享。

给每个智能体一个自己的 git worktree:一个独立的文件夹,带有独立的分支,共享同一份历史。智能体 A 在一个 worktree 中工作,智能体 B 在另一个中工作,两者都能编辑 auth.ts,因为它们编辑的是不同的副本。

my-project/                 ← main branch, untouched
my-project/worktrees/
  ├─ login-rewrite/         ← agent A, branch login-rewrite
  └─ signup-flow/           ← agent B, branch signup-flow

哪些内容隔离,哪些内容共用

文件、分支和 shell 是独立的。历史、远程仓库和 git 对象是共享的。

隔离共用
文件和未提交的修改Git 历史和提交
分支远程仓库(origin)
shell 状态和环境变量Git 配置
工作目录对象存储,可节省磁盘空间

Pane 如何完成隔离

Pane 会自动为每个 Pane 设置和清理 worktree。

创建 Pane 时,Pane 会交给它一个预先准备好的 worktree,为它创建新分支,复制你的 .env 文件、智能体设置和 node_modules,然后在那里启动智能体。归档 Pane 时,Pane 会检查有没有未保存的工作,再删除 worktree。你从来不用自己输入 git worktree add。

隔离覆盖不到的地方

worktree 让智能体的文件彼此分开,但不会限制智能体能做什么。

worktree 是一个文件夹,不是沙盒。智能体仍以你的用户权限运行,所以一个智能体可以通过路径读取另一个 worktree 的文件、访问网络,或修改仓库之外的东西。实际上智能体通常会待在自己的工作文件夹里,但如果你需要严格限制,请在容器或 VM 中运行它们。

有些东西在 git 之外是共享的:应用使用的数据库、开发服务器端口、全局包缓存。Pane 会在 PANE_PORT 中给每个 Pane 分配一段独立的端口;对于数据库,可以用初始化脚本或能为每个 worktree 创建独立数据库的工具。

来源

勘误
如果这里有任何错误或过时的内容,请告诉我们,我们会修正并更新顶部的日期。 在 GitHub 上提交 issue
来源

常见问题

或
下载*
Windows SmartScreen 警告Pane 尚未签名,直接下载时可能会出现 SmartScreen 警告。 Pane 完全开源,你可以审查代码,也可以自己从源码构建。1. 点击“更多信息”2. 点击“仍要运行”3. 继续安装用 PowerShell 安装会直接下载官方版本,避开大多数浏览器下载限制。npm 全局安装
把它粘贴到 PowerShell 中。Linux

作者 Parsa Khazaeepoul,Pane 联合创始人。 .