# Dev Mesh

一个面向多个 Agent 共享 Git 工作区的本地协同层：为短周期工作声明明确权限，在发生重叠时处理争用，并把协作式 Git 发布收束为可检查的有界证据。

## Metadata

- HTML: https://glenzli.com/projects/dev-mesh/
- Markdown: https://glenzli.com/projects/dev-mesh.md
- Collection: Projects
- Language: zh-CN
- Published: 2026-08-14
- Status: active
- Tags: multi-agent, coordination, git, shared-workspace, contention, observability

## Content

Dev Mesh 是为多个 Agent 共同修改一个 Git 工作区而设计的本地协同层。它不试图替代任务系统、消息系统或版本控制；它处理的是更窄的一段现实：谁在这个工作区里可以改什么，发生重叠时怎样停下来协商，以及怎样让最后的提交不争用同一个 index 和分支。

普通修改并不需要额外仪式。没有重叠时，一次工作只经历一个 Run、一个有界 Claim、一次受管提交和一次干净退出。只有实际发生路径或语义重叠时，才进入等待、重新分配、交接或临时事务分支。

## 项目概念

  ![多条 Agent 工作泳道沿时间前进，在争用与通知节点处分流或交接，最后回到受保护的 Git 发布线](/images/projects/dev-mesh-banner.webp)

```text
inspect -> join Run -> claim bounded work -> edit -> validate
        -> managed direct commit -> release Claim -> leave Run
```

## 它协调的不是“谁更聪明”

    **Run 是一次工作身份**
    一个 Agent 在一个 Git 工作区里执行一项有边界的任务。它不是永久账号，也不是跨仓库自动通行证。

    **Claim 说明可写范围**
    Claim 写明精确路径与必要的语义资源。它记录允许修改什么，也让未声明的重叠能够被识别出来。

    **争用是显式决定**
    重叠 Claim 不会靠时间戳自动移交权限。等待、重分配、交接或临时事务，都是有界且可回看的选择。

    **Git 发布通过同一道门**
    直接提交与事务发布共用 canonical Git fence，避免协作 Agent 同时争用工作区 index 或当前分支。

工作区内的 materialized state 才是权限事实；低频不可变 Events 记录生命周期证据；Observer 和 Console 只做诊断投影，不能凭旧事件、超时或相似身份重建权限。换言之，Dev Mesh 让协作留下痕迹，但不把“看起来有关”误写成“已经得到授权”。

## 协作泳道

  ![Dev Mesh Console 的中文协作泳道演示，展示多个 Owner 的 Run、通知、争用、等待、事务分支与回到主线的过程](/images/projects/dev-mesh-swimlane-zh.png)
  仓库提供的 Console 演示图，使用虚构数据。泳道按 Owner 归组，节点只保留足以理解协作因果的事件。

泳道图的意义不只是“看见很多 Agent 在跑”。它区分执行主线、临时分支、跨泳道通知、等待依赖、冲突与完成状态，让一次工作为什么暂停、怎样恢复、最终怎样进入 canonical 线，能在不逐条翻事件的前提下被读出来。

## 通信与协作不是一回事

Dev Mesh 可以记录通知、请求、确认与 handoff，但不负责把消息送到另一个任务。Agent 必须先用宿主环境真正联系、创建或恢复目标任务，再把已经发生的动作写成协作证据。因此 `send`、`ack` 和 handoff 命令不会自行启动、唤醒或操控另一个 Agent。

  ![Dev Mesh Console 的中文跨项目协作演示，区分已确认关系与同 Run 出现于多个工作区的弱线索](/images/projects/dev-mesh-projects-zh.png)
  实线表示接收方已绑定的跨任务协作关系；虚线括号只说明同一 Owner/Run 出现在多个工作区中，不能当作通信已经发生的证明。

这种区分对多 Agent 工作很重要：关联不是授权，记录不是投递，观察也不是控制。项目不让这些概念在一个“协作状态”里混成难以验证的叙述。

## 本地观察与协议边界

Observer 从外部只读采集工作区控制面，把授权、争用、事务、诊断、语义协作流和跨项目关系投影到独立 SQLite catalog；源工作区不会因被观察而得到额外写入。loopback Console 因此可以做项目筛选与事后检查，却不能反向接管权限。

可选的状态 offer 通过 [Infra Protocol](https://github.com/glenzli/infra-protocol) 发布脱敏的本机 Unix socket 入口。登记只提供发现线索，不作为服务存活或工作区权限的证明；Consumer 仍需连接当前 endpoint，而所有实际协同语义依旧保留在 Dev Mesh 自己的版本化合同中。

Dev Mesh 不是每个仓库都必须安装的常驻平台。它适用于确实存在并行修改、共享工作区和协作发布的场景；若工作不重叠，协议应尽可能安静地退回到一次普通提交。
