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>
83 lines
3.6 KiB
Markdown
83 lines
3.6 KiB
Markdown
---
|
||
name: graphify-analysis 调研笔记
|
||
description: Graphify v0.4.8 源码解析 + GitNexus 替换评估的完整调研记录
|
||
type: project
|
||
---
|
||
|
||
## 立项背景
|
||
|
||
2026-04-13 用户看到营销推文("Graphify 用 GraphRAG 技术……71.5 倍 Token 节省")后要求评估:
|
||
1. 这项目是不是噱头?
|
||
2. 要不要把工作看板的代码图谱(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 个点
|
||
|
||
1. 三档置信度标签 + `confidence_score`(Graphify `extract.py` / `report.py`)
|
||
2. Markdown 剥 YAML frontmatter 再哈希(`cache.py:10-17`)—— metadata 变更不触发重抽取
|
||
3. 论文启发式识别 `_looks_like_paper`(`detect.py:68`,13 条正则)
|
||
4. 敏感文件过滤 `_SENSITIVE_PATTERNS`(`detect.py:33-40`)
|
||
5. SSRF 防护整套(`security.py:14-90`)
|
||
6. 大社区 25% 自动拆分(`cluster.py:93`)
|
||
7. URL 分类抓取(`ingest.py`,297 行,twitter/arxiv/github/youtube/pdf/image/web)
|
||
|
||
## 技术亮点(Graphify 值得一看的 8 件事)
|
||
|
||
1. `LanguageConfig` dataclass 模式(`extract.py:24`)—— 13 语言共用 200 行通用 walker
|
||
2. SHA256 内容缓存 + Markdown frontmatter 剥离(`cache.py`)
|
||
3. Python 跨文件 `_resolve_cross_file_imports`(`extract.py:2110-2240`)—— 整个项目唯一真正跨文件推理
|
||
4. 单 HTML 交互图(`export.py:329`,内嵌 vis.js)
|
||
5. 9 平台集成脚本(`__main__.py:49-105`)
|
||
6. SSRF 防护默认开启
|
||
7. 大社区自动拆分(防 Leiden 退化)
|
||
8. 置信度三档 + 分数
|
||
|
||
## 技术短板(9 条)
|
||
|
||
1. 22 语言"支持"不均匀 —— 只有 Python 做了跨文件 uses 推断
|
||
2. `_extract_python_rationale`(`extract.py:1011`)基于 docstring 的 heuristics 脆
|
||
3. 查询不是语义搜索,是子串 +1/+0.5 打分
|
||
4. `_make_id` 用 `[^a-zA-Z0-9]+` 正则 —— 中文标识符直接 collapse 成空串
|
||
5. 静态 AST 解析,看不穿 C++ 模板 / Python metaclass / JS Proxy
|
||
6. benchmark 71.5× 固定 5 个英文问题
|
||
7. 无类型系统 / 无 symbol table / 无 MRO
|
||
8. `_is_file_node` 启发式在非 Python 语言误伤
|
||
9. PyPI 名 `graphifyy`(两个 y,赶时间)
|
||
|
||
## 产出
|
||
|
||
- `public/index.html` — 单页深色主题报告(~600 行 HTML)
|
||
- 本地快照: `graphify/` 子目录(v0.4.8, commit `04e2960`)
|
||
- 部署目标: `https://graphify-analysis.kang-kang.com`(Coolify 静态)
|
||
|
||
## 用户决策记录
|
||
|
||
- **不换 GitNexus**(用户确认)
|
||
- **立项并部署网页**(用户 2026-04-13 指示)
|
||
- **子域名**: `graphify-analysis.kang-kang.com`
|
||
- **可见性**: public(无密钥)
|
||
- **部署方式**: Coolify + Dockerfile(nginx:alpine)
|