最近在做一个开源SAN 项目 —— 一个终端原生的 AI Agent,用 Go 写的A single ~12 MB binary with zero runtime dependencies。项目有 490 个 Go 文件,分布在 30 多个 package 中。我目前的开发方式是 vibe coding:用 Claude Code 在终端里写代码,不用 IDE。
这就带来一个问题:没有 IDE,怎么导航代码?
IDE vs 终端:代码导航的差距IDE 开发者点击 → 跳转定义 ✓右键 → Find References ✓Ctrl+Click → 依赖链 ✓一次点击搞定 ✓终端开发者grep → Read → grep → ...5-6 轮循环 😫每次消耗 context tokens 😫需要更好的方案!
AI 编程助手的上下文窗口有限。在终端里,每一次 grep + Read 都在消耗 token。要理解 "ProviderSelector 和 HookEngine 是怎么连接的",你可能需要:
grep -r "ProviderSelector" internal/ # 第 1 轮
cat internal/llm/registry.go # 第 2 轮
grep -r "HookEngine" internal/ # 第 3 轮
cat internal/hook/engine.go # 第 4 轮
grep -r "ProviderSelector" internal/hook/ # 第 5 轮
# ...还在找...
5-6 轮操作,几百个 token,就为了回答一个依赖关系的问题。
IDE 用户一次点击就搞定了。我们终端用户呢?
Graphify[1] 是一个开源工具,它把整个代码库映射成一个可查询的知识图谱。一条命令替代多轮 grep/Read:
# 谁依赖 ProviderSelector?
/graphify affected "ProviderSelector"
# NewAgent 到 Session 的依赖链?
/graphify path "NewAgent" "Session"
# HookEngine 的邻接关系?
/graphify explain "HookEngine"

我们在 SAN 项目上跑了一遍 Graphify,构建出的图谱:
指标 | 数值 |
|---|---|
节点数 | 7,123 |
边数 | 13,775 |
社区数 | 487(全部自动命名) |
准确度 | 85% AST 提取 · 15% 推断 · 0% 模糊 |
导入循环 | 无 ✓ |
最有趣的发现 —— 核心节点(God Nodes):
1.contains() — 211 条边,连接 40 多个社区,是全项目的超级枢纽
2.PluginSelector — 72 条边
3.ProviderSelector — 60 条边
4.NewEngine() — 58 条边
5.NewData() — 55 条边
这些节点是修改代码时最需要注意的地方 —— 改动它们可能影响半个项目。
要加一个新的 LLM Provider,先了解现有的模式, 在Claude Code中运行:
/graphify query "how are LLM providers registered"
/graphify path "NewProvider" "Registry"
图谱会返回 Provider 注册的完整路径,以及所有相关的节点和边。不用 grep 五六个文件。

发现了一个权限相关的 Bug,需要评估影响范围:
/graphify affected "PermissionBridge
图谱通过反向遍历,立即告诉你谁在调用这个组件 —— 比逐个文件 grep 快得多。

想拆分 contains() 这个 211 条边的超级枢纽,先看它的邻居:
/graphify explain "contains()"
图谱返回所有连接的节点和社区,帮你判断拆分是否安全。


从这里可以看出有,这绝对是个开发辅助利器.
SAN 项目有很完善的文档体系 —— docs/packages/ 下每个 package 都有设计文档,package-map.md 清晰地标注了层级和依赖边界。Graphify 不替代这些。
docs/packages/*.mdGraphify 替代的不是文档,而是那 5-6 轮 grep/Read 循环。
# 1. 安装(需要 Python 3.10+)
uv tool install graphifyy
# 2. 注册到 Claude Code graphify install
# 3. 构建图谱 /graphify .
# 4. 开始查询 /graphify query "你的问题"
构建完成后,会生成三个核心文件:
· graph.html — 浏览器打开,交互式探索图谱,点击节点、按社区过滤, 如下这个类似的星云图

我们只看一个Plugin Selector UI组件的方法调用

· graph.json — 查询命令的数据源
· GRAPH_REPORT.md — 自动生成的分析报告,包含核心节点、社区地图、意外连接
图谱更新:代码改动后,增量更新只需 graphify update .,仅做 AST 解析,不消耗 LLM token。
很多人觉得"没有 IDE 就是缺了什么"。但想想看 —— Claude Code 本身就是在终端里开发的,它不需要IDE。
SAN项目也没有.vscode/ 或 .idea/ 文件。
Vibe coding的范式下,终端不是IDE的替代品,而是第一等公民。我已经有半年没有使用过任何的IDE进行开发了。Graphify 就是这个范式下的代码导航工具 —— 专门为终端 + AI 助手的工作流设计。
终端原生开发的标配不是IDE的降级版,而是为这个范式量身打造的工具。
参考链接
[1] https://github.com/safishamsi/graphify
[2] https://github.com/genai-io/san
欢迎交流与转载,注明出处即可。