Failed to fetch at AiSdkToChunkAdapter.convertAndEmitChunk (file:///D:/Cherry%20...

2025年12月01日 18:58 状态: processing

🚨 错误信息

AI_ProviderSpecificError: Failed to fetch at AiSdkToChunkAdapter.convertAndEmitChunk (file:///D:/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-Z-tJeJfQ.js:46527:64) at AiSdkToChunkAdapter.readFullStream (file:///D:/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-Z-tJeJfQ.js:46345:10) at async AiSdkToChunkAdapter.processStream (file:///D:/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-Z-tJeJfQ.js:46314:31) at async ModernAiProvider.modernCompletions (file:///D:/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-Z-tJeJfQ.js:258723:22) at async ModernAiProvider._completionsOrImageGeneration (file:///D:/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-Z-tJeJfQ.js:258644:10) at async ModernAiProvider.completions (file:///D:/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-Z-tJeJfQ.js:258627:17) at async fetchChatCompletion (file:///D:/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-Z-tJeJfQ.js:261017:2) at async transformMessagesAndFetch (file:///D:/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-Z-tJeJfQ.js:50115:3) at async fetchAndProcessAssistantResponseImpl (file:///D:/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-Z-tJeJfQ.js:51734:3) at async file:///D:/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-Z-tJeJfQ.js:51823:6

🤖 AI解决方案

错误分析报告

1. 错误翻译



原文:AI_ProviderSpecificError: Failed to fetch
译文:AI提供者特定错误:获取失败

2. 原因分析


这是一个网络请求失败错误,核心问题在于AI服务调用过程中的HTTP请求失败。从调用栈可以看出:
  • 错误发生在 AiSdkToChunkAdapter.convertAndEmitChunk 方法中

  • 这是在进行AI服务流式响应处理时出现的网络连接问题

  • 可能导致的原因:网络断开、API端点不可达、CORS限制、服务端超时等
  • 3. 解决方案

    ``javascript
    // 建议的修复代码 - 添加错误处理和重试机制
    async function fetchWithRetry(url, options, maxRetries = 3) {
    let lastError;

    for (let attempt = 1; attempt <= maxRetries; attempt++) {
    try {
    const response = await fetch(url, options);
    if (response.ok) return response;

    // 如果是服务器错误,等待后重试
    if (response.status >= 500) {
    await new Promise(resolve =>
    setTimeout(resolve, Math.pow(2, attempt) * 1000)
    );
    continue;
    }
    throw new Error(
    HTTP ${response.status}: ${response.statusText});
    } catch (error) {
    lastError = error;
    if (attempt < maxRetries) {
    await new Promise(resolve =>
    setTimeout(resolve, Math.pow(2, attempt) * 1000)
    );
    }
    }
    }

    throw lastError || new Error('Failed to fetch after retries');
    }

    // 在调用AI服务处使用
    try {
    const response = await fetchWithRetry(apiUrl, {
    method: 'POST',
    headers: {
    'Content-Type': 'application/json',
    'Authorization':
    Bearer ${apiKey}
    },
    body: JSON.stringify(payload)
    });
    } catch (error) {
    console.error('AI服务调用失败:', error);
    // 提供用户友好的错误提示
    }

    4. ️ 预防措施

  • 网络稳定性检查:在执行AI调用前检查网络连接状态

  • javascript
    // 网络状态检查
    if (!navigator.onLine) {
    throw new Error('网络连接不可用,请检查网络设置');
    }

  • API端点健康检查:定期验证AI服务端点的可用性

  • javascript
    // 服务健康检查
    async function checkServiceHealth(endpoint) {
    try {
    const response = await fetch(
    ${endpoint}/health, {
    timeout: 5000
    });
    return response.ok;
    } catch {
    return false;
    }
    }
    ``

    建议工具:使用Chrome DevTools的Network面板监控请求状态,配置合理的超时时间和重试策略。