@dva89/flare-chat-ui
v0.1.0
Published
Chat GUI 能力包。
Readme
flare-chat-ui
Chat GUI 能力包。
依赖:
flare-chat-coreflare-generative-uiflare-canvas-ui
职责:
- 会话列表。
- 消息时间线。
- 输入区与发送交互。
- ChatWorkspace 宿主编排。
不包含:
- kernel 调用实现。
- 业务领域写死逻辑。
development mode(本地调试)
用于纯组件调试,不依赖真实业务后端:
cd packages/flare-chat-uinpm installnpm run dev
默认地址:http://127.0.0.1:3000
约定:
playground默认使用本地 mock runtime(会话/消息/流式事件均为模拟)。- 不接入真实采购业务逻辑。
- 端口与标题通过环境变量配置,不在代码里写死业务地址。
可选环境变量:
FLARE_CHAT_UI_DEV_HOST、FLARE_CHAT_UI_DEV_PORTVITE_FLARE_CHAT_FUNCTION_TYPEVITE_FLARE_CHAT_DEFAULT_SESSION_TITLEVITE_FLARE_CHAT_PROJECT_NAMEVITE_FLARE_CHAT_PROJECT_TITLEVITE_FLARE_CHAT_SOURCE_API_ENABLED(true时启用真实文件 API)VITE_FLARE_CHAT_SOURCE_API_BASE_URL(如http://127.0.0.1:8001)VITE_FLARE_CHAT_SOURCE_API_TOKEN(Bearer token)
shell slots(配置化插槽)
ChatWorkspace 支持把壳层入口配置化,便于后续只改配置:
projectSlotsidebarOperationsmodeQuickEntriesuiLabelsidentityContextonProjectSourcesChangesourceAPI
最小示例:
<ChatWorkspace
functionType="chat_component_debug"
messageAPI={messageAPI}
projectSlot={{
key: 'project-learning-gpt',
project_id: 'proj_001',
subtitle: 'Project',
name: '项目',
sessionListParams: { project_id: 'proj_001' },
sessionCreateParams: { project_id: 'proj_001' },
}}
identityContext={{
user_id: 'user_001',
project_id: 'proj_001',
}}
onProjectSourcesChange={({ project_id, user_id, sources }) => {
// 宿主可在这里持久化项目资料与会话引用关系
}}
sourceAPI={{
uploadSourceFile: (payload) => apiClient.uploadSourceFile(payload),
listProjectSources: (projectId) => apiClient.listProjectSources(projectId),
deleteProjectSource: (projectId, sourceId) => apiClient.deleteProjectSource(projectId, sourceId),
}}
sessionAPI={sessionAPI}
sidebarOperations={[
{ key: 'new_thread', label: 'New thread' },
{ key: 'automations', label: 'Automations' },
{ key: 'skills', label: 'Skills' },
]}
modeQuickEntries={[
{ key: 'requirement_canvas', label: '需求梳理', functionType: 'requirement_canvas' },
{ key: 'intelligent_sourcing', label: '智能寻源', functionType: 'intelligent_sourcing' },
]}
uiLabels={{
mode_quick_entry_title: '推荐模式',
current_mode_label: '当前模式',
}}
/>sourceAPI 约定:
uploadSourceFile({ file, project_id, session_id? }) => Promise<SourceRecord>listProjectSources(projectId) => Promise<{ project_id, sources }>deleteProjectSource(projectId, sourceId) => Promise<{ deleted: boolean }>
未传 sourceAPI 时,资料区仍使用本地状态模式(仅前端内存)。
