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

3.6 KiB
Raw Permalink Blame History

name, description, type
name description type
graphify-analysis 调研笔记 Graphify v0.4.8 源码解析 + GitNexus 替换评估的完整调研记录 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)