问题描述
当前 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。
问题清单
预期方案
- agent-routes.ts:
- 增加对
stream !== false 的判断,优先返回 SSE 流。
- 非流式请求应抛出异��或 fallback 明确警告前端该模式不被支持。
- 直接复用 general chat 路由返回的流式模式实现,
encodeVercelDataStream 返回 events。
- 前端:
- 禁止兼容 plain JSON,遇到非 Vercel SSE 时清晰报错,不 silent fail。
- 增强错误态 UI。
- 编写端到端(E2E)和单元测试,覆盖 agent chat 的 UI 展示。
参考与标准
问题描述
当前 ObjectStack Studio 的 AI 聊天(AI Chat Panel)与后端
@ai-sdk/react/DefaultChatTransport(Vercel AI SDK v6)集成存在严重兼容性问题:/api/v1/ai/chat返回的是符合 Vercel Data Stream Protocol (VDSP) 的 SSE 流格式,能正常被DefaultChatTransport解析渲染。/api/v1/ai/agents/:agentName/chat仅返回 plain JSON,对话内容无法在 UI 中显示(但 API 层收到正确回复)。表现:API 能响应,但聊天界面无内容渲染。UI 实际期望 Vercel SSE Data Stream。
问题清单
/api/v1/ai/chat✅ 返回 Vercel SSE(支持流式/非流式)。/api/v1/ai/agents/:agentName/chat❌ 只返回 JSON,未实现 SSE 流。stream: true请求返回encodeVercelDataStream包裹的 SSE。预期方案
stream !== false的判断,优先返回 SSE 流。encodeVercelDataStream返回 events。参考与标准