flutter_agent_lens 用 MCP 服务,将 Flutter DevTools 暴露给 AI

Flutter 的 DevTools 大家应该都用过吧?以前开发调试都会用到,但是 AI 时代来了之后,大家应该很少再打开它了吧?而这时候就有人想到了,为什么我不把 DevTool 也变成 AI 可见的东西呢?

所以这就是 flutter_agent_lens 做的事情,它是一个用 Dart 写的 MCP Server,专门为 AI 提供对正在运行的 Flutter App 的直接访问能力

其实就是把 Dart VM Service 、 Flutter service extensions 、 MCP tool catalog 包在了一起。

简单来说,其实就是 flutter_agent_lens 可以通过 Dart VM Service 实时连接到 debug/profile 模式下的 Flutter App,同时给基于 dart_mcp 提供服务能力:

目前主要支持的模块功能有:

文件 职责
widget_handlers.dart Widget 树、布局约束、debug overlay 开关
memory_handlers.dart 堆内存分析、内存泄漏审计、引用路径追踪
connection_handlers.dart 连接/断开/自动发现 VM Service
performance_handlers.dart CPU profile、帧 jank 诊断、rebuild 计数
debugger_handlers.dart 断点、调用栈、表达式求值
bundle_handlers.dart 包大小分析(读本地 code-size-details.json)
network_handlers.dart HTTP 请求记录
deeplink_handlers.dart App Links/Universal Links 校验
logging_handlers.dart 控制台日志捕获

而总结起来,这个项目提供主要提供了 5 大类 30+ 个 tool call 支持:

  • 连接与发现

    • connect_to_app / autodiscover_app / list_running_apps / disconnect / get_app_info
  • 性能分析

    • diagnose_jank : 检测超过 16.6ms 的掉帧

    • get_cpu_profile :CPU 采样热点

    • get_widget_rebuild_counts : Widget 重建频率统计

    • hot_reload : 触发热重载

  • 布局检查

    • inspect_layout_constraints : Widget 约束/尺寸详情

    • toggle_layout_guidelines / toggle_repaint_rainbow / toggle_slow_animations / toggle_oversized_images / toggle_baselines / toggle_widget_selection

  • 内存与调试

    • audit_class_memory_leak : 验证 disposed 对象是否泄漏

    • diff_heap_allocations :前后堆快照 diff

    • get_object_referrers : 追踪对象引用链

    • eval_expression : 在运行时求值 Dart 表达式

    • add_breakpoint / remove_breakpoint / get_call_stack / set_exception_pause_mode

  • 其他

    • analyze_bundle_size :解析 code-size-details.json

    • get_network_profile : HTTP 请求历史

    • trigger_scroll_gesture : 驱动 ScrollController

    • validate_deep_links : Android App Links / iOS Universal Links 验证

项目依赖官方 vm_service 包,其实就是对 DevTools 现在功能的打包,核心数据获取走和 Flutter DevTools 一样的通道,同时支持同时返回 Markdown + JSON,AI 可以自由选择解析方式,比如:

  • 调用的是 Flutter Inspector 的 ext.flutter.inspector.trackRebuildDirtyWidgetswidgetLocationIdMap,监听 Flutter.RebuiltWidgets extension event,然后把 location id 映射到 widget 名称和源码位置,采样 rebuild 事件并整理成 Agent 可读报告
  • 粗粒度 jank 报告diagnose_jank 的实现是设置 VM Timeline flags,清空 timeline,等待几秒,再读 getVMTimeline(),从 traceEvents 里找 GPURasterizer::DrawAnimator::BeginFrame,duration 超过 16.6ms 就算 janky frame,不是完整的 Flutter frame pipeline 归因
  • 其他比如 CPU Profile、Memory / leak、Network Profile 等也可以给 AI 提供性能相关判断信息

整体来说,这就是一个在开发阶段让 AI 助手自主诊断性能、内存、布局问题,替代手动打开 DevTools 的步骤工具

当然它不一定完全准确,但是这个思路还是挺不错的,因为现在我是真的不想去打开 DevTools,而在此之前,让 AI 直接访问 Dart VM Service / Service Extensions 调的效果一致不是很稳定,至少 AI 每次的 tool call 不是稳定的,而 flutter_agent_lens 真实补全了这个问题。

github.com/dhruvanbhal...

相关推荐
右耳朵猫AI1 小时前
React周刊2026W22 | React 13周年、React Router 7.16.0、Spoiled 0.5
前端·react.js·前端框架
广州灵眸科技有限公司1 小时前
3Tops NPU + 4核高性能架构:灵眸科技EASY-EAI-PI2开发板,为边缘AI开启“easy模式”
服务器·前端·人工智能·python·科技·深度学习·架构
李白的天不白2 小时前
服务器地址在哪里 pwd
运维·前端·nginx
晓13132 小时前
【Cocos Creator 3.x】篇——第三章 脚本编程
前端·javascript·游戏引擎
雨翼轻尘2 小时前
01_HTML基本结构
前端·html·基本结构
G_dou_2 小时前
Flutter三方库适配OpenHarmony【mood_journal】心情日记项目完整实战
flutter·harmonyos
AI玫瑰助手2 小时前
Python函数:内置函数(len/max/min/sorted等)详解
android·开发语言·python
右耳朵猫AI2 小时前
前端周刊2026W22 | React 13周年、TanStack Router、Deno 2.8、Node.js 26、npm 分阶段发布
前端·react.js·node.js
scan7242 小时前
从runtime获取信息
java·服务器·前端