dsh-nerd-mode 0.4.3 → 0.4.4

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.zh.md CHANGED
@@ -1,220 +1,303 @@
1
- <p align="center">
2
- <img src="assets/nerd.svg" width="280" alt="手绘的书呆子,粗框眼镜,两颗门牙">
3
- </p>
4
-
5
- <h1 align="center">Nerd Mode:dsh 学习开关</h1>
6
-
7
- <hr>
8
-
9
- <p align="center"><em>一次一个概念,聊天结束后记录还在。</em></p>
10
-
11
- <p align="center">
12
- <a href="./README.md"><img src="https://img.shields.io/badge/English-switch-d0d7de" alt="English"></a>
13
- </p>
14
-
15
- 聊天里的学习通常在答案到达时就结束了。没人检验你有没有弄懂,关掉窗口也什么都不剩。Nerd Mode 让 dsh 一步步地教,在换个选择就会改变结果的地方停下来,遇到值得跟的科目就留下带日期的记录。一个 Course 能撑过几周,而不只是一次对话。
16
-
17
- ## 主要功能
18
-
19
- - 一个开关管整个会话。`/nerd-mode on` 之后,所有学习类请求都按教学方式回答,写代码、搜索和命令照常执行。
20
- - 两条学习路径。`/study` 在对话里讲一个概念或做一件事,不留下记录;`/study-plus` 把一个 Course 跟上几周,留下带日期的记录。
21
- - 先有图,再上课。概念按先修顺序排好,分进 Book、Chapter、Section,等你批准之后才写文件。
22
- - 开课前只问一轮。目标、以前接触过什么,以及在对话里一次讲完还是建一份跟下去的记录,都做成选项;走记录时再问哪些概念可以跳过。答案定出教学深度,之后每份讲义都按它写。
23
- - 讲到岔口就停。讲义一步一步地讲,在换个选择就会改变结果的地方停下来问你,不会直接把成品答案端上来。
24
- - 认证据,不认印象。没见过的题加上要评分的复述,评分标准在出题之前就写好。只有你自己答出来的内容才会改写记录。
25
- - 记录比对话活得久。概念图、状态和带日期的记录能跨重启保留,讲义一有变化,HTML 版的书就重建,并且支持全文搜索。
26
- - 讲义找得回来。Lectures 卡片按 Course 列出这个工作区里保存过的每一份讲义。
27
-
28
- ## 运行环境
29
-
30
- - 装有 profile 的 DeepSeek Harness。
31
- - Node.js 22.19 或更新。
32
- - Windows、macOS 或 Linux。
33
-
34
- ## 安装
35
-
36
- 从 npm:
37
-
38
- ```powershell
39
- dsh plugin --profile <profile> add dsh-nerd-mode
40
- ```
41
-
42
- 从 GitHub:
43
-
44
- ```powershell
45
- dsh plugin --profile <profile> add github:bocchii-the-code/dsh-nerd-mode
46
- ```
47
-
48
- 从本地目录或压缩包:
49
-
50
- ```powershell
51
- dsh plugin --profile <profile> add C:\path\to\dsh-nerd-mode
52
- ```
53
-
54
- 重启 dsh。每个模式都会多出 `/nerd-mode` 命令,输入框工具栏多一个 `Nerd Mode` 胶囊。模式选择器不会多出新条目,因为插件挂在 profile 层,不是预设。
55
-
56
- ## 使用方法
57
-
58
- 问一个问题,Nerd Mode 会走两条路中的一条。两条都分步骤讲,都会在分叉点停下来问一次。区别在于它们留下什么。
59
-
60
- <p align="center">
61
- <img src="assets/two-paths.svg" width="720" alt="左右两栏对照。左边 /study 只处理一个问题和一个答案,讲完就结束。右边 /study-plus 先建概念图,再分 Book、Chapter、Section,每个概念一份讲义,并跨周记录每节课。">
62
- </p>
63
-
64
- ### 快速课程:`/study`
65
-
66
- 把一个概念或一个任务从第一步走到最后一步,只在分叉点停一次。概念按层次讲,先直觉,再术语,最后形式细节。任务直接产出成品,每一步旁边写一行理由。它不打分,也不保存学习者记录。只在你指定路径时保存讲稿或成品,需要图时会画一张 SVG。`/study-plus` 写讲义时遵循的写作规则,也只有这一份。
67
-
68
- 适合现在就想弄懂、之后大概不会再回来的问题。
69
-
70
- - 读论文卡在一个术语上。
71
- - 今晚必须交的一道作业。
72
- - 改代码之前,要先把这段逻辑理顺。
73
- - 一个不大的选择,想先看清取舍再决定。
74
-
75
- ```text
76
- /study 为什么 Adam 要除以 1 - β^t
77
- /study 帮我把这个文件里的预条件子讲清楚 # 带代码
78
- /study 帮我把第三题做完,每一步都说原因 # 带作业
79
- ```
80
-
81
- 敲命令,或者打开开关直接问。开关打开时,学习类的请求默认就是这个形状。
82
-
83
- 显式输入 `/study-plus` 会直接进入带记录的会话,即使请求里有多个概念。显式输入 `/study` 会直接在对话里讲。打开开关、没敲命令直接提问时,学习类请求会先问一轮:目标选一项、以前接触过什么选一项,以及在对话里一次讲完还是走带记录的 `/study-plus`。前者用普通 Markdown,一级标题是书名或题目,二级标题是章,三级标题是节。
84
-
85
- 你会拿到:标题、中心思想、编号步骤,每个公式上方一行符号说明。四个以上符号被多个公式反复用到时,开头再加一张速查表。然后是一个具体例子、常见错误,以及在分叉处停的那一次。任务是另外给你做完的东西和每一步的理由。
86
-
87
- 它不打分,不保存记录,也不能跨会话接着教同一个 Course。讲稿或其他成品只在你要求时才保存,存到你指定的路径。
88
-
89
- ### 长课程:`/study-plus`
90
-
91
- 把一个 Course 组织成一本 Book,下面分 Chapter,每个 Chapter 下分 Section。每个 Section 只放一个概念。它按先修顺序建概念图,把概念分进各章,每次只教一个概念,也只考这个概念的掌握情况。概念图里同时带 Chapter 和 Section 两列,所以一张图里既有阅读顺序,也有先修顺序。它维护三个记录文件,并为每个概念保存一份 Markdown 文件,放在 `study/<course>/lectures/`。你批准概念图后,它会为每个概念先写好一份完整讲稿,开讲不用等准备。它用已保存的材料生成一个 HTML 书页,材料有变化就自动刷新。
92
-
93
- 适合下个月你还在学的东西。
94
-
95
- - 认真读一本教材、一门课或一篇论文。
96
- - 想让教材的章节目录成为之后复习的骨架。
97
- - 需要知道下一步该学什么,而不只是现在该问什么。
98
- - 想要进度的证据,而不是感觉。
99
- - 你总在反复查同一批东西,查完就忘。
100
-
101
- 显式输入 `/study-plus` 会直接开始带记录的会话,即使请求里有多个概念,也不会再问一次性讲解还是带记录讲解。
102
-
103
- 一个 Course 就是 `study/` 下的一个文件夹,里面有一份概念图、一个状态文件、一份日志,还有它的讲义、图和 Book。一次对话在第一次带记录的讲解时定下 Course,只定一次。工作区里只有一个 Course 时,`/study-plus` 直接用它,在一行里说明,不问。有多个 Course 时,用一个问题列出它们,并给出新建 Course 的选项。问到另一个科目时,只问一次:把这些概念加进当前 Course,还是新建一个 Course。
104
-
105
- ```text
106
- /study-plus 洗发水与 Adam 优化器 # 第一次建图
107
- /study-plus # 之后继续同一个 Course
108
- /study-plus 第 2 章 # 按书中顺序读这一章
109
- /study-plus 矩阵平方根 # 直接跳到某个概念
110
- ```
111
-
112
- 第一次会话按固定顺序走。
113
-
114
- ```text
115
- /study-plus <course>
116
- 按先修顺序给出 15 到 30 个概念,分进各章
117
- 章节列表和概念表一起给你看,然后等你确认
118
- 你批准、修改或重建概念图
119
- 你回答一轮开课校准:目标、背景,以及哪些概念可以跳过
120
- 为每个概念写一份完整讲稿,跳过的也写
121
- 逐个概念教:课前回忆(可选)→ 讲义 → 设置数量的没见过的题 → 复述 → 带日期的记录
122
- ```
123
-
124
- 批准概念图后再问剩下的开课问题:这个 Course 你想学到能做什么,以前接触过什么,概念图里哪些概念可以直接跳过。如果开头的提问已经问过目标和背景,这里只问哪些概念可以跳过。答案决定 `graph.md` 里的 `Teaching level` 一行,`Goal` 和 `Background` 也一并写入,之后每份讲义都按这个教学深度来写。深度只管讲义,不管题目、复述和记录。中途改的深度只对这次会话有效,说「以后都这样」才会改写那一行。
125
-
126
- <p align="center">
127
- <img src="assets/calibration.svg" width="720" alt="开课校准流程:你批准按章节分组的 15 到 30 个概念,再回答一轮提问,说明你想用这个 Course 做什么、以前读过或用过什么、哪些概念可以直接跳过。答案定出 graph.md 里的教学深度,之后每份讲义都按它来写。beginner 的讲义分成编号步骤,解释每个术语,每一步配一个例子。standard 先讲直觉,再讲形式细节,需要时给例子。advanced 一遍讲完,不编号,从形式陈述开始,每个想法最多一个例子。">
128
- </p>
129
-
130
- 讲稿只是准备,不算学过。每份讲义都按 `/study` 的写作规则写,并且先保存再显示。
131
-
132
- 概念图删掉的概念,它的讲义文件会移到 `lectures/archive/`,不会被删除。
133
-
134
- 之后的会话先读记录文件。你挑一章或一个概念,它用一句说明这个概念的现状和它先修概念的现状。先修不会强制你按顺序走。
135
-
136
- Profile 默认值在 设置 -> Nerd Mode。它管的是记录型会话:每次开讲前是否先来一次课前回忆,一节课后问几道没见过的题,题型是简答、四选一还是混合。四选一以卡片出现,四个选项里只有一个对;简答直接在对话里问。保存从下一节课开始生效;取消只丢草稿;恢复默认回到关闭、3 题、简答。在一次 `/study-plus` 请求里明确说出的偏好,只对那一次会话生效。
137
-
138
- 你会拿到:一套阅读顺序和一套先修顺序、你想学的任何一个概念、只针对这个概念的批改、一份保存下来的讲义,以及重启也还在的记录。HTML 书页会在每次批量写稿和每节课后刷新,每节一页,按原来的节顺序排列,支持全文搜索,还没讲过的内容标成草稿。
139
-
140
- HTML 书页保留每个 Section 在概念图里的原编号,也就是教材里的节号,即使前面的讲义文件还没保存。每个 Chapter 的计数只算实际收进书里的 Section。
141
-
142
- 它不排复习时间表,也不猜你会什么。只有你自己做出来的答案才能改变记录。先修没学也不会拦住你想学的概念。它会讲清或建议先修,选哪个仍然由你决定。
143
-
144
- ### 两者会留下什么
145
-
146
- | | `/study` 快速课程 | `/study-plus` 长课程 |
147
- |---|---|---|
148
- | 写文件 | 只在你指定路径时保存讲稿或成品,需要图时会画 SVG | `study/<course>/` 下的概念图、状态、日志,每个概念一份文件,`book.html` 自动刷新 |
149
- | 读文件 | 默认不读,但会读写你指定的成品路径 | 开口前先读那三个 |
150
- | 下次还记得 | 不记得 | 记得,带日期 |
151
- | 批改 | 不批 | 按概念批,先写评分标准 |
152
- | 组织方式 | 一个概念、一个任务,或一次性的书式讲解 | Book、Chapter、Section |
153
- | 典型长度 | 一次坐完,一个概念 | 15 到 30 个概念,跨几周 |
154
-
155
- `/study` 自己不会建 `study/` 文件夹。讲稿和成品只会存到你指定的路径,包括 `study/<course>/lectures/` 下的普通文件。只跑讲解时,图放在 `diagrams/<name>.svg`;在 Course 里,图放在 `study/<course>/diagrams/<name>.svg`。它不得读写 `graph.md`、`state.md`、`log.md` 或 `plan.md`。
156
-
157
- ### 怎么选
158
-
159
- <p align="center">
160
- <img src="assets/choose-a-mode.svg" width="720" alt="一个问题,这个主题你还会再回来吗,分成是和否两支。否走 /study,一次坐完,不留记录。是走 /study-plus,连着几周上课,留下带日期的记录。一条标着「还会回来」的弧线箭头从 /study 指向 /study-plus。">
161
- </p>
162
-
163
- - 问完就不会再回来的问题,用 `/study`。
164
- - 要连着几周的东西,用 `/study-plus`。
165
- - 想让教材的章节目录成为复习骨架,用 `/study-plus`,它会把教材的章映射成 Chapter。
166
- - 先用 `/study`,发现自己一直在回来,就用 `/study-plus` 建一次概念图,之前聊过的内容照样用得上。
167
-
168
- 举个例子。你在读 Shampoo 那篇论文,卡在预条件子上。`/study Shampoo 的预条件子到底在做什么`,一次坐完。如果你决定认真读完这篇论文,就开 `/study-plus 洗发水与 Adam 优化器`,让它先把顺序排出来。
169
-
170
- ### 命令
171
-
172
- ```text
173
- /nerd-mode on 这次对话进入教学姿势
174
- /nerd-mode off
175
- /study <概念或任务>
176
- /study-plus <course> 带三个记录文件的记录型会话
177
- ```
178
-
179
- 书页不是命令。`/study-plus` 每次批量写稿和每节课后自动刷新,上一版会留成 `book.html.bak`。
180
-
181
- 输入框工具栏里的胶囊发的就是 `/nerd-mode`。它排在 Full Throttle 左边,一直显示,关闭时变暗。
182
-
183
- ## 开关做了什么
184
-
185
- - 它改的是文字,不是工具。工具目录和提示缓存都不变。
186
- - 只对学习类请求生效:讲清概念、辅导作业、讲解代码、准备考试。写功能、查资料、改配置、跑命令照常。
187
- - 开关只作用于这一次会话。状态存在会话日志里,压缩上下文、恢复会话都不丢。
188
- - 命令执行失败时,窗口顶部会弹一条说明原因的提示,胶囊保持原状态。
189
- - 子代理各自跑自己的会话,所以默认都是关闭的。
190
- - 它删不掉基础模式的人格文字,只能声明自己的规则优先。
191
-
192
- ## 内置技能
193
-
194
- - `study`:不打分的引导式讲解,也是讲义的写作标准。按需存文件,需要图时会画。
195
- - `study-plus`:记录型会话。Book、Chapter、Section,每个概念一份讲义,按概念批改。
196
- - `diagram`:一个概念一张 SVG 图。为本包编写。
197
- - `answer-me-with-html`:一页式 HTML 图解,作者 QingYunA。
198
- - `teach`:带日期的教学工作区,作者 Matt Pocock。
199
- - `writing-beats`:逐拍结构的文章写法,作者 Matt Pocock。
200
- - `humanizer`:把 AI 味的文字改回人话,作者 Siqi Chen。
201
- - `convert-documents-to-markdown`:Word、PDF、电子书转换,作者 firecrawl。
202
-
203
- ## 说明
204
-
205
- - 插件用 `!!js` 表达式从 `cordis.patch.yml` 加载自己的 `skills/` 目录。补丁是宿主进程代码,改之前先读。
206
- - 如果你改了包名,记得同步 `cordis.patch.yml` 里的 `resolve('dsh-nerd-mode/package.json')`。
207
- - 随包的第三方技能各自保留许可,见 [NOTICE.md](./NOTICE.md)。
208
- - 设计记录:[SPEC v3](./docs/specs/2026-10-28-study-plus-v3.md)、[v2,历史版本](./docs/specs/2026-10-27-study-plus-v2.md)、[会话默认值](./docs/specs/2026-10-28-nerd-mode-settings.md)、[GLOSSARY.md](./GLOSSARY.md)、`docs/adr/`。文档结构见 [docs/README.md](./docs/README.md)。
209
- - 版本变更记录:[CHANGELOG.md](https://github.com/bocchii-the-code/dsh-nerd-mode/blob/main/CHANGELOG.md)。
210
- - 在 `@deepseek-ai/dsh` 0.2.1-rc.3 和 Node 22 上测过。
211
-
212
- ## 卸载
213
-
214
- ```powershell
215
- dsh plugin --profile <profile> remove dsh-nerd-mode
216
- ```
217
-
218
- ## 许可
219
-
220
- MIT。随包的第三方技能各自保留许可,见 [NOTICE.md](./NOTICE.md)。
1
+ <p align="center">
2
+ <img src="assets/nerd.svg" width="280" alt="手绘的书呆子,粗框眼镜,两颗门牙">
3
+ </p>
4
+
5
+ <h1 align="center">Nerd Mode:dsh 学习开关</h1>
6
+
7
+ <hr>
8
+
9
+ <p align="center"><em>教育本该如此,而不只是干巴巴的讲义。</em></p>
10
+
11
+ <p align="center">
12
+ <a href="https://www.npmjs.com/package/dsh-nerd-mode"><img src="https://img.shields.io/npm/v/dsh-nerd-mode" alt="npm 版本"></a>
13
+ <a href="https://github.com/bocchii-the-code/dsh-nerd-mode/actions/workflows/check.yml"><img src="https://github.com/bocchii-the-code/dsh-nerd-mode/actions/workflows/check.yml/badge.svg" alt="构建状态"></a>
14
+ <a href="https://github.com/bocchii-the-code/dsh-nerd-mode/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/dsh-nerd-mode" alt="许可证 MIT"></a>
15
+ <a href="./README.md"><img src="https://img.shields.io/badge/English-switch-d0d7de" alt="English"></a>
16
+ </p>
17
+
18
+ 一个 DeepSeek Harness 学习开关:分步教学,并为每个 Course 留下带日期的记录。
19
+
20
+ 聊天里的学习通常在答案到达时就结束了。没人检验你有没有弄懂,关掉窗口也什么都不剩。Nerd Mode 让 dsh 一步步地教,在换个选择就会改变结果的地方停下来,遇到值得跟的科目就留下带日期的记录。一个 Course 能撑过几周,而不只是一次对话。
21
+
22
+ | 命令 | 做什么 | 留下什么 |
23
+ |---|---|---|
24
+ | `/nerd-mode on` | 这次对话进入教学状态 | 不留;它只是一个开关 |
25
+ | `/study` | 讲一个概念,或做一件事 | 只有你指定路径时才存文件 |
26
+ | `/study-plus` | 跑一个 Course,每次一个概念 | 概念图、状态、日志、讲义、HTML 书 |
27
+
28
+ ## 目录
29
+
30
+ - [主要功能](#主要功能)
31
+ - [安装](#安装)
32
+ - [快速开始](#快速开始)
33
+ - [两条学习路径](#两条学习路径)
34
+ - [设置](#设置)
35
+ - [它怎么接进 dsh](#它怎么接进-dsh)
36
+ - [开关改了什么](#开关改了什么)
37
+ - [内置技能](#内置技能)
38
+ - [开发](#开发)
39
+ - [贡献](#贡献)
40
+ - [卸载](#卸载)
41
+ - [许可](#许可)
42
+
43
+ ## 主要功能
44
+
45
+ - **先有图,再上课。** 概念按先修顺序排好,分进 Book、Chapter、Section,等你批准之后才写文件。
46
+ - **开课前只问一轮。** 目标、背景,以及在对话里一次讲完还是建一份跟下去的记录。走记录时再问哪些概念可以跳过。
47
+ - **讲到分叉点就停。** 讲义一步一步地讲,在换个选择就会改变结果的地方停下来问你,不会直接把成品答案端上来。
48
+ - **有评分的检查。** 没见过的题加上要评分的复述,评分标准在出题之前就写好。只有你自己答出来的内容才会改写记录。
49
+ - **记录比对话活得久。** 概念图、状态和带日期的日志能跨重启保留,HTML 书支持全文搜索。
50
+ - **不用翻文件就能看进度。** Study 标签页读当前对话的记录文件,显示进度百分比,上一节、当前节、下一节三格,状态是 shaky 的概念,以及最近三轮概念循环。它只读,不写。
51
+ - **讲义找得回来。** Lectures 标签页按选中的 Course 列出保存过的讲义,并标出已读、未读和已归档的行。
52
+
53
+ ## 安装
54
+
55
+ 需要装有 profile 的 DeepSeek Harness、Node.js 22.19 或更新,Windows、macOS 或 Linux 均可。在 `@deepseek-ai/dsh` 0.2.1-rc.3 和 Node 22 上测过。
56
+
57
+ 从 npm:
58
+
59
+ ```powershell
60
+ dsh plugin --profile <profile> add dsh-nerd-mode
61
+ ```
62
+
63
+ 从 GitHub:
64
+
65
+ ```powershell
66
+ dsh plugin --profile <profile> add github:bocchii-the-code/dsh-nerd-mode
67
+ ```
68
+
69
+ 从本地目录或压缩包:
70
+
71
+ ```powershell
72
+ dsh plugin --profile <profile> add C:\path\to\dsh-nerd-mode
73
+ ```
74
+
75
+ 重启 dsh。每个模式都会多出 `/nerd-mode` 命令,输入框工具栏多一个 `Nerd Mode` 胶囊。模式选择器里看不到新条目,因为插件挂在 profile 层,不是预设。
76
+
77
+ ## 快速开始
78
+
79
+ 1. 用上面的任一命令装好插件,然后重启 dsh。
80
+ 2. 让这次对话进入教学状态:`/nerd-mode on`。
81
+ 3. 问一个问题:`/study 为什么 Adam 要除以 1 - β^t`。
82
+ 4. 想把科目跟下去:`/study-plus 洗发水与 Adam 优化器`。
83
+
84
+ ## 两条学习路径
85
+
86
+ 两条都分步骤讲,都会在分叉点停下来问一次。区别在于它们留下什么。
87
+
88
+ 显式输入 `/study` 会直接在对话里讲。显式输入 `/study-plus` 会直接进入带记录的会话,即使请求里有多个概念。打开开关、没敲命令直接提问时,学习类请求会先问一轮。它问目标、背景各选一项,以及在对话里一次讲完还是走带记录的 `/study-plus`。
89
+
90
+ <p align="center">
91
+ <img src="assets/two-paths.svg" width="720" alt="左右两栏对照。左边 /study 只处理一个问题和一个答案,讲完就结束。右边 /study-plus 先建概念图,再分 Book、Chapter、Section,每个概念一份讲义,并跨周记录每节课。">
92
+ </p>
93
+
94
+ ### 快速课程:`/study`
95
+
96
+ 它把一个概念或一个任务从第一步走到最后一步,只在分叉点停一次。概念按层次讲:先直觉,再术语,最后形式细节。任务直接产出成品,每一步旁边写一行理由。全程不打分,也不保存学习者记录。
97
+
98
+ 适合现在就想弄懂、之后大概不会再回来的问题。
99
+
100
+ - 读论文卡在一个术语上。
101
+ - 今晚必须交的一道作业。
102
+ - 改代码之前,要先把这段逻辑理顺。
103
+ - 一个不大的选择,想先看清取舍再决定。
104
+
105
+ ```text
106
+ /study 为什么 Adam 要除以 1 - β^t
107
+ /study 帮我把这个文件里的预条件子讲清楚 # 带代码
108
+ /study 帮我把第三题做完,每一步都说原因 # 带作业
109
+ ```
110
+
111
+ 你会拿到:标题、中心思想、编号步骤,每个公式上方一行符号说明。四个以上符号在多个公式里反复出现时,开头再加一张速查表。然后是一个具体例子、常见错误,以及在分叉点停的那一次。
112
+
113
+ 它只写你要的东西:你指定路径的讲义或成品,以及需要配图时的一张图。图放在 `diagrams/<name>.svg`;在 Course 里,图放在 `study/<course>/diagrams/<name>.svg`。它不得读写 `graph.md`、`state.md`、`log.md` 或 `plan.md`。
114
+
115
+ ### 长课程:`/study-plus`
116
+
117
+ 一个 Course 组织成一本 Book,下面分 Chapter,每个 Chapter 下分 Section,每个 Section 只放一个概念。先按先修顺序建概念图,再把概念分进各章。概念图里同时带 Chapter 和 Section 两列,所以一张图里既有阅读顺序,也有先修顺序。
118
+
119
+ 这个 Course 的根目录下有三个记录文件。每个概念保存一份 Markdown 讲义,放在 `study/<course>/lectures/`。你批准概念图后,它会为每个概念先写好一份完整讲稿,开讲不用等准备。它用已保存的材料生成一个 HTML 书页。
120
+
121
+ 适合下个月你还在学的东西。
122
+
123
+ - 认真读一本教材、一门课或一篇论文。
124
+ - 想让教材的章节目录成为之后复习的骨架。
125
+ - 需要知道下一步该学什么,而不只是现在该问什么。
126
+ - 想要能拿出证据的进度。
127
+
128
+ ```text
129
+ /study-plus 洗发水与 Adam 优化器 # 第一次建图
130
+ /study-plus # 之后继续同一个 Course
131
+ /study-plus 第 2 章 # 按书中顺序读这一章
132
+ /study-plus 矩阵平方根 # 直接跳到某个概念
133
+ ```
134
+
135
+ 一个 Course 就是 `study/` 下的一个文件夹,里面有一份概念图、一个状态文件、一份日志,外加讲义、图和 Book。一次对话在第一次带记录的讲解时定下 Course,之后不再问。工作区里只有一个 Course 时,`/study-plus` 直接用它,在一行里说明,不问。有多个 Course 时,用一个问题列出它们,并给出新建 Course 的选项。问到另一个科目时,只问一次:把这些概念加进当前 Course,还是新建一个 Course。
136
+
137
+ #### 第一次会话
138
+
139
+ ```text
140
+ /study-plus <course>
141
+ 按先修顺序给出 15 到 30 个概念,分进各章
142
+ 章节列表和概念表一起给你看,然后等你确认
143
+ 你批准、修改或重建概念图
144
+ 你回答一轮开课校准:目标、背景,以及哪些概念可以跳过
145
+ 为每个概念写一份完整讲稿,跳过的也写
146
+ 逐个概念教:课前回忆(可选)→ 讲义 → 设置数量的没见过的题 → 复述 → 带日期的记录
147
+ ```
148
+
149
+ 批准概念图后再问剩下的开课问题:你想用这个 Course 做什么,以前读过或用过什么,概念图里哪些可以直接跳过。如果开头的提问已经问过目标和背景,这里只问哪些概念可以跳过。答案决定 `graph.md` 里的 `Teaching level` 一行,`Goal` 和 `Background` 也一并写入,之后每份讲义都按这个深度来写。
150
+
151
+ | 深度 | 什么时候用 | 讲义的样子 |
152
+ |---|---|---|
153
+ | `beginner` | 大部分先修都没学过 | 分 3 到 7 个编号步骤,每个术语都解释,每一步配一个例子 |
154
+ | `standard` | 学过一部分先修 | 先讲直觉,再讲形式细节,需要时给例子 |
155
+ | `advanced` | 大部分先修都已掌握 | 一遍讲完,不编号,从形式陈述开始,每个想法最多一个例子 |
156
+
157
+ <p align="center">
158
+ <img src="assets/calibration.svg" width="720" alt="开课校准流程:你批准概念图,回答一轮校准问题,答案定出教学深度。图里对照 beginner、standard、advanced 三种讲义,之后每份讲义都按选定的深度来写。">
159
+ </p>
160
+
161
+ 深度只管讲义,不管题目、复述和记录。中途改的深度只对这次会话有效,说「以后都这样」才会改写那一行。
162
+
163
+ 讲稿只是准备,不算学习。每份讲义都按 `/study` 的写作规则写,先保存再显示。概念图删掉一个概念时,它的讲义文件会移到 `lectures/archive/`,不会被删除。
164
+
165
+ 之后的会话先读记录文件。你挑一章或一个概念,它用一句说明这个概念和它的先修各是什么状态。顺序不强制。先修没学也不拦你,它只讲清或建议,选哪个仍由你决定。
166
+
167
+ HTML 书页会在每次批量写稿和每节课后刷新,每节一页,还没讲过的内容标成草稿。书页沿用概念图里每个 Section 的编号,即使对应的讲义文件还没保存。上一版存成 `book.html.bak`。书页不是命令。
168
+
169
+ ### 两者会留下什么
170
+
171
+ | | `/study` 快速课程 | `/study-plus` 长课程 |
172
+ |---|---|---|
173
+ | 写文件 | 只在你指定路径时保存讲稿或成品,需要图时会画 SVG | `study/<course>/` 下的概念图、状态、日志,每个概念一份文件,`book.html` 自动刷新 |
174
+ | 读文件 | 默认不读,但会读写你指定的成品路径 | 开口前先读那三个 |
175
+ | 下次还记得 | 不记得 | 记得,带日期 |
176
+ | 批改 | 不批 | 按概念批,先写评分标准 |
177
+ | 组织方式 | 一个概念、一个任务,或一次性的书式讲解 | Book、Chapter、Section |
178
+ | 典型长度 | 一次坐完,一个概念 | 15 到 30 个概念,跨几周 |
179
+
180
+ `/study` 自己不会建 `study/` 文件夹。`/study-plus` 不排复习时间表,也不猜你会什么。
181
+
182
+ ### 怎么选
183
+
184
+ <p align="center">
185
+ <img src="assets/choose-a-mode.svg" width="720" alt="一个问题,这个主题你还会再回来吗,分成是和否两支。否走 /study,一次坐完,不留记录。是走 /study-plus,连着几周上课,留下带日期的记录。一条标着「还会回来」的弧线箭头从 /study 指向 /study-plus。">
186
+ </p>
187
+
188
+ - 问完就不会再回来的问题,用 `/study`。
189
+ - 要连着几周的东西,用 `/study-plus`。
190
+ - 想让教材的章节目录成为复习骨架,用 `/study-plus`,它会把教材的章映射成 Chapter。
191
+ - 先用 `/study`,发现自己一直在回来,就用 `/study-plus` 建一次概念图,之前聊过的内容照样用得上。
192
+
193
+ ### 命令
194
+
195
+ ```text
196
+ /nerd-mode on 这次对话进入教学状态
197
+ /nerd-mode off
198
+ /study <概念或任务>
199
+ /study-plus <course> 记录写在三个文件里
200
+ ```
201
+
202
+ 输入框工具栏里的胶囊发的就是 `/nerd-mode`。它排在 Full Throttle 左边,一直显示,关闭时变暗。
203
+
204
+ ## 设置
205
+
206
+ 改默认值:设置 → Nerd Mode。
207
+
208
+ | 设置 | 可选 | 默认 |
209
+ |---|---|---|
210
+ | 课前回忆 | 开、关 | 关 |
211
+ | 每节课后的题数 | 0 到 10 | 3 |
212
+ | 题型 | 简答、四选一、混合 | 简答 |
213
+
214
+ 四选一以卡片出现,四个选项里只有一个对;简答直接在对话里问。保存从下一节课开始生效,取消只丢草稿,恢复默认回到关闭、3 题、简答。在一次 `/study-plus` 请求里明确说出的偏好,只对那一次会话生效,不会改 profile。
215
+
216
+ ## 它怎么接进 dsh
217
+
218
+ Nerd Mode 是一个挂在 profile 层的插件,由 `cordis.patch.yml` 装入。补丁覆盖整个 profile,所以每个模式都有命令和胶囊。
219
+
220
+ ```text
221
+ package.json
222
+ ├── dsh.bundle.patch → cordis.patch.yml
223
+ │ ├── dsh-nerd-mode → lib/index.js
224
+ │ │ ├── session projection — 开关状态,从会话日志折叠出来
225
+ │ │ ├── prompt section — assets/section.md,顺序 550,只在开着时注入
226
+ │ │ └── /nerd-mode — 开关
227
+ │ ├── study-plus-skills — skills/ 作为文件系统技能来源
228
+ │ └── goal packages — 已禁用
229
+ └── dsh.client → client.js:胶囊、Study 标签页、Lectures 标签页、设置页
230
+ ```
231
+
232
+ **状态**存在一个 session projection 里,从会话日志折叠出来,所以压缩上下文、恢复会话、分叉都不丢。只有那个状态是「开着」时,提示段落才有内容。
233
+
234
+ **提示文字**就是 `assets/section.md`,也是插件唯一加进提示的文本,所以 profile 补丁里不会留一份过期的副本。配置里的 `section` 可以替换它。
235
+
236
+ **设置**只在带记录的会话里,以一小段默认值附在那段提示后面。它们从不改变工具目录。
237
+
238
+ **补丁范围**覆盖整个 profile。补丁用 `!!js` 表达式加载 `skills/`,改之前要按宿主进程代码来审。补丁还禁用了三个 goal 包,因为内置的 goal 工具会把一次讲解变成自动续跑的循环。
239
+
240
+ ## 开关改了什么
241
+
242
+ - 它改的是文字,不是工具,只作用于这一次会话。工具目录和提示缓存都不变,压缩上下文、恢复会话也不丢状态。
243
+ - 只对学习类请求生效:讲清概念、辅导作业、讲解代码、准备考试。写功能、查资料、改配置、跑命令照常。
244
+ - 命令执行失败时,窗口顶部会弹一条说明原因的提示,胶囊保持原状态。
245
+ - 子代理各自跑自己的会话,所以默认都是关闭的。
246
+ - 它删不掉基础模式的人格文字,只能声明自己的规则优先。
247
+
248
+ ## 内置技能
249
+
250
+ ### 教学
251
+
252
+ - `study`:不打分的引导式讲解,也是讲义的写作标准。按需存文件,需要图时会画。
253
+ - `study-plus`:带记录的会话。Book、Chapter、Section,每个概念一份讲义,按概念批改。
254
+ - `diagram`:一个概念一张 SVG 图。为本包编写。
255
+
256
+ ### 通用工具
257
+
258
+ 这四个随包一起装,但不属于教学流程,也不读写 Tracker。
259
+
260
+ - `answer-me-with-html`:一页式 HTML 图解,作者 QingYunA。
261
+ - `writing-beats`:逐拍结构的文章写法,作者 Matt Pocock。
262
+ - `humanizer`:把 AI 味的文字改回人话,作者 Siqi Chen。
263
+ - `convert-documents-to-markdown`:Word、PDF、电子书转换,作者 firecrawl。
264
+
265
+ ## 开发
266
+
267
+ ```powershell
268
+ git clone https://github.com/bocchii-the-code/dsh-nerd-mode
269
+ cd dsh-nerd-mode
270
+ npm install
271
+ npm run check
272
+ ```
273
+
274
+ `npm run check` 跑 ESLint 和 Node 测试。`npm test` 只跑测试,`npm run lint` 只跑 ESLint。
275
+
276
+ | 路径 | 内容 |
277
+ |---|---|
278
+ | `lib/index.js` | 插件入口:投影、提示段落、命令、会话默认值 |
279
+ | `lib/fold.js` | 状态折叠与常量 |
280
+ | `client.js` | 输入框胶囊、Study 与 Lectures 标签页、设置页 |
281
+ | `assets/section.md` | 教学策略提示词 |
282
+ | `skills/` | 随包的技能 |
283
+ | `test/` | 每个界面一个文件,由 `node --test` 运行 |
284
+
285
+ 想试本地构建,把这个目录当插件装:`dsh plugin --profile <profile> add .`
286
+
287
+ 如果你改了包名,记得同步 `cordis.patch.yml` 里的 `resolve('dsh-nerd-mode/package.json')`。
288
+
289
+ 设计记录:[SPEC v3](./docs/specs/2026-10-28-study-plus-v3.md)、[v2,历史版本](./docs/specs/2026-10-27-study-plus-v2.md)、[会话默认值](./docs/specs/2026-10-28-nerd-mode-settings.md)、[GLOSSARY.md](./GLOSSARY.md)、`docs/adr/`。文档结构见 [docs/README.md](./docs/README.md)。版本变更记录:[CHANGELOG.md](https://github.com/bocchii-the-code/dsh-nerd-mode/blob/main/CHANGELOG.md)。
290
+
291
+ ## 贡献
292
+
293
+ 欢迎在 [GitHub](https://github.com/bocchii-the-code/dsh-nerd-mode/issues) 提 issue 和 pull request。提交前先跑 `npm run check`。如果要改教学提示词,先读 `docs/adr/`,那里记录了提示词行为的原因。
294
+
295
+ ## 卸载
296
+
297
+ ```powershell
298
+ dsh plugin --profile <profile> remove dsh-nerd-mode
299
+ ```
300
+
301
+ ## 许可
302
+
303
+ MIT。随包的第三方技能各自保留许可,见 [NOTICE.md](./NOTICE.md)。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-nerd-mode",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "A study switch and study skills for DeepSeek Harness.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -29,8 +29,6 @@ Write the SVG file first, then talk about it.
29
29
  3. Put one caption sentence after it that states the point the picture makes. Keep the prose around it short; the figure carries the detail.
30
30
  4. Embed the figure in the section whose step it illustrates, not in a gallery at the end.
31
31
 
32
- Inside a `/teach` workspace, write the file to that workspace's `assets/` and reference it from the lesson file instead, with the same relative form.
33
-
34
32
  The Markdown path is resolved against the working directory and served from disk, so it must be a file that exists when the message renders. Write the file before the sentence that shows it. No query string, no fragment, no `data:` URL: the renderer rejects all three and shows the alt text instead. To revise a figure, overwrite the file; if the learner still sees the old picture, write a new name.
35
33
 
36
34
  ## File contract
@@ -1,35 +0,0 @@
1
- # GLOSSARY.md Format
2
-
3
- `GLOSSARY.md` is the canonical language for this teaching workspace. All explainers, exercises, and learning records should adhere to its terminology. Building it is itself part of learning: compressing a concept into a tight definition is evidence the user understands it.
4
-
5
- ## Structure
6
-
7
- ```md
8
- # {Topic} Glossary
9
-
10
- {One or two sentence description of the topic this glossary covers.}
11
-
12
- ## Terms
13
-
14
- **Hypertrophy**:
15
- Muscle growth driven by mechanical tension and metabolic stress over repeated training sessions.
16
- _Avoid_: Bulking, getting big
17
-
18
- **Progressive overload**:
19
- Systematically increasing the demand on a muscle over time, via load, volume, or intensity.
20
- _Avoid_: Pushing harder, levelling up
21
-
22
- **RPE (Rate of Perceived Exertion)**:
23
- A 1–10 self-rating of how hard a set felt, where 10 is failure and 8 means two reps left in the tank.
24
- _Avoid_: Effort score, intensity rating
25
- ```
26
-
27
- ## Rules
28
-
29
- - **Add a term only when the user understands it.** The glossary is a record of compressed knowledge, not a dictionary the user reads to learn. If the user has just been introduced to a concept, wait until they can use it correctly before promoting it here.
30
- - **Be opinionated.** When several words exist for the same concept, pick the best one and list the rest as aliases to avoid. This is how language compresses.
31
- - **Keep definitions tight.** One or two sentences. Define what the term IS, not what it does or how to do it.
32
- - **Use the glossary's own terms inside definitions.** Once a term is in the glossary, prefer it everywhere, including inside other definitions. This is what makes complex terms easier to grasp later.
33
- - **Group under subheadings** when natural clusters emerge (e.g. `## Anatomy`, `## Programming`). A flat list is fine when terms cohere.
34
- - **Flag ambiguities explicitly.** If a term is used loosely in the wider field, note the resolution: "In this workspace, 'set' always means a working set; warm-ups are tracked separately."
35
- - **Revise as understanding deepens.** A definition the user wrote in week one may be wrong by week six. Update in place; do not leave stale entries.