graphlens:将任意代码仓库转换为一个类型化图——支持 Python、TypeScript、Go 和 Rust
我使用过的每一个代码智能工具都陷入了两种陷阱之一。
第一种是“grep 并阅读”循环:你(或你的人工智能代理)搜索一个名称,打开十个文件,阅读匹配项周围的内容,跟踪一个导入,然后再次搜索。这种方法虽然有效,但速度缓慢,消耗大量令牌(tokens),并且它无法知道你在 services.py 中找到的 process_order 与从 api.py 调用的同一个 process_order 是相同的——而不是 tests/ 目录中那个不相关的函数。
第二种是单一语言孤岛:那些能完美理解 Python 的工具,一旦你的 TypeScript 前端调用 Python FastAPI 路由时就会变得“失明”。真实的系统是多语言的,但你的工具通常不是。
graphlens 是一个开源(MIT 许可证)框架,旨在摆脱这两种陷阱。它解析源代码项目,将其结构规范化为共享的图中间表示(IR),并将该图交给你,以便你进行任何操作——依赖分析、导航、死代码检测,或者向大型语言模型(LLM)代理提供精确的答案,而不是 dumping 整个文件。
代码仓库 → 语言适配器 → GraphLens(中间表示) → 图后端
| 层级 | 职责 |
|---|---|
| 语言适配器 | 解析源文件,生成 GraphLens
|
| GraphLens | 类型化节点 + 有向关系——中间表示 |
| 图后端 | 持久化或查询图数据(Neo4j、内存数据库或自定义后端) |
关键的设计决策:适配器是纯粹的数据生产者。 它们从不写入数据库,在读取后从不接触文件系统,也从不运行服务器。图是唯一的输出。这使得整个流水线易于测试、缓存和序列化。
30 秒构建你的第一个图
pip install "graphlens-cli[python]"
graphlens analyze ./my-project
graphlens · my-project
节点数: 1240
关系数: 3981
解析器: 正常
按类型统计节点 按类型统计关系
函数 410 包含 980
方法 265 声明 870
类 98 调用 640
模块 54 引用 410
或者通过 Python 使用:
from pathlib import Path
from graphlens import adapter_registry
adapter = adapter_registry.load("python")()
graph = adapter.analyze(Path("./my-project"))
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。