원클릭으로
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 输出为准。