Skip to content

[AI] Studio/Agent聊天未返回Vercel SSE格式,导致AI聊天无内容显示 #1083

@hotlong

Description

@hotlong

问题描述

当前 ObjectStack Studio 的 AI 聊天(AI Chat Panel)与后端 @ai-sdk/react / DefaultChatTransport(Vercel AI SDK v6)集成存在严重兼容性问题:

  • General Chat /api/v1/ai/chat 返回的是符合 Vercel Data Stream Protocol (VDSP) 的 SSE 流格式,能正常被 DefaultChatTransport 解析渲染。
  • Agent Chat /api/v1/ai/agents/:agentName/chat 仅返回 plain JSON,对话内容无法在 UI 中显示(但 API 层收到正确回复)。

表现:API 能响应,但聊天界面无内容渲染。UI 实际期望 Vercel SSE Data Stream。


问题清单

  • General Chat 路由 /api/v1/ai/chat ✅ 返回 Vercel SSE(支持流式/非流式)。
  • Agent Chat 路由 /api/v1/ai/agents/:agentName/chat ❌ 只返回 JSON,未实现 SSE 流。
  • Studio 前端(apps/studio/src/components/AiChatPanel.tsx)需完全遵循 Vercel AI SDK 数据流协议,不能对普通 JSON 兼容做妥协。
  • 后端 agent-routes 需对 stream: true 请求返回 encodeVercelDataStream 包裹的 SSE。
  • 增加/完善自动化测试(Agent chat SSE round-trip & fallback)。
  • 验证/补充 docs:明确所有 AI Chat 接口都只允许 SSE/Vercel 格式。

预期方案

  1. agent-routes.ts:
    • 增加对 stream !== false 的判断,优先返回 SSE 流。
    • 非流式请求应抛出异��或 fallback 明确警告前端该模式不被支持。
    • 直接复用 general chat 路由返回的流式模式实现,encodeVercelDataStream 返回 events。
  2. 前端:
    • 禁止兼容 plain JSON,遇到非 Vercel SSE 时清晰报错,不 silent fail。
    • 增强错误态 UI。
  3. 编写端到端(E2E)和单元测试,覆盖 agent chat 的 UI 展示。

参考与标准

Metadata

Metadata

Labels

bugSomething isn't working

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions