多个 Agent 并行时,为什么不会改到同一份文件

每次任务运行在已连接的电脑上有自己的隔离目录。带仓库的运行可以各自准备 git worktree。HiFox 不会自动合并,接受留在人这里。

Jamie

Jamie

2026-10-27

多个 Agent 并行时,为什么不会改到同一份文件

在同一份检出里跑两个编程 Agent,一小时之内你就会碰到那种失败。一个 Agent 切分支的时候,另一个正在改文件。暂存的变更掉进一个不属于它们的提交。测试对着另一个 Agent 改到一半的文件通过了。这些都不是模型的错。Git 工作树是共享的可变状态。两个进程在没有协调的情况下改共享状态,最终会把它改坏。

标准补救众所周知:给每个 Agent 自己的工作树。Git worktree 让一个仓库同时服务多个检出目录,所以并行的分支永远不会在磁盘上碰到同一批文件。很多团队用手写脚本做这件事。用 git worktree 跑 AI 编程 Agent 那篇走的就是这套自己搭的办法。

这篇讲的是另一条路:隔离、目录准备、并发上限和清理,由平台来做,而不是由你的 shell 脚本。

先说结论

HiFox 让 AI Agent 并行、又不产生工作区互相覆盖,靠的是在已连接的电脑上给每次任务运行自己的隔离目录。那台电脑上的本地服务接收每一次排队的运行,准备任务目录(带仓库的工作,每次运行一份单独的 git worktree),启动选定的运行时,并把进度、轨迹事件和结果流回任务。Agent 和电脑上的并发上限,封住同时执行多少次运行。没有东西会自己合并:结果回到任务上,人审查变更,并决定合并和发布。Agent 从不共享工作树,所以并行的任务改不了彼此的变更。

HiFox 要挡住的那种失败

把 Agent 共享一份检出时到底坏在哪里说精确,是有帮助的。因为每一种症状都对应修复里的一块。

分支状态对每个工作树是全局的。所以 Agent A 检出自己的分支时,Agent B 的文件会在运行中途在它脚下变掉。索引也是全局的,所以 git add 和 git commit 会把不同任务的工作交织进去。未跟踪状态会撞上:一次运行的构建产物和依赖安装,会污染另一次运行的测试结果。清理债还会累积,因为为了躲开前三个问题而临时复制的每一份仓库,都会留在磁盘上,直到有人想起它存在。

一个共享目录,永远只能安全地跑一个 Agent。如果你在用 tmux 窗格和纪律硬撑,多个 Claude Code 并行那篇讲的是这个天花板为什么来得这么快。那篇中文还没发布,这里先不放链接。

执行栈:Agent、电脑、运行时、任务

HiFox 不替代 Claude Code、Codex 或其他执行工具。它在团队已经在用的工具外面,加上共享任务、电脑、上下文、控制和审查。这个位置决定了并行执行怎么工作,因为 HiFox 的工作是协调运行,不是写代码。

四个角色分担工作,每个正好做一件事:

  • Agent 定义工作应该怎么处理:指令、技能、仓库和运行设置。Agent 不是执行主机。
  • 电脑提供主机和本地资源:本地机器、远程服务器、容器或支持的云主机。怎么连接,是电脑那篇的内容。那篇中文还没发布,这里先不放链接。
  • 运行时执行真正的 Agent 会话。它是装在那台电脑上的具体工具,例如 Claude Code、Codex 或 Gemini CLI。
  • 任务仍然是团队的共享记录:目标、状态、讨论、执行轨迹和结果。

把它们串起来的,是电脑上一个小的本地服务。它注册电脑、识别已安装的运行时、接收排队的运行、为每次运行准备任务目录、启动运行时,并把结果报回去。它主动向服务器发起连接,所以典型安装不需要入站端口。

这个分开,才让并行变得可处理。因为工作目录是本地服务按每次运行准备的,不是 Agent 选的。两个 Agent 被派到两条任务上,可以在同一台电脑上对准同一个仓库,又永远看不见彼此的文件。Agent 怎么配置,是另一篇的内容。那篇中文还没发布,这里先不放链接。

一次运行开始时发生什么

把任务派给 Agent,并把它移出待办,HiFox 会检查执行是否就绪,把一次合格的运行排进队列,并派到选定的电脑。从这里开始由本地服务接手。运行时开始之前,它可能要等并发容量,准备一个隔离的临时目录或等待一个空闲的指定目录,拉取配置好的仓库,投射允许的环境变量,并构造运行时的调用。

然后运行时才启动。运行经过明确的状态:排队、已派出、等待本地目录、运行中,最后是已完成、失败或已取消。这些状态出现在任务的执行日志里。所以「为什么还什么都没发生」有一个可以检查的答案,而不是猜测。被并发上限按在排队里的运行,和停在等待本地目录的运行,看起来不一样。这个差别告诉你该拧哪一个旋钮。

注意缺了什么:没有任何一步是 Agent 决定在哪里跑。Agent 带来指令。基础设施带来隔离。

隔离的 worktree:临时目录模式怎么工作

Agent 支持两种工作目录模式。为并行工作准备的是临时目录模式。每条任务有自己的隔离目录。带仓库的工作,本地服务可以从缓存的仓库数据,为每次运行准备一份单独的 git worktree。

这一句话就承载了整套防冲突的故事。worktree 给每次运行自己的检出目录和自己的分支状态,同时共享底层的仓库对象。上面四种失败按构造消失:没有共享的分支指针,没有共享的索引,没有共享的构建产物,而且目录以后可以由平台清理。因为 worktree 来自缓存数据,而不是一次全新克隆,启动成本保持合理。不过一次运行仍然可能需要网络来刷新仓库。

文档对何时使用说得很直接:并行改代码,以及几条任务可能同时改同一套代码库时,推荐临时目录模式。

有一条边界值得说清楚:隔离防止的是工作树碰撞,不是语义冲突。如果两条任务都重写同一个函数,两次运行都会在各自的 worktree 里干净地完成,人仍然要在审查时调和重叠。对这个的修复是把任务的范围分开,让它们不要在同一个下午瞄准同一段代码。那是计划决定,不是基础设施决定。

什么时候隔离是错的选择:指定目录模式

第二种模式存在,是因为每次运行一份新目录并不是免费的。指定目录模式下,Agent 在它的目录池里一个已配置的本地绝对路径中运行,复用已经在那里的仓库、依赖和缓存。它只在本地电脑上可用。

这个交换有一个硬后果:一个指定目录一次只服务一次运行。每个已配置的目录都忙时,下一次运行就等。一个必须在指定目录模式下同时跑几条任务的 Agent,目录池里需要多个目录。

临时目录模式指定目录模式
每次运行的目录新的隔离目录;带仓库的工作用 worktree目录池里一个已配置的绝对路径
并行安全运行碰不到彼此的文件每个目录一次只跑一个
启动成本每次运行从缓存的仓库数据准备目录复用已有代码、依赖和缓存
适合并行改代码,大多数仓库工作非常大的仓库、昂贵的本地状态、绑在某个目录上的工具
可用范围任何已连接的电脑仅本地电脑

隔离用准备换安全。复用用串行换速度。HiFox 让你在每个 Agent 上明确选择。这好过在一份被改坏的工作树里才发现这个取舍。

并发上限:并行,但是有界

无界的并行本身就是一种失败。每一次并发运行都消耗 CPU、内存、磁盘、模型供应商的容量和仓库带宽。八个 Agent 在一台笔记本上互相挤,结果比三个跑得舒服更差。

HiFox 在两层上限制并发。电脑作为主机有任务并发上限。每个 Agent 有并行运行任务的最大数量,以及单条任务超时。默认故意保守:临时目录模式下,Agent 拿到电脑上限的 50%。指定目录模式下,数量和已配置的目录数一致。设得比目录数更高,产品会警告写入可能在任务之间碰撞。这个警告就是这篇的论点,压进一个对话框。

文档对提高上限的指导是清醒的那种:只有当前电脑和运行时已经能稳定处理现有负载之后,再提高并发。

进度流回,合并之前先审查

如果隔离同时意味着看不见,它就会变成负担。五个 Agent 在五个藏起来的目录里,正是工作消失进私人终端的方式。所以运行产出的一切,都流回共享记录。

运行进行时,任务显示它的执行状态。动态在时间线上承载评论和任务变化。执行日志记录运行何时开始和结束、工具调用和运行时事件、触发来源,以及任何失败细节。Agent 的报告作为一条连到执行轨迹的评论保存下来。上下文、进度、阻塞和结果,从请求到发布都看得见,即使文件改动发生在一个从没有人打开过的目录里。

然后是关口。这里没有东西会自己合并。Agent 调研、执行、测试并汇报。人定方向、授权,并接受结果。运行完成时,Agent 可以把任务留在等待人审查。这会出现在负责人的收件箱里。隔离的 worktree 让并行执行安全。审查关口让它值得信任。

还有一块把循环合上:清理。Agent 的运行会在电脑上留下工作目录和产物。可配置的清理会在保留窗口之后回收已结束的运行,并用最低剩余空间阈值做后盾。正在运行或排队的工作、被钉住的运行,以及仍需调查的失败运行,永远不会被碰。这是自己搭的方案会可靠地忘掉、直到磁盘满了才想起的苦工。

HiFox 自动化了什么,相对自己搭

如果你读过 自己搭 worktree 的那篇,对应是直接的。你为每个 Agent 写脚本的 git worktree add,变成本地服务为每次运行准备隔离目录。「多少个 Agent 算太多」的判断,变成明确的并发上限,设置不安全时会警告。你忘了跑的 git worktree prune,变成按保留期的清理。没有脚本能给你的那部分,哪次运行做了什么、有没有人接受,就是任务本身。

诚实的一对决定在这里同样适用。一个人在一台机器上跑两个 Agent,也许不需要平台。一段 worktree 脚本加上纪律可以撑到那里。当协调比打字更贵时,再用 HiFox:多个人在派工作,多台电脑,运行需要排队和审查。无论哪种,你都保留已经有的运行时。模型用量继续走这些工具里配置的订阅或 API Key。

开始故意留小。接上一台电脑,创建一个临时目录模式的 Agent,派给它一条风险不高的任务。入门大约十分钟走完第一次循环。每个概念的更深说明在 工作目录文档里。平台怎么围着执行,是「HiFox 是什么」那篇。那两篇中文博客还没发布,这里先不放链接。

常见问题

HiFox 怎么防止并行 Agent 之间的合并冲突?

每次任务运行在电脑上有自己的隔离目录。带仓库的运行,可以由本地服务各自准备一份 git worktree。Agent 从不共享检出、索引或未跟踪文件,所以并发运行不能覆盖彼此正在进行的工作。两条任务故意改同一段代码时的重叠,仍然由人在审查时调和。

用 HiFox 需要自己搭 git worktree 吗?

不用。临时目录模式下,本地服务为每次运行准备任务目录,包括带仓库工作的 worktree。你在 Agent 上配置一次模式。没有每次运行都要写脚本的 worktree 命令。底层机制见 git worktree 文档。

一台电脑上能并行跑多少个 Agent?

电脑有自己的任务并发上限,每个 Agent 也有并行运行任务的最大数量。默认情况下,临时目录模式的 Agent 拿到电脑上限的 50%,指定目录模式的 Agent 每个已配置目录一个名额。超过上限的运行在队列里等。

HiFox 会自动合并 Agent 的变更吗?

不会。运行的结果、证据和轨迹回到任务上。人在任何东西发布之前审查变更摘要。审查者接受、要求修改,或决定合并和发布。自动化停在需要团队判断的地方。

什么时候该用指定目录模式,而不是隔离的 worktree?

当每次运行准备一份新目录真的很贵时用它:非常大的仓库、昂贵的生成状态或缓存,或绑在一条本地路径上的工具。接受每个指定目录一次只服务一次运行。其他情况,临时目录模式是推荐的默认。

Explore more

Claude Code 建潜客名单:Firecrawl 实战

Claude Code 建潜客名单:Firecrawl 实战

在 Claude Code 里把建潜客名单拆成四个任务:Apollo 免费搜人、按已有字段筛选、只对幸存者做付费补全,最后人工审核。每个任务都报告花了多少 credits。

2026-11-05

免费、开源、AI 原生:ClickUp 替代品怎么选

免费、开源、AI 原生:ClickUp 替代品怎么选

免费、开源、AI 原生,这三个词今天很难同时满足。拆开看各自买的是什么,再按哪个要求不能让步来选:Plane、Emdash、Multica,或者 Agent 原生的 HiFox,以及什么情况下继续留在 ClickUp。

2026-11-04

用 Agent 补全入站线索:按线索付费,不买席位

用 Agent 补全入站线索:按线索付费,不买席位

把新注册的邮箱和域名发给 webhook,Agent 补全个人与公司、做制裁名单筛查、按 ICP 打分,再交给人工审核。按 Firecrawl credits 计费,不按席位。

2026-11-04