chore: 立项 graphify-analysis

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>
This commit is contained in:
kang
2026-04-13 18:27:54 +08:00
commit 857cd7d01b
8 changed files with 771 additions and 0 deletions

82
.memory/analysis.md Normal file
View File

@@ -0,0 +1,82 @@
---
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)