Git 与工作树
git 页面、在任意窗格切换分支,以及让智能体互不干扰的每会话工作树。
git 页面#
⇧⌘G 打开一个类似 GitHub Desktop 的页面:
- 切换仓库与分支。
- fetch(⇧⌘T)、pull、push(⌘P)、刷新(⌘R)。
- 逐文件查看差异,暂存你选中的内容并提交(⌘↩)。
- 浏览历史,合并分支。
Agentty 使用的是你自己的 git,连同你的配置与凭据。所有命令都以非交互方式运行,因此不会卡在你看不见的提示上 —— 如果某次 push 需要凭据助手无法提供的信息,它会带着错误信息失败,而不是一直悬着。
从窗格直接操作#
点击任意窗格标题中的分支名,就能在不离开终端的情况下切换分支、pull、push 或复制名称。
每个会话一个工作树#
当你在已有会话正在工作的项目中再开一个 AI 会话时,Agentty 会在从项目默认分支切出的新分支的独立 git 工作树中启动它。两个智能体不会改到同一批文件。
- 工作树位于
~/.agentty/worktrees/下,分支名为agentty/<名称>。 - 若你希望所有会话都在同一个文件夹,可在设置 → 常规中关闭。
工作原理#
Agentty 以新分支 agentty/<名称> 执行 git worktree add,基准是项目的默认分支,而不是项目文件夹当前检出的分支 —— 这样一个会话就不会建立在另一个会话尚未合并的工作之上。
工作树创建在项目之外的 ~/.agentty/worktrees/<项目>-<路径哈希>/<名称>/。不放进项目文件夹很重要:如果代码副本在里面,所有搜索、文件监视和构建都会一并遍历那份副本。
Agentty 只会删除该目录下的工作树。你自己创建的工作树只会被列出,不会被动。
文件面板#
⌥⌘B 把项目树停靠在终端旁。它还会列出项目的每一个工作树、谁在其中工作以及那里改了什么。
右键点击某个工作树,可在其中打开终端、复制路径,或(合并后)连同分支一起移除。
并行任务#
让智能体自己拆分工作即可 —— “并行做 A、B、C”。它会向 Agentty 提出请求,你确认一次,每个任务就在各自的分屏窗格和独立工作树中开始。
每一次这样的请求都要你确认;智能体无法自行开启窗格。
文件编辑器#
在文件面板中点击文件,它会在终端旁打开:常见语言的语法高亮、撤销与重做、⌘S 保存,以及用你已安装的格式化工具(Prettier、google-java-format、ktlint、rustfmt、gofmt、Black)整理的 ⇧⌥F。
智能体改动过的文件会自动重新加载。在编辑器中打开会把文件交给 VS Code、Cursor 或系统编辑器。文件只会被读写,绝不会被执行。