dsh-flutter-tools:在 DSH 侧栏里跑、查、剖 Flutter 应用

前言

用 DeepSeek Harness(DSH)做 Flutter 相关开发时,常见做法是切到终端跑 flutter run,再单独开 DevTools 或 IDE 调试窗口。对话、代码和运行态被拆在多个界面里,热重载、设备切换、内存快照往往要来回找窗口。

下面介绍社区插件 dsh-flutter-tools(维护者 nikitafedorov008),它在 DSH 侧栏提供一块 Flutter 面板:设备与启动、VM Service 控制、内嵌 DevTools,以及内存与性能分析,目标是在不离开当前会话的前提下完成上述操作。

这是什么

dsh-flutter-tools 是 DSH 的客户端类插件(npm 包名 dsh-flutter-tools,当前版本 0.0.1,MIT 许可证)。官方简介概括为:在 DeepSeek Harness 侧栏中提供 Flutter 面板,涵盖设备、启动、VM Service 控制、调试开关、内嵌 DevTools、内存与 profiling。

实现上,宿主侧(Cordis)在 /flutter 路由下维护长驻 flutter daemon、管理 flutter run --machine 子进程,并通过 flutter-devtools-mcp 对接运行中应用的 VM Service;UI 为无构建步骤的 panel.html,侧栏标签通过 iframe 加载该面板。

核心功能

设备与启动

  • Devices:长驻 flutter daemon(事件驱动,非轮询)。插入真机或可用模拟器会自动出现在列表中;面板展示当前选中设备(含 OS 标识与类型图标),点击可切换,选择按项目记忆。
  • Launch:选择设备、模式(debug / profile / release)、flavor 与 --dart-define 键值对,一键启动或停止。面板读取 app.debugPort 并自行连接 VM Service;应用日志显示在面板内。
  • Flavor 与 defines:flavor 从项目推断(Android productFlavors、非默认 Xcode scheme);defines 为键值编辑器。二者按项目记忆,并在进入命令行前校验。

运行中控制与调试

  • Control:热重载、热重启、截图(内联)、Widget 树、debug paint。
  • Debug toggles:仅暴露应用已注册的 service extension,例如 debugPaint、showPerformanceOverlay、repaintRainbow、debugPaintBaselinesEnabled、timeDilation、inspector.show。

DevTools 与内存

  • 内嵌 DevTools:由 daemon 托管 DevTools 服务,面板内嵌 inspector、performance、cpu-profiler、memory、network、logging 等页面;可将同一页面移到侧栏浏览器标签。
  • App facts and memory:VM 版本、平台、pid、isolate 等键值信息;实时堆占用、GC 按钮、保存内存快照,以及最近两次快照对比。

采集、Profiling 与项目命令

  • Captures and profiling:重建跟踪、HTTP 捕获开关;profiling 会话;collect_performance_session(工作区根路径由插件填入)。
  • Project commands:pub get、pub outdated、flutter doctor,输出在面板内渲染(pub outdated 为表格并高亮可升级行,flutter doctor 为清单式展示)。

其他

  • Detach 与 Web:Detach 后应用继续运行,面板停止跟踪;Web 构建可在侧栏浏览器标签打开。
  • SDK 解析:优先使用工作区 pin(.fvm/flutter_sdk,其次 .fvmrc),否则回退到 PATH 上的 Flutter。

安装与启用

DeepSeek Harness 中打开 Settings → Add plugin,在输入框粘贴本仓库地址(该字段也接受插件包名或本地目录)。命令行可使用相同规格的安装方式:

dsh plugin add …

将 … 替换为与图形界面相同的 spec(例如 GitHub 仓库地址)。若当前 profile 由桌面应用管理且拒绝 CLI 变更,通常应通过插件管理器安装。

依赖与要求(来自 README):

  1. 已安装 Flutter SDK(优先工作区 pin,PATH 为备选);
  2. PATH 上可用 npx(首次使用时会拉取 flutter-devtools-mcp);
  3. 安装 dsh-better-sidebar,用于侧栏浏览器标签;
  4. 需要 rebuild 跟踪时应用以 debug 运行;需要 metrics 时以 profile 运行。

Node 引擎要求:>=20(见 package.json)。

典型用法

安装并启用插件、满足上述依赖后,在 Flutter 项目工作区内打开 DSH,从侧栏进入 Flutter 面板(客户端 bundle 注册标签,正文为指向 /flutter 的 iframe)。

  1. 确认面板能列出设备(daemon 已连接);必要时通过接口启动模拟器(POST /flutter/emulator/launch)。
  2. 选择设备、运行模式、flavor 与 defines,启动应用;连接成功后使用热重载、调试开关或内嵌 DevTools。
  3. 需要依赖或环境检查时,在面板内触发 pub get、pub outdated 或 flutter doctor,直接查看渲染结果。
  4. 做性能或内存分析时,打开 profiling / 采集开关,或使用 DevTools 相关页面与 heap / GC / 快照对比能力。

插件对外 HTTP 路由均在 /flutter 下,且仅接受 loopback Host(详见仓库 README 的 Endpoints 表)。本地 UI 迭代可在仓库外使用开发服务器(不替代 DSH 内安装):

node dev-server.mjs 9100 /path/to/flutter/project

实现注意(与日常操作相关):--dart-define 为编译期参数,修改后需重新 launch,热重启不会生效;Detach 后勿对进程组做粗暴 kill,以免误杀已分离的应用。

适用场景与注意

适合:在 DSH 里做 Flutter 日常开发、联调、轻量 profiling,希望设备、日志、DevTools 与对话同屏的开发者。

分类:社区目录将其归为「客户端」;GitHub 星标数为 0(以目录页信息为准),不代表功能完整性,使用前请自行评估。

安全与权限:插件以当前 DSH 进程权限运行,会启动 flutter、npx 等子进程并访问工作区与 VM Service。安装前应阅读 GitHub 源码 与 MIT 许可证,仅在可信环境中启用。

DSH 生态强调「一切皆插件」;SkillHub 插件目录 为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-flutter-tools 把 Flutter 的设备管理、启动参数、VM Service 控制、内嵌 DevTools 和常用 CLI 输出收进 DSH 侧栏,减少在终端、浏览器和 IDE 之间切换。需要细节、路由说明与构建笔记时,以仓库 README 为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye