Skip to content

Console Chatbot 仅在检测到 AI 服务可用时渲染:基于 discovery.services.ai 动态控制 #1163

@hotlong

Description

@hotlong

背景

随着 objectstack-ai/spec#1029 推进,服务端 discovery 响应(/.well-known/objectstack 或 /api/v1/discovery)已标准暴露 services.ai.enabledservices.ai.route。前端可以基于该状态智能显示/隐藏 AI Chatbot 按钮(FAB),避免因服务端未安装 AI 插件导致无用界面。


实现方案

  • 使用 useDiscovery() 获取最新 discovery 信息。
  • 仅当 discovery.services.ai.enabled === truestatus === 'available' 时,渲染 。
  • 动态拼接 api 地址:discovery.services.ai.route + '/chat'
  • 未检测到 AI 服务(或 disabled/unavailable/route 丢失时),不渲染 chatbot FAB,也不挂载 useObjectChat(无多余弹窗/代码)。
  • 支持 MSW/mock 模式,local 模式下可选择不显示 chatbot。

技术要点

  • 无需 hardcode API 路径,完全由 discovery 返回结构驱动。
  • 兼容未来服务端 route 调整(如 /ai → /ai/v1)。
  • 降低误判/死逻辑风险,UI 能自动感知后端能力变化。
  • 除 FAB 按钮外不影响其它功能。

改动建议

  • apps/console/src/components/ConsoleLayout.tsx
    • 用 useDiscovery() 检测 AI
    • 条件渲染 ,传递 api 参数
  • (可选)完善 DiscoveryInfo typings 补充 ai 定义
  • 更新相关单元&集成测试,确保未安装 AI 插件时无 FAB

验证方式

  • 关闭 service-ai 插件 → chatbot 消失
  • 启用 service-ai 并保证协议标准 → chatbot 自动显示且 SSO 到真正的 AI 聊天

Metadata

Metadata

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions