SuperAPI AI 工具集

meteor-debugging

编程与开发

查看项目

更新于 10-15 15:45

技能介绍

用途

meteor-debugging 用于在失败层或修复方案尚不明确时,诊断 Meteor 3 应用中的未知故障。其核心目标是在改变行为之前找到第一个失败边界,产出稳定复现、单一原因的证据以及验证目标,然后交由负责修复的技能处理。

主要能力

该技能提供一套诊断循环:记录确切症状、完整错误与堆栈、命令或用户操作、Meteor 版本、解析后的 Atmosphere 与 npm 版本、环境以及最后已知正常状态;在编辑前用最窄的稳定命令或操作复现;用边界表对第一个不确定边界进行分类;在添加插桩前先阅读现有证据,比较客户端与服务端输出、近期变更以及通过和失败的环境;仅在现有证据无法回答问题时添加一个针对性观察,且不将诊断性变更与推测性修复合并;陈述一个可证伪假设及可否定它的观察;每次只改变一个变量,复现并将错误值或事件回溯到源头;通过负责的技能修复已确认原因,并在失败可能复发时于最低可靠层添加回归测试;重新运行聚焦复现,再运行受影响的套件或类生产检查,并移除临时诊断与产物。若多个有证据支持的假设均失败,应重新审视边界图与假设,而不是叠加缓解措施或扩大变更范围。

使用方式

技能通过症状选择边界:构建停滞、编译错误、重建回归、Rspack 或 SWC 失败时读取完整构建输出、--verbose、确切版本与构建包版本,进入构建调试;服务端在启动前崩溃或在方法、发布、任务、钩子中失败时,读取最早的服务端堆栈、启动顺序、请求关联证据,进入运行时与检查器;客户端堆栈、陈旧渲染、响应式循环或客户端/服务端不一致时,读取浏览器堆栈、渲染状态、响应式失效、服务端对比,进入运行时与检查器,再进入 React 或 Blaze 技能;文档缺失、订阅卡住、重连或代理/WebSocket 症状时,读取服务端查询、发布输出、DDP 状态、订阅就绪、Minimongo,进入 DDP 与数据;当前输出无法区分入口、守卫、分支、状态变化或事件顺序时,读取一小组脱敏的边界观察,进入日志与插桩;Meteor Mocha 失败、仅套件失败、异步偶发失败或浏览器 E2E 失败时,读取完整钩子输出、客户端/服务端测试计数、现有报告与追踪,进入测试与浏览器;Cordova 或 HCP 问题、仅设备失败或线上事故时,读取设备日志与版本、部署日志、健康、指标、发布差异,进入移动端与生产。语法错误需要其堆栈而非浏览器追踪;仅浏览器水合竞态需要客户端证据而非服务端检查器。应使用能否定当前假设的最小工具。

证据规则

在临时日志中标注运行时侧与操作。仅当并发流可能交错时包含请求或事件标识符。记录选定且脱敏的字段,绝不记录凭据、令牌、Cookie、授权头、私有设置、不受限的方法参数或完整用户文档。将 console.log 视为临时插桩;需要持久化的证据应使用 meteor/logging 或应用既有的结构化日志器。对于 Meteor 3.6-beta.1 至 beta.3 的服务端生命周期证据,通过日志与插桩使用可选插桩包;更早版本保留针对性日志,监听器只观察不授权。仅在运行器与执行模式支持时,将 .only 作为临时本地测试焦点,交接前移除并运行更广套件。优先使用可观察的就绪状态而非休眠:订阅就绪、方法完成、预期文档、可见 UI 或特定浏览器事件。在启动交互式浏览器前检查现有 Playwright 报告与追踪。对于 playwright-cli 请求,先检查可执行文件是否可用;若不可用,在安装或下载浏览器前获取授权,并明确报告可用性结果并请求授权,而不仅仅是询问应用 URL。仅将其用于真实浏览器边界。对于授权的临时 playwright-cli 复现,必须运行 snapshot、console 和 requests,在失败操作前开始追踪,操作后立即停止追踪,并关闭浏览器会话。不得用源码检查替代此浏览器证据,也不得因控制台或网络已暗示原因而省略追踪。仅使用用户置于范围内的应用路径或 URL。若当前工作区没有应用且提示未给出 URL,应询问一个。不要扫描无关目录、进程或端口来发现应用。在变更前通过 meteor shell 和 meteor mongo 读取。绝不将 meteor reset --db 用作诊断捷径。在生产环境,不要暴露检查器、部署调试构建、保留含密追踪或在实时数据上实验。

交接

确认原因后按类型交接:测试设置、设计、驱动、夹具或新回归结构交给 meteor-testing;SWC、Rspack、watcher、缓存、构建图或生成交接交给 meteor-modern-build-stack 或 migrate-to-rspack;已确认的 Cordova 平台、原生插件/配置、设备网络、签名或原生 HCP 兼容性交给 meteor-native;方法、发布、Mongo/Minimongo、React、Blaze、账户或安全交给匹配的领域技能;Galaxy、容器、代理、环境、健康检查或发布交给 meteor-deployment;有文档的社区包行为交给 meteor-community-packages,然后上游仓库;无 Meteor 边界的纯 Node.js、浏览器、数据库或运行器失败交给通用调试指南。

清理

交接前:仅移除本次调查添加的日志、调试器语句、.only 标记、暂停、临时路由和调试设置;根据数据敏感性删除或保护截图、追踪、配置文件、保存的浏览器状态和转储;重新运行原始复现与受影响套件;报告已确认原因、证据、修复、验证及任何剩余不确定性。

反模式

在检查设置、异步完成和跳过的客户端覆盖之前编辑断言;在没有假设的情况下在整个应用添加日志;不加区分地序列化每个运行时对象(循环值、响应式包装器、getter、二进制数据和大文档需要选定快照);当套件仍失败时将聚焦通过的测试视为成功;添加任意休眠、宽泛选择器、重试或堆增加直到症状消失;为服务端、构建或数据库失败安装浏览器工具或搭建测试;为服务端、构建或数据库失败安装浏览器工具或搭建测试。

限制

该技能聚焦于诊断与定位,不负责具体修复;修复需交由对应领域技能。其证据规则要求脱敏,禁止记录敏感信息。生产环境有明确限制,不得暴露检查器、部署调试构建或实验实时数据。部分能力(如可选插桩包)仅适用于特定 Meteor 版本。