分支、重跑与 worktree
让一次对话沿两个方向展开、重新执行某一轮,并让并行的智能体安全地修改同一个仓库。
分叉一次对话#
对话记录中的任何一条消息都可以作为新分支的起点。分支会继承到该处为止的完整历史,你写下的内容成为它的第一轮。因此可以尝试第二种做法,既不放弃第一种,也不必重述背景。
- 选定分岔点
通常是你现在开始怀疑的那个决定之前的最后一条消息。在该消息上选择「从此分支」。
- 把另一种做法写成分支的第一条指令
例如:「这次改用队列实现,不用定时任务。」分支会创建一个真正独立的会话,原会话继续运行,历史也完整保留。
- 对比之后保留一个
两个分支都是普通会话,产出的也是普通改动。分别阅读,保留更好的一个,删除另一个。分支上会标明它来自哪个会话的哪一轮,母会话中也会列出它的所有分支。
重新执行与修改指令#
有时你需要的不是分支,而是把同一个问题再问一次。重跑会重新执行某一轮,这是判断某个结果是否出于偶然、或者换个模型试一试的最低成本方式。修改自己发出的那条指令,则是去修正产生了不理想结果的输入,而不是与结果反复交涉。
worktree:多个智能体同时修改一个仓库#
两个智能体修改同一份检出,会造成状态损坏和无法审阅的改动。因此会话可以运行在独立的 Git worktree 中:一份真实的检出,处于独立分支,由智能体创建并由 Mirasim 记录。这样每个智能体都像独占该项目一样工作。
worktree 是 Git 自带的机制,不是 Mirasim 新造的概念,因此不会引入任何不透明的部分:`git status`、`git diff` 和你自己的编辑器都照常可用。把某个窗格的成果并回主线就是一次普通合并,不需要则是一次普通的删除分支。
Git 面板一次查看所有工作区:各自所处的分支、改动了多少文件、相对上游领先或落后多少。判断并行的工作是否已经偏离,看这一屏。(该控件不在当前这一屏上)
这块面板上的按钮可以直接点,点着看看。
- 在输入区开启 worktree
该开关位于工作区和分支选择项旁边。隔离是创建会话时做出的决定,不是之后再执行的一次迁移。
- 指定基础分支
智能体会先切换到该分支,或从它创建 worktree。让并行的工作都基于同一个已确认可用的提交,合并才会一直平淡。
- 按顺序合并,先合改动最小的
先合入改动小、机械性强的那条分支,再把较大的一条 rebase 到它之上。两个智能体改动了同一个文件,属于普通冲突,按常规方式解决即可。
- 明确清理
删除会话时会询问是否一并移除其 worktree。只要仍有未提交的改动,Git 就会拒绝移除。这项拒绝是有意的设计,请先提交或丢弃这些改动。
这一页有错或缺了什么? 告诉我们