@fgbg/mdocs 0.8.10 → 0.8.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,25 @@
1
1
  ---
2
2
  id: changelog
3
3
  name: "更新日志"
4
- description: "- **上手助手(AI)**:左下角浮动入口;设置页「AI」配置个人 DeepSeek Key;按访客落盘会话(`tenant/<id>/agent/session`),多轮续聊;回答引用手册页面链接;思考中三点动画;跟随滚动仅在贴底时生效 - **手册**:新增 [上手助手(AI)](./usage/onboarding-ai.md)"
4
+ description: "- **文档移动**:侧栏可拖拽 Markdown 文档到文件夹 / 同目录文章旁 / 域根;仅创建者后端成功;`POST /api/documents/:id/move` - **上手助手入口**:悬浮按钮可按住拖动定位,位置写入本地;支持重置;面板随入口侧移 - **空文档白屏**:AI/空 markdown 创建的 Lexical `children: []` 会在打开时补空段落,避免编辑器"
5
5
  keywords: []
6
6
  source: changelog.md
7
7
  ---
8
8
 
9
9
  # 更新日志
10
10
 
11
+ ## v0.8.12
12
+
13
+ - **文档移动**:侧栏可拖拽 Markdown 文档到文件夹 / 同目录文章旁 / 域根;仅创建者后端成功;`POST /api/documents/:id/move`
14
+ - **上手助手入口**:悬浮按钮可按住拖动定位,位置写入本地;支持重置;面板随入口侧移
15
+ - **空文档白屏**:AI/空 markdown 创建的 Lexical `children: []` 会在打开时补空段落,避免编辑器整页崩溃
16
+ - **Agent**:建文/建文件夹/移动后刷新侧栏树;新增 `move_document` 工具
17
+
18
+ ## v0.8.11
19
+
20
+ - **上手助手会话**:浮层支持「+」新建会话、历史列表切换并回放;标题取自首条用户消息
21
+ - **手册**:[上手助手(AI)](./usage/onboarding-ai.md) 同步会话管理说明
22
+
11
23
  ## v0.8.10
12
24
 
13
25
  - **上手助手(AI)**:左下角浮动入口;设置页「AI」配置个人 DeepSeek Key;按访客落盘会话(`tenant/<id>/agent/session`),多轮续聊;回答引用手册页面链接;思考中三点动画;跟随滚动仅在贴底时生效
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  id: core-concepts-no-account
3
3
  name: "无账户身份识别"
4
- description: "不做用户系统,不设注册流程。每个访问者通过浏览器获得一个身份令牌,以此识别身份。目标是零上手成本——打开就能用。"
4
+ description: "早期不做传统用户系统(邮箱注册 / 账号密码那一套),每个访问者通过浏览器获得身份令牌即可开写。目标是零上手成本——打开就能用。"
5
5
  keywords: []
6
6
  source: core-concepts/no-account.md
7
7
  ---
@@ -10,16 +10,18 @@ source: core-concepts/no-account.md
10
10
 
11
11
  ## 设计意图
12
12
 
13
- 不做用户系统,不设注册流程。每个访问者通过浏览器获得一个身份令牌,以此识别身份。目标是零上手成本——打开就能用。
13
+ 早期不做传统用户系统(邮箱注册 / 账号密码那一套),每个访问者通过浏览器获得身份令牌即可开写。目标是零上手成本——打开就能用。
14
+
15
+ 后来为解决「换设备 / 清 Cookie 认不出人」,在**仍是访客模型**的前提下,增加了可选的登录密码;恢复码则是更早的自助找回手段,现已边缘化。详见 [恢复码与身份找回](../usage/recovery-code.md)。
14
16
 
15
17
  ## 身份模型
16
18
 
17
19
  ```
18
- 访客注册
20
+ 访客注册(输入昵称,可选设密码)
19
21
 
20
22
  ├─ 服务器生成 UUID(visitor_id)
21
23
  ├─ 生成高熵令牌(visitor_token,32 字节随机数 → base64url)
22
- ├─ 服务器只存储 SHA-256(令牌)
24
+ ├─ 服务器只存储 SHA-256(令牌)(以及可选的密码哈希)
23
25
  └─ 通过 HttpOnly Cookie 将原始令牌下发给浏览器
24
26
 
25
27
  后续请求
@@ -27,23 +29,31 @@ source: core-concepts/no-account.md
27
29
  └─ 服务器从 Cookie 读取令牌,验证 SHA-256 匹配 → 识别访客
28
30
  ```
29
31
 
30
- 前端**不存储任何认证令牌**,所有认证凭据由 HttpOnly Cookie 管理,XSS 无法窃取。
32
+ 前端**不存储任何认证令牌**,日常鉴权凭据由 HttpOnly Cookie 管理,XSS 无法直接读到令牌。
31
33
 
32
34
  ### Cookie 有效期
33
35
 
34
- 身份 Cookie 默认有效期为 **10 年**,实践中等同于"永久"登录。只要不主动清除浏览器 Cookie 数据,登录状态会一直保留。
36
+ 身份 Cookie 默认有效期为 **10 年**,实践中等同于「长期保持登录」。只要不主动清除浏览器站点数据,同一浏览器上会一直认得你。
35
37
 
36
- > 💡 即使服务端重启或重新部署,已有的登录状态依然有效。
38
+ > 💡 即使服务端重启或重新部署,已有 Cookie 在未过期前依然有效。
37
39
 
38
40
  ## 为什么这样做
39
41
 
40
- - **无密码,无泄露风险**:服务器从不存储原始令牌,数据库被拖也无法冒充访客
41
- - **无需邮箱**:不要求用户提供任何个人信息
42
- - **浏览器即身份**:换设备 = 新访客(但提供了访客迁移机制)
42
+ - **低门槛**:不必先走邮箱验证;起个昵称就能写
43
+ - **令牌不落前端脚本可读存储**:日常身份靠 HttpOnly Cookie
44
+ - **跨端续身份(后来补上)**:设密码后可用「用户名 + 密码」在其他设备登录;未设密码则基本绑在当前浏览器
45
+
46
+ ## 跨设备 / Cookie 丢失时
47
+
48
+ 推荐顺序:
43
49
 
44
- ## 访客迁移
50
+ 1. **用户名 + 密码登录**(设置页可管理登录密码)
51
+ 2. **恢复码**(早期方案,登录弹窗次要入口;见 [恢复码](../usage/recovery-code.md))
52
+ 3. 管理员 **访客迁移**(运维兜底)
45
53
 
46
- 如果浏览器缓存被清除,用户会获得一个新访客 ID。服务部署者可以通过 CLI 命令, 登录部署服务器将旧身份合并到新身份:
54
+ ### 访客迁移(管理员)
55
+
56
+ 若用户既无密码又无可用恢复码,部署方可在服务器上将旧身份合并到新身份:
47
57
 
48
58
  ```
49
59
  # 推荐:按访客名称迁移(更简单,名称可在侧边栏看到)
@@ -65,21 +75,10 @@ pnpm mdocs visitor list # 默认只看启用的访客
65
75
  pnpm mdocs visitor list --all # 看全部(含已禁用的)
66
76
  ```
67
77
 
68
- ## 自助恢复
69
-
70
- 除了管理员执行的访客迁移,用户也可以通过**恢复码**自助找回身份:
71
-
72
- 1. 注册时保存系统生成的恢复码(格式如 `ABCD-EFGH-IJKL-MNOP`)
73
- 2. Cookie 丢失后,在注册页点击「已有恢复码?点击找回」
74
- 3. 输入恢复码,系统验证后自动下发新的身份 Cookie
75
-
76
- 恢复码是一次性的,使用后立即失效。可以在设置页随时生成新的恢复码。
77
-
78
- 详见[恢复码与身份找回](../usage/recovery-code.md)。
79
-
80
78
  ## 设计取舍
81
79
 
82
- - **放弃「用户」概念**换来极低的准入门槛,代价是没有密码找回——但提供了**恢复码**自助找回机制和**访客迁移**管理员工具,满足小团队绝大多数场景
83
- - **HttpOnly Cookie 认证**:前端不存储任何令牌,XSS 无法窃取,服务端重启不丢登录状态
80
+ - **放弃重型「用户体系」**换低准入;跨端能力用「可选密码」补齐,而不是一上来就上完整账号平台
81
+ - **HttpOnly Cookie 日常鉴权**:服务端重启不轻易丢当前浏览器会话
84
82
  - **可以匿名浏览**:不注册也能看到公开域的公开文档
83
+ - **恢复码**:服务早期 Cookie-only 身份的自助找回;密码普及后降为兼容能力
85
84
 
@@ -15,6 +15,12 @@ source: index.md
15
15
  - [安装与启动](./getting-started/installation.md)
16
16
  - [第一个文档](./getting-started/first-kb.md)
17
17
 
18
+ ## AI 与 Agent
19
+
20
+ - [上手助手(AI)](./usage/onboarding-ai.md)——产品向导,答疑不代写
21
+ - [Agent 开发闭环](./usage/agent-dev-loop.md)——CLI + Skills 接入 Cursor / Claude
22
+ - [CLI Token](./usage/cli-token.md)——命令行与 Agent 身份令牌
23
+
18
24
  ## 核心设计
19
25
 
20
26
  - [域隔离](./core-concepts/domain.md)——团队与个人的逻辑边界
@@ -24,7 +30,6 @@ source: index.md
24
30
  ## 使用指南
25
31
 
26
32
  - [设置页面概览](./usage/settings.md)——集中配置中心
27
- - [上手助手(AI)](./usage/onboarding-ai.md)——产品向导,答疑不代写
28
33
  - [编辑体验](./usage/markdown.md)——富文本编辑,Markdown 存储
29
34
  - [流程图生成](./usage/flowchart.md)——拖拽绘制,嵌入文档
30
35
  - [草稿与同步](./usage/drafts.md)——本地优先,按需发布
@@ -2,7 +2,7 @@
2
2
  {
3
3
  "id": "changelog",
4
4
  "name": "更新日志",
5
- "description": "- **上手助手(AI)**:左下角浮动入口;设置页「AI」配置个人 DeepSeek Key;按访客落盘会话(`tenant/<id>/agent/session`),多轮续聊;回答引用手册页面链接;思考中三点动画;跟随滚动仅在贴底时生效 - **手册**:新增 [上手助手(AI)](./usage/onboarding-ai.md)",
5
+ "description": "- **文档移动**:侧栏可拖拽 Markdown 文档到文件夹 / 同目录文章旁 / 域根;仅创建者后端成功;`POST /api/documents/:id/move` - **上手助手入口**:悬浮按钮可按住拖动定位,位置写入本地;支持重置;面板随入口侧移 - **空文档白屏**:AI/空 markdown 创建的 Lexical `children: []` 会在打开时补空段落,避免编辑器",
6
6
  "keywords": [],
7
7
  "source": "changelog.md"
8
8
  },
@@ -30,7 +30,7 @@
30
30
  {
31
31
  "id": "core-concepts-no-account",
32
32
  "name": "无账户身份识别",
33
- "description": "不做用户系统,不设注册流程。每个访问者通过浏览器获得一个身份令牌,以此识别身份。目标是零上手成本——打开就能用。",
33
+ "description": "早期不做传统用户系统(邮箱注册 / 账号密码那一套),每个访问者通过浏览器获得身份令牌即可开写。目标是零上手成本——打开就能用。",
34
34
  "keywords": [],
35
35
  "source": "core-concepts/no-account.md"
36
36
  },
@@ -83,6 +83,13 @@
83
83
  "keywords": [],
84
84
  "source": "index.md"
85
85
  },
86
+ {
87
+ "id": "usage-agent-dev-loop",
88
+ "name": "Agent 开发闭环",
89
+ "description": "mdocs 不只给人在浏览器里写文档,也让 **外部 AI Agent**(Cursor、Claude Code、Codex 等)把知识库嵌进日常工作。",
90
+ "keywords": [],
91
+ "source": "usage/agent-dev-loop.md"
92
+ },
86
93
  {
87
94
  "id": "usage-bookmarks",
88
95
  "name": "收藏功能",
@@ -93,7 +100,7 @@
93
100
  {
94
101
  "id": "usage-cli-token",
95
102
  "name": "CLI Token",
96
- "description": "CLI Token 是给命令行工具和 AI Agent(如 Claude Code)使用的身份令牌,继承你在 mdocs 中的所有权限。Token 与你的访客身份绑定,创建后可以通过 HTTP API 读写文档。",
103
+ "description": "CLI Token 是给命令行工具和 AI Agent(如 Claude Code、Cursor)使用的身份令牌,继承你在 mdocs 中的所有权限。Token 与你的访客身份绑定,创建后可以通过 HTTP API 读写文档。",
97
104
  "keywords": [],
98
105
  "source": "usage/cli-token.md"
99
106
  },
@@ -156,7 +163,7 @@
156
163
  {
157
164
  "id": "usage-recovery-code",
158
165
  "name": "恢复码与身份找回",
159
- "description": "恢复码是一串由字母和数字组成的特殊代码,格式如:",
166
+ "description": "> **现状**:跨设备找回身份,优先用 **用户名 + 密码**。恢复码是早期「纯 Cookie 身份」时代的自助方案,现仍可用,但属于兼容能力,新用户不必依赖它。",
160
167
  "keywords": [],
161
168
  "source": "usage/recovery-code.md"
162
169
  },
@@ -170,7 +177,7 @@
170
177
  {
171
178
  "id": "usage-settings",
172
179
  "name": "设置页面",
173
- "description": "设置页面是 mdocs 的集中配置中心,提供访客身份、域管理、内容管理等各种系统级功能。",
180
+ "description": "设置页面是 mdocs 的集中配置中心:身份与密码、收藏与文章、域与成员模板、上手助手、草稿同步等都在这里。",
174
181
  "keywords": [],
175
182
  "source": "usage/settings.md"
176
183
  },
@@ -0,0 +1,179 @@
1
+ ---
2
+ id: usage-agent-dev-loop
3
+ name: "Agent 开发闭环"
4
+ description: "mdocs 不只给人在浏览器里写文档,也让 **外部 AI Agent**(Cursor、Claude Code、Codex 等)把知识库嵌进日常工作。"
5
+ keywords: []
6
+ source: usage/agent-dev-loop.md
7
+ ---
8
+
9
+ # Agent 开发闭环
10
+
11
+ mdocs 不只给人在浏览器里写文档,也让 **外部 AI Agent**(Cursor、Claude Code、Codex 等)把知识库嵌进日常工作。
12
+
13
+ 这和产品内的 [上手助手(AI)](./onboarding-ai.md) 是两条路:
14
+
15
+ | | 上手助手 | Agent 开发闭环 |
16
+ |--|----------|----------------|
17
+ | 在哪 | mdocs Web 浮层 | 你的 IDE / Agent 终端 |
18
+ | 干什么 | 答「怎么用 mdocs」 | 读知识库、按契约开发、按需写回文档 |
19
+ | 会不会改正文 | **不会**(不代写) | 会按你的指令经 CLI 读写文档 |
20
+
21
+ ---
22
+
23
+ ## 一次性准备
24
+
25
+ 1. 在 mdocs **设置 → 通用** 创建 [CLI Token](./cli-token.md),并:
26
+
27
+ ```bash
28
+ export MDOCS_TOKEN="你的 token"
29
+ # 非本机时再设,例如:
30
+ # export MDOCS_SERVER="http://127.0.0.1:4000"
31
+ ```
32
+
33
+ 2. 克隆 CLI + Skills,并分发到你用的 Agent:
34
+
35
+ ```bash
36
+ git clone https://github.com/xuhuafeifei/mdocs-cli.git ~/.mdocs-cli
37
+ cd ~/.mdocs-cli && ./distribute-skill.sh cursor # 或 claude / 多个 agent
38
+ ```
39
+
40
+ 会把 **`mdocs-cli`**、**`mdocs-dev`**、**`diagram`** 装到对应 Agent 的 skills 目录。之后在对话里用 `/mdocs-cli`、`/mdocs-dev` 等即可唤起。
41
+
42
+ 更细的命令与环境变量见 [CLI Token · CLI 客户端](./cli-token.md#cli-客户端)。
43
+
44
+ ---
45
+
46
+ ## 最基础:`/mdocs-cli` + 文章 URL
47
+
48
+ **你不必先背命令。** 只要:
49
+
50
+ 1. Agent 已加载 **mdocs-cli** skill(例如输入 `/mdocs-cli`,或确保 skill 已分发且会话会加载它)
51
+ 2. 环境里有可用的 `MDOCS_TOKEN`(以及必要时的 `MDOCS_SERVER`)
52
+ 3. 把 **mdocs 文章的浏览器地址**丢给 Agent,用自然语言说要做什么
53
+
54
+ 示例(与真实使用一致):
55
+
56
+ ```text
57
+ /mdocs-cli
58
+ http://localhost:5173/#/doc/7d78023e-9155-4551-84dc-2dd4e2e44841
59
+ 看下这个文章对应目录的所有文章内容
60
+ ```
61
+
62
+ Agent 会自行:
63
+
64
+ 1. 从 URL 里解析 **文档 ID**(`#/doc/<uuid>`)
65
+ 2. 按需准备 `~/.mdocs-cli`(clone / 更新;失败时可用本地已有副本继续)
66
+ 3. 调用对应子命令(如上例是 `ls <documentId>` 列同级目录)
67
+ 4. 用返回的 JSON 回答你
68
+
69
+ ![在 Agent 中用 /mdocs-cli + 文章 URL](./agent-dev-loop/mdocs-cli-usage.png)
70
+
71
+ ### 你还可以怎么说
72
+
73
+ | 你想做的事 | 示例说法 |
74
+ |------------|----------|
75
+ | 读这篇 | 「打开这篇 URL,总结要点」 |
76
+ | 看同级目录 | 「这个文章对应目录下有哪些文件」(上图) |
77
+ | 搜知识库 | 「在 mdocs 里搜『草稿』相关」 |
78
+ | 改 / 新建 | 「根据刚才结论,更新这篇」或「在同级建一篇笔记」(需你明确授权写回) |
79
+
80
+ 底层命令仍是 `search` / `get` / `ls` / `list` / `create` / `update` 等;对日常使用,**URL + 自然语言** 就够了。
81
+
82
+ ---
83
+
84
+ ## `/mdocs-dev`:开发流程(详细)
85
+
86
+ 知识库读写用 **mdocs-cli**;**在业务仓库里把需求想清楚、再写代码**,用 **`/mdocs-dev`**。
87
+
88
+ ### 什么时候输入 `/mdocs-dev`
89
+
90
+ 在 Cursor / Claude 等对话里输入:
91
+
92
+ ```text
93
+ /mdocs-dev
94
+ ```
95
+
96
+ 或附带一句话说明意图,例如:
97
+
98
+ ```text
99
+ /mdocs-dev
100
+ 我想给设置页加「导出 Markdown」,你先按契约走
101
+ ```
102
+
103
+ Agent 会按 **mdocs-dev** skill 工作:在项目根维护 **`.mdocs-docs/` 开发契约**,**先对齐设计、经你同意后再改业务代码**。
104
+
105
+ ### 契约落在哪
106
+
107
+ ```
108
+ <项目根>/.mdocs-docs/
109
+ ├── README.md # 总索引
110
+ ├── map/ # 机器坐标:关键词 → 文件/符号(不贴大段代码)
111
+ ├── diagrams/ # Mermaid 图(用 diagram skill)
112
+ ├── decisions/ # ADR:为什么这样设计
113
+ ├── bug-fixes/ # 事后修复记录
114
+ └── requirements/<需求名>/
115
+ ├── 需求分析.md # 给人:范围、验收
116
+ ├── 设计契约.md # 给人审;须「已同意」才能写代码
117
+ └── 代码索引.md # 给机器:本需求入口定位
118
+ ```
119
+
120
+ ### 标准步骤(Agent 应遵守)
121
+
122
+ ```
123
+ 1. 判场景:新需求 / 改老需求 / 整理老业务 / 记 bug 修复
124
+ 2. 读 .mdocs-docs/README.md、map/、已有需求夹(防重复建 xxx-v2)
125
+ 3. 写或更新「需求分析」「设计契约」
126
+ 4. 把设计契约给你看 → 等你明确说「同意」
127
+ 5. 未同意:只改契约文档,禁止动业务代码
128
+ 6. 同意后:写代码,并更新「代码索引」/ map(入口变了才改)
129
+ 7. 你要求「推 mdocs / 落库」时,再用 mdocs-cli 把定稿推到知识库
130
+ ```
131
+
132
+ ### 四种场景怎么走
133
+
134
+ | 场景 | Agent 默认做什么 |
135
+ |------|------------------|
136
+ | **新需求** | 新建 `requirements/<短名>/`,先分析再设计 |
137
+ | **改老需求** | **更新原文件夹**,禁止另开 `xxx-v2` |
138
+ | **整理老业务** | 只增厚 `map/`,不写长篇用户故事 |
139
+ | **记 bug 修复** | 写 `bug-fixes/<短标题>-日期.md`(事后记录,不走设计门控) |
140
+
141
+ 意图不清时,Agent **只应问一句**:新需求、改老需求、整理老业务,还是记 bug?
142
+
143
+ ### 和 `/mdocs-cli` 怎么配合
144
+
145
+ | 阶段 | 用哪个 |
146
+ |------|--------|
147
+ | 查团队知识库里已有设计 / 笔记 | `/mdocs-cli` + URL 或搜索 |
148
+ | 在本仓库落需求与设计、等人审 | `/mdocs-dev` |
149
+ | 画架构 / 时序给人看 | `diagram` skill(图进 `.mdocs-docs/diagrams/`) |
150
+ | 定稿后写进 mdocs | 你明确要求后,再用 **mdocs-cli** `create` / `update` |
151
+
152
+ **默认不推库**:契约先只存在 Git 仓库里;避免 Agent 未经允许改线上文档。
153
+
154
+ ### 你这边的检查点
155
+
156
+ - 设计契约状态是否写成 **已同意**(含日期)再让 Agent 动代码
157
+ - 结论是否能指到 `map` / 路径 / decisions,而不是空口承诺
158
+ - 改老需求是否仍在**同一个** `requirements/...` 目录
159
+
160
+ ---
161
+
162
+ ## Skills 一览
163
+
164
+ | Skill | 作用 |
165
+ |-------|------|
166
+ | **mdocs-cli** | HTTP CLI:搜 / 读 / 列 / 建 / 改文档与目录 |
167
+ | **mdocs-dev** | `.mdocs-docs` 契约 + 设计门控 |
168
+ | **diagram** | Mermaid 图落盘并索引 |
169
+
170
+ 仓库:[github.com/xuhuafeifei/mdocs-cli](https://github.com/xuhuafeifei/mdocs-cli)
171
+
172
+ ---
173
+
174
+ ## 和上手助手的知识关系
175
+
176
+ - **本站文档**是给人读的手册真源。
177
+ - mdocs 上手 Agent 构建时会把本站手册打成包内 Skills。
178
+ - 因此:改好本站使用说明,既服务人类读者,也服务产品内 AI。
179
+
@@ -30,18 +30,22 @@ source: usage/bookmarks.md
30
30
  有两种方式查看收藏列表:
31
31
 
32
32
  1. **左侧边栏快捷入口**:点击左侧边栏底部访客信息右侧的星标按钮(在退出按钮左侧),弹出「我的收藏」列表
33
- 2. **[设置页面](./settings.md)**:进入「设置」→「我的收藏」,可以看到完整的收藏表格,支持搜索筛选
33
+ 2. **[设置页面](./settings.md)**:侧栏底部访客信息进入设置 → **我的收藏**,可看完整表格并搜索
34
+
35
+ ![设置 → 我的收藏](./bookmarks/settings-list.png)
36
+
37
+ 表格列包括:标题、域、作者、收藏时间;行内可 **取消收藏**。
34
38
 
35
39
  收藏列表的显示规则:
36
- - 正常文档:黑色文字显示,点击可直接跳转打开
37
- - 已删除文档:灰色文字 + 红色「已删除」标签,不可点击
40
+ - 正常文档:可点击打开
41
+ - 已删除文档:灰色文字 + 「已删除」标签,不可打开
38
42
 
39
43
  ### 取消收藏
40
44
 
41
45
  有两种方式取消收藏:
42
46
 
43
47
  1. **在文档内**:打开文档,通过右上角 ⋮ 菜单点击「取消收藏」
44
- 2. **在收藏列表**:点击任意收藏项右侧的 **✕ 按钮**,即时取消收藏
48
+ 2. **在收藏列表 / 设置页**:点击该项右侧的 **取消收藏**
45
49
 
46
50
  ---
47
51
 
@@ -1,14 +1,18 @@
1
1
  ---
2
2
  id: usage-cli-token
3
3
  name: "CLI Token"
4
- description: "CLI Token 是给命令行工具和 AI Agent(如 Claude Code)使用的身份令牌,继承你在 mdocs 中的所有权限。Token 与你的访客身份绑定,创建后可以通过 HTTP API 读写文档。"
4
+ description: "CLI Token 是给命令行工具和 AI Agent(如 Claude Code、Cursor)使用的身份令牌,继承你在 mdocs 中的所有权限。Token 与你的访客身份绑定,创建后可以通过 HTTP API 读写文档。"
5
5
  keywords: []
6
6
  source: usage/cli-token.md
7
7
  ---
8
8
 
9
9
  # CLI Token
10
10
 
11
- CLI Token 是给命令行工具和 AI Agent(如 Claude Code)使用的身份令牌,继承你在 mdocs 中的所有权限。Token 与你的访客身份绑定,创建后可以通过 HTTP API 读写文档。
11
+ CLI Token 是给命令行工具和 AI Agent(如 Claude Code、Cursor)使用的身份令牌,继承你在 mdocs 中的所有权限。Token 与你的访客身份绑定,创建后可以通过 HTTP API 读写文档。
12
+
13
+ 整体怎么把 CLI / Skills 嵌进开发流程(含 **丢文章 URL**、**`/mdocs-dev`**),见 [Agent 开发闭环](./agent-dev-loop.md)。
14
+
15
+ 最基础的 Agent 用法:加载 **mdocs-cli** skill 后,直接把 mdocs 文章链接发给 Agent,用自然语言说明要读目录、读正文或搜索即可,不必先手写 CLI。
12
16
 
13
17
  ## 适用场景
14
18
 
@@ -18,7 +22,7 @@ CLI Token 是给命令行工具和 AI Agent(如 Claude Code)使用的身份
18
22
 
19
23
  ## 创建 Token
20
24
 
21
- 1. 打开 mdocs 的设置页,切换到「通用」Tab。
25
+ 1. 打开 mdocs 的设置页(侧栏底部访客信息),切换到「通用」。
22
26
  2. 找到 **CLI Token** 卡片,点击「创建」。
23
27
  3. 系统会生成一个新的 Token,**仅在此时展示一次**,请立即复制保存。
24
28
 
@@ -17,24 +17,20 @@ source: usage/domain-members.md
17
17
 
18
18
  公开域、个人域 **没有**「成员」名单能力:前者对所有人开放入口,后者只有域主一人。
19
19
 
20
- ## UI 界面
21
-
22
- ![](./domain-members/UI.png)
23
-
24
- > 域管理界面显示的域,都是用户可见的域. 公开域,团队成员的受限域,私域 (如果域中存在一篇文章邀请了别的用户,那么该域对那名用户也是可见的,哪怕是私域)
25
-
26
20
  ## 入口在哪里
27
21
 
28
- 点击应用左下角,包含用户头像的栏目
22
+ 点击应用左侧边栏**底部访客信息区**进入 [设置](./settings.md),再选:
29
23
 
30
- ![](./domain-members/settings.png)
24
+ | 侧栏项 | 作用 |
25
+ |--------|------|
26
+ | **域管理** | 新建域、按类型筛选、重命名 / 改类型 / 删除;对 **受限域** 维护成员 |
27
+ | **域成员模板** | 维护可复用的访客名单,供成员弹窗套用 |
31
28
 
32
- | 侧栏项(中文界面示例) | 作用 |
33
- | ---------------------- | ------------------------------------------------------ |
34
- | **域管理** | 新建域、筛选域类型、对 **受限域** 打开「成员」维护弹窗 |
35
- | **域成员模板** | 维护可复用的访客 ID 名单(名称 + 一套勾选结果) |
29
+ ![设置 域管理](./domain-members/domain-manage.png)
36
30
 
37
- 「活跃访客目录」来自服务端的访客列表接口:一般包含当前未停用的访客,用于左侧勾选。
31
+ 「活跃访客目录」来自服务端访客列表:一般包含当前未停用的访客,用于成员勾选。
32
+
33
+ 域管理列表里能看到的域,都是当前访客可见的域:公开域、你作为成员的受限域、自己的私有域;若某私有域里有文档邀请了你,该域也可能出现在列表中。
38
34
 
39
35
  ## 创建受限域与首批成员
40
36
 
@@ -82,11 +78,13 @@ source: usage/domain-members.md
82
78
 
83
79
  在 **设置 → 域成员模板**:
84
80
 
85
- 1. **新建**:填模板显示名称,用访客选择器(与域成员相同的双栏界面)选好一组人,保存。
86
- 2. **编辑**:在列表中选一条,改名称或人员后保存。
81
+ ![设置 → 域成员模板](./domain-members/member-template.png)
82
+
83
+ 1. **新建**:按步骤填写名称 → 选择成员 → 保存(例如「核心开发组」)。
84
+ 2. **编辑**:在「已保存的模板」中选一条,改名称或人员后保存。
87
85
  3. **删除**:删除前会有确认提示。
88
86
 
89
- ![](./domain-members/template-mantain.png)
87
+ 若尚无模板,页面会提示先创建,再回到「域管理」里对受限域维护成员。
90
88
 
91
89
  模板 **不会** 自动同步到任何域;只是在 **域管理 → 成员** 弹窗里作为「一键追加勾选」的快捷方式。真正生效仍以你在成员弹窗里 **确认保存** 后的结果为准。
92
90
 
@@ -63,9 +63,21 @@ Lexical 编辑器(富文本)
63
63
 
64
64
  ## 发布流程
65
65
 
66
+ ### 设置里的开关
67
+
68
+ 打开 **设置 → 保存与发布**:
69
+
70
+ ![设置 → 保存与发布](./drafts/save-publish-settings.png)
71
+
72
+ | 项 | 说明 |
73
+ |----|------|
74
+ | **自动保存(本地快照)** | 内容持续写入浏览器本地快照,避免编辑丢失(界面展示为始终可用) |
75
+ | **自动同步至云端** | 空闲后把草稿推到服务器;网络不稳或多端冲突时可能暂停同步以保护数据 |
76
+ | **查看未发布草稿** | 列出尚未成功发布到服务端的本地草稿,可点进对应文档继续编辑或手动发布 |
77
+
66
78
  ### 自动发布(可选)
67
79
 
68
- 在 [设置](./settings.md) 中开启「自动同步至云端」后:
80
+ 在设置中开启「自动同步至云端」后:
69
81
 
70
82
  - **每 10 秒**扫描 IndexedDB;
71
83
  - 某篇草稿 **超过 30 秒** 没有新的自动保存 → 尝试发布。
@@ -14,17 +14,31 @@ mdocs 的流程图基于 **Meta2d** 绘图引擎,设计目标是让用户像
14
14
 
15
15
  ## 插入方式
16
16
 
17
- 在编辑器新行中输入以下内容后回车:
17
+ ### 斜杠菜单(推荐)
18
+
19
+ 不必手写 Markdown / 围栏语法。在编辑器中:
20
+
21
+ 1. 新起一行(或光标在段落里)输入 `/`
22
+ 2. 选择 **Meta2d**,或继续输入 `meta2d` 过滤后回车
23
+ 3. 插入后会打开 Meta2d 画布,拖拽绘制即可
24
+
25
+ ![输入 / 打开菜单并选择 Meta2d](./markdown/slash-menu.png)
26
+
27
+ 完整菜单项说明见 [编辑体验 · 斜杠菜单](./markdown.md#斜杠菜单推荐快捷入口)。
28
+
29
+ ### 其他方式(可选)
30
+
31
+ 仍支持在新行输入围栏后回车打开画布(适合熟悉旧习惯的用户):
18
32
 
19
33
  ```
20
34
  ---meta2d---
21
35
  ```
22
36
 
23
- 编辑器会自动识别并打开 Meta2d 画布编辑器。
37
+ 日常插入请优先用 `/`。
24
38
 
25
39
  ## 数据格式
26
40
 
27
- 图表在文档中以 `---meta2d---` 围栏块的形式内嵌存储:
41
+ 图表在文档中以内嵌块保存(存储形态,**插入时不必手写**):
28
42
 
29
43
  ```
30
44
  ---meta2d---
@@ -33,7 +47,7 @@ mdocs 的流程图基于 **Meta2d** 绘图引擎,设计目标是让用户像
33
47
  ```
34
48
 
35
49
  编辑器渲染时:
36
- - 识别到 `---meta2d---` 块 → 调用 canvas2svg 渲染为 SVG 预览
50
+ - 识别到该块 → 调用 canvas2svg 渲染为 SVG 预览
37
51
  - 双击块 → 打开 Meta2d 画布编辑器,可拖拽编辑
38
52
  - 保存 → 将 JSON 写回文档内容
39
53
 
@@ -54,7 +68,13 @@ mdocs 的流程图基于 **Meta2d** 绘图引擎,设计目标是让用户像
54
68
 
55
69
  ### 使用方式
56
70
 
57
- 在编辑器中创建 `markmap` 代码块:
71
+ #### 斜杠菜单(推荐)
72
+
73
+ 输入 `/` → 选 **Markmap**(或过滤 `markmap`)插入,无需先背代码块语法。
74
+
75
+ #### 代码块(可选)
76
+
77
+ 也可手写 `markmap` 围栏,用 Markdown 标题层级描述树:
58
78
 
59
79
  ````markdown
60
80
  ```markmap
@@ -56,19 +56,44 @@ node ~/.mdocs-cli/mdocs.mjs create \
56
56
 
57
57
  ## 编辑器功能
58
58
 
59
+ 编辑时有两条常用入口:**顶部工具栏**(点选)和 **斜杠菜单**(键盘快速插入)。多数插入项两边都能找到。
60
+
61
+ ### 斜杠菜单(推荐快捷入口)
62
+
63
+ 在编辑器**空行或段落中**输入 `/`,弹出可搜索的插入菜单;继续打关键字(如 `table`、`meta2d`)可过滤,回车或点击插入。
64
+
65
+ ![输入 / 打开斜杠菜单](./markdown/slash-menu.png)
66
+
67
+ 常见项(右侧为过滤关键字,以当前版本界面为准):
68
+
69
+ | 菜单项 | 关键字示例 | 作用 |
70
+ |--------|------------|------|
71
+ | Heading 3 | `h3` | 三级标题 |
72
+ | Hr | `hr` | 水平分割线 |
73
+ | Table | `table` | 表格 |
74
+ | TeX | `tex` | 数学公式 |
75
+ | File | `file` | 上传并插入附件 |
76
+ | Insert Link | `insert-link` | 超链接 |
77
+ | Inline Code | `insert-codeInline` | 行内代码 |
78
+ | Code Block | `insert-codeBlock` | 代码块(语法高亮) |
79
+ | Meta2d | `meta2d` | 流程图画布,详见 [流程图生成](./flowchart.md) |
80
+ | Markmap | `markmap` | 思维导图,详见 [流程图生成 · Markmap](./flowchart.md#markmap-思维导图) |
81
+
82
+ 插入 Meta2d 后一般会自动打开画布。日常请用 `/` 插入;围栏写法仅作可选兼容,见 [流程图生成](./flowchart.md)。
83
+
59
84
  ### 富文本工具栏
60
85
 
61
- 编辑器顶部提供了格式化工具栏,支持斜杠命令(输入 `/` 触发):
86
+ 编辑器顶部工具栏覆盖格式与插入(与斜杠菜单互补):
62
87
 
63
88
  - **撤销 / 重做**
64
- - **文档首尾插行**:在全文最上方或最后一行之后插入空段落,光标进入新行
89
+ - **文档首尾插行**:在全文最上方或最后一行之后插入空段落
65
90
  - **标题**:H1 ~ H3
66
- - **文本格式**:加粗、斜体、行内代码
67
- - **插入元素**:表格、链接、图片、分割线、数学公式(TeX)、Meta2d、Markmap
68
- - **代码块**:基于 CodeMirror 的代码编辑器,支持语法高亮
69
- - **文件附件**:上传并插入文件
91
+ - **文本格式**:加粗、斜体、下划线、删除线、字色 / 高亮
92
+ - **列表与引用**:无序 / 有序 / 待办、引用
93
+ - **插入**:链接、图片、表格、代码、TeX、附件等
94
+ - **大纲**:可一键展开 / 折叠右侧大纲面板
70
95
 
71
- 斜杠菜单可搜索上述插入项(含 Meta2d / Markmap)。
96
+ 适合鼠标点选改格式;批量插入块级内容时优先用 `/`。
72
97
 
73
98
  ### 大纲面板
74
99
 
@@ -94,9 +119,9 @@ node ~/.mdocs-cli/mdocs.mjs create \
94
119
 
95
120
  ### 流程图
96
121
 
97
- 支持 **Meta2d** 流程图,输入 `---meta2d---` 后回车即可打开画布编辑器,拖拽绘制流程图。
122
+ 支持 **Meta2d** 流程图。优先在编辑器输入 `/`,选 **Meta2d** 插入并打开画布;不必手写围栏语法。
98
123
 
99
- 详见[流程图生成](./flowchart.md)。
124
+ 详见 [流程图生成](./flowchart.md)。
100
125
 
101
126
  ## 设计取舍
102
127
 
@@ -16,19 +16,21 @@ source: usage/my-documents.md
16
16
 
17
17
  ### 入口:设置页面
18
18
 
19
- 1. 点击左侧边栏顶部的 **⚙ 设置** 按钮
19
+ 1. 点击左侧边栏**底部的访客信息区**(头像 + 昵称)进入 [设置页面](./settings.md)
20
20
  2. 在左侧导航中点击 **我的文章**
21
21
 
22
+ ![设置 → 我的文章](./my-documents/settings-list.png)
23
+
22
24
  列表以表格形式展示:
23
25
 
24
26
  | 列名 | 说明 |
25
27
  |-----|------|
26
- | 标题 | 文档显示名称,点击可直接打开文档 |
28
+ | 标题 | 文档显示名称 |
27
29
  | 域 | 文档所在的域 |
28
30
  | 更新时间 | 文档最后编辑日期 |
29
31
  | 创建时间 | 文档创建日期 |
30
32
  | 邀请成员 | 快捷管理文档邀请(仅自己创建的文档可见) |
31
- | 打开 | 快速跳转打开文档 |
33
+ | 打开 | 跳转打开文档 |
32
34
 
33
35
  ### 搜索筛选
34
36
 
@@ -10,19 +10,32 @@ source: usage/onboarding-ai.md
10
10
 
11
11
  mdocs 内置了一个**产品上手向导**,只解答「怎么用 mdocs」(域、草稿、发布、权限等),**不会**帮你写正文或改文档。
12
12
 
13
+ 若你要用 Cursor / Claude 等**外部 Agent** 读写知识库、落开发契约,见 [Agent 开发闭环](./agent-dev-loop.md)。
14
+
13
15
  ## 入口
14
16
 
15
- 页面左下角有浮动入口(DeepSeek 图标)。点击打开聊天浮层,主工作区仍保持打开。
17
+ 左下角有圆形 **上手助手** 悬浮按钮(不占用正文区)。点击后打开浮层 **「mdocs 智能助手」**,主编辑区仍保持打开,可边问边写。可**按住拖动**入口到任意位置(本地记住);挪过之后会出现「重置位置」。
18
+
19
+ ![上手助手入口与聊天浮层](./onboarding-ai/entry.png)
20
+
21
+ 浮层内:
22
+
23
+ - 顶部:**+** 新建会话、历史列表、关闭
24
+ - 中间:对话与指引内容(可含步骤、表格等)
25
+ - 底部输入框:占位「把你的问题告诉我…」
26
+ - 页脚提示:内容由 AI 生成,仅供参考
16
27
 
17
28
  ## 开始使用前:配置模型
18
29
 
19
- 1. 打开 **设置 → AI**
30
+ 1. 打开 **设置 → AI**(侧栏底部访客信息进入设置)
20
31
  2. 选择模型:`deepseek-v4-flash` 或 `deepseek-v4-pro`
21
32
  3. 填写你的 DeepSeek API Key 并保存
22
33
 
34
+ ![设置 → AI:上手助手模型配置](./onboarding-ai/ai-settings.png)
35
+
23
36
  未配置 Key 时,入口可用但无法发送消息,浮层会提示去设置页配置。
24
37
 
25
- 每人一份配置,仅本人可用;Key 在服务端按访客隔离存储,不会出现在别的访客界面上。
38
+ 每人一份配置,仅本人可用;Key 在服务端按访客隔离存储,不会出现在别的访客界面上。配置页可查看配置名称、模型、脱敏后的 Key 与配置 ID;需要改时可点 **编辑**。
26
39
 
27
40
  ## 怎么问
28
41
 
@@ -38,7 +51,10 @@ mdocs 内置了一个**产品上手向导**,只解答「怎么用 mdocs」(
38
51
  ## 会话
39
52
 
40
53
  - 同一访客的对话会保存在数据目录 `tenant/<访客ID>/agent/session/` 下,刷新或重开浮层仍可续聊。
41
- - 浮层里的「新会话 / 历史」完整切换能力后续开放;当前主要是**自动续上最近一次会话**。
54
+ - 浮层标题栏 **「+」**:新建空会话并切换过去。
55
+ - **历史图标**:按最近更新列出会话;点击即可切换并回放该会话。
56
+ - 会话标题取自**第一条用户消息**(过长会截断),不是模型摘要。
57
+ - 删除、重命名、按天数自动清理尚未提供。
42
58
 
43
59
  ## 明确不会做
44
60
 
@@ -1,72 +1,87 @@
1
1
  ---
2
2
  id: usage-recovery-code
3
3
  name: "恢复码与身份找回"
4
- description: "恢复码是一串由字母和数字组成的特殊代码,格式如:"
4
+ description: "> **现状**:跨设备找回身份,优先用 **用户名 + 密码**。恢复码是早期「纯 Cookie 身份」时代的自助方案,现仍可用,但属于兼容能力,新用户不必依赖它。"
5
5
  keywords: []
6
6
  source: usage/recovery-code.md
7
7
  ---
8
8
 
9
9
  # 恢复码与身份找回
10
10
 
11
- ## 什么是恢复码
11
+ > **现状**:跨设备找回身份,优先用 **用户名 + 密码**。恢复码是早期「纯 Cookie 身份」时代的自助方案,现仍可用,但属于兼容能力,新用户不必依赖它。
12
12
 
13
- 恢复码是一串由字母和数字组成的特殊代码,格式如:
13
+ ## 为什么会有恢复码
14
14
 
15
- ```
16
- ABCD-EFGH-IJKL-MNOP
17
- ```
15
+ mdocs 初期刻意不做传统登录系统:不想要注册邮箱、账号密码那一套,希望打开就能写。
16
+
17
+ 底层做法是:浏览器里通过 **HttpOnly Cookie** 下发一串随机高熵令牌,服务端只存其哈希,用这份 Cookie 标识「你是谁」。没有单独的账号表登录流程。
18
+
19
+ 代价也很直接——**Cookie / 本机身份数据一旦丢了**(清站点数据、换浏览器、换设备),浏览器再也带不上原来的令牌,系统就认不出你还是以前那个人,文档所有权也接不上。
20
+
21
+ 恢复码就是为这个问题准备的:**一份由用户自己保存的一次性凭证**,在 Cookie 丢失后,仍能凭码换回同一访客身份和新的 Cookie。
18
22
 
19
- 注册访客后系统会生成专属恢复码,**请务必立即保存**。当你在其他设备上需要访问账户,或者当前 Token 丢失无法登录时,可以使用恢复码重新获取身份令牌。
23
+ ## 后来发生了什么
20
24
 
21
- > **⚠️ 恢复码仅展示一次。** 注册成功后会弹出窗口显示恢复码,关闭后无法再次查看。如果忘记保存,可以在设置页生成新的恢复码(旧码会立即失效)。
25
+ 后续迭代引入了 **登录密码**(访客名 + 密码,可多设备会话):
22
26
 
23
- ## 获取恢复码
27
+ - 跨浏览器 / 跨设备:用密码登录即可,不必再找恢复码
28
+ - 注册时可设密码;设置页可管理「登录密码」
29
+ - 登录弹窗默认是「用户名 + 密码」;恢复码仍作为次要入口保留
24
30
 
25
- ### 注册后自动获取
31
+ 因此恢复码的核心场景被密码覆盖,**功能逐渐被边缘化**,保留是为了兼容早期只靠 Cookie、已发过恢复码的用户。
26
32
 
27
- 输入昵称完成注册后,页面会弹出一个窗口,展示你的专属恢复码。点击**复制恢复码**按钮保存到剪贴板,然后妥善保管。
33
+ | 方式 | 适用 |
34
+ |------|------|
35
+ | **用户名 + 密码(推荐)** | 换设备、清 Cookie、日常跨端 |
36
+ | 恢复码 | 从未设密码、或只有早期恢复码可用的情况 |
37
+ | 管理员 `visitor migrate` | 以上都不可用时的运维兜底 |
28
38
 
29
- ### 设置页重新生成
39
+ ## 机制摘要(仍可用时)
30
40
 
31
- 如果你在注册时没有保存恢复码,或者恢复码已使用,可以在设置页重新生成:
41
+ 格式形如:
32
42
 
33
- 1. 点击左侧边栏底部的访客名称,进入**设置页**
34
- 2. 在「通用」标签页中找到「恢复码」区域
35
- 3. 点击**生成恢复码**按钮
36
- 4. 系统会生成新的恢复码并展示在页面上
37
- 5. **立即复制保存**,关闭后不再可见
43
+ ```
44
+ ABCD-EFGH-IJKL-MNOP
45
+ ```
38
46
 
39
- > 重新生成恢复码会使旧的恢复码立即失效。
47
+ - 注册成功时可能弹出展示(**只此一次**);也可在设置页「通用 → 恢复码」重新生成(旧码立即失效)
48
+ - 服务端只存 SHA-256 哈希,不能再把明文码「查出来」给你看
49
+ - 在登录弹窗切到「恢复码」,输入后换发新的身份 Cookie;**验证成功后该码作废**(一次性)
40
50
 
41
- ## 使用恢复码找回身份
51
+ ## 怎么用(兼容流程)
42
52
 
43
- 当你无法使用原有 Token 登录时(如清除了浏览器 Cookie):
53
+ ### 生成 / 再生成
44
54
 
45
- 1. 在浏览器中打开 mdocs 站点,如果没有有效 Cookie,会自动进入**注册页**
46
- 2. 在注册表单下方,点击 **已有恢复码?点击找回** 链接
47
- 3. 在弹出的输入框中输入你保存的恢复码
48
- 4. 点击 **找回身份**
49
- 5. 系统验证通过后会自动登录,并下发新的身份 Cookie
55
+ 1. 打开 **设置 通用 → 恢复码**
56
+ 2. 点击生成,**立刻复制保存**
57
+ 3. 再生成会使旧码失效
50
58
 
51
- 恢复码是**一次性**使用的,验证成功后该恢复码即失效。你可以在设置页生成新的恢复码。
59
+ ### 用恢复码找回
60
+
61
+ 1. 无有效 Cookie 时打开站点,进入注册 / 登录弹窗
62
+ 2. 切到登录 → **恢复码**
63
+ 3. 输入保存的码 → 找回身份
52
64
 
53
65
  ## 常见问题
54
66
 
55
- ### 为什么恢复码只展示一次?
67
+ ### 还需要保存恢复码吗?
68
+
69
+ 若已设置登录密码,**日常以密码为准**即可。恢复码可选:仅当你希望多一条不依赖密码的兜底时再保存。
70
+
71
+ ### 恢复码丢了怎么办?
56
72
 
57
- 恢复码是明文显示的唯一凭证。系统只存储其 SHA-256 哈希值,不存储原文。所以系统本身无法再展示该码,只能验证你输入的是否正确。
73
+ - 仍能进当前浏览器会话:去设置页改/设密码,或再生成恢复码
74
+ - 已进不去:有密码就用密码登录;都没有则联系管理员做 `visitor migrate`
58
75
 
59
- ### 恢复码丢失了怎么办?
76
+ ### 恢复码和 Cookie 令牌有什么区别?
60
77
 
61
- - 如果你还能正常登录,请立即进入设置页生成新的恢复码并保存
62
- - 如果你已无法登录,请联系管理员执行访客合并脚本(`visitor migrate`)
78
+ | | Cookie 身份令牌 | 恢复码 |
79
+ |--|-----------------|--------|
80
+ | 角色 | 日常请求鉴权(浏览器自动带) | Cookie 丢了之后的自助换发 |
81
+ | 存放 | HttpOnly Cookie | 用户自己抄走 |
82
+ | 推荐替代 | — | **登录密码**(跨设备主路径) |
63
83
 
64
- ### 恢复码和 Token 有什么区别?
84
+ ### 和「无账户」设计还一致吗?
65
85
 
66
- | | Token | 恢复码 |
67
- |--|-------|--------|
68
- | 用途 | 日常 API 请求鉴权 | 找回身份 |
69
- | 存储 | HttpOnly Cookie(浏览器自动管理) | 用户自行保存 |
70
- | 更换 | 可通过恢复码重新获取 | 可在设置页重新生成 |
71
- | 有效期 | 无限期(直到被覆盖) | 一次性,使用后失效 |
86
+ 早期「无账户」指的是不做邮箱注册那套,用 Cookie 访客身份。现在的「访客名 + 可选密码」仍是轻量访客模型,不是完整的企业账号体系;密码解决的是 **同一访客跨端续上身份**,并不否定当初降低门槛的目标。身份模型细节见 [无账户身份识别](../core-concepts/no-account.md)。
72
87
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  id: usage-settings
3
3
  name: "设置页面"
4
- description: "设置页面是 mdocs 的集中配置中心,提供访客身份、域管理、内容管理等各种系统级功能。"
4
+ description: "设置页面是 mdocs 的集中配置中心:身份与密码、收藏与文章、域与成员模板、上手助手、草稿同步等都在这里。"
5
5
  keywords: []
6
6
  source: usage/settings.md
7
7
  ---
@@ -10,85 +10,74 @@ source: usage/settings.md
10
10
 
11
11
  ## 功能概述
12
12
 
13
- 设置页面是 mdocs 的集中配置中心,提供访客身份、域管理、内容管理等各种系统级功能。
13
+ 设置页面是 mdocs 的集中配置中心:身份与密码、收藏与文章、域与成员模板、上手助手、草稿同步等都在这里。
14
14
 
15
15
  ## 入口
16
16
 
17
- 点击左侧边栏**顶部的 设置按钮**(在域名选择下拉左侧),进入设置页面。
17
+ 点击左侧边栏**底部的访客信息区**(头像 + 昵称那一行),进入设置页面。
18
+
19
+ ![设置入口:点击侧栏底部访客信息](./settings/setting-rukou.png)
20
+
21
+ 侧栏底部另有 **返回文档**,可随时回到编辑主界面。
18
22
 
19
23
  ---
20
24
 
21
25
  ## 左侧导航概览
22
26
 
23
- 设置页面左侧分为以下功能模块:
27
+ 顺序与界面一致:
24
28
 
25
29
  | 导航项 | 功能 |
26
30
  |-------|------|
27
- | [通用](#通用设置) | 语言切换、自动编辑、CLI Token、恢复码 |
28
- | [AI](./onboarding-ai.md) | 上手助手用的 DeepSeek 模型与 API Key |
29
- | [我的收藏](./bookmarks.md) | 收藏的文档列表,支持搜索、取消收藏 |
30
- | [我的文章](./my-documents.md) | 自己创建的所有文档,支持邀请成员 |
31
- | [域管理](../usage/domain-members.md#域管理) | 创建、重命名、删除域,配置域权限与成员 |
32
- | 成员模板 | 保存常用访客名单,供受限域批量邀请复用 |
33
- | [保存与发布](./drafts.md) | 自动同步开关、未发布草稿列表 |
31
+ | [通用](#通用设置) | 语言、自动编辑、CLI Token、恢复码(兼容)、登录密码 |
32
+ | [我的收藏](./bookmarks.md) | 收藏列表、搜索、取消收藏 |
33
+ | [我的文章](./my-documents.md) | 自己创建的文档、邀请成员、打开 |
34
+ | [域管理](./domain-members.md) | 创建 / 筛选 / 重命名 / 改类型 / 删除域;受限域成员 |
35
+ | [域成员模板](./domain-members.md) | 可复用的访客名单 |
36
+ | [AI](./onboarding-ai.md) | 上手助手的 DeepSeek 配置 |
37
+ | [保存与发布](./drafts.md) | 本地快照、自动同步、未发布草稿 |
34
38
 
35
39
  ---
36
40
 
37
41
  ## 通用设置
38
42
 
39
- ### 语言切换
43
+ ![通用设置界面](./settings/general.png)
40
44
 
41
- 支持中英文双语界面:
45
+ ### 语言
42
46
 
43
- - **中文**:完整本地化的操作提示与说明
44
- - **English**:英文界面适配国际团队
47
+ 「中」/「EN」即时切换界面语言,无需刷新。
45
48
 
46
- 点击「中」/「EN」按钮即时切换,无需刷新页面。
49
+ ### 自动编辑
47
50
 
48
- ### 自动编辑开关
51
+ 开启后,打开文档时自动进入编辑模式;关闭则默认只读,需手动点编辑。
49
52
 
50
- 开启后,打开文档时自动进入编辑模式;关闭时默认以只读模式打开,需要手动点击编辑按钮。
51
-
52
- 适合不同的使用习惯:
53
- - **写作为主**:建议开启,减少一次点击
54
- - **阅读为主**:建议关闭,避免误触编辑
53
+ - **写作为主**:建议开启
54
+ - **阅读为主**:建议关闭
55
55
 
56
56
  ### CLI Token
57
57
 
58
- 用于命令行工具和自动化脚本的身份凭证。详情请参考 [CLI Token](./cli-token.md)。
58
+ 给命令行与外部 Agent 用的身份令牌,继承你的权限。可查看活跃 Token、重置。详情见 [CLI Token](./cli-token.md)。
59
59
 
60
- ### 恢复码
60
+ ### 恢复码(兼容)
61
61
 
62
- 用于访客身份恢复。详情请参考 [恢复码](./recovery-code.md)。
62
+ Token / Cookie 丢失时的自助找回;引入登录密码后已边缘化。详情见 [恢复码与身份找回](./recovery-code.md)。
63
63
 
64
- ### AI(上手助手)
64
+ ### 登录密码(推荐跨端)
65
65
 
66
- 在设置页 **AI** Tab 配置个人 DeepSeek 模型与 API Key,供左下角上手助手调用。详情请参考 [上手助手(AI)](./onboarding-ai.md)。
66
+ 设置至少 4 位密码后,可在其他浏览器或设备用「用户名 + 密码」登录同一访客。
67
67
 
68
68
  ---
69
69
 
70
- ## 保存与发布
71
-
72
- ### 自动同步开关
70
+ ## 其他模块一览
73
71
 
74
- 开启后,编辑停止 30 秒后自动将草稿同步到服务器。建议保持开启以获得最佳协作体验。
72
+ 各页详情见对应文档;此处仅对照设置内截图入口。
75
73
 
76
- 详情请参考 [草稿与同步](./drafts.md)。
77
-
78
- ### 未发布草稿
79
-
80
- 显示当前所有存在本地草稿但尚未发布到服务器的文档。点击可直接进入对应文档继续编辑或发布。
81
-
82
- ---
83
-
84
- ## 通用操作
85
-
86
- ### 返回文档
87
-
88
- 设置页面的任何位置,都可以通过以下方式回到文档视图:
89
-
90
- 1. 点击左侧导航底部的 **返回文档** 按钮
91
- 2. 点击浏览器后退按钮
74
+ | 模块 | 文档 |
75
+ |------|------|
76
+ | 我的收藏 | [收藏功能](./bookmarks.md) |
77
+ | 我的文章 | [我的文章](./my-documents.md) |
78
+ | 域管理 / 域成员模板 | [受限域成员与名单模板](./domain-members.md) |
79
+ | AI | [上手助手(AI)](./onboarding-ai.md) |
80
+ | 保存与发布 | [草稿与同步](./drafts.md) |
92
81
 
93
82
  ---
94
83
 
@@ -96,23 +85,11 @@ source: usage/settings.md
96
85
 
97
86
  ### 设置会保存在哪里?
98
87
 
99
- 大部分设置(如语言、自动编辑、自动同步)保存在浏览器 localStorage,只对当前浏览器生效。
100
-
101
- 以下数据保存在服务器,与访客身份绑定:
102
- - 收藏列表
103
- - 域与成员配置
104
- - 成员模板
105
- - CLI Token
106
- - 恢复码
107
-
108
- ### 为什么设置页面看不到某些功能?
109
-
110
- 部分功能有前置条件:
111
- - **域管理**:需要是域的创建者才能看到重命名、删除等操作
112
- - **成员模板**:至少创建过一个模板后才有内容
113
- - **邀请成员**:只有自己创建的文档才显示该按钮
88
+ 语言、自动编辑、自动同步等偏好多在浏览器本地;与身份绑定的数据(收藏、域与成员、模板、CLI Token、密码哈希、恢复码哈希、AI 配置)在服务端。
114
89
 
115
- ### 设置页面支持键盘操作吗?
90
+ ### 为什么看不到某些操作?
116
91
 
117
- 设置页面的输入框和按钮均支持 Tab 切换和 Enter 确认。表格列标题支持点击排序。
92
+ - **域管理**:重命名 / 删除等通常仅域创建者可见
93
+ - **受限域「成员」**:仅受限域且你是创建者时才有
94
+ - **邀请成员**:仅自己创建的文档显示
118
95
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fgbg/mdocs",
3
- "version": "0.8.10",
3
+ "version": "0.8.12",
4
4
  "description": "A Markdown knowledge base for small teams",
5
5
  "license": "MIT",
6
6
  "type": "module",