Ataraxy-Labs/weave

Entity-level git merge driver. Resolves false conflicts git invents when independent agents edit the same file. ~95% reduction vs. line-based merge.

weave – 面向 Git 的实体级语义合并

它是什么

  • 一个基于 Rust 的工具,用 语义 合并取代 Git 的逐行合并,语义合并作用于函数、类、JSON 键和其他语言实体。它使用 tree-sitter 解析文件的三个版本(base、ours、theirs),按名称/作用域匹配实体,并智能地合并它们。

为什么重要

  • 当多个 AI 代理(或开发者)编辑同一文件时,Git 经常标记冲突,即使更改是独立的(例如,两个新函数并排添加)。weave 自动解决这些虚假冲突,让代理无需人工干预即可继续。

主要特性

  • 实体级三方合并 – 作用于函数、类、对象键等,支持 38 种语言。
  • 确定性且无状态 – 给定相同的三个修订版本,它总是产生相同的结果,类似于 git merge-file。
  • 冲突上下文 – 当发生真实冲突时,标记包含实体名称、类型和简短的“refused_by”原因,使手动解决更容易。
  • weave land – 一个命令,验证合并后的树,可选地运行自定义解析器,并仅暂存通过结构检查的文件(PROVEN、VERIFIED、REFUSED)。
  • 与 Git 和 Jujutsu 集成 – 提供 weave-driver 合并驱动程序和 weave setup 命令,自动写入必要的 .gitattributes 规则。
  • 基于 CRDT 的协调层(单独的 weave-crdt crate)用于在更改进入 Git 之前进行实时多代理编辑。
  • 基准测试和测试 – 441 个单元/集成测试,以及广泛的基准测试套件,与 Git 和 Mergiraf 在真实世界仓库(git、Flask、CPython、Go、TypeScript)上进行比较。

安装

# Homebrew (macOS / Linux)
brew install weave

# 从源码安装(需要 Rust 工具链)
git clone https://github.com/Ataraxy-Labs/weave
cd weave
cargo install --path crates/weave-cli      # `weave` 命令
cargo install --path crates/weave-driver   # Git 调用的驱动程序

典型工作流程

  1. 运行 weave setup(或 --global、--local、--off)为所有支持的文件类型安装合并驱动程序。
  2. 像往常一样合并:git merge <branch>。
  3. 如果 weave 产生冲突标记,使用 weave explain <file> 获取详细的实体级信息。
  4. 编辑后,运行 weave check 验证树。
  5. 使用 weave land(可选提供自定义解析器)完成并暂存已解析的文件。

生态系统和相关项目

  • sem – 语义版本控制。
  • inspect – 语义代码审查。
  • opensessions – 用于编码代理的 tmux 侧边栏。
  • weave-crdt – 用于实时多代理协作的 CRDT 层(提到但不属于此仓库)。

成熟度

  • 最新稳定版本 0.5.3(截至 2026 年 9 月)。
  • CI 在 Linux 和 Windows 上运行;所有测试通过(441+ 测试)。
  • 在数千个真实合并提交上进行了基准测试,并发布了结果。

许可证

  • 双许可:MIT OR Apache-2.0。

结论 weave 是一个生产就绪、开源的解决方案,用于减少多个自动化代理(或开发者)编辑同一文件的代码库中的虚假合并冲突。通过在语言实体级别而不是原始行级别进行合并,它让团队更快地交付更改,并减少手动干预。

相关

  • 项目
  • Dispatch
  • 项目
  • 项目
  • Dispatch