mcpField
G
gitwand

gitwand

本地服务
github.com/devlint版本控制1911 周前更新

关于 gitwand

GitWand 是基于 Tauri 2 与 Vue 3 构建的原生 Git 客户端,内置自动解决简单合并冲突的引擎。它面向需要与 AI Agent 协作的开发者,提供 PR 审查、Agent 会话和 MCP 服务。

主要功能

  1. 01自动解决可简单处理的合并冲突
  2. 02合并预览与逐文件风险分析
  3. 03Git Tree 历史视图与 diff 查看器
  4. 04多平台 PR 管理与内联代码审查
  5. 05命令行与 MCP 服务支持冲突解决

适用场景

  1. 01合并分支前预判冲突的解决难度
  2. 02让 Agent 只处理复杂的冲突片段
  3. 03在 CI 中以 JSON 输出冲突解决结果

MCP 相关

GitWand 提供 @gitwand/mcp 服务,向 MCP 客户端暴露冲突状态查询、自动解决和合并预览等工具;桌面应用的 Agent 面板也可显示活动的 MCP 会话。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"devlint-gitwand": {
"command": "npx",
"args": [
"-y",
"@gitwand/mcp"
]
}
}
}
启动命令npx -y @gitwand/mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@gitwand/mcp3.12.4

工具

7

收录的工具列表 · 更新于 1 周前

参数类型必填说明
cwdstring否工作目录(仓库根目录)。默认为服务器 cwd。
regenerateboolean否如果为 true,则针对任何被拒绝的生成文件(例如 package-lock.json),报告 GitWand 的 regenerate-tier 计划(锁文件生态系统及当前是否可运行),并重用本次调用已计算的相同文件状态。仅供报告——此操作绝不执行任何内容(不会启动进程、创建 worktree,也不会写入此工具在未设置该标志时不会写入的文件)。要实际应用计划,请运行 `gitwand resolve --regenerate`(CLI)。默认值:false。
min_confidence_scorenumber否仅应用置信度分数 >= 此值(0-100)的解决方案。此值与策略自身的标签阈值共同生效,绝不取代该阈值:提高此值只会减少应用的解决方案,不会增加,因此绝不会放行引擎已拒绝的代码块。省略时使用仓库的 .gitwandrc minConfidenceScore,或不设阈值。

详细介绍

GitWand

GitWand

快速、原生的 Git 客户端,内置智能冲突解决功能

桌面应用 • 冲突解决引擎 • CLI • MCP 服务 • 架构 • 路线图 • 代码签名

许可证 TypeScript 版本

GitHub 赞助者

---

GitWand 是一款使用 Tauri 2 和 Vue 3 构建的轻量级原生 Git 客户端,涵盖日常工作流的全部环节——更改、历史记录、分支、推送/拉取,并提供更多功能:自动解决简单的合并冲突、带行内评论的集成 PR 代码审查,以及作为主要历史视图的 Git Tree。从 v1.3 起,AI 会协助工作流的每个步骤,包括分支命名、PR 撰写、代码块级审查、语义化压缩和自然语言提交搜索。v2.7+ 增加了多仓库工作区和 Worktree;v2.8 增加了 Agent 会话(MCP);v2.9 增加了跨仓库 Launchpad;v2.10 为 GitHub、GitLab、Bitbucket 和 Azure DevOps 带来了多平台代码托管服务的拉取请求;v2.13 增加了行内 AI 代码审查;v2.18 将 CI 检查注释直接叠加到差异视图上;v2.19 增加了 GitHub 和 Azure DevOps 的 OAuth 设备流登录(无需 gh CLI)以及跨 Fork 拉取请求。3.x 系列让 GitWand 成为 AI 辅助工作的日常主力:v3.0 将跨仓库仪表板改为今日页面,即经过分类的操作收件箱,并在 Marketplace 上发布了 VS Code 扩展;v3.2 增加了集成终端和 AI Agent 标签页,包括在隔离 Worktree 中一键执行 AI 任务,以及可停靠的文件浏览器 / 编辑器面板。

桌面应用

Git Tree

Git Tree 是主要的历史视图——完整分辨率的 DAG,会将分支拓扑渲染为 SVG,并支持主干固定、泳道冷却、WIP 节点和引用徽标。点击任意提交即可查看其差异;右键可检出、重置、创建分支、打标签或挑选提交。分支、储藏和标签都可在此管理,无需单独的面板。筛选模式(v3.2)会重新计算 DAG,仅显示匹配的提交,并提供快速分支/作者切换、按日期分组的分隔符、分支名称自动补全,以及可直接解析到 PR 分支的 #<PR number> 查找。

仓库视图

侧边栏中显示已暂存、未暂存、未跟踪和冲突文件,主区域内显示行内差异。无需离开界面即可暂存、取消暂存、丢弃和提交。支持按行或代码块进行部分暂存。

提交工作流

包含摘要和描述字段、可选的提交签名,以及 Ctrl+Enter 快捷键。未推送的提交可直接在 Git Tree 中修改——悬停时会显示铅笔图标,点击后打开预填现有消息的浮层。

分支

点击标题中的分支名称即可搜索、切换、创建或删除分支。使用专用的合并按钮合并任意分支。每个非当前分支都会显示一个合并预览按钮,可在提交前模拟合并结果。

合并预览

合并分支前,GitWand 会使用 git merge-base、git show 和 git merge-file -p --diff3 预测合并结果,不会改动工作树。结果会按文件显示明细:

  • 可自动解决 — GitWand 可以自动处理
  • 部分可解决 — 部分代码块需要手动解决
  • 手动解决 — 复杂冲突,需要人工判断
  • 添加/删除 — 一侧添加了文件,另一侧删除了文件

徽标会汇总整体结果:Clean merge、100% auto-resolvable 或 N conflicts to review。

推送与拉取

一键推送和拉取,并通过徽标计数显示领先/落后提交数。自动获取会在后台每 30 秒运行一次。

差异查看器

可切换并排或内联视图,设置会跨会话保留。支持 30 多种语言的语法高亮、基于 LCS 的词级差异、可折叠的未更改区域、画布缩略图、代码块导航(上一个/下一个)以及双列行号。

文件历史记录与责备信息

通过 git log --follow 查看完整文件历史记录,按提交分组的责备信息视图,以及比较文件任意两个版本的时光穿梭差异。

仓库切换器与工作区

点击标题中的当前仓库名称,会打开一个下拉菜单,显示最近打开的仓库。可固定收藏项并即时切换,无需使用文件选择器。工作区(v2.7)可将多个仓库归入一个仪表板,提供跨仓库状态、协调推送/拉取以及快速创建工作树(⌘⇧N)。每个项目标签页都带有一个工作树子菜单(v3.2),列出 main 和所有工作树;选择一项即可就地切换该项目的检出内容,无需额外标签页。

今日

今日(⌘L;v2.9 中以 Launchpad 名称推出,v3.0 中重新设计)是一个跨仓库的分类待办收件箱:汇集所有进行中的事项——WIP、PR、Issue、团队事项——按紧急程度分级排列,每一行都带有基于状态的主要操作(合并 · 审查 · 解决 · 回复 · 查看失败)。可固定或延后任何事项;对于大型工作区,团队标签页会延迟加载,以提升性能。

拉取请求与代码审查

无需离开应用,即可浏览、创建、检出和合并 GitHub、GitLab、Bitbucket 和 Azure DevOps 上的拉取/合并请求。GitWand 会根据远程仓库自动检测代码托管平台并路由到相应提供商;只需在设置中管理一次账户。PR 列表位于侧边栏,完整详情——差异、CI 检查、评论、行内审查——则显示在主区域。

  • 使用 OAuth 登录 — “使用 GitHub 登录”和“使用 Azure DevOps 登录”使用 OAuth 设备流程;令牌存储在操作系统钥匙串中,GitHub PR 工作流通过 REST API 无需令牌也能运行,不需要 gh CLI(未配置令牌时仍可使用 CLI 路径)
  • 跨 Fork 拉取请求 — 当 origin 是 Fork 时,可直接针对上游父仓库创建 PR(默认),并可在列表中看到提交到上游的 PR,以及 Fork 自身的 PR
  • 行内评论 — 阅读和撰写锚定在差异行上的审查评论,支持完整的线程和代码建议(一键应用 ```suggestion ``` 代码块)
  • 行内 CI 检查注释 — 失败检查的注释会叠加显示在差异上,带有边栏图标(❌/⚠/ℹ)和悬停提示;侧边栏会显示每个文件的计数(GitHub、GitLab 和 Bitbucket)
  • 提交审查 — 批准/请求更改/评论,并提供草稿队列,可先累积评论再发送
  • 🧠 智能分析面板 — 冲突预测(合并前运行 git merge-tree)、热点分析、审查范围、静态 AI 建议、文件审查历史记录
Agent 会话

Agent 面板(v2.8)会显示活跃的 MCP 会话,并允许你直接从 GitWand 启动 Claude Code——Agent 所做的更改会实时显示在差异查看器中。MCP 目录(Settings > MCP)支持一键安装任意 MCP 服务。

集成终端与 AI 任务

终端面板(v3.2)通过 WebGL 渲染,支持内联搜索(Ctrl+F)、可点击链接和带类型的标签页 — shell、claude、codex — 每种类型都有自己的图标和未读输出提示点。“Launch Claude Code” / “Launch Codex”会打开一个真正的 PTY 标签页,而**“New AI task”只需单击即可创建一个临时 git 工作树,并在其中打开 Claude Code 标签页 — Agent 会在隔离环境中工作,完成后,你可以从项目标签页的子菜单中将工作合并回来或删除该工作树**。通过 shell 可执行文件白名单、对所有文件系统操作使用 safe_repo_path(),以及防止 PTY 孤儿进程来加强安全性。

文件资源管理器 / 编辑器

可停靠的文件面板(v3.2,支持拖动/调整大小/全屏)通过 git ls-files 列出完整的仓库树,并识别 gitignore 规则;打开的文件会在延迟加载的 CodeMirror 6 编辑器中显示,支持语法高亮、每个标签页独立的撤销历史,以及锁定/撤销/保存工具栏。可通过 AppDock 中的 Files 磁贴访问,并为每个仓库保存布局设置。

设置

语言(英语、法语、西班牙语、巴西葡萄牙语、简体中文 — 自动检测操作系统语言)、主题(深色/浅色/系统)、提交签名、差异模式、外部编辑器、Git 二进制文件路径,以及切换行为(暂存/询问/拒绝)。AI 提供商涵盖 API 后端(Claude / OpenAI-compatible / Ollama)和本地 CLI Agent(Claude Code、Codex、opencode、GitHub Copilot CLI),每种类型都有自己的模型选择器。账户用于管理代码托管平台的登录 — GitHub 和 Azure DevOps 支持 OAuth 设备流程,其他平台则支持应用密码/CLI。所有设置都会保存到应用设置中。

安装

从 GitHub Releases 下载适用于你平台的最新构建:

  • macOS — .dmg(通用版:Apple Silicon + Intel,经 Developer ID 签名并由 Apple 公证)
  • Linux — .AppImage 或 .deb
  • Windows — .msi 或 .exe

在 Windows 上,也可以通过 winget 安装:

winget install Devlint.GitWand
从源代码运行
git clone https://github.com/devlint/GitWand.git
cd GitWand
pnpm install

# Browser dev mode — no Rust needed
cd apps/desktop && pnpm dev:web

# Tauri desktop mode — requires Rust toolchain
# Install Rust: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

# Desktop Dev Build (In the apps/desktop/ folder)
pnpm --filter desktop tauri dev

# On linux you may have to run
WEBKIT_DISABLE_COMPOSITING_MODE=1 pnpm --filter desktop tauri dev

冲突解决引擎

GitWand 的核心引擎(@gitwand/core)会自动解决简单的 Git 合并冲突。它绝不会处理复杂或含糊不清的冲突块。

解决模式

GitWand 使用模式注册表——分类器按优先级顺序评估模式,每个模式都会声明是否需要 diff3(有基准版本)、diff2,或两者皆可。

注册表包含 12 个模式,其中 8 个会自动应用。其余四个要么会提出供你确认的解决方案,要么需要选择启用,要么会原样交还冲突块。

模式优先级自动应用描述典型置信度
same_change10是两个分支做出了完全相同的编辑确定
delete_no_change20是一侧删除了代码块,另一侧未作改动确定
one_side_change30是只有一个分支修改了代码块确定
non_overlapping40是在代码块的不同位置添加内容高
whitespace_only50是逻辑相同,但缩进或空格不同高
reorder_only55是行内容相同、顺序不同,纯粹是重新排列高
insertion_at_boundary57是两侧仅有插入内容,基准版本保持不变高
value_only_change60是两侧都修改了同一个标量(版本、哈希、时间戳)高到中
token_level_merge65否,提出方案同一行上有互不重叠的词元编辑,合并为供你确认的方案中
refactoring_aware_merge970否,选择启用检测到重命名或移动,并在冲突中重放相应更改高
llm_proposed998否,选择启用模型提出解决方案,并在合并后进行验证中
complex999否编辑内容重叠,始终会显示完整追踪记录低

置信度列仅供参考:每个冲突块都会携带计算得出的 ConfidenceScore(见下文),而非固定标签。例如,value_only_change 会根据易变词元占总词元数的比例评分,低于阈值时会直接拒绝处理该冲突块。

非注册表模式:generated_file 是一个独立的重新分类步骤,会在分类后运行。当冲突块的路径与生成文件 glob 匹配时(锁文件、打包文件、dist/,以及 generatedFiles 中的所有内容),解决器会将其重写为 generated_file,并默认给出可执行的原因后拒绝处理,而不是猜测——对 1,662 次真实合并的测量表明,在几乎所有情况下,自动合并生成文件的结果都与团队实际发布的内容不一致。GitWand 会提示你先解决源文件,再重新运行安装程序或构建流程。使用 .gitwandrc 中的 resolveGeneratedFiles: true 或 gitwand resolve --resolve-generated,即可重新启用旧版的接受对方更改/语义合并行为。generated_file 会出现在 ConflictType 中,但从不属于分类器注册表。

综合置信度分数

每个解决结果都带有一个 ConfidenceScore 对象,而不是简单的标签:

{
  score: 84,           // 0–100 composite score
  label: "high",       // "certain" | "high" | "medium" | "low"
  dimensions: {
    typeClassification: 90,  // certainty of the detected pattern
    dataRisk: 20,            // risk of data loss if auto-resolved
    scopeImpact: 10,         // impact of change size
  },
  boosters: ["Path matches generated-file pattern: lockfile"],
  penalties: ["Content will be regenerated — theirs assumed more recent"],
}

(所示结构适用于 resolveGeneratedFiles: true 时的 generated_file 冲突块——默认情况下,GitWand 会拒绝处理生成文件,而不是为其评分并应用解决方案;参见上面的模式表。)

评分公式:score = typeClassification − dataRisk×0.4 − scopeImpact×0.15

格式感知型解决器

对于结构化文件,GitWand 会先使用语义解决器,再回退到文本匹配:

  • JSON / JSONC — 使用 JSON.parse/JSON.stringify 逐层按键合并。可处理嵌套对象,检测无法解决的标量冲突,并去除 .jsonc 中的注释。
  • Markdown — 按 ATX 标题(H1–H6)进行分节合并。合并彼此独立的章节;如果同一章节在两侧都被修改,则回退到文本方式。
可配置的合并策略

在项目根目录创建 .gitwandrc 文件以定义解决策略:

{
  "policy": "prefer-merge",
  "patternOverrides": {
    "*.lock": "prefer-theirs",
    "src/generated/**": "prefer-theirs",
    "CHANGELOG.md": "prefer-ours"
  }
}

可用策略:prefer-ours、prefer-theirs、prefer-safety、prefer-merge、strict。

决策追踪记录

每个分类步骤都会记录在 DecisionTrace 中,便于审计和调试:

✓ src/config.ts — 3/3 resolved
  L12 [one_side_change] certain — Only the incoming branch modified this block.
  L25 [same_change] certain — Both branches made the exact same edit.
  L41 [value_only_change:json] high — Scalar value updated on one side (version field).

CLI

npm

# Use directly with npx
npx @gitwand/cli resolve

# Or install globally
npm install -g @gitwand/cli
gitwand resolve              # Resolve all conflicted files in the repo
gitwand resolve --dry-run    # Preview without writing
gitwand resolve --verbose    # Detailed decision trace
gitwand status               # Show conflict status per file
gitwand resolve --ci         # CI mode: JSON output + semantic exit codes
丰富的 JSON 输出

--ci / --json 标志会返回一份完整的结构化报告,其中包含综合置信度评分、决策轨迹,以及供大模型辅助解决的待处理代码块:

{
  "version": "0.1.0",
  "timestamp": "2026-04-14T12:00:00.000Z",
  "summary": {
    "files": 2,
    "totalConflicts": 5,
    "autoResolved": 4,
    "remaining": 1,
    "allResolved": false
  },
  "files": [
    {
      "path": "src/config.ts",
      "totalConflicts": 3,
      "autoResolved": 3,
      "remaining": 0,
      "validation": {
        "isValid": true,
        "hasResidualMarkers": false,
        "syntaxError": null
      },
      "resolutions": [
        {
          "line": 15,
          "type": "one_side_change",
          "resolved": true,
          "explanation": "Only one side modified this block",
          "confidence": {
            "score": 95,
            "label": "certain",
            "typeClassification": 100,
            "dataRisk": 5,
            "scopeImpact": 10
          },
          "trace": {
            "selected": "theirs",
            "hasBase": true,
            "summary": "One-side change detected — incoming accepted.",
            "steps": ["..."]
          }
        }
      ],
      "pendingHunks": []
    }
  ]
}

pendingHunks 数组为 AI Agent 和 CI 脚本提供了处理 GitWand 无法自动解决的冲突所需的一切信息——ours/theirs/base 内容、分类轨迹和置信度明细。


MCP 服务

npm MCP 注册表

GitWand 提供一个 MCP(Model Context Protocol)服务,将其冲突解决引擎开放给 AI Agent 使用——包括 Claude Code、Claude Desktop、Cursor、Windsurf,以及任何兼容 MCP 的客户端。

设置

将以下内容添加到 MCP 客户端配置中(例如 claude_desktop_config.json 或 .claude/settings.json):

{
  "mcpServers": {
    "gitwand": {
      "command": "npx",
      "args": ["-y", "@gitwand/mcp"]
    }
  }
}

服务默认使用客户端的工作目录。若要将其固定到特定仓库,请在 args 数组中添加 "--cwd", "/absolute/path/to/repo"。使用 Claude Code 时,可通过一行命令完成安装:

claude mcp add gitwand -- npx -y @gitwand/mcp
工具
工具说明
gitwand_status列出存在冲突的文件及其复杂度和可自动解决性
gitwand_resolve_conflicts自动解决简单冲突,并返回 DecisionTrace + pendingHunks
gitwand_preview_merge试运行解决过程——提供统计信息和风险评估,但不写入文件
gitwand_explain_hunk说明特定代码块为何被归类为该类型(完整轨迹 + 上下文)
gitwand_apply_resolution将自定义(由大模型提供的)解决方案应用到特定的复杂代码块
gitwand_resolve_hunk请求连接的 Agent 为一个待处理代码块提出解决方案(返回 ours/theirs/base + 轨迹)
gitwand_resolve_hunk_llm通过合并后检查验证大模型提出的解决方案,然后将其写入磁盘
资源
URI说明
gitwand://repo/conflicts当前冲突状态——文件、数量、类型
gitwand://repo/policy当前生效的 .gitwandrc 配置
gitwand://hunk/{file}/{line}特定冲突的原始代码块内容
人类 ↔ 大模型协作循环

MCP 服务支持一种高效的工作流:GitWand 自动处理简单冲突,大模型负责处理复杂冲突:

  1. 大模型调用 gitwand_preview_merge — 查看存在多少冲突,以及 GitWand 能处理多少
  2. 大模型调用 gitwand_resolve_conflicts — GitWand 自动解决简单冲突,并为其余冲突返回 pendingHunks
  3. 大模型读取 pendingHunks — 每项都包含 ours/theirs/base 内容和完整的决策轨迹
  4. 大模型为每个待处理代码块调用 gitwand_apply_resolution — 直接写入解决方案
Claude Code 斜杠命令

GitWand 还为 Claude Code 提供 .claude/commands/:

/resolve   # Full conflict resolution workflow
/preview   # Merge preview and risk assessment

架构

gitwand/
├── packages/
│   ├── core/       @gitwand/core — Resolution engine (TypeScript, browser-safe)
│   │               parser, resolver, classifier, format resolvers,
│   │               confidence scoring, tree-sitter structural dispatch
│   ├── cli/        @gitwand/cli — Command-line interface
│   ├── mcp/        @gitwand/mcp — MCP server (stdio transport)
│   │               tools (7), resources (3), Claude Code commands
│   └── vscode/     VS Code extension — CodeLens, diagnostics, status bar
├── apps/
│   └── desktop/    Tauri 2 + Vue 3 desktop app
│                   src-tauri/  Rust backend (git commands, IPC, libgit2)
│                   src/        Vue frontend (stores, composables, panels)
└── .claude/
    └── commands/   Claude Code slash commands (/resolve, /preview)

核心引擎与框架无关,可作为库使用:

import { resolve } from "@gitwand/core";

const result = resolve(conflictedContent, "src/app.ts");
console.log(`${result.stats.autoResolved}/${result.stats.totalConflicts} resolved`);

// With options
const result = resolve(content, "package.json", {
  policy: "prefer-merge",
  minConfidence: "medium",
  patternOverrides: { "*.lock": "prefer-theirs" },
});

开发

git clone https://github.com/devlint/GitWand.git
cd GitWand
pnpm install
pnpm build          # Build all packages
pnpm test           # Tests across all workspaces
运行基准测试
cd packages/core
pnpm test:bench     # vitest bench — ops/s per fixture size

Apple M 系列设备上的基准结果:

输入吞吐量
1 个冲突 / 约 30 行约 249 000 ops/s
5 个冲突 / 约 140 行约 40 000 ops/s
50 个冲突 / 约 1350 行约 4 500 ops/s
支持 JSON/Markdown 格式识别约 137 000 ops/s
国际化

GitWand 使用零依赖、类型安全的 i18n 系统,支持五种语言:英语(en,默认)、法语(fr)、西班牙语(es)、巴西葡萄牙语(pt-BR)和简体中文(zh-CN)。en.ts 是规范参考,使用 as const 定义;Locale 和 LocaleKey 类型由此派生,因此其他每种语言都必须与其结构一致——TypeScript 会强制执行这一点。useI18n() 组合式函数提供 t(key, ...args),支持点分键解析和位置插值。系统会自动检测操作系统语言;用户可以在设置中更改语言。


路线图

完整的分阶段计划见 ROADMAP.md,其中包含即将推出的功能、竞争分析和已发布版本历史。


代码签名政策

GitWand 的 Windows 版本经过代码签名。免费代码签名由 SignPath.io 提供,证书由 SignPath Foundation 提供。

角色成员
提交者 / 审阅者Laurent Guitton
批准者Laurent Guitton

除非用户明确要求,否则本程序不会向其他联网系统传输任何信息。


许可证

MIT — Laurent Guitton

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。