Files
goodbuddy/docs/features/knowledge-base/ui-design.md
T
mesalogo 5177b47aeb fix: unify knowledge documents and sources
Merge single-document sources into one row, keep grouped directory documents and failed sources visible, and share search and task actions. Compact the drop zone and move secondary actions into a disclosure.

Include the existing knowledge workspace component extraction required by this implementation, focused regression tests, bilingual copy, and design documentation.

Validation: 94 focused tests, typecheck, lint, and diff checks passed. Full tests timed out after 200 seconds; two unrelated HeartbeatCenter tablist failures were reproduced separately. Electron visual acceptance remains unverified.

Release note: 知识库的内容来源与文档索引合并为统一列表,减少重复记录和操作;支持统一搜索,并保留目录分组和失败来源的恢复入口。
2026-09-27 10:05:50 +08:00

99 lines
5.4 KiB
Markdown

# 知识库 UI 设计
## 1. 设计目标
知识库优先帮助普通用户完成“添加资料并可靠提问”,高级 RAG 调试和图谱维护不得阻塞
首次使用。全局视觉、页面壳层、通知、焦点和危险操作遵循
[UI-DESIGN.md](../../../UI-DESIGN.md)。
## 2. 信息架构
当前列表同时容纳本地库与外部绑定,页面增加“管理外部实例”和来源筛选。以下详情结构、
资料导入和索引状态适用于本地库;外部创建、配置、检索测试及引用的当前实现与待验收项见
[外部知识库 UI 设计](./external-knowledge-ui-design.md)。
```text
知识库
├─ 知识库列表
└─ 当前知识库
├─ 文档与来源
├─ 知识图谱(启用后显示)
├─ 任务中心
└─ 高级设置
```
标题区提供“用于当前对话”“检索测试”、编辑和删除。新建知识库是页面主操作。
“高级设置”承载问答效果入口、向量索引、分块与图谱配置,不把工程参数放在首次路径。
本地与外部库共用的列表以 `minmax(0, 1fr)` 限制条目宽度,再对名称单行省略;选中卡片
的边框必须完整留在列表内,Provider/实例等辅助文字允许换行。不得用列表外层裁切
掩盖被长名称撑宽的卡片,库图标不能随名称一起收缩。外部详情的长名称和远端名称允许
换行,不能撑出横向滚动条。创建类型分段控件与详情页签保持固定内容高度,不随长表单收缩。
## 3. 首次使用
没有知识库时,页面空状态显示“新建知识库”主操作。创建时先选择类型;本地类型默认
展示名称和描述,存储方式与知识图谱放入折叠的“高级设置”。本地库创建完成后进入
“文档与来源”,用户可以导入文件、文件夹或 URL。
文档处理完成后,标题区“用于当前对话”可用。该操作把当前知识库加入当前
Conversation 的检索范围,返回对话并聚焦输入框。
## 4. 状态
知识库列表显示“可用”和“需处理”文档数。详情标题持续显示可检索、处理中、需处理和
总文档数,即使用户填写了知识库描述也不隐藏状态。
文档行显示:
- 总体处理状态。
- 全文状态。
- 向量状态。
- 启用图谱时的图谱状态。
失败文档保留错误信息和“重新处理”。只要仍有可用分块,就允许打开分块管理,避免隐藏
上一版可用索引。
## 5. 问答效果与高级参数
“检索测试”默认只突出真实问题、测试按钮和结果。高级参数使用折叠区,包含候选倍数、
通道权重、最低相似度、重排、结果数和上下文预算。“高级设置 → 问答效果”打开同一
工作台。
向量模型未配置时显示“前往设置”,直接进入模型连接,不使用只有说明文字的死路状态。
## 6. 来源操作
“文档与来源”使用一张按来源组织的表格。单文件、单 URL 来源只有一篇关联文档时,
来源与文档合成一行,以文档名为主标题,同步状态、同步时间和索引状态就近显示。
不再单独展示同名来源行,也不重复任务入口。目录及其他一对多来源保留来源组标题,
文档紧随其后;零文档和失败来源仍保留同步、暂停、重试及移除入口。
没有 `sourceId` 或找不到对应来源的文档独立显示。
搜索同时匹配来源名称、来源位置、文档名称和路径。来源命中时显示该组全部文档;
仅文档命中时保留组标题和命中文档。一对多关系按完整数据判断,搜索不能将其临时合成
单文档行。移除确认使用来源的完整文档数量,不使用搜索结果数。
导入文件、目录、URL 及拖放入口保持可用,拖放区使用紧凑的图标与文字提示。
单文档行的同步、移除和重新解析收进原生“更多操作”折叠区,解析预览、打开来源、
分块和任务保留直接入口。失败文档的重新处理入口仍直接显示。合并行的任务入口包含
该来源及该文档的相关任务,保留没有来源 ID 的文档任务。大小与分块数不拆行,操作组
按可用宽度换行,窄窗口在表格内部横向滚动。
解析预览复用现有结果组件;返回列表时恢复搜索、原触发按钮焦点及页面滚动位置。
重新解析继续调用文档重建,使用当前设置并保留上次结果,失败时显示可恢复错误。
文档行提供“打开来源”,Main 根据知识库和文档归属重新读取保存的文件路径或 URL。
移除来源使用确认对话框,说明文档数、索引、图谱证据和托管副本影响。初始焦点位于
取消,提交期间禁止重复操作,失败时保留对话框和错误。
## 7. 对话范围
知识库多选属于 Conversation。新对话默认空范围;切换对话恢复各自选择。创建新知识库
只加入当前 Conversation,不重新启用其他已取消项。发送请求时冻结当前选择和检索方式。
输入区的知识库选择弹层使用整行原生 Checkbox 标签,点击名称、文档数量或行内空白
均切换一次选择;选中背景和整行焦点环保持可见。Tab 聚焦、Space 切换,Escape 关闭并
返回触发按钮。点击行内非焦点元素时产生的空目标失焦不关闭弹层;点击外部或焦点明确
移到外部时才关闭,避免原生标签完成勾选前被卸载。