入口与导出

对外只有一个包 @volcengine/chatkit,按入口引入。本页列出各入口的用途和常用导出;完整类型以所安装版本的声明为准。

入口

入口内容运行环境
@volcengine/chatkit界面、hooks、内置功能组件、类型浏览器
@volcengine/chatkit/styles.css样式(作用域在 .chatkit-wrapper,整份在 @layer chatkit 里)浏览器
@volcengine/chatkit/core运行时、适配器契约浏览器与 Node
@volcengine/chatkit/adapters/mockcreateMockAdapter、场景与演示数据(开发与测试用)浏览器与 Node
@volcengine/chatkit/adapters/adkcreateAdkAdapter、请求内容与会话的类型浏览器与 Node
@volcengine/chatkit/adapters/a2acreateA2aAdapter、请求内容与历史的类型浏览器与 Node
@volcengine/chatkit/adapters/openaicreateOpenAiAdapter、请求内容与历史的类型浏览器与 Node
@volcengine/chatkit/adapters/hermescreateHermesAdapter、请求内容与历史的类型浏览器与 Node
@volcengine/chatkit/adapters/hermes-gatewaycreateHermesGatewayAdapter、createHermesGatewayConnection、审批与追问的类型浏览器与 Node
@volcengine/chatkit/adapters/dshcreateDshAdapter、createDshConnection、审批与追问的类型浏览器与 Node
@volcengine/chatkit/adapters/codexcreateCodexAdapter、createCodexConnection、审批与追问的类型浏览器与 Node
@volcengine/chatkit/adapters/opencodecreateOpenCodeAdapter、createOpenCodeConnection、审批与追问的类型浏览器与 Node
@volcengine/chatkit/testing适配器一致性套件 runAdapterConformance、上报验收 verifyTelemetry 及配置类型测试
@volcengine/chatkit/presentation工具调用展示:createToolRegistry、getToolPresentation、summarizeToolCall 等浏览器与 Node
@volcengine/chatkit/message-codec消息转换 convertToChatkitMessages、富文本消息编解码 encodeRichTextMessageContent / decodeRichTextMessageContent浏览器与 Node
@volcengine/chatkit/devtools开发调试:页面内的指标归并 createTurnMetrics、浮层 ChatkitTelemetryInspector;只在开发环境使用浏览器(开发)
@volcengine/chatkit/openui按需引入:OpenUI 渲染组件 OpenUiArtifact、组件白名单 OPENUI_COMPONENT_ALLOWLIST浏览器
@volcengine/chatkit/openui.cssOpenUI 组件的样式;与 styles.css 一起引入浏览器
@volcengine/chatkit/artifacts按需引入:产物预览的卡片、列表、预览面板与 Markdown 标签组件浏览器
@volcengine/chatkit/artifacts.css产物组件的样式;与 styles.css 一起引入浏览器

根入口 @volcengine/chatkit

类别导出
组件Chatkit(聊天区)、SessionList(会话列表)、ChatkitProvider
建立运行时useChatSessions、useChatRuntime
公开 hooksuseComposer、useCurrentSession、useCurrentRun、useChatkitActions、useMessageContext、useI18n
内置功能组件AttachmentButton、可定制菜单 ComposerAddAttachment、VoiceInput;自定义内容还可用 StaticMarkdownText、TooltipIconButton
配置的类型ChatkitProps、ChatkitSettings、ChatkitFeatures、ChatkitSlots、ChatkitRenderers、ChatkitErrorRenderContext、ChatkitErrorText、ChatkitSendHandler、ChatkitSendInput
插槽的类型ChatkitSlotName、ChatkitSlotItem、ChatkitSlotContexts,以及各位置的上下文类型;会话列表的 SessionListProps、SessionListItemSlot
渲染器的类型ChatkitDataPartRenderer、ChatkitToolRenderer、ChatkitToolViewProps、ChatkitErrorRenderer、ChatkitConversationEventRenderer
功能的类型ChatkitUploader、AttachmentResource、AttachmentSource、ComposerAddAttachmentsOptions、ComposerAddAttachmentsResult、ChatkitSpeechRecognizer、ChatkitMentionSource、ChatkitSlashSource、ComposerAddAttachmentItem
运行时的类型ChatSessions、ChatkitRuntime、ChatkitCapabilities、ChatkitSessionView、ChatkitRunInfo、ChatkitRuntimeInput
事件与上报createTelemetry、flattenChatkitEvent、isChatkitEvent、CHATKIT_EVENT_NAMES;类型 ChatkitEvent、ChatkitEventName、ChatkitEventOf、ChatkitUiEvent、ChatkitFlowEventPayloads
错误的类型ChatkitErrorHandler、ChatkitErrorContext、ChatkitErrorSource

@volcengine/chatkit/core

写自己的适配器、或不用界面直接使用运行时的时候用。

类别导出
适配器契约ChatRuntimeAdapter、RuntimeIngress、AdapterContext、SessionInfo、AdapterCapabilities
消息与片段ChatInput、AttachmentResource、AttachmentSource、RuntimeMessage、RuntimePart、RunError
排查信息AdapterFailureCause、AdapterCapabilityName
会话历史HistoryResult、HistoryActiveRun、HistoryRunSnapshot
适配器辅助createAdapter、createSessionAdapters
运行时(进阶)ChatCoreRuntime、命令中间件与观察者的类型、事件类型

直接使用 ChatCoreRuntime 时,需要自行管理历史加载、事件订阅和释放。升级注意事项见版本与兼容承诺。

各适配器入口

入口创建函数选项的类型请求内容的类型历史与会话的类型错误
/adapters/adkcreateAdkAdapterAdkAdapterOptionsAdkRunRequestBodyAdkSessionDetail、AdkSessionRecordAdkRunRejectedError、AdkStreamInterruptedError
/adapters/a2acreateA2aAdapterA2aAdapterOptionsA2aRunBody、A2aSteerBody、A2aAbortBody、A2aResumeBodyA2aHistoryA2aStreamInterruptedError
/adapters/openaicreateOpenAiAdapterOpenAiAdapterOptionsOpenAiChatRequest、OpenAiSteerBodyOpenAiHistory、OpenAiHistoryMessage、OpenAiHistoryRunOpenAiStreamInterruptedError
/adapters/hermescreateHermesAdapterHermesAdapterOptionsHermesRunBody、HermesSteerBodyHermesMessagesResponse、HermesHistoryRun、HermesSessionRecordHermesStreamInterruptedError
/adapters/hermes-gatewaycreateHermesGatewayAdapterHermesGatewayAdapterOptions、HermesGatewayConnectionOptionsHermesGatewayRunBodyHermesGatewayHistoryPage、HermesGatewayRowHermesGatewayRpcError、HermesGatewayClosedError
/adapters/dshcreateDshAdapterDshAdapterOptions、DshConnectionOptionsDshRunBodyDshHistoryPageDshRequestError、DshRemoteError、DshConnectionClosedError
/adapters/codexcreateCodexAdapterCodexAdapterOptions、CodexConnectionOptionsCodexRunBodyCodexHistoryPage、CodexTurnCodexRpcError、CodexConnectionClosedError
/adapters/opencodecreateOpenCodeAdapterOpenCodeAdapterOptions、OpenCodeConnectionOptionsOpenCodeRunBodyOpenCodeHistoryPageOpenCodeRequestError、OpenCodeConnectionClosedError
/adapters/mockcreateMockAdapterMockAdapterOptions———

真实后端适配器入口还导出输入类型(如 AdkChatInput)和错误文案类型(如 AdkMessages);Mock 适配器的导出见 Mock 适配器。用法见接入后端。

按需引入的入口

不引入就不会进包。各自的样式要和 styles.css 一起引入。

入口组件与函数类型
/openuiOpenUiArtifact、OPENUI_COMPONENT_ALLOWLISTOpenUiArtifactProps、OpenUiAllowedComponent
/artifactsArtifactList、ArtifactCard、ArtifactPreviewPanel、createArtifactMarkdownRenderers、normalizeArtifactItems;枚举 ArtifactKind、ArtifactStatusArtifactItem、ArtifactLoad、ArtifactLoadOptions、ArtifactResource(及 Text / Blob / Url / Project 四种)、ArtifactProjectFile、ArtifactPreviewPanelProps、ArtifactListProps、ArtifactCardProps、ArtifactActionHandler、ArtifactPreviewSelection(及 Text / Spreadsheet / Image 三种选区)、ArtifactMarkdownRenderersOptions、ArtifactMarkdownSource

用法见 OpenUI 渲染与产物预览。

按需加载

全部功能在一个包里,不需要额外安装。体积较大、又不是每个页面都用得到的内置功能放在单独的文件里:在需要显示时加载。实际拆包和首屏大小取决于业务项目的构建配置。

按需加载的部分什么时候去取
语音输入的实现给了 features.voice.recognize,语音按钮显示时
附件的文件类型图标第一次出现非图片的附件
默认头像第一次要显示默认头像

附件按钮这类很小的功能留在首屏;会话列表 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。