
如何把 CodeGraph 作为 TypeScript 库嵌入 Node.js/Electron 应用【免费下载链接】codegraphPre-indexed code knowledge graph, auto syncs on code changes, for Claude Code, Codex, Gemini, Cursor, OpenCode, AntiGravity, Kiro, CoPilot, and Hermes Agent — fewer tokens, fewer tool calls, 100% local项目地址: https://gitcode.com/GitHub_Trending/co0degr/codegraph如果你的应用需要直接查询代码知识图谱——比如在 Electron 主进程里做符号搜索、调用链分析、影响面评估——而不是通过 CLI 或 MCP server 调用 CodeGraph可以把colbymchenry/codegraph作为 TypeScript 库嵌入自己的运行时。npm 包会重新导出它的编程式 APIimport和require都能在你的进程里解析出CodeGraph类。本文覆盖安装、初始化索引、核心方法调用、验证和嵌入限制。前提是你的运行环境满足文档要求的 Node 22.5依赖内置node:sqlite模块。环境要求先看运行时的 Node 版本嵌入 API 与 CLI/MCP server 的运行方式不同API 跑在你自己的运行时上而不是 CodeGraph 自带的打包运行时。据 API 参考 和 README.md 的 Library Usage 一节需要Node 22.5因为依赖 Node 内置的node:sqlite模块Electron 主进程同样适用条件是其捆绑的 Node 版本为 22.5CLI 和 MCP server 不受此限制——它们自带完整打包运行时不依赖宿主 Node。嵌入 API 是较早期版本曾中断、后来恢复的能力CHANGELOG.md 中记录了 #354require(colbymchenry/codegraph)和import重新解析到编程式 API可从自己的应用——例如 Electron 进程——直接驱动图谱。如果你的 Electron 捆绑 Node 低于 22.5嵌入这条路走不通这是文档明确给出的硬性前提。TypeScript 方面包内自带类型声明文档要求保持types/node可用并且skipLibCheck: true这也是常见的默认设置。安装从 npm 安装以拉取对应平台的包npm i colbymchenry/codegraphREADME.md 说明这样安装的原因与主包匹配的 per-platform 包会随 shim 一起被 npm 拉下来该 per-platform 包携带编译好的库及其依赖。per-platform 包以optionalDependencies形式分发命名形如colbymchenry/codegraph-target带os/cpu字段npm 只会安装匹配当前系统的那个这一点在 BUNDLING.md 中有完整说明。如果你的 registry 镜像尚未同步对应的 per-platform 包安装可能报no prebuilt bundle for platform。CHANGELOG.md 记录了 #303 的修复launcher 会改为从 GitHub Releases 下载 bundle 并缓存可用CODEGRAPH_NO_DOWNLOAD1关闭该回退或用CODEGRAPH_DOWNLOAD_BASE指向自己的镜像。初始化索引并调用核心方法以下示例取自 API 参考其中/path/to/project是占位路径替换为你要索引的项目根目录import CodeGraph from colbymchenry/codegraph; const cg await CodeGraph.init(/path/to/project); // 或者打开已有索引 // const cg await CodeGraph.open(/path/to/project); await cg.indexAll({ onProgress: (p) console.log(${p.phase}: ${p.current}/${p.total}), }); const results cg.searchNodes(UserService); const callers cg.getCallers(results[0].node.id); const context await cg.buildContext(fix login bug, { maxNodes: 20, includeCode: true, format: markdown, }); const impact cg.getImpactRadius(results[0].node.id, 2); cg.watch(); // 文件变更时自动同步 cg.unwatch(); // 停止监听 cg.close(); // 关闭数据库连接文档给出的方法表完整表格见 api.md方法用途CodeGraph.init(path)/CodeGraph.open(path)创建或打开项目索引indexAll(opts)全量索引带进度回调sync()增量更新searchNodes(query)全文符号搜索getCallers(id)/getCallees(id)遍历调用图getImpactRadius(id, depth)变更的传递影响面buildContext(task, opts)生成给 AI 的 Markdown / JSON 上下文watch()/unwatch()启动 / 停止文件监听close()关闭数据库连接CommonJS 环境同样可用const { CodeGraph } require(colbymchenry/codegraph);。init与open的区别是创建新索引还是打开已有索引如果你的应用启动时索引已存在比如由codegraph initCLI 建立用open跳过重复建库用indexAll做首次或全量重建sync()做后续增量更新。直接使用底层构件如果你不走CodeGraph门面类而要自己驱动图谱同一入口还导出一组底层构件api.mdDatabaseConnection、QueryBuilder、getDatabasePath、initGrammars/loadGrammarsForLanguages、FileLock。import { CodeGraph, DatabaseConnection, QueryBuilder, getDatabasePath, initGrammars, loadGrammarsForLanguages, FileLock, } from colbymchenry/codegraph;文档只列出了这些导出的名称和用途定位没有逐一举例需要细粒度控制数据库连接或语法加载时从这一组导出入手具体行为以 src/db 等源码为准。验证嵌入是否正常工作文档展示的可观察行为如下按代码顺序对应indexAll的onProgress回调会打印进度格式为${p.phase}: ${p.current}/${p.total}例如阶段名加当前/总数——回调有输出即说明索引过程在推进searchNodes(UserService)返回结果数组results[0].node.id可作为后续调用的入参——能取到带node.id的结果说明符号搜索通了getCallers、getImpactRadius、buildContext依次基于该 id 产出调用方、影响面和上下文内容是端到端跑通的最小验证链。文档没有给出固定输出样例或判定阈值上述回调与返回值就是文档展示的成功路径若searchNodes返回空先确认传入的是已建索引的项目路径init指向的目录与searchNodes查询的符号是否属于同一项目。限制与边界运行时限制只作用于嵌入 APICLI 和 MCP server 跑在自带打包运行时上无需宿主 Node不受 Node 22.5 限制约束BUNDLING.md 解释了打包时机的动机零原生插件、无版本依赖。数据库是本地 SQLite.codegraph/codegraph.dbFTS5 全文检索索引状态与文件路径绑定嵌入应用与 CLI 操作的是同一份索引文件。文档未提及 Electron 渲染进程直接嵌入的场景示例与要求都针对主进程一类拥有完整 Node 运行时的环境。若要嵌入 CodeGraph 的可视化界面而非引擎那是另一个包colbymchenry/codegraph-ui组件库见 CHANGELOG.md 的记录不在本文的嵌入 API 范围内。完成嵌入后应用内通过CodeGraph类即可执行搜索、调用图遍历与影响面分析索引由watch()在文件变更时保持同步应用退出前调用close()释放数据库连接。【免费下载链接】codegraphPre-indexed code knowledge graph, auto syncs on code changes, for Claude Code, Codex, Gemini, Cursor, OpenCode, AntiGravity, Kiro, CoPilot, and Hermes Agent — fewer tokens, fewer tool calls, 100% local项目地址: https://gitcode.com/GitHub_Trending/co0degr/codegraph创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考