Files
goodbuddy/docs/features/knowledge-base/external-knowledge-ui-design.md
T

15 KiB
Raw Blame History

外部知识库 UI 设计

文档信息

项目 内容
状态 设计稿
版本 0.1
日期 2026-09-03
产品需求 外部知识库接入 PRD
行为规则 外部知识库逻辑设计
全局规范 GoodBuddy UI 设计系统

1. 信息架构

外部知识库不增加左侧主导航和知识库一级页签。现有知识库页面结构保持:

知识库
├─ 页面标题区
│  ├─ 管理外部实例
│  └─ 新建知识库
├─ 知识库列表
└─ 当前知识库详情

“管理外部实例”管理可复用连接;“新建知识库”负责创建本地知识库或添加一个远端绑定。

2. 页面标题区

常规宽度:

知识库                              [管理外部实例] [新建知识库]
导入、检索并维护本地和企业现有知识
范围:全局
  • “新建知识库”保持主按钮。
  • “管理外部实例”是带服务器图标的次按钮。
  • 沿用知识库页面的全局 ScopeBadge,创建和管理外部连接时持续可见。
  • 按钮使用文字和图标,不增加只含缩写的厂商快捷入口。
  • 窄窗口下两个按钮换到标题下方,保持同一行;空间不足时各占一半宽度。

对应:EK-FR-01。

3. 知识库列表

本地和外部知识库保留在同一主列表。条目采用现有列表密度,不增加卡片墙。

研发规范
RAGFlow · 研发知识平台 · 远端可检索

产品资料
本地 · 12 个来源 · 全文与向量可用

3.1 外部条目字段

  • GoodBuddy 显示名称。
  • Provider 图标或文字徽标。
  • 外部实例名称。
  • “远端可检索”、认证失效、目标不存在等准确状态。
  • 最近一次成功检索时间;从未检索时显示“尚未检索”。

外部条目不显示来源数量、同步进度、向量覆盖率、本地图谱或导入失败数。

3.2 列表筛选

现有搜索同时匹配 GoodBuddy 名称、远端名称、Provider 和实例名称。来源筛选使用菜单:

全部来源
本地
Dify
FastGPT
RAGFlow

筛选不是新的页面页签。

4. 管理外部实例

点击“管理外部实例”打开大尺寸 Modal。Modal 使用标题、可滚动内容和固定操作区,遵循 全局焦点陷阱、Escape、背景隔离和焦点恢复规则。

┌──────────────────────────────────────────────────────────────┐
│ 外部实例                                      [添加实例] [×] │
│ 管理 Dify、FastGPT 和 RAGFlow 的连接                         │
├──────────────────────────────────────────────────────────────┤
│ 名称            Provider   服务地址             状态    操作 │
│ 研发知识平台    RAGFlow    ragflow.example      正常     ⋯   │
│ 客服知识平台    FastGPT    fastgpt.example      认证失效 ⋯   │
└──────────────────────────────────────────────────────────────┘

4.1 实例行

显示:

  • 名称、Provider、脱敏后的主机名、状态。
  • 已绑定知识库数量。
  • 最近测试时间。
  • 行尾菜单:测试连接、编辑、停用或启用、删除。

服务地址可以显示 scheme、host 和非默认端口,不显示路径中的敏感信息、查询或凭据。

4.2 空状态

尚未配置外部实例
添加企业现有的 Dify、FastGPT 或 RAGFlow 服务。
[添加实例]

筛选无结果和加载失败使用不同 EmptyState 变体。

5. 添加和编辑实例

实例表单在管理 Modal 内切换为编辑面板,不叠加第二层 Modal。

添加外部实例

实例名称        [研发知识平台                    ]
Provider        [RAGFlow                       ▾]
服务地址        [https://ragflow.example        ]
认证方式        API Key
API Key         [••••••••••••••••               ]
凭据状态        尚未保存

连接测试
服务连接        未测试
身份认证        未测试
知识库列表      未测试
检索接口        绑定知识库时验证

                              [取消] [测试连接] [保存实例]

5.1 字段行为

  • Provider 使用原生 Select;编辑已被绑定的实例时不可切换 Provider。
  • 服务地址只接受完整 HTTP(S) 地址。字段下方说明其受全局内网兼容模式影响。
  • API Key 使用密码输入和显示/隐藏图标。明文会在当前表单和保存 IPC 中短暂存在;编辑时 留空表示保留,不使用占位假密钥。
  • 已保存凭据旁提供“替换凭据”和“清除凭据”,清除属于需要确认的操作。
  • 地址使用 HTTP,或连接测试依赖放宽证书校验时,在测试和保存操作旁持续显示传输风险。 用户必须针对当前地址确认后才能保存;地址变化会清除该确认。
  • “测试连接”不保存草稿;测试期间按钮显示进度并提供取消。
  • 保存成功进入应用通知,Modal 返回实例列表并聚焦对应行。

5.2 测试结果

分项状态使用图标、文字和说明,不只依靠颜色:

服务连接       通过       183 ms
身份认证       通过
知识库列表     受限       当前凭据不能读取列表,可手工填写知识库 ID
检索接口       待验证     添加知识库时执行

长错误折叠显示,正文经过脱敏。失败后保留全部草稿和 API Key 输入。

FastGPT 实例额外显示:检索会计入该实例的 API 使用记录,并可能产生 Embedding 或 Rerank 用量。

6. 新建知识库向导

扩展现有页面内 CreateLibraryWizard,不改为新的全屏页面或 Modal。

6.1 类型选择

表单第一项使用单选卡片或共享 SegmentedControl:

知识库类型
[本地] [Dify] [FastGPT] [RAGFlow]

只有选择本地时显示现有存储模式、图谱和本地说明。外部类型选中后显示两栏配置。

6.2 外部类型两栏布局

┌──────────────────────────────┬──────────────────────────────┐
│ 知识库来源                   │ 检索配置                     │
│                              │                              │
│ Provider     RAGFlow         │ 通用配置                     │
│ 外部实例     [研发平台    ▾] │ 返回片段数          [ 6 ]   │
│ 远端知识库   [研发规范    ▾] │ 请求超时            [15 秒] │
│                         [↻]  │ 单片段上限          [4000]  │
│ [手工填写知识库 ID]          │                              │
│                              │ RAGFlow 配置                 │
│ 显示名称     [研发规范      ]│ 相似度阈值          [0.20]  │
│ 远端名称     研发规范        │ 向量相似度权重      [0.30]  │
│ 远端 ID      7f31…c902       │ KNN Top K           [1024]  │
│ 测试查询     [部署网络要求  ]│ 图谱检索             [开关] │
│                              │ Knowledge Compilation [开关]│
├──────────────────────────────┴──────────────────────────────┤
│ 将向研发知识平台发送测试查询。不会上传文件或完整会话。       │
│                              [取消] [测试检索] [添加知识库]   │
└─────────────────────────────────────────────────────────────┘

测试查询由用户填写,不自动生成,也不取用当前会话内容。“添加知识库”在真实检索请求 成功前禁用;成功返回零条结果仍可添加,但界面显示“检索成功,未找到匹配片段”。验证结果 在底部说明区展示,不用成功 Alert 撑高表单。 添加成功后沿用本地知识库行为,把新绑定加入当前聊天选择,不重新启用其他已取消知识库。

6.3 目录下拉框

  • 选择实例后自动打开加载状态,不要求再点击“读取”。
  • 使用可搜索 Select,选项显示名称、远端短 ID 和可用状态。
  • 右侧刷新使用刷新图标按钮,Tooltip 为“刷新知识库列表”。
  • 加载时保持控件稳定尺寸,显示“正在读取知识库…”。
  • 目录为空显示“当前实例没有可访问的知识库”。
  • 403 或不支持列表时显示原因和“手工填写知识库 ID”。
  • 列表失败后显示“重试”,不自动切换到手工模式。

6.4 手工模式

远端知识库 ID  [                              ]
显示名称        [                              ]
[验证知识库]

验证成功后显示远端名称和 Provider 返回的摘要。返回自动列表不会丢弃已输入 ID,切换前 如有未保存输入须确认。

7. 配置面板

右侧配置固定分为“通用配置”和“{Provider} 配置”,不创建嵌套卡片。高级字段可以使用 一个折叠区,但核心检索方式、阈值和 RAGFlow 图谱检索保持直接可见。

控件选择:

  • 开关:图谱检索、Score 阈值启用、Rerank、使用 Dify 知识库默认配置。
  • Select 或 SegmentedControl:少量固定检索方式。
  • 数字输入或 Stepper:结果数、Token、Top K、超时。
  • Slider 加数字输入:0 至 1 的阈值和权重,二者保持同步。
  • Metadata 条件:初始版本不提供自由 JSON 编辑器。

字段显隐由 GoodBuddy 内置 Provider 描述和 Main 返回的能力状态共同决定。服务端返回的 任意字符串不得变成 HTML、控件标签或帮助链接。

7.1 RAGFlow 图谱文案

开关名称:图谱检索

说明:检索远端知识库已经生成的图谱内容,不会创建或更新图谱。

只有远端详情或受控探测表明图谱已经构建时,该开关才可用。证据缺失时显示“未确认远端 图谱状态”并禁用。Knowledge Compilation 单独显示为 包含 Knowledge Compilation,默认 关闭,不把它和旧 GraphRAG 合成同一开关。

8. 外部知识库详情

选中外部绑定后,现有详情区按来源类型裁剪:

研发规范                                      RAGFlow · 远端检索
研发知识平台 / 远端知识库 7f31…c902

[概览] [检索配置] [检索测试]

8.1 概览

显示 Provider、实例、远端名称、远端 ID、连接状态、最近成功检索和数据位置。操作包括:

  • 刷新远端信息。
  • 更换远端知识库。
  • 编辑 GoodBuddy 显示名称。
  • 从 GoodBuddy 移除。

不显示导入文件、添加目录、添加网页、同步、分块、重建索引和本地图谱入口。

8.2 检索配置

复用创建向导右侧配置面板。存在失效字段时,页头显示“配置需要确认”,字段附近说明 Provider 版本变化,保存按钮保持禁用直到用户处理。

8.3 检索测试

复用现有检索测试工作台的查询、结果和焦点行为,但外部结果采用 Provider 诊断:

RAGFlow · 研发知识平台
总耗时 642 ms · 返回 6 条 · 保留 6 条

1  部署规范.pdf
   第四章 网络要求…
   Provider 分数 0.82 · 文档 ID 98ab…

外部测试不显示 FTS/CJK/本地向量扫描等本地通道,也不提供依赖本地分块的“查看上下文”。

9. 聊天知识范围

现有多选列表保留一个选择面,只在每行增加来源:

[✓] 产品资料                         本地
[✓] 研发规范                         RAGFlow · 研发知识平台
[ ] 客服知识                         FastGPT · 客服平台
  • 不按 Provider 创建多套选择器。
  • 不可用绑定保留显示但禁用勾选,并给出认证失效或目标不存在原因。
  • 当前会话已选绑定变为不可用时,不静默移除 ID;发送前提示该知识库本次无法检索。

10. 执行状态和引用

活动状态:

正在检索“研发规范”
RAGFlow · 研发知识平台 · 已发送当前检索词

部分失败:

已检索 3 个知识库,2 个成功,1 个超时
[查看详情]

引用:

部署规范.pdf / 网络要求
研发规范 · RAGFlow · 研发知识平台

引用详情显示远端文档名、ID、片段、Provider 分数和实际返回的定位。未完成 URL 安全设计前, 不显示“打开远端来源”。

11. 删除确认

移除绑定:

从 GoodBuddy 移除“研发规范”?
这会删除本机绑定和检索配置,不会删除 RAGFlow 中的知识库或文档。

[取消] [移除]

删除有绑定的实例:

“研发知识平台”仍被 3 个知识库使用
删除实例会同时从 GoodBuddy 移除这些绑定。远端数据不会改变。

[取消] [查看知识库] [删除实例和本地绑定]

破坏性主操作使用 danger-solid,默认焦点放在“取消”。

12. 可访问性与响应式

  • 常规宽度两栏使用稳定 Grid;小于 960px 时改为单栏,顺序为来源、通用配置、Provider 配置。
  • 小于 720px 时外部实例表格转为单列列表,行操作保留菜单按钮和完整可访问名称。
  • Modal、创建向导、下拉框和折叠区支持完整键盘操作。
  • 异步列表和测试状态使用 aria-live="polite";错误使用与字段关联的 role="alert"。
  • 图标按钮必须提供 Tooltip 和 aria-label。
  • 状态不只靠颜色;加载、成功、受限和失败均包含文字。
  • 长实例名、地址、远端名称和 ID 使用单行省略,完整值可通过 Tooltip 或详情查看。
  • 切换类型、实例或退出时存在有效草稿,应按全局离开保护规则确认。

13. 文案表

场景 文案
页面操作 管理外部实例
创建类型 本地 / Dify / FastGPT / RAGFlow
创建主操作 添加知识库
列表加载 正在读取知识库…
列表受限 当前凭据不能读取知识库列表,可手工填写知识库 ID。
远端状态 远端可检索
移除操作 从 GoodBuddy 移除
图谱开关 图谱检索
测试说明 测试只发送当前查询,不会调用 GoodBuddy 模型或修改远端内容。

产品文案不使用“同步外部知识库”“导入 Dify 知识库”或“创建远端知识库”,因为这些动作 都不是本功能的实际行为。

14. 需求追踪

UI 区域 需求 场景
页面标题与统一列表 EK-FR-01、EK-FR-10 EK-US-C1
外部实例管理与表单 EK-FR-02、EK-FR-03、EK-FR-15、EK-FR-16 EK-US-A1 至 EK-US-A3
新建知识库向导 EK-FR-04 至 EK-FR-09 EK-US-B1 至 EK-US-B4
外部详情与检索测试 EK-FR-12、EK-FR-13 EK-US-C3、EK-US-D1 至 EK-US-D4
聊天范围、状态和引用 EK-FR-11、EK-FR-12、EK-FR-14 EK-US-C1 至 EK-US-C4