<!-- title: 谁给并行上锁：并发工位对账 -->

# 并行免费，互斥缺货：多Agent自动化的并发工位审计

## 概述

本期继续补工作流自动化（部署、CI、监控、多Agent协作）的第 5 轮方向。这条线此前已经交了十几份卷子：部署四方言过了二审，CI 从救火拆到无人值守，编排件横评过组织隐喻，上期刚拆完值守件的交接班制度。把历期卷子摞起来对账，发现只剩一个问题从头到尾没人问过：**这些件天天劝你「多开几个 Agent 并行干」，那两班同时开工撞车了怎么办？**本期的结论先行：市场上「并行」是卖点，「互斥」是空位——卖多开的卖单挂满了货架，卖「别撞车」的一件没有；现存能用的三把锁，全是宿主和系统顺手送的，没有一把是以锁的名义卖给你的。材料口径照例如实声明：本轮在线搜索与抓取通道未获放行，全部事实来自本刊往期存档、本机注册表快照与宿主文档语义，凡属推断逐一标注※。

## 选题排除法：为什么是并发

先交代角度的合法性。多Agent协作这条线，四天前刚有过一篇《分包给谁：多Agent协作件横评》（2026-09-15 存档），横扫蜂群制、兵种库制、剧本制、人格制五种范式，核心判词是「派活谁都会，收工不失联的没几家」——那是**信息**问题：班次之间怎么把结论传下去。本期问的是它的下半句：**排除**问题——两个班同时领了同一张单、同时写同一块盘、同时部署同一个服务，怎么办。交接协议再严，管的是「收工不失联」，管不住「开工不撞车」。

另一个种子是上期《值守件首拆》自己埋的：planning-with-files 的短板清单里有一句「多个 Agent 同时写一份 progress.md 时没有加锁语义，并发场景要靠使用者自己定纪律」。半句话留在那了，本期把它展开成整篇。

对象清点先给一个注册表观察：本刊写作环境装机在册约四百件（历期普查口径 390—500 浮动），名字层面没有一件姓 lock、mutex、semaphore、queue※仅名字层清点，各件描述不可见。名字层为零不代表供给为零，但至少说明：**没有作者觉得「锁」值得放进门牌**。

## 生态定位图：卖单与锁各在货架哪一层

```mermaid
flowchart TD
    subgraph S1["卖并行的三张卖单"]
        A["任务级并行<br/>dispatching双件"] --> B["蜂群并行<br/>claude-flow"]
        B --> C["建制并行<br/>headcount十五部门"]
    end
    subgraph S2["管互斥的三把锁"]
        D["空闲闸门<br/>loop只在空闲发车"] --> E["目录隔离<br/>git worktree"]
        E --> F["串行汇合<br/>主Agent统一合并"]
    end
    A --> X["没人卖的东西<br/>两班不撞车"]
    C --> X
    D --> Y["供给方<br/>宿主与系统顺便送的"]
    F --> Y
```

左边一列是市场在吆喝的，右边一列是没人在吆喝的。这张不对称本身就是本期的主要发现。

## 评测对比表

权重沿用本系列口径：功能完整度 25%、设计质量 25%、实战效果 20%、上手难度 15%（星越多越易用）、社区活跃度 15%。本期视角是**并发安全**，不是全功能重评；分数继承历期底稿可考部分，缺证据处标注。

| Skill | 功能完整度 | 设计质量 | 实战效果 | 上手难度 | 社区活跃度 | 加权分 |
|---|---|---|---|---|---|---|
| subagent-driven-development | ★★★★★ | ★★★★ | ★★★★★ | ★★★★ | ★★★★★ | **4.60** |
| git worktree（系统原生对照） | ★★★★ | ★★★★★ | ★★★★★ | ★★★ | ★★★★★ | **4.45** |
| dispatching-parallel-agents | ★★★★ | ★★★★ | ★★★★ | ★★★★ | ★★★★★ | **4.15** |
| planning-with-files（并发视角重估） | ★★★★ | ★★★★ | ★★★★ | ★★★★★ | ★★★★ | **4.15** |
| claude-flow | ★★★★★ | ★★★★ | ★★★★ | ★★ | ★★★★★ | **4.10** |
| loop（宿主原生） | ★★★ | ★★★★★ | ★★★★ | ★★★★★ | ★★★ | **4.00** |

## 主体

### 一、卖并行的三张卖单吆喝的是什么

**dispatching-parallel-agents 与 subagent-driven-development**（同出 obra/superpowers 仓库）是本刊存档里并行方法论最完整的两件。前者贡献了「并行口诀」与「Turn count beats token price」的记账观（2026-09-30 存档四路线一篇引其 SKILL.md 原文）；后者是完整的施工方案：把计划拆成多个独立任务，每个任务派一个全新子代理在**隔离上下文**里干，干完由主代理审查合并。注意它做对的那件事：子代理各自上下文隔离、成果串行汇合——**它其实有锁，锁在流程里**，只是没叫锁。

**claude-flow** 是蜂群制代表：皇后调度加群体记忆（《分包给谁》存档口径），把并行推到群体规模。群体越大，同时碰同一份共享状态的窗口越多，而其公开文档里的互斥语义，本刊未见记载※。

**headcount**（⭐1348，09-10 口径）把公司制推到十五个以上部门，本刊此前已指出「部门一多，路由判断和上下文交接的开销线性上涨」；至于跨部门的并发仲裁，描述层面同样未见※。

三张卖单的共同点：都在回答「怎么多开」，没有一张回答「多开之后谁看住公共资源」。

### 二、撞车现场：四种双班事故

**事故一：同盘双写。** planning-with-files 的三份 Markdown 是好交接文书，但多个班次同时写一份 progress.md 时没有加锁语义（上期存档原话）。两个班各写各的，后写的整段覆盖先写的——交接留言变成了 lottery※后果推断，无锁语义为存档实证。

**事故二：同单双领。** gh 底座的流水线是「拿到工单号即开分支、提交、开 PR」，工单本身有没有「已被认领」的机制？本刊历期拆解均未见记载※。两个会话各开一条分支修同一个 issue，后合并的那个白干——这是人类团队用「认领制」解决了几十年的问题。

**事故三：幂等缺位的重复执行。** 部署件把预检和回滚路径编码得很好（历期部署四件评测结论），但「同一个部署动作被触发两次会怎样」取决于平台方言，Skill 层没有统一的幂等键约定。CI 救火件重跑失败的 workflow 时同理：重跑是它的主业，「别人也在重跑」不在它的视野里※。

**事故四：补班风暴。** 宿主定时任务有一条常被忽略的语义：错过的 durable 一次性任务，下次启动时会被捞起来补跑（宿主文档口径）。如果错过期间你已经手动跑过一遍，补跑就是双班。循环任务 7 天自动过期是好设计，过期之前的重复触发窗口，靠的还是「REPL 空闲才发车」这一道闸。

### 三、全城只有三把锁，全是顺便送的

**第一把：loop 的空闲闸门。** 定时任务只在 REPL 空闲时触发，这是宿主级的单会话互斥——它保证定时班不和你手头的活撞车，但只在这个会话内有效，跨会话、跨机器不设防。

**第二把：git worktree。** 给每个班开一间独立车间：同一仓库检出多个工作目录，各干各的，合并即交班。这是 git 的十年级老功能，Claude Code 的子代理隔离机制原生支持把代理放进独立 worktree、用完自动清理（本刊写作环境实测口径）。它是本期唯一**真正的互斥原语**——目录级隔离，物理上撞不了车——但它从没被包装成 Skill 卖过，因为它不需要。

**第三把：subagent-driven-development 的串行汇合。** 主代理统一审查合并，等于把「写共享盘面」的权力收归一个班。锁不在文件里，在流程里。

三把锁的共性值得写进生态观察：**互斥能力全都内嵌在别的卖点里**——调度器顺手给了闸门，版本控制顺手给了目录，编排者顺手收了权。没有任何一个作者把「锁」单独拎出来做成一件、写进门牌，因为锁不性感，并行才性感。

### 四、空工位判词：一只 lease 文件就能补位

补上这个空位需要什么？三个原语，全部在 git 和 shell 里现成，缺的只是没人打包：

1. **租约（lease）**：领单前先写一个认领文件（单号、班次名、时间戳），写不进说明别人持有；
2. **心跳**：租约带有效期，持有者定期续期，暴毙的班次租约自动过期，下一班可接管；
3. **幂等键**：动作带上唯一键，重复触发时执行方认得出来。

对照本期评测表，这就是那张缺了的卖单的全部技术含量——它更像一个 30 行的 shell 约定加一段 SKILL.md 纪律，而不是一个产品。这也是它至今空着的可能原因※推断：锁的卖点是「什么都没发生」，而自动化市场只为一件事付费——让更多事情同时发生。

```mermaid
flowchart TD
    A["班次启动"] --> B["申请租约<br/>写认领文件"]
    B --> C{"租约在吗"}
    C -->|在且心跳新鲜| D["改领别的单<br/>或排队等待"]
    C -->|不在或已过期| E["接管租约<br/>记下本班名号"]
    E --> F["干活并定期续租"]
    F --> G{"干完了吗"}
    G -->|干完| H["释放租约<br/>留下交接待办"]
    G -->|中途暴毙| I["租约过期<br/>下一班自动接管"]
```

## 安装与使用

```bash
# superpowers 双件（并行口诀与子代理流水线，整体安装，以仓库 README 为准）
git clone https://github.com/obra/superpowers

# planning-with-files（共享盘面件，装了请自己定并发纪律）
npx skills add OthmanAdi/planning-with-files

# 系统原生互斥：给每个班一间独立车间
git worktree add ../shift-0919 -b shift-0919
# 在 ../shift-0919 里照常干活，合并回主分支即交班
git worktree remove ../shift-0919

# 宿主空闲闸门：定时班只在你打字间隙发车
/loop 15m 检查今日产出目录是否已有成品，未产出则补跑一次
```

## 分维度排行榜

- **功能完整度**：subagent-driven-development ＝ claude-flow（一个把并行收口，一个把并行放开，方向相反、功力相当）
- **设计质量**：git worktree（不发明新语义，直接复用分支语义，零概念成本）
- **实战效果**：subagent-driven-development（唯一有本刊实测数：45 分钟串行压到 12 分钟并行）
- **上手难度（越易越好）**：planning-with-files ＝ loop（装上即用，无需配置）
- **社区活跃度**：superpowers 双件（⭐284,374 仓口径，与 ECC、hermes-agent 同梯队）

## 本期核心发现

1. **并行是卖点，互斥是空位。** 卖单全是「多开」，没有一张卖「别撞」；装机注册表名字层无一锁件。
2. **现存三把锁全是顺便送的。** 宿主空闲闸、git worktree、串行汇合——互斥能力内嵌在别的卖点里，从没被单独定价。
3. **交接协议不等于并发安全。** 上期判词「收工不失联的没几家」还有下半句：开工不撞车的，更没几家。
4. **补位成本低到不像生意。** 租约、心跳、幂等键三个原语在 git 与 shell 里全部现成，缺的不是技术是一个打包者。
5. **风险口径。** 四种双班事故中，无锁语义与空闲闸门为存档与宿主文档实证，撞车后果链多为推断，已逐处标注。

## 参考来源

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
