代码智能依赖分析工具

LensPR是一款为AI编程代理设计的代码智能依赖分析工具,通过构建代码库的依赖图,帮助AI在修改代码前理解结构依赖关系,避免破坏性修改。

  • by kyrylopr
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 kyrylopr/lenspr

使用说明

Code intelligence for AI coding agents. Your AI sees dependencies before making changes.

Alpha(0.1.x)——在真实项目上工作,作者每天都在使用。预计会有粗糙的边缘。

AI助手一次编辑一个文件的代码。他们看不到依赖关系。他们抓取、阅读、猜测,然后把东西分成三个文件。

LensPR为你的代码库构建了一个依赖图,并在它改变任何东西之前给你的AI结构理解。

快速开始

需要 Python 3.11+, macOS或Linux.对于TypeScript/JS项目,也 Node.js 18+.

pip install 'lenspr[all]'
lenspr init .
lenspr setup .

重新启动IDE。完成。你的AI现在已经 lens_* 工具。

添加 .lens/ 到你的 .gitignore --该图是本地的,并从源代码重建。


它的作用

“什么取决于这个功能?”

一个调用返回源代码、调用者、调用内容和相关测试:

> lens_context("auth.login_handler")

source: 42 lines
callers: auth_routes.create_routes, test_auth.test_login_success
callees: db.get_user, crypto.verify_password, jwt.create_token
tests: test_login_success, test_login_wrong_password

如果没有LensPR,你的AI会进行5-7次grep/read调用,但仍然会错过一些东西。使用LensPR,只需一次通话,即可获得完整画面。

“如果我改变这个,会有什么问题?”

在任何修改之前,AI都会看到爆炸半径:

> lens_check_impact("models.User")

severity: CRITICAL
direct_dependents: 15
indirect_dependents: 23
affected_modules: auth, payments, notifications
tests_covering: 3

人工智能会警告你,改变它的方法,或者要求你确认。不再有盲目的编辑。

“这个代码库有多健康?”

> lens_vibecheck()

score: 86/100 (B)
  test_coverage:    17/25 — 67% functions tested
  dead_code:        20/20 — 0% dead code
  circular_imports: 15/15 — 0 cycles
  architecture:     12/15 — 1 violation
  documentation:     8/10 — 81% documented
  graph_confidence: 14/15 — 94% edges resolved

跟踪代码库是否随着时间的推移而改进或降级。

跨语言可见性

LensPR将前端和后端连接到一个图形中:

LoginModal.tsx → fetch("/api/auth/login")
                        ↓ CALLS_API
Backend:  @router.post("/login") → login_handler()
            → db.query(User)        [reads: users]
            → verify_password()
            → create_jwt_token()

还跟踪:数据库表、Docker服务、环境变量、CI/CD工作流、SQL迁移。


使用

IDE 设置
克劳德代码 lenspr setup . --自动
光标 复制 .mcp.json 到 .cursor/mcp.json
任何MCP客户端 lenspr serve <path>

语言: Python(通过Jedi/Pyright获得95%以上的分辨率)和TypeScript/JavaScript(通过tree-sitter+TS编译器API获得85-95%)。

基础设施: .sql 文件、Dockerfiles, docker-compose.ymlGitHub操作工作流, .env 文件——全部解析到同一个图中。

一切都在本地运行。你的代码永远不会离开你的机器。


主要特点

影响分析 严重性(低→ 在做出任何改变之前
一个通话上下文 一个请求中的源+调用者+被调用者+测试
跨语言 前端HTTP→ 后端路由、数据库表、Docker、环境变量、CI/CD
外科编辑 在函数内进行有针对性的查找/替换——不重写完整文件
死代码 查找无法访问的函数(Django、FastAPI、Celery入口点)
架构规则 强制执行图层边界——在应用更改之前发出违规警告
每个函数的Git 职能层面的责任、历史、提交范围
会话内存 AI在上下文重置过程中继续前进
自动同步 每次保存时,文件监视器都会更新图形
健康评分 6个维度0-100分——跟踪质量随时间变化

60多种工具分为12组,只启用您需要的工具 lenspr tools.

All tools by category

导航和搜索(8): lens_context, lens_get_node, lens_search, lens_grep, lens_find_usages, lens_get_structure, lens_list_nodes, lens_get_connections

修改(6): lens_update_node, lens_patch_node, lens_add_node, lens_delete_node, lens_rename, lens_batch

分析(6): lens_check_impact, lens_validate_change, lens_health, lens_dead_code, lens_dependencies, lens_diff

质量(7): lens_vibecheck, lens_nfr_check, lens_test_coverage, lens_security_scan, lens_dep_audit, lens_fix_plan, lens_generate_test_skeleton

建筑(9): lens_arch_rule_add, lens_arch_rule_list, lens_arch_rule_delete, lens_arch_check, lens_class_metrics, lens_project_metrics, lens_largest_classes, lens_compare_classes, lens_components

Git(4): lens_blame, lens_node_history, lens_commit_scope, lens_recent_changes

基础设施(5): lens_api_map, lens_db_map, lens_env_map, lens_ffi_map, lens_infra_map

测试和跟踪(3): lens_run_tests, lens_trace, lens_trace_stats

注释(5): lens_annotate, lens_save_annotation, lens_batch_save_annotations, lens_annotate_batch, lens_annotation_stats

会议(4): lens_session_write, lens_session_read, lens_session_handoff, lens_resume

时间(2): lens_hotspots, lens_node_timeline

说明(1): lens_explain


已知限制

  • 视窗 --不支持。仅限macOS和Linux。
  • self.method() 电话 --静态解析器不能完全解析实例方法分派。解决方法: lens_trace (Python 3.12+)在运行时解析这些问题。
  • Go、Rust、Java --尚未得到支持。解析器接口已准备好供贡献者使用。
  • 动态代码 — getattr, eval,动态导入不能静态跟踪。

贡献

试试看。如果它坏了,告诉我。

  • 错误报告 --即使是“这行不通”也是有帮助的
  • 语言解析器 --Go、Rust、Java(BaseParser接口已就绪)
  • 想法 — 打开一个问题

许可证

麻省理工学院


因为AI一直在破坏我的代码。