بنقرة واحدة
fcc
使用 flutter_copilot_cli (fcc) 命令行工具连接并驱动一个运行中的 Flutter debug 应用:自动发现 URI、截图、元素检查、手势交互、日志、热重载、YAML 脚本回放
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
使用 flutter_copilot_cli (fcc) 命令行工具连接并驱动一个运行中的 Flutter debug 应用:自动发现 URI、截图、元素检查、手势交互、日志、热重载、YAML 脚本回放
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
将当前项目的 Markdown 文档(及其引用的本地图片)一键同步到飞书云文档。基于 lark-cli,自动上传图片、替换 token、以 overwrite 方式覆盖正文。
将当前项目的 Markdown 文档(及其引用的本地图片)一键同步到飞书云文档。基于 lark-cli,自动上传图片、替换 token、以 overwrite 方式覆盖正文。
连接 Flutter Copilot MCP,支持自动读取 VM Service URI、截图、交互、热重载,以及需要重启时自动调用脚本重连
升级 flutter_copilot_claw 和 flutter_copilot_mcp 的共享版本号,更新 changelog,生成 version.g.dart,并通过 tool/publish.sh 完成 dry-run 或正式发布
| name | fcc |
| description | 使用 flutter_copilot_cli (fcc) 命令行工具连接并驱动一个运行中的 Flutter debug 应用:自动发现 URI、截图、元素检查、手势交互、日志、热重载、YAML 脚本回放 |
通过 fcc 命令行直接驱动运行中的 Flutter debug 应用,无需 MCP 中间层。
当前 fcc 是单实例目标模型:每次命令只解析一个 VM Service URI,不再使用 registry / 多实例命名实例。
fcc doctorfcc --json get-interactive-elementsfcc get-logs / fcc get-rebuild-snapshotfcc hot-reloadfcc run确认 fcc 可用:
fcc --version
fcc help-ai
本项目通常通过 scripts/flutter_run.sh 启动 Flutter,并自动写入项目根目录的 .vm_service_uri:
./scripts/flutter_run.sh -d <device-id>
如果 .vm_service_uri 不存在或过期,先重新启动 Flutter debug 会话。
目标 URI 解析优先级从高到低:
--uri ws://...:本次命令显式指定FLUTTER_COPILOT_URI:环境变量.vm_service_uri:从当前目录或父目录查找最近的 URI 文件常用检查:
test -s .vm_service_uri && cat .vm_service_uri
fcc doctor
也可以显式指定:
fcc --uri "$(cat .vm_service_uri)" doctor
connect 会校验 URI 并写入当前工作目录的 .vm_service_uri。
以下写法均应可用:
fcc connect --uri ws://127.0.0.1:8181/abc/ws
fcc connect --uri=ws://127.0.0.1:8181/abc/ws
fcc --uri ws://127.0.0.1:8181/abc/ws connect
断开当前项目连接文件:
fcc disconnect
注意:disconnect 只删除最近的 .vm_service_uri 文件;CLI 没有常驻 socket。
| 命令 | 说明 |
|---|---|
fcc doctor | 检查解析到的目标是否可连接,并确认 Flutter Copilot 扩展可用 |
fcc connect --uri <uri> | 校验 URI 并写入 .vm_service_uri |
fcc disconnect | 删除最近的 .vm_service_uri |
fcc help-ai | 输出机器可读命令表面,优先以它为准 |
| 命令 | 说明 |
|---|---|
fcc --json get-interactive-elements | 输出当前屏幕可交互元素树 |
fcc get-logs --limit 50 | 读取应用日志缓冲区 |
fcc get-rebuild-snapshot --top-limit 10 | 读取 rebuild 热点快照 |
fcc take-screenshots -o /tmp/shot.png --numbered | 截图保存为 PNG |
所有手势命令共享 matcher:--key、--text、--type、--x/--y、--focused。
| 命令 | 说明 | 示例 |
|---|---|---|
fcc tap | 点击 | fcc tap --text "提交" |
fcc double-tap | 双击 | fcc double-tap --key LikeButton |
fcc long-press | 长按 | fcc long-press --key ItemCard --duration 800 |
fcc enter-text | 输入文本 | fcc enter-text --key <TextFieldKey> --input demo |
fcc scroll-to | 滚动至可见 | fcc scroll-to --text "提交" |
fcc drag | 拖拽 | fcc drag --key Slider --delta-x 120 |
fcc swipe | 滑动 | fcc swipe --key Feed --direction up --distance 500 |
fcc navigate | 路由导航 | fcc navigate --action push --route /settings |
坐标点击示例:
fcc tap --x 200 --y 205
fcc hot-reload
fcc --json watch --logs --rebuilds --interval 500
fcc --watch-uri repl
--watch-uri 仅用于 watch / repl,用于 .vm_service_uri 变化时自动重连。
fcc --json run smoke.yaml
示例:
name: smoke
stopOnFailure: true
steps:
- action: tap
text: "订单记录"
- action: wait
ms: 300
- action: take-screenshots
output: /tmp/order-record.png
- action: assert-element
text: "订单记录"
exists: true
定位优先级建议:
--key <k>:ValueKey<String>,最稳定--text <t>:可见文本--type <n>:Widget 类型名--x <n> --y <n>:逻辑像素坐标--focused:当前焦点元素目标元素难以定位时,优先在 Flutter 代码里添加稳定 ValueKey<String>。
先确认连接:
fcc doctor
读取元素树:
fcc --json get-interactive-elements
截图:
fcc take-screenshots -o /tmp/youfi.png --numbered
交互后再次截图或读取元素:
fcc tap --text "详情"
fcc take-screenshots -o /tmp/youfi-detail.png --numbered
No VM Service URI:确认 .vm_service_uri 存在且非空,或使用 --uri 显式指定。ECONNREFUSED:URI 对应的 Flutter debug 会话已退出,重新启动 App 获取新 URI。EPERM 127.0.0.1:当前执行环境不允许连接本机 VM Service,需要在允许本机 socket 的环境执行。doctor 成功但元素为空:确认 App 侧已集成并注册 flutter_copilot_claw 扩展。enter-text 无效:确认目标是 TextField,并且 matcher 命中了正确输入框。get-rebuild-snapshot 为空:Flutter 侧需要启用 FlutterCopilotConfiguration(enableGlobalRebuildHook: true);Web 平台不支持该 hook。始终优先以当前环境的 fcc help-ai 输出为准。