Skip to content

[Bug] Aliyun Bailian / qwen3.6-plus 会在 330s 后固定报 Stream idle timeout #499

@yongxingcheng81-ux

Description

@yongxingcheng81-ux

问题描述

在 CodePilot 中使用 Aliyun Bailianqwen3.6-plus 进行对话时,如果上游长时间没有返回新的流式 chunk,前端会在 330 秒后固定报错:

Error: Stream idle timeout — no response for 330s. The connection may have dropped.

这个问题看起来不是普通的 provider 连通性失败,而是请求已经发出,但在长时间没有流式事件时被客户端固定空闲超时中断

环境信息

  • 操作系统:macOS
  • CodePilot 版本:0.50.2
  • Provider:Aliyun Bailian
  • Protocol:anthropic
  • Base URL:https://coding.dashscope.aliyuncs.com/apps/anthropic
  • Model:qwen3.6-plus

复现步骤

  1. 在 CodePilot 中配置 Aliyun Bailian provider
  2. 选择模型 qwen3.6-plus
  3. 发送一个会触发较长思考/较慢首包返回的请求
  4. 等待约 330 秒
  5. 聊天界面报错:
    Stream idle timeout — no response for 330s. The connection may have dropped.

预期行为

  • 如果上游 provider 还在处理请求,客户端不应在 330 秒后固定中断
  • 或者至少应提供一个可配置的 stream idle timeout
  • 或者在 UI/高级设置里允许对第三方 provider 单独调整该阈值

实际行为

  • 330 秒后固定报错并中断当前响应
  • 对用户来说像是 provider 挂了,但实际可能只是长时间没有新的 stream/keepalive 事件

补充观察

我检查了当前仓库 main 分支的 src/lib/stream-session-manager.ts,里面仍然有:

const STREAM_IDLE_TIMEOUT_MS = 330_000;

看起来这个阈值目前是写死在前端里的,而不是用户可配置项。

如果这是有意设计,建议:

  1. 给第三方 provider 暴露可配置的 stream idle timeout
  2. 区分“请求失败”和“长时间无 stream chunk”两类情况
  3. 如果 provider 支持 keepalive/heartbeat,确保这类事件能正确刷新 lastEventTime

相关但不完全相同的 issue

这些 issue 里有 provider 超时、卡住、长时间无响应等现象,但我暂时没有找到和 330s Stream idle timeout 这个固定阈值直接对应的一条。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions