oh-my-muse/design-docs/前端-05-智能体与知识库工作台交互.md
zizi 33aad93bef 提交全维度文档review后的22项架构决策落地
基于产品/架构/流程/前端/后端五维度并行review,澄清并落地22项关键决策:

架构层:Governance按消费者归属拆散、MetaSchema独立模块、
Source传播改为事件驱动自治、去掉Candidate Decision Envelope
和needs_recheck中间状态、Neo4j决策为依赖RAGFlow GraphRAG

后端层:Entitlement统一为可变表+审计日志、API版本策略采用
X-API-Version Header、知识实体唯一键加scope字段

前端层:SSE实时通信(AI stream独立+事件统一)、正文持久化
IndexedDB安全网、Block粒度为场景/小节级

产品层:范围不变UX解决复杂度、知识确认默认自动+冲突时人工
2026-05-24 04:28:52 +08:00

1025 lines
58 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 前端-05智能体与知识库工作台交互
- 版本v1
- 更新日期2026-05-24
- 目标读者:前端开发者
- 归属仓库muse-studio用户端
- 阅读时间45-65 分钟
- 边界说明:本文件定义智能体工作台和知识库工作台在 `muse-studio` 中的页面结构、组件交互、状态管理和 API 调用。产品功能规格见 `产品-02D/02E`API 契约见 `后端-05`,工程结构见 `前端-01`,动态表单见 `前端-03`
## 1. 总体定位
智能体工作台和知识库工作台是 `muse-studio` 的两个顶级产品空间,与用户工作区、市场、个人中心平级。
核心原则:
1. 普通作者不需要先配置智能体或创建知识库即可完成 no-config 创作主路径。
2. 两个工作台只调用 `/app-api/**`,不调用管理后台接口。
3. 前端只展示后端返回的状态和可用动作,不自行推断授权、处理状态或兼容性。
4. 跨空间跳转必须基于服务端 handoff token/session不能用 URL 参数直接执行高影响动作。
5. 所有高影响操作(绑定、替换、发布、停用)必须消费服务端预检快照,过期时禁用确认。
## 2. 路由结构
```text
muse-studio/
app/
(user)/
agents/ # 智能体工作台入口
page.tsx # agent-list 智能体列表
create/page.tsx # agent-create-entry 新建入口
[agentId]/
page.tsx # agent-detail-version 详情与版本
edit/page.tsx # agent-config-editor 配置型编辑器
workflow/page.tsx # agent-workflow-editor 工作流编辑器
test/page.tsx # agent-test-bench 试用与评估
slots/page.tsx # agent-slot-compatibility 槽位兼容性
publish/page.tsx # agent-publish-prep 发布准备
records/page.tsx # agent-records-usage 运行与用量
installed/page.tsx # agent-installed-library 已安装与授权
slot-selector/page.tsx # agent-work-slot-selector 作品槽位候选选择
knowledge-bases/ # 知识库工作台入口
page.tsx # knowledge-list 知识库列表
create/page.tsx # knowledge-create-entry 新建入口
[kbId]/
page.tsx # knowledge-detail-version 详情与版本
materials/page.tsx # knowledge-material-manager 资料管理
processing/page.tsx # knowledge-processing-status 处理状态
bind/page.tsx # knowledge-work-bind-selector 作品绑定选择
publish/page.tsx # knowledge-publish-prep 发布准备
records/page.tsx # knowledge-records-usage 使用记录
installed/page.tsx # knowledge-installed-library 已安装与授权
global/page.tsx # global-knowledge-view 全局知识库视图
```
## 3. 状态管理策略
### 3.1 分层原则
| 状态类型 | 技术选型 | 适用场景 |
|---|---|---|
| 服务器事实 | TanStack Query | 列表、详情、版本、授权、处理状态等后端数据 |
| 表单状态 | React Hook Form + Zod | 创建向导、配置编辑器、发布材料表单 |
| UI 临时态 | Zustand / component state | 筛选条件、页签、滚动位置、弹窗开关 |
| 跨页面上下文 | Zustand store | handoff session、预检快照、返回点 |
### 3.2 缓存与失效
- 列表页使用 `staleTime: 30s`,返回时自动 refetch。
- 详情页使用 `staleTime: 0`,每次进入重新拉取。
- 高影响操作绑定、替换、停用成功后invalidate 相关 query key。
- handoff session 和预检快照存入 Zustand页面卸载或过期时清除。
- 轮询场景(处理状态、试用运行)使用 TanStack Query 的 `refetchInterval`,任务终态后停止。
### 3.3 乐观更新与回滚
- 列表筛选、排序使用乐观 UI失败时回滚。
- 高影响命令(绑定、替换、发布提交)不做乐观更新,等待服务端确认后刷新。
- 表单保存使用 debounce 自动保存 + 手动保存按钮,冲突时展示本地未保存提示。
## 4. 通用错误处理
| 错误码 | 前端处理 |
|---|---|
| `UNAUTHENTICATED` | 跳转登录页 |
| `FORBIDDEN` | 展示无权限说明,禁用操作按钮 |
| `RESOURCE_NOT_FOUND` | 返回列表页 |
| `STATE_CONFLICT` | 刷新对象状态和可用动作 |
| `SOURCE_NEEDS_RECHECK` | 展示来源重验入口 |
| `SOURCE_BLOCKED` | 禁用确认/绑定/生成,展示原因归因 |
| `PRECHECK_EXPIRED` | 清除本地预检快照,引导重新预检 |
| `PRECHECK_REQUIRED` | 返回来源空间刷新预检 |
| `REVISION_CONFLICT` | 拉取最新数据,展示冲突提示 |
| `FEATURE_DISABLED` | 隐藏或禁用对应入口 |
所有错误展示使用产品语言,不暴露技术术语(如 handoff session、precheckId
---
# 第一部分:智能体工作台
## 5. 智能体列表agent-list
### 5.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 顶部:新建智能体按钮(按权限显示) │
├─────────────────────────────────────────────────┤
│ 页签:我创建的 | 已安装 | 系统默认 │
├─────────────────────────────────────────────────┤
│ 搜索筛选栏:关键词、来源、形态、能力目标、状态 │
├─────────────────────────────────────────────────┤
│ 授权异常提示条(有异常时显示) │
├─────────────────────────────────────────────────┤
│ 智能体卡片列表(分页) │
│ - 名称、类型、能力目标、版本、状态 │
│ - 可编辑性、兼容槽位摘要、最近使用 │
│ - 授权状态标记 │
└─────────────────────────────────────────────────┘
```
### 5.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 页面加载 | `GET /app-api/muse/agents` | 智能体列表,带筛选和分页 |
| 页签切换 | `GET /app-api/muse/agents` | 切换 source 参数 |
| 授权异常 | 列表响应中的 `authorizationAlerts` 字段 | 展示异常数量和处理入口 |
### 5.3 交互规则
- 新建按钮:无创建权限时隐藏;有权限时跳转 `agent-create-entry`
- 卡片点击:跳转 `agent-detail-version`
- 筛选保持从详情返回时恢复筛选条件和滚动位置Zustand 持久化)。
- 空态:无智能体时展示系统默认能力摘要和"去市场安装"入口。
- 加载失败:保留旧列表数据,展示刷新时间和重试按钮。
### 5.4 跳转关系
-`agent-create-entry`:新建
-`agent-detail-version`:卡片点击
-`agent-installed-library`:已安装页签
- ← 作品智能体关联页:完成槽位替换后返回
## 6. 新建智能体入口agent-create-entry
### 6.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 形态选择:配置型 | 工作流型(按权限灰度) │
├─────────────────────────────────────────────────┤
│ 能力目标选择:写作 | 分析 | 检测 │
├─────────────────────────────────────────────────┤
│ 模板选择(可选) │
├─────────────────────────────────────────────────┤
│ 创建限制提示(配额不足、工作流未开放) │
├─────────────────────────────────────────────────┤
│ 创建按钮 / 返回列表 │
└─────────────────────────────────────────────────┘
```
### 6.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 页面加载 | `GET /app-api/muse/agents/create-options` | 查询可创建形态、模板、配额 |
| 创建 | `POST /app-api/muse/agents` | 创建草稿,带幂等键 |
### 6.3 交互规则
- 工作流型未开放时:选项置灰,展示"需要高级权限"说明。
- 配额不足:禁用创建按钮,展示个人中心权益入口。
- 创建成功:跳转对应编辑器(配置型 → `agent-config-editor`,工作流型 → `agent-workflow-editor`)。
- 创建失败:不生成草稿,保留用户选择,允许重试。
## 7. 配置型智能体编辑器agent-config-editor
### 7.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 顶部:智能体名称 / 保存状态 / 操作按钮 │
├──────────────────────┬──────────────────────────┤
│ 左侧编辑区 │ 右侧预览/校验区 │
│ - 基础信息 │ - 输出合同预览 │
│ - 能力目标 │ - 兼容槽位摘要 │
│ - Prompt 模板编辑 │ - 校验结果 │
│ - 变量说明 │ - 敏感信息提示 │
│ - 模型档位选择 │ │
│ - 参数配置 │ │
│ - 上下文策略 │ │
├──────────────────────┴──────────────────────────┤
│ 底部:保存草稿 | 校验 | 试用 | 启用版本 │
└─────────────────────────────────────────────────┘
```
### 7.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 页面加载 | `GET /app-api/muse/agents/{agentId}` | 加载草稿详情 |
| 模型选项 | 详情响应中的模型绑定选项 | 平台开放模型档位 |
| 保存草稿 | `POST /app-api/muse/agents/{agentId}/versions/draft` | 带幂等键 |
| 校验 | `POST /app-api/muse/agents/{agentId}/versions/{versionId}/validate` | 返回 validationId |
| 启用版本 | `POST /app-api/muse/agents/{agentId}/versions/{versionId}/activate` | 消费 validationId |
### 7.3 状态管理
- 表单状态React Hook Form 管理 Prompt、参数、上下文策略。
- 自动保存debounce 3s 后自动调用保存草稿,展示"已保存"/"未保存"状态。
- 校验快照:校验成功后将 `validationId` 存入组件 state过期时清除并要求重新校验。
- 启用前置:启用按钮仅在 `validationId` 有效时可点击。
### 7.4 错误处理
- 保存失败:保留本地未保存提示,允许重试。
- 校验失败定位到具体字段展示输出不合约、Prompt 注入风险等原因。
- 启用失败:不改变当前版本,展示影响范围和失败原因。
- 敏感信息命中:阻断保存或强提示,要求用户移除。
## 8. 工作流型智能体编辑器agent-workflow-editor
### 8.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 顶部:名称 / 保存状态 / 操作按钮 │
├──────────────────────┬──────────────────────────┤
│ 左侧工具面板 │ 中央画布 │
│ - 可用工具列表 │ - 步骤节点(拖拽) │
│ - 可用子智能体 │ - 连线(输入输出映射) │
│ - 步骤模板 │ - 条件分支节点 │
│ │ - 循环节点 │
│ │ - 错误处理节点 │
├──────────────────────┼──────────────────────────┤
│ 右侧属性面板 │ │
│ - 步骤配置 │ │
│ - 输入来源 │ │
│ - 输出去向 │ │
│ - 超时/失败策略 │ │
│ - 外发范围说明 │ │
├──────────────────────┴──────────────────────────┤
│ 底部:保存 | 校验 | 试用 | 启用版本 │
└─────────────────────────────────────────────────┘
```
### 8.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 工具目录 | `GET /app-api/muse/agents/{agentId}/tools` | 授权工具列表 |
| 子智能体 | 详情响应中的可用子智能体选项 | 可组合子能力 |
| 保存 | `POST /app-api/muse/agents/{agentId}/versions/workflow-draft` | 步骤和工具配置 |
| 校验 | `POST /app-api/muse/agents/{agentId}/versions/{versionId}/validate` | 工作流校验 |
### 8.3 交互规则
- 节点拖拽:从左侧工具面板拖入画布创建步骤节点。
- 连线:从节点输出端口拖到另一节点输入端口建立数据流。
- 条件分支:双击条件节点配置分支条件。
- 循环:支持 for-each 和 while 两种循环模式,必须有终止条件。
- 工具无权:工具列表中未授权工具置灰,展示"需要授权"说明。
- 外发提示:使用外发工具时,右侧面板展示外发范围和确认要求。
- 校验失败:画布中高亮错误节点,右侧展示具体原因(循环无终止、输出不合约等)。
## 9. 智能体试用与评估agent-test-bench
### 9.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 左侧:测试上下文选择 │
│ - 手动输入片段 │
│ - 作品样例选择(有权作品) │
│ - 授权知识摘要 │
│ - 模型档位和 Token 预估 │
├─────────────────────────────────────────────────┤
│ 中央:运行控制 │
│ - 运行按钮 / 停止按钮 │
│ - 外发范围提示 │
│ - 用量预估 │
├─────────────────────────────────────────────────┤
│ 右侧:输出结果 │
│ - 任务状态(排队/运行中/成功/失败/超时) │
│ - 输出文本 │
│ - 质量评分和风险标记 │
│ - 失败原因(权限/授权/合同/超时) │
│ - 保存为样例按钮 │
└─────────────────────────────────────────────────┘
```
### 9.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 上下文选项 | `GET /app-api/muse/agents/{agentId}/test-context` | 可用样例和输入选项 |
| 运行试用 | `POST /app-api/muse/agents/{agentId}/test` | 返回 testRunId |
| 轮询结果 | `GET /app-api/muse/jobs/{jobId}` | 轮询任务状态 |
| 取消 | `POST /app-api/muse/jobs/{jobId}/cancel` | 取消运行中任务 |
### 9.3 状态管理
- 运行状态:使用 TanStack Query 的 `refetchInterval: 2000` 轮询,终态后停止。
- 输出展示:成功时渲染输出文本和质量评分;失败时展示分类原因。
- 用量提示:运行前展示预估 Token 消耗;运行后展示实际用量。
### 9.4 关键约束
- 试用输出没有候选 ID不能被作品候选接受/合并接口消费。
- 使用作品样例时必须提示"不会写作品事实,但会产生模型调用和用量"。
- 市场智能体按许可和信任合同决定是否允许试用。
## 10. 可替换槽位与兼容性agent-slot-compatibility
### 10.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 筛选:能力目标、槽位状态 │
├─────────────────────────────────────────────────┤
│ 槽位列表 │
│ - 槽位名称、能力目标 │
│ - 允许输入/输出摘要 │
│ - 兼容状态标记(兼容/部分兼容/阻断) │
│ - 保护节点说明(只读) │
├─────────────────────────────────────────────────┤
│ 槽位合同详情抽屉 │
│ - 允许输入类型 │
│ - 允许输出类型 │
│ - 允许工具 │
│ - 失败策略 │
│ - 不兼容原因(如有) │
└─────────────────────────────────────────────────┘
```
### 10.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 页面加载 | `GET /app-api/muse/agents/{agentId}/slot-compatibility` | 兼容槽位列表 |
| 合同详情 | 详情响应中的槽位合同字段 | 展示合同摘要 |
### 10.3 交互规则
- 该页面只读,无写操作。
- 阻断状态:展示具体不兼容原因,引导跳转编辑器修正。
- 保护节点:只展示说明文字,不提供修改入口。
## 11. 作品槽位候选选择与替换agent-work-slot-selector
### 11.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 顶部:作品名 / 槽位名 / 跳转授权状态 / 过期 │
├─────────────────────────────────────────────────┤
│ 当前绑定:当前智能体名称和版本 │
├─────────────────────────────────────────────────┤
│ 候选列表 │
│ - 智能体名称、版本、兼容性 │
│ - 授权状态、来源 │
│ - 试用入口 │
├─────────────────────────────────────────────────┤
│ 预检结果区 │
│ - 兼容性结论 │
│ - 阻断原因 │
│ - 回退策略 │
├─────────────────────────────────────────────────┤
│ 操作区:确认替换 | 回退系统默认 | 返回作品 │
└─────────────────────────────────────────────────┘
```
### 11.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 落地 | `POST /app-api/muse/works/{workId}/agent-slots/{slotKey}/prechecks` | 消费 handoff token获取 session |
| 候选列表 | `GET /app-api/muse/works/{workId}/agent-slots` | 兼容智能体列表 |
| 预检 | `POST /app-api/muse/works/{workId}/agent-slots/{slotKey}/prechecks` | 返回 precheckId |
| 确认替换 | `POST /app-api/muse/works/{workId}/agent-slots/{slotKey}/bind` | 消费 session + precheckId |
| 回退默认 | `POST /app-api/muse/works/{workId}/agent-slots/{slotKey}/reset` | 清除作品级替换 |
### 11.3 Handoff 流程
1. 从作品智能体关联页跳转时URL 携带 `handoffToken` 参数。
2. 页面加载时立即调用 handoff 消费接口,将 token 交换为 session。
3. session 存入 Zustand store后续预检和确认都基于该 session。
4. session 过期时:禁用确认按钮,展示"授权已过期,请返回作品重新发起"。
5. 浏览器后退/重复加载:返回同一 session 状态,不扩大动作范围。
### 11.4 错误处理
- handoff token 过期:展示过期提示,只提供"返回作品"按钮。
- 预检失败:展示具体原因(输出不合约、授权失效),禁用确认。
- 替换失败:保持原绑定,展示"事实未改变"和失败原因。
## 12. 已安装智能体与授权agent-installed-library
### 12.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 页签:可安装 | 已安装 │
├─────────────────────────────────────────────────┤
│ 智能体列表 │
│ - 名称、发布者、许可摘要 │
│ - 版本、安装状态、到期时间 │
│ - 可升级标记、下架标记 │
├─────────────────────────────────────────────────┤
│ 操作:安装 | 停用 | 升级 | 固定版本 │
├─────────────────────────────────────────────────┤
│ 异常提示(授权失效、已下架) │
└─────────────────────────────────────────────────┘
```
### 12.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 可安装列表 | `GET /app-api/muse/marketplace/assets?assetType=agent` | 已授权未安装 |
| 已安装列表 | `GET /app-api/muse/agents/installed` | 已安装智能体 |
| 安装 | `POST /app-api/muse/marketplace/assets/{assetId}/install` | 带许可确认 |
| 停用 | `POST /app-api/muse/agents/{agentId}/installed/disable` | 展示影响作品 |
| 升级 | `POST /app-api/muse/agents/{agentId}/installed/upgrade` | 展示变更和影响 |
### 12.3 交互规则
- 安装前:展示许可、版本、风险等级、可读上下文、工具和外发范围。
- 停用确认:二次确认弹窗,展示影响哪些作品槽位。
- 升级确认:展示变更说明和影响作品,已固定绑定不静默变化。
- 授权失效:保留只读摘要,禁用新增绑定,展示处理路径。
## 13. 智能体发布准备agent-publish-prep
### 13.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 待提交版本选择 │
├─────────────────────────────────────────────────┤
│ 商品信息表单 │
│ - 名称、描述、封面/图标 │
│ - 能力目标、许可范围 │
│ - 禁止用途、是否可复制 │
├─────────────────────────────────────────────────┤
│ 权利声明 │
├─────────────────────────────────────────────────┤
│ 安全检查结果 │
│ - Prompt 注入检查 │
│ - 敏感信息检查 │
│ - 兼容槽位摘要 │
├─────────────────────────────────────────────────┤
│ 操作:保存草稿 | 运行检查 | 提交审核 | 撤回 │
└─────────────────────────────────────────────────┘
```
### 13.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 加载状态 | `GET /app-api/muse/agents/{agentId}/publish-status` | 发布准备状态 |
| 保存草稿 | `POST /app-api/muse/marketplace/publish-drafts` | 保存发布材料 |
| 运行检查 | `POST /app-api/muse/marketplace/publish-drafts/{draftId}/checks` | 返回 publishCheckId |
| 提交审核 | `POST /app-api/muse/marketplace/publish-requests` | 消费 publishCheckId |
| 撤回 | `POST /app-api/muse/marketplace/publish-requests/{requestId}/withdraw` | 撤回申请 |
### 13.3 交互规则
- 提交按钮:仅在检查通过且 `publishCheckId` 未过期时可点击。
- 检查失败:展示阻断项(权利不清、安全阻断),禁用提交。
- 提交成功:返回详情页,展示"审核中"状态。
- 重复提交:幂等返回当前申请状态。
## 14. 智能体运行与用量记录agent-records-usage
### 14.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 筛选:时间范围、来源类型、状态、失败类型 │
├─────────────────────────────────────────────────┤
│ 运行记录列表 │
│ - 时间、来源(试用/作品调用) │
│ - 槽位、版本、状态 │
│ - Token 摘要、失败原因 │
├─────────────────────────────────────────────────┤
│ 用量摘要卡片 │
│ - 总调用次数、成功率 │
│ - Token 消耗、待归属 │
├─────────────────────────────────────────────────┤
│ 详情抽屉(点击记录展开) │
│ - 脱敏输入输出摘要 │
│ - 授权快照摘要 │
│ - 失败详情和可行动建议 │
└─────────────────────────────────────────────────┘
```
### 14.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 记录列表 | `GET /app-api/muse/agents/{agentId}/run-records` | 带筛选和分页 |
| 用量摘要 | `GET /app-api/muse/account/usage?dimension=agent` | Token 和调用摘要 |
| 失败原因 | 记录详情中的失败字段 | 分类和建议 |
### 14.3 权限规则
- 使用者:可看自己的作品调用详情。
- 发布者:只能看达到最小样本阈值的脱敏聚合,不能看单次运行详情。
---
# 第二部分:知识库工作台
## 15. 知识库列表knowledge-list
### 15.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 顶部摘要:可用总数 / 我创建 / 已安装 / 全局 │
│ 新建知识库按钮(按权限显示) │
├─────────────────────────────────────────────────┤
│ 页签:我创建的 | 已安装 | 全局授权 │
├─────────────────────────────────────────────────┤
│ 搜索筛选栏:关键词、来源、类型、处理状态、授权 │
├─────────────────────────────────────────────────┤
│ 授权异常提示条 / 处理失败提示条 │
├─────────────────────────────────────────────────┤
│ 知识库卡片列表(分页) │
│ - 名称、来源类型、所有权 │
│ - 版本、处理状态、授权状态 │
│ - 可编辑性、可绑定作品数、最近命中 │
│ - 风险摘要 │
└─────────────────────────────────────────────────┘
```
### 15.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 页面加载 | `GET /app-api/muse/knowledge-bases` | 知识库列表,带筛选和分页 |
| 已安装 | `GET /app-api/muse/installed-knowledge-bases` | 已安装知识库 |
| 授权异常 | 列表响应中的 `authorizationAlerts` 字段 | 异常数量和处理入口 |
### 15.3 交互规则
- 卡片必须让用户一眼区分"我创建 / 已安装 / 全局授权 / 账户可用"。
- 处理状态使用用户语言展示("处理中""可检索""可生成"),不暴露 worker 或 Pipeline。
- 筛选保持:从详情返回时恢复筛选条件和滚动位置。
- 空态:无知识库时展示全局授权摘要和"创建知识库"/"去市场"入口。
- 普通作者:新建入口可按权限折叠,不强制展示。
### 15.4 跳转关系
-`knowledge-create-entry`:新建
-`knowledge-detail-version`:卡片点击
-`knowledge-installed-library`:已安装页签
-`global-knowledge-view`:全局页签
- ← 作品知识来源页:完成绑定后返回
## 16. 新建知识库入口knowledge-create-entry
### 16.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 类型选择:空白创建 | 文件导入 | 模板创建 │
├─────────────────────────────────────────────────┤
│ 用途选择(可选) │
├─────────────────────────────────────────────────┤
│ 模板预览(选择模板时展示) │
├─────────────────────────────────────────────────┤
│ 导入限制说明(文件类型、大小、数量) │
├─────────────────────────────────────────────────┤
│ 创建配额提示 │
├─────────────────────────────────────────────────┤
│ 创建按钮 / 返回列表 │
└─────────────────────────────────────────────────┘
```
### 16.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 页面加载 | `GET /app-api/muse/knowledge-bases/create-options` | 可创建类型、模板、配额 |
| 创建 | `POST /app-api/muse/knowledge-bases` | 创建草稿,带幂等键 |
### 16.3 交互规则
- 页面让用户理解知识库是可复用资料资产,不是作品正式知识,也不是写作前置条件。
- 全局知识库创建入口只显示"去管理员控制台"(普通用户不可见)。
- 创建成功:跳转 `knowledge-material-manager` 进入资料管理。
- 配额不足:禁用创建,展示个人中心权益入口。
## 17. 知识库详情与版本knowledge-detail-version
### 17.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 顶部摘要 │
│ - 名称、来源、所有权、版本 │
│ - 处理状态、授权状态、发布状态 │
│ - 风险摘要 │
├─────────────────────────────────────────────────┤
│ Tab资料概览 | 版本历史 | 绑定作品 | 使用摘要 │
├─────────────────────────────────────────────────┤
│ 资料概览 Tab │
│ - 资料数量、处理状态分布 │
│ - 进入资料管理入口 │
├─────────────────────────────────────────────────┤
│ 版本历史 Tab │
│ - 版本列表、变更摘要、回退限制 │
│ - 影响作品数量 │
├─────────────────────────────────────────────────┤
│ 操作区 │
│ - 编辑资料 | 绑定作品 | 发布准备 │
│ - 复制为个人副本 | 导出 │
│ - 停用 | 重新启用 | 删除(危险操作) │
└─────────────────────────────────────────────────┘
```
### 17.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 详情加载 | `GET /app-api/muse/knowledge-bases/{kbId}` | 基础信息、版本、处理状态 |
| 版本历史 | 详情响应中的版本列表 | 版本和变更摘要 |
| 影响范围 | 详情响应中的绑定摘要 | 绑定作品数、安装影响 |
| 停用 | `POST /app-api/muse/knowledge-bases/{kbId}/disable` | 带 commandId |
| 删除 | `DELETE /app-api/muse/knowledge-bases/{kbId}` | 带 commandId |
| 恢复 | `POST /app-api/muse/knowledge-bases/{kbId}/restore` | 可取消期内 |
| 导出预检 | `POST /app-api/muse/knowledge-bases/{kbId}/export-tasks/precheck` | 返回导出范围 |
| 导出 | `POST /app-api/muse/knowledge-bases/{kbId}/export-tasks` | 创建导出任务 |
### 17.3 交互规则
- 市场安装知识库:默认只读,不展示不可见资料全文。
- 停用/删除:二次确认弹窗,展示影响作品、绑定、运行任务和后续生成。
- 版本回退:展示影响范围,已固定绑定不静默变化。
- 导出:展示导出范围、脱敏要求和下载有效期。
## 18. 资料管理与导入knowledge-material-manager
### 18.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 上传区(拖拽上传) │
│ - 支持格式说明 │
│ - 上传进度条 │
│ - 文件大小限制提示 │
├─────────────────────────────────────────────────┤
│ 手写条目编辑入口 │
├─────────────────────────────────────────────────┤
│ 资料列表 │
│ - 文件名、类型、大小、来源 │
│ - 扫描状态、处理状态 │
│ - 可检索/可生成标记 │
│ - 失败原因(如有) │
├─────────────────────────────────────────────────┤
│ 处理操作栏 │
│ - 运行处理检查 | 发起处理 │
│ - 处理状态入口 │
├─────────────────────────────────────────────────┤
│ 风险提示(隔离资料、扫描阻断) │
└─────────────────────────────────────────────────┘
```
### 18.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 资料列表 | `GET /app-api/muse/knowledge-bases/{kbId}/documents` | 资料和处理状态 |
| 上传 | `POST /app-api/muse/knowledge-bases/{kbId}/documents` | 返回 documentId 和处理任务 |
| 删除资料 | `DELETE /app-api/muse/knowledge-bases/{kbId}/documents/{documentId}` | 带影响确认 |
| 处理状态 | `GET /app-api/muse/knowledge-bases/{kbId}/processing-tasks/{taskId}` | 轮询处理进度 |
| 重建索引 | `POST /app-api/muse/knowledge-bases/{kbId}/reindex` | 返回任务 |
### 18.3 上传交互
1. 拖拽或点击选择文件。
2. 前端校验文件类型和大小MIME 白名单、最大单文件大小)。
3. 上传中展示进度条。
4. 上传完成后资料进入"待扫描"状态。
5. 扫描通过后进入"待处理"状态。
6. 扫描隔离:展示隔离原因,禁用处理和下载。
### 18.4 处理状态轮询
- 资料上传后自动开始轮询处理状态(`refetchInterval: 5000`)。
- 状态流转:待扫描 → 扫描中 → 待处理 → 处理中 → 可检索/可生成。
- 失败时停止轮询,展示失败原因和重试入口。
- 所有状态使用用户语言展示,不暴露 worker 或底层日志。
## 19. 处理状态与失败恢复knowledge-processing-status
### 19.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 任务时间线 │
│ - 排队 → 扫描 → 清洗 → 解析 → 索引 → 完成 │
│ - 当前阶段高亮 │
│ - 失败阶段标红 │
├─────────────────────────────────────────────────┤
│ 资料分组 │
│ - 成功资料数量 │
│ - 失败资料列表 │
│ - 失败原因和可行动建议 │
├─────────────────────────────────────────────────┤
│ 操作区 │
│ - 重试失败任务 │
│ - 取消可取消任务 │
│ - 跳转资料管理 │
└─────────────────────────────────────────────────┘
```
### 19.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 任务列表 | `GET /app-api/muse/knowledge-bases/{kbId}/processing-tasks/{taskId}` | 处理任务状态 |
| 重试 | `POST /app-api/muse/knowledge-bases/{kbId}/reindex` | 重试失败资料 |
| 取消 | `POST /app-api/muse/jobs/{jobId}/cancel` | 取消可取消任务 |
### 19.3 交互规则
- 处理阶段用用户语言表达,不暴露 worker、Pipeline、向量库或底层日志。
- 失败原因要可行动:例如"删除隔离资料""重新上传""稍后重试"。
- 取消处理:展示当前知识库是否仍可用于已有绑定。
- 轮询:处理中状态使用 `refetchInterval: 3000`,终态后停止。
## 20. 已安装知识库与授权knowledge-installed-library
### 20.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 页签:可安装 | 已安装 │
├─────────────────────────────────────────────────┤
│ 知识库列表 │
│ - 名称、发布者、许可摘要 │
│ - 版本、安装状态、到期时间 │
│ - 处理状态、可用于检索/生成 │
│ - 下架标记、可升级标记 │
├─────────────────────────────────────────────────┤
│ 操作:安装 | 停用 | 升级 | 固定版本 │
├─────────────────────────────────────────────────┤
│ 异常提示(授权失效、已下架、处理需重验) │
└─────────────────────────────────────────────────┘
```
### 20.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 可安装 | `GET /app-api/muse/marketplace/assets?assetType=knowledge_base` | 已授权未安装 |
| 已安装 | `GET /app-api/muse/installed-knowledge-bases` | 已安装知识库 |
| 安装 | `POST /app-api/muse/marketplace/assets/{assetId}/install` | 带许可确认 |
| 停用 | `POST /app-api/muse/installed-knowledge-bases/{installId}/disable` | 展示影响 |
| 升级 | 版本升级接口 | 展示变更和影响 |
### 20.3 交互规则
- 安装不自动绑定作品;升级不静默改变已固定版本的作品绑定。
- 安装前展示许可、版本、可读范围、可检索/可生成、外发范围。
- 停用确认:展示影响哪些作品绑定和是否需要降权或解绑。
- 授权失效或下架:保留只读摘要,不允许新增绑定。
## 21. 作品绑定选择与用途knowledge-work-bind-selector
### 21.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 顶部:知识库名 / 版本 / 跳转授权状态 / 过期 │
├─────────────────────────────────────────────────┤
│ 作品选择 │
│ - 可绑定作品列表(有 source_manage 权限) │
│ - 现有绑定状态 │
├─────────────────────────────────────────────────┤
│ 用途开关 │
│ - 检索 | 生成 | 检查 | 导出 | 只读参考 │
│ - 外发范围说明 │
│ - 冲突策略 │
├─────────────────────────────────────────────────┤
│ 预检结果区 │
│ - 许可范围、处理状态 │
│ - 阻断原因 │
│ - 过期时间 │
├─────────────────────────────────────────────────┤
│ 操作:确认绑定 | 解绑 | 调整用途 | 返回 │
└─────────────────────────────────────────────────┘
```
### 21.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 落地 | `POST /app-api/muse/works/{workId}/knowledge-bindings/prechecks` | 消费 handoff token |
| 可绑定作品 | 预检响应中的可绑定作品 | 有 source_manage 的作品 |
| 预检 | `POST /app-api/muse/works/{workId}/knowledge-bindings/prechecks` | 返回 kbBindPrecheckId |
| 绑定 | `POST /app-api/muse/works/{workId}/knowledge-bindings` | 消费 session + precheckId |
| 解绑 | `DELETE /app-api/muse/works/{workId}/knowledge-bindings/{bindingId}` | 展示影响 |
| 调整用途 | `PATCH` 绑定用途接口 | 扩大用途需确认 |
### 21.3 Handoff 流程
1. 从作品知识来源页或知识库详情跳转时URL 携带 `handoffToken`
2. 页面加载时调用预检接口消费 token获取 handoff session。
3. session 存入 Zustand store。
4. 选择作品和用途后执行绑定预检,获取 `kbBindPrecheckId`
5. 确认绑定时原子消费 session 和预检快照。
6. 成功后返回作品知识来源页并刷新绑定。
### 21.4 用途开关交互
- 默认只开启"检索"和"只读参考"。
- 开启"生成"或"导出"需要二次确认,展示外发范围。
- 许可不允许的用途:开关置灰,展示"许可不允许"。
- 扩大用途必须有有效预检,过期时禁用确认。
## 22. 知识库发布准备knowledge-publish-prep
### 22.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 待提交版本 │
├─────────────────────────────────────────────────┤
│ 商品信息表单 │
│ - 名称、描述、封面 │
│ - 资料摘要 │
│ - 许可范围、禁止用途 │
│ - 是否可复制、是否可用于生成 │
├─────────────────────────────────────────────────┤
│ 权利声明 │
├─────────────────────────────────────────────────┤
│ 发布检查结果 │
│ - 处理状态检查 │
│ - 隐私/密钥/版权检查 │
│ - 阻断项列表 │
├─────────────────────────────────────────────────┤
│ 操作:保存草稿 | 运行检查 | 提交审核 | 撤回 │
└─────────────────────────────────────────────────┘
```
### 22.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 加载状态 | `GET /app-api/muse/knowledge-bases/{kbId}/publish-status` | 发布准备状态 |
| 保存草稿 | `POST /app-api/muse/marketplace/publish-drafts` | 保存发布材料 |
| 运行检查 | `POST /app-api/muse/knowledge-bases/{kbId}/publish-prechecks` | 返回 kbPublishCheckId |
| 生成快照 | `POST /app-api/muse/knowledge-bases/{kbId}/publish-snapshots` | 固化版本和来源 |
| 提交审核 | `POST /app-api/muse/knowledge-bases/{kbId}/publish-requests` | 消费检查和快照 |
| 撤回 | `POST /app-api/muse/marketplace/publish-requests/{requestId}/withdraw` | 撤回申请 |
### 22.3 交互规则
- 非自有、全局、局域、市场安装资产默认不可提交。
- 检查过期或资料变化时要求重新检查。
- 提交成功后返回详情,展示"审核中"。
- 页面只做发布准备和提交,不处理市场审核结论。
## 23. 知识库使用与命中记录knowledge-records-usage
### 23.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 筛选:时间范围、作品、用途、状态 │
├─────────────────────────────────────────────────┤
│ 绑定列表 │
│ - 作品名、绑定版本、用途 │
│ - 最近命中数量 │
│ - 授权状态 │
├─────────────────────────────────────────────────┤
│ 命中摘要 │
│ - 命中章节、用途、冲突摘要 │
├─────────────────────────────────────────────────┤
│ 用量摘要 │
│ - 处理用量、生成引用用量 │
│ - 待归属、异常 │
├─────────────────────────────────────────────────┤
│ 失败摘要 │
│ - 失败分类、可行动建议 │
└─────────────────────────────────────────────────┘
```
### 23.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 使用记录 | `GET /app-api/muse/knowledge-bases/{kbId}/usage-records` | 绑定和命中 |
| 用量摘要 | `GET /app-api/muse/account/usage?dimension=knowledge` | 处理和生成用量 |
### 23.3 权限规则
- 使用者:可看自己的作品绑定和命中。
- 发布者:只能看达到最小样本阈值的脱敏聚合(同一时间桶不少于 10 个使用者且不少于 3 个作品来源),未达阈值隐藏或合并维度。
- 不展示他人作品正文、检索片段或生成输入输出。
## 24. 全局知识库视图global-knowledge-view
### 24.1 页面结构
```text
┌─────────────────────────────────────────────────┐
│ 全局知识库列表 │
│ - 名称、版本、授权范围 │
│ - 处理状态、可绑定性 │
│ - 管理员公告 │
├─────────────────────────────────────────────────┤
│ 授权摘要 │
│ - 可检索/可生成/可导出 │
│ - 到期时间、限制 │
├─────────────────────────────────────────────────┤
│ 操作:查看详情 | 按授权绑定到作品 │
│ (管理员维护动作跳回管理员控制台) │
└─────────────────────────────────────────────────┘
```
### 24.2 API 调用
| 时机 | API 路径 | 说明 |
|---|---|---|
| 列表 | `GET /app-api/muse/knowledge-bases?scope=global` | 全局知识库可见列表 |
| 详情 | `GET /app-api/muse/knowledge-bases/{kbId}` | 全局知识库详情 |
### 24.3 交互规则
- 普通用户只读;创建、导入、维护、停用和授权策略回到管理员控制台。
- 按授权绑定:跳转 `knowledge-work-bind-selector`,走标准绑定流程。
- 授权不可用时:展示原因,禁用绑定入口。
---
# 第三部分:跨空间跳转与市场关系
## 25. 跨空间跳转设计
### 25.1 智能体工作台跳转矩阵
| 来源 | 目标 | 触发 | handoff 内容 | 完成后 |
|---|---|---|---|---|
| 作品智能体关联页 | agent-work-slot-selector | 选择槽位替换 | 作品、槽位、当前智能体、授权 | 返回作品刷新槽位 |
| 写作台候选面板 | agent-detail-version | 查看智能体详情 | 只读返回点 | 返回写作台 |
| agent-work-slot-selector | agent-test-bench | 试用候选 | 候选智能体、槽位合同 | 返回候选选择 |
| agent-detail-version | agent-publish-prep | 发布准备 | 版本、所有者 | 返回详情 |
| 市场获取完成 | agent-installed-library | 安装 | 资产、许可、版本 | 安装后回市场或作品 |
### 25.2 知识库工作台跳转矩阵
| 来源 | 目标 | 触发 | handoff 内容 | 完成后 |
|---|---|---|---|---|
| 作品知识来源页 | knowledge-work-bind-selector | 绑定知识库 | 作品、当前来源、用途 | 返回作品刷新绑定 |
| 写作台候选面板 | knowledge-detail-version | 查看来源详情 | 只读返回点 | 返回写作台 |
| knowledge-detail-version | knowledge-work-bind-selector | 绑定到作品 | 知识库、版本、授权 | 返回详情或作品 |
| knowledge-detail-version | knowledge-publish-prep | 发布准备 | 版本、所有者 | 返回详情 |
| 市场获取完成 | knowledge-installed-library | 安装 | 资产、许可、版本 | 安装后回市场或作品 |
### 25.3 前端 Handoff 实现
```typescript
// Zustand store 定义
interface HandoffStore {
// 当前 handoff session
session: HandoffSession | null;
// 预检快照
precheckId: string | null;
precheckExpiry: number | null;
// 返回点
returnUrl: string | null;
// 动作
consumeToken: (token: string) => Promise<void>;
clearSession: () => void;
setPrecheckId: (id: string, expiry: number) => void;
isSessionValid: () => boolean;
isPrecheckValid: () => boolean;
}
```
规则:
- handoff token 从 URL searchParams 获取,消费后从 URL 移除。
- session 过期检查:每次操作前校验 `session.expiresAt > Date.now()`
- 页面卸载时不清除 session支持浏览器后退恢复
- 并发打开同一 handoff返回同一 session 状态,不扩大范围。
## 26. 市场安装后的槽位替换流程
从市场安装智能体后,用户需要手动关联到作品槽位:
1. 市场安装完成 → 跳转 `agent-installed-library`
2. 用户在已安装列表看到新智能体。
3. 用户进入作品工作台 → 智能体关联页 → 选择槽位。
4. 系统生成 handoff token → 跳转 `agent-work-slot-selector`
5. 消费 token → 展示候选(包含新安装的智能体)。
6. 预检 → 确认替换 → 返回作品。
关键约束:安装不等于自动关联作品,必须经过槽位预检和用户确认。
---
## 27. 关联阅读
| 文档 | 关联内容 |
|---|---|
| `产品-02D-智能体工作台功能规格.md` | 智能体工作台完整产品定义、页面规格、操作规格 |
| `产品-02E-知识库工作台功能规格.md` | 知识库工作台完整产品定义、页面规格、操作规格 |
| `后端-05-统一API契约-v1.md` | API 路径、请求响应格式、错误码、幂等规则 |
| `架构-01-系统全貌与边界上下文.md` | BC 边界、权威归属、跨上下文协作 |
| `架构-02-核心数据结构与双轨模型.md` | 双轨模型、Shadow/Canonical 边界 |
| `前端-01-工程结构与核心依赖.md` | 工程结构、路由约定、状态分层、技术栈 |
| `前端-02-写作台与候选交互.md` | 作品工作台交互,候选接受/合并流程 |
| `前端-03-元引擎与动态表单.md` | MetaSchema 投影消费、动态表单渲染 |
| `前端-04-市场与个人中心交互.md` | 市场购买/安装流程、个人中心跳转 |