错误信息: Claude Code returned an error result: API Error: Content block not found 堆...

2026年07月31日 11:50 32.30 秒 success

错误信息

错误名称: AI_ProviderSpecificError 错误信息: Claude Code returned an error result: API Error: Content block not found 堆栈信息: AI_ProviderSpecificError: Claude Code returned an error result: API Error: Content block not found at AiSdkToChunkAdapter.convertAndEmitChunk (file:///F:/cherry/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-SasHqsyc.js:350298:64) at AiSdkToChunkAdapter.readFullStream (file:///F:/cherry/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-SasHqsyc.js:350073:10) at async AiSdkToChunkAdapter.processStream (file:///F:/cherry/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-SasHqsyc.js:350034:31) at async fetchAndProcessAgentResponseImpl (file:///F:/cherry/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-SasHqsyc.js:168254:3) at async file:///F:/cherry/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-SasHqsyc.js:168441:5 at async file:///F:/cherry/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-SasHqsyc.js:143364:21 错误原因: { "message": "Claude Code returned an error result: API Error: Content block not found", "type": "stream_error", "code": "stream_processing_failed" }

AI 解决方案

🔍 错误分析

1. 🌐 错误翻译

原文:Claude Code returned an error result: API Error: Content block not found
译文:Claude Code 返回了错误结果:API 错误:未找到内容块

2. 🎯 原因分析

该错误表明在使用 Claude Code API 时,服务器响应中预期的内容块(Content block)未能成功返回或不存在。从堆栈信息来看,问题发生在数据流处理的适配器层(AiSdkToChunkAdapter.convertAndEmitChunk),系统尝试从 API 响应中提取内容块进行转换和发送时失败。

根本原因是 API 响应结构不符合客户端预期,可能原因包括:

  • API 返回的响应中缺少必要的 content 字段

  • 响应格式发生变更,客户端解析逻辑不匹配

  • 网络传输过程中部分数据丢失导致响应不完整
  • 3. 💡 解决方案

    需要在处理 Claude API 响应的适配器代码中增加容错处理,对缺失的内容块进行检查和处理:

    // 在 AiSdkToChunkAdapter.convertAndEmitChunk 方法中增加容错处理
    convertAndEmitChunk(chunk) {
      // 检查 chunk 是否包含有效内容块
      if (!chunk || typeof chunk !== 'object') {
        console.warn('Received invalid chunk:', chunk);
        return this.emitError('Invalid chunk structure received from API');
      }
    
      // 安全地访问内容块
      const contentBlock = chunk.content || chunk.text || chunk.message;
      
      if (!contentBlock) {
        // 记录详细日志以便调试
        console.error('Content block not found in API response:', chunk);
        console.error('Available chunk keys:', Object.keys(chunk));
        
        // 发送错误事件
        this.emitError('Content block not found in API response');
        return null;
      }
    
      // 正常处理内容块
      const processedContent = this.processContent(contentBlock);
      this.emit('content', processedContent);
    }
    

    同时,在调用 API 的地方增加响应格式验证:

    async processStream(stream) {
      try {
        const response = await fetchAndProcessAgentResponseImpl(stream);
        
        // 验证响应结构
        if (!response || !this.validateResponseStructure(response)) {
          throw new AI_ProviderSpecificError('Invalid response structure from Claude API');
        }
        
        // 处理响应
        return this.convertAndEmitChunk(response);
      } catch (error) {
        // 统一错误处理
        this.handleStreamError(error);
      }
    }
    
    // 响应结构验证方法
    validateResponseStructure(response) {
      if (!response || typeof response !== 'object') return false;
      
      // 检查是否包含可能的内容字段
      const contentKeys = ['content', 'text', 'message', 'output'];
      return contentKeys.some(key => response[key] !== undefined && response[key] !== null);
    }
    

    4. 🛡️ 预防措施

    • 响应结构验证:在调用第三方 API 时,始终先验证响应数据结构是否符合预期,使用类型检查或结构验证工具

    • 完善的错误处理:对可能缺失的字段建立容错机制,避免因 API 变更导致程序崩溃

    • 日志记录:详细记录 API 响应内容,便于快速定位接口变更问题

    • API 版本管理:使用 API 版本锁定策略,在升级依赖前进行兼容性测试

    • 推荐工具:使用 TypeScript 增加类型安全,或使用 zodjoi 等库进行运行时数据验证