🧩 它到底在做什么

Git 合并冲突最烦人的地方不在于“改哪行代码”,而在于你根本不知道对方为什么改。大多数人的操作是:看一眼冲突标记,选 ours 或者 theirs,提交,然后等 CI 红了再回来补。这个技能要做的就是打断这个循环。

resolving-merge-conflicts 的核心方法论可以概括成一句话:把冲突当成意图之争,而不是文本之争。在触碰任何冲突块之前,它会先做一轮“溯源”——读 commit message、翻关联 PR、找原始 issue/ticket,弄清楚每一侧的改动到底是为了解决什么问题。只有搞清楚双方意图之后,才开始逐 hunk 做选择。

它的行为纪律有几条硬约束:能兼容的双方意图同时保留;确实不兼容时,选择与本次合并目标一致的一方,并且明确记录牺牲了什么;绝不发明新行为去掩盖冲突,也不把 --abort 当成退路——合并一定会被推进到一次完整提交。最后它会自动发现项目自身的自动化检查(通常是先 typecheck、再 tests、再 format),跑通之后才收尾提交。

📦 第一次怎么装

这个技能发布在 mattpocock/skills 仓库中,通过 skills CLI 安装。在项目根目录执行:

npx skills add https://github.com/mattpocock/skills --skill resolving-merge-conflicts

运行时 CLI 会让你选择安装到哪些 Agent。用方向键和空格多选,Cursor、Claude Code、Codex、Windsurf 等都在列表里。选完之后文件会写入对应目录(比如 Cursor 是 .cursor/skills/resolving-merge-conflicts),重启编辑器即可生效。

如果你用的是 OpenClaw,也可以用 openclaw install mattpocock/resolving-merge-conflicts 安装。这个技能本身不依赖 MCP 协议,不需要额外配置 MCP server——它是一个纯文本的 skill 文件,Agent 读取后按指令执行 Git 操作即可。

🛠️ 装好之后怎么用

使用场景非常具体:git merge 或 git rebase 已经因冲突而停下,工作区里有冲突标记。此时在 Agent 对话中输入 /resolving-merge-conflicts 即可手动触发。它属于 model-invoked 技能,Agent 检测到“merge conflict”“resolve conflicts”“unmerged paths”等信号时也可能自动调用。

触发之后,它的执行流程大致是这样的:

  1. 先看全局状态。检查当前 merge/rebase 进行到哪一步了,有哪些冲突文件,本次合并的目标是什么。
  2. 逐冲突溯源。对每一处冲突,读 git log、翻 commit message、查 PR 和 issue,还原两侧改动各自的“主要来源”(primary source)。
  3. 逐 hunk 裁决。意图兼容就都保留;不兼容就选与合并目标一致的一侧,并记录取舍。不编造新逻辑。
  4. 跑项目检查。自己去找项目里配好的 typecheck / tests / format 命令,跑一遍,修掉合并引入的问题。
  5. 收尾。stage 所有解决后的文件,完成提交。如果是 rebase,继续直到所有 commit 处理完。

你不需要记什么特殊命令,核心操作就是“把 Agent 叫过来,让它处理当前的冲突状态”。

💡 几个让它更好用的技巧

  • 冲突解决前,先把 PR 描述写清楚。这个技能会去读 merge 的 stated goal 来做裁决。如果你的 PR 描述只有“update feature”四个字,它就缺少判断依据。写清楚“这个分支要达成什么”,裁决质量会明显提升。
  • 不要跳过它的溯源步骤。有些人看到 AI 在翻 git log 会觉得慢,直接说“别看了,选 theirs 就行”。一旦这样做,这个技能就退化成了普通的文本替换工具,失去它最大的价值。让它把溯源走完。
  • 它不处理“合并干净但行为异常”。如果 merge 已经成功完成,但跑起来发现哪里不对,那不是冲突问题,是 bug 诊断问题。这种情况应该交给 diagnosing-bugs 这类技能。
  • 如果你用的是 Cursor,可以配合它的 Merge Editor 使用。先在 Cursor 内置的合并编辑器里大致过一眼冲突文件的分布,再用这个技能做深度裁决。两者不冲突——前者帮你建立全局感知,后者负责逐块处理。

🤖 适合哪些 AI 工具

resolving-merge-conflicts 是一个标准的 Agent Skill,本质上是一份 SKILL.md 文件,不绑定特定平台。只要你的 AI 编码工具能读取项目目录中的 skill 文件,就能用。

目前经过验证的兼容工具包括:Claude Code、Cursor、Codex CLI、Windsurf,以及通过 OpenClaw 接入的 Agent 环境。安装时 CLI 会列出可选的 Agent 列表,按你的实际使用情况勾选即可。

需要留意的是,这个技能不负责判断冲突该不该存在。它假设你已经决定要完成这次 merge/rebase,剩下的事是把它干净地做完。如果你的分支策略本身有问题(比如长期分支频繁互相冲突),它解决不了根因,只能帮你把眼前这次合并处理得体面一些。