Diagnostics Report Analyzer Skill 用于分析 AvdLee Diagnostics 框架生成的单文件报告。这类报告通常以 .html 附件形式通过邮件发送,可能包含结构化 JSON 加浏览器渲染器,也可能是较旧的纯预渲染 HTML。
核心原则:把报告当作诊断证据,而不是要总结的网页。较新的报告专为智能体设计,内置结构化 JSON 负载,比渲染后的 HTML 更精确、更节省 token。
分析工作流
一、优先使用内嵌 JSON
如果报告包含 id 为 diagnostics-report-data、type 为 application/json 的 script 元素,提取并解析其文本内容,以该 JSON 作为事实来源。忽略 CSS、JavaScript、导航标记和渲染 HTML,除非某章节明确使用 legacyHTML。
预期的顶层字段包括:schemaVersion(报告架构版本)、title(可读的报告标题)、agentHints(生成方提供的分析提示)、chapters(报告章节)。
预期的章节形态包括:showTitle 为浏览器渲染提示,不影响分析;kind 为 logs 时带有 data.sessions;kind 为 table 时带有 data.rows;kind 为 text 或 preformatted 时带有 data.value;kind 为 legacyHTML 用于自定义诊断或回退内容。legacyHTML 是可选展示 HTML,用于需要自定义浏览器渲染的章节;分析时优先使用 data,除非 data.type 为 legacyHTML 或结构化字段无法回答该问题。
二、回退到旧版 HTML
如果缺少 JSON script 标签,直接解析 HTML 报告:会话日志通常位于 #log-sessions;会话通常包裹在 .collapsible-session details 中;会话元数据通常在 summary 下的 div.session-header 中;日志级别通常以 .debug、.error、.system、.crash 表示。较旧的报告可能只把崩溃暴露为系统行,例如 SYSTEM: *** Terminating app due to uncaught exception... 或 SYSTEM: *** First throw call stack:。较旧的纯会话可能使用类似分隔符的内容和 pre 块。回退解析应保持聚焦,当一小段内容就能回答问题时,不要加载或复述整个 HTML 文件。
三、优先处理证据
按以下顺序分析:读取 agentHints(如存在);检查应用与系统元数据,包括应用版本、构建号、操作系统、设备、语言环境和运行环境;先检查最新会话;优先处理崩溃事件,其次是错误事件、MetricKit 诊断和异常系统日志;若会话没有崩溃事件,可将类似崩溃的系统行视为旧版崩溃证据,但当两者都存在时优先使用结构化崩溃事件;仅在有助于解释回归或重复模式时,将失败会话与更早会话进行比较;检查自定义章节以获取领域特定状态,例如功能开关、用户默认值、目录树、配置、账户状态或缓存文件。
输出格式
除非用户要求其他格式,默认回复包含:摘要(用一两句话描述最可能发生了什么)、证据(支持结论的具体会话、时间戳、事件级别、元数据行或章节细节)、建议下一步(具体的调试或支持操作,以及可检查的代码/配置区域)。先给出最可能的解释;如果证据不充分,应说明并列出可用于消歧的缺失信号。
Token 纪律
诊断报告可能很大,应保持选择性:优先使用内嵌 JSON 而非原始 HTML;从最新会话和崩溃/错误事件入手;在引用单条日志前先按模式归纳嘈杂的系统/调试日志;只引用直接支持结论的短片段;除非用户明确要求,避免转储原始日志。
兼容性说明
较新的 Diagnostics 报告可能在同一负载中同时包含结构化会话和旧版会话,因为用户可能在历史日志已持久化到设备后更新应用。两者都应视为有效证据。旧版 HTML 章节可能包含 Diagnostics 框架生成的可信报告标记;在结构化数据不可用时使用它们,但只要 JSON 负载存在,就应优先将其作为机器可读接口。