Repolode
Ataraxy-Labs

Ataraxy-Labs/weave

基于实体(函数、类、键)而非行的 Git 合并驱动,避免独立修改被误判为冲突。

Star
1,351
Fork
49
未关闭 Issue
2
最近提交
3天前

这是什么?

Weave 用基于实体的三方合并替代 Git 按行的合并。它通过 tree-sitter 解析 base、ours、theirs 三个版本的文件,按名称、类型和作用域匹配函数、类和键,再逐个实体合并。不同实体的改动会自动解决,只有同一实体出现不兼容修改时才会冲突。

这一设计主要针对多个 AI 智能体或开发者同时修改同一文件的场景。当两个分支在相邻位置各自新增不同函数时,Git 仍会报告冲突,而 Weave 能正确合并。通过 `weave setup` 即可将其注册为 Git 合并驱动,无法自动解决的冲突会附带实体级别的上下文,例如某一侧修改了函数而另一侧将其删除。

项目还提供 `weave land` 用于校验和发布智能体的合并结果,`weave check` 与 `weave explain` 用于检查冲突解决,并附带面向智能体框架的 MCP 服务,以及 Jujutsu 配置。支持约 38 种语言,对不支持的语言或超大文件则回退到 Git 的按行合并。

核心功能

  • 01将函数、类和键作为实体合并,同一文件中的独立新增不会产生冲突。
  • 02借助 tree-sitter 语法解析约 38 种语言,包括 TypeScript、Python、Go、Rust 和 JSON。
  • 03冲突信息包含实体类型,以及哪一侧修改或删除了该实体。
  • 04通过 `weave setup` 注册为 Git 合并驱动,可全局或按仓库配置。
  • 05提供 `weave check`、`weave explain` 和 `weave preview`,便于在提交前检查合并结果。
  • 06附带 MCP 服务,智能体框架可调用其合并、编辑和检查工具。

适用场景

  • 让多个 AI 编程智能体在同一源文件上并行工作,减少人工解决冲突。
  • 在多人修改同一大型模块或配置文件时,减少 Git 误报的合并冲突。
  • 在自动化智能体合并发布到分支之前,增加结构化校验环节。

快速上手

  1. 1

    安装 weave(详见 README 的 Install 部分)

  2. 2

    在仓库中启用 weave,使 git 合并使用它

    weave setup
  3. 3

    执行合并;真正的冲突会以标记形式出现,并附带 refused_by 说明

    git merge <branch>
  4. 4

    对照合并阶段验证你解决冲突后的工作区

    weave check

使用前须知

  • 实体级合并在某些情况下会产生普通 Git 可以干净合并的冲突,其自身基准测试显示多个仓库存在此类回归。
  • Vue、Svelte、ERB 和 Haskell 文件被 weave 有意不予合并,会回退到其他处理方式。
  • 项目目前处于 0.5.x 版本,其合并判定在不同版本之间有所变化。

收录于专题

标签

常见问题

weave 是什么?
基于实体(函数、类、键)而非行的 Git 合并驱动,避免独立修改被误判为冲突。 Weave 用基于实体的三方合并替代 Git 按行的合并。它通过 tree-sitter 解析 base、ours、theirs 三个版本的文件,按名称、类型和作用域匹配函数、类和键,再逐个实体合并。不同实体的改动会自动解决,只有同一实体出现不兼容修改时才会冲突。
weave 可以免费使用吗?用的什么许可证?
weave 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
weave 还在维护吗?
活跃维护中。weave 最近一次提交是在 2026年11月4日。
weave 适合用来做什么?
让多个 AI 编程智能体在同一源文件上并行工作,减少人工解决冲突。 在多人修改同一大型模块或配置文件时,减少 Git 误报的合并冲突。 在自动化智能体合并发布到分支之前,增加结构化校验环节。
weave 怎么安装和运行?
安装 weave(详见 README 的 Install 部分) 在仓库中启用 weave,使 git 合并使用它: weave setup 执行合并;真正的冲突会以标记形式出现,并附带 refused_by 说明: git merge <branch> 对照合并阶段验证你解决冲突后的工作区: weave check
在哪里获取 weave?
源代码和安装说明在 GitHub 上:https://github.com/Ataraxy-Labs/weave

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目