nex_docus/docs/manual/user-guide.md

323 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# NEX Docus 使用手册
> 面向**使用者与项目管理员**的功能说明(v1.0.0)。
> 部署/运维请看 `docs/deploy/README.md`,本地跑起来请看 `docs/quickstart.md`。
## 目录
- [1. 认识 NEX Docus](#1-认识-nex-docus)
- [2. 登录与账号](#2-登录与账号)
- [3. 界面总览](#3-界面总览)
- [4. 项目空间](#4-项目空间)
- [5. 文档浏览页](#5-文档浏览页)
- [6. 编辑模式(编辑 + 文档索引)](#6-编辑模式编辑--文档索引)
- [7. 成员、角色与分享](#7-成员角色与分享)
- [8. Git 仓库同步](#8-git-仓库同步)
- [9. 知识库对话(AI 问答)](#9-知识库对话ai-问答)
- [10. 个人桌面、通知与个人设置](#10-个人桌面通知与个人设置)
- [11. 系统管理(管理员)](#11-系统管理管理员)
- [12. 快捷键与交互约定](#12-快捷键与交互约定)
- [13. 常见问题](#13-常见问题)
---
## 1. 认识 NEX Docus
NEX Docus 是一个**团队文档管理平台**,把三件事放在一起:
1. **文档管理**:以「项目」为单位组织 Markdown / PDF / 图片等文件,支持目录树、在线编辑、版本化的 Git 同步。
2. **知识检索**:文档可被切块并向量化,配合自研的**全文检索 + 向量检索**双引擎。
3. **AI 问答**:在知识库对话中基于你自己的文档回答,并给出**可点击的引用来源**。
三类典型角色:
| 角色 | 主要动作 | 常用入口 |
| --- | --- | --- |
| 读者 | 浏览、搜索、问答 | 项目空间 → 文档浏览页 / 知识库对话 |
| 编辑者 | 新建、编辑、整理目录、分享 | 编辑模式 |
| 管理员 | 用户/角色/权限、模型配置、系统日志 | 系统管理 |
---
## 2. 登录与账号
访问前端地址(默认开发 `http://localhost:5173`,Docker `http://<服务器>:8080`),未登录会自动跳转 `/login`。
- 输入用户名 + 密码登录,令牌默认有效期 **24 小时**,过期后需重新登录。
- 首次部署的默认管理员账号取决于部署方式(**本地开发**与 **Docker** 默认密码不同,详见 `docs/deploy/changelog.md` §5)。
- **登录后请立即修改密码**:右上角头像 → 个人设置 → 修改密码。
- 被管理员重置密码后,新密码为系统默认密码(同样在个人设置中改为自己的密码)。
登录失败排查:提示「用户名或密码错误」时先确认部署方式对应的默认密码;提示网络错误则先确认后端 `/health` 是否可访问(`curl http://<后端地址>:8000/health`)。
---
## 3. 界面总览
登录后左侧为**功能导航**,内容由服务端下发的菜单权限决定,常见结构:
| 菜单 | 路径 | 用途 |
| --- | --- | --- |
| 个人桌面 | `/desktop` | 个人工作台:常用项目、最近文档、我的动态 |
| 管理面板 | `/dashboard` | 管理员统计视图(用户、项目、文档、活动) |
| 项目空间 → 我的项目 | `/projects/my` | 我拥有/参与的项目 |
| 项目空间 → 分享给我的 | `/projects/share` | 别人分享给我的项目 |
| 知识库空间 | `/chat` | AI 问答会话列表与对话界面 |
| 系统管理 | `/system/*` | 权限管理 / 用户管理 / 角色管理 / 模型配置 / 系统日志 |
顶部栏右侧提供:**主题切换(浅色/深色)**、**通知入口**、**用户菜单**(个人设置、退出登录)。
> 菜单可见性由「系统管理 → 权限管理」控制。看不到某个入口通常是没有该菜单权限,而不是功能坏了。
> 旧版本的知识库路径 `/knowledge`、`/knowledge/my` 会自动重定向到 `/chat`。
---
## 4. 项目空间
**项目**是文档的容器,一个项目对应磁盘上的一份文件目录。
### 4.1 创建项目
「我的项目」→ 右上角「创建项目」→ 填写项目名称、描述。创建者自动成为**所有者**。
### 4.2 项目卡片操作
每个项目卡片右上角提供:
| 图标 | 名称 | 说明 |
| --- | --- | --- |
| ✏️ / 卡片本身 | 打开 | 进入文档浏览页 |
| ⚙️ | 项目设置 | 修改名称、描述、是否公开项目、是否允许公开分享 |
| 🗄 | 知识库向量化 | 打开向量化弹窗,见 §9.1 |
| 👥 | 成员管理 | 添加/移除成员、调整角色、转移所有权 |
| 🗑 | 删除项目 | 仅所有者/管理员,操作不可逆 |
卡片下方展示**文档数量**、**最后更新时间**、**参与人数量**。
### 4.3 项目可见性
- **私有项目**:仅所有者与成员可见。
- **公开项目**:全站登录用户可见(列表只读,编辑仍需 editor/admin 角色)。
- **项目公开分享**:开启后才能生成对外分享链接(见 §7.3)。
---
## 5. 文档浏览页
路径:`/projects/<项目ID>/docs`。这是**阅读与整理**的主界面,左侧目录树 + 右侧渲染区。
### 5.1 目录树
- **点击文件**:右侧渲染 Markdown / PDF / 图片 / 代码等。
- **右键节点**(或节点右侧的更多按钮):新建文件、新建文件夹、重命名、移动、删除。
- **拖拽**:把文件或文件夹拖到目标文件夹即可移动,拖到根目录即移到顶层。
- 目录树支持折叠全部/展开全部,并展示非文档类文件(可通过筛选开关隐藏)。
### 5.2 页内操作
顶部面包屑右侧:
| 入口 | 说明 |
| --- | --- |
| 搜索文档内容 | 在项目内按关键词搜索文档正文,结果点击后直接跳到目标文件并高亮关键词 |
| 编辑 | 进入编辑模式(§6),并带上当前选中的文件 |
| 分享 | 生成该文件或项目的分享链接,可设置访问密码(§7.3) |
| 刷新 | 重新拉取目录树(外部改动、Git 同步后使用) |
| Git Pull / Git Push | 与远端仓库同步,可选择**同步范围**(仅某个目录);见 §8 |
---
## 6. 编辑模式(编辑 + 文档索引)
路径:`/projects/<项目ID>/editor`。从文档浏览页点「编辑」进入,会保留当前选中的文件。
### 6.1 三种视图模式
编辑器工具栏**右侧**的分段控件在三种模式间切换,与「全屏」按钮同排,**默认只打开编辑区**:
| 模式 | 图标 | 内容 | 适用场景 |
| --- | --- | --- | --- |
| **编辑**(默认) | 笔 | 只有 Markdown 源码编辑区,占满整个内容宽度 | 专注写作 |
| **分栏** | 双栏 | 左编辑 + 右实时预览 | 检查排版、表格、图片 |
| **预览** | 眼睛 | 只渲染结果 | 交付前自查 |
- 三个按钮只显示图标,鼠标悬停显示「编辑 · 仅编辑区」等说明文字,与同行其他图标保持一致。
- 选择会被记住(写入浏览器本地存储),下次进入编辑模式沿用;不再强制并排打开预览。
- 只有在**分栏**模式下才会出现「同步滚动」开关;纯编辑 / 纯预览时没有左右对照,该开关自动隐藏。
### 6.2 文档索引(Table of Contents)
编辑区右侧悬浮「文档索引」面板列出当前文档的标题层级:
- 目录来自 **Markdown 源码解析**,因此**在纯编辑模式下同样可用**,不依赖预览区是否打开。
- 点击条目:编辑器滚动到对应标题并把光标定位过去(编辑模式下不会跳走页面)。
- 文档没有标题时面板显示为空;标题层级过深时按层级缩进。
### 6.3 保存、重置与未保存保护
- **保存**:把编辑区内容写回服务器文件。快捷键 `Ctrl/Cmd + S`(弹窗打开或正在保存时不会触发)。
- **未保存标记**:内容与服务端版本不一致时,内容区右上角显示「未保存」标记。
- **退出保护**:点「退出编辑」时,只有在**确有未保存改动**才弹确认框(「放弃修改并退出 / 继续编辑」);关闭浏览器标签或刷新页面时,浏览器也会给出挽留提示。
- **重置**:放弃本地改动,重新加载服务器上最后一次保存的版本(同样需要确认)。
### 6.4 编辑区的其他能力
- **上传文件**:把本地文件(含图片)上传到当前目录,图片自动写入相对路径引用。
- **插入链接**:支持**页内链接**(选择本文标题生成锚点)与**页间链接**(选择项目内其他文件)。
- **新建/重命名/移动/删除**:与浏览页一致的目录树右键菜单。
- **大文档模式**:超大 Markdown 自动切换为轻量编辑器(此时不提供分栏/预览),避免卡顿。
- **全屏**:点工具栏右侧的全屏图标把编辑器铺满整个窗口,左侧项目树的操作按钮不会浮现在编辑器上;再点一次该图标或按 `Esc` 退出全屏。
---
## 7. 成员、角色与分享
### 7.1 项目角色
| 角色 | 能做什么 |
| --- | --- |
| 所有者 owner | 全部权限,含删除项目、转移所有权 |
| 管理员 admin | 管理成员与全部文档,可转让所有权以外的操作 |
| 编辑者 editor | 新建/编辑/删除文档、上传、Git 同步 |
| 查看者 viewer | 只读浏览、搜索、参与 AI 问答 |
### 7.2 管理成员
项目卡片 → 成员管理 → 按用户名搜索添加,并为成员指定角色;也可以在此**转移项目所有权**。移除成员不会删除其创建的文档。
### 7.3 分享链接
- **项目分享**:项目设置里开启「项目公开分享」后生成链接,形如 `/share/project/<分享码>`。
- **文件分享**:文档浏览页对单个文件点「分享」,形如 `/share/file/<分享码>`。
- 可设置**访问密码**,访问时需先输入密码。
- 分享页**只读**,不提供编辑入口;关闭「公开分享」会让既有链接失效。
> 安全提示:分享链接无需登录即可访问,请勿把含敏感信息的文档设为公开分享;管理员应定期清理不再使用的分享。
---
## 8. Git 仓库同步
用于把项目目录和一个 Git 仓库对接(适合团队用 IDE/命令行协作,同时保留 Web 编辑)。
**配置**:项目卡片 → 成员管理旁的 Git 仓库管理入口 → 填写仓库别名、Git 仓库地址、分支、用户名、Token/密码。
**使用**:文档浏览页顶部「Git Pull / Git Push」,两者都可**选择同步范围**(只同步某个子目录),避免大仓一次性同步。
前提与注意:
- 服务端所在主机必须安装 `git` 命令(后端通过命令行调用 git,不是内置实现)。
- 私有仓库请优先使用 **Access Token** 而不是账号密码。
- 冲突时同步会失败并返回 git 的原始报错,请在本地仓库解决冲突后重试。
- 同步完成后点「刷新」重载目录树。
---
## 9. 知识库对话(AI 问答)
路径:`/chat`(新建会话 `/chat/new`)。左侧会话列表,右侧对话区。
### 9.1 先决条件:模型配置 + 向量化
1. 管理员在「系统管理 → 模型配置」中启用至少一个 **chat** 模型(回答用)和一个 **embedding** 模型(向量化用)。
2. 项目卡片 → 「知识库向量化」→ 选择**增量向量化**(只处理新增/变更文档)或**全量向量化**(重建索引)。弹窗展示最近任务的状态、进度与已向量化数量。
> 若弹窗提示「尚未配置可用的向量模型」,说明 embedding 模型未启用,或向量维度与模型实际输出不一致(`ZVEC_EMBEDDING_DIM`)。
### 9.2 提问
- 新建对话时**选择要检索的项目/知识库**,可以选择多个。
- 答案以流式返回,过程中可点**停止**中断生成。
- 回答下方展示**引用来源**(命中的文档与片段),点击可跳转到原文档位置。
- 界面给出**耗时**等运行信息,便于判断是检索慢还是模型慢。
### 9.3 检索行为
问答走**双引擎**:关键词(全文)检索 + 向量(语义)检索,合并后交给模型。因此:
- 精确术语/代码标识符命中靠全文检索;换词、口语化提问靠向量检索。
- **文档改了但答案还是旧的** → 通常是忘了做增量向量化。
- 没向量化过的项目只能靠全文检索,质量会明显下降。
---
## 10. 个人桌面、通知与个人设置
- **个人桌面** `/desktop`:个人工作台,快速进入常用项目与最近编辑的文档。
- **通知中心** `/notifications`:查看项目邀请、文档变更、向量化/同步任务结果等站内通知,支持标记已读。
### 10.1 个人设置(`/profile`)
| 标签页 | 内容 |
| --- | --- |
| 个人资料 | 修改昵称、邮箱、头像(图片不超过 1MB) |
| 修改密码 | 校验原密码后设置新密码,修改后需重新登录 |
| MCP 接入 | 查看/复制本人的 `X-Bot-Id` 与 `X-Bot-Secret`,可**重新生成** Secret |
> **重新生成 MCP Secret 会立即让旧的 Secret 失效**,用旧凭证配置的 MCP 客户端(如 IDE、机器人)需要同步更新。MCP 的接入方式与可用工具见 `docs/sdd/integrations/mcp.md`。
---
## 11. 系统管理(管理员)
| 页面 | 路径 | 作用 |
| --- | --- | --- |
| 权限管理 | `/system/permissions` | 维护菜单与权限点,并给角色授权;决定用户能看到哪些入口 |
| 用户管理 | `/system/users` | 新增用户、启停用、重置密码、分配角色 |
| 角色管理 | `/system/roles` | 新增角色、改名与描述、绑定权限 |
| 模型配置 | `/system/model-configs` | 维护 LLM 服务:类型分 **chat / embedding**,配置名称、服务地址、API Key、模型名、维度,并设为默认/启用 |
| 系统日志 | `/system/logs` | 查看操作与系统日志,用于排查问题 |
模型配置注意:
- **embedding 模型一旦用于向量化,维度就不能随意改**;换模型需同时更新 `ZVEC_EMBEDDING_DIM` 并做**全量向量化**。
- 使用自签名 HTTPS 的私有模型服务时,需要 `DISABLE_SSL_VERIFY=true`(仅该场景,生产保持 `false`)。
- API Key 属于敏感信息,只有管理员可维护,界面上会做掩码处理。
---
## 12. 快捷键与交互约定
| 场景 | 操作 |
| --- | --- |
| 保存当前文档 | `Ctrl/Cmd + S`(编辑模式) |
| 打开文件/目录操作菜单 | 目录树节点**右键** |
| 移动文件/目录 | 目录树中**拖拽**到目标文件夹 |
| 返回上一级视图 | 面包屑点击,或浏览器后退 |
| 深浅色切换 | 顶部栏主题开关,选择会被记住 |
统一交互约定:
- **危险操作**(删除项目/文件/成员、Git 推送等)一律先弹确认框,确认后才执行。
- **操作结果**用轻提示反馈(不打断操作);表单错误就近显示在字段下方。
- 列表/树加载时显示骨架或加载态;空数据统一显示空状态占位与下一步引导。
- 只读角色(viewer)不会看到编辑、删除类按钮。
---
## 13. 常见问题
**Q:打开项目只有阅读区,找不到编辑按钮?**
A:当前账号在该项目中是「查看者」。让所有者/管理员在成员管理里把角色提升为「编辑者」或「管理员」。
**Q:编辑模式右边没有预览,是不是坏了?**
A:不是。v1.0.0 起**默认只打开编辑区**,点编辑器工具栏右侧的分段控件切到「分栏」或「预览」即可;选择会被记住。
**Q:文档索引(TOC)里是空的?**
A:目录来自 Markdown 标题(`#`/`##`…)。文档没有标题,或超大文档走了大文档模式时,索引可能为空或受限。
**Q:AI 问答说「文档里没有相关内容」,但文档确实存在?**
A:按顺序检查:① 会话是否选中了正确的项目;② 该项目是否做过(增量)向量化;③ 模型配置里 chat / embedding 模型是否都已启用。
**Q:向量化一直不动或失败?**
A:先看弹窗里最近任务的报错,再看「系统日志」和后端日志。常见原因是 embedding 服务不可达、维度不匹配,或 Redis 拒绝写入(`MISCONF`,见 `docs/quickstart.md` FAQ)。
**Q:Git 同步报错 `git: command not found`?**
A:后端主机未安装 git。容器部署时需要在镜像内提供 git(`docs/deploy/README.md` 有说明)。
**Q:分享链接打不开?**
A:确认项目设置里「项目公开分享」仍为开启状态;文件分享需对应文件仍存在;有密码的要先输密码。
**Q:左侧菜单少了一块?**
A:菜单由权限控制,见「系统管理 → 权限管理」中该角色的菜单授权。