入口与导出
对外只有一个包 @volcengine/chatkit,按入口引入。本页列出各入口的用途和常用导出;完整类型以所安装版本的声明为准。
入口
根入口 @volcengine/chatkit
@volcengine/chatkit/core
写自己的适配器、或不用界面直接使用运行时的时候用。
直接使用 ChatCoreRuntime 时,需要自行管理历史加载、事件订阅和释放。升级注意事项见版本与兼容承诺。
各适配器入口
真实后端适配器入口还导出输入类型(如 AdkChatInput)和错误文案类型(如 AdkMessages);Mock 适配器的导出见 Mock 适配器。用法见接入后端。
按需引入的入口
不引入就不会进包。各自的样式要和 styles.css 一起引入。
按需加载
全部功能在一个包里,不需要额外安装。体积较大、又不是每个页面都用得到的内置功能放在单独的文件里:在需要显示时加载。实际拆包和首屏大小取决于业务项目的构建配置。
附件按钮这类很小的功能留在首屏;会话列表 SessionList 是单独导出的组件,未使用时可由打包工具移除,实际结果取决于 tree shaking 配置。
取到之前显示同样大小的占位,取到之后原地换成实现,已经取到过的直接显示。
取不到时(网络中断、发版后旧文件被删):
- 这个功能不显示,对话和其他功能不受影响。
onError收到一次错误,信息里带功能名。- 后续再次渲染时会尝试重新加载,距上次失败至少 1 秒;没有定时重试,加载成功后再显示。
对打包的要求:
- 这些功能通过动态
import()引入。打包工具要把动态引入保留成单独的文件(Vite、webpack、Rspack 的默认行为);合并成一个文件也能运行,只是失去了首屏体积上的好处。 - 发版时保留上一版的静态文件一段时间,页面没有刷新的用户才取得到旧的文件。
- 内置功能的样式不拆分,都在
@volcengine/chatkit/styles.css里;只有按需引入的 OpenUI 与产物预览各带一份单独的样式。 - 这些延迟加载在浏览器渲染后触发。这不表示根入口支持 Node 原生 ESM 或服务端渲染,运行环境要求见下。
依赖
- peer 依赖:
react、react-dom(18)。 /core、/adapters/*、/testing不依赖 DOM,可以在 Node 里用;根入口只在浏览器里经打包工具运行。- 服务端渲染时把
<Chatkit>放进客户端组件并关掉 SSR,见上线清单。
说明
- 全部导出通过名称、声明签名及 JS 一致性检查;类型按其所属配置、回调、返回值查阅。
- 没有列在入口里的内部模块不属于公开接口,不要通过深层路径引入。
协议作者入口
新协议使用 /core 的 createAdapter、AdapterProtocol、CreateAdapterOptions、ProtocolUpdate;能力函数与内置协议一致。AdapterSubscribeRequest、StreamEvent、StreamResult 描述独立接收通道。HistoryResult、SessionInfo、SessionStatus 描述历史与会话摘要。完整方法签名和可运行示例见新协议接入,逐项能力见能力函数 API。
一致性测试
/testing 只导出 runAdapterConformance 与 verifyTelemetry,以及 AdapterConformanceHarness、ConformanceScenario、ConformanceTestApi、TrackedTelemetryCall、VerifyTelemetryOptions、VerifyTelemetryResult 这些配置与结果类型。
内置适配器统一由工厂创建,返回 ChatRuntimeAdapter<对应的 ChatInput>。Mock 适配器的场景目录 MOCK_SCENARIOS 只提供 id、label、checklist;通过 getScenarioId 选场景。附件支持范围读取 adapter.acceptedFileTypes。