dsh-aha-tutor 1.13.0 → 1.14.0
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/CHANGELOG.md +18 -0
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/docs/guide.zh-CN.md +20 -3
- package/lib/agent.js +1 -1
- package/lib/client.js +43 -30
- package/lib/index.js +298 -85
- package/lib/{runtime-DNazpszU.js → runtime-Dc_2dmoB.js} +69 -18
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this plugin are recorded here. Versions follow [SemVer](https://semver.org/); GitHub Release notes for each version live in `docs/releases/`.
|
|
4
4
|
|
|
5
|
+
## 1.14.0 - 2026-11-06
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **Delete a course that is not finished**: a course still at its questions or its blueprint opened only its creation pages, which had no delete, so the only way to get rid of one was to finish it first. Its card in **My courses** now has a **⋯** menu with **Delete course**, and so do its question and blueprint pages. Deleting a course stops whatever it is still writing first (its questions, its blueprint, its practice), and what that work would still write is removed too, so a deleted course never comes back.
|
|
10
|
+
- **Library folders**: materials of one kind can be kept in a folder: **Library** shows a row of chips (**All**, **Unfiled** and each folder, with how many it holds), where a folder is made, opened, renamed or deleted (its materials stay, unfiled). Each material has **Move to folder**, filtering and full-text search keep to the open folder, files and links added there go into it, and **Course from this folder** builds a course from it (at most 30 materials, by name, after saying so when it holds more). Every material picker has the same chips and **Pick this whole folder**, as much of it as there is room for, saying how many were left out.
|
|
11
|
+
- **Upload a whole folder**: **Upload a whole folder**, or a folder dropped on the upload box, uploads a folder of the computer, its subfolders included, into a library folder of the same name (the one there is, when there is one). First it says how many files it will upload and what that costs in model calls; files already in that folder (same name and size) and files it cannot read are skipped and listed, the computer's own leftovers (.DS_Store, ~$ lock files, hidden folders) are passed over. A file from a subfolder shows its path under its title, such as 「第一章/练习.pdf」, and a folder lists its materials by file name, as the computer does. The upload shows which file of how many, can be cancelled, and reports what was uploaded, skipped and refused. A folder of more than 1,000 files is not read.
|
|
12
|
+
- **Up to 30 materials, counted**: a new course, the study tools and instant help took at most 8 materials and a course at most 12, and the picker said nothing: a ninth box simply would not tick, and of several files uploaded in it only the first 8 were picked. Every picker now takes up to 30, shows how many are picked, greys out the rest once full and says why, and says when files uploaded in it were saved to the library but not picked. **Add materials** shows how many more the course can take and refuses more than that instead of dropping the rest.
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- **Room for many materials**: course design keeps each material's contents and brief as before up to 15 materials (10 for the brief); with more, their contents and briefs share a fixed room, so 30 materials keep their chapters with pages without making the prompt three times as long. When there are too many materials for each to get a useful share of a lesson's passages, the passages that match best are taken from all of them, instead of the first materials' only. Thirty short materials in a deck or quiz are read a few to a part (each passage under its own title) instead of one model call each, and a study aid made from more than four is named by the first two and how many.
|
|
17
|
+
- **A start that fails or is cancelled leaves no course**: a course was saved before its questions were written, so a start that failed, was cancelled or was cut off by quitting DSH left a course at its questions in **My courses** and on Home. A start that fails or is cancelled now leaves nothing, one cut off by quitting DSH is removed 15 minutes after it began, and the page that waits for the questions has **Cancel**.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **Excerpts of one-chunk materials**: excerpting a material made of a single chunk longer than its share (the text of a photo, a one-page handout) threw. With six or more such materials, adding them to a course at once failed, and so did a lesson or question whose words matched nothing in any of them.
|
|
22
|
+
|
|
5
23
|
## 1.13.0 - 2026-11-05
|
|
6
24
|
|
|
7
25
|
### Added
|
package/README.en.md
CHANGED
|
@@ -42,7 +42,7 @@ Two sample courses ship with the plugin (harmonic motion and Bayesian thinking,
|
|
|
42
42
|
|
|
43
43
|
You need the **DeepSeek Harness** desktop app (0.2.x, from 0.2.1) with at least one working model. See the [DSH instructions](https://github.com/deepseek-ai/deepseek-harness#run) if you do not have it yet.
|
|
44
44
|
|
|
45
|
-
1. Open **Plugins** in the desktop app, click **Add plugin** and enter `dsh-aha-tutor` as the package, with the official registry as the source. Within 24 hours of a new release DSH's pnpm holds new versions back; enter an exact version such as `dsh-aha-tutor@1.
|
|
45
|
+
1. Open **Plugins** in the desktop app, click **Add plugin** and enter `dsh-aha-tutor` as the package, with the official registry as the source. Within 24 hours of a new release DSH's pnpm holds new versions back; enter an exact version such as `dsh-aha-tutor@1.14.0` then.
|
|
46
46
|
2. **Quit and reopen** the desktop app. Refreshing the page does not load the plugin's host side.
|
|
47
47
|
3. Open **Aha · AI tutor** in the left sidebar (shown as 「开窍 · AI 私人老师」 in Chinese).
|
|
48
48
|
|
package/README.md
CHANGED
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
dsh-aha-tutor
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
安装源选择**官方源**,点击**安装**。新版本刚发布的 24 小时内,DSH 的 pnpm 会因为发布冷却期暂缓安装,这时请填入精确版本,例如 `dsh-aha-tutor@1.
|
|
51
|
+
安装源选择**官方源**,点击**安装**。新版本刚发布的 24 小时内,DSH 的 pnpm 会因为发布冷却期暂缓安装,这时请填入精确版本,例如 `dsh-aha-tutor@1.14.0`。
|
|
52
52
|
|
|
53
53
|
2. **完全退出并重新打开** DSH 桌面应用。只刷新页面不会加载 Host 端的新插件。
|
|
54
54
|
|
package/docs/guide.zh-CN.md
CHANGED
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
| **消化长文档** | 把一篇长文或论文整理成结构、核心观点、论点和术语表;长文档会分段读完全文再汇总 |
|
|
40
40
|
| **两分钟短片** | 生成一段约两分钟、适合分享的白板讲解 |
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
点**添加资料**可以附上文件,它们会进入资料库,并作为这次请求的依据。一次最多选 30 份,选择框底部显示已经选了几份;选满后其余资料会变灰,在选择框里多传的文件只存进资料库、不会选上。首页还会显示**继续学习**和**今天的安排**。
|
|
43
43
|
|
|
44
44
|
## 定制一门课
|
|
45
45
|
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
|
|
55
55
|
开课以后也能改:在课程页右上角的 **⋯** 里选**编辑课程大纲**,可以加讲、加单元、调整顺序,或点**让老师续写一个单元**。保留下来的讲,学习进度不变。
|
|
56
56
|
|
|
57
|
-
**补充资料**:后来找到了更好的教材或讲义,在 **⋯** 里选**补充资料**(编辑大纲时也有这个按钮),从资料库里勾选或当场上传,还可以写一句想怎么用,比如「重点补上第 5 章的例题」,再点**请老师看看怎么加**。老师会读这些资料,给出修改建议:新增哪些讲、哪些讲要讲深;点**应用修改**后才生效,资料也会关联到这门课,以后讲课时会引用它们,新增的讲和讲到新资料的讲也会对应到资料里的页。一门课最多关联
|
|
57
|
+
**补充资料**:后来找到了更好的教材或讲义,在 **⋯** 里选**补充资料**(编辑大纲时也有这个按钮),从资料库里勾选或当场上传,还可以写一句想怎么用,比如「重点补上第 5 章的例题」,再点**请老师看看怎么加**。老师会读这些资料,给出修改建议:新增哪些讲、哪些讲要讲深;点**应用修改**后才生效,资料也会关联到这门课,以后讲课时会引用它们,新增的讲和讲到新资料的讲也会对应到资料里的页。一门课最多关联 30 份资料,面板上会显示这门课还能再加几份。
|
|
58
58
|
|
|
59
59
|
每一讲的板书在你打开它时才生成,同时会预备下一讲,所以不会一次性消耗大量额度。
|
|
60
60
|
|
|
@@ -145,6 +145,8 @@
|
|
|
145
145
|
|
|
146
146
|
标题旁边是学习进度和剩余时间;下面的**下一步**给出一个建议:有可以再练的错题或到期的复习就先复习,其次专门练一练最薄弱的那个知识点,再往下是下一讲。右上角的 **⋯** 菜单可以**编辑课程大纲**、**导出课程包**、**归档**和**删除课程**。大纲里每一讲的掌握度条在学过之前是空的。所有课程都在左侧的**我的课程**里,可以按学习中、已学完、已归档筛选和搜索。
|
|
147
147
|
|
|
148
|
+
**没建完的课程**(「待回答问题」「待确认蓝图」)可以在**我的课程**里点卡片右上角的 **⋯** → **删除课程**,也可以在问卷页或蓝图页右上角的 **⋯** 里删除;正在生成问卷或蓝图时删除,会先停掉生成。刚开始建课、问题还没出来就出错或点了**取消**,不会留下草稿。
|
|
149
|
+
|
|
148
150
|
## 练习、闪卡与复习
|
|
149
151
|
|
|
150
152
|
- **练习**:单选、多选、填空、数值计算和排序题会立即判分;简答题由老师按要点批改,告诉你答到了哪些、漏了哪些。做完可以**看解析**。需要图的题会附一张示意图,或一张按公式算出的函数图。
|
|
@@ -196,7 +198,22 @@
|
|
|
196
198
|
|
|
197
199
|
闪卡和测验会读完整份资料:长资料按约 2 万字一段来读,每段各出一批再合在一起,等待时显示读完了几段、已经写好多少,可以取消。闪卡每个知识点 2–4 张,一份资料最多 300 张,同一个问题只留一张;复习时每轮最多 40 张,页面上显示一共多少张。测验按资料长短出 5–30 题,短讲义大约 5–10 题,长资料的题目平均分到各段。个别段没读成时,闪卡和测验页面上会写明是哪一部分(页码或章节)。
|
|
198
200
|
|
|
199
|
-
|
|
201
|
+
**找资料**:资料多了,在资料列表上方的搜索框里输入,会按标题和主题即时筛选;按回车(或点**搜正文**)会在所有资料的正文里搜,列出最相关的段落,带资料名、页码和高亮的上下文,点一条就跳到那份资料。打开了某个文件夹时,筛选和搜正文都只在这个文件夹里。搜索在本机进行,不调用模型。
|
|
202
|
+
|
|
203
|
+
**文件夹**:同一类资料可以放进一个文件夹。资料库上方有一排标签:**全部**、**未分类**和各个文件夹,后面的数字是资料份数,点一个就只看里面的资料。
|
|
204
|
+
- 点 **+ 新建文件夹** 起个名字;文件夹名不能重复。
|
|
205
|
+
- 每份资料右上角的下拉框可以把它**移到文件夹**,或者移回**未分类**。一份资料只在一个文件夹里。
|
|
206
|
+
- 打开一个文件夹后,右边的 **⋯** 可以**重命名**或**删除文件夹**。删除文件夹时里面的资料不会删除,会回到**未分类**。
|
|
207
|
+
- **用这个文件夹建课**:用整个文件夹里的资料建一门课,按名称排序,最多 30 份;超过 30 份时会先提醒,只用前 30 份。
|
|
208
|
+
- 打开某个文件夹时上传的文件和添加的网页,都会放进这个文件夹。
|
|
209
|
+
|
|
210
|
+
**上传整个文件夹**:点上传框里的**上传整个文件夹**,或者直接把电脑上的文件夹拖进上传框。
|
|
211
|
+
- 资料库里会自动建一个同名文件夹(已经有同名文件夹就放进去),子文件夹里的文件也会上传,资料名下面会写着它在哪个子文件夹,比如「第一章/练习.pdf」。文件夹里的资料按文件名排序,和电脑上的顺序一样。
|
|
212
|
+
- 开始之前会先列出要上传几个文件:已经在这个文件夹里的文件(文件名和大小都相同)会跳过,不支持的文件(视频、压缩包、旧版 .doc/.ppt 等)也会跳过并列出名字,系统自带的隐藏文件不会上传。确认后才开始上传。
|
|
213
|
+
- 上传时显示第几个、一共几个,可以随时取消。传完会列出上传了多少、跳过了哪些、哪些没传成。
|
|
214
|
+
- 每份资料都会用模型写一份简介,扫描件和图片里的文字还要逐页识别,文件多时会用掉不少模型额度。一个文件夹里超过 1000 个文件时不会读取,请分几次上传。
|
|
215
|
+
|
|
216
|
+
在**添加资料**的选择框里(建课、补充资料、学习工具、即时答疑)也有同样的文件夹标签。选中一个文件夹后点**全选这个文件夹**,就能一次选上里面的资料(最多 30 份,超出时会说明有几份没选上);全部选上后,这个按钮会变成**取消全选这个文件夹**。在选择框里上传的文件,会放进当前选中的文件夹。
|
|
200
217
|
|
|
201
218
|
## 学习工具、即时答疑与讲解短片
|
|
202
219
|
|
package/lib/agent.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { $ as readProfile, M as quizPrompt, Vt as normalizePractice, Yt as text, a as generateJson, dn as orderOptions, g as detectLanguage, t as getRuntime, un as newId } from "./runtime-Dc_2dmoB.js";
|
|
2
2
|
import { defineTool } from "@deepseek-ai/dsh-tools";
|
|
3
3
|
//#region src/agent.js
|
|
4
4
|
const name = "aha-tutor-agent";
|