Files
graphify-analysis/.memory/analysis.md
kang 857cd7d01b 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>
2026-04-13 18:27:54 +08:00

83 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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)