前言¶
用 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):
- 已安装 Flutter SDK(优先工作区 pin,
PATH为备选); PATH上可用npx(首次使用时会拉取flutter-devtools-mcp);- 安装
dsh-better-sidebar,用于侧栏浏览器标签; - 需要 rebuild 跟踪时应用以 debug 运行;需要 metrics 时以 profile 运行。
Node 引擎要求:>=20(见 package.json)。
典型用法¶
安装并启用插件、满足上述依赖后,在 Flutter 项目工作区内打开 DSH,从侧栏进入 Flutter 面板(客户端 bundle 注册标签,正文为指向 /flutter 的 iframe)。
- 确认面板能列出设备(daemon 已连接);必要时通过接口启动模拟器(
POST /flutter/emulator/launch)。 - 选择设备、运行模式、flavor 与 defines,启动应用;连接成功后使用热重载、调试开关或内嵌 DevTools。
- 需要依赖或环境检查时,在面板内触发
pub get、pub outdated或flutter doctor,直接查看渲染结果。 - 做性能或内存分析时,打开 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 为准。