Graphify v0.4.8 源码全面解析 + GitNexus 替换评估报告,单页深色主题。 - public/index.html: ~600 行报告(架构/流程/逐模块/GraphRAG 验证/GitNexus 对比/建议) - Dockerfile + nginx.conf: Coolify 静态部署 - .memory/analysis.md: 完整调研笔记 - graphify/ 源码快照不入库(作为只读参考) 结论: 不要替换 GitNexus, 可选抄 Graphify 7 个细节。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.6 KiB
3.6 KiB
name, description, type
| name | description | type |
|---|---|---|
| graphify-analysis 调研笔记 | Graphify v0.4.8 源码解析 + GitNexus 替换评估的完整调研记录 | project |
立项背景
2026-04-13 用户看到营销推文("Graphify 用 GraphRAG 技术……71.5 倍 Token 节省")后要求评估:
- 这项目是不是噱头?
- 要不要把工作看板的代码图谱(GitNexus)换成这个?
关键判断
Graphify 本质: tree-sitter AST + networkx + Leiden + 10 种导出 + 9 种 AI 平台集成脚本。 8,237 行 Python,零 LLM 硬依赖,"智能"部分委托给宿主 Agent(Claude Code / Codex / ...)。
"GraphRAG" 营销: 与微软原论文定义(LLM 抽实体+关系+写社区摘要)不符。Graphify 只做了社区检测这一步。
"71.5× token 节省": = 整个语料 token 数 / 单次 BFS 子图 token 数。不含首次建图的 subagent token 成本。固定 5 个英文问题 + 子串匹配选起点。数字成立但有水分。
GitNexus vs Graphify 对比结论
| 维度 | GitNexus | Graphify |
|---|---|---|
| 规模 | 31,367 行 TS | 8,237 行 Py |
| 类型系统 | symbol-table + type-env + type-extractors | 无 |
| Python MRO | 有 (mro-processor.ts) |
无 |
| 框架识别 | 有 (framework-detection.ts) |
无 |
| 入口打分 | 有 (entry-point-scoring.ts) |
无 |
| 跨文件 resolver | 完整 resolvers/ 子系统 |
只 Python 130 行 |
| 多项目 UI | Web @ 4090 | 每项目一目录 |
| 诚信度标签 | 未知 | EXTRACTED/INFERRED/AMBIGUOUS |
GitNexus 在代码静态分析维度领先一个量级。不要替换。
可从 Graphify 借鉴给 GitNexus 的 7 个点
- 三档置信度标签 +
confidence_score(Graphifyextract.py/report.py) - Markdown 剥 YAML frontmatter 再哈希(
cache.py:10-17)—— metadata 变更不触发重抽取 - 论文启发式识别
_looks_like_paper(detect.py:68,13 条正则) - 敏感文件过滤
_SENSITIVE_PATTERNS(detect.py:33-40) - SSRF 防护整套(
security.py:14-90) - 大社区 25% 自动拆分(
cluster.py:93) - URL 分类抓取(
ingest.py,297 行,twitter/arxiv/github/youtube/pdf/image/web)
技术亮点(Graphify 值得一看的 8 件事)
LanguageConfigdataclass 模式(extract.py:24)—— 13 语言共用 200 行通用 walker- SHA256 内容缓存 + Markdown frontmatter 剥离(
cache.py) - Python 跨文件
_resolve_cross_file_imports(extract.py:2110-2240)—— 整个项目唯一真正跨文件推理 - 单 HTML 交互图(
export.py:329,内嵌 vis.js) - 9 平台集成脚本(
__main__.py:49-105) - SSRF 防护默认开启
- 大社区自动拆分(防 Leiden 退化)
- 置信度三档 + 分数
技术短板(9 条)
- 22 语言"支持"不均匀 —— 只有 Python 做了跨文件 uses 推断
_extract_python_rationale(extract.py:1011)基于 docstring 的 heuristics 脆- 查询不是语义搜索,是子串 +1/+0.5 打分
_make_id用[^a-zA-Z0-9]+正则 —— 中文标识符直接 collapse 成空串- 静态 AST 解析,看不穿 C++ 模板 / Python metaclass / JS Proxy
- benchmark 71.5× 固定 5 个英文问题
- 无类型系统 / 无 symbol table / 无 MRO
_is_file_node启发式在非 Python 语言误伤- PyPI 名
graphifyy(两个 y,赶时间)
产出
public/index.html— 单页深色主题报告(~600 行 HTML)- 本地快照:
graphify/子目录(v0.4.8, commit04e2960) - 部署目标:
https://graphify-analysis.kang-kang.com(Coolify 静态)
用户决策记录
- 不换 GitNexus(用户确认)
- 立项并部署网页(用户 2026-04-13 指示)
- 子域名:
graphify-analysis.kang-kang.com - 可见性: public(无密钥)
- 部署方式: Coolify + Dockerfile(nginx:alpine)