SuperAPI AI 工具集

fiftyone-troubleshoot

数据与分析

查看项目

更新于 10-16 10:12

技能介绍

用途

FiftyOne Troubleshoot 用于自动诊断和修复 FiftyOne 使用过程中的常见问题。它把用户描述的现象与内置的 Issue Index(问题索引)匹配,解释根因,给出修复方案,并在获得用户确认后执行,最后验证环境是否恢复正常。该技能设计为可持续扩充,新遇到的问题可追加到索引底部。

主要能力

技能覆盖的问题类别包括:

  • 数据集持久化:数据集重启后消失(默认非持久化,Python 退出即删除)。
  • App 连接:App 无法打开或未连接,可能原因包括脚本在 App 加载前退出、Windows 多进程需要 __main__ 保护、端口被占用、存在陈旧进程。
  • 改动未保存:样本编辑与数据集级属性需要显式 .save();批量更新使用 set_values 则无需 .save()。
  • 视频编解码:浏览器 HTML5 播放器不支持某些编解码(需 MP4/H.264、WebM 或 Ogg),可重新编码;注意重编码会覆盖磁盘文件,需先展示将被修改的确切路径并获得确认。
  • macOS 打开文件数限制:通过 ulimit -n 临时或永久提升。
  • Notebook / 远程环境:远程 Jupyter 需设置 fo.app_config.proxy_url;Colab / Databricks 开箱即用;SSH 远程需端口转发。
  • Notebook 图表不显示:需安装 plotly 及 jupyterlab-plotly 扩展并初始化。
  • MongoDB 连接错误:ConnectionFailure、ServerSelectionTimeoutError、导入卡住、27017 端口错误等;排查 MongoDB 是否运行、磁盘是否写满,并给出重启内部 MongoDB、使用外部 MongoDB、重置内部 MongoDB 等方案。
  • 插件与算子缺失:通过 fo.list_plugins() / MCP 列出插件与算子,下载并启用对应插件;技能中提供了算子前缀与插件名的对应表(如 @voxel51/brain/* 对应 @voxel51/brain)。
  • No executor available:Brain、评估与标注算子在 App 需以执行器身份运行,需先 launch_app(),等待 5-10 秒后再执行算子。
  • 只读数据集:通过 clone 出可写副本并设为持久化。
  • 大数据集性能慢:使用视图而非全量遍历、批量更新代替逐样本保存、为高频过滤字段创建索引。
  • App 显示陈旧数据:dataset.reload()、重设 session.dataset 并 refresh,或浏览器强制刷新。
  • 降级 FiftyOne:pip install fiftyone==X.Y.Z 后执行数据库迁移;降级前应导出重要数据集。
  • 数据库版本不匹配:同一机器上所有 FiftyOne 安装共享同一 MongoDB 数据库,新版本写入的前向标记旧版本无法读取;提供隔离环境变量、按会话隔离、升级版本、全局配置等修复方式。
  • Teams 与 OSS 客户端类型不匹配:两者数据库类型不兼容,不能共享数据库;提供隔离 OSS 环境与检查 Teams 配置的方法。

使用方式

技能定义了明确的工作流:

  1. 诊断:运行 Diagnostic Quick-Check,输出 Python 路径与版本、FiftyOne 版本、数据库名与 URI,并尝试列出数据集与检查连接,连接失败时给出错误信息以匹配问题索引。
  2. 解释:用通俗语言描述根因。
  3. 提出方案:展示修复内容及其会改变什么。
  4. 确认:询问用户“Should I apply this fix?”,等待明确确认。
  5. 执行:仅在批准后应用修复。
  6. 验证:运行 Health Check。Health Check 会创建并销毁临时测试数据集 _fo_health_check(不触碰用户数据集),验证写入、列表与连接往返是否正常。

适用场景与限制

适用于使用 FiftyOne 进行数据集管理、可视化与算子运行的过程中遇到上述常见故障时的排查与修复。技能提供了安装前提:pip install fiftyone;MCP 服务器为可选项,用于与插件相关的修复。

限制与安全约束包括:未经用户明确直接指示,绝不修改、编辑、删除或克隆用户数据集,绝不调用 fo.delete_dataset(),绝不为诊断而清空或改动数据集内容;绝不直接操作 MongoDB(不使用 pymongo、db.drop_collection() 或原始 MongoDB shell 命令);不得静默修改 database_uri、database_name 或配置文件;向 shell 配置文件追加内容前必须展示确切改动并获得确认。环境变量或配置修复只对新进程生效,需识别并重启相关 FiftyOne 进程;pkill -f "fiftyone" 需先经用户确认。技能中的 shell 命令面向 macOS/Linux,Windows 非 WSL 环境需改用 PowerShell 等价命令或使用 WSL。