mcpField
C
CompareGraph

CompareGraph

本地服务
github.com开发工具04 天前更新

关于 CompareGraph

CompareGraph 将本地克隆的多个代码仓库映射到自定义特征分类表,生成带代码位置引用的比较矩阵,供团队和编码 Agent 核验项目能力。它不运行仓库或调用模型,并通过证据要求、可追溯声明和追加式记录约束结论。

主要功能

  1. 01构建多个仓库的代码图
  2. 02按特征分类表生成比较矩阵
  3. 03声明附带可解析的代码引用
  4. 04检查过期引用与变更
  5. 05追加保存声明和决策记录
  6. 06注册 MCP 服务并配置 Agent

适用场景

  1. 01比较竞品或同领域项目的功能
  2. 02对一组项目开展技术尽调
  3. 03为新领域整理特征分类表
  4. 04向编码 Agent 提供可引用的项目事实

MCP 相关

CompareGraph 提供 MCP 服务,让 Agent 查询仓库比较数据。`setup` 可将服务注册到已发现的 Agent,并写入工作区规则。

配置

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

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

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

安装包
npm@massrelayai/comparegraph0.1.3

工具

18

收录的工具列表 · 更新于 3 天前

参数类型必填说明
limitinteger否页大小,默认值为 50
cursorstring否上一页返回的不透明游标

详细介绍

CompareGraph

逐项对比多个代码仓库的功能:哪个仓库具备哪些功能,以及能证明这一点的文件和代码行。

CI 发布版本 许可证:Apache-2.0,免费

快速开始 · 用法 · 命令 · MCP 工具 · 常见问题 · 故障排除 · 报告

你会保留自己和他人的项目克隆,并记下想要对比的功能。CompareGraph 会将每个克隆读入同一张图中,帮助你或编码 Agent 填写一张对比各个仓库功能的表格。每项结果为 has、partial 或 none,并且都指向相关代码,或者指向未找到结果的搜索。它免费且开源(Apache-2.0),是运行在你电脑上的单个程序;它会读取克隆,但不会运行它们,而且引擎绝不会调用 AI 模型或访问网络。

一张对比四项功能与四个仓库的表格:code-review-graph、srclight、codanna 和 CodeGraph。四者都支持全文搜索和嵌入搜索;code-review-graph 和 srclight 支持模块社区,CodeGraph 部分支持,codanna 不支持;除 codanna 外,其他仓库都支持感知差异的代码审查。其中一个单元格引用了 code_review_graph/communities.py::detect_communities,另一个 none 单元格记录了未找到结果的搜索。这些单元格是 fixtures/gold-map 中映射基准的共识判定结果。

**十分钟后你将看到:**安装并运行六条命令后,屏幕上会显示一张小型样例的同类表格。在自己的克隆上构建:在我们的主机上,处理 85 个文件耗时 0.82 s,处理 797 个文件耗时 6.20 s(计时报告)。


快速开始

单个二进制文件,无需运行时环境。支持 Linux x64 和 arm64、macOS arm64 和 x64、Windows x64;其他平台请从源代码构建。

1. 安装二进制文件

安装脚本会下载一个文件,即适用于你平台的 comparegraph 二进制文件,将其与此版本的 SHA256SUMS 校验,并复制到 ~/.local/bin。它不会使用 sudo,也不会更改其他内容。你可以先阅读脚本:

# macOS / Linux: fetch the script from the v0.1.3 tag, read it, then run it
curl -fsSLO https://raw.githubusercontent.com/MassRelayAI/comparegraph/v0.1.3/scripts/install.sh
less install.sh
COMPAREGRAPH_VERSION=v0.1.3 sh install.sh

# the same in one line, script from main, latest release
curl -fsSL https://raw.githubusercontent.com/MassRelayAI/comparegraph/main/scripts/install.sh | sh

# Windows x64 (PowerShell)
irm https://raw.githubusercontent.com/MassRelayAI/comparegraph/main/scripts/install.ps1 | iex

Windows:文件会写入 %LOCALAPPDATA%\Programs\comparegraph,并将该目录添加到用户的 PATH;请打开新的终端。COMPAREGRAPH_INSTALL_DIR 可以更改二进制文件的安装位置。脚本只会检查校验和。v0.1.2 起的版本还附带构建来源证明,但脚本不会检查该证明;请自行使用 gh attestation verify <asset> -R MassRelayAI/comparegraph 进行检查(发行说明)。

不使用 Shell 管道:Homebrew、npm、手动安装、从源代码安装

Homebrew,适用于 macOS 和 Linux:brew install massrelayai/tap/comparegraph。

npm,适用于装有 Node 18 或更高版本的五个平台(此软件包封装了相同的发行版二进制文件):npx -y @MassRelayAI/comparegraph --version,或 npm i -g @MassRelayAI/comparegraph。

手动安装: 从最新发行版获取 comparegraph-<platform> 和 SHA256SUMS;使用 sha256sum -c --ignore-missing SHA256SUMS 进行检查。从源代码安装,适用于任何能运行 Rust 1.85 或更高版本的环境:cargo install --locked --git https://github.com/MassRelayAI/comparegraph comparegraph(--locked 很重要:crates.io 上最新版本的 Perl 语法包已撤回,只有 Cargo.lock 能解析依赖)。

2. 在示例上试运行

示例仓库和功能示例列表都在此仓库中,而不在二进制文件里,因此第一条命令会下载该仓库的副本。你可以在任意文件夹中运行这些命令;它们会在同一目录下创建 comparegraph 和 cg-try 两个文件夹。

git clone --depth 1 https://github.com/MassRelayAI/comparegraph   # the sample lives here
mkdir cg-try && cd cg-try                                           # your workspace
comparegraph add ../comparegraph/fixtures/typescript --name tsfix   # read, never run
comparegraph build tsfix                                            # parse it
comparegraph family add ../comparegraph/families/example-code-graph-tools
comparegraph map tsfix example-code-graph-tools                     # places to read
comparegraph claim tsfix symbols.extraction has --author me --at src/util.ts:11-11
comparegraph matrix example-code-graph-tools                        # the table

该表为 symbols.extraction 显示 has,其他九项功能显示 -(尚未回答)。所有命令总共不到一秒即可运行完毕。用法展示了每一步的实际输出。

3. 比较你自己的仓库

示例包描述的是代码图工具。对于你自己的领域,需要自行编写功能列表,放在一个简短的 rows.md 文件中;起步时写三行就足够了。

comparegraph add ../your-lib --name mine --as-root   # any clones on your disk
comparegraph add ../their-lib --name theirs
comparegraph build mine && comparegraph build theirs
comparegraph family propose libs --repos mine,theirs # optional draft

family propose 会起草一份共用词列表(name、file、extract 等),而不是功能列表;保留有用的词,为它们编写定义,并将文件保存为 families/libs/rows.md:

---
family: libs
description: the three features I want to compare
---
| id | group | feature | definition | counts_as_has | tier | weight |
|---|---|---|---|---|---|---|
| search.fulltext | search | Full-text search | Search over names or text through an index | a query entry point over a full-text index | basics | 2 |
| search.embeddings | search | Embedding search | Search by vector similarity | code that embeds text and ranks by similarity | extra | 1 |
| graph.communities | graph | Module communities | Groups of related code found from the graph | a clustering pass over the graph | extra | 1 |

然后像第 2 步一样运行 comparegraph family add families/libs、map、claim 和 matrix libs。map 会提供可供查阅的位置,而不是结论:由你或你的 Agent 打开这些位置,并编写每项声明。列规则见用法。

4. 接入你的 Agent(可选)
comparegraph setup --apply      # omit --apply for the plan; --scope project for an entry you commit
comparegraph doctor             # each client's state: aligned, stale, conflict, missing, plugin

为它在机器上找到的所有 Agent 注册 MCP 服务(共 12 个:Claude Code、Codex、Cursor、Gemini CLI、OpenCode、Hermes、Windsurf、Antigravity、Kiro、Copilot、Copilot CLI、Qwen Code),将一段简短的规则写入工作区的指令文件,并为 Claude Code 添加一个会话启动钩子。它只接入 Agent;不会建立索引。已经安装?comparegraph doctor 会告诉你哪些已接入。

将 Claude Code 用作插件,或使用 Agent 自带的命令

**将 Claude Code 用作插件:**一次安装即可包含七个技能、服务和钩子(需要 Claude Code 2.1.275 或更高版本;在 shell 中运行 claude plugin install … 效果相同):

/plugin install comparegraph --marketplace MassRelayAI/comparegraph

启用插件后,setup --apply 会将 Claude Code 的服务和钩子交由插件处理(对应行会显示 plugin),并仍会写入规则。

使用 Agent 自带的命令,在工作区中运行;每条命令都会写入 setup 会设置的用户级条目(Claude Code 默认的 local 作用域不会被 doctor 读取),因此 doctor 会将其识别为已对齐:

Agent命令
Claude Codeclaude mcp add --scope user comparegraph -- comparegraph --root "$PWD" mcp
Codexcodex mcp add comparegraph -- comparegraph --root "$PWD" mcp
Gemini CLIgemini mcp add -s user comparegraph comparegraph -- --root "$PWD" mcp

该服务已在 MCP Registry 中列出,名称为 io.github.MassRelayAI/comparegraph;表格列出了每个客户端对应的文件。

如需卸载,请参阅Agent、平台与卸载。免费且开源,没有付费版本;如有疑问或发现 Bug,请前往 GitHub issues,安全问题请报告至 SECURITY.md。


Why CompareGraph

六个项目共包含 106.1 MB 源代码(约 26.5 M 个 token,仅为估算);针对全部六个项目的 30 项功能,排名靠前的候选项占 336 KB(约 84 k 个 token),矩阵占 6 KB;候选项是供阅读的内容,而非结论。

在六份研究副本和 30 项功能上测得,二进制版本为 0.1.1:数据见 docs/assets/cost.json,方法与注意事项见答案大小报告。

你有许多代码库,也有一个问题:谁具备什么?逐个手动阅读无法扩展;没有行号的摘要无法核查;代码一旦变动,笔记就会过时。五项属性,每一项都可以检验:

  1. 确定性。 相同的克隆和版本会得到相同的 store_hash。comparegraph check 会重新构建并进行比较,而且增量构建必须与 build --full 相同(在计划 6 报告中的两棵大型代码树上结果相同)。
  2. 每个答案都有证据类别。 每个封装都标明 observed、derived、inferred 或 unknown,并附有 limitations[] 列表,说明引擎无法看到的内容。
  3. 每项声明都需要当前有效的引用。 has 和 partial 需要提供 --at path:start-end,且必须与已存储节点匹配;否则引擎会拒绝。引用位置发生变动后,check 会将其标记为 unknown*。
  4. none 需要缺失证明。 可以提供找不到任何结果的 --searched 词条;也可以提供相同的词条,并在 --read-hits 中列出所有已打开并排除的命中项;还可以通过图检查:四个渠道(符号、路径、社区词条和节点类型)都为空。使用 --searched 的 none 必须将 absent-check --searched 返回的排名前 10 个候选项列为已阅读(read_set);超过上限的候选项会记录为 read_capped 限制。若排名前 10 中存在未阅读的候选项,引擎会拒绝该声明并指出该候选项。
  5. 引擎中没有模型。 分数、分档、描述和候选项均根据已存储的事实计算。Agent 可以负责阅读;引擎只负责存储、检查和拒绝。
与单仓库代码图谱对比
需求单仓库代码图谱CompareGraph
按一份功能列表比较多个代码库不可以,一个索引对应一个代码库family、relate、matrix
将证据与结论保存在一起不可以声明会存储 path:start-end 和内容哈希
拒绝无法提供依据的声明不可以has 和 partial 需要有效引用;none 需要引擎执行过搜索
显示代码变动后的变化不可以check 会将变动后的引用标记为过期;矩阵会显示 unknown*
留下谁说了什么的记录不可以声明和决策均为只追加

适用对象:需要将自家产品与行业对比的团队、对一组项目开展尽职调查的人员、梳理某个领域的新手(family propose 会起草分类体系),以及需要通过 MCP 获取精简事实的编码 Agent。


工作原理

工作流:克隆代码库、构建一个图谱、建立分类体系、生成带引用的结论、记录决策、生成矩阵

三项规则
  1. 引擎绝不调用模型。 每个分数、分档、描述和候选项均根据已存储的事实计算。
  2. 每项声明都需要当前有效的引用。 has 和 partial 需要提供 --at path:start-end,且必须与已存储节点匹配。none 需要提供找不到结果的 --searched 词条,或通过图检查。否则引擎会拒绝,或写入 unknown。
  3. 声明和决策均为只追加,由数据库强制执行。 变更会作为新行写入,并注明其取代的行。最新记录生效,同时保留完整记录。

search 或 map 返回的候选项会标记为 candidate,绝不会标记为 has。设计说明见:docs/design.md。

流程图和代码环形图见:docs/design.md。

图谱中的一个家族

图谱中的一个家族:30 个特性分为 10 组,包含 6 个克隆,以及 121 个双方读者意见一致的单元格(93 个有、9 个部分有、19 个没有),图中以特性到克隆的边表示,并按判定着色

家族是一种分类体系:由多个特性组构成,每个特性都有定义和判定其是否具备的测试。一个单元格对应一个克隆和一个特性,包含一个判定(has、partial、none);对于 has 和 partial,还包含一条引用。图中展示了家族 code-graph-tools 及映射金标准中双方一致的单元格;在 Obsidian 中,comparegraph export vault 会显示同一张实时图谱。

插件和第二个引擎

外部提供方是指任何通过 stdin 和 stdout 使用 JSON 行协议的可执行程序:宿主写入一行请求,关闭 stdin,然后读取答复行,直到收到第一条 ok 答复。它打印的所有内容都是数据,并会被解析为我们自己的类型。在 comparegraph.toml 中注册一个提供方([providers.mine] command = "tools/my-provider"),或将其命名为 comparegraph-provider-<name> 并放在 PATH 中,同时在旁边放置 comparegraph-plugin.toml 清单(包含 kind、name、protocol = "1"、languages、network)。没有清单时,只有使用 --allow-unverified 才会运行。清单只是声明,不是签名:程序不会检查可执行文件的哈希值,提供方会以独立程序的形式在你的权限下运行。优先使用 comparegraph.toml 中的路径;它会先于 PATH 中找到的名称进行查找。清单中的 network 值会作为 COMPAREGRAPH_NETWORK 传递给提供方,但不会强制执行。

完整协议、安全防护、一个 25 行的 Python 提供方,以及 code-review-graph 适配器(build --providers reference,crg 后的第二个引擎):docs/dev/plugin-protocol.md。

家族和七项技能

家族是一个包含 rows.md 的目录。项目附带两个包:families/example-code-graph-tools(10 个特性,快速入门)和 families/code-graph-tools(30 个特性,映射金标准)。列规则、同义词和 family propose 见用法。

该方法由 skills/ 中的七项纯 Markdown 技能构成,任何 Agent 都可以阅读。每项技能都会说明何时使用相应动词、准确的命令、引擎会拒绝什么,以及如何进行检查。在 Claude Code 中,这些技能和 MCP 服务会作为同一个插件一同提供(开始使用);其他 Agent 可以从克隆仓库中读取 skills/ 目录。

技能简介
using-comparegraph入口:适用哪项技能、工作流顺序,以及保持判定诚实的习惯。
adding-a-clone将克隆注册为比较对象或根节点,解析它并验证构建。
defining-a-family编写一个包,用 family propose 为其创建初始内容,并安全地重新加载。
mapping-features查找候选证据并评估相关性。候选项只是线索,绝不是判定。
writing-a-claim记录有、部分有、没有或未知,并附上当前可解析的引用。
recording-a-decision记录某人选择采纳、拒绝或暂缓,并注明姓名和理由。
reading-the-vault阅读矩阵、vault 和 JSON 导出,并正确理解缺口。

使用方法

docs/ 下的四个页面提供参考资料;从这里点击几次即可访问每一页。

你将获得什么

四个层级,每个层级都回答它如何得出结论:仓库概况、模块社群、符号(调用方、被调用方、影响范围、测试、入口点、死代码候选项)以及声明(结论、引用、作者、轨迹)。每个答案都是一个带有证据类别的 JSON 信封。用法中有表格和一个真实的 show 答案。

CLI 参考

全局选项 --root 和 --pretty,以及分为四组的动词:构建与检查、图查询、家族与声明、导出与 Agent。命令列出了每个动词及其重要标志。

MCP 工具

comparegraph mcp 通过 stdio 提供十八种工具(十七种只读,一种写入:comparegraph_claim);特意没有 decide 工具。MCP 工具中有表格;docs/catalog.json 是机器可读的来源,catalog --check 会在 CI 中对其进行校验。

知识库、配置、库

comparegraph export vault --out ./vault 会生成 Obsidian 风格的 Markdown 知识库,其中的笔记带有自动生成的描述。设置项包括 --root 和 COMPAREGRAPH_* 环境变量,而 crate 会将每个动词作为函数开放出来。三者都在用法中介绍。


效果如何

以下所有数字均摘自本仓库中的报告;引用前请先阅读其中的注意事项。所有测量均于 2026-10-13 在一台共享主机上完成。

调用边:在包含 750 个站点的人工标注金标准上,各引擎的精确率和召回率:CompareGraph 为 0.995 / 0.834(合并结果),code-review-graph 通过适配器为 0.956 / 0.736,codegraph 为 0.708 / 0.506。

规模:四个代码树中解析的文件数与节点、边和构建秒数的关系,以及在包含 129 万条边的 openclaw 图上的查询时间。

在人工标注的调用点金标准上,CompareGraph 的合并精确率达到 0.995,召回率达到 0.834;相比之下,code-review-graph 通过适配器的精确率 / 召回率为 0.956 / 0.736,codegraph 为 0.708 / 0.506。它构建一个含 38,258 个文件的仓库耗时 499.6 秒,并能在 2.5 秒内回答针对含 129 万条边的图的 impact 查询;下方表格列出了注意事项。数据:accuracy.json、scale.json;一致性报告:引擎一致性。

调用边与人工标注金标准的对比

金标准:从每个项目自身的源代码中随机抽取 150 个调用点(总计 750 个),由两位读者在同一套标准下独立标注 (两位读者都是语言模型 Agent;标注时都知道各引擎的结果)。final 仅保留双方意见一致的行。金标准的制作方法:fixtures/gold/README.md。精确率以已回答的站点为分母,召回率以指向仓库内部目标的站点为分母(以括号标出)。Kappa 是两位读者对调用目标判断的 Cohen's kappa。

项目(站点数)读者 kappaCompareGraph P / Rcode-review-graph 通过适配器 P / Rcodegraph P / R
graphmind (48)0.980.973 / 0.7500.963 / 0.5420.650 / 0.813
srclight (50)0.961.000 / 0.7801.000 / 0.7401.000 / 0.320
code-review-graph (53)1.001.000 / 0.9251.000 / 1.0000.913 / 0.396
hono (36)0.891.000 / 0.6670.880 / 0.611无回答 / 0.000
caddy (48)0.921.000 / 1.0000.897 / 0.7290.623 / 0.896
合并结果 (235)0.950.995 / 0.8340.956 / 0.7360.708 / 0.506
汇总计数:CompareGraph 在已回答的 197 个站点中答对 196 个,在 235 个站点中答对 196 个;codegraph 在已回答的 168 个站点中答对 119 个,在 235 个站点中答对 119 个。
来源:docs/reports/2026-10-12-engine-parity.md 中的“After Plan 6”和
“codegraph head-to-head”部分;kappa 来自“After Plan 5”中的读者间一致性(汇总 is_call kappa 为 0.94)。
复现:scripts/gold-score.sh <project-copy> fixtures/gold/<project>/calls.jsonl --binary <comparegraph>、
scripts/compare-engines.sh(所有引擎)、scripts/h2h-codegraph.sh(codegraph)。

阅读这些数据时请注意以下限制。每个项目的站点数为 36 到 53,因此单个项目的噪声约为 0.1。caddy 的 1.000 表示“每个已标注站点”(在 Go 工作开始前抽取的 48 个站点),而 hono 的精确率基于 24 个已回答站点。codegraph 以 --graph-only 模式运行,每个站点调用一次 get_callees;如果它列出了多个同名目标,只要其中包含正确目标,我们的评分器就会将该站点计为正确。hono 上没有任何站点得到回答,因为它找到的最具体节点是一个没有调用边的匿名箭头函数;未运行通过最近的具名祖先进行查找的步骤。fixtures/gold/FLOORS.json 中的最低标准由 crates/comparegraph/tests/gold.rs 断言,且只会提高。

构建与查询耗时

数据见 docs/assets/scale.json,来源是验证报告(最后一节)和 Plan 6 报告。

指标结果来源章节
五个研究项目的冷构建每个项目耗时 0.8 秒至 6.4 秒;与 codegraph 对比,我们的耗时 : codegraph 耗时在四个项目上为 0.50 至 1.29,在 hono 上为 5.12,已扣除 codegraph 固定的 12 秒嵌入模型加载时间head-to-head
冷构建与 code-review-graph 对比快 1.6 倍至 3.4 倍,仅给出比率(主机负载为 37 至 73)After Plan 5
hermes-agent,10,288 个文件全量构建 93.2 秒;空操作重建 2.0 秒;编辑单个文件 47.5 秒;存储哈希与 --full 相同After Plan 6,build time and scale
openclaw,38,258 个文件全量构建 499.6 秒(比 8 分钟的目标慢了 20 秒);空操作 7.5 秒;编辑单个文件 289.7 秒;最大 RSS 为 3.54 GBAfter Plan 6,build time and scale
在含 1.29M 条边的 openclaw 图上查询impact 2.5 秒,traverse 3.6 秒,dead-code 1.6 秒;RSS 为 12 至 15 MBAfter Plan 6,query bounds

报告中的注意事项:构建测试在 40 核机器上运行,负载为 6 至 15,因此应关注比率,而非秒数。hermes-agent 的构建比 Plan 6 的 B1 阶段结束时慢 1.40 倍;这是已测得但原因未明的回归。查询上限是在默认设置下,对一个枢纽符号(3,156 个调用者)各运行一次测得的。一个包含 4.4k 个文件的私有产品单体仓库构建耗时 103 秒(53k 个节点),其三个测试框架比较器耗时分别为 25 秒、81 秒和 436 秒(验证报告,最后一 节);在产品上,对 12 个特性执行排序后的 map 耗时 1.2 秒,在含 454k 个节点的比较器上耗时 12.1 秒。 复现:scripts/compare-engines.sh、scripts/h2h-codegraph.sh,以及 COMPAREGRAPH_PROFILE=1 comparegraph build <repo>。

与 code-review-graph 的重合度(符号和边)

在三个项目上计算节点和已解析边的 Jaccard 系数(一致性报告中的“After the review fixes”;符号和继承关系数据来自“After the precision and recall pass”):

指标graphmindsrclightcode-review-graph
符号(函数、方法、类、类型)0.9460.9880.939
调用,已解析0.7130.9690.963
导入,文件到文件0.6470.9040.901
测试(测试到被测符号)0.1190.6050.513
继承与实现0.9380.6670.730

测试链接是三个项目中表现较弱的部分。复现:scripts/compare-engines.sh。

一致性测试样例(参考引擎)

comparegraph conform reference 会运行 fixtures/ 中的黄金测试样例;低于基准(节点召回率和精确率 0.95,边召回率和精确率 0.85)的提供方将被拒绝。本次提交的输出:

测试样例节点召回率 / 精确率边召回率 / 精确率
go1.00 / 1.001.00 / 1.00
java1.00 / 1.001.00 / 1.00
python1.00 / 1.000.952 / 1.00
rust1.00 / 1.001.00 / 1.00
typescript1.00 / 1.000.955 / 1.00

这五个测试样例来自五个小型代码库:它们用于验证提取器能否生成经人工核查的图,而非涵盖每种语言特性。

特性映射黄金标准

第二个黄金标准评估 map(从特性映射到代码)和基于图的缺失检查:以 families/code-graph-tools/rows.md 中的 30 项特性,对照六个代码图工具的研究副本,共 180 组配对,由两位独立读者阅读,其中 121 组达成一致,59 组存在分歧,因此未计入评分(有 13 个一致认定的位置在引擎图中没有节点)(方法和 kappa 系数: fixtures/gold-map/README.md)。排名依据三个克隆版本进行调优,并在另外三个版本上测量一次;留出集这一列才是面对工具从未见过的代码库时的真实表现。

precision@5recall@5备注
map,留出集克隆版本(CodeGraph、codanna、ripwire)0.0380.149应关注的数值
map,调优用克隆版本(graphmind、srclight、code-review-graph)0.1610.523拟合结果
map,六个版本合并0.1130.393排名之前为 0.046 / 0.141
对相同词项进行普通全文 OR 搜索,合并结果0.0460.141我们自己的引擎,不进行排名
对相同词项使用 codegraph symbol_search,合并结果0.0360.118按相同规则评分
缺失检查,合并结果1.00(1 次调用)0.05(19 项中的 1 项)从不出错,但很少给出结果

目标(留出集 recall@5 达到或超过 0.50,precision@5 为 0.30)尚未实现:对于留出集中的特性,只有三分之一的黄金位置位于前 200 个候选结果中,因为存储内容只有符号名称、路径和社区关键词,没有文档文本;下一步的改进方向见路线图。relate 区间是已知的弱信号:家族之外的代码库得分仍高于 0.5(docs/decisions.md,「Plan 7 IMP」);运行 relate 之前,该克隆版本在矩阵中会显示 not run,并在 limitations[] 中注明(matrix --relate 会先为缺失项评分)。来源: docs/reports/2026-10-14-mapping-gold-first-measurement.md 和一致性报告中的「Feature-mapping baselines」。复现方法:scripts/map-score.sh、scripts/map-baselines.sh。

回答大小

对于六个研究副本中的 30 项特性,map 的回答总计 336 KB(估算约 84 k 个 token),而源代码为 106.1 MB(约 26.5 M 个 token):比例为 316 比 1。这些回答是排序后的阅读位置,并非结论(上文的留出集 recall@5 为 0.149),因此读者仍需打开文件。方法、各克隆版本的数据和注意事项:docs/reports/2026-10-14-answer-size.md。 复现方法:运行 scripts/answer-size.sh,然后运行 node scripts/readme-assets.mjs。

## 语言

共解析 29 种语言,其中 5 种会进行深度解析,4 种有经过测量的黄金标准。请查看各层级,而不是只看标题。 每种语法(共 32 个 ID:tsx、jsx 和 mjs 分别计数)都有一个固定样例,并在 fixtures/languages/ 中提交了图摘要,因此,任何会改变图的语法版本升级都会导致 CI 失败,并需要有意重新生成黄金标准。

层级语言引擎提取的内容
已解析(29)typescript(+tsx)、javascript(+jsx、mjs)、python、rust、go、java、ruby、php、swift、kotlin、dart、scala、c、cpp、csharp、objc、perl、r、bash、powershell、sql、yaml、toml、hcl、dockerfile、graphql、css、scss、html符号、文件、包含关系、导入,以及提取器报告的直接调用。配置和标记语言(yaml 到 html)只会产生符号;比较时应将其视为噪声。
已解析绑定(5)typescript/javascript、python、rust、go、java还会提取解析到文件的导入、声明类型、类型化接收者、barrel 再导出、继承(extends、implements)和测试关联;按设计,go 没有继承边
经过测量typescript(hono、graphmind、code-review-graph)、python(srclight、code-review-graph)、rust(graphmind)和 go(caddy)有调用边黄金标准;所有 5 种已解析绑定的语言都有一致性固定样例参见黄金标准表;java 只有固定样例
限制、已知缺口和跳过的文件

注册表包含 32 个标识符(tsx、jsx、mjs 与其所属语言一起计数)。未解析绑定的语言只会按名称绑定调用, 置信度为 0.5,且仅限同一语言系列。已知缺口:Java 的 new T() 没有调用点;Rust trait 方法及其实现共享一个限定名称;Go 中对方法结果、range 变量和泛型的调用目前都无法绑定 (计划 7 候选项)。每次构建都会跳过以下目录: node_modules、target、dist、build、.git、vendor、__pycache__、.venv、venv;被 .gitignore 或 .ignore 排除的文件;以及经过压缩的文件。跳过的文件数会计入运行结果的 limitations。


Agent、平台与卸载

comparegraph setup 会写入配置项;comparegraph doctor 会报告每个客户端的状态(aligned、stale、conflict、 missing、unverified、plugin)。--client all 只会作用于看起来已安装的客户端。plugin:当启用 comparegraph@comparegraph 且使用 --client all 时,交由 Claude Code 插件处理;指定 --client claude 可强制写入。若不带参数的 comparegraph 命令在 PATH 中解析到已注册的二进制文件,则视为已对齐。setup --apply 只会添加配置,并创建名为 <file>.bak-<unix-seconds> 的备份;如果配置项不同,除非传入 --force,否则不会修改。

setup 还会向 Agent 的指令文件写入规则块,并为 Claude Code 添加一个 SessionStart hook;详情请参阅用法。

十二个客户端、对应文件及卸载时要移除的内容
Agent--client配置(用户 / 项目)规则文件卸载时移除
Claude Codeclaude~/.claude.json / .mcp.jsonCLAUDE.mdmcpServers.comparegraph
Codexcodex~/.codex/config.toml / .codex/config.tomlAGENTS.md[mcp_servers.comparegraph] 表
Cursorcursor --scope project.cursor/mcp.json(用户范围未经验证,已跳过)AGENTS.mdmcpServers.comparegraph
Gemini CLIgemini~/.gemini/settings.json / .gemini/settings.jsonGEMINI.mdmcpServers.comparegraph
OpenCodeopencode~/.config/opencode/opencode.json / opencode.jsonAGENTS.mdmcp.comparegraph
Hermeshermes~/.hermes/config.yaml(无项目范围)AGENTS.mdmcp_servers.comparegraph
Windsurfwindsurf~/.codeium/windsurf/mcp_config.json(无项目范围)AGENTS.mdmcpServers.comparegraph
Antigravityantigravity~/.gemini/antigravity/mcp_config.json(无项目范围)GEMINI.mdmcpServers.comparegraph
Kirokiro --scope project.kiro/settings/mcp.json(无用户范围)AGENTS.mdmcpServers.comparegraph
GitHub Copilot(VS Code)copilot --scope project.vscode/mcp.json(无用户范围).github/instructions/comparegraph.instructions.mdservers.comparegraph
GitHub Copilot CLIcopilot-cli~/.copilot/mcp-config.json(无项目范围)AGENTS.mdmcpServers.comparegraph
Qwen Codeqwen~/.qwen/settings.json(无项目范围)GEMINI.mdmcpServers.comparegraph

要卸载规则块,请删除从 到 的行;要卸载 hook,请删除命令为 comparegraph doctor --brief 的 SessionStart 条目。

平台:每个版本都会在各自的运行器上构建 linux-x64、linux-arm64、darwin-arm64、darwin-x64 和 win32-x64,并将每个构建作为发布资源提供,列表见 SHA256SUMS;Homebrew tap 会随版本更新。测试套件仅在 linux-x64 上运行。凡是能运行 Rust 1.85+ 的环境,都可以从源代码构建。仅限本地运行:引擎不会发起网络调用(如何自行检查,以及尚未强制执行的内容:常见问题);MCP 服务通过 stdio 通信;存储是一个由你掌控的 SQLite 文件。

卸载:移除上述配置项(在启用了插件的 Claude Code 中,使用 /plugin uninstall comparegraph),然后删除二进制文件(~/.local/bin/comparegraph、brew uninstall comparegraph 或 cargo uninstall comparegraph),并在每个工作区中运行 rm -r .comparegraph。


常见问题与故障排查

  • 常见问题:它与 code-review-graph 和 codegraph 有何不同(以及它们具备而它不具备的功能)、是否使用模型(不使用)、是否会替你采纳代码(不会)、为什么有些调用边的权重是 0.5、它是否免费以及由谁支持、如何确认它不会发送任何内容、它会如何处理你不信任的代码库,以及它不会做什么。
  • 故障排查:十二种症状及其原因,从 no workspace 和被拒绝的 none 声明,到无声无息的会话启动钩子。
  • 从 comparegraph doctor 开始:它会报告存储、每个提供方以及每个客户端的注册情况。

路线图

以下内容目前都尚不存在,顺序由维护者决定。完整列表及每项背后的测量结果:docs/roadmap.md。

  • 下一个经过测量的改进方向:在存储中增加文本通道(文档注释和签名令牌)以及按家族划分的同义词,以便在未见过的克隆中使用 map。
  • 为已采纳的功能提供 port-kit 导出;导出功能统计;导入声明以及 family import/export。
  • 图谱对齐查询、C/C++/C# 解析器、按文件划分的分析缓存,以及更多客户端(Zed、Continue)。

文档

文档内容
docs/reports/README.md所有测量结果的索引,包含结论和状态
docs/dev/scripts.md每个脚本复现哪些数字
docs/dev/release.md如何发布:标签、工作流、注册表条目、tap,以及发布后要检查的内容
docs/dev/plugin-protocol.md外部引擎使用的 JSON 行协议、限制、一致性要求,以及一个 25 行示例
docs/dev/pid-namespaces.md测试为何在 PID 命名空间中运行,以及如何启用它
docs/dev/language-fixtures.md每种语法一个 fixture、已提交的摘要,以及语法升级后如何重新生成基准
docs/usage.md你能获得什么、配置、保险库、库的用法
docs/commands.mdCLI 参考
docs/mcp-tools.md18 个 MCP 工具
docs/faq.md、docs/troubleshooting.md问题与解决方法
docs/catalog.json18 个 MCP 工具和 9 个错误代码,由程序生成并由 CI 检查
docs/decisions.md每项临时决定、替代方案,以及可能促使其改变的因素
docs/design.md设计
docs/roadmap.md后续计划、每项计划留下的内容,以及每项背后的测量结果
docs/THIRD_PARTY_NOTICES.md改编代码的来源和许可证
skills/七种方法技能
fixtures/gold/README.md如何绘制和标注调用边基准
fixtures/gold-map/README.md如何制作功能映射基准
families/示例包和包含 30 项功能的 code-graph-tools 包
CHANGELOG.md各版本的变更
CONTRIBUTING.md、AGENTS.md、CODE_OF_CONDUCT.md参与贡献:环节、不变量、禁止事项清单

贡献、许可证、第三方代码

安全问题请发送至 [email protected],或通过私人安全公告渠道报告(SECURITY.md);行为准则问题请发送至同一地址(CODE_OF_CONDUCT.md)。

请先阅读 CONTRIBUTING.md 和 AGENTS.md。修复错误时,先编写一个失败的测试;提取变更时,扩展一致性测试样例;引擎中不得调用模型或网络。CI 会运行 clippy、测试套件、一致性摘要和语言摘要,以及 cargo-deny(许可证、公告、来源;deny.toml)。随附的解析器层来自 graphmind(MIT);详见 docs/THIRD_PARTY_NOTICES.md。许可证:Apache-2.0,详见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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