@rayvision/ai-chat

中文文档
0.0.2发布于 2026/11/02TypeScriptESM + CJS

Shared Renderbus AI chat UI package

原始使用文档
文档目录8 节
  1. 安装
  2. 快速开始
  3. Gateway 适配器
  4. 组件配置
  5. 控制器
  6. 自定义适配器
  7. 导出内容
  8. 浏览器要求

@rayvision/ai-chat

Renderbus AI Chat React 组件,提供流式问答、Markdown、引用、建议问题、附件上传、会话恢复和中英文界面。

安装

npm install @rayvision/ai-chat

需要 React 和 React DOM 18 或更高版本。

快速开始

import { useRef, useState } from 'react'
import { AIChat, createAIChatController, createCustomerV1ChatAdapter } from '@rayvision/ai-chat'

export function App(): JSX.Element {
  const [container, setContainer] = useState<HTMLDivElement | null>(null)
  const controller = useRef(
    createAIChatController({
      adapter: createCustomerV1ChatAdapter(),
    }),
  ).current

  return (
    <>
      <div ref={setContainer} />
      <AIChat container={container} controller={controller} language='zh' theme='light' />
    </>
  )
}

AIChat 会把界面挂载到 container 的 Shadow DOM 中,并自动注入组件样式。container 为 null 时组件不会渲染。

对于 Vue 等非 React 宿主,可以直接使用 mountAIChat:

import { mountAIChat } from '@rayvision/ai-chat'

const chat = mountAIChat(document.querySelector('#ai-chat')!, {
  language: 'zh',
  launcher: false,
})

chat.controller.toggle(true)
// 页面卸载时调用
chat.destroy()

该 API 会在包内部创建 React root、controller 和 Shadow DOM,宿主只需要提供一个 DOM 容器。

Gateway 适配器

默认适配器请求同源地址 /api/ai-assistant/v1,使用浏览器 Cookie 携带会话信息:

const adapter = createCustomerV1ChatAdapter({
  baseUrl: '/api/ai-assistant/v1',
  module: 'tasks',
  knowledgeScope: 'public',
})

const controller = createAIChatController({ adapter })

选项:

选项类型说明
baseUrlstringGateway v1 基础地址,默认 /api/ai-assistant/v1
modulestring建议问题和请求使用的业务模块
knowledgeScope'public'知识库范围

宿主应用需要保证 baseUrl 可访问,并按服务端要求配置 Cookie、跨域和代理。

组件配置

<AIChat container={container} controller={controller} language='en' theme='dark' launcher={false} />
属性类型默认值说明
containerHTMLElement | null无Shadow DOM 的宿主节点
controllerAIChatController必填管理会话、消息和请求
language'zh' | 'en''zh'界面语言
theme'light' | 'dark''light'初始主题
launcherboolean | AIChatLauncherPropstrue是否显示悬浮打开按钮
adapterChatAdaptercontroller 的适配器替换请求实现

通过 launcher 对象可以设置按钮属性:

<AIChat
  container={container}
  controller={controller}
  launcher={{
    disabled: false,
    className: 'my-ai-chat-launcher',
  }}
/>

控制器

const controller = createAIChatController({
  defaultOpen: false,
})

await controller.initialize()
controller.toggle(true)
controller.setLanguage('zh')
controller.setDraft('如何提交渲染任务?')
controller.send()
controller.cancel()
controller.clear()

常用方法:

  • initialize():加载建议问题和附件配置。
  • toggle(show?):打开或关闭聊天面板。
  • setDraft(draft)、send():设置并发送文本问题。
  • addFiles(files)、removeAttachment(id):管理附件。
  • restoreConversation(conversationId, limit?):恢复历史会话。
  • cancel():取消当前流式请求。
  • destroy():释放控制器资源。

自定义适配器

如果后端不是 Gateway v1,可以实现 ChatAdapter 并注入控制器:

import type { ChatAdapter } from '@rayvision/ai-chat'

const adapter: ChatAdapter = {
  send(input, handlers) {
    // 调用业务接口,并通过 handlers.onDelta / onComplete / onError
    // 把流式结果通知给组件。
    return {
      cancel() {
        // 取消请求
      },
    }
  },
}

const controller = createAIChatController({ adapter })

send 至少需要实现 onDelta、onComplete 和 onError 对应的调用逻辑。附件、建议问题、历史会话和引用详情为可选能力。

导出内容

主要导出包括:

  • 组件:AIChat
  • 工具:mountAIChat、createAIChatController、createCustomerV1ChatAdapter
  • 类型:AIChatProps、AIChatController、ChatAdapter、ChatMessage、Citation、Attachment

浏览器要求

组件使用 fetch、AbortController、Shadow DOM 和 File API。请在支持这些 Web API 的现代浏览器中使用。

版本与发布记录

@rayvision/ai-chat 共发布 4 个版本,首次发布于 2026/10/22;过去 12 个月发布了 4 个版本。

版本发布日期距今
0.0.2latest2026/11/021 天前
0.0.2-beta2026/10/268 天前
0.0.12026/10/2212 天前
0.0.0-stage2026/10/2212 天前

关于 @rayvision/ai-chat 的常见问题

@rayvision/ai-chat 是什么?

共享Renderbus AI聊天UI包

如何安装 @rayvision/ai-chat?

在项目目录运行 npm install @rayvision/ai-chat,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=18.0.0)、react-dom(>=18.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@rayvision/ai-chat 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@rayvision/ai-chat 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@rayvision/ai-chat 可以商用吗?

@rayvision/ai-chat 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@rayvision/ai-chat 还在维护吗?

最新版本 0.0.2 发布于 2026/11/02(1 天前);至今共发布 4 个版本,其中过去 12 个月发布了 4 个;首次发布于 2026/10/22。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。