从代码到知识图谱:一个端到端的代码理解系统架构剖析
从代码到知识图谱:一个端到端的代码理解系统——工作原理、算法实现与数学形式化
本文以 Karpathy「用 LLM 编译个人知识库」(LLM Wiki) 为思想源头,以开源项目 Graphify 的工程实现为剖析对象。Graphify 将 Claude Code 的 Skill 机制与图算法结合,实现了知识的自动提取、拓扑聚类与可审计查询。全文按「总—分—总」展开:先讲工作原理(§一),再逐阶段深入技术实现(§二–§七),最后总结回到原理(§八)。
本文以 Karpathy「用 LLM 编译个人知识库」(LLM Wiki) 为思想源头,以开源项目 Graphify 的工程实现为剖析对象。Graphify 将 Claude Code 的 Skill 机制与图算法结合,实现了知识的自动提取、拓扑聚类与可审计查询。全文按「总—分—总」展开:先讲工作原理(§一),再逐阶段深入技术实现(§二–§七),最后总结回到原理(§八)。
0.1 参考文献链接
微信网页端可能要求验证;以本地剪藏或已登录会话为准。
0.2 Karpathy 推荐的知识管理LLM-Wiki的核心设计
- 问题定位
Karpathy(约 2026 年 4 月)提出「用 LLM 编译知识」:让模型像图书管理员一样维护可增长的个人知识库。开源项目 Graphify(github.com/safishamsi/graphify)被该文表述为将这一理念工程化落地的流水线产品形态(文中称发布初期即获较高 Star 关注)。
- 相对 LLM Wiki 的三点「进化」(该文用语)
- 从 Wiki 到 Graph:中间表示为 NetworkX 图 + Leiden 社区检测,而非仅平面 Markdown 互链。
- 双轨提取:代码走 tree-sitter AST(确定性、无 LLM token);文档 / 图像走 LLM 语义提取(含并行子代理分批)。
- 信任审计:边带 EXTRACTED / INFERRED / AMBIGUOUS,区分「找到的」与「猜的」。
- 架构叙事
七阶段流水线(检测 → 提取 → 构建 → 聚类 → 分析 → 报告 → 导出)模块间用 dict + NetworkX 传递,无共享全局状态;聚类刻意不用向量数据库,以图拓扑边密度为主信号,语义相似边直接进入图参与 Leiden。
- 信任与「为什么」
除三级置信度外,该文强调 rationale 类节点(如# WHY:/# HACK:/# NOTE:与设计权衡叙述)被抽成原理节点,指向被解释的概念,体现「不只记录做了什么,还记录为什么」。
- 的叙事
该文将数字解释为:首次运行支付提取与建图 token;后续查询读紧凑的graph.json而非全量原始文件,从而在混合语料基准下得到约 71.5× 的查询侧 token 压缩叙事;并提到 SHA256 缓存与增量更新降低重复编译成本。
- 产品与生态
该文还概括:超边、全模态视觉理解、PreToolUse 钩子(先读图谱报告再 Grep/Glob)、MCP 暴露query_graph/get_neighbors/shortest_path等;以及 隐私边界(代码本地 AST;文档/图走所用平台 API;无遥测等)与security.py一层防护。
0.3 Karpathy 理念 vs Graphify 实现(对照表,据 Richie Yang 一文)
graph.json 等 知识组织 LLM 维护反向链接等
Leiden 自动社区发现 代码 多依赖 LLM
AST 零 token + 文档/图走 LLM 可信度 该文称无系统标注
三级置信度 + 分数 增量 概念性
SHA256 缓存、–update、git hooks 多模态 提及图片等
视觉理解(截图/图表/白板等) 工具链 该文举 Obsidian HTML、Obsidian、Neo4j、MCP、SVG 等
该文总结性判断:从「LLM 维护平面 Wiki」到「LLM + AST 共建知识图谱」属于范式提升(文档管理 → 图计算),而不仅是简单工程堆砌。
数学符号约定:公式采用 LaTeX 语法,定界符已统一为 GitHub / 多数编辑器通用写法:行内用 \(…\),独立公式用单独成行的 $\( … \)$(便于在 GitHub、Obsidian、Typora、Markdown Preview Enhanced 等环境中由 KaTeX/MathJax 渲染)。
一句话:Graphify 把一个文件夹变成一张可查询的知识图谱——你只付一次「编译」成本,之后每次提问都只读图,不读原始文件。
1.1 它解决什么问题
传统做法是把整个代码库塞进 LLM 的上下文窗口。假设语料有 个词,每个词约产生 个 token,那么每次查询消耗约
个 token。10 万词的仓库每次就要读 13 万 token,而大部分内容与当前问题无关。
Graphify 的策略是先编译,后查询。一次性把语料 提取为图 ,后续查询只在 上做局部展开,取出与问题相关的子图 :
在 52 文件混合语料基准下,实测压缩约 71.5×。查询越多,编译成本越早摊平。
1.2 与传统 RAG 的本质区别
要理解 Graphify 的设计选择,需要先看清传统 RAG 的瓶颈。
传统 RAG 的代价:2023–2024 年主流的 RAG 采用「分块 → 向量化 → 相似度检索 → 拼接生成」的线性逻辑。每一步都伴随高额 token 消耗:文档预处理阶段需要通过 LLM 做向量化 embedding(数万 token),查询阶段需要召回多个文本块拼接成上下文(重复消耗)。更关键的是,基于向量的语义相似度检索无法理解实体之间的逻辑关系——它能回答「公司 2024 年新产品的核心功能是什么?」,但无法回答「为什么 AuthHandler 要依赖 TokenValidator 而不是直接调用 UserModel?」这类需要多跳推理的问题。
Graphify 的范式转换:从「向量近似匹配」到「图结构精确推理」。区别在于对「知识表示」的根本理解不同:
71.5× 从何而来? 三个支柱的组合发力:
- AST 零 token:对代码文件的结构提取完全在本地完成(tree-sitter),不调用 LLM。传统 RAG 对同样的代码文件需要先 embedding 再存入向量库。
- 并行子代理精准打击:仅对文档/论文/图片做语义提取,每个子代理处理单个文件而非整个语料,大幅减少单次上下文长度。
- SHA256 缓存:文件内容不变则哈希不变,直接复用上次的提取结果。软件开发中 70–80% 的代码在版本间不变,缓存命中率极高。
用一个具体场景量化:假设 100 文件代码库,每文件平均 1000 token。传统 RAG 每次查询需要 embedding + 检索 + 拼接 ≈ 10 万 token。Graphify 首次编译后,后续查询只从图中取出相关子图(通常是原始语料的 1% 以下),每次查询约 1400 token。。
局限性也需要诚实面对:Graphify 的优势场景是代码库、技术文档、学术论文等结构化/半结构化内容。对于纯自然语言非结构化文本(小说、随笔、自由格式博客),AST 无法解析,优势大打折扣。对于需要跨大量离散知识点做创造性联想的问题,基于图结构的检索可能不如向量语义检索灵活——图擅长的是已建立连接的实体关系推理,而非未知关联的发现。未来的最优方案很可能是混合架构:图结构的关系推理 + 向量检索的语义灵活性。
1.3 端到端流程(三步理解)
整个系统可以分三步理解:
第一步:看到什么?
detect() 扫描文件夹,把每个文件分为 CODE / DOCUMENT / PAPER / IMAGE 四类,跳过 .env、密钥等敏感文件。
第二步:理解什么?
这是核心,分两条并行轨道:
- 左轨(AST):对代码文件用 tree-sitter 做确定性语法分析——类、函数、import、调用图。零 token 消耗,毫秒级完成,产出的边标记为 EXTRACTED(置信度 1.0)。
- 右轨(LLM):对文档、论文、图片启动并行 Claude 子代理,提取概念、关系、设计意图。产出的边标记为 INFERRED(0.4–0.9)或 AMBIGUOUS(0.1–0.3)。
两轨结果合并进同一张 NetworkX 图,然后用 Leiden 算法按边密度自动发现「社区」(概念聚类)——不需要 embedding,不需要向量数据库,图的拓扑结构本身就是相似性信号。
第三步:输出什么?
graph.json:持久化图谱,跨会话查询的基础。graph.html:vis.js 交互式可视化,可搜索、按社区过滤。GRAPH_REPORT.md:God Nodes(核心抽象)、惊人连接(跨领域关联)、AMBIGUOUS 边清单、建议问题——人类可读的审计报告。- 可选:Obsidian Vault、SVG、Neo4j Cypher、GraphML、Wikipedia 风格 Wiki。
1.4 信任模型
Graphify 的设计哲学是「诚实」:不给你黑盒答案,而是让你看到知识的来源和可靠程度。
此外还有 rationale 节点:代码中的 # WHY:、# HACK:、# NOTE: 会被提取为「原理节点」,指向它们解释的概念——不只记录做了什么,还记录为什么。
1.5 本文结构
后文按「分」→「总」展开:
graph.json
§五 用例与时序图 看具体场景的数据流转
§六 安全架构 理解威胁模型与防护
§七 工程实践:设计模式、测试、性能 了解代码质量保障
§八 总结:71.5× 量化路径、适用边界、范式定位 回顾核心洞察与未来展望

2.1 管道式架构(Pipeline Architecture)
Graphify 采用经典的 顺序管道架构,由七个纯函数阶段组成,每个阶段对应一个独立模块:
detect() → extract() → build_graph() → cluster() → analyze() → report() → export()
所有阶段通过 纯 Python 字典 和 NetworkX 图对象 通信——无共享状态、无副作用(所有输出限制在 graphify-out/ 目录)。
┌─────────────────────────────────────────────────────────────┐
│ Graphify Pipeline │ │ │
┌──────────┐ │ ┌────────┐ ┌─────────┐ ┌───────┐ ┌─────────┐ │ │ 文件系统 │─────▶│ │ detect │──▶│ extract │──▶│ build │──▶│ cluster │ │ │ / URL │ │ └────────┘ └─────────┘ └───────┘ └────┬────┘ │ └──────────┘ │ │ │ │ │
│ │ │ ┌───────────┐ │ │
│ │ ┌───┘ │ analyze │◀───┘ │
│ │ │ └─────┬─────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────┐ │
│ │ report() │ │
│ └───────────────────┬─────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────┐ │
│ │ export() │ │
│ │ JSON │ HTML │ SVG │ Obsidian │ Neo4j │ │
│ └─────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
graphify-out/
├── graph.json
├── graph.html
├── GRAPH_REPORT.md
└── cache/
2.2 数据流全景
下图展开管道内部的数据流向,特别是提取阶段的「双轨并行」——左轨 AST 与右轨 LLM 各自产出不同置信度的边,在 build 阶段汇合:
输入层
┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │ .py │ │ .md │ │ .pdf │ │ .png │ │ .ts │ │ .txt │ │ paper │ │ .jpg │ │ .go │ │ .rst │ │ │ │ .svg │ │ .rs │ │ .docx │ │ │ │ │ │ ...20 │ │ .xlsx │ │ │ │ │ └───┬────┘ └───┬────┘ └───┬────┘ └───┬────┘ │ │ │ │ ▼ ▼ ▼ ▼ ┌─────────────────────────────────────────┐ │ detect() — 文件发现与分类 │ │ .graphifyignore 敏感文件过滤 类型分类 │ └─────────────────────┬───────────────────┘ │ ┌───────────┴───────────┐ ▼ ▼ ┌──────────────────┐ ┌──────────────────┐ │ AST 提取 (本地) │ │ 语义提取 (LLM) │ │ tree-sitter │ │ Claude 子代理 │ │ 确定性、零 token │ │ 文档/论文/图片 │ │ → EXTRACTED 边 │ │ → INFERRED 边 │ └────────┬─────────┘ └────────┬─────────┘ │ │ └──────────┬───────────┘ ▼ ┌──────────────────┐ │ build_from_json()│ │ 验证 + 去重 + 合并│ │ → nx.Graph │ └────────┬─────────┘ │ ┌────────┴────────┐ ▼ ▼ ┌──────────────┐ ┌──────────────┐ │ cluster() │ │ analyze() │ │ Leiden 社区 │──▶│ God Nodes │ │ 发现 + 分裂 │ │ 惊人连接 │ └──────────────┘ │ 智能提问 │ └──────┬───────┘ │ ┌─────────┴─────────┐ ▼ ▼ ┌──────────────┐ ┌──────────────┐ │ report() │ │ export() │ │ 审计报告 │ │ JSON / HTML │ └──────────────┘ │ SVG / Neo4j │ └──────┬───────┘ ▼ ┌──────────────┐ │ serve() │ │ MCP 查询服务 │ └──────────────┘
2.3 模块职责矩阵
detect.py 18KB
detect(root) 目录 →
{files, total_words, needs_graph}
os,
pathlib
extract.py 115KB
extract(paths)
[Path] →
{nodes, edges}
tree-sitter, 种语言
build.py 4KB
build_from_json(extraction) 提取字典 →
nx.Graph
networkx
cluster.py 5KB
cluster(G) 图 →
{community_id: [node_ids]}
graspologic /
networkx
analyze.py 20KB
god_nodes(),
surprising_connections() 图 → 分析结果字典
networkx
report.py 7KB
generate(…) 图 + 分析 → Markdown 字符串 —
export.py 38KB
to_html(),
to_json(),
to_obsidian() 图 → 多格式输出
vis.js,
matplotlib
security.py 7KB
validate_url(),
sanitize_label() 外部输入 → 验证/清洁
ipaddress,
socket
serve.py 14KB
serve(graph_path) 图文件 → MCP stdio 服务器
mcp
cache.py 5KB
check_semantic_cache() 文件列表 → (缓存, 未缓存)
hashlib
watch.py 6KB
watch(path) 目录 → 文件变更监控
watchdog
ingest.py 10KB
ingest(url, target_dir) URL → 保存到语料目录
urllib
wiki.py 7KB
to_wiki(G, communities) 图 → Wikipedia 风格 wiki —
hooks.py 7KB
install() /
uninstall() — → Git hook 管理 —
benchmark.py 5KB
run_benchmark() 图文件 → token 减少比 —
2.4 关键设计决策
init.py 的
getattr)
graphify install 需要在 tree-sitter 等重依赖安装前就能工作
无向聚类,有向保留 Leiden/Louvain 要求无向输入;边属性
_src/_tgt 保留原始方向
语义不进入 watch 自动重建 非代码变更只写
needs_update 标志,避免无 LLM 环境下的”半更新”
三值置信 + 可选分数 离散标签服务人类审计;
confidence_score 服务排序
固定随机种子 Louvain
seed=42、spring_layout
seed=42,保证可复现性
资源上限 HTML 可视化 ;URL 抓取上限 50MB / 10MB
模块间零共享 跨阶段仅通过 dict、
nx.Graph 与磁盘产物通信
各阶段接口契约(摘要)
extract(paths) → dict:必须含nodes、edges;可选hyperedges、token 计数build_from_json(extraction) → nx.Graph:节点至少含id/label/file_type/source_filecluster(G) → dict[int, list[str]]:社区编号 → 节点 id 列表- MCP 工具入参 JSON;
query_graph输出纯文本子图摘要,受token_budget截断
组件间禁止共享可变全局状态;跨阶段仅通过 dict、nx.Graph 与磁盘产物通信。
2.5 与 Karpathy LLM-Wiki 方法论的对齐
Graphify 与 LLM-Wiki 的核心共识是「先编译,后查询」——知识应被编译为可导航结构,而非每次从头读原始素材。差异在于中间表示:Wiki 用 Markdown 互链,Graphify 用知识图谱。
detect +
ingest(url) 消化(digest)
extract(AST)+ LLM 子代理(语义) 可导航结构
to_wiki、
to_obsidian、
graph.html 查询 MCP
query_graph /
shortest_path 持续积累
memory/ +
save_query_result 健康检查 AMBIGUOUS 清单、
suggest_questions
2.6 多平台 Skill 资产(graphify/skill*.md)
Skill 文件不是可执行代码,而是一份给 AI 编码助手阅读的编排规范(Markdown 格式)。它告诉宿主 AI:当用户输入 /graphify 时应该做什么——检测 Python 解释器、安装 graphifyy 包、运行 detect() 扫描文件、并行派发子代理处理语义提取、最终合并结果并导出。
默认宿主是 Claude Code,但 Graphify 设计为跨平台——核心算法在 Python 库中,skill 只是「告诉不同 AI 怎么调用这个库」的适配层。仓库 graphify/ 目录下包含 9 个 Markdown 变体,随 PyPI 包 package-data 分发,覆盖 11 种平台(含 Gemini、Cursor 的独立安装路径)。
2.6.0 安装与触发方式
运行 graphify install 即可安装 skill,默认平台为 Claude Code:
graphify install # 默认 → Claude Code(/.claude/skills/graphify/SKILL.md) graphify install –platform codex # → OpenAI Codex graphify install –platform copilot # → GitHub Copilot CLI graphify install –platform cursor # → Cursor(特殊:仅写规则文件,不安装 skill) graphify install –platform gemini # → Gemini CLI graphify install –platform trae # → Trae IDE(trae-cn 为国内镜像) graphify install –platform aider # → Aider graphify install –platform opencode # → OpenCode graphify install –platform claw # → OpenClaw graphify install –platform droid # → Factory Droid graphify install –platform windows # → Windows 上的 Claude Code(PowerShell 版本)
安装后,用户在对应 AI 助手中输入 /graphify(或平台约定的触发词),AI 读取 skill 文件并按其中的步骤编排执行整个管道。Skill 内部的完整流程为:
Step 1: 检测 Python 解释器 → pip install graphifyy → 记录路径到 .graphify_python Step 2: detect() — 文件发现与分类 Step 3 Part A: AST 提取(调用库内 extract) Step 3 Part B: 语义提取(并行派发子代理读文档/论文/图片)← 各平台差异焦点 Step 4: 合并 AST + 语义结果 Step 5: cluster() + analyze() Step 6: 社区命名 Step 7: build() + report() + export() Step 8: 清理临时文件
Cursor 的特殊情况:Cursor 不安装 skill 文件,而是在项目下写入 .cursor/rules/graphify.mdc(alwaysApply: true),提醒模型先读 GRAPH_REPORT.md。即需要先在命令行或其他环境运行 graphify . 生成图谱,然后 Cursor 的 AI 会自动参考图谱报告来理解代码。
2.6.1 源文件与 CLI 安装路由
graphify install –platform 默认安装位置(
下) 说明
skill.md
claude(默认)
.claude/skills/graphify/SKILL.md 触发
/graphify;向
/.claude/CLAUDE.md 注册 skill;与
Gemini CLI 共用同一源文件(见下表「非 _PLATFORM_CONFIG」)。
skill-windows.md
windows
.claude/skills/graphify/SKILL.md Windows 上 Claude Code:
PowerShell 块替代 bash;frontmatter
name: graphify-windows。
skill-codex.md
codex
.agents/skills/graphify/SKILL.md 宿主侧常用
$graphify 触发(以 Codex 约定为准)。
skill-opencode.md
opencode
.config/opencode/skills/graphify/SKILL.md OpenCode 技能目录布局。
skill-aider.md
aider
.aider/graphify/SKILL.md 另配合
graphify aider install 写项目
AGENTS.md(见 README / CHANGELOG)。
skill-copilot.md
copilot
.copilot/skills/graphify/SKILL.md 亦可通过子命令
graphify copilot install /
uninstall 管理。
skill-claw.md
claw
.claw/skills/graphify/SKILL.md OpenClaw。
skill-droid.md
droid
.factory/skills/graphify/SKILL.md Factory Droid(Codex Factory)。
skill-trae.md
trae
.trae/skills/graphify/SKILL.md Trae IDE;国内镜像配置用
trae-cn →
.trae-cn/skills/graphify/SKILL.md(同一源文件)。
未列入上表、但相关的安装行为:
graphify install –platform gemini 复制
skill.md →
/.gemini/skills/graphify/SKILL.md 写入
GEMINI.md 段落,并在
~/.gemini/settings.json 注册
BeforeTool 类钩子(`read_file
graphify install –platform cursor
不复制 SKILL 仅在
项目下写入
.cursor/rules/graphify.mdc(
alwaysApply: true),提醒模型先读
GRAPH_REPORT.md / wiki;
不自带
/graphify 触发器,需用户先在本机或其它环境跑通管道生成
graphify-out/。 OpenCode 可选插件
main.py 内嵌 JS
_install_opencode_plugin 写入
.opencode/plugins/graphify.js 并在
opencode.json 注册,在
bash 工具执行前 追加一行提醒;与
skill-opencode.md 互补。
安装完成后,目标目录旁常带 .graphify_version,与当前包版本比对;过旧时 CLI 打印警告,提示重新执行 graphify install。
2.6.2 各变体共同骨架
- YAML frontmatter:
name、description、trigger(多为/graphify)。 - Usage:列出路径、
–mode deep、–update、–cluster-only、query/path/explain、add、–mcp、–watch等;不同文件之间可能有细微差别(例如是否单独列出–wiki、–obsidian、–directed),以对应平台实际打包的skill-.md为准。 - Step 1:用
which graphify的 shebang 解析 真实 Python,必要时pip install graphifyy,并把解释器路径写入.graphify_python(多数变体与skill.md一致时 落在graphify-out/.graphifypython)。 - Step 2–8(主流程):
detect→ AST 与语义抽取并行或顺序 → 合并 →analyze→ 社区命名 →build/report/export→ 清理临时.graphify(保留graph.json、报告与缓存策略依文内说明)。 - 查询与记忆:语义阶段之后的
query/path/explain鼓励通过graphify save-result(CLI)落盘,避免在 skill 内嵌大块 Python。 - 大库护栏:
total_words、total_files超阈时暂停让用户选子目录等逻辑,各变体与skill.md对齐。
2.6.3 平台差异焦点:语义抽取(Step 3 Part B)
AST 路径各变体均调用库内 extract(代码);差异主要在「谁来读 PDF/MD/图」以及如何并行:
skill.md)
Agent 工具,单条用户消息内派发多个子代理,且与 Part A AST
并行 强制使用子代理批量读文件;含
语义缓存(
check_semantic_cache、
.graphify_uncached.txt 等)以减少重复 token。
Codex(
skill-codex.md)
spawn_agent + wait + close_agent 明文禁止主会话逐文件自读;并行策略与 Claude 类似但 API 名不同。
OpenCode(
skill-opencode.md) 单条消息内
@mention 多代理 与 Claude「多代理同消息」同哲学,适配 OpenCode 的 mention 调度。
GitHub Copilot CLI(
skill-copilot.md) 与
skill.md 同型的 Agent 并行 + graphify-out/ 中间文件布局 目录约定向 Copilot 技能路径对齐,流水线语义与 Claude 变体最接近。
Factory Droid(
skill-droid.md)
Task 工具并行派发子任务 适配 Droid 环境的 Task 抽象。
Trae(
skill-trae.md)
Agent(Task)工具并行 文内强调
Trae 不支持 PreToolUse 钩子,always-on 依赖项目
AGENTS.md 规则;需用户必要时手动
–update。
Aider(
skill-aider.md)
顺序:主模型自行逐文件阅读抽取 多代理能力仍弱时的可靠降级,latency 更高。
OpenClaw(
skill-claw.md)
顺序自读 与 Aider 同属「慢但稳」分支。
2.6.3A Skill 在系统中的角色——一图看懂
┌─────────────────────────────────────────────────────────────────┐ │ 用户输入: /graphify . │ └───────────────────────────────┬─────────────────────────────────┘
│ ▼
┌─────────────────────────────────────────────────────────────────┐ │ AI 编码助手(宿主智能体) │ │ │ │ Claude Code │ Codex │ Copilot │ Trae │ Aider │ Cursor │ … │ │ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ skill.md / skill-codex.md / skill-trae.md / … │ │ │ │ (编排规范:告诉 AI 按什么步骤调用下面的 Python 库) │ │ │ └──────────────────────┬───────────────────────────────────┘ │ │ │ 读取 skill → 编排执行 │ │ │ │ │ ┌────────────────────┼────────────────────────┐ │ │ │ Step 3A (AST) │ Step 3B (语义) │ │ │ │ 调用: bash │ 派发: 子代理/Agent/Task │ │ │ │ graphify extract │ 并行读文档/论文/图片 │ │ │ └─────────┬──────────┴──────────┬─────────────┘ │ │ │ │ │ └──────────────┼─────────────────────┼───────────────────────────────┘
│ │ ▼ ▼
┌─────────────────────────────────────────────────────────────────┐ │ graphifyy Python 库(pip install) │ │ │ │ detect.py → extract.py → build.py → cluster.py → analyze.py │ │ → report.py → export.py → serve.py → cache.py → watch.py │ │ │ │ 核心算法全部在这里,与宿主平台无关 │ └─────────────────────────────────────────────────────────────────┘
│
▼
graphify-out/
├── graph.json ← 持久化图谱
├── graph.html ← 交互式可视化
├── GRAPH_REPORT.md ← 人类可读审计报告
└── cache/ ← SHA256 缓存
关键理解:Skill 是「适配层」,不是「执行层」。所有算法(AST 解析、Leiden 聚类、惊奇连接评分等)都在 Python 库中,Skill 只负责告诉不同的 AI 助手「按什么顺序调用这些 Python 函数,以及如何编排语义提取的并行子代理」。Claude Code 是最完整的宿主(支持并行 Agent、PreToolUse 钩子),但即使在没有 Skill 的环境中,也可以直接 graphify . 通过命令行运行完整管道。
2.6.4 壳层与中间文件路径
skill.md/skill-copilot.md:中间 JSON、.graphify_python等默认集中在graphify-out/前缀下,与最终产物同目录,便于.gitignore与清理策略一致。skill-codex.md、skill-opencode.md、skill-aider.md、skill-claw.md、skill-droid.md、skill-trae.md:大量步骤使用 当前目录下的.graphify_detect.json、.graphify_ast.json等命名;Step 1 写入的解释器路径在部分副本中位于graphify-out/.graphify_python,而说明文字偶见\((cat .graphify_python)的简写——以实际写入路径为准;若运行失败,应对齐为\)(cat graphify-out/.graphify_python)(与skill.md一致)。skill-windows.md:全程 PowerShell;解释器指纹写入 工作目录下的.graphify_python,与 Unix 变体的graphify-out/布局不同;文末含 PowerShell 5.1 与 ANSI 滚动等排障说明(与graspologic输出相关)。
2.6.5 与后文章节的索引
detect / 大库交互
§3.1 AST + 语义合并
§3.2、
§3.7(缓存) 置信度与报告
§四、
§3.5 MCP、
–watch、hooks
§3.8、
§七 安全与路径
§六
本章按管道执行顺序,对每个阶段先讲原理(它为什么这样做),再讲实现(它怎么做的),最后给出关键量的数学定义。阅读时可以只看原理段获得直觉,需要细节时再往下读。
全局符号约定: 为无向图,,,,
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/261816.html