用途:当运行中的 Flutter 应用出错、需要弄清原因时使用本技能。典型触发场景包括:工具调用返回 ok: false 的错误信封;应用行为异常需要运行时日志;需要在不改动应用的前提下查看实时状态(如读取 AgentState.instance.value);先前控制动作(tap、hot_reload、navigate)无报错但结果不对。不适用于查看当前屏幕内容(用 flutter-mcp-toolkit-inspect),也不适用于工具本身连不上(用 flutter-mcp-toolkit-setup)。
主要能力:一是 get_recent_logs,读取应用主 isolate 最近的 print()/debugPrint() 输出,参数 count(默认 50)、connection,只读、不执行代码,仅返回自应用启动或 hot restart 以来缓冲的行。二是 evaluate_dart_expression,在主 isolate 求值 Dart 表达式并返回字符串结果,参数 expression(必填)、connection;长字符串最多返回 32768 个 UTF-16 码元,超出时 truncated: true;List、Map 或对象通常只返回类名,需用 .toString() 或 jsonEncode(...) 包装读取;该操作会在活动 isolate 执行任意代码,应避免有副作用的表达式,且仅限 debug 模式。
用法与排障流程:先看错误信封的 error.code,再看 error.descriptor.retryable;可重试时运行 flutter-mcp-toolkit doctor --json。需要日志就调用 get_recent_logs;需要实时状态就用 evaluate_dart_expression,且在日志之后进行。与 inspect 联用时建议顺序:semantic_snapshot → evaluate_dart_expression → get_recent_logs。多目标时若返回 connection_selection_required,先调用 discover_debug_apps,选 targetId,再把 connection: {targetId: "..."} 传给后续调用。错误恢复命令示例保持原样,如 flutter-mcp-toolkit exec --name get_vm --args '{"connection":{"uri":"ws://127.0.0.1:8181/<token>/ws"}}'、flutter-mcp-toolkit permissions request --kind visual_capture。
错误信封:每个失败返回 {code, message, details, descriptor, recovery},务必要读 error.descriptor 而不是顶层信封来获取 retryable 和 exitCode,recovery.fix_command 可直接执行。常见错误包括 connect_failed、vm_not_connected、connection_selection_required、hot_reload_failed、evaluate_expression_failed、get_recent_logs_failed、wait_timeout、stale_snapshot、visual_capture_permission_denied 等,各有对应恢复方式。
限制:仅限 debug 模式;只返回缓冲日志;连接目标变化需重新 discover 获取新 targetId,旧 URI 会返回 connect_failed;只读日志不执行代码,而表达式求值会运行任意代码。截图中平台视图、权限等问题需 doctor 与 permissions 命令配合。文中未提供的内容(如具体收费、价格、版本号)暂未提供。