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.trackRebuildDirtyWidgets 和 widgetLocationIdMap,监听 Flutter.RebuiltWidgets extension event,然后把 location id 映射到 widget 名称和源码位置,采样 rebuild 事件并整理成 Agent 可读报告
  • 粗粒度 jank 报告 ,diagnose_jank 的实现是设置 VM Timeline flags,清空 timeline,等待几秒,再读 getVMTimeline(),从 traceEvents 里找 GPURasterizer::Draw 或 Animator::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...

相关推荐
jack186892 分钟前
安卓手机忘记锁屏密码怎么办? 无需密码也可解锁
android·智能手机
风骏时光牛马1 小时前
用户管理模块接口开发
前端
彭亚川Allen2 小时前
从零手搓 RAG 之检索全流程,给大模型接上自己的知识库
前端·后端·ai编程
IT_陈寒2 小时前
别让Java字符串拼接偷偷吃掉你的内存
前端·人工智能·后端
软件技术NINI2 小时前
圣罗兰彩妆html+css 4页
前端·css·html
2601_951615203 小时前
网站模板 网站网页模板下载
前端·网络·html
应用市场3 小时前
不用一张图片的像素小游戏:小人是字符串,房间是矩形,平衡靠两千个假玩家
android·kotlin·游戏开发
酷炫码神3 小时前
Day 1|HTML5:一个商城首页的骨架,从 DOCTYPE 到语义化
前端·html·html5
AI源码4 小时前
鲜花商城(HTML 版)
前端·html
hiahiahia1234 小时前
Message 和对话
服务器·前端·数据库