关于 DevLens
DevLens 为代码仓库构建预计算的语义代码图,并向 AI Agent 和开发者提供排序后的代码上下文。其 MCP 工具支持符号查询、调用流程、变更影响及节点安全摘要,覆盖五类语言。
主要功能
- 01构建可搜索的代码图
- 02按任务排序并限制上下文令牌预算
- 03查找符号并查看调用者或被调用者
- 04追踪变更影响和提交差异
- 05查看节点级安全摘要
- 06通过交互式 Web UI 浏览代码图
适用场景
- 01为 Agent 任务查找相关代码
- 02追踪符号的调用流程
- 03评估代码修改前的影响
- 04检查代码图节点的安全问题
MCP 相关
stdio 或 HTTP MCP 服务提供五种自描述工具,用于查询代码图、查找符号、查看节点详情、分析影响和管理仓库。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
5收录的工具列表 · 更新于 今天
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| task | string | 是 | 用通俗语言描述的实际问题或任务 |
| focus | array | 否 | 用于聚焦数据包的 nodeIds、符号名称或 filePaths |
| intent | enum | 否 | 默认值:exploratorypinpoint | reference-list | flow | overview | concept | security-audit | exploratory |
| repoPath | string | 否 | 仅当分析了多个仓库且工作文件夹不明确时才需要 |
| commitHash | string | 否 | 默认为最近分析的提交 |
| tokenBudget | number | 否 | 500..100000;默认值随仓库大小调整。代码主体计入此预算之外。 |
详细介绍
DevLens
为 AI Agent 和开发者提供代码库智能分析。
只需分析一次代码库。之后,AI Agent 就能通过 MCP 查询预先计算好的代码图谱,获取排名靠前的文件、调用流程、影响范围和安全信息,而不必逐个文件重新读取代码库。提供 5 个自描述的 MCP 工具,纯文本数据包的 token 数仅为读取代码的三分之一,且在基准测试中响应体积最小。
点击图片观看演示
为什么选择 DevLens?
- 让 Agent 不再浪费 token。 一次 MCP 调用即可返回符合任务需求的数据包,其中包含相关文件和符号,并按重要性排序,且不超出 token 预算。无需反复执行 grep,也无需重新读取文件。
- 基准测试中表现领先。 在正确性、F1、召回率和精确率方面位列 9 款工具之首,是唯一在所有质量指标上都领先的工具。
- 快速且轻量。 每次调用仅需 67 ms,数据包比最接近的图谱竞品小 6.7×,并且绝不会超出你设定的 token 预算。
- 开发者也能从中受益。 提供交互式图谱可视化、修改符号前的影响范围分析、PR 审查数据包,以及逐节点安全分析。
基准测试
我们在一个无头编码 Agent、一个模型、一个真实的 TypeScript 代码库上,使用根据实际拉取请求和符号编写的 133 个真实问题,对 DevLens MCP 与其他代码图谱和检索工具——Graphify、codegraph、semble、bm25——进行了基准测试:
| DevLens V3(5 个工具) | Graphify | codegraph | semble | bm25 | |
|---|---|---|---|---|---|
| 正确性(Agent 循环,同一轮运行) | 0.643 | 0.619 | 0.667 | 0.714 | 0.667 |
| F1(Agent 循环,同一轮运行) | 0.529 | 0.526 | 0.604 | 0.636 | 0.581 |
| 正确性(检索层) | 0.694 | 0.662 | 0.674 | 0.652 | 0.664 |
| 响应数据包 | 2,230 token | 15,020 token | 6,339 token | 736 token | 721 token |
| 每次调用延迟 | 67 ms | 2,469 ms | 2,736 ms | 508 ms | 108 ms |
与Graphify正面对比——它是最直接的竞品(tree-sitter 图谱、MCP 服务)——DevLens 在所有方面都胜出:在 Agent 循环中的正确性更高(0.643 对 0.619,同一轮运行),在检索层中的正确性也更高(0.694 对 0.662,在相同问题上的配对测试中 15 胜、9 负);数据包小 6.7×(2,230 对 15,020 token,在全部 54 道可比问题上都更小);每次调用快 约 37×(67 ms 对 2,469 ms)。Graphify 的图谱也大 64%,边数是其 3.6×(16,999 个节点 / 71,694 条边,对比 10,346 个节点 / 19,847 条边),但质量更低。
数据背后的规律是:语法分析工具返回大块内容或单纯的行号列表。DevLens 则从经过类型解析的图谱中返回符合任务需求的数据包,在毫秒内提供相关文件并排序,同时不超出你的 token 预算。
完整方法说明、各类型表格和 9 款工具的对比结果: docs/PUBLIC-BENCHMARKS.md
DevLens 的对比优势
DevLens 是此领域中唯一集原生语义解析、每个节点的 AI 摘要与安全分析,以及框架感知数据边于一体的工具,也是唯一可在 AGPL 下用于商业用途的选项。
| 维度 | DevLens | Graphify | GitNexus | Sourcegraph | DeepWiki |
|---|---|---|---|---|---|
| 解析深度 | 原生语义解析器(TS 编译器、Python ast、go/types、JavaParser、syn),可解析类型 | tree-sitter(语法解析,不含类型信息) | tree-sitter + 原生绑定(不含类型信息) | SCIP/LSIF 符号索引 + 语言服务器(无语义解析) | LLM 直接读取源代码(无结构化解析器) |
| 边的质量 | 经过类型检查的 IMPLEMENTS/EXTENDS、框架路由(Next.js、Django、Spring、Gin、axum)、ORM 数据边(READS_FROM/WRITES_TO) | EXTRACTED/INFERRED/AMBIGUOUS 标签,不支持类型或框架感知 | 调用链、集群、route_map,无 ORM 或数据边 | 精确的符号交叉引用(SCIP),继承关系未经类型检查 | 文档级关系(无结构化图) |
| 每个节点的 AI 摘要 | 每个节点均提供技术、业务和安全摘要,并标注严重性 | 否(LLM 用于文档和概念) | 否(使用嵌入进行语义查询) | 通过 Cody 提供(悬停和内联文档,聊天级别) | 自动为每个符号生成文档(无安全分析,也不区分技术和业务) |
| 安全分析 | 每个节点的严重性 + 爆炸半径影响范围,并提供真实的漏洞利用描述 | 否 | 部分支持(可选择启用 PDG/污点分析) | 否(仅有合规认证) | 否 |
| Agent / MCP 集成 | CLI + 自描述 MCP 服务 + Web UI | CLI + 本地技能(无 MCP) | CLI + 17 工具 MCP + 钩子(AGENTS.md) | MCP 服务(跨代码仓库搜索,不支持针对每个代码仓库的图查询) | 未知(无公开 MCP 集成) |
| 语言覆盖范围 | TS/JS、Python、Java、Go、Rust,每种语言均有原生解析器 | 12 种代码类别 + 文档/图片(浅层语法解析) | 通过 tree-sitter 支持多种语言(Dart/Kotlin/Swift),浅层语法解析 | 通过语言服务器支持 30 多种语言(符号级别,无语义边) | 任意语言(LLM 读取源代码,无结构化提取) |
| 许可证 / 定价 | AGPL-3.0,免费,包含商业用途 | Apache-2.0 | PolyForm Noncommercial(不可用于商业用途) | 开源核心版,Enterprise 付费 | 公共代码仓库免费,企业版级别未列出 |
(功能对比基于公开资料,2026 年 8 月。)
**团队选择 DevLens 的原因:**提供语法工具无法生成的语义边,提供其他开源工具均不具备的每个节点安全分析,检索质量在基准测试中领先,并提供统一的 MCP 入口——可免费用于商业用途。
快速开始
步骤 1 — 安装 CLI
npm install -g @devlensio/cli
或者安装独立二进制文件(无需 Node.js):
# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/devlensio/devlensOSS/main/scripts/install.sh | sh
# Windows (PowerShell)
irm https://raw.githubusercontent.com/devlensio/devlensOSS/main/scripts/install.ps1 | iex
步骤 2 — 配置模型(可选)
只有需要 AI 摘要时才需要配置。仅分析代码结构时可离线运行,无需 API 密钥。
devlens init
此过程会交互式引导你选择提供商、API 类型、密钥、端点和模型——在任意步骤按 ESC 即可返回上一步。推荐模型请参阅配置。
步骤 3 — 分析代码仓库
cd your-project
devlens analyze . --summarize
此步骤会构建图、生成摘要并创建搜索索引——只需运行一次。完成后,以下所有操作都会即时完成。
步骤 4 — 连接你的 AI Agent
启动 MCP 服务:
devlens mcp
然后在你的 Agent 中注册它。选择你的工具:
Claude Code / Claude Desktop
claude mcp add devlens -- devlens mcp
Cursor — 添加到 .cursor/mcp.json:
{
"mcpServers": {
"devlens": { "command": "devlens", "args": ["mcp"] }
}
}
Codex — 添加到 ~/.codex/config.toml:
[mcp_servers.devlens]
command = "devlens"
args = ["mcp"]
Hermes — 添加到 config.yaml:
mcp:
servers:
devlens:
command: devlens
args: [mcp]
任何其他 MCP 客户端 — 此服务通过 stdio 使用标准 MCP 协议。将客户端指向命令 devlens mcp。若使用 HTTP 传输:
devlens mcp http -p 7000
服务会通过 tools/list 自行描述完整的工具列表,因此你的 Agent 会自动发现所有内容。就是这么简单——问问你的 Agent“这个代码仓库中的身份验证是如何工作的?”,看它如何查询图谱,而不是读取文件。
你的 Agent 可以询问什么
服务会通过 tools/list 自行描述每个工具的参数——你的 Agent 会自动填写。五个工具,完全不需要 graphId——系统会根据你的工作目录解析代码仓库。
| 工具 | 关键参数 | 功能 |
|---|---|---|
resolve_context | task(必需)、intent?、focus?、tokenBudget? | 入口工具。 一次调用即可返回符合任务需求的纯文本数据包:ANSWER 行、带有单行释义的排序节点、调用流程、包含匹配行片段的相关文件,以及 ID 映射表——所有内容均在令牌预算范围内。意图:pinpoint、reference-list、flow、overview、concept、security-audit、exploratory。 |
find_symbols | query(必需)、limit? | 低成本 BM25F 名称查找:返回 nodeIds 和 file:line,不包含图谱或源代码。 |
get_node | node(必需)、include? | 获取单个节点的完整详情:技术、业务和安全摘要,以及调用者、被调用者和(选择加入的)原始源代码。 |
impact | target? 或 from+to 提交 | 变更影响:更改某个符号会导致哪些问题;可通过两次分析的提交进行提交范围差异分析。 |
repo | action | 管理已分析的图谱:list、analyze、freshness、health。 |
每个响应都包含一个 provenance 区块(commitHash、analyzedAt、hasGit),因此你的 Agent 始终能知道回答问题时使用的是哪个快照。
完整参考:
docs/mcp-reference.md
支持的语言
DevLens 使用原生解析器解析五类语言(无需 AI、正则表达式或 tree-sitter),并理解相应的框架。摘要绝不会在后台静默生成:消耗令牌前会先征得你的确认;仅分析代码结构则完全不需要任何提供商。
| 语言 | 图谱可理解的框架 / 技术栈 | 解析内容 |
|---|---|---|
| TypeScript / JavaScript | React、Next.js(app 和 pages 路由器)、Express/Hono/Fastify、React Router、TanStack Router,以及任何 Node 项目 | 组件、hooks、状态存储、类、方法、函数、路由 |
| Python | FastAPI、Flask、Django(含 DRF)、SQLAlchemy / Django ORM、Celery、Pydantic | 类、方法、函数、路由、数据模型 |
| Java | Spring Boot(控制器、JPA、Spring Data 仓库) | 类、方法、接口、枚举、路由 |
| Go | net/http、Gin、Echo、chi、Fiber、GORM、database/sql | 结构体、接口、方法、函数、路由 |
| Rust | axum、actix-web、rocket、utoipa、Diesel | 结构体、枚举、trait、impl 块、方法、函数、路由 |
每个代码仓库都会使用对应语言的解析器进行分析(Python ast、JavaParser、Go go/ast 加 go/types、Rust syn、TS compiler API),因此依赖关系都是真实的:经过类型检查的接口(IMPLEMENTS)、框架路由(HANDLES)以及 ORM 数据层(READS_FROM、WRITES_TO)。
面向开发者:Web UI
适合希望以交互式图谱查看代码库的场景。
打开 Web UI,粘贴仓库路径,然后浏览力导向画布。点击任意节点即可查看其摘要、调用方、被调用方和安全标记。搜索、筛选并比较不同版本之间的提交差异。Project 面板会显示搜索索引是否就绪,并提供一键重新索引操作。
bun start # from the source repo: API + Web UI on one port (http://localhost:3000)
Web UI 直接从源代码树运行,不会打包进已安装的 CLI 二进制文件中。
CLI
适用于脚本、CI,以及无需离开终端即可快速获取答案的场景。每条命令都支持 --json,以便将输出传入脚本;支持 -v/--verbose,用于诊断;还支持 --quiet,以最简输出运行。
分析与摘要
| 命令 | 功能 |
|---|---|
devlens detect [path] [--deps] | 分析前检查仓库:语言、清单文件、依赖数量、源文件 |
devlens analyze [path] [--summarize] [--force-summarize] | 构建图谱及其搜索索引(可选添加 AI 摘要) |
devlens summarize [target] | (重新)生成技术、业务和安全摘要 |
devlens status | 查看已分析的仓库、其语言及摘要覆盖情况 |
devlens doctor | 环境健康检查:git、存储、LLM 提供方,以及四种提取器运行时(go、rust、java、python) |
devlens init | 首次设置:交互式配置 LLM 提供方 |
探索与理解
| 命令 | 功能 |
|---|---|
devlens overview | 全局概览:语言、框架、统计数据、核心节点 |
devlens top-nodes [-l <n>] | 得分最高(最核心)的节点 |
devlens find-nodes <name> [-t <type>] | 按名称、类型、文件或严重性搜索(例如 -t ROUTE) |
devlens nodes-in-path <path> | 列出文件或文件夹中的所有节点 |
devlens get-node <id> | 查看单个节点的完整详情:摘要、调用方、被调用方 |
devlens node-code <id> | 查看节点的原始源代码(开销较大,建议使用 get-node) |
devlens architecture | 一次调用获取架构概要:模块、路由、流程、健康状况 |
devlens get-context <query> | 为 Agent 提供受 Token 预算限制的上下文数据包 |
影响与质量
| 命令 | 功能 |
|---|---|
devlens blast-radius <id> | 更改此项会导致哪些内容出问题(上游依赖方) |
devlens khop <id> | 此项依赖哪些内容(下游) |
devlens subgraph <seed> | 查看节点所属的紧密关联集群(模块) |
devlens cycles | 查看循环依赖 |
devlens security [--min-severity ...] | 查看安全发现及其严重性和说明 |
devlens security-brief | 查看按风险排序的安全报告及其影响范围 |
devlens diff <from> <to> | 比较两个已分析的提交 |
devlens review-pr <from> <to> | PR 审查数据包:差异、影响、测试、安全变化 |
devlens check-freshness | 检查图谱是否相对于 HEAD 已过时 |
管理与集成
| 命令 | 功能 |
|---|---|
devlens config | 查看或设置 LLM 提供方配置(~/.devlens/config.json) |
devlens repos | 列出已分析的仓库 |
devlens graphs list | delete | 管理已存储的图谱 |
devlens reindex [graphId] [commitHash] [--force] | 重建本地搜索索引(.search.json),无需重新分析。不带参数时,会为每个图谱的最新提交重新建立索引 |
devlens serve | 仅启动后端 HTTP API(供 MCP 服务和 Web UI 使用) |
devlens mcp | 运行 MCP 服务(参见快速入门) |
devlens update [--check] | 将 CLI 更新至最新发布版本——自动检测包管理器(npm/pnpm/yarn/bun)。--check 仅检查并报告(可通过 --json 管道传递);离线、已是最新版本、从源码检出的版本和非全局安装均会显示明确消息 |
操作示例
devlens analyze . --summarize # graph + summaries + search index
devlens find-nodes -t ROUTE # every route in the app
devlens blast-radius "src/auth/login.ts::login"
devlens reindex # index everything up front
**完整参考:**参阅
src/cli/README.md,查看每条命令及其选项和示例。
如何生成摘要
摘要是针对每个节点生成的 AI 描述,能让查询丰富得多。可在分析期间或之后的任意时间运行:
devlens analyze . --summarize # during analysis (recommended)
devlens summarize . # current directory's repo
devlens summarize <graphId> # a stored graph
devlens summarize . --force-summarize # re-generate even if summarized
devlens summarize . --provider openai --provider-name deepseek --model deepseek-v4-flash
重新生成仓库摘要时,只会处理尚无摘要的节点,因此不会重复消耗令牌。使用 devlens init 配置一次提供方即可。
配置
配置位于 ~/.devlens/config.json,通过 devlens init 或 devlens config 设置。模型会从各提供方的 /models 端点动态发现,因此没有硬编码的模型列表——可按预算和质量要求选择合适的模型。
devlens config --set # interactive setup
devlens config --provider openai --provider-name deepseek --model deepseek-v4-flash --api-key <key>
devlens config --active openai:deepseek # switch saved provider
devlens doctor # health check
DevLens 能理解什么
每个仓库和每种语言都有各自的图。节点类型包括 FILE、FUNCTION、METHOD、CLASS、INTERFACE、STRUCT、ENUM、TRAIT、IMPL_BLOCK、ROUTE、COMPONENT、HOOK、STATE_STORE、UTILITY、TEST、STORY 和 THIRD_PARTY(取决于语言)。每个节点都有重要性评分;生成摘要后,还会包含功能、技术和安全摘要。
边类型(图中绘制的连接)包括:CALLS、IMPORTS、READS_FROM、WRITES_TO、PROP_PASS、EMITS、LISTENS、WRAPPED_BY、GUARDS、HANDLES、TESTS、USES、NEXTJS_API_CALL、NAVIGATES_TO、IMPLEMENTS(类到接口、trait 或 ABC)、EXTENDS(类到基类)。EXPORTS、THROWS、MODULE 和 PACKAGE 为未来支持的语言预留。
路由识别:路由会作为真实的图节点,支持 Next.js(app 和 pages)、React Router、TanStack Router、wouter、Express、Fastify、Hono、Koa、Django URLconf 和 DRF、Flask 蓝图、@RestController(Spring)、Gin、Echo、chi、普通 HTTP 处理器、axum、actix 和 rocket。
搜索索引
每次分析的提交都会生成派生的 BM25F 搜索索引,与图存放在一起,路径为 ~/.devlens/graphs/<graphId>/commits/<commitHash>.search.json。
- 每次运行
devlens analyze和devlens summarize,都会为其生成的提交重建索引,因此可立即进行搜索。 - 由旧版 DevLens 构建的图没有索引。首次搜索时会按需生成索引,也可以使用
devlens reindex预先为所有内容建立索引。 - 索引是派生数据:删除它是安全的,需要时会按需重建。
devlens reindex # latest commit of every graph
devlens reindex <graphId> # every commit of one graph
devlens reindex <graphId> <commitHash> --force # one commit, rebuilt even if present
也可以通过 HTTP 执行相同操作:POST /api/reindex 和 POST /api/reindex/:graphId?commitHash=...&force=1。
截图
图浏览器 · 包含摘要和安全风险的节点检查器 · 聚焦子图 · 安全发现
为什么速度快、成本低
一个节点摘要大约需要 50 个令牌,而它描述的文件大约需要 2,000 个令牌。查询摘要和图切片的成本只是读取文件的一小部分,因此人类能更快获得答案,AI Agent 在完成相同任务时也能大幅减少令牌消耗。
适用对象
- 开发者和团队:数小时而非数周即可熟悉项目;结合影响范围审查 PR;发现循环依赖和巨型文件;维护持续更新的文档。
- 工程负责人:从全局视角了解架构,在技术债演变成危机前发现问题。
- 使用 AI 增强开发的开发者:别再让 Agent 为了重新读取文件而消耗令牌;改为查询图。
仓库布局
devlensOSS/
├── src/
│ ├── cli/ # `devlens` CLI (commander program + commands)
│ ├── core/ # Shared query core (CLI + MCP, they never drift)
│ ├── mcp/ # MCP server (stdio + HTTP) and packet renderer
│ ├── search/ # Local BM25F search stack (index, query, cache)
│ └── server/ # HTTP API for the Web UI + Next.js proxy
├── frontend/ # Next.js graph visualizer (Cytoscape)
├── plugins/devlens/ # Deprecated agent skill source (old installs)
├── packages/skill-installer/ # @devlensio/skill (deprecated)
├── bin/ + npm/<platform>/ # Launcher and prebuilt binary packages
├── scripts/ # Release tooling + start.mjs (bun start build-or-skip)
└── server.json # MCP registry manifest
分析引擎(原生解析器和图构建)以独立的 devlensio 包的形式发布。
DevLens Cloud
托管版本正在开发中:可分享的图谱、团队工作区、按提交实时更新并附带节点摘要的文档、详细的 PR 分析(摘要、影响、安全性)、显示新增/修改/删除节点的提交差异、基于 AI 的代码库聊天功能,以及无需本地配置。
许可证
AGPL-3.0。属于 devlensio 工具系列。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
