代码知识图谱服务

LiLBrain是一个自动分析代码库并生成可查询知识图谱的服务,通过Model Context Protocol(MCP)提供快速代码导航和分析功能。

  • by MangoByteLabs
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 MangoByteLabs/EZgraph

使用说明

李布雷恩

即时代码库知识图MCP服务器。

把它放到任何项目中。它会自动检测语言,为每个函数、类和调用链建立索引,然后通过MCP(模型上下文协议)为其提供服务——这样你的LLM就可以在几毫秒内导航代码,而不是读取数千行。

为什么

阅读5000行代码来理解一个调用链需要大约5万个代币。一个图查询大约需要200个令牌。 成本降低了250倍。

LiLBrain将任何代码库转换为零配置的可查询知识图。

支持的语言(20+)

Python、Rust、Go、TypeScript、JavaScript、Java、C、C++、C#、Ruby、PHP、Swift、Kotlin、Scala、Zig、Lua、Elixir、Dart、Vortex——加上别名(.jsx、.tsx、.mjs、.hpp、.cc、.exs)。

安装

pip install lilbrain

或克隆:

git clone https://github.com/MangoByteLabs/LiLBrain.git
cd LiLBrain
pip install -e .

快速开始

作为MCP服务器(用于Claude等)

添加到您的 .mcp.json:

{
  "mcpServers": {
    "lilbrain": {
      "command": "lilbrain",
      "args": ["/path/to/your/project"]
    }
  }
}

或者直接使用Python:

{
  "mcpServers": {
    "lilbrain": {
      "command": "python3",
      "args": ["-m", "lilbrain", "/path/to/your/project"]
    }
  }
}

命令行接口命令模式

# Stats overview
lilbrain /path/to/project --stats

# Quick function lookup
lilbrain /path/to/project --query main

# Dump full graph JSON
lilbrain /path/to/project --dump

它索引了什么

特性 描述
函数 名称、参数、返回类型、位置、文档字符串、复杂性得分
类 结构、枚举、特征、接口、模块
调用图 谁呼叫谁--完全呼叫者/被呼叫者边缘
子系统 根据目录结构自动分类
管道 从函数命名模式中自动检测
常量 UPPER_CASE常量、类型化常量、finals
交叉边缘 跨子系统依赖关系图
章节 标有以下内容的代码段 // SECTION 或 # SECTION
复杂性 每个函数的圈动+认知复杂性
语义索引 基于意义搜索的TF-IDF向量

MCP工具(24)

核心图(12)

工具 说明
lilbrain_overview 项目概述:文件、函数、语言、子系统
lilbrain_function 查找任何函数——签名、位置、调用者、被调用者
lilbrain_callers 函数的完整调用图
lilbrain_search 搜索所有内容:函数、类、节、常量
lilbrain_file 文件信息:函数、类、节、语言
lilbrain_read 读取函数或文件区域的源代码
lilbrain_subsystem 深入子系统
lilbrain_pipeline 跟踪管道(解析、验证、编译等)
lilbrain_dataflow 上游呼叫者和下游被呼叫者
lilbrain_trace 深度受限的呼叫链追踪
lilbrain_hotspots 大多数连接功能(最高风扇输入+风扇输出)
lilbrain_architecture 架构图:子系统和交叉依赖关系

影响与质量(4)

工具 说明
lilbrain_impact 爆炸半径分析——更改函数,查看所有受影响的内容
lilbrain_deadcode 查找零调用者+LOC浪费估算的函数
lilbrain_clones 检测近乎重复的函数(标记Jaccard相似性)
lilbrain_diagram 自动生成Mermaid或D2架构图

情报(4)

工具 说明
lilbrain_complexity 圈动+认知复杂性排名
lilbrain_complexity_velocity 跟踪git历史中的复杂性变化
lilbrain_semantic 语义搜索——按含义而非名称查找函数
lilbrain_federation 跨代码库的多仓库联合搜索

第3层——人工智能原生(4)

工具 说明
lilbrain_ask 自然语言问题——通往正确分析的自动途径
lilbrain_diff Git感知图差异:更改函数、爆炸半径、风险
lilbrain_pr_review 自动生成带有风险评估的PR审查上下文
lilbrain_runtime 将OpenTetry跟踪与静态调用图相关联

特性

影响分析

更改功能?LiLBrain告诉您中断的具体内容:

lilbrain_impact("parse_request")
→ 47 functions affected across 5 subsystems
→ Risk: HIGH
→ Subsystems: api, auth, middleware, handlers, tests

汽车架构图

从实时代码生成始终准确的美人鱼图:

lilbrain_diagram("architecture")
→ graph TD
      api["api\n120 fns | 3400 LOC"]
      auth["auth\n45 fns | 1200 LOC"]
      api -->|12| auth

死代码和克隆检测

lilbrain_deadcode()
→ 847/3200 functions unreachable (26.5%)
→ 12,400 LOC wasted

lilbrain_clones()
→ adam_step <-> adamw_step (88.5% similar)
→ tcp_recv <-> udp_recv (83.3% similar)

语义搜索

根据函数的功能而不是名称查找函数:

lilbrain_semantic("handle user authentication")
→ verify_token (auth/jwt.py:45) score=14.2
→ check_session (middleware/session.rs:120) score=11.8
→ validate_credentials (api/login.go:33) score=9.4

自然语言查询

lilbrain_ask("what is the most complex code?")
→ eval_stmt: cyclomatic=189, cognitive=198
→ lex: cyclomatic=171, cognitive=182

lilbrain_ask("show me dead code")
→ 847 functions with zero callers...

lilbrain_ask("who calls parse_request?")
→ handle_http, route_api, middleware_chain...

Git时间旅行与公关评论

lilbrain_diff("main", "feature-branch")
→ 12 files changed, 34 functions modified
→ Blast radius: 156 functions affected
→ Risk: HIGH
→ New cross-subsystem edge: api -> payments (didn't exist before!)

lilbrain_pr_review()
→ **8 files changed**, **23 functions modified**
→ **Blast radius**: 89 functions potentially affected
→ **Risk**: MEDIUM
→ **New cross-subsystem edges**: auth -> billing
→ **Complexity in changed code**: 45

多代表联盟

一次搜索所有存储库:

lilbrain_federation(query="authenticate", repos=["/app/api", "/app/auth", "/app/gateway"])
→ api: 3 matches
→ auth: 12 matches
→ gateway: 5 matches

运行时相关性

将静态分析与生产现实联系起来:

lilbrain_runtime(trace_dir="traces/")
→ Hot paths: handle_request (45,000 calls, avg 2.3ms)
→ Cold code: legacy_handler (0 invocations — truly dead)

自动重新索引

LiLBrain观察文件更改和 .graph-dirty 哨兵档案。触摸 .graph-dirty 在项目根目录中(例如,从git post提交钩子),图形会在下一次查询时自动重建。

# Add to .git/hooks/post-commit:
touch .graph-dirty

演出

项目大小 文件 函数 索引时间
小(1K LOC) ~10 ~40 <0.1s
中等(50K LOC) ~200 ~2000 ~0.5秒
大(360K LOC) ~550 ~16800 ~2.2秒

零依赖。纯Python 3.10+。无处不在。

运作原理

  1. 走 --递归查找所有源文件,跳过 node_modules, .git, __pycache__等等。
  2. 检测 --根据文件扩展名识别语言,加载正确的正则表达式模式
  3. 提取 --从每个文件中提取函数、类、节和常量
  4. 连接 --通过扫描函数体以查找已知函数名来构建调用图
  5. 分析 --计算复杂性得分,构建TF-IDF语义索引
  6. 分类 --基于目录结构自动将文件分组到子系统中
  7. 服务 --通过JSON-RPC stdin/stdout上的24个MCP工具公开所有内容

许可证

麻省理工学院