Files
Aether/docs/operations/conversion-failure-diagnostics.md
T

43 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 格式转换失败诊断导出
## 使用方法
在请求详情的失败或跳过节点中,点击「失败诊断」面板的复制按钮。
复制时才会读取已采集的正文;页面预览本身不会批量加载正文。
请分享整个 JSON,而不是只分享 `summary`。复制成功标志仅在剪贴板写入成功后出现。
## Schema v2
- `diagnostic`:错误码、请求/响应/流式阶段、源/目标格式、转换器标识、完整 JSON 路径及期望约束/实际值。
- `path_source``structured` 是后端结构化路径,`message_inference` 是历史文案推断,`protocol_inference` 是根据上游协议推断的原始字段路径,`unavailable` 表示没有可靠字段路径。通用 `$.finish_reason` 会按协议定位到具体原始字段,同时保留 `reported_path`
- `stage_source`:区分后端阶段信息与历史记录推断。请求转换方向为客户端到上游;响应/流式转换方向相反。
- `versions`:前端版本、导出时网关版本、失败时运行版本。历史记录没有运行版本时保留 `null`,不能把导出版本当作失败版本。
- `request` / `node`:请求、候选、重试、模型及时间等定位信息。
- `reproduction.sources`:脱敏正文片段、字段样本和流式失败事件窗口。数组通配路径的样本带具体下标。
- `reproduction.missing_context`:未采集、无权限、正文过大、读取失败、缺少失败事件或路径等缺口。
后端只为明确匹配 `candidate_id` 的候选提供上游正文记录。历史记录仅有候选索引时,不把最后一次重试的正文猜成当前失败的正文。
原始客户端请求可在同一请求内共享,但不会把其他候选的上游请求/响应当作失败现场。
`body_ref` 不是下载地址;前端不访问其中的 URL,而是使用现有、受权限保护的正文接口。
## 完整性与安全边界
- `not_loaded`:尚未补取上下文。
- `sanitized_context`:必要来源已取得,但仍然经过脱敏、大小限制或事件窗口裁剪。
- `insufficient_context`:还缺少明确列出的信息,不能据此假设能够完整复现。
- `replay_ready: false`:导出的是供排查的证据包,不是可以无条件自动执行的请求。修改前应根据样本建立最小回归测试。
每份正文的下载/解码处理上限为 1 MiB,读取超时为 5 秒;导出 JSON 上限为 64 Ki 字符。
字符串、数组、对象深度与节点数量也有限制。流式窗口保留匹配失败的事件、帧序号及邻近事件;匹配不到时明确标记,而不是认定流尾就是故障点。
默认移除常见认证头、密钥、令牌、Cookie、密码、签名 URL 参数、正文文本和二进制数据。
脱敏是规则化处理,分享前仍需检查自定义字段和错误消息是否含业务敏感信息。
不会为了诊断绕过正文采集策略、授权或存储限制;也不会把 `error` 或未知结束原因映射成正常成功。
## 建议处理流程
1. 检查 `diagnostic.stage``path_source``missing_context`,区分转换器缺陷、合法的无损转换拒绝和上游失败。
2. 对照源/目标格式以及字段样本,建立最小失败输入;流式问题同时保留必要的前序事件。
3. 先补失败回归测试,再修复转换规则。
4. 验证原有正常映射、失败闭合以及凭据脱敏没有回退。