AI API 求助日志怎么留:能定位故障,也不贴出 Key 和正文
给出一次失败请求的最小记录模板,按客户端、模型网关和工具分开关联;解释为什么黑掉 Authorization 还不够,以及公开前怎样检查日志。

排查 AI API 失败,最有用的材料通常不是一大张聊天截图,而是一次请求的时间、路径、版本和失败阶段。先留能关联这次调用的信息,再按最小范围补证据。 把 Authorization 黑掉只是第一步,正文、工具结果、签名下载地址和本机路径也可能泄露资料。
本文于 2026 年 11 月 10 日核对 OWASP Logging Cheat Sheet 与本站日志、错误和接入说明。以下为推荐的求助记录,不是本站承诺已经采集的字段,也不代表一次真实故障。
先判断哪条路径需要材料
一个 Agent 可能同时请求模型、读取本地文件、执行 MCP 工具和调用业务系统。模型网关只能看到经过它的请求;独立工具失败,不能只靠模型请求日志还原。
先画一条简单顺序:客户端开始 → 模型请求 → 工具执行 → 模型续接 → 最终显示。标出最后一项确认成功的步骤,再看下一项需要谁的记录。可参考 MCP 角色分工和远程工具恢复,避免把所有错误都交给同一层处理。
一份可以直接填写的最小模板
以下值全部是占位内容,时长也是教学示意:
{
"observed_at": "2026-11-10T09:00:00Z",
"client": "CLIENT_NAME_AND_VERSION",
"stage": "model_stream",
"api_path": "/v1/chat/completions",
"model": "YOUR_MODEL_ID",
"stream": true,
"http_status": 200,
"content_type": "text/event-stream",
"elapsed_ms": 12000,
"last_complete_event_type": "APP_PROTOCOL_EVENT",
"terminal_event_seen": false,
"exception_class": "ReadError",
"support_request_ref": "REPLACE_FOR_PRIVATE_SUPPORT"
}
按实际存在的字段填写,没有的写未取得,不要猜。时间应含时区;时长尽量用同一进程的单调计时,跨机器不要把时钟误差当网络耗时。事件类型要按真实协议填写,上面的 APP_PROTOCOL_EVENT 不是某个 API 定义的具体事件。
请求 ID 适合通过私密支持渠道关联服务端记录。公开发帖时可把 ID 换成 REQ-A 等稳定别名,并保留对应关系在自己手里。这样既能说明多层顺序,也不会把所有内部标识公开。
OWASP 日志建议强调记录交互关联信息,并避免直接记录访问令牌、会话标识、密码和敏感个人信息。它也提醒,来自其他信任范围的事件内容可能缺失、伪造或恶意,不能照单全收。
这些位置容易漏出秘密
| 材料 | 容易遗漏的内容 | 更合适的分享方式 |
|---|---|---|
curl -v 输出 | 请求认证头、代理认证、Cookie | 分享命令结构与状态,去掉敏感头 |
| 完整 URL | 查询参数里的 token、签名、客户标识 | 只留必要的域名和路径形状 |
| HAR 与网络导出 | 全部请求响应、表单、会话信息 | 先在本地检查,优先改做最小样本 |
| 工具报错与栈 | 文件路径、命令参数、业务正文 | 保留异常类型与必要调用位置 |
| 图片、录屏、附件 | 账号、群成员、通知、图片元数据 | 使用公开测试资料或真正脱敏副本 |
只按 sk- 等前缀搜索不能找到所有凭据。Bot token、签名 URL、数据库地址和业务标识的格式各不相同。正则扫描可辅助检查,不能代替逐项确认。若凭据确实已经泄露,删除截图不等于失效,应按服务流程撤销并更换;基础做法见API Key 安全。
记录结构,不要默认记录内容
开发应用时,优先明确允许的诊断字段,再构建结构化日志。不要先把整个请求对象写出去,事后再尝试删敏感键:嵌套工具结果、错误对象和自定义字段可能带进新的内容。
对用户可控的字段限制类型与长度,使用正确的结构化编码,防止换行和分隔符伪造成另一条日志。OWASP 特别讨论了 CR/LF 日志注入;参数化字符串本身并不自动解决所有输出编码问题。异常消息也可能带完整请求,不宜直接作为公共日志正文。
完整输入确有必要时,单独判断授权、访问者、存储位置与删除期限,不把它自动扩展成永久全量记录。模型、网关、工具和工单中的副本都需要考虑,而不仅是应用日志文件。
发出去之前,用一遍读者视角检查
先在本地复制一份材料,把私人内容替换为公开的小输入;确认仍能说明同一种失败,再分享必要部分。检查 Key、Cookie、签名查询参数、文件路径、个人信息和附件。最后区分公开社区与私密工单需要的范围。
使用 Nbility 时,先在用量日志找对应模型请求,再按错误文档确认错误结构。若提供给支持,保留发生时间、模型 ID 和所需请求标识;如果只有 200 OK 但流没完整结束,可同时参考SSE 边界检查。
本文没有用真实秘密测试任何脱敏工具,也不声称模板能覆盖所有泄露路径。它的作用是让一次故障留下足够的定位信息,同时减少无关私密内容进入下一份副本。


