@fgbg/mdocs 1.3.14 → 1.3.16
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.
- package/README.md +6 -6
- package/agent-skills/changelog/SKILL.md +28 -1
- package/agent-skills/core-concepts-all-files/SKILL.md +3 -3
- package/agent-skills/core-concepts-domain/SKILL.md +49 -46
- package/agent-skills/core-concepts-invitation/SKILL.md +9 -9
- package/agent-skills/core-concepts-no-account/SKILL.md +1 -1
- package/agent-skills/deployment-requirements/SKILL.md +2 -2
- package/agent-skills/faq/SKILL.md +2 -2
- package/agent-skills/getting-started-first-kb/SKILL.md +2 -2
- package/agent-skills/getting-started-installation/SKILL.md +3 -3
- package/agent-skills/index/SKILL.md +2 -2
- package/agent-skills/index.json +8 -8
- package/agent-skills/usage-bookmarks/SKILL.md +5 -5
- package/agent-skills/usage-cli-token/SKILL.md +6 -6
- package/agent-skills/usage-comments/SKILL.md +1 -1
- package/agent-skills/usage-domain-members/SKILL.md +27 -27
- package/agent-skills/usage-html-documents/SKILL.md +1 -1
- package/agent-skills/usage-knowledge-graph/SKILL.md +5 -5
- package/agent-skills/usage-my-documents/SKILL.md +8 -8
- package/agent-skills/usage-onboarding-ai/SKILL.md +6 -6
- package/agent-skills/usage-search/SKILL.md +2 -2
- package/agent-skills/usage-settings/SKILL.md +8 -8
- package/bin/mdocs.js +0 -0
- package/dist/server/agent/Agent/system-prompt.js +3 -3
- package/dist/server/agent/Agent/system-prompt.js.map +1 -1
- package/dist/server/agent/Agent/tool-ui-effects.js +1 -1
- package/dist/server/agent/Agent/tools-documents.js +12 -12
- package/dist/server/agent/Agent/tools-documents.js.map +1 -1
- package/dist/server/agent/Agent/tools-domains.js +14 -14
- package/dist/server/agent/Agent/tools-domains.js.map +1 -1
- package/dist/server/agent/Agent/tools-visitors.js +1 -1
- package/dist/server/agent/Agent/tools-visitors.js.map +1 -1
- package/dist/server/cli/self-update.js +12 -0
- package/dist/server/cli/self-update.js.map +1 -1
- package/dist/server/cli/self-update.test.js +17 -1
- package/dist/server/cli/self-update.test.js.map +1 -1
- package/dist/server/documents/document.service.js +6 -6
- package/dist/server/documents/document.service.js.map +1 -1
- package/dist/server/documents/graph-task.js +1 -1
- package/dist/server/documents/graph-task.js.map +1 -1
- package/dist/server/documents/graph.service.js +1 -1
- package/dist/server/documents/graph.service.js.map +1 -1
- package/dist/server/domains/change-domain-permission.js +1 -1
- package/dist/server/domains/change-domain-permission.js.map +1 -1
- package/dist/server/routes/assets.routes.js +9 -7
- package/dist/server/routes/assets.routes.js.map +1 -1
- package/dist/server/routes/assets.routes.upload.test.js +2 -2
- package/dist/server/routes/assets.routes.upload.test.js.map +1 -1
- package/dist/server/routes/folders.routes.js +4 -4
- package/dist/server/routes/folders.routes.js.map +1 -1
- package/dist/web/assets/AgentChatPanel-Bsx3DwQ7.js +22 -0
- package/dist/web/assets/{AgentSkillFormCard-53eZ84xO.js → AgentSkillFormCard-TFpdC5LM.js} +3 -3
- package/dist/web/assets/AiWriteWorkbench-Jl0I9eM9.js +7 -0
- package/dist/web/assets/{DiagramEditor-NtNY3sZL-YvQa1xOq.js → DiagramEditor-NtNY3sZL-CAEe_iNQ.js} +1 -1
- package/dist/web/assets/DocChrome-BWMgRxlr.js +21 -0
- package/dist/web/assets/DocumentEditor-DALklXO2.js +1 -0
- package/dist/web/assets/HtmlEditor-CX0e0ifD.js +1 -0
- package/dist/web/assets/{MergeView-DP-WJuEH.js → MergeView-DNu_ac5f.js} +2 -2
- package/dist/web/assets/{PlaygroundPage-BNBySSOX.js → PlaygroundPage-mv9P6czE.js} +1 -1
- package/dist/web/assets/{SettingsPage-B45LFCCd.js → SettingsPage-nT9hvcPA.js} +2 -2
- package/dist/web/assets/{Toolbar-PNBoGf83.js → Toolbar-Hsam79hu.js} +1 -1
- package/dist/web/assets/{VisitorPickerModal-Dxgj3Y61.js → VisitorPickerModal-CqHzml8s.js} +1 -1
- package/dist/web/assets/{check-BCinw6C1.js → check-soiTDN2u.js} +2 -2
- package/dist/web/assets/{copy-B4T4wJbp.js → copy-B4fvX0p8.js} +2 -2
- package/dist/web/assets/{index-B3TBoi2p.css → index-CuXb3X2-.css} +1 -1
- package/dist/web/assets/index-OmOf_og0.js +283 -0
- package/dist/web/assets/{meta2dEngine-BD2XbzaV-CvZrtSgN.js → meta2dEngine-BD2XbzaV-Bq3HuUfD.js} +1 -1
- package/dist/web/assets/{plus-C5AB-V4P.js → plus-DKKQ-AoS.js} +2 -2
- package/dist/web/assets/{react-DKdyUY61.js → react-CI5PDFXT.js} +3 -3
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/assets/AgentChatPanel-wBPfD1N6.js +0 -22
- package/dist/web/assets/AiWriteWorkbench-2tZtS8zc.js +0 -7
- package/dist/web/assets/DocChrome-Bp7n7acp.js +0 -21
- package/dist/web/assets/DocumentEditor-DmwHDhjB.js +0 -1
- package/dist/web/assets/HtmlEditor-DIZ-8-go.js +0 -1
- package/dist/web/assets/index-7ZIkBACf.js +0 -283
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
面向个人开发者与小团队:产品内 **智能助手 + 帮写**,外部 **CLI / Skills** 接入 Cursor / Claude;SQLite + 本地文件,**无账户**即可协作。
|
|
6
6
|
|
|
7
|
-
[文档站点](https://xuhuafeifei.github.io/mdocs-site/) · [GitHub](https://github.com/xuhuafeifei/mdocs) · [npm `@fgbg/mdocs`](https://www.npmjs.com/package/@fgbg/mdocs) · 当前版本 **1.3.
|
|
7
|
+
[文档站点](https://xuhuafeifei.github.io/mdocs-site/) · [GitHub](https://github.com/xuhuafeifei/mdocs) · [npm `@fgbg/mdocs`](https://www.npmjs.com/package/@fgbg/mdocs) · 当前版本 **1.3.16**
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
10
|
<img src="image/site主页.png" alt="mdocs 文档站点首页" width="860" />
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
| **AI 双模式** | **智能助手**:答疑、搜文、结构操作、有条件全文覆写(低交互),帮你省操作时间。**帮写**:左聊右 Diff、按段接受后再写回(高交互),精细控制每一段文字。 |
|
|
18
18
|
| **Agent 开发闭环** | CLI Token + [mdocs-cli](https://github.com/xuhuafeifei/mdocs-cli) Skills:在 Cursor / Claude 里搜索、读写知识库;`mdocs-dev` / `diagram` 把契约与 Mermaid 落进仓库,减少决策不落盘与知识漂移。 |
|
|
19
19
|
| **本地私有** | 单进程,SQLite + 磁盘文件,无外部 DB / 缓存 / 队列。 |
|
|
20
|
-
| **无账户协作** |
|
|
20
|
+
| **无账户协作** | 访客即身份;工作空间 + 文档级邀请,从私有到开放按需放开。 |
|
|
21
21
|
| **双模编辑与草稿** | Markdown + 富文本工具栏;Meta2d / Mermaid / Markmap;本地草稿自动保存,空闲可同步云端。 |
|
|
22
22
|
|
|
23
23
|
<p align="center">
|
|
@@ -74,13 +74,13 @@ DeepSeek API Key 在设置页配置(按访客隔离):
|
|
|
74
74
|
|
|
75
75
|
详见:[Agent 开发闭环](https://xuhuafeifei.github.io/mdocs-site/docs/usage/agent-dev-loop.html) · [CLI Token](https://xuhuafeifei.github.io/mdocs-site/docs/usage/cli-token.html)
|
|
76
76
|
|
|
77
|
-
###
|
|
77
|
+
### 编辑与协作
|
|
78
78
|
|
|
79
|
-
斜杠菜单插入 Meta2d / Markmap
|
|
79
|
+
斜杠菜单插入 Meta2d / Markmap 等;工作空间、评论、收藏等能力齐全。
|
|
80
80
|
|
|
81
81
|
<p align="center">
|
|
82
82
|
<img src="docs/screenshots/slash-menu.png" alt="斜杠菜单" width="420" />
|
|
83
|
-
<img src="docs/screenshots/domain-manager.png" alt="
|
|
83
|
+
<img src="docs/screenshots/domain-manager.png" alt="工作空间" width="420" />
|
|
84
84
|
</p>
|
|
85
85
|
|
|
86
86
|
<p align="center">
|
|
@@ -114,7 +114,7 @@ mdocs update
|
|
|
114
114
|
|
|
115
115
|
```
|
|
116
116
|
src/
|
|
117
|
-
server/ Express API、Agent
|
|
117
|
+
server/ Express API、Agent、文档与工作空间、CLI
|
|
118
118
|
web/ Vite + React 前端
|
|
119
119
|
shared/ 两侧共用类型与路径工具
|
|
120
120
|
```
|
|
@@ -1,13 +1,40 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: changelog
|
|
3
3
|
name: "更新日志"
|
|
4
|
-
description: "
|
|
4
|
+
description: "现行文档里,产品概念「域」已改称 **工作空间**。下面各版本仍按当时的叫法记录。"
|
|
5
5
|
keywords: []
|
|
6
6
|
source: changelog.md
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# 更新日志
|
|
10
10
|
|
|
11
|
+
现行文档里,产品概念「域」已改称 **工作空间**。下面各版本仍按当时的叫法记录。
|
|
12
|
+
|
|
13
|
+
## v1.3.16
|
|
14
|
+
|
|
15
|
+
### 顶栏状态
|
|
16
|
+
- **「编辑中 / 已发布」只跟未发布的本地草稿**:没有草稿就是已发布;草稿写入或删除后,顶栏同一轮改字。打开已有草稿时不再先闪一下「已发布」
|
|
17
|
+
- 打字后仍等约 1 秒落盘,才变成「编辑中」
|
|
18
|
+
|
|
19
|
+
### AI 帮写
|
|
20
|
+
- 桌面端「完成并写回」「取消」改用应用内确认框。系统确认框在桌面壳里不会弹出,所以之前点了没反应
|
|
21
|
+
- 完成时只问「是否回写」:确认写入本地草稿,不自动发布;返回留在帮写界面
|
|
22
|
+
|
|
23
|
+
### 手机端
|
|
24
|
+
- 窄屏阅读顶栏增加拉取更新按钮
|
|
25
|
+
|
|
26
|
+
## v1.3.15
|
|
27
|
+
|
|
28
|
+
### 升级
|
|
29
|
+
- **`mdocs update` 后命令可执行**:覆盖安装时给 `package.json` 里的 bin 加上可执行位,避免升级后 `/usr/bin/mdocs` Permission denied
|
|
30
|
+
|
|
31
|
+
### 附件下载
|
|
32
|
+
- 非图片附件一律 `application/octet-stream` + `Content-Disposition: attachment`
|
|
33
|
+
- 桌面壳遇到附件链接时交给系统浏览器下载,不再在窗口里打开预览
|
|
34
|
+
|
|
35
|
+
### 手机端
|
|
36
|
+
- 窄屏隐藏「AI 帮写」入口(欢迎页按钮、文档顶栏、助手打开帮写)
|
|
37
|
+
|
|
11
38
|
## v1.3.14
|
|
12
39
|
|
|
13
40
|
同 v1.3.13(npm 上 1.3.13 卡在 staged,改发此版本)。
|
|
@@ -19,7 +19,7 @@ mdocs 的存储模型将文档目录树映射为两层结构:
|
|
|
19
19
|
|
|
20
20
|
| `file_type` | 含义 | `relative_path` | `parent_id` |
|
|
21
21
|
|-------------|------|-----------------|-------------|
|
|
22
|
-
| `dir` | 目录 |
|
|
22
|
+
| `dir` | 目录 | 工作空间内相对路径(如 `folder/sub`) | 指向父目录的 `document_id` |
|
|
23
23
|
| `md` | 文档 | 完整路径(如 `folder/sub/a.md`) | 指向父目录的 `document_id` |
|
|
24
24
|
|
|
25
25
|
目录树由 `parent_id` 关系直接确定,不依赖路径切割。
|
|
@@ -32,7 +32,7 @@ mdocs 的存储模型将文档目录树映射为两层结构:
|
|
|
32
32
|
~/.mdocs/files/docs/{domain_id}/folder/sub/a.md
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
- `{domain_id}`
|
|
35
|
+
- `{domain_id}` 是工作空间的唯一标识,每个工作空间拥有独立的磁盘子目录
|
|
36
36
|
- 磁盘路径与 `relative_path` 一一对应
|
|
37
37
|
- 目录节点(`file_type = 'dir'`)不写磁盘文件,仅存在于数据库中
|
|
38
38
|
|
|
@@ -49,5 +49,5 @@ mdocs 的存储模型将文档目录树映射为两层结构:
|
|
|
49
49
|
|
|
50
50
|
- SQLite 管理逻辑结构(谁是父目录、谁有权限)
|
|
51
51
|
- 文件系统管理实际数据(Markdown / JSON 内容)
|
|
52
|
-
-
|
|
52
|
+
- 工作空间之间在磁盘上完全隔离,不同工作空间可以拥有同名文件
|
|
53
53
|
|
|
@@ -1,70 +1,72 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: core-concepts-domain
|
|
3
|
-
name: "
|
|
4
|
-
description: "
|
|
3
|
+
name: "工作空间(Workspace)"
|
|
4
|
+
description: "文档和侧栏里的隔离单元叫**工作空间**。早期文案叫「域」,指的是同一件事。数据库和接口字段仍是 `domain_id`,那是实现名,不是给新用户看的概念。"
|
|
5
5
|
keywords: []
|
|
6
6
|
source: core-concepts/domain.md
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
#
|
|
9
|
+
# 工作空间(Workspace)
|
|
10
|
+
|
|
11
|
+
文档和侧栏里的隔离单元叫**工作空间**。早期文案叫「域」,指的是同一件事。数据库和接口字段仍是 `domain_id`,那是实现名,不是给新用户看的概念。
|
|
10
12
|
|
|
11
13
|
## 设计意图
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
工作空间是最顶层的逻辑边界,用来:
|
|
14
16
|
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
17
|
+
- 让不同团队或项目的文档,在工作空间列表和侧栏树上彼此分开
|
|
18
|
+
- 在不引入复杂权限系统的前提下,划出谁能进来
|
|
19
|
+
- 给每个用户一个「个人工作空间」当私密区
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
一篇文档通过 `domain_id` 归属到某一个工作空间。
|
|
20
22
|
|
|
21
|
-
##
|
|
23
|
+
## 三种类型
|
|
22
24
|
|
|
23
|
-
|
|
|
24
|
-
|
|
25
|
-
| **public
|
|
26
|
-
| **restricted
|
|
27
|
-
| **private
|
|
25
|
+
| 类型 | 谁可以进入 | 文档 permission 档位 | 用途 |
|
|
26
|
+
|------|-----------|---------------------|------|
|
|
27
|
+
| **public**(公开) | 任何人(含未登录访客) | 仅 `public_read(3)`、`public_write(4)` | 开放协作,默认工作空间 |
|
|
28
|
+
| **restricted**(受限) | **成员**与**创建者**为完整入口;只被某篇文档邀请的访客是受限入口(能看相关文档,**不能**凭此在工作空间里任意新建) | 仅 `domain_read(1)`、`domain_write(2)` | 团队知识库 |
|
|
29
|
+
| **private**(个人) | 仅创建者(`domain_id` 等于该访客的 `visitor_id`) | 0~4 **全部**档位 | 私人笔记本 |
|
|
28
30
|
|
|
29
|
-
>
|
|
31
|
+
> 类型会约束里面的文档能选哪些 permission:公开工作空间不允许 private 档,受限工作空间不允许 public 档。
|
|
30
32
|
|
|
31
33
|
## 五级文档权限
|
|
32
34
|
|
|
33
|
-
每篇文档有一个 `permission
|
|
35
|
+
每篇文档有一个 `permission`(0~4),定义谁能读、谁能写(前提是对方已经能碰到这篇文档):
|
|
34
36
|
|
|
35
37
|
| 数值 | 名称 | 谁可读 | 谁可写 |
|
|
36
38
|
|------|------|--------|--------|
|
|
37
39
|
| 0 | private | 仅 owner | 仅 owner |
|
|
38
|
-
| 1 | domain_read |
|
|
39
|
-
| 2 | domain_write |
|
|
40
|
+
| 1 | domain_read | 工作空间成员 | 仅 owner |
|
|
41
|
+
| 2 | domain_write | 工作空间成员 | 工作空间成员 |
|
|
40
42
|
| 3 | public_read | 任何人 | 仅 owner |
|
|
41
43
|
| 4 | public_write | 任何人 | 任何人 |
|
|
42
44
|
|
|
43
|
-
|
|
45
|
+
`domain_read` / `domain_write` 是字段名,界面上对应「工作空间内可读 / 可编辑」。
|
|
44
46
|
|
|
45
|
-
###
|
|
47
|
+
### 档位与类型的约束
|
|
46
48
|
|
|
47
|
-
|
|
|
48
|
-
|
|
49
|
-
| **public** | **仅** `public_read(3)`、`public_write(4)` |
|
|
50
|
-
| **restricted** | **仅** `domain_read(1)`、`domain_write(2)` |
|
|
51
|
-
| **private** | **全部** 0~4 |
|
|
49
|
+
| 类型 | 允许的文档 permission | 说明 |
|
|
50
|
+
|------|----------------------|------|
|
|
51
|
+
| **public** | **仅** `public_read(3)`、`public_write(4)` | 公开工作空间里不能出现「仅成员」或「仅 owner」的文档 |
|
|
52
|
+
| **restricted** | **仅** `domain_read(1)`、`domain_write(2)` | 文档不暴露给成员以外的人;外人要看,靠 **邀请** |
|
|
53
|
+
| **private** | **全部** 0~4 | 不设上限;个人工作空间里的文档也可以设成 `public_write(4)` 对外公开 |
|
|
52
54
|
|
|
53
55
|
### 创建默认值
|
|
54
56
|
|
|
55
|
-
|
|
|
56
|
-
|
|
57
|
+
| 类型 | 新建文档默认 permission |
|
|
58
|
+
|------|----------------------|
|
|
57
59
|
| private | `private(0)` |
|
|
58
60
|
| restricted | `domain_read(1)` |
|
|
59
61
|
| public | `public_read(3)` |
|
|
60
62
|
|
|
61
|
-
##
|
|
63
|
+
## 邀请:单独一层
|
|
62
64
|
|
|
63
|
-
|
|
65
|
+
在五级权限之上,还有 **邀请**:文档创建者可以给任意一篇文档加人(read / edit),不受当前档位限制。
|
|
64
66
|
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
- 鉴权顺序:owner →
|
|
67
|
+
- 邀请不是 0~4 里的一档
|
|
68
|
+
- 邀请与工作空间成员**互斥**:已经是成员的人,不能再被邀请
|
|
69
|
+
- 鉴权顺序:owner → 档位 → 邀请兜底
|
|
68
70
|
|
|
69
71
|
详见 [文档级邀请](./invitation.md)。
|
|
70
72
|
|
|
@@ -73,34 +75,35 @@ mdocs 中的「域」是最顶层的逻辑隔离单元。它的设计目标是
|
|
|
73
75
|
```
|
|
74
76
|
读权限:
|
|
75
77
|
1. owner → 放行
|
|
76
|
-
2.
|
|
77
|
-
3.
|
|
78
|
-
4.
|
|
78
|
+
2. 公开工作空间 → 3/4 档放行
|
|
79
|
+
3. 受限工作空间 → 成员走 1/2 档;非成员走邀请
|
|
80
|
+
4. 个人工作空间 → 按档位实际语义 + 邀请
|
|
79
81
|
|
|
80
82
|
写权限:
|
|
81
83
|
1. owner → 放行
|
|
82
|
-
2.
|
|
83
|
-
3.
|
|
84
|
-
4.
|
|
84
|
+
2. 公开工作空间 → 仅 4 档放行
|
|
85
|
+
3. 受限工作空间 → 仅 2 档且为成员;非成员走邀请
|
|
86
|
+
4. 个人工作空间 → 按档位实际语义
|
|
85
87
|
```
|
|
86
88
|
|
|
87
|
-
##
|
|
89
|
+
## 个人工作空间(Private)
|
|
88
90
|
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
91
|
+
- 访客注册时自动创建一个个人工作空间,`domain_id` 等于该访客的 `visitor_id`
|
|
92
|
+
- 库里的名字以「个人域」结尾(历史存储后缀),界面显示为「某某个人工作空间」
|
|
93
|
+
- 只有创建者一人,不通过 `domain_members` 维护多人
|
|
94
|
+
- 文档权限可以是 0~4 任意档;名为「个人」也可以把某一篇公开
|
|
92
95
|
- 创建文档时默认权限为 `private(0)`
|
|
93
96
|
|
|
94
97
|
## 列表 vs 直链
|
|
95
98
|
|
|
96
|
-
|
|
99
|
+
侧栏树、工作空间里的列表会按「能不能进这个工作空间」过滤。若某人拿着**文档 ID 直链**,读权限主要由**文档档位 + 邀请**决定。例如受限工作空间里一篇 `domain_read` 文档,非成员不可读(除非被邀请)。需要更强保密时,用 **`private(0)`**。
|
|
97
100
|
|
|
98
101
|
## 设计取舍
|
|
99
102
|
|
|
100
|
-
-
|
|
101
|
-
-
|
|
103
|
+
- **不引入团队 / 组织树**:工作空间只是一块地方。小团队通常一个公开工作空间,再加每人一个个人工作空间就够
|
|
104
|
+
- **数据库和磁盘都分开**:每个工作空间在磁盘上有自己的目录(`~/.mdocs/files/docs/{domain_id}/`),查询用 `domain_id` 过滤。把文档挪到另一个工作空间,要改库并移动文件
|
|
102
105
|
|
|
103
|
-
|
|
106
|
+
**操作说明**(创建受限工作空间、维护成员、套用模板):见 [受限工作空间成员与名单模板](../usage/domain-members.md)。
|
|
104
107
|
|
|
105
108
|
行为以 mdocs 应用代码与 SQLite schema 为准;随版本迭代本页会跟进。
|
|
106
109
|
|
|
@@ -30,7 +30,7 @@ source: core-concepts/invitation.md
|
|
|
30
30
|
## 设计要点
|
|
31
31
|
|
|
32
32
|
1. **基于访客 ID,而非邮箱**:mdocs 没有用户账户系统,所以邀请的载体是访客 ID——每个浏览器注册后获得的唯一标识
|
|
33
|
-
2.
|
|
33
|
+
2. **文档级粒度**:不是整个工作空间或整个项目,而是单篇文档。适合「这篇文档需要给某人看一下」的场景
|
|
34
34
|
3. **与档位解耦**:邀请不是权限档位——它独立于文档的五级权限(0~4)之上。任何档位的文档都可以叠加 invite,不受限制
|
|
35
35
|
4. **所有者和受邀者的关系在数据库中存储**:
|
|
36
36
|
|
|
@@ -43,19 +43,19 @@ document_invites 表
|
|
|
43
43
|
|
|
44
44
|
邀请仅由文档所有者管理。所有者可以随时撤销邀请。
|
|
45
45
|
|
|
46
|
-
##
|
|
46
|
+
## 与工作空间成员互斥
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
一条重要约束:**已是某工作空间成员的人,不能再被该工作空间内文档邀请**。工作空间成员已经拥有工作空间内文档的读/写权限(取决于档位),invite 是给**工作空间外人员**的通道。
|
|
49
49
|
|
|
50
|
-
- **restricted
|
|
51
|
-
- **private
|
|
52
|
-
- **public
|
|
50
|
+
- **restricted(受限)**:工作空间成员直接走 `domain_read(1)` / `domain_write(2)` 档位语义,不需要也不应该被 invite
|
|
51
|
+
- **private(个人)**:工作空间内仅有创建者一人,实际效果相同——无法 invite 创建者
|
|
52
|
+
- **public(公开)**:公开工作空间没有成员名单,invite 不会因此被拦截
|
|
53
53
|
|
|
54
|
-
## invite
|
|
54
|
+
## invite 在各工作空间类型中的角色
|
|
55
55
|
|
|
56
|
-
|
|
|
56
|
+
| 类型 | invite 的作用 |
|
|
57
57
|
|--------|-------------|
|
|
58
58
|
| **public** | 对非 owner 补充写权限(`public_read(3)` 档文档默认仅 owner 可写);`public_write(4)` 档下用不到 invite |
|
|
59
|
-
| **restricted** |
|
|
59
|
+
| **restricted** | 非成员通过 invite 获得**某篇文档**的读/写能力,同时在服务端呈现「经文档邀请」的入口(不足以在工作空间内任意新建文档;在工作空间内随意创建内容需成为 `domain_members` 成员) |
|
|
60
60
|
| **private** | 非 owner 能否访问取决于文件档位 + invite 叠加。例如 `private(0)` 档文档,非 owner 只能通过 invite 进入 |
|
|
61
61
|
|
|
@@ -79,6 +79,6 @@ pnpm mdocs visitor list --all # 看全部(含已禁用的)
|
|
|
79
79
|
|
|
80
80
|
- **放弃重型「用户体系」**换低准入;跨端能力用「可选密码」补齐,而不是一上来就上完整账号平台
|
|
81
81
|
- **HttpOnly Cookie 日常鉴权**:服务端重启不轻易丢当前浏览器会话
|
|
82
|
-
-
|
|
82
|
+
- **可以匿名浏览**:不注册也能看到公开工作空间的公开文档
|
|
83
83
|
- **恢复码**:服务早期 Cookie-only 身份的自助找回;密码普及后降为兼容能力
|
|
84
84
|
|
|
@@ -34,8 +34,8 @@ source: deployment/requirements.md
|
|
|
34
34
|
data.sqlite # 元数据(文档索引、访客、权限、审计日志)
|
|
35
35
|
files/
|
|
36
36
|
docs/
|
|
37
|
-
{domain_id}/ #
|
|
38
|
-
a.md #
|
|
37
|
+
{domain_id}/ # 每个工作空间独立的子目录
|
|
38
|
+
a.md # 工作空间内文档(Lexical JSON 格式)
|
|
39
39
|
assets/ # 上传的附件
|
|
40
40
|
logs/ # 运行日志(按日期轮转)
|
|
41
41
|
```
|
|
@@ -15,7 +15,7 @@ source: getting-started/first-kb.md
|
|
|
15
15
|
|
|
16
16
|
## 创建文档
|
|
17
17
|
|
|
18
|
-
1.
|
|
18
|
+
1. 注册完成后,点侧栏或欢迎页的「开始写作」
|
|
19
19
|
2. 输入文件名(如 `hello.md`),点击创建
|
|
20
20
|
3. 文档创建后自动进入编辑器
|
|
21
21
|
|
|
@@ -23,7 +23,7 @@ source: getting-started/first-kb.md
|
|
|
23
23
|
|
|
24
24
|

|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
点「开始写作」,创建 Markdown 文档。已有的文件夹仍会显示在左侧目录树里。
|
|
27
27
|
|
|
28
28
|
## 编辑与保存
|
|
29
29
|
|
|
@@ -89,9 +89,9 @@ mdocs start
|
|
|
89
89
|
data.sqlite # 元数据(文档索引、权限、访客、审计日志)
|
|
90
90
|
files/
|
|
91
91
|
docs/
|
|
92
|
-
{domain_id}/ #
|
|
93
|
-
a.md #
|
|
94
|
-
folder/ #
|
|
92
|
+
{domain_id}/ # 每个工作空间独立的子目录
|
|
93
|
+
a.md # 工作空间内文档
|
|
94
|
+
folder/ # 工作空间内子目录(逻辑存在于数据库)
|
|
95
95
|
b.md
|
|
96
96
|
assets/ # 上传的附件
|
|
97
97
|
logs/ # 运行日志
|
|
@@ -23,7 +23,7 @@ source: index.md
|
|
|
23
23
|
|
|
24
24
|
## 核心设计
|
|
25
25
|
|
|
26
|
-
- [
|
|
26
|
+
- [工作空间](./core-concepts/domain.md)——团队与个人的逻辑边界
|
|
27
27
|
- [无账户身份识别](./core-concepts/no-account.md)——打开即用,无需注册
|
|
28
28
|
- [文档级邀请](./core-concepts/invitation.md)——精细到单篇文档的权限控制
|
|
29
29
|
|
|
@@ -38,7 +38,7 @@ source: index.md
|
|
|
38
38
|
- [我的文章与邀请](./usage/my-documents.md)——集中管理创作内容
|
|
39
39
|
- [收藏功能](./usage/bookmarks.md)——快速标记重要文档
|
|
40
40
|
- [文档评论](./usage/comments.md)——协作讨论与反馈
|
|
41
|
-
- [
|
|
41
|
+
- [受限工作空间成员与名单模板](./usage/domain-members.md)——团队工作空间邀人、复用成员名单
|
|
42
42
|
|
|
43
43
|
## 部署运维
|
|
44
44
|
|
package/agent-skills/index.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
{
|
|
14
14
|
"id": "changelog",
|
|
15
15
|
"name": "更新日志",
|
|
16
|
-
"description": "
|
|
16
|
+
"description": "现行文档里,产品概念「域」已改称 **工作空间**。下面各版本仍按当时的叫法记录。",
|
|
17
17
|
"keywords": [],
|
|
18
18
|
"source": "changelog.md"
|
|
19
19
|
},
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"id": "core-concepts-domain",
|
|
29
|
-
"name": "
|
|
30
|
-
"description": "
|
|
29
|
+
"name": "工作空间(Workspace)",
|
|
30
|
+
"description": "文档和侧栏里的隔离单元叫**工作空间**。早期文案叫「域」,指的是同一件事。数据库和接口字段仍是 `domain_id`,那是实现名,不是给新用户看的概念。",
|
|
31
31
|
"keywords": [],
|
|
32
32
|
"source": "core-concepts/domain.md"
|
|
33
33
|
},
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
{
|
|
112
112
|
"id": "usage-bookmarks",
|
|
113
113
|
"name": "收藏功能",
|
|
114
|
-
"description": "
|
|
114
|
+
"description": "收藏功能帮助你快速标记和访问重要文档。已收藏的文档会出现在「我的收藏」列表中,便于跨工作空间快速访问。",
|
|
115
115
|
"keywords": [],
|
|
116
116
|
"source": "usage/bookmarks.md"
|
|
117
117
|
},
|
|
@@ -131,8 +131,8 @@
|
|
|
131
131
|
},
|
|
132
132
|
{
|
|
133
133
|
"id": "usage-domain-members",
|
|
134
|
-
"name": "
|
|
135
|
-
"description": "本文说明如何在 mdocs 里维护 **restricted
|
|
134
|
+
"name": "受限工作空间成员与名单模板",
|
|
135
|
+
"description": "本文说明如何在 mdocs 里维护 **restricted(受限)工作空间** 的成员,以及如何使用 **成员模板** 减少重复勾选。与权限模型相关的设计背景见 [工作空间](../core-concepts/domain.md)。",
|
|
136
136
|
"keywords": [],
|
|
137
137
|
"source": "usage/domain-members.md"
|
|
138
138
|
},
|
|
@@ -181,7 +181,7 @@
|
|
|
181
181
|
{
|
|
182
182
|
"id": "usage-my-documents",
|
|
183
183
|
"name": "我的文章",
|
|
184
|
-
"description": "
|
|
184
|
+
"description": "「我的文章」功能聚合展示你创建的所有文档,集中管理跨工作空间内容,并提供快捷的文档操作入口。",
|
|
185
185
|
"keywords": [],
|
|
186
186
|
"source": "usage/my-documents.md"
|
|
187
187
|
},
|
|
@@ -209,7 +209,7 @@
|
|
|
209
209
|
{
|
|
210
210
|
"id": "usage-settings",
|
|
211
211
|
"name": "设置页面",
|
|
212
|
-
"description": "设置页面是 mdocs
|
|
212
|
+
"description": "设置页面是 mdocs 的集中配置中心:身份与密码、收藏与文章、工作空间与成员模板、智能助手、草稿同步等都在这里。",
|
|
213
213
|
"keywords": [],
|
|
214
214
|
"source": "usage/settings.md"
|
|
215
215
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: usage-bookmarks
|
|
3
3
|
name: "收藏功能"
|
|
4
|
-
description: "
|
|
4
|
+
description: "收藏功能帮助你快速标记和访问重要文档。已收藏的文档会出现在「我的收藏」列表中,便于跨工作空间快速访问。"
|
|
5
5
|
keywords: []
|
|
6
6
|
source: usage/bookmarks.md
|
|
7
7
|
---
|
|
@@ -10,7 +10,7 @@ source: usage/bookmarks.md
|
|
|
10
10
|
|
|
11
11
|
## 功能概述
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
收藏功能帮助你快速标记和访问重要文档。已收藏的文档会出现在「我的收藏」列表中,便于跨工作空间快速访问。
|
|
14
14
|
|
|
15
15
|
## 收藏文档
|
|
16
16
|
|
|
@@ -34,7 +34,7 @@ source: usage/bookmarks.md
|
|
|
34
34
|
|
|
35
35
|

|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
表格列包括:标题、工作空间、作者、收藏时间;行内可 **取消收藏**。
|
|
38
38
|
|
|
39
39
|
收藏列表的显示规则:
|
|
40
40
|
- 正常文档:可点击打开
|
|
@@ -62,7 +62,7 @@ source: usage/bookmarks.md
|
|
|
62
62
|
|
|
63
63
|
### 无权限文档的收藏
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
即使你失去了某篇文档的访问权限(如被移出工作空间成员),收藏项仍然保留。你可以手动取消收藏来清理。
|
|
66
66
|
|
|
67
67
|
---
|
|
68
68
|
|
|
@@ -73,7 +73,7 @@ source: usage/bookmarks.md
|
|
|
73
73
|
| 文档权限 | 能否收藏 | 能否查看内容 |
|
|
74
74
|
|---------|----------|-------------|
|
|
75
75
|
| 公开可读/可编辑 | ✅ 可以 | ✅ 可以 |
|
|
76
|
-
|
|
|
76
|
+
| 受限工作空间成员 | ✅ 可以 | ✅ 可以 |
|
|
77
77
|
| 文档被邀请 | ✅ 可以 | ✅ 可以 |
|
|
78
78
|
| 无权限但已收藏 | ➖ 保持收藏 | ❌ 无法打开 |
|
|
79
79
|
|
|
@@ -73,13 +73,13 @@ export MDOCS_SERVER="http://101.132.222.88:4000"
|
|
|
73
73
|
|
|
74
74
|
| 命令 | 用途 |
|
|
75
75
|
| ---------------------------------------------------------------------------------- | ----------------------------- |
|
|
76
|
-
| `search --q <关键词> [--domain
|
|
76
|
+
| `search --q <关键词> [--domain <工作空间 ID>] [--topn <数量>]` | 全文检索文档 |
|
|
77
77
|
| `get <文档ID>` | 读取文档完整内容 |
|
|
78
|
-
| `create --name <文件名.md> --content <正文> [--domain
|
|
78
|
+
| `create --name <文件名.md> --content <正文> [--domain <工作空间 ID>] [--parent <目录ID>]` | 创建文档 |
|
|
79
79
|
| `update <文档ID> --content <新正文> [--title <新标题>]` | 更新文档内容 |
|
|
80
|
-
| `domains` | 列出当前 Token
|
|
81
|
-
| `mkdir --domain
|
|
82
|
-
| `ls <documentId>` 或 `ls "关键词" --domain
|
|
80
|
+
| `domains` | 列出当前 Token 可访问的所有工作空间 |
|
|
81
|
+
| `mkdir --domain <工作空间 ID> --name <目录名> [--parent <目录ID>]` | 创建目录 |
|
|
82
|
+
| `ls <documentId>` 或 `ls "关键词" --domain <工作空间 ID>` | 列出目录下子节点 |
|
|
83
83
|
|
|
84
84
|
### 使用示例
|
|
85
85
|
|
|
@@ -92,7 +92,7 @@ node ~/.mdocs-cli/mdocs.mjs create \
|
|
|
92
92
|
--name "笔记.md" \
|
|
93
93
|
--title "我的笔记" \
|
|
94
94
|
--content "# 标题\n\n正文内容" \
|
|
95
|
-
--domain
|
|
95
|
+
--domain <工作空间 ID> \
|
|
96
96
|
--parent <目录ID>
|
|
97
97
|
|
|
98
98
|
# 更新文档
|
|
@@ -103,7 +103,7 @@ source: usage/comments.md
|
|
|
103
103
|
|---------|-------------|--------------|------------------|
|
|
104
104
|
| 公开可读 | ✅ 可以 | ❌ 不可以 | ❌ 不可以 |
|
|
105
105
|
| 公开可编辑 | ✅ 可以 | ✅ 可以 | ✅ 可以 |
|
|
106
|
-
|
|
|
106
|
+
| 受限工作空间成员 | ✅ 可以 | ✅ 可以 | ✅ 可以 |
|
|
107
107
|
| 被邀请只读 | ✅ 可以 | ❌ 不可以 | ❌ 不可以 |
|
|
108
108
|
| 被邀请可编辑 | ✅ 可以 | ✅ 可以 | ✅ 可以 |
|
|
109
109
|
|