错误信息: error_during_execution: Process failed after 0 turns 堆栈信息: AI_ProviderSpec...

2026年04月28日 11:55 processing

错误信息

错误名称: AI_ProviderSpecificError 错误信息: error_during_execution: Process failed after 0 turns 堆栈信息: AI_ProviderSpecificError: error_during_execution: Process failed after 0 turns at AiSdkToChunkAdapter.convertAndEmitChunk (file:///C:/Users/ZhangEnfan/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DmY8nbl4.js:349460:64) at AiSdkToChunkAdapter.readFullStream (file:///C:/Users/ZhangEnfan/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DmY8nbl4.js:349251:10) at async AiSdkToChunkAdapter.processStream (file:///C:/Users/ZhangEnfan/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DmY8nbl4.js:349213:31) at async fetchAndProcessAgentResponseImpl (file:///C:/Users/ZhangEnfan/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DmY8nbl4.js:168067:3) at async file:///C:/Users/ZhangEnfan/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DmY8nbl4.js:168254:5 at async file:///C:/Users/ZhangEnfan/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DmY8nbl4.js:143162:21 错误原因: { "message": "error_during_execution: Process failed after 0 turns" }

AI 解决方案

##报错分析

1. 错误翻译


原文:error_during_execution: Process failed after 0 turns
译文:执行过程中出错:进程在0轮后失败

2.原因分析


  • 根本原因:AI提供商的执行进程未进入有效交互轮次(0轮)即终止,导致流处理链路中断。

  • 具体位置:Cherry Studio的AiSdkToChunkAdapter流转换链(convertAndEmitChunkreadFullStreamprocessStream),上下文为异步获取代理响应时的流读取失败。
  • 3.解决方案


    // 修复思路:添加重试机制+错误捕获(适配原异步流场景)
    async function safeFetchAIResponse(url, maxRetries = 3) {
      for (let i = 0; i < maxRetries; i++) {
        try {
          const res = await fetch(url);
          if (!res.ok) throw new Error(`HTTP ${res.status}`);
          
          // 模拟原AiSdkToChunkAdapter的流处理(替换为实际逻辑)
          const reader = res.body.getReader();
          while (true) {
            const { done, value } = await reader.read();
            if (done) break;
            // 此处插入原convertAndEmitChunk的chunk处理逻辑
          }
          return; // 成功则退出
        } catch (err) {
          if (i === maxRetries - 1) throw err; // 最后一次重试失败抛出
          await new Promise(resolve => setTimeout(resolve, 1000 * 2 ** i)); // 指数退避
        }
      }
    }
    
    // 调用处替换原fetchAndProcessAgentResponseImpl的异步逻辑
    try {
      await safeFetchAIResponse('your-ai-provider-endpoint');
    } catch (finalErr) {
      console.error('AI响应最终失败:', finalErr);
    }
    

    4. 预防措施


  • 最佳实践1:为AI调用添加超时控制(如AbortController设置10s超时)+指数退避重试(最多3次),应对瞬时故障。

  • 最佳实践2:集成提供商健康检查(如定时ping状态端点),调用前验证服务可用性。

  • 推荐工具:用axios(内置超时/重试配置)或p-retry(简化重试逻辑)替代原生fetch