dsh-tiddlywiki 0.16.20 → 0.16.22
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 +306 -267
- package/docs/seed-initialization.md +47 -22
- package/lib/client.bundle.js +53 -26
- package/lib/client.js +53 -26
- package/lib/index.js +395 -17
- package/lib/index.js.map +1 -1
- package/package.json +86 -86
- package/src/client/index.ts +36 -0
- package/src/client/panel.ts +4 -0
- package/src/client/rightbar-tab.ts +440 -0
- package/src/client/settings-page.ts +1 -0
- package/src/client/styles.ts +27 -0
- package/src/client/ui-config.ts +5 -2
- package/src/host/config.ts +7 -0
- package/src/host/routes.ts +2 -0
- package/src/host/seed-home.ts +96 -92
- package/src/host/seed-notes.ts +8 -1
- package/src/host/seed-starter-docs.ts +251 -0
- package/src/host/seed-ui-styles.ts +74 -0
- package/src/host/seeds.ts +71 -25
- package/src/index.ts +7 -4
package/README.md
CHANGED
|
@@ -1,267 +1,306 @@
|
|
|
1
|
-
# dsh-tiddlywiki
|
|
2
|
-
|
|
3
|
-
> 把 **TiddlyWiki 5**
|
|
4
|
-
|
|
5
|
-
[](https://www.npmjs.com/package/dsh-tiddlywiki)
|
|
6
|
-
[](https://github.com/bbqisbbq/dsh-tiddlywiki/blob/main/LICENSE)
|
|
7
|
-
[](https://github.com/bbqisbbq/dsh-tiddlywiki)
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
##
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
#
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
src/
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
-
|
|
1
|
+
# dsh-tiddlywiki
|
|
2
|
+
|
|
3
|
+
> 把 **TiddlyWiki 5** 变成你和 Agent 之间的**文档中心**:一个嵌在 DSH 里、人手一个的私人知识库——Agent 用 `tiddlywiki_*` 工具读写,你在界面里用完整 TW 编辑器记录,一切通过 **git** 自动同步备份。
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/dsh-tiddlywiki)
|
|
6
|
+
[](https://github.com/bbqisbbq/dsh-tiddlywiki/blob/main/LICENSE)
|
|
7
|
+
[](https://github.com/bbqisbbq/dsh-tiddlywiki)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 🗂 它是什么:你的「文档 × Agent」一站式文档中心
|
|
12
|
+
|
|
13
|
+
这个插件**首先不是一个"AI 记忆工具"**(虽然它顺带就是)。它把一件事做顺了——**文档和人、文档和 Agent 之间的协作**:
|
|
14
|
+
|
|
15
|
+
- **TiddlyWiki 天生适合当文档中心**:卡片化组织(标签 / 双向链接 / 一键成文 / 一个文件夹就是整个 wiki)、纯文本 git 仓库天然可迁移可备份。它能是你的**私人笔记本**、**GTD 工具**、**Agent 的记忆库**,甚至让 AI 帮你把电子书导入 TW 来阅读批注——**TW + DSH 能做到的唯一限制,只是人类的想象力**。
|
|
16
|
+
- **人会参与**:完整 TW 5 编辑器内嵌在 DSH 里,随时翻、随时改、随时批注。文档不是 Agent 写给你的黑盒,而是**方便人类参与的文档中心**。
|
|
17
|
+
- **Agent 也能进**:Agent 用 10 个 `tiddlywiki_*` 工具读写;TW 里「发送给 Agent」把笔记一键注入某个会话;每个会话顶部自动汇总它读写过的 wiki 笔记。**切换会话、方案终结、多轮合作,成果最终都回到文档里**——文档成为跨会话、跨 Agent 的公共底座。
|
|
18
|
+
- **AI 填平 TiddlyWiki 的门槛**:TW 功能强大但上手有门槛,这正是 AI 擅长的——让 Agent 按你的习惯定制首页、标签体系、样式与工作流。曾经要折腾 Obsidian / Logseq 插件体系才能搭出来的个人知识库,现在**一句话就能初始化一整套开箱即用的文档中心**。
|
|
19
|
+
|
|
20
|
+
> Obsidian、Logseq 也能做到其中一部分,但**从没有像这样一站式地顺畅**:编辑器、工具、会话、同步、主题全部在同一个界面里闭环。
|
|
21
|
+
|
|
22
|
+
## ✨ 特性一览
|
|
23
|
+
|
|
24
|
+
| 能力 | 说明 |
|
|
25
|
+
|---|---|
|
|
26
|
+
| 🏠 **文档中心起步包** | 首次安装自动 seed:插件说明 + 「示例与文档」(主题汇总模板 / 教程 / 三个示例主题页),首页「📚 插件文档」栏一键查阅;**同名 tiddler 已存在一律安全跳过,绝不覆盖你的数据**(v0.16.22) |
|
|
27
|
+
| 🎨 **自定义样式** | 「自定义样式」seed:编辑器美化 / 窄屏侧栏隐藏 / menubar 加高 / 批注弹窗等 5 张通用样式表,新 wiki 也能一键初始化(可选,v0.16.22) |
|
|
28
|
+
| 🤖 **Agent 工具** | 10 个 `tiddlywiki_*` 工具:检索、读写、批量、重命名、删除、git 同步与冲突解决(v0.16.20 起检索/最近在**服务端**排除二进制附件,大 wiki 上从 515MB/17s 降到 ~0.4s) |
|
|
29
|
+
| 📊 **回复流卡片** | 工具结果显示原生 TW 卡片;`[标题](/dsh-tiddlywiki/tw/#标题)` 点击直达 TW 面板 |
|
|
30
|
+
| 📤 **发送给 Agent** | TW 笔记工具栏一键把当前笔记注入所选 dsh 会话(可选工作模式/权限/附加说明) |
|
|
31
|
+
| 🧭 **内嵌编辑器** | 中央列内嵌完整 TW 5 编辑器(同源代理,Tailscale/内网/域名/HTTPS 均可) |
|
|
32
|
+
| 🗂️ **右侧边栏 Tab** | DSH 新右侧栏(rightbar):首页「TiddlyWiki 知识库」入口一键打开,与聊天并排;链接点击可直达(v0.16.21) |
|
|
33
|
+
| 📚 **会话知识库 Tab** | 每个会话顶部汇总本会话读写过的 wiki 笔记,TW 原生渲染(`/tw/render` 片段管线,v0.16.19) |
|
|
34
|
+
| 📝 **快速笔记** | 输入框上方快捷按钮或右下角「知识库」FAB;原生编辑页或 Markdown 卡片两种模式;首页内置「快速记笔记(完整编辑器)」 |
|
|
35
|
+
| ✅ **待办四象限** | 首页看板:任务打 `todo` 标签即收录,拖动即可分类/完成(正文附 `q` 字段),逾期/今日到期自动统计 |
|
|
36
|
+
| 🌗 **跟随主题** | 内嵌 TW 自适应 DSH 深浅主题(纯内存切换,不进 git) |
|
|
37
|
+
| 🔄 **一键同步** | FAB「同步」一键 pull→commit→push,状态点实时反映 git 状态 |
|
|
38
|
+
| 💾 **数据即备份** | wiki 文件夹本身就是 git 仓库,自动 commit(60s 防抖) |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 📦 安装
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# ① npm 发布包(推荐)
|
|
46
|
+
dsh plugin --profile web add dsh-tiddlywiki
|
|
47
|
+
|
|
48
|
+
# ② 直接从 GitHub 安装
|
|
49
|
+
dsh plugin --profile web add github:bbqisbbq/dsh-tiddlywiki
|
|
50
|
+
|
|
51
|
+
# ③ 本地开发(link 方式,改完 src 后 npm run build 即生效)
|
|
52
|
+
dsh plugin --profile web add link:/path/to/dsh-tiddlywiki
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
装完**重启 dsh web** 生效。首次启动自动完成:初始化 wiki 目录、`git init` 并提交基线、写入**功能必需的 seed**(发送给 Agent 按钮 + 原生渲染路由 + 同源代理基址)与**起步文档**(插件说明 + 示例与文档);首页/所有文章/自定义样式等为可选项,需要时在设置页「初始化」手动写入。
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 🚀 快速开始
|
|
60
|
+
|
|
61
|
+
1. **安装并重启** dsh web。
|
|
62
|
+
2. 侧边栏「**TiddlyWiki**」→ 中央打开完整 TW 编辑器。
|
|
63
|
+
3. **随手记**:点输入框上方「📝」或右下角「知识库」→「快速笔记」;或在首页直接用「✍️ 快速记笔记」区块,写完保存即成为 tiddler 并自动进 git。
|
|
64
|
+
4. **看文档**:新 wiki 首页(初始化 home-index 后)有「**📚 插件文档**」栏——插件说明、汇总教程、模板都在里面,可自由删改。
|
|
65
|
+
5. **收工同步**:「知识库」→「🔁 同步」一键 push 备份。
|
|
66
|
+
6. **让 Agent 参与**:直接说「把刚才的会议纪要存进知识库」——Agent 用 `tiddlywiki_*` 工具读写。
|
|
67
|
+
7. **发笔记给 Agent**:TW 里打开笔记 → 工具栏「发送给 Agent」→ 选会话 → 作为消息注入。
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 📖 使用指南
|
|
72
|
+
|
|
73
|
+
### 🤖 Agent 工具(10 个)
|
|
74
|
+
|
|
75
|
+
| 工具 | 说明 |
|
|
76
|
+
|---|---|
|
|
77
|
+
| `tiddlywiki_search` | 检索(`query` + 可选 `tags[]/tag/since/type/limit`),返回标题/标签/修改时间/摘要 |
|
|
78
|
+
| `tiddlywiki_recent` | 最近修改的笔记(倒序),开工快速了解动态 |
|
|
79
|
+
| `tiddlywiki_list_tags` | 现有非系统 tag 及计数 |
|
|
80
|
+
| `tiddlywiki_get` | 读单个 tiddler 全文 |
|
|
81
|
+
| `tiddlywiki_put` | 写/覆盖;未指定类型时自动默认 `text/markdown`(`$:/` 系统条目除外) |
|
|
82
|
+
| `tiddlywiki_batch_put` | 批量写入(`overwrite=false` 跳过已存在) |
|
|
83
|
+
| `tiddlywiki_rename` | 重命名 + 尽量同步其他条目里的引用 |
|
|
84
|
+
| `tiddlywiki_delete` | 删除(幂等) |
|
|
85
|
+
| `tiddlywiki_git_sync` | `action: pull\|push\|sync` |
|
|
86
|
+
| `tiddlywiki_git_resolve` | pull 冲突后按 tiddler 二选一(`keep-local\|keep-remote`) |
|
|
87
|
+
|
|
88
|
+
**知识库同步纪律**:
|
|
89
|
+
1. 开工先 `tiddlywiki_git_sync action=pull`(rebase + autostash,真冲突会 abort 并报文件)。
|
|
90
|
+
2. 冲突后用 `tiddlywiki_git_resolve` 二选一解决,再重新 sync(**绝不自动覆盖**)。
|
|
91
|
+
3. 收工 `tiddlywiki_git_sync action=sync`(pull → commit → push)。
|
|
92
|
+
|
|
93
|
+
> 🔍 **检索/最近跳过二进制附件**(v0.16.20):`search`/`recent` 在**服务端**只取文本 tiddler(无 `type` 字段或 `text/*`),图片/音频/视频/PDF/zip 等二进制 tiddler(base64 正文)不参与检索、不出现在结果里——大 wiki(如数千张书籍扫描页图)从此从 515MB/17s 降到 ~0.4s,也不会被同名书页图刷屏。`get` 对二进制 tiddler 只返回元数据(`binary=true` + 类型/大小 + 链接),不返回 base64 正文。
|
|
94
|
+
|
|
95
|
+
> ⚠️ `fields.type` 是 TW 的**内容类型保留字段**(`text/markdown` 等),业务分类请放 `tags`,别写进 `fields.type`。
|
|
96
|
+
|
|
97
|
+
### 🧑💻 界面操作
|
|
98
|
+
|
|
99
|
+
- **📤 发送给 Agent**:TW 工具栏按钮(首次启动自动写入 wiki,ONE-SHOT)。弹层可选**附加说明**(位于消息末尾)、**工作模式**(Agent 预设)、**权限**(权限预设),按工作区分组选会话或新建。消息自带待办说明。
|
|
100
|
+
- **🧭 中央列编辑器**:侧边栏「TiddlyWiki」开关(显示名可改 `ui.sidebarLabel`)。
|
|
101
|
+
- **🗂️ 右侧边栏 Tab**(v0.16.21):DSH 新右侧栏展开后,首页会出现「**TiddlyWiki 知识库**」入口盒,点击即在右侧栏以 tab 形式打开完整 TW 编辑器——**与聊天并排**,适合边聊边查/边记。由 `ui.showRightbarTab` 控制(默认开);老版本 DSH(无右侧栏)自动跳过。
|
|
102
|
+
- **📝 快速笔记**:输入框上方快捷按钮(`ui.showQuickNoteDock`)或 FAB;`ui.quickNoteMode` 选打开方式——**native**(默认,直达 TW 原生编辑页,草稿自动续写)或 **card**(CodeMirror 6 Markdown 高亮、文件上传、多选 tag、草稿自动保存、「🕘 最近」载入、Ctrl+Enter 保存)。
|
|
103
|
+
- **🏠 首页(初始化 home-index 后)**:待办四象限(`todo` 标签 + `q` 字段拖放分类)+ 快速记笔记(完整编辑器,勾选「同时加入待办」即建任务)+「所有标签 / 所有文章」入口 +「📚 插件文档」栏(自动收录所有带 `dsh-docs` 标签的 seed 文档)。
|
|
104
|
+
- **📚 会话知识库 Tab**:会话顶部 Tab(`ui.tabLabel` 改名、`ui.showSessionTab` 关闭),自动汇总本会话读写过的 wiki 笔记(写入 volatile `$:/temp`,不落盘不进 git),**TW 原生渲染**(v0.16.19 起 `/tw/render` 片段管线,与回复流工具卡同链路),链接点击直达中央 TW 面板,不可编辑。
|
|
105
|
+
- **🌗 跟随 DSH 主题**:内嵌 TW 随 DSH 深浅切换 palette,纯内存不写回 wiki(`ui.followDshTheme`/`ui.darkPalette`)。
|
|
106
|
+
- **🔧 知识库 FAB**:统一入口(TW 面板开关/重载、快速笔记、同步、TW 服务状态悬停 tip)。同步拉取到新内容会自动重启 TW(同端口)。
|
|
107
|
+
- **⚙️ 设置页**:DSH 设置 →「TiddlyWiki 知识库」:状态/重启、常规配置、插件/主题/语言管理、**初始化**(seed 状态与重新初始化)。配置写入 `$:/plugins/dsh-tiddlywiki/config` tiddler,覆盖 cordis `config:` 块(tiddler 优先)。
|
|
108
|
+
|
|
109
|
+
### 🧩 初始化(一次性预置 seed):哪些「必备」,哪些「可有可无」
|
|
110
|
+
|
|
111
|
+
seed 是把「wiki 里预置内容」随插件分发的机制:**ONE-SHOT(只写缺失)+ 安全跳过(同名 tiddler 已存在绝不覆盖你的数据)**,需要时可「重新初始化」恢复、可「反初始化」移除。详细见 [docs/seed-initialization.md](docs/seed-initialization.md)。
|
|
112
|
+
|
|
113
|
+
| 层级 | seed | 说明 | 首次安装 |
|
|
114
|
+
|---|---|---|---|
|
|
115
|
+
| 🔒 **核心**(功能必需,不可移除) | `send-to-agent` | TW 工具栏「发送给 Agent」按钮插件 | 自动写 |
|
|
116
|
+
| | `render-route` | 原生渲染路由(回复流卡片 / 链接直达依赖) | 自动写 |
|
|
117
|
+
| | `tw-web-host` | TW 前端 API 基址 → 同源代理(内嵌编辑器前提) | 自动写 |
|
|
118
|
+
| 📖 **起步**(默认写、可移除,**想要完整体验建档案**) | `doc-note` | 「dsh-tiddlywiki 插件说明」笔记 | 自动写 |
|
|
119
|
+
| | `starter-docs` | 「示例与文档」:主题汇总页·模板 + 教程 + 三个示例主题页(日志/决策记录/排障) | 自动写 |
|
|
120
|
+
| 🎀 **可选**(默认不写、设置页手动、可移除,**可有可无**) | `home-index` | 首页(四象限待办 + 快速记笔记 + 所有标签/所有文章 + 📚 文档栏)——文档中心的「门面」 | 手动 |
|
|
121
|
+
| | `all-articles` | 「所有文章」两列分页总览(🤖 Agent / 👤 人工) | 手动 |
|
|
122
|
+
| | `ui-styles` | 自定义样式 5 张(编辑器美化 / 窄屏侧栏 / menubar 加高 / 批注弹窗等) | 手动 |
|
|
123
|
+
| | `menubar-theme` | menubar 顶栏跟随 DSH 主题换色 | 手动 |
|
|
124
|
+
|
|
125
|
+
- **想获得完整插件体验**:核心 3 项首次安装就有;再补 `home-index`(首页)+ `starter-docs`(示例文档)即是一个开箱即用的文档中心。
|
|
126
|
+
- **一个可选项都不想要**:完全不影响功能——设置页「反初始化」即可,核心项受保护不可移除。
|
|
127
|
+
- **文档怎么扩散到更多**:以后插件新增的任何说明 / 教程 / 模板类内容都走 seed 并带 **`dsh-docs`** 标签——首页「📚 插件文档」栏自动收录,你无需任何配置。
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 🛠 配置
|
|
132
|
+
|
|
133
|
+
插件行默认配置(缺省即默认,无需手动配置):
|
|
134
|
+
|
|
135
|
+
```yaml
|
|
136
|
+
- id: dsh-tiddlywiki
|
|
137
|
+
config:
|
|
138
|
+
wikiRoot: "$DSH_HOME/tiddlywiki" # 缺省自动展开
|
|
139
|
+
wiki: "main"
|
|
140
|
+
port: 0 # 0 = 自动探测空闲端口
|
|
141
|
+
git:
|
|
142
|
+
autoCommit: true
|
|
143
|
+
debounceMs: 60000
|
|
144
|
+
remote: "" # 空 = 仅本地 commit;填了才 push
|
|
145
|
+
branch: "main"
|
|
146
|
+
note:
|
|
147
|
+
tag: "inbox" # 快速笔记默认 tag
|
|
148
|
+
ui:
|
|
149
|
+
showQuickNote: true # FAB 里显示快速笔记入口
|
|
150
|
+
showQuickNoteDock: true # 输入框上方快捷按钮
|
|
151
|
+
quickNoteMode: "native" # native=TW 原生编辑页 / card=Markdown 卡片
|
|
152
|
+
sidebarLabel: "TiddlyWiki" # 侧边栏入口显示名
|
|
153
|
+
showPanelStatus: true
|
|
154
|
+
showSyncButton: true
|
|
155
|
+
followDshTheme: true # 跟随 DSH 深浅主题
|
|
156
|
+
darkPalette: "$:/palettes/CupertinoDark"
|
|
157
|
+
tabLabel: "知识库" # 会话 Tab 名
|
|
158
|
+
showSessionTab: true
|
|
159
|
+
showRightbarTab: true # DSH 右侧边栏提供 TiddlyWiki 入口/Tab
|
|
160
|
+
sendToAgent: { enabled: true }
|
|
161
|
+
uiLanguage: "" # 留空不干预;"zh-Hans" 自动启用简体
|
|
162
|
+
auth:
|
|
163
|
+
username: "" # 默认 loopback 匿名;暴露到非回环才需要
|
|
164
|
+
password: ""
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
> **运行时配置**:设置页写入的 `$:/plugins/dsh-tiddlywiki/config` tiddler 是 `config:` 块之上的覆盖层(tiddler 优先、随 wiki git 同步),改 note tag / git / ui 开关无需动 cordis。
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 🌐 远程访问
|
|
172
|
+
|
|
173
|
+
TW 子进程只监听 **127.0.0.1 回环**;Agent 工具/快速笔记/同步都走 DSH 宿主进程→回环 TW,不受访问入口影响。浏览器里的 TW 编辑器 iframe 经**同源代理** `<DSH origin>/dsh-tiddlywiki/tw/` 访问(v0.6.0 起),所以通过 Tailscale / 内网 / 域名 / HTTPS 访问 DSH 时编辑器照常工作,且 TW 重启不打断编辑中的内容。
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 👨💻 开发
|
|
178
|
+
|
|
179
|
+
需要 **Node.js ≥ 22**。
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
npm install
|
|
183
|
+
npm run typecheck # tsc --noEmit
|
|
184
|
+
npm run build # clean + host tsdown + client tsdown + wrap
|
|
185
|
+
npm run selftest # headless:spawn TW → REST 读写 → git → 退出回收
|
|
186
|
+
node scripts/verify-seeds-admin.mjs # /admin/seeds 状态与 run 的 E2E
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**改 bundle/seed 的再生成流水线**(不要手改 `seed-*.ts` 里的生成常量):
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# 发送给 Agent 按钮(改 scripts/bundle/send-to-agent/ 后)
|
|
193
|
+
node scripts/build-send-to-agent-bundle.mjs
|
|
194
|
+
node scripts/gen-seed-send-to-agent.mjs scripts/bundle/send-to-agent.bundle.json src/host/seed-send-to-agent.ts
|
|
195
|
+
node scripts/verify-send-to-agent-bundle.mjs
|
|
196
|
+
|
|
197
|
+
# 渲染路由(改 scripts/bundle/render/server-routes/render.js 后)
|
|
198
|
+
node scripts/build-render-bundle.mjs
|
|
199
|
+
node scripts/gen-seed-render.mjs scripts/bundle/render.bundle.json src/host/seed-render.ts
|
|
200
|
+
|
|
201
|
+
# 首页(改 wiki 的 🏠 主页/所有标签/标签笔记 .tid 后;必须 --strip-private,
|
|
202
|
+
# 产出通用版:剥离作者私有人口 + 注入「📚 插件文档」栏)
|
|
203
|
+
node scripts/gen-seed-home.mjs '<wiki>/tiddlers/🏠 主页.tid' '<wiki>/tiddlers/所有标签.tid' '<wiki>/tiddlers/标签笔记.tid' src/host/seed-home.ts --strip-private
|
|
204
|
+
|
|
205
|
+
# 自定义样式(改 wiki 的样式 .css + .meta 后;tag 自动收窄为 $:/tags/Stylesheet)
|
|
206
|
+
node scripts/gen-seed-ui-styles.mjs '<wiki>/tiddlers/<样式.css>' … src/host/seed-ui-styles.ts
|
|
207
|
+
|
|
208
|
+
# 示例与文档(starter-docs)/ menubar 主题:直接维护 src/host/seed-starter-docs.ts / seed-menubar-theme.ts
|
|
209
|
+
|
|
210
|
+
# 随后 npm run build
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
**产物约定**:`lib/` 内**零** `@deepseek-ai` 运行时 import;client 必须 minify(否则 >1MB 被注册表校验拒绝);`react`/`tiddlywiki` 不打包(运行时解析)。
|
|
214
|
+
|
|
215
|
+
### 路由参考(开发者)
|
|
216
|
+
|
|
217
|
+
| 路由 | 方法 | 用途 |
|
|
218
|
+
|---|---|---|
|
|
219
|
+
| `/dsh-tiddlywiki/status` | GET | 面板健康(service/url/git/tag/ui) |
|
|
220
|
+
| `/dsh-tiddlywiki/note` `/edit` `/tags` `/recent` `/get` `/search` | POST/GET | 快速笔记、打开编辑器、tag/最近/单个/搜索 |
|
|
221
|
+
| `/dsh-tiddlywiki/sync` `/upload` `/restart` | POST | 一键同步、文件上传、重启 TW |
|
|
222
|
+
| `/dsh-tiddlywiki/session/summary` | POST | 会话「知识库」Tab 汇总 |
|
|
223
|
+
| `/dsh-tiddlywiki/agent/sessions` `/modes` `/send` `/create` | GET/POST | TW「发送给 Agent」:会话/模式/发送/新建 |
|
|
224
|
+
| `/dsh-tiddlywiki/api/*` | any | 透传 TW 服务(JSON) |
|
|
225
|
+
| `/dsh-tiddlywiki/tw/*` | any | 同源 TW 代理(远程访问核心) |
|
|
226
|
+
| `/dsh-tiddlywiki/admin/seeds` `/run` `/remove` | GET/POST | seed 状态 / 运行 / 反初始化 |
|
|
227
|
+
|
|
228
|
+
### 项目结构
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
src/
|
|
232
|
+
├── index.ts # host 入口:装配 WikiServer/路由/工具/提示词/自动 commit
|
|
233
|
+
├── sdk.ts # 自包含 defineTool + dshHomePath(零 @deepseek-ai 运行时依赖)
|
|
234
|
+
├── host/
|
|
235
|
+
│ ├── wiki.ts # WikiServer:spawn/kill/自愈/端口探测/就绪轮询;TW_PROXY_PATH 同源代理
|
|
236
|
+
│ ├── tw-api.ts # TiddlyWeb REST 客户端
|
|
237
|
+
│ ├── git.ts # git init/commit/pull/push/sync/status + AutoCommitter
|
|
238
|
+
│ ├── routes.ts # 全部 DSH 路由 + agent-send/create/modes + session/summary
|
|
239
|
+
│ ├── http.ts # 共用 HTTP 助手(readBody/json)
|
|
240
|
+
│ ├── session-summary.ts # 会话「知识库」Tab 后端
|
|
241
|
+
│ ├── admin.ts # 设置页后台:tiddlywiki.info 读写 + /admin/*
|
|
242
|
+
│ ├── config.ts # ConfigStore:cordis config 基底 + 配置 tiddler 覆盖层
|
|
243
|
+
│ ├── seeds.ts # 统一 seed 注册表(9 项,三层:核心/起步/可选)
|
|
244
|
+
│ ├── seed-*.ts # 各 seed 实现(bundle/首页/ui-styles 常量脚本生成;starter-docs/menubar 手工维护)
|
|
245
|
+
│ └── tools.ts # 10 个 tiddlywiki_* 工具(列表式注册)
|
|
246
|
+
└── client/ # 浏览器半部
|
|
247
|
+
├── index.ts # client 入口(inject ['slots'],纯 DOM,永不 throw)
|
|
248
|
+
├── endpoints.ts # 客户端同源端点常量
|
|
249
|
+
├── knowledge-fab.ts / quick-note-dock.ts / note-widget.ts / editor-popup.ts
|
|
250
|
+
│ # 知识库 FAB / 快捷按钮 / 快速笔记 / 原生编辑弹窗
|
|
251
|
+
├── markdown-editor.ts # CodeMirror 6 Markdown 编辑器
|
|
252
|
+
├── session-summary.ts # 会话「知识库」Tab(conversation.view 槽位)
|
|
253
|
+
├── tool-views.ts # 回复流工具卡片(tool.call.toolview)
|
|
254
|
+
├── theme-sync.ts / panel.ts / sidebar-entry.ts / sync-button.ts / rightbar-tab.ts
|
|
255
|
+
└── settings-page.ts / ui-config.ts / state.ts / styles.ts / toast.ts
|
|
256
|
+
scripts/ # 构建/校验/再生成脚本
|
|
257
|
+
docs/seed-initialization.md # seed 机制详解(权威)
|
|
258
|
+
lib/ # 预构建产物(发布含 lib/**,提交入库;零 @deepseek-ai 运行时 import)
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## 🕘 版本记录
|
|
264
|
+
|
|
265
|
+
> 最近几个主要版本的一句话记录(完整变更见 [Releases](https://github.com/bbqisbbq/dsh-tiddlywiki/releases) / git log)。
|
|
266
|
+
|
|
267
|
+
- **v0.16.22**(2026-09-09):**seed 体系三层化 + 文档中心起步包**。① 分层:**核心**(自动、不可移除:发送按钮/渲染路由/代理基址)+ **起步**(首次安装默认写、可移除:插件说明 + 新增「示例与文档」seed——主题汇总模板/教程/三个示例主题页)+ **可选**(手动:首页/所有文章/新增「自定义样式」seed/顶栏主题);所有种子**安全跳过**(同名 tiddler 已存在绝不覆盖)。② 新增 **`dsh-docs`** 文档合集约定:所有 seed 文档打该标签,首页「📚 插件文档」tabs 栏自动收录。③ seed 版首页改为**通用版**(`gen-seed-home --strip-private`:剥离作者私有人口,注入文档栏)。④ **修**:首页快速记笔记的 tags 筛选器 bug(`then[[todo]]` 操作数双括号导致「筛选器错误」被拆成 6 个 tag → 改为 `then[todo]`)。
|
|
268
|
+
- **v0.16.21**(2026-09-09):**新:DSH 右侧边栏(rightbar)集成**。注册 TiddlyWiki 为右侧栏 tab 类型——rightbar 首页出现「**TiddlyWiki 知识库**」入口盒,点击即在右侧栏以 tab 形式打开完整 TW 编辑器(同源代理 iframe,跟随 DSH 主题),**与聊天并排**;配置 `ui.showRightbarTab`(默认 true)可开关。**更新后刷新页面**即可看到入口。
|
|
269
|
+
- **v0.16.20**(2026-09-09):**修:`search`/`recent` 在大 wiki 上超时**。根因:列表请求把全部 tiddler(含图片等二进制附件)的 base64 正文拉回来(2418 个 tiddler ≈ 515MB/17s)。修复:`search`/`recent`/`get` 在**服务端**只取文本 tiddler(无 `type` 或 `text/*`);二进制 tiddler 完全排除,`get` 对二进制只回元数据。实测 515MB/17s → **6.24MB/0.3s**。
|
|
270
|
+
- **v0.16.19**(2026-09-07):**修:会话「知识库」Tab 把汇总当源码显示**——TW 5.4.1 把 `$:/temp/` 条目一律按代码块渲染;改为 `/tw/render` 原生片段管线(与回复流工具卡同链路),不再用 iframe/story view。
|
|
271
|
+
- **v0.16.18**(2026-09-07):README 全面精简重写;seed 优化——首页 seed 跟随 wiki 现状、修「所有文章」回主页死链、doc-note 文案修正。
|
|
272
|
+
- **v0.16.17**(2026-09-07):点击快速笔记可选直达 TW 原生编辑页(`ui.quickNoteMode`)+ 修「在 TW 中编辑」弹窗 ✕ 关不掉。
|
|
273
|
+
- **v0.16.16**(2026-09-07):修会话知识库 Tab 误入编辑草稿显示源码——三层防误编辑(清残留草稿/吞草稿创建/禁 ✏️)。
|
|
274
|
+
- **v0.16.15**(2026-09-07):`put`/`batch_put` 未指定类型自动默认 `text/markdown`;警告 `fields.type` 是内容类型保留字段。
|
|
275
|
+
- **v0.16.14**(2026-09-07):修知识库 Tab「佚失条目」根因——浏览器端 TW 天生排除 `$:/temp`,改为 iframe 就绪后注入 + 原生 hash 导航。
|
|
276
|
+
- **v0.16.11**(2026-09-06):新增会话顶部「知识库」Tab(本会话相关 wiki 汇总,volatile `$:/temp`)。
|
|
277
|
+
- **v0.16.0**(2026-09-05):回复流原生 TW 工具卡片 + 可点击 wiki 链接(新增 `render-route` seed)。
|
|
278
|
+
- **v0.15.0**(2026-09-05):初始化不强制 + 可反初始化(seed 拆核心/可选两层)。
|
|
279
|
+
- **v0.14.0**(2026-09-05):「发送给 Agent」按钮独立图标 + 附加说明 + 权限选择。
|
|
280
|
+
- **v0.13.0**(2026-09-04):menubar 顶栏主题自适应。
|
|
281
|
+
- **v0.12.0**(2026-09-04):新默认主页 + 「所有文章」两列分页页。
|
|
282
|
+
- **v0.11.0**(2026-09-04):「发送给 Agent」支持选择工作模式(Agent 预设)。
|
|
283
|
+
- **v0.10.0**(2026-09-04):统一 seed 注册表 + 设置页「初始化」。
|
|
284
|
+
- **v0.8.0**(2026-09-04):嵌入式 TW 跟随 DSH 深浅主题。
|
|
285
|
+
- **v0.7.0**(2026-09-03):TW 一键把当前笔记发送到 dsh 会话。
|
|
286
|
+
- **v0.6.0**(2026-09-03):同源代理(远程访问核心)。
|
|
287
|
+
- **v0.5.0**(2026-09-03):Agent 工具扩充 + 快速笔记草稿自动保存 + 统一知识库 FAB。
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## 📦 发布
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
npm publish # 版本号在 package.json;文件白名单见 files 字段
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
`tiddlywiki` 依赖体较大(含全部语言包/插件)。
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## 🔗 仓库与发布元数据
|
|
302
|
+
|
|
303
|
+
- **GitHub**:https://github.com/bbqisbbq/dsh-tiddlywiki
|
|
304
|
+
- **npm**:`dsh-tiddlywiki`(https://www.npmjs.com/package/dsh-tiddlywiki)
|
|
305
|
+
- 说明笔记、首页、示例文档、样式等预置内容由 seed 机制写入 wiki(见 [🧩 初始化](#-初始化一次性预置-seed哪些必备哪些可有可无))
|
|
306
|
+
- MIT;Node ≥ 22;GitHub topics:`dsh` `dsh-plugin` `tiddlywiki` `knowledge-base` `note-taking` `git-sync` `agent-tools` 等
|