十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

graphify VS Code /graphify 技能剧本详解:九步流水线、manual-paste 派发与图构建守护机制

graphify VS Code /graphify 技能剧本详解:九步流水线、manual-paste 派发与图构建守护机制 graphify VS Code /graphify 技能剧本详解九步流水线、manual-paste 派发与图构建守护机制【免费下载链接】graphifyTurn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.项目地址: https://gitcode.com/GitHub_Trending/graph/graphifygraphify 把任意目录的代码、文档、论文、图片、视频编译成一张可查询的知识图谱并在构建全程保留 EXTRACTED / INFERRED / AMBIGUOUS 三级诚实审计链。skill-vscode.md 是该工具面向 VS Code 宿主 Agent 的完整技能剧本skill playbook它规定了/graphify命令的全部用法、从解释器探测到图谱导出的九步流水线以及查询、增量更新与提交钩子的执行细则。读完本文你可以完整复述 graphify 的构建流程与缓存策略理解为什么纯代码语料不需要 API key并掌握 shrink-guard、manifest 盖章等防止图谱静默损坏的关键设计。这是什么文件VS Code 宿主的生成产物skill-vscode.md 不是手写的普通文档而是 skillgen 构建工具渲染出的提交型产物。仓库中的 platforms.toml 声明了 vscode 平台的装配方式bucket split采用精简核心 references 侧车的结构核心正文渲染为 skill-vscode.md配套参考资料渲染到 skills/vscode/references/ 目录add-watch、exports、extraction-spec、github-and-merge、hooks、query、transcribe、update 共 8 个文件dispatch manual-pasteVS Code 宿主没有并行 Agent/Task API语义抽取子代理由人手动派发并粘贴结果——这正是正文 Step B2 中那段 No automated subagent tool 注释的来源对应片段 manual-paste.mdextraction verbose使用详细版抽取规范。生成器 gen.py 支持--check字节级漂移检测与--bless刷新期望产物保证所有宿主平台的技能文件与源片段保持一致。Usage/graphify 命令全量参考剧本开头的## Usage块是/graphify --help的逐字输出内容也是整个技能的入口契约。完整命令面如下原文档第 12–43 行/graphify # full pipeline on current directory (HTML viz; add --obsidian for a vault) /graphify path # full pipeline on specific path /graphify https://github.com/owner/repo # clone repo then run full pipeline on it /graphify https://github.com/owner/repo --branch branch # clone a specific branch /graphify url1 url2 ... # clone multiple repos, build each, merge into one cross-repo graph /graphify path --mode deep # thorough extraction, richer INFERRED edges /graphify path --update # incremental - re-extract only new/changed files /graphify path --directed # build directed graph (preserves edge direction: source→target) /graphify path --whisper-model medium # use a larger Whisper model for better transcription accuracy /graphify path --cluster-only # rerun clustering on existing graph /graphify path --no-viz # skip visualization, just report JSON /graphify path --html # (HTML is generated by default - this flag is a no-op) /graphify path --svg # also export graph.svg (embeds in Notion, GitHub) /graphify path --graphml # export graph.graphml (Gephi, yEd) /graphify path --neo4j # generate graphify-out/cypher.txt for Neo4j /graphify path --neo4j-push bolt://localhost:7687 # push directly to Neo4j /graphify path --falkordb # generate graphify-out/cypher.txt for FalkorDB /graphify path --falkordb-push falkordb://localhost:6379 # push directly to FalkorDB /graphify path --mcp # start MCP stdio server for agent access /graphify path --watch # watch folder, auto-rebuild on code changes (no LLM needed) /graphify path --wiki # build agent-crawlable wiki (index.md one article per community) /graphify path --obsidian --obsidian-dir ~/vaults/my-project # write vault to custom path (e.g. existing vault) /graphify add url # fetch URL, save to ./raw, update graph /graphify add url --author Name # tag who wrote it /graphify add url --contributor Name # tag who added it to the corpus /graphify query question # BFS traversal - broad context /graphify query question --dfs # DFS - trace a specific path /graphify query question --budget 1500 # cap answer at N tokens /graphify path AuthModule Database # shortest path between two concepts /graphify explain SwinTransformer # plain-language explanation of a node按功能分组理解类别命令/参数说明构建范围无参 /path/ GitHub URL / 多 URL默认对当前目录做完整流水线URL 触发 Step 0 克隆多 URL 会合并为一张跨仓库图抽取模式--mode deep、--whisper-model深度抽取产生更丰富的 INFERRED 边更大的 Whisper 模型提升转写准确率增量--update、--cluster-only只重抽新增/变更文件仅在已有图上重跑社区发现图形态--directed构建DiGraph保留 source→target 方向否则默认无向Graph导出--svg--graphml--neo4j(-push)--falkordb(-push)--wiki--mcp对应 cli.py 中的 export 子命令 html/callflow-html/obsidian/wiki/svg/graphml/neo4j/falkordbpush 变体直接写入图数据库可视化--no-viz、--html、--obsidian [--obsidian-dir path]HTML 默认生成--html是 no-op--obsidian显式开启才逐节点生成 vault 文件运维--watch、add监听目录自动重建无需 LLM抓取 URL 进语料并更新图查询query--dfs、--budget N、path、explainBFS 广域上下文 / DFS 路径追踪 / 节点白话解释快速路径先查已有图而不是重建剧本在必须执行的动作里定义了一条快速路径执行任何检测之前先检查graphify-out/graph.json相对于当前工作目录即项目根是否存在。若存在、且用户请求是关于代码库的自然语言问题How does X work?、What calls Y?而不是显式重建命令--update、--cluster-only或裸路径/URL跳过 Step 1–5直接进入查询流程立即执行graphify query question不跑 detect、不检查语料规模、不要求用户缩小范围——The graph is already built — use it.未给路径时默认用.不得反问用户路径若以https://github.com/开头则先走 Step 0 克隆再解析为本地路径。查询侧要求先把问题对图谱自身词表做展开vocab expansion避免措辞不匹配导致答案退化成噪声回答只能基于图输出引用具体事实时要引用source_location。遍历模式、--budget上限、NetworkX 内联兜底、save-result反馈与path/explain流程完整定义在 query.md 中。Step 0–2GitHub 克隆、解释器自举与语料检测Step 0 仅对 URL / 多路径生效只有当输入是一个或多个https://github.com/...URL或需要合并的多个本地子目录时才执行克隆与跨仓库合并细则见 github-and-merge.md纯本地路径直接跳过。Step 1 解释器探测与安装这是整份剧本里最长的一段 shell 逻辑目的是在 uv tool、pipx、venv、系统安装四种安装形态下找到能import graphify的解释器并按优先级尝试uv tool run --from graphifyy→ 读graphify二进制的 shebang带字符集校验→ 回退python3。导入失败则uv tool install --upgrade graphifyy或pip install graphifyy必要时--break-system-packages。最后写两个持久化侧车graphify-out/.graphify_python解释器绝对路径后续所有 bash 块都必须用$(cat graphify-out/.graphify_python)替换python3graphify-out/.graphify_root扫描根绝对路径供无参graphify update定位上次扫描目录。Step 2 用 detect() 生成检测 JSON并执行三道规模闸门$(cat graphify-out/.graphify_python) -c import json from graphify.detect import detect from pathlib import Path result detect(Path(INPUT_PATH)) # Write the sidecar from Python, not a shell redirect, so the same block renders # on PowerShell hosts without console-encoding drift (#2528). Path(graphify-out/.graphify_detect.json).write_text(json.dumps(result, ensure_asciiFalse), encoding\utf-8\) print(fDetected {result[\total_files\]} files) 实现落点在 detect.py 的detect()支持 gitignore 感知、符号链接策略、Google Workspace 等参数。检测 JSON 由 Python 写入而非 shell 重定向是为 PowerShell 宿主避免控制台编码漂移#2528。脚本要求静默读取 JSON 并呈现干净摘要0 文件类别省略Corpus: X files · ~Y words code: N files (.py .ts .go ...) docs: N files (.md .txt ...) papers: N files (.pdf ...) images: N files video: N files (.mp4 .mp3 ...)随后按结果行动这里有三道闸门total_files 0停止输出 No supported files found in [path].skipped_sensitive非空报告数量与文件名让被误判为敏感凭据的源文件可见、可改名#2106total_words 2,000,000或total_files 500展示警告然后按 detect JSON 中的scan_root解析后 INPUT_PATH 的绝对路径把code/document/paper/image/video全部文件列表拼接、剔除scan_root /graphify-out/前缀的转换产物按第一级子目录计数排序展示 top 5 并等待用户选择再继续若全部文件都在(root)无子目录则改为建议--no-cluster跳过昂贵的聚类步骤。测试覆盖见 test_detect.py。Step 2.5 音视频转写仅当 detect 返回的video数量大于 0 时执行按 transcribe.md 先把音视频转写成文本再当作 document 进入 Step 3。零视频文件则整步跳过。Step 3AST 与语义抽取并行代码语料零 API key这一步分为结构化抽取确定性、免费与语义抽取LLM、耗 token两部分剧本明确要求二者并行派发可省 5–15 秒在 Part C 汇合。零 API key 原则这是剧本中反复强调的契约graphify 不需要 API key绝不允许 Agent 向用户索要或被 key 阻塞。代码走 AST 抽取完全不需要 LLM纯代码语料最常见的/graphify .会整体跳过 Part B。语义抽取仅在已设置GEMINI_API_KEY/GOOGLE_API_KEY时使用 Geminigraphify.llm.extract_corpus_parallel(files, backendgemini)默认模型gemini-3-flash-preview可用GRAPHIFY_GEMINI_MODEL或--model覆盖扩展安装为pip install graphifyy[gemini]否则宿主 Agent 本身就是 LLM。graphify 明确不读取ANTHROPIC_API_KEY、OPENAI_API_KEY或其他供应商 key——脚本原文直言如果你发现自己正要为缺失的 API key 而提示或停下that is a misread of this skill。Part AAST 结构化抽取$(cat graphify-out/.graphify_python) -c import sys, json from graphify.extract import collect_files, extract from pathlib import Path import json code_files [] detect json.loads(Path(graphify-out/.graphify_detect.json).read_text(encoding\utf-8\)) for f in detect.get(files, {}).get(code, []): code_files.extend(collect_files(Path(f)) if Path(f).is_dir() else [Path(f)]) if code_files: result extract(code_files, cache_rootPath(INPUT_PATH)) Path(graphify-out/.graphify_ast.json).write_text(json.dumps(result, indent2, ensure_asciiFalse), encoding\utf-8\) print(fAST: {len(result[\nodes\])} nodes, {len(result[\edges\])} edges) else: Path(graphify-out/.graphify_ast.json).write_text(json.dumps({nodes:[],edges:[],input_tokens:0,output_tokens:0}, ensure_asciiFalse), encoding\utf-8\) print(No code files - skipping AST extraction) 实现落点为 extract.py 的extract()与 extract.py 的collect_files()cache_root指定后抽取结果参与文件级缓存。Part B语义抽取缓存 → 分块 → 派发 → 收集快速路径若 document/paper/image 均为 0纯代码语料必须先写出空语义文件再进 Part C——因为 Part C 无条件读取.graphify_semantic.json缺文件会FileNotFoundError$(cat graphify-out/.graphify_python) -c import json from pathlib import Path Path(graphify-out/.graphify_semantic.json).write_text(json.dumps({nodes:[],edges:[],hyperedges:[],input_tokens:0,output_tokens:0}), encodingutf-8) Step B0 先查抽取缓存。只有内容文件进入语义通道——代码已被 Part A 的 AST 覆盖把每类文件都扁平化进语义通道会让子代理重读所有源码#1392视频则已在 Step 2.5 转写为文档$(cat graphify-out/.graphify_python) -c import json from graphify.cache import check_semantic_cache from pathlib import Path detect json.loads(Path(graphify-out/.graphify_detect.json).read_text(encoding\utf-8\)) all_files [f for cat in (document, paper, image) for f in detect[files].get(cat, [])] cached_nodes, cached_edges, cached_hyperedges, uncached check_semantic_cache(all_files, rootINPUT_PATH, prompt_fileSPEC_PATH) if cached_nodes or cached_edges or cached_hyperedges: Path(graphify-out/.graphify_cached.json).write_text(json.dumps({nodes: cached_nodes, edges: cached_edges, hyperedges: cached_hyperedges}, ensure_asciiFalse), encoding\utf-8\) else: Path(graphify-out/.graphify_cached.json).unlink(missing_okTrue) Path(graphify-out/.graphify_uncached.txt).write_text(\n.join(uncached), encoding\utf-8\) print(fCache: {len(all_files)-len(uncached)} files hit, {len(uncached)} files need extraction) 关键细节SPEC_PATH是 extraction-spec.md 的绝对路径它既是子代理的抽取提示词也是缓存条目的归属标记——graphify 升级若改动提示词旧条目会被重新抽取而非重放#1939。B0 与 B3 必须传入同一个 SPEC_PATH。缓存实现见 cache.py 的check_semantic_cache()与 cache.py 的save_semantic_cache()行为由 test_cache.py 覆盖。Step B1 分块读取.graphify_uncached.txt每块 20–25 个文件图片单独成块视觉需要独立上下文同目录文件尽量聚到同一块以提升跨文件关系命中率。派发前先打印时间估算ceil(uncached_non_code_files / 22)个代理、每批约 45 秒输出 Semantic extraction: ~N files → X agents, estimated ~Ys。Step B2 派发与粘贴VS Code 特化剧本对 Claude Code 类宿主要求必须使用 Agent 工具逐文件自读慢 5–10 倍而 VS Code 变体的措辞是——宿主没有并行 Agent/Task API按宿主允许的方式新会话、并行分屏逐块派发然后把每个响应粘贴回块文件# After pasting a subagents JSON for chunk N, save it (replace N and PASTED_JSON): PROJECT_ROOT$(pwd) # cwd — where Part C globs graphify-out/ (NOT .graphify_root/scan dir, #1392) cat ${PROJECT_ROOT}/graphify-out/.graphify_chunk_0N.json CHUNK_JSON PASTED_JSON CHUNK_JSON块 JSON 一律落在当前工作目录的graphify-out/下Part C 在这里做 glob而非扫描目录#1392。子代理提示词本体JSON schema、节点 ID 规则、置信度评级、hyperedge 与视觉规则在 extraction-spec.md仅在至少一个块含 doc/paper/image 时才加载并需替换 FILE_LIST、CHUNK_NUM、TOTAL_CHUNKS、DEEP_MODE 四个占位符——--mode deep必须一路透传不得丢失。Step B3 收集、缓存与合并以块文件存在且含合法nodes/edgesJSON 作为成功信号文件缺失大概率是子代理被以只读Explore 类型派发必须打印警告并要求改用 general-purpose 代理禁止静默跳过失败或非法 JSON 的块打印警告后跳过但超过半数块失败就停止并让用户重跑。合并前还要把 Agent 工具结果usage字段里的真实 token 数写回块 JSON块文件本身恒为占位 0。随后依次globgraphify-out/.graphify_chunk_*.json合并出.graphify_semantic_new.jsonsave_semantic_cache(..., prompt_fileSPEC_PATH)把新结果写入缓存读旧条目用什么提示词、写新条目就必须用什么提示词#1939缓存 新结果按节点id去重合并进.graphify_semantic.json打印Extraction complete - N nodes, M edges (X from cache, Y new)清理.graphify_cached.json、.graphify_uncached.txt、.graphify_semantic_new.json。Part CAST 语义合并# AST nodes first, semantic nodes deduplicated by id ast json.loads(Path(graphify-out/.graphify_ast.json).read_text(encoding\utf-8\)) sem json.loads(Path(graphify-out/.graphify_semantic.json).read_text(encoding\utf-8\)) seen {n[id] for n in ast[nodes]} merged_nodes list(ast[nodes]) for n in sem[nodes]: if n[id] not in seen: merged_nodes.append(n) seen.add(n[id]) merged_edges ast[edges] sem[edges] merged_hyperedges sem.get(hyperedges, []) # → graphify-out/.graphify_extract.json合并顺序体现确定性优先AST 节点在前语义节点按 id 去重补齐边直接拼接hyperedges 全部来自语义侧token 计数继承自语义侧。Step 4建图、聚类、分析以及 shrink-guardStep 4 之前要替换IS_DIRECTED--directed为True构建DiGraph否则默认无向Graph——和INPUT_PATH一样是占位符不能留字面量进代码。核心块G build_from_json(extraction, rootINPUT_PATH, directedIS_DIRECTED) # Guard BEFORE any write: an empty extraction must not clobber a good graph.json / # GRAPH_REPORT.md / analysis sidecar. Check immediately after build (#1392). if G.number_of_nodes() 0: print(ERROR: Graph is empty - extraction produced no nodes.) print(Possible causes: all files were skipped, binary-only corpus, or extraction failed.) raise SystemExit(1) communities cluster(G) cohesion score_all(G, communities) gods god_nodes(G) surprises surprising_connections(G, communities) questions suggest_questions(G, communities, labels) wrote to_json(G, communities, graphify-out/graph.json) if not wrote: print(ERROR: refused to shrink graphify-out/graph.json (existing graph has more nodes; #479).) print(If this shrink is intentional (you deleted files), re-run a full build with --force.) raise SystemExit(1) report generate(G, communities, cohesion, labels, gods, surprises, detection, tokens, INPUT_PATH, suggested_questionsquestions) Path(graphify-out/GRAPH_REPORT.md).write_text(report, encoding\utf-8\) # graphify-out/.graphify_analysis.json (communities/cohesion/gods/surprises/questions)这段代码链上每个函数都能在仓库中逐一找到实现与测试build_from_json()build.pyroot参数把source_file相对化到与--update相同的基准保证全量构建与增量更新在重抽时节点 key 不漂移#1361cluster()/score_all()cluster.py 与 cluster.py分别做社区发现与内聚度打分test_cluster.py 覆盖god_nodes()/surprising_connections()/suggest_questions()analyze.py、analyze.py、analyze.py由 test_analyze.py 覆盖generate()report.py 生成 GRAPH_REPORT.mdto_json()export.py返回 bool 实现 #479 shrink-guard——新图节点数小于既有 graph.json 时返回 False 且不写盘。剧本要求先导出、再写报告只有图真正写入成功才允许写 GRAPH_REPORT.md 与分析侧车确保报告永远不会描述一份 graph.json 里没有的图#1392。守护行为另有专项测试 test_build_merge_shrink_guard.py。空图守卫放在任何写盘之前0 节点直接退出不污染既有产物。此步打印ERROR: Graph is empty时必须停下并告知用户禁止继续进入标注或可视化。Step 4.5–5只读健康检查与社区标注Step 4.5 图谱健康检查一个非破坏性的完整性门在标注前诊断三类静默损坏——边坍缩、悬空/缺失端点、自环正是增量更新与 AST/LLM id 失配的典型病灶from graphify.diagnostics import diagnose_extraction, format_diagnostic_report summary diagnose_extraction(extraction, directedIS_DIRECTED, rootINPUT_PATH) print(format_diagnostic_report(summary)) # 汇总 dangling / missing / self-loop / collapsed 边数打印 GRAPH HEALTH WARNING 或 OK实现见 diagnostics.py 的diagnose_extraction()与 diagnostics.py 的format_diagnostic_report()。健康检查只读、从不中止出现GRAPH HEALTH WARNING时图仍可用但依据 Honesty Rules 必须把完整性问题暴露在最终摘要里。Step 5 为社区写人类可读标签读取.graphify_analysis.json对每个社区的节点标签归纳出 2–5 词的白话名如 Attention Mechanism、Training Pipeline然后重建图、用真实标签重新生成建议问题标签影响问题措辞、重写报告、把标签写入.graphify_labels.json供可视化器使用并带community_labelslabels重新导出让 graph.json 的节点携带策展后的community_name#2490。由于与 Step 4 使用同一份 extractionshrink-guard 按节点数必然通过若仍被拒绝把 guard 消息原样呈现不得--force强推。Step 6 及后续HTML 恒开、其余导出按需HTML 恒开除非--no-vizgraphify export html图超过 5000 节点时自动聚合到社区视图Obsidian 仅限显式--obsidiangraphify export obsidian可用--dir ~/vaults/my-project写入自定义 vault因为每节点生成一个文件Steps 6b–8wiki、Neo4j/FalkorDB 生成与 push、SVG、GraphML、MCP、token 压缩基准——后者在total_words 5000时触发仅在其 flag 出现时执行默认运行全部跳过。逐项说明在 exports.md。注意--wiki要在 Step 9 清理之前导出那时.graphify_labels.json尚在。CLI 侧对应 cli.py 的 export 子命令分派html、callflow-html、obsidian、wiki、svg、graphml、neo4j、falkordbneo4j/falkordb 支持 push 与口令环境变量。Step 9manifest 盖章、成本追踪与收尾收尾步骤完成三件事核心是manifest 的选择性盖章from graphify.detect import save_manifest from graphify.cli import _stamped_manifest_files _corpus detect.get(all_files) or detect[files] _manifest_files _stamped_manifest_files(_corpus, extract, Path(INPUT_PATH)) # 只给“实际产出了输出”的语义文件盖章失败/遗漏的块保持未盖下次 --update 会重新排队#2015 # 本运行已派发但未盖章的语义文件清掉旧 semantic_hash避免被当作未变更#1948 save_manifest(_manifest_files, rootINPUT_PATH, scan_corpus_scan, clear_semantic_cleared or None) # → 更新 graphify-out/cost.json 累计 token 成本打印本次/历史用量规则要点代码文件恒盖章AST 确定性文档/论文/图片只有真正产出才盖章——被检测到但块失败的文件必须保持未盖章否则下次--update会把它当完成态、内容永久丢失#2015root把 manifest key 相对化到扫描根使磁盘上的 manifest 可跨克隆/机器移植--update才能命中缓存文件而非全部未命中#1417scan_corpus传原始全量语料而非盖章过滤子集让根目录内新被排除的文件被正常丢弃而不是伪装成删除未触碰文件的历史行保留#1908cost.json按运行追加{date, input_tokens, output_tokens, files}并累计总量。最后删除.graphify_detect/extract/ast/semantic/analysis.json与所有.graphify_chunk_*.json、.needs_update向用户报告产物清单Graph complete. Outputs in PATH_TO_DIR/graphify-out/ graph.html - interactive graph, open in browser GRAPH_REPORT.md - audit report graph.json - raw graph data obsidian/ - Obsidian vault (only if --obsidian was given)随后只粘贴报告中的 God Nodes、Surprising Connections、Suggested Questions 三节不粘全报告并主动挑出跨越最多社区边界或桥接节点最出人意味的建议问题以 The most interesting question this graph can answer:[question]. Want me to trace it? 邀请探索。剧本的收束语是The graph is the map. Your job after the pipeline is to be the guide.——回答要沿着图结构展开哪些节点相连、跨越了哪些社区边界、路径揭示了什么每轮以自然的追问结尾让会话像导航而非一次性报告。子命令护栏与增量/查询/追加/监听解释器护栏执行--update、--cluster-only、query、path、explain、add任何子命令前先检查graphify-out/.graphify_python是否存在缺失例如用户删了graphify-out/时按 shebang →python3的顺序重新解析解释器并回写再运行子命令。--update/--cluster-only均为非默认子命令——前者只重抽新增/变更文件后者在既有图上重跑聚类两条流程的完整 runbook 在 update.md。增量更新的设计与去重策略另有专项文档 incremental-updates-dedup 设计 与实施计划测试见 test_incremental.py。/graphify query图存在时从图回答而不是重建CLI 不可用时回退到对 graph.json 的内联 NetworkX 遍历。参数与流程详见 query.md 与 test_query_cli.py。/graphify add与--watch不属于默认构建URL 抓取与目录监听的完整流程在 add-watch.md。提交钩子与 CLAUDE.md 集成安装 post-commit 自动重建钩子、把 graphify 接入项目 CLAUDE.md 的说明在 hooks.md。Honesty Rules五条不可妥协的输出纪律剧本末尾的 Honesty Rules 是整份技能的行为底线也是 graphify 差异化定位的浓缩Never invent an edge.不确定就用 AMBIGUOUS——边必须可审计Never skip the corpus check warning.超大语料警告不可省略Always show token cost in the report.语义抽取成本必须显式呈现Never hide cohesion scores behind symbols.内聚度给原始数字不用符号替代Never run HTML viz on a graph with more than 5,000 nodes without warning.大图可视化必须先行警告。源码级索引文档声明到实现的对应关系剧本声明实现位置测试/佐证detect()语料检测与 manifestdetect.py、detect.pysave_manifesttest_detect.pycollect_files/extractAST 抽取extract.py、extract.pytest_extract.py语义缓存读写prompt 归属cache.py、cache.pytest_cache.pybuild_from_json(root, directed)build.pytest_build_merge_shrink_guard.pycluster/score_allcluster.py、cluster.pytest_cluster.pygod_nodes/surprising_connections/suggest_questionsanalyze.py 起三函数test_analyze.pyto_jsonshrink-guard返回 boolexport.pytest_build_merge_shrink_guard.pydiagnose_extraction/format_diagnostic_reportdiagnostics.py、diagnostics.pytest_multigraph_diagnostics.pyreport.generatereport.pytest_report.py_stamped_manifest_files选择性盖章cli.pytest_incremental.pyVS Code 平台装配manual-paste、verboseplatforms.toml、gen.pymanual-paste.md一句话总结这份剧本的设计哲学把LLM 参与的部分压缩到不可压缩的最小仅内容文件的语义抽取把其余一切解释器、检测、AST、缓存、建图、守护、审计、成本都写成确定性步骤与可重放文件——而 VS Code 变体与通用版的唯一实质差异就是 B2 从Agent 工具派发退化为手动派发 粘贴其余九步完全一致。【免费下载链接】graphifyTurn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.项目地址: https://gitcode.com/GitHub_Trending/graph/graphify创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表