mcpField
G
graphify

graphify

github.com/howell5开发12.0k 次安装11 周前更新
代码仓库

关于 graphify

graphify 是一款基于命令行的 Agent 技能,为源文件、符号及其关系建立结构化索引。开发者和编码 Agent 可查询索引定位代码,并在编辑后手动更新。

主要功能

  1. 01基于 AST 建立代码结构索引
  2. 02不区分大小写搜索符号
  3. 03增量更新及基于 Git 差异的更新
  4. 04支持 13 种编程语言

适用场景

  1. 01探索不熟悉的代码库并查找符号
  2. 02在广泛文本搜索前定位代码
  3. 03代码编辑后刷新索引

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/howell5/willhong-skills --skill graphify

安装后在 Claude Code 中输入/graphify确认已加载。

详细介绍

graphify — 代码导航层

代码库的结构化索引。在搜索代码之前,了解其中包含什么、位于何处,以及彼此之间如何关联。

需要 CLI: npm i -g graphify-ts(使用 Bun 运行时)。

仅手动更新。 图不会自动刷新——当你需要更新索引时,由你或用户运行 graphify update 或 graphify build。这可避免在 git 工作树和其他多会话设置中发生写入冲突。

首次设置(每台机器仅需一次)

npm i -g graphify-ts    # install CLI

然后,每个项目运行一次:

graphify build .

之后,只要索引与代码不一致,就手动刷新(参见下文的 graphify update)。

命令

/graphify build — 构建索引(首次构建或完整重建)
graphify build .

扫描所有源文件,提取 AST 结构,并保存到 graphify-out/graph.json。

报告:“已为 {files} 个文件、{nodes} 个符号和 {edges} 个关系建立索引”

/graphify query <name> — 搜索符号
graphify query graphify-out/graph.json <name>

不区分大小写地搜索。返回匹配的符号及其文件位置。

/graphify update <files...> — 编辑后增量更新
graphify update graphify-out/graph.json <file1> [file2...]

仅重新提取指定文件。如果你计划在同一会话中再次查询图,请在编辑代码后运行此命令。

/graphify auto-update — 根据 git diff 批量更新
graphify auto-update [dir]

通过 git diff 和未跟踪文件计算发生变更的代码文件,然后调用 updateIndex。没有需要处理的内容时不会输出任何信息。批量编辑后,无需逐一指定文件即可刷新索引。

适用场景

搜索代码之前: 如果 graphify-out/graph.json 存在,请先查询它,再使用 Glob 或 Grep。图会告诉你哪些文件包含哪些符号。这是它的主要价值——用结构化查找取代盲目的关键词搜索。

编辑之后: 如果你要在同一会话中再次查询图,请运行 graphify update <edited-files>(批量刷新时可运行 graphify auto-update)。否则无需操作——下次运行 graphify build 或更新时,索引会跟上代码变更。

探索不熟悉的代码: 运行 /graphify query <concept>,无需猜测文件名即可找到入口点。

支持的语言

Python、JavaScript、TypeScript(JSX/TSX)、Go、Rust、Java、C、C++、Ruby、C#、Kotlin、Scala、PHP

图输出

保存为 graphify-out/graph.json:

{
  "nodes": [{ "id": "main::app", "label": "App", "sourceFile": "main.py", "sourceLocation": "main.py:5" }],
  "edges": [{ "source": "file::main", "target": "main::app", "relation": "contains", "confidence": "EXTRACTED" }],
  "metadata": { "files": 10, "nodes": 45, "edges": 62 }
}

边关系:contains、method、imports、imports_from、calls(INFERRED)、inherits

评论

支持 Markdown