Report === --- User-Friendly Information --- Message: 请求以意外状态完成:unknown。请重试或联系客服...
错误信息
=== Error Report ===
--- User-Friendly Information ---
Message: 请求以意外状态完成:unknown。请重试或联系客服寻求帮助。
--- Technical Details ---
Error Code: UNKNOWN_STOP_REASON
Request ID: 01a0f2acd6c07e3f86b8b1afdd74442d
Timestamp: 2026/09/30 22:19:40 (UTC+8)
Server Detail: {"code":0,"message":"streamableHttp ready timed out","data":{"transportCode":"CONNECT_FAILED","details":"streamableHttp ready timed out"}}
App Version: 5.7.3
User ID: 6a27d9ba-af01-4f53-b085-172d32c3f804
AI 解决方案
🌐 错误翻译
原文:Message: 请求以意外状态完成:unknown。请重试或联系客服寻求帮助。
译文:消息:请求以未知的意外状态完成。请重试或联系客服获取帮助。
原文:Error Code: UNKNOWN_STOP_REASON
译文:错误代码:未知的停止原因
原文:streamableHttp ready timed out
译文:可流式HTTP准备超时
🎯 原因分析
这个错误的根本原因是请求在建立可流式HTTP连接时超时。具体分析如下:
- 直接错误:
transportCode: CONNECT_FAILED表明连接失败,streamableHttp ready timed out说明在等待HTTP连接就绪时超过了预定时间限制 - 发生位置:发生在客户端与服务器建立流式传输通道的阶段,属于网络层或服务端响应超时
- 可能原因:
- 客户端到服务端的网络延迟过高
- 服务端处理请求超时未及时响应
- 连接池配置不当或资源不足
💡 解决方案
// 重试机制与超时优化
async function requestWithRetry(url: string, options: any, maxRetries = 3, retryDelay = 1000) {
for (let i = 0; i < maxRetries; i++) {
try {
// 增加超时等待时间,优化网络连接
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 30000); // 30秒超时
const response = await fetch(url, {
...options,
signal: controller.signal,
// 确保使用流式连接时有适当的超时设置
keepalive: true // 保持连接活跃
});
clearTimeout(timeoutId);
if (response.ok) {
return response;
}
throw new Error(`HTTP ${response.status}`);
} catch (error) {
console.warn(`请求失败 (尝试 ${i + 1}/${maxRetries}):`, error.message);
if (i === maxRetries - 1) {
throw error; // 最后一次尝试失败,抛出错误
}
// 指数退避重试
await new Promise(resolve => setTimeout(resolve, retryDelay * Math.pow(2, i)));
}
}
}
🛡️ 预防措施
- 网络优化:检查网络连接质量,确保客户端到服务端的网络链路稳定,避免高延迟环境;如果是内部服务,优化网络拓扑和路由配置
- 超时配置调优:根据业务场景合理设置请求超时时间,对于大文件或复杂查询场景适当增加超时阈值;同时检查服务端的请求处理性能,必要时进行服务端优化或扩容